Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 9563 → Rev 9564

/contrib/sdk/sources/libvorbis-1.3.7/AUTHORS
0,0 → 1,3
Monty <monty@xiph.org>
 
and the rest of the Xiph.org Foundation.
/contrib/sdk/sources/libvorbis-1.3.7/COPYING
0,0 → 1,28
Copyright (c) 2002-2020 Xiph.org Foundation
 
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
 
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
 
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
 
- Neither the name of the Xiph.org Foundation nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
 
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/contrib/sdk/sources/libvorbis-1.3.7/Makefile
0,0 → 1,49
CC = kos32-gcc
AR = kos32-ar
LD = kos32-ld
STRIP = kos32-strip
 
LIBNAME=libvorbis
 
SDK_DIR:= $(abspath ../../)
 
OBJS = lib/block.o \
lib/sharedbook.o \
lib/vorbisenc.o \
lib/info.o \
lib/registry.o \
lib/psy.o \
lib/window.o \
lib/lpc.o \
lib/tone.o \
lib/smallft.o \
lib/barkmel.o \
lib/mdct.o \
lib/bitrate.o \
lib/analysis.o \
lib/vorbisfile.o \
lib/res0.o \
lib/lookup.o \
lib/lsp.o \
lib/floor1.o \
lib/floor0.o \
lib/codebook.o \
lib/envelope.o \
lib/mapping0.o \
lib/synthesis.o
 
 
CFLAGS = -c -O2 -fno-pie -mpreferred-stack-boundary=2 -fno-ident -fomit-frame-pointer -fno-stack-check -fno-stack-protector -mno-stack-arg-probe -fno-exceptions -fno-asynchronous-unwind-tables -ffast-math -mno-ms-bitfields -march=pentium-mmx -UWIN32 -U_Win32 -U_WIN32 -U__MINGW32__ -DHAVE_CONFIG
 
CFLAGS += -I../newlib/libc/include -Iinclude -I../libogg-1.3.5/include -Ilib
 
all: $(LIBNAME).a
 
$(LIBNAME).a: $(OBJS)
$(AR) -crs $(SDK_DIR)/lib/$(LIBNAME).a $(OBJS)
 
%.o : %.c Makefile
$(CC) $(CFLAGS) -o $@ $<
 
clean:
rm -f */*.o \ rm *.o \ rm */*/*.o
/contrib/sdk/sources/libvorbis-1.3.7/config.h
0,0 → 1,93
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
 
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
systems. This function is required for `alloca.c' support on those systems.
*/
/* #undef CRAY_STACKSEG_END */
 
/* Define to 1 if using `alloca.c'. */
/* #undef C_ALLOCA */
 
/* Define to 1 if you have `alloca', as a function or macro. */
#define HAVE_ALLOCA 0
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
*/
#define HAVE_ALLOCA_H 0
 
/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 0
 
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
 
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
 
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
 
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
 
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
 
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
 
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
 
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
 
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
 
/* Define to the sub-directory where libtool stores uninstalled libraries. */
//#define LT_OBJDIR ".libs/"
 
/* Name of package */
#define PACKAGE "libvorbis"
 
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "vorbis-dev@xiph.org"
 
/* Define to the full name of this package. */
#define PACKAGE_NAME "libvorbis"
 
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "libvorbis 1.3.7"
 
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "libvorbis"
 
/* Define to the home page for this package. */
#define PACKAGE_URL ""
 
/* Define to the version of this package. */
#define PACKAGE_VERSION "1.3.7"
 
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at runtime.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */
/* #undef STACK_DIRECTION */
 
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
 
/* Version number of package */
#define VERSION "1.3.7"
 
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
/* #undef inline */
#endif
 
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */
/contrib/sdk/sources/libvorbis-1.3.7/config.h.in
0,0 → 1,93
/* config.h.in. Generated from configure.ac by autoheader. */
 
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
systems. This function is required for `alloca.c' support on those systems.
*/
#undef CRAY_STACKSEG_END
 
/* Define to 1 if using `alloca.c'. */
#undef C_ALLOCA
 
/* Define to 1 if you have `alloca', as a function or macro. */
#undef HAVE_ALLOCA
 
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
*/
#undef HAVE_ALLOCA_H
 
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
 
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
 
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
 
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
 
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
 
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
 
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
 
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
 
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
 
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
 
/* Define to the sub-directory where libtool stores uninstalled libraries. */
#undef LT_OBJDIR
 
/* Name of package */
#undef PACKAGE
 
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
 
/* Define to the full name of this package. */
#undef PACKAGE_NAME
 
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
 
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
 
/* Define to the home page for this package. */
#undef PACKAGE_URL
 
/* Define to the version of this package. */
#undef PACKAGE_VERSION
 
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at runtime.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */
#undef STACK_DIRECTION
 
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
 
/* Version number of package */
#undef VERSION
 
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
#undef inline
#endif
 
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t
/contrib/sdk/sources/libvorbis-1.3.7/examples/.deps/chaining_example.Po
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/examples/.deps/decoder_example.Po
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/examples/.deps/encoder_example.Po
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/examples/.deps/seeking_example.Po
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/examples/.deps/vorbisfile_example.Po
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/examples/chaining_example.c
0,0 → 1,71
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: illustrate simple use of chained bitstream and vorbisfile.a
 
********************************************************************/
 
#include <stdlib.h>
#include <vorbis/codec.h>
#include <vorbis/vorbisfile.h>
 
#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */
#include <io.h>
#include <fcntl.h>
#endif
 
int main(){
OggVorbis_File ov;
int i;
 
#ifdef _WIN32 /* We need to set stdin 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 );
#endif
 
/* open the file/pipe on stdin */
if(ov_open_callbacks(stdin,&ov,NULL,-1,OV_CALLBACKS_NOCLOSE)<0){
printf("Could not open input as an OggVorbis file.\n\n");
exit(1);
}
 
/* print details about each logical bitstream in the input */
if(ov_seekable(&ov)){
printf("Input bitstream contained %ld logical bitstream section(s).\n",
ov_streams(&ov));
printf("Total bitstream samples: %ld\n\n",
(long)ov_pcm_total(&ov,-1));
printf("Total bitstream playing time: %ld seconds\n\n",
(long)ov_time_total(&ov,-1));
 
}else{
printf("Standard input was not seekable.\n"
"First logical bitstream information:\n\n");
}
 
for(i=0;i<ov_streams(&ov);i++){
vorbis_info *vi=ov_info(&ov,i);
printf("\tlogical bitstream section %d information:\n",i+1);
printf("\t\t%ldHz %d channels bitrate %ldkbps serial number=%ld\n",
vi->rate,vi->channels,ov_bitrate(&ov,i)/1000,
ov_serialnumber(&ov,i));
printf("\t\theader length: %ld bytes\n",(long)
(ov.dataoffsets[i]-ov.offsets[i]));
printf("\t\tcompressed length: %ld bytes\n",(long)(ov_raw_total(&ov,i)));
printf("\t\tplay time: %lds\n",(long)ov_time_total(&ov,i));
}
 
ov_clear(&ov);
return 0;
}
 
/contrib/sdk/sources/libvorbis-1.3.7/examples/decoder_example.c
0,0 → 1,313
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: simple example decoder
 
********************************************************************/
 
/* Takes a vorbis bitstream from stdin and writes raw stereo PCM to
stdout. Decodes simple and chained OggVorbis files from beginning
to end. Vorbisfile.a is somewhat more complex than the code below. */
 
/* Note that this is POSIX, not ANSI code */
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <vorbis/codec.h>
 
#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */
#include <io.h>
#include <fcntl.h>
#endif
 
#if defined(__MACOS__) && defined(__MWERKS__)
#include <console.h> /* CodeWarrior's Mac "command-line" support */
#endif
 
ogg_int16_t convbuffer[4096]; /* take 8k out of the data segment, not the stack */
int convsize=4096;
 
extern void _VDBG_dump(void);
 
int main(){
ogg_sync_state oy; /* sync and verify incoming physical bitstream */
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 bitstream user comments */
vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
vorbis_block vb; /* local working space for packet->PCM decode */
 
char *buffer;
int bytes;
 
#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
 
#if defined(macintosh) && defined(__MWERKS__)
{
int argc;
char **argv;
argc=ccommand(&argv); /* get a "command line" from the Mac user */
/* this also lets the user set stdin and stdout */
}
#endif
 
/********** Decode setup ************/
 
ogg_sync_init(&oy); /* Now we can read pages */
 
while(1){ /* we repeat if the bitstream is chained */
int eos=0;
int i;
 
/* grab some data at the head of the stream. We want the first page
(which is guaranteed to be small and only contain the Vorbis
stream initial header) We need the first page to get the stream
serialno. */
 
/* submit a 4k block to libvorbis' Ogg layer */
buffer=ogg_sync_buffer(&oy,4096);
bytes=fread(buffer,1,4096,stdin);
ogg_sync_wrote(&oy,bytes);
 
/* Get the first page. */
if(ogg_sync_pageout(&oy,&og)!=1){
/* have we simply run out of data? If so, we're done. */
if(bytes<4096)break;
 
/* error case. Must not be Vorbis data */
fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n");
exit(1);
}
 
/* Get the serial number and set up the rest of decode. */
/* serialno first; use it to set up a logical stream */
ogg_stream_init(&os,ogg_page_serialno(&og));
 
/* extract the initial header from the first page and verify that the
Ogg bitstream is in fact Vorbis data */
 
/* I handle the initial header first instead of just having the code
read all three Vorbis headers at once because reading the initial
header is an easy way to identify a Vorbis bitstream and it's
useful to see that functionality seperated out. */
 
vorbis_info_init(&vi);
vorbis_comment_init(&vc);
if(ogg_stream_pagein(&os,&og)<0){
/* error; stream version mismatch perhaps */
fprintf(stderr,"Error reading first page of Ogg bitstream data.\n");
exit(1);
}
 
if(ogg_stream_packetout(&os,&op)!=1){
/* no page? must not be vorbis */
fprintf(stderr,"Error reading initial header packet.\n");
exit(1);
}
 
if(vorbis_synthesis_headerin(&vi,&vc,&op)<0){
/* error case; not a vorbis header */
fprintf(stderr,"This Ogg bitstream does not contain Vorbis "
"audio data.\n");
exit(1);
}
 
/* At this point, we're sure we're Vorbis. We've set up the logical
(Ogg) bitstream decoder. Get the comment and codebook headers and
set up the Vorbis decoder */
 
/* The next two packets in order are the comment and codebook headers.
They're likely large and may span multiple pages. Thus we read
and submit data until we get our two packets, watching that no
pages are missing. If a page is missing, error out; losing a
header page is the only place where missing data is fatal. */
 
i=0;
while(i<2){
while(i<2){
int result=ogg_sync_pageout(&oy,&og);
if(result==0)break; /* Need more data */
/* Don't complain about missing or corrupt data yet. We'll
catch it at the packet output phase */
if(result==1){
ogg_stream_pagein(&os,&og); /* we can ignore any errors here
as they'll also become apparent
at packetout */
while(i<2){
result=ogg_stream_packetout(&os,&op);
if(result==0)break;
if(result<0){
/* Uh oh; data at some point was corrupted or missing!
We can't tolerate that in a header. Die. */
fprintf(stderr,"Corrupt secondary header. Exiting.\n");
exit(1);
}
result=vorbis_synthesis_headerin(&vi,&vc,&op);
if(result<0){
fprintf(stderr,"Corrupt secondary header. Exiting.\n");
exit(1);
}
i++;
}
}
}
/* no harm in not checking before adding more */
buffer=ogg_sync_buffer(&oy,4096);
bytes=fread(buffer,1,4096,stdin);
if(bytes==0 && i<2){
fprintf(stderr,"End of file before finding all Vorbis headers!\n");
exit(1);
}
ogg_sync_wrote(&oy,bytes);
}
 
/* Throw the comments plus a few lines about the bitstream we're
decoding */
{
char **ptr=vc.user_comments;
while(*ptr){
fprintf(stderr,"%s\n",*ptr);
++ptr;
}
fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi.channels,vi.rate);
fprintf(stderr,"Encoded by: %s\n\n",vc.vendor);
}
 
convsize=4096/vi.channels;
 
/* OK, got and parsed all three headers. Initialize the Vorbis
packet->PCM decoder. */
if(vorbis_synthesis_init(&vd,&vi)==0){ /* central decode state */
vorbis_block_init(&vd,&vb); /* local state for most of the decode
so multiple block decodes can
proceed in parallel. We could init
multiple vorbis_block structures
for vd here */
 
/* The rest is just a straight decode loop until end of stream */
while(!eos){
while(!eos){
int result=ogg_sync_pageout(&oy,&og);
if(result==0)break; /* need more data */
if(result<0){ /* missing or corrupt data at this page position */
fprintf(stderr,"Corrupt or missing data in bitstream; "
"continuing...\n");
}else{
ogg_stream_pagein(&os,&og); /* can safely ignore errors at
this point */
while(1){
result=ogg_stream_packetout(&os,&op);
 
if(result==0)break; /* need more data */
if(result<0){ /* missing or corrupt data at this page position */
/* no reason to complain; already complained above */
}else{
/* we have a packet. Decode it */
float **pcm;
int samples;
 
if(vorbis_synthesis(&vb,&op)==0) /* test for success! */
vorbis_synthesis_blockin(&vd,&vb);
/*
 
**pcm is a multichannel float vector. In stereo, for
example, pcm[0] is left, and pcm[1] is right. samples is
the size of each channel. Convert the float values
(-1.<=range<=1.) to whatever PCM format and write it out */
 
while((samples=vorbis_synthesis_pcmout(&vd,&pcm))>0){
int j;
int clipflag=0;
int bout=(samples<convsize?samples:convsize);
 
/* convert floats to 16 bit signed ints (host order) and
interleave */
for(i=0;i<vi.channels;i++){
ogg_int16_t *ptr=convbuffer+i;
float *mono=pcm[i];
for(j=0;j<bout;j++){
#if 1
int val=floor(mono[j]*32767.f+.5f);
#else /* optional dither */
int val=mono[j]*32767.f+drand48()-0.5f;
#endif
/* might as well guard against clipping */
if(val>32767){
val=32767;
clipflag=1;
}
if(val<-32768){
val=-32768;
clipflag=1;
}
*ptr=val;
ptr+=vi.channels;
}
}
 
if(clipflag)
fprintf(stderr,"Clipping in frame %ld\n",(long)(vd.sequence));
 
 
fwrite(convbuffer,2*vi.channels,bout,stdout);
 
vorbis_synthesis_read(&vd,bout); /* tell libvorbis how
many samples we
actually consumed */
}
}
}
if(ogg_page_eos(&og))eos=1;
}
}
if(!eos){
buffer=ogg_sync_buffer(&oy,4096);
bytes=fread(buffer,1,4096,stdin);
ogg_sync_wrote(&oy,bytes);
if(bytes==0)eos=1;
}
}
 
/* ogg_page and ogg_packet structs always point to storage in
libvorbis. They're never freed or manipulated directly */
 
vorbis_block_clear(&vb);
vorbis_dsp_clear(&vd);
}else{
fprintf(stderr,"Error: Corrupt header during playback initialization.\n");
}
 
/* clean up this logical bitstream; before exit we see if we're
followed by another [chained] */
 
ogg_stream_clear(&os);
vorbis_comment_clear(&vc);
vorbis_info_clear(&vi); /* must be called last */
}
 
/* OK, clean up the framer */
ogg_sync_clear(&oy);
 
fprintf(stderr,"Done.\n");
return(0);
}
/contrib/sdk/sources/libvorbis-1.3.7/examples/encoder_example.c
0,0 → 1,251
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: simple example encoder
 
********************************************************************/
 
/* 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 <string.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(__MACOS__) && 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,ret;
int i, founddata;
 
#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 (simplest WAV
header is 44 bytes) and assume that the data is 44.1khz, stereo, 16 bit
little endian pcm samples. This is just an example, after all. */
 
#ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */
/* if we were reading/writing a file, it would also need to in
binary mode, eg, fopen("file.wav","wb"); */
/* 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
 
 
/* we cheat on the WAV header; we just bypass the header and never
verify that it matches 16bit/stereo/44.1kHz. This is just an
example, after all. */
 
readbuffer[0] = '\0';
for (i=0, founddata=0; i<30 && ! feof(stdin) && ! ferror(stdin); i++)
{
fread(readbuffer,1,2,stdin);
 
if ( ! strncmp((char*)readbuffer, "da", 2) ){
founddata = 1;
fread(readbuffer,1,6,stdin);
break;
}
}
 
/********** Encode setup ************/
 
vorbis_info_init(&vi);
 
/* choose an encoding mode. A few possibilities commented out, one
actually used: */
 
/*********************************************************************
Encoding using a VBR quality mode. The usable range is -.1
(lowest quality, smallest file) to 1. (highest quality, largest file).
Example quality mode .4: 44kHz stereo coupled, roughly 128kbps VBR
 
ret = vorbis_encode_init_vbr(&vi,2,44100,.4);
 
---------------------------------------------------------------------
 
Encoding using an average bitrate mode (ABR).
example: 44kHz stereo coupled, average 128kbps VBR
 
ret = vorbis_encode_init(&vi,2,44100,-1,128000,-1);
 
---------------------------------------------------------------------
 
Encode using a quality mode, but select that quality mode by asking for
an approximate bitrate. This is not ABR, it is true VBR, but selected
using the bitrate interface, and then turning bitrate management off:
 
ret = ( vorbis_encode_setup_managed(&vi,2,44100,-1,128000,-1) ||
vorbis_encode_ctl(&vi,OV_ECTL_RATEMANAGE2_SET,NULL) ||
vorbis_encode_setup_init(&vi));
 
*********************************************************************/
 
ret=vorbis_encode_init_vbr(&vi,2,44100,0.1);
 
/* do not continue if setup failed; this can happen if we ask for a
mode that libVorbis does not support (eg, too low a bitrate, etc,
will return 'OV_EIMPL') */
 
if(ret)exit(1);
 
/* add a comment */
vorbis_comment_init(&vc);
vorbis_comment_add_tag(&vc,"ENCODER","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);
 
/* This ensures the actual
* audio data will start on a new page, as per spec
*/
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.f;
buffer[1][i]=((readbuffer[i*4+3]<<8)|
(0x00ff&(int)readbuffer[i*4+2]))/32768.f;
}
 
/* 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, assume we want to use bitrate management */
vorbis_analysis(&vb,NULL);
vorbis_bitrate_addblock(&vb);
 
while(vorbis_bitrate_flushpacket(&vd,&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_comment_clear(&vc);
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);
}
/contrib/sdk/sources/libvorbis-1.3.7/examples/seeking_example.c
0,0 → 1,277
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: illustrate seeking, and test it too
 
********************************************************************/
 
#include <stdlib.h>
#include <stdio.h>
#include "vorbis/codec.h"
#include "vorbis/vorbisfile.h"
 
#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */
# include <io.h>
# include <fcntl.h>
#endif
 
void _verify(OggVorbis_File *ov,
ogg_int64_t val,ogg_int64_t pcmval,double timeval,
ogg_int64_t pcmlength,
char *bigassbuffer){
off_t i;
int j;
long bread;
char buffer[4096];
int dummy;
ogg_int64_t pos;
int hs = ov_halfrate_p(ov);
 
/* verify the raw position, the pcm position and position decode */
if(val!=-1 && ov_raw_tell(ov)<val){
fprintf(stderr,"raw position out of tolerance: requested %ld, got %ld\n",
(long)val,(long)ov_raw_tell(ov));
exit(1);
}
if(pcmval!=-1 && ov_pcm_tell(ov)>pcmval){
fprintf(stderr,"pcm position out of tolerance: requested %ld, got %ld\n",
(long)pcmval,(long)ov_pcm_tell(ov));
exit(1);
}
if(timeval!=-1 && ov_time_tell(ov)>timeval){
fprintf(stderr,"time position out of tolerance: requested %f, got %f\n",
timeval,ov_time_tell(ov));
exit(1);
}
pos=ov_pcm_tell(ov);
if(pos<0 || pos>pcmlength){
fprintf(stderr,"pcm position out of bounds: got %ld\n",(long)pos);
exit(1);
}
bread=ov_read(ov,buffer,4096,1,1,1,&dummy);
for(j=0;j<bread;j++){
if(buffer[j]!=bigassbuffer[j+((pos>>hs)*2)]){
fprintf(stderr,"data after seek doesn't match declared pcm position %ld\n",(long)pos);
 
for(i=0;i<(pcmlength>>hs)*2-bread;i++){
for(j=0;j<bread;j++)
if(buffer[j] != bigassbuffer[i+j])break;
if(j==bread){
fprintf(stderr,"data after seek appears to match position %ld\n",(long)((i/2)<<hs));
}
}
{
FILE *f=fopen("a.m","w");
for(j=0;j<bread;j++)fprintf(f,"%d %d\n",j,(int)buffer[j]);
fclose(f);
f=fopen("b.m","w");
for(j=-4096;j<bread+4096;j++)
if(j+((pos*2)>>hs)>=0 && (j+((pos*2)>>hs))<(pcmlength>>hs)*2)
fprintf(f,"%d %d\n",j,(int)bigassbuffer[j+((pos*2)>>hs)]);
fclose(f);
}
 
exit(1);
}
}
}
 
int main(){
OggVorbis_File ov;
int i,ret;
ogg_int64_t pcmlength;
double timelength;
char *bigassbuffer;
int dummy;
int hs=0;
 
#ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */
_setmode( _fileno( stdin ), _O_BINARY );
#endif
 
 
/* open the file/pipe on stdin */
if(ov_open_callbacks(stdin,&ov,NULL,-1,OV_CALLBACKS_NOCLOSE)<0){
fprintf(stderr,"Could not open input as an OggVorbis file.\n\n");
exit(1);
}
 
#if 0 /*enable this code to test seeking with halfrate decode */
if(ov_halfrate(&ov,1)){
fprintf(stderr,"Sorry; unable to set half-rate decode.\n\n");
exit(1);
}else
hs=1;
#endif
 
if(ov_seekable(&ov)){
 
/* to simplify our own lives, we want to assume the whole file is
stereo. Verify this to avoid potentially mystifying users
(pissing them off is OK, just don't confuse them) */
for(i=0;i<ov.links;i++){
vorbis_info *vi=ov_info(&ov,i);
if(vi->channels!=2){
fprintf(stderr,"Sorry; right now seeking_test can only use Vorbis files\n"
"that are entirely stereo.\n\n");
exit(1);
}
}
 
/* because we want to do sample-level verification that the seek
does what it claimed, decode the entire file into memory */
pcmlength=ov_pcm_total(&ov,-1);
timelength=ov_time_total(&ov,-1);
bigassbuffer=malloc((pcmlength>>hs)*2); /* w00t */
i=0;
while(i<(pcmlength>>hs)*2){
int ret=ov_read(&ov,bigassbuffer+i,((pcmlength>>hs)*2)-i,1,1,1,&dummy);
if(ret<0){
fprintf(stderr,"Error reading file.\n");
exit(1);
}
if(ret){
i+=ret;
}else{
pcmlength=(i/2)<<hs;
}
fprintf(stderr,"\rloading.... [%ld left] ",
(long)((pcmlength>>hs)*2-i));
}
 
{
ogg_int64_t length=ov.end;
fprintf(stderr,"\rtesting raw seeking to random places in %ld bytes....\n",
(long)length);
 
for(i=0;i<1000;i++){
ogg_int64_t val=(double)rand()/RAND_MAX*length;
fprintf(stderr,"\r\t%d [raw position %ld]... ",i,(long)val);
ret=ov_raw_seek(&ov,val);
if(ret<0){
fprintf(stderr,"seek failed: %d\n",ret);
exit(1);
}
 
_verify(&ov,val,-1,-1.,pcmlength,bigassbuffer);
 
}
}
 
fprintf(stderr,"\r");
{
fprintf(stderr,"testing pcm page seeking to random places in %ld samples....\n",
(long)pcmlength);
 
for(i=0;i<1000;i++){
ogg_int64_t val= i==0?(ogg_int64_t)0:(double)rand()/RAND_MAX*pcmlength;
fprintf(stderr,"\r\t%d [pcm position %ld]... ",i,(long)val);
ret=ov_pcm_seek_page(&ov,val);
if(ret<0){
fprintf(stderr,"seek failed: %d\n",ret);
exit(1);
}
 
_verify(&ov,-1,val,-1.,pcmlength,bigassbuffer);
 
}
}
 
fprintf(stderr,"\r");
{
fprintf(stderr,"testing pcm exact seeking to random places in %f seconds....\n",
timelength);
for(i=0;i<1000;i++){
ogg_int64_t val= i==0?(ogg_int64_t)0:(double)rand()/RAND_MAX*pcmlength;
fprintf(stderr,"\r\t%d [pcm position %ld]... ",i,(long)val);
ret=ov_pcm_seek(&ov,val);
if(ret<0){
fprintf(stderr,"seek failed: %d\n",ret);
exit(1);
}
if(ov_pcm_tell(&ov)!=((val>>hs)<<hs)){
fprintf(stderr,"Declared position didn't perfectly match request: %ld != %ld\n",
(long)val,(long)ov_pcm_tell(&ov));
exit(1);
}
 
_verify(&ov,-1,val,-1.,pcmlength,bigassbuffer);
 
}
}
 
fprintf(stderr,"\r");
{
fprintf(stderr,"testing time page seeking to random places in %f seconds....\n",
timelength);
 
for(i=0;i<1000;i++){
double val=(double)rand()/RAND_MAX*timelength;
fprintf(stderr,"\r\t%d [time position %f]... ",i,val);
ret=ov_time_seek_page(&ov,val);
if(ret<0){
fprintf(stderr,"seek failed: %d\n",ret);
exit(1);
}
 
_verify(&ov,-1,-1,val,pcmlength,bigassbuffer);
 
}
}
 
fprintf(stderr,"\r");
{
fprintf(stderr,"testing time exact seeking to random places in %f seconds....\n",
timelength);
 
for(i=0;i<1000;i++){
double val=(double)rand()/RAND_MAX*timelength;
fprintf(stderr,"\r\t%d [time position %f]... ",i,val);
ret=ov_time_seek(&ov,val);
if(ret<0){
fprintf(stderr,"seek failed: %d\n",ret);
exit(1);
}
if(ov_time_tell(&ov)<val-1 || ov_time_tell(&ov)>val+1){
fprintf(stderr,"Declared position didn't perfectly match request: %f != %f\n",
val,ov_time_tell(&ov));
exit(1);
}
 
_verify(&ov,-1,-1,val,pcmlength,bigassbuffer);
 
}
}
 
fprintf(stderr,"\r \nOK.\n\n");
 
 
}else{
fprintf(stderr,"Standard input was not seekable.\n");
}
 
ov_clear(&ov);
return 0;
}
 
 
 
 
 
 
 
 
 
 
 
 
 
/contrib/sdk/sources/libvorbis-1.3.7/examples/vorbisfile_example.c
0,0 → 1,91
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: simple example decoder using vorbisfile
 
********************************************************************/
 
/* Takes a vorbis bitstream from stdin and writes raw stereo PCM to
stdout using vorbisfile. Using vorbisfile is much simpler than
dealing with libvorbis. */
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <vorbis/codec.h>
#include <vorbis/vorbisfile.h>
 
#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */
#include <io.h>
#include <fcntl.h>
#endif
 
char pcmout[4096]; /* take 4k out of the data segment, not the stack */
 
int main(){
OggVorbis_File vf;
int eof=0;
int current_section;
 
#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
 
if(ov_open_callbacks(stdin, &vf, NULL, 0, OV_CALLBACKS_NOCLOSE) < 0) {
fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n");
exit(1);
}
 
/* Throw the comments plus a few lines about the bitstream we're
decoding */
{
char **ptr=ov_comment(&vf,-1)->user_comments;
vorbis_info *vi=ov_info(&vf,-1);
while(*ptr){
fprintf(stderr,"%s\n",*ptr);
++ptr;
}
fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi->channels,vi->rate);
fprintf(stderr,"\nDecoded length: %ld samples\n",
(long)ov_pcm_total(&vf,-1));
fprintf(stderr,"Encoded by: %s\n\n",ov_comment(&vf,-1)->vendor);
}
 
while(!eof){
long ret=ov_read(&vf,pcmout,sizeof(pcmout),0,2,1,&current_section);
if (ret == 0) {
/* EOF */
eof=1;
} else if (ret < 0) {
if(ret==OV_EBADLINK){
fprintf(stderr,"Corrupt bitstream section! Exiting.\n");
exit(1);
}
 
/* some other error in the stream. Not a problem, just reporting it in
case we (the app) cares. In this case, we don't. */
} else {
/* we don't bother dealing with sample rate changes, etc, but
you'll have to*/
fwrite(pcmout,1,ret,stdout);
}
}
 
/* cleanup */
ov_clear(&vf);
 
fprintf(stderr,"Done.\n");
return(0);
}
/contrib/sdk/sources/libvorbis-1.3.7/include/vorbis/codec.h
0,0 → 1,242
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
* by the Xiph.Org Foundation https://xiph.org/ *
 
********************************************************************
 
function: libvorbis codec headers
 
********************************************************************/
 
#ifndef _vorbis_codec_h_
#define _vorbis_codec_h_
 
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
 
#include <ogg/ogg.h>
 
typedef struct vorbis_info{
int version;
int channels;
long rate;
 
/* The below bitrate declarations are *hints*.
Combinations of the three values carry the following implications:
 
all three set to the same value:
implies a fixed rate bitstream
only nominal set:
implies a VBR stream that averages the nominal bitrate. No hard
upper/lower limit
upper and or lower set:
implies a VBR bitstream that obeys the bitrate limits. nominal
may also be set to give a nominal rate.
none set:
the coder does not care to speculate.
*/
 
long bitrate_upper;
long bitrate_nominal;
long bitrate_lower;
long bitrate_window;
 
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;
 
float **pcm;
float **pcmret;
int pcm_storage;
int pcm_current;
int pcm_returned;
 
int preextrapolate;
int eofflag;
 
long lW;
long W;
long nW;
long centerW;
 
ogg_int64_t granulepos;
ogg_int64_t sequence;
 
ogg_int64_t glue_bits;
ogg_int64_t time_bits;
ogg_int64_t floor_bits;
ogg_int64_t res_bits;
 
void *backend_state;
} vorbis_dsp_state;
 
typedef struct vorbis_block{
/* necessary stream state for linking to the framing abstraction */
float **pcm; /* this is a pointer into local storage */
oggpack_buffer opb;
 
long lW;
long W;
long nW;
int pcmend;
int mode;
 
int eofflag;
ogg_int64_t granulepos;
ogg_int64_t sequence;
vorbis_dsp_state *vd; /* For read-only access of configuration */
 
/* local storage to avoid remallocing; it's up to the mapping to
structure it */
void *localstore;
long localtop;
long localalloc;
long totaluse;
struct alloc_chain *reap;
 
/* bitmetrics for the frame */
long glue_bits;
long time_bits;
long floor_bits;
long res_bits;
 
void *internal;
 
} vorbis_block;
 
/* 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 independent 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,
psychoacoustic settings, channel setup, options, codebook
etc). vorbis_info and substructures are in backends.h.
*********************************************************************/
 
/* the comments are not part of vorbis_info so that vorbis_info can be
static storage */
typedef struct vorbis_comment{
/* unlimited user comment fields. libvorbis writes 'libvorbis'
whatever vendor is set to in encode */
char **user_comments;
int *comment_lengths;
int comments;
char *vendor;
 
} vorbis_comment;
 
 
/* libvorbis encodes in two abstraction layers; first we perform DSP
and produce a packet (see docs/analysis.txt). The packet is then
coded into a framed OggSquish bitstream by the second layer (see
docs/framing.txt). Decode is the reverse process; we sync/frame
the bitstream and extract individual packets, then decode the
packet back into PCM audio.
 
The extra framing/packetizing is used in streaming formats, such as
files. Over the net (such as with UDP), the framing and
packetization aren't necessary as they're provided by the transport
and the streaming layer is not used */
 
/* Vorbis PRIMITIVES: general ***************************************/
 
extern void vorbis_info_init(vorbis_info *vi);
extern void vorbis_info_clear(vorbis_info *vi);
extern int vorbis_info_blocksize(vorbis_info *vi,int zo);
extern void vorbis_comment_init(vorbis_comment *vc);
extern void vorbis_comment_add(vorbis_comment *vc, const char *comment);
extern void vorbis_comment_add_tag(vorbis_comment *vc,
const char *tag, const char *contents);
extern char *vorbis_comment_query(vorbis_comment *vc, const char *tag, int count);
extern int vorbis_comment_query_count(vorbis_comment *vc, const char *tag);
extern void vorbis_comment_clear(vorbis_comment *vc);
 
extern int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb);
extern int vorbis_block_clear(vorbis_block *vb);
extern void vorbis_dsp_clear(vorbis_dsp_state *v);
extern double vorbis_granule_time(vorbis_dsp_state *v,
ogg_int64_t granulepos);
 
extern const char *vorbis_version_string(void);
 
/* Vorbis PRIMITIVES: analysis/DSP layer ****************************/
 
extern int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi);
extern int vorbis_commentheader_out(vorbis_comment *vc, ogg_packet *op);
extern int vorbis_analysis_headerout(vorbis_dsp_state *v,
vorbis_comment *vc,
ogg_packet *op,
ogg_packet *op_comm,
ogg_packet *op_code);
extern float **vorbis_analysis_buffer(vorbis_dsp_state *v,int vals);
extern int vorbis_analysis_wrote(vorbis_dsp_state *v,int vals);
extern int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb);
extern int vorbis_analysis(vorbis_block *vb,ogg_packet *op);
 
extern int vorbis_bitrate_addblock(vorbis_block *vb);
extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd,
ogg_packet *op);
 
/* Vorbis PRIMITIVES: synthesis layer *******************************/
extern int vorbis_synthesis_idheader(ogg_packet *op);
extern int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,
ogg_packet *op);
 
extern int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi);
extern int vorbis_synthesis_restart(vorbis_dsp_state *v);
extern int vorbis_synthesis(vorbis_block *vb,ogg_packet *op);
extern int vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op);
extern int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb);
extern int vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm);
extern int vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm);
extern int vorbis_synthesis_read(vorbis_dsp_state *v,int samples);
extern long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op);
 
extern int vorbis_synthesis_halfrate(vorbis_info *v,int flag);
extern int vorbis_synthesis_halfrate_p(vorbis_info *v);
 
/* Vorbis ERRORS and return codes ***********************************/
 
#define OV_FALSE -1
#define OV_EOF -2
#define OV_HOLE -3
 
#define OV_EREAD -128
#define OV_EFAULT -129
#define OV_EIMPL -130
#define OV_EINVAL -131
#define OV_ENOTVORBIS -132
#define OV_EBADHEADER -133
#define OV_EVERSION -134
#define OV_ENOTAUDIO -135
#define OV_EBADPACKET -136
#define OV_EBADLINK -137
#define OV_ENOSEEK -138
 
#ifdef __cplusplus
}
#endif /* __cplusplus */
 
#endif
 
/contrib/sdk/sources/libvorbis-1.3.7/include/vorbis/vorbisenc.h
0,0 → 1,435
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: vorbis encode-engine setup
 
********************************************************************/
 
/** \file
* Libvorbisenc is a convenient API for setting up an encoding
* environment using libvorbis. Libvorbisenc encapsulates the
* actions needed to set up the encoder properly.
*/
 
#ifndef _OV_ENC_H_
#define _OV_ENC_H_
 
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
 
#include "codec.h"
 
/**
* This is the primary function within libvorbisenc for setting up managed
* bitrate modes.
*
* Before this function is called, the \ref vorbis_info
* struct should be initialized by using vorbis_info_init() from the libvorbis
* API. After encoding, vorbis_info_clear() should be called.
*
* The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set
* constraints for the encoded file. This function uses these settings to
* select the appropriate encoding mode and set it up.
*
* \param vi Pointer to an initialized \ref vorbis_info struct.
* \param channels The number of channels to be encoded.
* \param rate The sampling rate of the source audio.
* \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset.
* \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset.
* \param min_bitrate Desired minimum bitrate. -1 indicates unset.
*
* \return Zero for success, and negative values for failure.
*
* \retval 0 Success.
* \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption.
* \retval OV_EINVAL Invalid setup request, eg, out of range argument.
* \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request.
*/
extern int vorbis_encode_init(vorbis_info *vi,
long channels,
long rate,
 
long max_bitrate,
long nominal_bitrate,
long min_bitrate);
 
/**
* This function performs step-one of a three-step bitrate-managed encode
* setup. It functions similarly to the one-step setup performed by \ref
* vorbis_encode_init but allows an application to make further encode setup
* tweaks using \ref vorbis_encode_ctl before finally calling \ref
* vorbis_encode_setup_init to complete the setup process.
*
* Before this function is called, the \ref vorbis_info struct should be
* initialized by using vorbis_info_init() from the libvorbis API. After
* encoding, vorbis_info_clear() should be called.
*
* The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set
* constraints for the encoded file. This function uses these settings to
* select the appropriate encoding mode and set it up.
*
* \param vi Pointer to an initialized vorbis_info struct.
* \param channels The number of channels to be encoded.
* \param rate The sampling rate of the source audio.
* \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset.
* \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset.
* \param min_bitrate Desired minimum bitrate. -1 indicates unset.
*
* \return Zero for success, and negative for failure.
*
* \retval 0 Success
* \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption.
* \retval OV_EINVAL Invalid setup request, eg, out of range argument.
* \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request.
*/
extern int vorbis_encode_setup_managed(vorbis_info *vi,
long channels,
long rate,
 
long max_bitrate,
long nominal_bitrate,
long min_bitrate);
 
/**
* This function performs step-one of a three-step variable bitrate
* (quality-based) encode setup. It functions similarly to the one-step setup
* performed by \ref vorbis_encode_init_vbr() but allows an application to
* make further encode setup tweaks using \ref vorbis_encode_ctl() before
* finally calling \ref vorbis_encode_setup_init to complete the setup
* process.
*
* Before this function is called, the \ref vorbis_info struct should be
* initialized by using \ref vorbis_info_init() from the libvorbis API. After
* encoding, vorbis_info_clear() should be called.
*
* \param vi Pointer to an initialized vorbis_info struct.
* \param channels The number of channels to be encoded.
* \param rate The sampling rate of the source audio.
* \param quality Desired quality level, currently from -0.1 to 1.0 (lo to hi).
*
* \return Zero for success, and negative values for failure.
*
* \retval 0 Success
* \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption.
* \retval OV_EINVAL Invalid setup request, eg, out of range argument.
* \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request.
*/
extern int vorbis_encode_setup_vbr(vorbis_info *vi,
long channels,
long rate,
 
float quality
);
 
/**
* This is the primary function within libvorbisenc for setting up variable
* bitrate ("quality" based) modes.
*
*
* Before this function is called, the vorbis_info struct should be
* initialized by using vorbis_info_init() from the libvorbis API. After
* encoding, vorbis_info_clear() should be called.
*
* \param vi Pointer to an initialized vorbis_info struct.
* \param channels The number of channels to be encoded.
* \param rate The sampling rate of the source audio.
* \param base_quality Desired quality level, currently from -0.1 to 1.0 (lo to hi).
*
*
* \return Zero for success, or a negative number for failure.
*
* \retval 0 Success
* \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption.
* \retval OV_EINVAL Invalid setup request, eg, out of range argument.
* \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request.
*/
extern int vorbis_encode_init_vbr(vorbis_info *vi,
long channels,
long rate,
 
float base_quality
);
 
/**
* This function performs the last stage of three-step encoding setup, as
* described in the API overview under managed bitrate modes.
*
* Before this function is called, the \ref vorbis_info struct should be
* initialized by using vorbis_info_init() from the libvorbis API, one of
* \ref vorbis_encode_setup_managed() or \ref vorbis_encode_setup_vbr() called to
* initialize the high-level encoding setup, and \ref vorbis_encode_ctl()
* called if necessary to make encoding setup changes.
* vorbis_encode_setup_init() finalizes the highlevel encoding structure into
* a complete encoding setup after which the application may make no further
* setup changes.
*
* After encoding, vorbis_info_clear() should be called.
*
* \param vi Pointer to an initialized \ref vorbis_info struct.
*
* \return Zero for success, and negative values for failure.
*
* \retval 0 Success.
* \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption.
*
* \retval OV_EINVAL Attempt to use vorbis_encode_setup_init() without first
* calling one of vorbis_encode_setup_managed() or vorbis_encode_setup_vbr() to
* initialize the high-level encoding setup
*
*/
extern int vorbis_encode_setup_init(vorbis_info *vi);
 
/**
* This function implements a generic interface to miscellaneous encoder
* settings similar to the classic UNIX 'ioctl()' system call. Applications
* may use vorbis_encode_ctl() to query or set bitrate management or quality
* mode details by using one of several \e request arguments detailed below.
* vorbis_encode_ctl() must be called after one of
* vorbis_encode_setup_managed() or vorbis_encode_setup_vbr(). When used
* to modify settings, \ref vorbis_encode_ctl() must be called before \ref
* vorbis_encode_setup_init().
*
* \param vi Pointer to an initialized vorbis_info struct.
*
* \param number Specifies the desired action; See \ref encctlcodes "the list
* of available requests".
*
* \param arg void * pointing to a data structure matching the request
* argument.
*
* \retval 0 Success. Any further return information (such as the result of a
* query) is placed into the storage pointed to by *arg.
*
* \retval OV_EINVAL Invalid argument, or an attempt to modify a setting after
* calling vorbis_encode_setup_init().
*
* \retval OV_EIMPL Unimplemented or unknown request
*/
extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg);
 
/**
* \deprecated This is a deprecated interface. Please use vorbis_encode_ctl()
* with the \ref ovectl_ratemanage2_arg struct and \ref
* OV_ECTL_RATEMANAGE2_GET and \ref OV_ECTL_RATEMANAGE2_SET calls in new code.
*
* The \ref ovectl_ratemanage_arg structure is used with vorbis_encode_ctl()
* and the \ref OV_ECTL_RATEMANAGE_GET, \ref OV_ECTL_RATEMANAGE_SET, \ref
* OV_ECTL_RATEMANAGE_AVG, \ref OV_ECTL_RATEMANAGE_HARD calls in order to
* query and modify specifics of the encoder's bitrate management
* configuration.
*/
struct ovectl_ratemanage_arg {
int management_active; /**< nonzero if bitrate management is active*/
/** hard lower limit (in kilobits per second) below which the stream bitrate
will never be allowed for any given bitrate_hard_window seconds of time.*/
long bitrate_hard_min;
/** hard upper limit (in kilobits per second) above which the stream bitrate
will never be allowed for any given bitrate_hard_window seconds of time.*/
long bitrate_hard_max;
/** the window period (in seconds) used to regulate the hard bitrate minimum
and maximum*/
double bitrate_hard_window;
/** soft lower limit (in kilobits per second) below which the average bitrate
tracker will start nudging the bitrate higher.*/
long bitrate_av_lo;
/** soft upper limit (in kilobits per second) above which the average bitrate
tracker will start nudging the bitrate lower.*/
long bitrate_av_hi;
/** the window period (in seconds) used to regulate the average bitrate
minimum and maximum.*/
double bitrate_av_window;
/** Regulates the relative centering of the average and hard windows; in
libvorbis 1.0 and 1.0.1, the hard window regulation overlapped but
followed the average window regulation. In libvorbis 1.1 a bit-reservoir
interface replaces the old windowing interface; the older windowing
interface is simulated and this field has no effect.*/
double bitrate_av_window_center;
};
 
/**
* \name struct ovectl_ratemanage2_arg
*
* The ovectl_ratemanage2_arg structure is used with vorbis_encode_ctl() and
* the OV_ECTL_RATEMANAGE2_GET and OV_ECTL_RATEMANAGE2_SET calls in order to
* query and modify specifics of the encoder's bitrate management
* configuration.
*
*/
struct ovectl_ratemanage2_arg {
int management_active; /**< nonzero if bitrate management is active */
/** Lower allowed bitrate limit in kilobits per second */
long bitrate_limit_min_kbps;
/** Upper allowed bitrate limit in kilobits per second */
long bitrate_limit_max_kbps;
long bitrate_limit_reservoir_bits; /**<Size of the bitrate reservoir in bits */
/** Regulates the bitrate reservoir's preferred fill level in a range from 0.0
* to 1.0; 0.0 tries to bank bits to buffer against future bitrate spikes, 1.0
* buffers against future sudden drops in instantaneous bitrate. Default is
* 0.1
*/
double bitrate_limit_reservoir_bias;
/** Average bitrate setting in kilobits per second */
long bitrate_average_kbps;
/** Slew rate limit setting for average bitrate adjustment; sets the minimum
* time in seconds the bitrate tracker may swing from one extreme to the
* other when boosting or damping average bitrate.
*/
double bitrate_average_damping;
};
 
 
/**
* \name vorbis_encode_ctl() codes
*
* \anchor encctlcodes
*
* These values are passed as the \c number parameter of vorbis_encode_ctl().
* The type of the referent of that function's \c arg pointer depends on these
* codes.
*/
/*@{*/
 
/**
* Query the current encoder bitrate management setting.
*
*Argument: <tt>struct ovectl_ratemanage2_arg *</tt>
*
* Used to query the current encoder bitrate management setting. Also used to
* initialize fields of an ovectl_ratemanage2_arg structure for use with
* \ref OV_ECTL_RATEMANAGE2_SET.
*/
#define OV_ECTL_RATEMANAGE2_GET 0x14
 
/**
* Set the current encoder bitrate management settings.
*
* Argument: <tt>struct ovectl_ratemanage2_arg *</tt>
*
* Used to set the current encoder bitrate management settings to the values
* listed in the ovectl_ratemanage2_arg. Passing a NULL pointer will disable
* bitrate management.
*/
#define OV_ECTL_RATEMANAGE2_SET 0x15
 
/**
* Returns the current encoder hard-lowpass setting (kHz) in the double
* pointed to by arg.
*
* Argument: <tt>double *</tt>
*/
#define OV_ECTL_LOWPASS_GET 0x20
 
/**
* Sets the encoder hard-lowpass to the value (kHz) pointed to by arg. Valid
* lowpass settings range from 2 to 99.
*
* Argument: <tt>double *</tt>
*/
#define OV_ECTL_LOWPASS_SET 0x21
 
/**
* Returns the current encoder impulse block setting in the double pointed
* to by arg.
*
* Argument: <tt>double *</tt>
*/
#define OV_ECTL_IBLOCK_GET 0x30
 
/**
* Sets the impulse block bias to the the value pointed to by arg.
*
* Argument: <tt>double *</tt>
*
* Valid range is -15.0 to 0.0 [default]. A negative impulse block bias will
* direct to encoder to use more bits when incoding short blocks that contain
* strong impulses, thus improving the accuracy of impulse encoding.
*/
#define OV_ECTL_IBLOCK_SET 0x31
 
/**
* Returns the current encoder coupling setting in the int pointed
* to by arg.
*
* Argument: <tt>int *</tt>
*/
#define OV_ECTL_COUPLING_GET 0x40
 
/**
* Enables/disables channel coupling in multichannel encoding according to arg.
*
* Argument: <tt>int *</tt>
*
* Zero disables channel coupling for multichannel inputs, nonzer enables
* channel coupling. Setting has no effect on monophonic encoding or
* multichannel counts that do not offer coupling. At present, coupling is
* available for stereo and 5.1 encoding.
*/
#define OV_ECTL_COUPLING_SET 0x41
 
/* deprecated rate management supported only for compatibility */
 
/**
* Old interface to querying bitrate management settings.
*
* Deprecated after move to bit-reservoir style management in 1.1 rendered
* this interface partially obsolete.
 
* \deprecated Please use \ref OV_ECTL_RATEMANAGE2_GET instead.
*
* Argument: <tt>struct ovectl_ratemanage_arg *</tt>
*/
#define OV_ECTL_RATEMANAGE_GET 0x10
/**
* Old interface to modifying bitrate management settings.
*
* deprecated after move to bit-reservoir style management in 1.1 rendered
* this interface partially obsolete.
*
* \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead.
*
* Argument: <tt>struct ovectl_ratemanage_arg *</tt>
*/
#define OV_ECTL_RATEMANAGE_SET 0x11
/**
* Old interface to setting average-bitrate encoding mode.
*
* Deprecated after move to bit-reservoir style management in 1.1 rendered
* this interface partially obsolete.
*
* \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead.
*
* Argument: <tt>struct ovectl_ratemanage_arg *</tt>
*/
#define OV_ECTL_RATEMANAGE_AVG 0x12
/**
* Old interface to setting bounded-bitrate encoding modes.
*
* deprecated after move to bit-reservoir style management in 1.1 rendered
* this interface partially obsolete.
*
* \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead.
*
* Argument: <tt>struct ovectl_ratemanage_arg *</tt>
*/
#define OV_ECTL_RATEMANAGE_HARD 0x13
 
/*@}*/
 
 
 
#ifdef __cplusplus
}
#endif /* __cplusplus */
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/include/vorbis/vorbisfile.h
0,0 → 1,205
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: stdio-based convenience library for opening/seeking/decoding
 
********************************************************************/
 
#ifndef _OV_FILE_H_
#define _OV_FILE_H_
 
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
 
#include <stdio.h>
#include "codec.h"
 
/* The function prototypes for the callbacks are basically the same as for
* the stdio functions fread, fseek, fclose, ftell.
* The one difference is that the FILE * arguments have been replaced with
* a void * - this is to be used as a pointer to whatever internal data these
* functions might need. In the stdio case, it's just a FILE * cast to a void *
*
* If you use other functions, check the docs for these functions and return
* the right values. For seek_func(), you *MUST* return -1 if the stream is
* unseekable
*/
typedef struct {
size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource);
int (*seek_func) (void *datasource, ogg_int64_t offset, int whence);
int (*close_func) (void *datasource);
long (*tell_func) (void *datasource);
} ov_callbacks;
 
#ifndef OV_EXCLUDE_STATIC_CALLBACKS
 
/* a few sets of convenient callbacks, especially for use under
* Windows where ov_open_callbacks() should always be used instead of
* ov_open() to avoid problems with incompatible crt.o version linking
* issues. */
 
static int _ov_header_fseek_wrap(FILE *f,ogg_int64_t off,int whence){
if(f==NULL)return(-1);
 
#ifdef __MINGW32__
return fseeko64(f,off,whence);
#elif defined (_WIN32)
return _fseeki64(f,off,whence);
#else
return fseek(f,off,whence);
#endif
}
 
/* These structs below (OV_CALLBACKS_DEFAULT etc) are defined here as
* static data. That means that every file which includes this header
* will get its own copy of these structs whether it uses them or
* not unless it #defines OV_EXCLUDE_STATIC_CALLBACKS.
* These static symbols are essential on platforms such as Windows on
* which several different versions of stdio support may be linked to
* by different DLLs, and we need to be certain we know which one
* we're using (the same one as the main application).
*/
 
static ov_callbacks OV_CALLBACKS_DEFAULT = {
(size_t (*)(void *, size_t, size_t, void *)) fread,
(int (*)(void *, ogg_int64_t, int)) _ov_header_fseek_wrap,
(int (*)(void *)) fclose,
(long (*)(void *)) ftell
};
 
static ov_callbacks OV_CALLBACKS_NOCLOSE = {
(size_t (*)(void *, size_t, size_t, void *)) fread,
(int (*)(void *, ogg_int64_t, int)) _ov_header_fseek_wrap,
(int (*)(void *)) NULL,
(long (*)(void *)) ftell
};
 
static ov_callbacks OV_CALLBACKS_STREAMONLY = {
(size_t (*)(void *, size_t, size_t, void *)) fread,
(int (*)(void *, ogg_int64_t, int)) NULL,
(int (*)(void *)) fclose,
(long (*)(void *)) NULL
};
 
static ov_callbacks OV_CALLBACKS_STREAMONLY_NOCLOSE = {
(size_t (*)(void *, size_t, size_t, void *)) fread,
(int (*)(void *, ogg_int64_t, int)) NULL,
(int (*)(void *)) NULL,
(long (*)(void *)) NULL
};
 
#endif
 
#define NOTOPEN 0
#define PARTOPEN 1
#define OPENED 2
#define STREAMSET 3
#define INITSET 4
 
typedef struct OggVorbis_File {
void *datasource; /* Pointer to a FILE *, etc. */
int seekable;
ogg_int64_t offset;
ogg_int64_t end;
ogg_sync_state oy;
 
/* If the FILE handle isn't seekable (eg, a pipe), only the current
stream appears */
int links;
ogg_int64_t *offsets;
ogg_int64_t *dataoffsets;
long *serialnos;
ogg_int64_t *pcmlengths; /* overloaded to maintain binary
compatibility; x2 size, stores both
beginning and end values */
vorbis_info *vi;
vorbis_comment *vc;
 
/* Decoding working state local storage */
ogg_int64_t pcm_offset;
int ready_state;
long current_serialno;
int current_link;
 
double bittrack;
double samptrack;
 
ogg_stream_state os; /* take physical pages, weld into a logical
stream of packets */
vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
vorbis_block vb; /* local working space for packet->PCM decode */
 
ov_callbacks callbacks;
 
} OggVorbis_File;
 
 
extern int ov_clear(OggVorbis_File *vf);
extern int ov_fopen(const char *path,OggVorbis_File *vf);
extern int ov_open(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes);
extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf,
const char *initial, long ibytes, ov_callbacks callbacks);
 
extern int ov_test(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes);
extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf,
const char *initial, long ibytes, ov_callbacks callbacks);
extern int ov_test_open(OggVorbis_File *vf);
 
extern long ov_bitrate(OggVorbis_File *vf,int i);
extern long ov_bitrate_instant(OggVorbis_File *vf);
extern long ov_streams(OggVorbis_File *vf);
extern long ov_seekable(OggVorbis_File *vf);
extern long ov_serialnumber(OggVorbis_File *vf,int i);
 
extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i);
extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i);
extern double ov_time_total(OggVorbis_File *vf,int i);
 
extern int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos);
extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos);
extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos);
extern int ov_time_seek(OggVorbis_File *vf,double pos);
extern int ov_time_seek_page(OggVorbis_File *vf,double pos);
 
extern int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos);
extern int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos);
extern int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos);
extern int ov_time_seek_lap(OggVorbis_File *vf,double pos);
extern int ov_time_seek_page_lap(OggVorbis_File *vf,double pos);
 
extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf);
extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf);
extern double ov_time_tell(OggVorbis_File *vf);
 
extern vorbis_info *ov_info(OggVorbis_File *vf,int link);
extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link);
 
extern long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int samples,
int *bitstream);
extern long ov_read_filter(OggVorbis_File *vf,char *buffer,int length,
int bigendianp,int word,int sgned,int *bitstream,
void (*filter)(float **pcm,long channels,long samples,void *filter_param),void *filter_param);
extern long ov_read(OggVorbis_File *vf,char *buffer,int length,
int bigendianp,int word,int sgned,int *bitstream);
extern int ov_crosslap(OggVorbis_File *vf1,OggVorbis_File *vf2);
 
extern int ov_halfrate(OggVorbis_File *vf,int flag);
extern int ov_halfrate_p(OggVorbis_File *vf);
 
#ifdef __cplusplus
}
#endif /* __cplusplus */
 
#endif
 
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/analysis.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/barkmel.Po
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/bitrate.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/block.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/codebook.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/envelope.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/floor0.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/floor1.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/info.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/lookup.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/lpc.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/lsp.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/mapping0.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/mdct.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/psy.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/psytune.Po
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/registry.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/res0.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/sharedbook.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/smallft.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/synthesis.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/test_sharedbook-sharedbook.Po
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/tone.Po
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/vorbisenc.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/vorbisfile.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/.deps/window.Plo
0,0 → 1,0
# dummy
/contrib/sdk/sources/libvorbis-1.3.7/lib/analysis.c
0,0 → 1,119
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: single-block PCM analysis mode dispatch
 
********************************************************************/
 
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <ogg/ogg.h>
#include "vorbis/codec.h"
#include "codec_internal.h"
#include "registry.h"
#include "scales.h"
#include "os.h"
#include "misc.h"
 
/* decides between modes, dispatches to the appropriate mapping. */
int vorbis_analysis(vorbis_block *vb, ogg_packet *op){
int ret,i;
vorbis_block_internal *vbi=vb->internal;
 
vb->glue_bits=0;
vb->time_bits=0;
vb->floor_bits=0;
vb->res_bits=0;
 
/* first things first. Make sure encode is ready */
for(i=0;i<PACKETBLOBS;i++)
oggpack_reset(vbi->packetblob[i]);
 
/* we only have one mapping type (0), and we let the mapping code
itself figure out what soft mode to use. This allows easier
bitrate management */
 
if((ret=_mapping_P[0]->forward(vb)))
return(ret);
 
if(op){
if(vorbis_bitrate_managed(vb))
/* The app is using a bitmanaged mode... but not using the
bitrate management interface. */
return(OV_EINVAL);
 
op->packet=oggpack_get_buffer(&vb->opb);
op->bytes=oggpack_bytes(&vb->opb);
op->b_o_s=0;
op->e_o_s=vb->eofflag;
op->granulepos=vb->granulepos;
op->packetno=vb->sequence; /* for sake of completeness */
}
return(0);
}
 
#ifdef ANALYSIS
int analysis_noisy=1;
 
/* there was no great place to put this.... */
void _analysis_output_always(char *base,int i,float *v,int n,int bark,int dB,ogg_int64_t off){
int j;
FILE *of;
char buffer[80];
 
sprintf(buffer,"%s_%d.m",base,i);
of=fopen(buffer,"w");
 
if(!of)perror("failed to open data dump file");
 
for(j=0;j<n;j++){
if(bark){
float b=toBARK((4000.f*j/n)+.25);
fprintf(of,"%f ",b);
}else
if(off!=0)
fprintf(of,"%f ",(double)(j+off)/8000.);
else
fprintf(of,"%f ",(double)j);
 
if(dB){
float val;
if(v[j]==0.)
val=-140.;
else
val=todB(v+j);
fprintf(of,"%f\n",val);
}else{
fprintf(of,"%f\n",v[j]);
}
}
fclose(of);
}
 
void _analysis_output(char *base,int i,float *v,int n,int bark,int dB,
ogg_int64_t off){
if(analysis_noisy)_analysis_output_always(base,i,v,n,bark,dB,off);
}
 
#endif
 
 
 
 
 
 
 
 
 
 
 
/contrib/sdk/sources/libvorbis-1.3.7/lib/backends.h
0,0 → 1,143
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: libvorbis backend and mapping structures; needed for
static mode headers
 
********************************************************************/
 
/* 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.... */
/* 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_floor *);
void (*free_info) (vorbis_info_floor *);
void (*free_look) (vorbis_look_floor *);
void *(*inverse1) (struct vorbis_block *,vorbis_look_floor *);
int (*inverse2) (struct vorbis_block *,vorbis_look_floor *,
void *buffer,float *);
} vorbis_func_floor;
 
typedef struct{
int order;
long rate;
long barkmap;
 
int ampbits;
int ampdB;
 
int numbooks; /* <= 16 */
int books[16];
 
float lessthan; /* encode-only config setting hacks for libvorbis */
float greaterthan; /* encode-only config setting hacks for libvorbis */
 
} vorbis_info_floor0;
 
 
#define VIF_POSIT 63
#define VIF_CLASS 16
#define VIF_PARTS 31
typedef struct{
int partitions; /* 0 to 31 */
int partitionclass[VIF_PARTS]; /* 0 to 15 */
 
int class_dim[VIF_CLASS]; /* 1 to 8 */
int class_subs[VIF_CLASS]; /* 0,1,2,3 (bits: 1<<n poss) */
int class_book[VIF_CLASS]; /* subs ^ dim entries */
int class_subbook[VIF_CLASS][8]; /* [VIF_CLASS][subs] */
 
 
int mult; /* 1 2 3 or 4 */
int postlist[VIF_POSIT+2]; /* first two implicit */
 
 
/* encode side analysis parameters */
float maxover;
float maxunder;
float maxerr;
 
float twofitweight;
float twofitatten;
 
int n;
 
} vorbis_info_floor1;
 
/* 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_residue *);
void (*free_info) (vorbis_info_residue *);
void (*free_look) (vorbis_look_residue *);
long **(*class) (struct vorbis_block *,vorbis_look_residue *,
int **,int *,int);
int (*forward) (oggpack_buffer *,struct vorbis_block *,
vorbis_look_residue *,
int **,int *,int,long **,int);
int (*inverse) (struct vorbis_block *,vorbis_look_residue *,
float **,int *,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 partvals; /* partitions ^ groupbook dim */
int groupbook; /* huffbook for partitioning */
int secondstages[64]; /* expanded out to pointers in lookup */
int booklist[512]; /* list of second stage books */
 
const int classmetric1[64];
const int classmetric2[64];
} 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 *);
void (*free_info) (vorbis_info_mapping *);
int (*forward) (struct vorbis_block *vb);
int (*inverse) (struct vorbis_block *vb,vorbis_info_mapping *);
} vorbis_func_mapping;
 
typedef struct vorbis_info_mapping0{
int submaps; /* <= 16 */
int chmuxlist[256]; /* up to 256 channels in a Vorbis stream */
 
int floorsubmap[16]; /* [mux] submap to floors */
int residuesubmap[16]; /* [mux] submap to residue */
 
int coupling_steps;
int coupling_mag[256];
int coupling_ang[256];
 
} vorbis_info_mapping0;
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/barkmel.c
0,0 → 1,63
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: bark scale utility
 
********************************************************************/
 
#include <stdio.h>
#include "scales.h"
int main(){
int i;
double rate;
for(i=64;i<32000;i*=2){
rate=48000.f;
fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
 
rate=44100.f;
fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
 
rate=32000.f;
fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
 
rate=22050.f;
fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
 
rate=16000.f;
fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
 
rate=11025.f;
fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
 
rate=8000.f;
fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n\n",
rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
 
 
}
{
float i;
int j;
for(i=0.,j=0;i<28;i+=1,j++){
fprintf(stderr,"(%d) bark=%f %gHz (%d of 128)\n",
j,i,fromBARK(i),(int)(fromBARK(i)/22050.*128.));
}
}
return(0);
}
 
/contrib/sdk/sources/libvorbis-1.3.7/lib/bitrate.c
0,0 → 1,252
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: bitrate tracking and management
 
********************************************************************/
 
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ogg/ogg.h>
#include "vorbis/codec.h"
#include "codec_internal.h"
#include "os.h"
#include "misc.h"
#include "bitrate.h"
 
/* compute bitrate tracking setup */
void vorbis_bitrate_init(vorbis_info *vi,bitrate_manager_state *bm){
codec_setup_info *ci=vi->codec_setup;
bitrate_manager_info *bi=&ci->bi;
 
memset(bm,0,sizeof(*bm));
 
if(bi && (bi->reservoir_bits>0)){
long ratesamples=vi->rate;
int halfsamples=ci->blocksizes[0]>>1;
 
bm->short_per_long=ci->blocksizes[1]/ci->blocksizes[0];
bm->managed=1;
 
bm->avg_bitsper= rint(1.*bi->avg_rate*halfsamples/ratesamples);
bm->min_bitsper= rint(1.*bi->min_rate*halfsamples/ratesamples);
bm->max_bitsper= rint(1.*bi->max_rate*halfsamples/ratesamples);
 
bm->avgfloat=PACKETBLOBS/2;
 
/* not a necessary fix, but one that leads to a more balanced
typical initialization */
{
long desired_fill=bi->reservoir_bits*bi->reservoir_bias;
bm->minmax_reservoir=desired_fill;
bm->avg_reservoir=desired_fill;
}
 
}
}
 
void vorbis_bitrate_clear(bitrate_manager_state *bm){
memset(bm,0,sizeof(*bm));
return;
}
 
int vorbis_bitrate_managed(vorbis_block *vb){
vorbis_dsp_state *vd=vb->vd;
private_state *b=vd->backend_state;
bitrate_manager_state *bm=&b->bms;
 
if(bm && bm->managed)return(1);
return(0);
}
 
/* finish taking in the block we just processed */
int vorbis_bitrate_addblock(vorbis_block *vb){
vorbis_block_internal *vbi=vb->internal;
vorbis_dsp_state *vd=vb->vd;
private_state *b=vd->backend_state;
bitrate_manager_state *bm=&b->bms;
vorbis_info *vi=vd->vi;
codec_setup_info *ci=vi->codec_setup;
bitrate_manager_info *bi=&ci->bi;
 
int choice=rint(bm->avgfloat);
long this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
long min_target_bits=(vb->W?bm->min_bitsper*bm->short_per_long:bm->min_bitsper);
long max_target_bits=(vb->W?bm->max_bitsper*bm->short_per_long:bm->max_bitsper);
int samples=ci->blocksizes[vb->W]>>1;
long desired_fill=bi->reservoir_bits*bi->reservoir_bias;
if(!bm->managed){
/* not a bitrate managed stream, but for API simplicity, we'll
buffer the packet to keep the code path clean */
 
if(bm->vb)return(-1); /* one has been submitted without
being claimed */
bm->vb=vb;
return(0);
}
 
bm->vb=vb;
 
/* look ahead for avg floater */
if(bm->avg_bitsper>0){
double slew=0.;
long avg_target_bits=(vb->W?bm->avg_bitsper*bm->short_per_long:bm->avg_bitsper);
double slewlimit= 15./bi->slew_damp;
 
/* choosing a new floater:
if we're over target, we slew down
if we're under target, we slew up
 
choose slew as follows: look through packetblobs of this frame
and set slew as the first in the appropriate direction that
gives us the slew we want. This may mean no slew if delta is
already favorable.
 
Then limit slew to slew max */
 
if(bm->avg_reservoir+(this_bits-avg_target_bits)>desired_fill){
while(choice>0 && this_bits>avg_target_bits &&
bm->avg_reservoir+(this_bits-avg_target_bits)>desired_fill){
choice--;
this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
}
}else if(bm->avg_reservoir+(this_bits-avg_target_bits)<desired_fill){
while(choice+1<PACKETBLOBS && this_bits<avg_target_bits &&
bm->avg_reservoir+(this_bits-avg_target_bits)<desired_fill){
choice++;
this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
}
}
 
slew=rint(choice-bm->avgfloat)/samples*vi->rate;
if(slew<-slewlimit)slew=-slewlimit;
if(slew>slewlimit)slew=slewlimit;
choice=rint(bm->avgfloat+= slew/vi->rate*samples);
this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
}
 
 
 
/* enforce min(if used) on the current floater (if used) */
if(bm->min_bitsper>0){
/* do we need to force the bitrate up? */
if(this_bits<min_target_bits){
while(bm->minmax_reservoir-(min_target_bits-this_bits)<0){
choice++;
if(choice>=PACKETBLOBS)break;
this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
}
}
}
 
/* enforce max (if used) on the current floater (if used) */
if(bm->max_bitsper>0){
/* do we need to force the bitrate down? */
if(this_bits>max_target_bits){
while(bm->minmax_reservoir+(this_bits-max_target_bits)>bi->reservoir_bits){
choice--;
if(choice<0)break;
this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
}
}
}
 
/* Choice of packetblobs now made based on floater, and min/max
requirements. Now boundary check extreme choices */
 
if(choice<0){
/* choosing a smaller packetblob is insufficient to trim bitrate.
frame will need to be truncated */
long maxsize=(max_target_bits+(bi->reservoir_bits-bm->minmax_reservoir))/8;
bm->choice=choice=0;
 
if(oggpack_bytes(vbi->packetblob[choice])>maxsize){
 
oggpack_writetrunc(vbi->packetblob[choice],maxsize*8);
this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
}
}else{
long minsize=(min_target_bits-bm->minmax_reservoir+7)/8;
if(choice>=PACKETBLOBS)
choice=PACKETBLOBS-1;
 
bm->choice=choice;
 
/* prop up bitrate according to demand. pad this frame out with zeroes */
minsize-=oggpack_bytes(vbi->packetblob[choice]);
while(minsize-->0)oggpack_write(vbi->packetblob[choice],0,8);
this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
 
}
 
/* now we have the final packet and the final packet size. Update statistics */
/* min and max reservoir */
if(bm->min_bitsper>0 || bm->max_bitsper>0){
 
if(max_target_bits>0 && this_bits>max_target_bits){
bm->minmax_reservoir+=(this_bits-max_target_bits);
}else if(min_target_bits>0 && this_bits<min_target_bits){
bm->minmax_reservoir+=(this_bits-min_target_bits);
}else{
/* inbetween; we want to take reservoir toward but not past desired_fill */
if(bm->minmax_reservoir>desired_fill){
if(max_target_bits>0){ /* logical bulletproofing against initialization state */
bm->minmax_reservoir+=(this_bits-max_target_bits);
if(bm->minmax_reservoir<desired_fill)bm->minmax_reservoir=desired_fill;
}else{
bm->minmax_reservoir=desired_fill;
}
}else{
if(min_target_bits>0){ /* logical bulletproofing against initialization state */
bm->minmax_reservoir+=(this_bits-min_target_bits);
if(bm->minmax_reservoir>desired_fill)bm->minmax_reservoir=desired_fill;
}else{
bm->minmax_reservoir=desired_fill;
}
}
}
}
 
/* avg reservoir */
if(bm->avg_bitsper>0){
long avg_target_bits=(vb->W?bm->avg_bitsper*bm->short_per_long:bm->avg_bitsper);
bm->avg_reservoir+=this_bits-avg_target_bits;
}
 
return(0);
}
 
int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd,ogg_packet *op){
private_state *b=vd->backend_state;
bitrate_manager_state *bm=&b->bms;
vorbis_block *vb=bm->vb;
int choice=PACKETBLOBS/2;
if(!vb)return 0;
 
if(op){
vorbis_block_internal *vbi=vb->internal;
 
if(vorbis_bitrate_managed(vb))
choice=bm->choice;
 
op->packet=oggpack_get_buffer(vbi->packetblob[choice]);
op->bytes=oggpack_bytes(vbi->packetblob[choice]);
op->b_o_s=0;
op->e_o_s=vb->eofflag;
op->granulepos=vb->granulepos;
op->packetno=vb->sequence; /* for sake of completeness */
}
 
bm->vb=0;
return(1);
}
/contrib/sdk/sources/libvorbis-1.3.7/lib/bitrate.h
0,0 → 1,58
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: bitrate tracking and management
 
********************************************************************/
 
#ifndef _V_BITRATE_H_
#define _V_BITRATE_H_
 
#include "vorbis/codec.h"
#include "codec_internal.h"
#include "os.h"
 
/* encode side bitrate tracking */
typedef struct bitrate_manager_state {
int managed;
 
long avg_reservoir;
long minmax_reservoir;
long avg_bitsper;
long min_bitsper;
long max_bitsper;
 
long short_per_long;
double avgfloat;
 
vorbis_block *vb;
int choice;
} bitrate_manager_state;
 
typedef struct bitrate_manager_info{
long avg_rate;
long min_rate;
long max_rate;
long reservoir_bits;
double reservoir_bias;
 
double slew_damp;
 
} bitrate_manager_info;
 
extern void vorbis_bitrate_init(vorbis_info *vi,bitrate_manager_state *bs);
extern void vorbis_bitrate_clear(bitrate_manager_state *bs);
extern int vorbis_bitrate_managed(vorbis_block *vb);
extern int vorbis_bitrate_addblock(vorbis_block *vb);
extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, ogg_packet *op);
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/block.c
0,0 → 1,1046
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: PCM data vector blocking, windowing and dis/reassembly
 
Handle windowing, overlap-add, etc of the PCM vectors. This is made
more amusing by Vorbis' current two allowed block sizes.
 
********************************************************************/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ogg/ogg.h>
#include "vorbis/codec.h"
#include "codec_internal.h"
 
#include "window.h"
#include "mdct.h"
#include "lpc.h"
#include "registry.h"
#include "misc.h"
 
/* pcm accumulator examples (not exhaustive):
 
<-------------- lW ---------------->
<--------------- W ---------------->
: .....|..... _______________ |
: .''' | '''_--- | |\ |
:.....''' |_____--- '''......| | \_______|
:.................|__________________|_______|__|______|
|<------ Sl ------>| > Sr < |endW
|beginSl |endSl | |endSr
|beginW |endlW |beginSr
 
 
|< lW >|
<--------------- W ---------------->
| | .. ______________ |
| | ' `/ | ---_ |
|___.'___/`. | ---_____|
|_______|__|_______|_________________|
| >|Sl|< |<------ Sr ----->|endW
| | |endSl |beginSr |endSr
|beginW | |endlW
mult[0] |beginSl mult[n]
 
<-------------- lW ----------------->
|<--W-->|
: .............. ___ | |
: .''' |`/ \ | |
:.....''' |/`....\|...|
:.........................|___|___|___|
|Sl |Sr |endW
| | |endSr
| |beginSr
| |endSl
|beginSl
|beginW
*/
 
/* block abstraction setup *********************************************/
 
#ifndef WORD_ALIGN
#define WORD_ALIGN 8
#endif
 
int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb){
int i;
memset(vb,0,sizeof(*vb));
vb->vd=v;
vb->localalloc=0;
vb->localstore=NULL;
if(v->analysisp){
vorbis_block_internal *vbi=
vb->internal=_ogg_calloc(1,sizeof(vorbis_block_internal));
vbi->ampmax=-9999;
 
for(i=0;i<PACKETBLOBS;i++){
if(i==PACKETBLOBS/2){
vbi->packetblob[i]=&vb->opb;
}else{
vbi->packetblob[i]=
_ogg_calloc(1,sizeof(oggpack_buffer));
}
oggpack_writeinit(vbi->packetblob[i]);
}
}
 
return(0);
}
 
void *_vorbis_block_alloc(vorbis_block *vb,long bytes){
bytes=(bytes+(WORD_ALIGN-1)) & ~(WORD_ALIGN-1);
if(bytes+vb->localtop>vb->localalloc){
/* can't just _ogg_realloc... there are outstanding pointers */
if(vb->localstore){
struct alloc_chain *link=_ogg_malloc(sizeof(*link));
vb->totaluse+=vb->localtop;
link->next=vb->reap;
link->ptr=vb->localstore;
vb->reap=link;
}
/* highly conservative */
vb->localalloc=bytes;
vb->localstore=_ogg_malloc(vb->localalloc);
vb->localtop=0;
}
{
void *ret=(void *)(((char *)vb->localstore)+vb->localtop);
vb->localtop+=bytes;
return ret;
}
}
 
/* reap the chain, pull the ripcord */
void _vorbis_block_ripcord(vorbis_block *vb){
/* reap the chain */
struct alloc_chain *reap=vb->reap;
while(reap){
struct alloc_chain *next=reap->next;
_ogg_free(reap->ptr);
memset(reap,0,sizeof(*reap));
_ogg_free(reap);
reap=next;
}
/* consolidate storage */
if(vb->totaluse){
vb->localstore=_ogg_realloc(vb->localstore,vb->totaluse+vb->localalloc);
vb->localalloc+=vb->totaluse;
vb->totaluse=0;
}
 
/* pull the ripcord */
vb->localtop=0;
vb->reap=NULL;
}
 
int vorbis_block_clear(vorbis_block *vb){
int i;
vorbis_block_internal *vbi=vb->internal;
 
_vorbis_block_ripcord(vb);
if(vb->localstore)_ogg_free(vb->localstore);
 
if(vbi){
for(i=0;i<PACKETBLOBS;i++){
oggpack_writeclear(vbi->packetblob[i]);
if(i!=PACKETBLOBS/2)_ogg_free(vbi->packetblob[i]);
}
_ogg_free(vbi);
}
memset(vb,0,sizeof(*vb));
return(0);
}
 
/* Analysis side code, but directly related to blocking. Thus it's
here and not in analysis.c (which is for analysis transforms only).
The init is here because some of it is shared */
 
static int _vds_shared_init(vorbis_dsp_state *v,vorbis_info *vi,int encp){
int i;
codec_setup_info *ci=vi->codec_setup;
private_state *b=NULL;
int hs;
 
if(ci==NULL||
ci->modes<=0||
ci->blocksizes[0]<64||
ci->blocksizes[1]<ci->blocksizes[0]){
return 1;
}
hs=ci->halfrate_flag;
 
memset(v,0,sizeof(*v));
b=v->backend_state=_ogg_calloc(1,sizeof(*b));
 
v->vi=vi;
b->modebits=ov_ilog(ci->modes-1);
 
b->transform[0]=_ogg_calloc(VI_TRANSFORMB,sizeof(*b->transform[0]));
b->transform[1]=_ogg_calloc(VI_TRANSFORMB,sizeof(*b->transform[1]));
 
/* MDCT is tranform 0 */
 
b->transform[0][0]=_ogg_calloc(1,sizeof(mdct_lookup));
b->transform[1][0]=_ogg_calloc(1,sizeof(mdct_lookup));
mdct_init(b->transform[0][0],ci->blocksizes[0]>>hs);
mdct_init(b->transform[1][0],ci->blocksizes[1]>>hs);
 
/* Vorbis I uses only window type 0 */
/* note that the correct computation below is technically:
b->window[0]=ov_ilog(ci->blocksizes[0]-1)-6;
b->window[1]=ov_ilog(ci->blocksizes[1]-1)-6;
but since blocksizes are always powers of two,
the below is equivalent.
*/
b->window[0]=ov_ilog(ci->blocksizes[0])-7;
b->window[1]=ov_ilog(ci->blocksizes[1])-7;
 
if(encp){ /* encode/decode differ here */
 
/* analysis always needs an fft */
drft_init(&b->fft_look[0],ci->blocksizes[0]);
drft_init(&b->fft_look[1],ci->blocksizes[1]);
 
/* finish the codebooks */
if(!ci->fullbooks){
ci->fullbooks=_ogg_calloc(ci->books,sizeof(*ci->fullbooks));
for(i=0;i<ci->books;i++)
vorbis_book_init_encode(ci->fullbooks+i,ci->book_param[i]);
}
 
b->psy=_ogg_calloc(ci->psys,sizeof(*b->psy));
for(i=0;i<ci->psys;i++){
_vp_psy_init(b->psy+i,
ci->psy_param[i],
&ci->psy_g_param,
ci->blocksizes[ci->psy_param[i]->blockflag]/2,
vi->rate);
}
 
v->analysisp=1;
}else{
/* finish the codebooks */
if(!ci->fullbooks){
ci->fullbooks=_ogg_calloc(ci->books,sizeof(*ci->fullbooks));
for(i=0;i<ci->books;i++){
if(ci->book_param[i]==NULL)
goto abort_books;
if(vorbis_book_init_decode(ci->fullbooks+i,ci->book_param[i]))
goto abort_books;
/* decode codebooks are now standalone after init */
vorbis_staticbook_destroy(ci->book_param[i]);
ci->book_param[i]=NULL;
}
}
}
 
/* initialize the storage vectors. blocksize[1] is small for encode,
but the correct size for decode */
v->pcm_storage=ci->blocksizes[1];
v->pcm=_ogg_malloc(vi->channels*sizeof(*v->pcm));
v->pcmret=_ogg_malloc(vi->channels*sizeof(*v->pcmret));
{
int i;
for(i=0;i<vi->channels;i++)
v->pcm[i]=_ogg_calloc(v->pcm_storage,sizeof(*v->pcm[i]));
}
 
/* all 1 (large block) or 0 (small block) */
/* explicitly set for the sake of clarity */
v->lW=0; /* previous window size */
v->W=0; /* current window size */
 
/* all vector indexes */
v->centerW=ci->blocksizes[1]/2;
 
v->pcm_current=v->centerW;
 
/* initialize all the backend lookups */
b->flr=_ogg_calloc(ci->floors,sizeof(*b->flr));
b->residue=_ogg_calloc(ci->residues,sizeof(*b->residue));
 
for(i=0;i<ci->floors;i++)
b->flr[i]=_floor_P[ci->floor_type[i]]->
look(v,ci->floor_param[i]);
 
for(i=0;i<ci->residues;i++)
b->residue[i]=_residue_P[ci->residue_type[i]]->
look(v,ci->residue_param[i]);
 
return 0;
abort_books:
for(i=0;i<ci->books;i++){
if(ci->book_param[i]!=NULL){
vorbis_staticbook_destroy(ci->book_param[i]);
ci->book_param[i]=NULL;
}
}
vorbis_dsp_clear(v);
return -1;
}
 
/* arbitrary settings and spec-mandated numbers get filled in here */
int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi){
private_state *b=NULL;
 
if(_vds_shared_init(v,vi,1))return 1;
b=v->backend_state;
b->psy_g_look=_vp_global_look(vi);
 
/* Initialize the envelope state storage */
b->ve=_ogg_calloc(1,sizeof(*b->ve));
_ve_envelope_init(b->ve,vi);
 
vorbis_bitrate_init(vi,&b->bms);
 
/* compressed audio packets start after the headers
with sequence number 3 */
v->sequence=3;
 
return(0);
}
 
void vorbis_dsp_clear(vorbis_dsp_state *v){
int i;
if(v){
vorbis_info *vi=v->vi;
codec_setup_info *ci=(vi?vi->codec_setup:NULL);
private_state *b=v->backend_state;
 
if(b){
 
if(b->ve){
_ve_envelope_clear(b->ve);
_ogg_free(b->ve);
}
 
if(b->transform[0]){
mdct_clear(b->transform[0][0]);
_ogg_free(b->transform[0][0]);
_ogg_free(b->transform[0]);
}
if(b->transform[1]){
mdct_clear(b->transform[1][0]);
_ogg_free(b->transform[1][0]);
_ogg_free(b->transform[1]);
}
 
if(b->flr){
if(ci)
for(i=0;i<ci->floors;i++)
_floor_P[ci->floor_type[i]]->
free_look(b->flr[i]);
_ogg_free(b->flr);
}
if(b->residue){
if(ci)
for(i=0;i<ci->residues;i++)
_residue_P[ci->residue_type[i]]->
free_look(b->residue[i]);
_ogg_free(b->residue);
}
if(b->psy){
if(ci)
for(i=0;i<ci->psys;i++)
_vp_psy_clear(b->psy+i);
_ogg_free(b->psy);
}
 
if(b->psy_g_look)_vp_global_free(b->psy_g_look);
vorbis_bitrate_clear(&b->bms);
 
drft_clear(&b->fft_look[0]);
drft_clear(&b->fft_look[1]);
 
}
 
if(v->pcm){
if(vi)
for(i=0;i<vi->channels;i++)
if(v->pcm[i])_ogg_free(v->pcm[i]);
_ogg_free(v->pcm);
if(v->pcmret)_ogg_free(v->pcmret);
}
 
if(b){
/* free header, header1, header2 */
if(b->header)_ogg_free(b->header);
if(b->header1)_ogg_free(b->header1);
if(b->header2)_ogg_free(b->header2);
_ogg_free(b);
}
 
memset(v,0,sizeof(*v));
}
}
 
float **vorbis_analysis_buffer(vorbis_dsp_state *v, int vals){
int i;
vorbis_info *vi=v->vi;
private_state *b=v->backend_state;
 
/* free header, header1, header2 */
if(b->header)_ogg_free(b->header);b->header=NULL;
if(b->header1)_ogg_free(b->header1);b->header1=NULL;
if(b->header2)_ogg_free(b->header2);b->header2=NULL;
 
/* Do we have enough storage space for the requested buffer? If not,
expand the PCM (and envelope) storage */
 
if(v->pcm_current+vals>=v->pcm_storage){
v->pcm_storage=v->pcm_current+vals*2;
 
for(i=0;i<vi->channels;i++){
v->pcm[i]=_ogg_realloc(v->pcm[i],v->pcm_storage*sizeof(*v->pcm[i]));
}
}
 
for(i=0;i<vi->channels;i++)
v->pcmret[i]=v->pcm[i]+v->pcm_current;
 
return(v->pcmret);
}
 
static void _preextrapolate_helper(vorbis_dsp_state *v){
int i;
int order=16;
float *lpc=alloca(order*sizeof(*lpc));
float *work=alloca(v->pcm_current*sizeof(*work));
long j;
v->preextrapolate=1;
 
if(v->pcm_current-v->centerW>order*2){ /* safety */
for(i=0;i<v->vi->channels;i++){
/* need to run the extrapolation in reverse! */
for(j=0;j<v->pcm_current;j++)
work[j]=v->pcm[i][v->pcm_current-j-1];
 
/* prime as above */
vorbis_lpc_from_data(work,lpc,v->pcm_current-v->centerW,order);
 
#if 0
if(v->vi->channels==2){
if(i==0)
_analysis_output("predataL",0,work,v->pcm_current-v->centerW,0,0,0);
else
_analysis_output("predataR",0,work,v->pcm_current-v->centerW,0,0,0);
}else{
_analysis_output("predata",0,work,v->pcm_current-v->centerW,0,0,0);
}
#endif
 
/* run the predictor filter */
vorbis_lpc_predict(lpc,work+v->pcm_current-v->centerW-order,
order,
work+v->pcm_current-v->centerW,
v->centerW);
 
for(j=0;j<v->pcm_current;j++)
v->pcm[i][v->pcm_current-j-1]=work[j];
 
}
}
}
 
 
/* call with val<=0 to set eof */
 
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;
float *lpc=alloca(order*sizeof(*lpc));
 
/* if it wasn't done earlier (very short sample) */
if(!v->preextrapolate)
_preextrapolate_helper(v);
 
/* We're encoding the end of the stream. Just make sure we have
[at least] a few full blocks of zeroes at the end. */
/* actually, we don't want zeroes; that could drop a large
amplitude off a cliff, creating spread spectrum noise that will
suck to encode. Extrapolate for the sake of cleanliness. */
 
vorbis_analysis_buffer(v,ci->blocksizes[1]*3);
v->eofflag=v->pcm_current;
v->pcm_current+=ci->blocksizes[1]*3;
 
for(i=0;i<vi->channels;i++){
if(v->eofflag>order*2){
/* extrapolate with LPC to fill in */
long n;
 
/* make a predictor filter */
n=v->eofflag;
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 */
vorbis_lpc_predict(lpc,v->pcm[i]+v->eofflag-order,order,
v->pcm[i]+v->eofflag,v->pcm_current-v->eofflag);
}else{
/* not enough data to extrapolate (unlikely to happen due to
guarding the overlap, but bulletproof in case that
assumtion goes away). zeroes will do. */
memset(v->pcm[i]+v->eofflag,0,
(v->pcm_current-v->eofflag)*sizeof(*v->pcm[i]));
 
}
}
}else{
 
if(v->pcm_current+vals>v->pcm_storage)
return(OV_EINVAL);
 
v->pcm_current+=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>ci->blocksizes[1])
_preextrapolate_helper(v);
 
}
return(0);
}
 
/* do the deltas, envelope shaping, pre-echo and determine the size of
the next block on which to continue analysis */
int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb){
int i;
vorbis_info *vi=v->vi;
codec_setup_info *ci=vi->codec_setup;
private_state *b=v->backend_state;
vorbis_look_psy_global *g=b->psy_g_look;
long beginW=v->centerW-ci->blocksizes[v->W]/2,centerNext;
vorbis_block_internal *vbi=(vorbis_block_internal *)vb->internal;
 
/* check to see if we're started... */
if(!v->preextrapolate)return(0);
 
/* check to see if we're done... */
if(v->eofflag==-1)return(0);
 
/* By our invariant, we have lW, W and centerW set. Search for
the next boundary so we can determine nW (the next window size)
which lets us compute the shape of the current block's window */
 
/* we do an envelope search even on a single blocksize; we may still
be throwing more bits at impulses, and envelope search handles
marking impulses too. */
{
long bp=_ve_envelope_search(v);
if(bp==-1){
 
if(v->eofflag==0)return(0); /* not enough data currently to search for a
full long block */
v->nW=0;
}else{
 
if(ci->blocksizes[0]==ci->blocksizes[1])
v->nW=0;
else
v->nW=bp;
}
}
 
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+ci->blocksizes[v->nW]/2;
if(v->pcm_current<blockbound)return(0); /* not enough data yet;
although this check is
less strict that the
_ve_envelope_search,
the search is not run
if we only use one
block size */
 
 
}
 
/* fill in the block. Note that for a short window, lW and nW are *short*
regardless of actual settings in the stream */
 
_vorbis_block_ripcord(vb);
vb->lW=v->lW;
vb->W=v->W;
vb->nW=v->nW;
 
if(v->W){
if(!v->lW || !v->nW){
vbi->blocktype=BLOCKTYPE_TRANSITION;
/*fprintf(stderr,"-");*/
}else{
vbi->blocktype=BLOCKTYPE_LONG;
/*fprintf(stderr,"_");*/
}
}else{
if(_ve_envelope_mark(v)){
vbi->blocktype=BLOCKTYPE_IMPULSE;
/*fprintf(stderr,"|");*/
 
}else{
vbi->blocktype=BLOCKTYPE_PADDING;
/*fprintf(stderr,".");*/
 
}
}
 
vb->vd=v;
vb->sequence=v->sequence++;
vb->granulepos=v->granulepos;
vb->pcmend=ci->blocksizes[v->W];
 
/* copy the vectors; this uses the local storage in vb */
 
/* this tracks 'strongest peak' for later psychoacoustics */
/* moved to the global psy state; clean this mess up */
if(vbi->ampmax>g->ampmax)g->ampmax=vbi->ampmax;
g->ampmax=_vp_ampmax_decay(g->ampmax,v);
vbi->ampmax=g->ampmax;
 
vb->pcm=_vorbis_block_alloc(vb,sizeof(*vb->pcm)*vi->channels);
vbi->pcmdelay=_vorbis_block_alloc(vb,sizeof(*vbi->pcmdelay)*vi->channels);
for(i=0;i<vi->channels;i++){
vbi->pcmdelay[i]=
_vorbis_block_alloc(vb,(vb->pcmend+beginW)*sizeof(*vbi->pcmdelay[i]));
memcpy(vbi->pcmdelay[i],v->pcm[i],(vb->pcmend+beginW)*sizeof(*vbi->pcmdelay[i]));
vb->pcm[i]=vbi->pcmdelay[i]+beginW;
 
/* before we added the delay
vb->pcm[i]=_vorbis_block_alloc(vb,vb->pcmend*sizeof(*vb->pcm[i]));
memcpy(vb->pcm[i],v->pcm[i]+beginW,ci->blocksizes[v->W]*sizeof(*vb->pcm[i]));
*/
 
}
 
/* handle eof detection: eof==0 means that we've not yet received EOF
eof>0 marks the last 'real' sample in pcm[]
eof<0 'no more to do'; doesn't get here */
 
if(v->eofflag){
if(v->centerW>=v->eofflag){
v->eofflag=-1;
vb->eofflag=1;
return(1);
}
}
 
/* advance storage vectors and clean up */
{
int new_centerNext=ci->blocksizes[1]/2;
int movementW=centerNext-new_centerNext;
 
if(movementW>0){
 
_ve_envelope_shift(b->ve,movementW);
v->pcm_current-=movementW;
 
for(i=0;i<vi->channels;i++)
memmove(v->pcm[i],v->pcm[i]+movementW,
v->pcm_current*sizeof(*v->pcm[i]));
 
 
v->lW=v->W;
v->W=v->nW;
v->centerW=new_centerNext;
 
if(v->eofflag){
v->eofflag-=movementW;
if(v->eofflag<=0)v->eofflag=-1;
/* do not add padding to end of stream! */
if(v->centerW>=v->eofflag){
v->granulepos+=movementW-(v->centerW-v->eofflag);
}else{
v->granulepos+=movementW;
}
}else{
v->granulepos+=movementW;
}
}
}
 
/* done */
return(1);
}
 
int vorbis_synthesis_restart(vorbis_dsp_state *v){
vorbis_info *vi=v->vi;
codec_setup_info *ci;
int hs;
 
if(!v->backend_state)return -1;
if(!vi)return -1;
ci=vi->codec_setup;
if(!ci)return -1;
hs=ci->halfrate_flag;
 
v->centerW=ci->blocksizes[1]>>(hs+1);
v->pcm_current=v->centerW>>hs;
 
v->pcm_returned=-1;
v->granulepos=-1;
v->sequence=-1;
v->eofflag=0;
((private_state *)(v->backend_state))->sample_count=-1;
 
return(0);
}
 
int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi){
if(_vds_shared_init(v,vi,0)){
vorbis_dsp_clear(v);
return 1;
}
vorbis_synthesis_restart(v);
return 0;
}
 
/* Unlike in analysis, the window is only partially applied for each
block. The time domain envelope is not yet handled at the point of
calling (as it relies on the previous block). */
 
int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){
vorbis_info *vi=v->vi;
codec_setup_info *ci=vi->codec_setup;
private_state *b=v->backend_state;
int hs=ci->halfrate_flag;
int i,j;
 
if(!vb)return(OV_EINVAL);
if(v->pcm_current>v->pcm_returned && v->pcm_returned!=-1)return(OV_EINVAL);
 
v->lW=v->W;
v->W=vb->W;
v->nW=-1;
 
if((v->sequence==-1)||
(v->sequence+1 != vb->sequence)){
v->granulepos=-1; /* out of sequence; lose count */
b->sample_count=-1;
}
 
v->sequence=vb->sequence;
 
if(vb->pcm){ /* no pcm to process if vorbis_synthesis_trackonly
was called on block */
int n=ci->blocksizes[v->W]>>(hs+1);
int n0=ci->blocksizes[0]>>(hs+1);
int n1=ci->blocksizes[1]>>(hs+1);
 
int thisCenter;
int prevCenter;
 
v->glue_bits+=vb->glue_bits;
v->time_bits+=vb->time_bits;
v->floor_bits+=vb->floor_bits;
v->res_bits+=vb->res_bits;
 
if(v->centerW){
thisCenter=n1;
prevCenter=0;
}else{
thisCenter=0;
prevCenter=n1;
}
 
/* v->pcm is now used like a two-stage double buffer. We don't want
to have to constantly shift *or* adjust memory usage. Don't
accept a new block until the old is shifted out */
 
for(j=0;j<vi->channels;j++){
/* the overlap/add section */
if(v->lW){
if(v->W){
/* large/large */
const float *w=_vorbis_window_get(b->window[1]-hs);
float *pcm=v->pcm[j]+prevCenter;
float *p=vb->pcm[j];
for(i=0;i<n1;i++)
pcm[i]=pcm[i]*w[n1-i-1] + p[i]*w[i];
}else{
/* large/small */
const float *w=_vorbis_window_get(b->window[0]-hs);
float *pcm=v->pcm[j]+prevCenter+n1/2-n0/2;
float *p=vb->pcm[j];
for(i=0;i<n0;i++)
pcm[i]=pcm[i]*w[n0-i-1] +p[i]*w[i];
}
}else{
if(v->W){
/* small/large */
const float *w=_vorbis_window_get(b->window[0]-hs);
float *pcm=v->pcm[j]+prevCenter;
float *p=vb->pcm[j]+n1/2-n0/2;
for(i=0;i<n0;i++)
pcm[i]=pcm[i]*w[n0-i-1] +p[i]*w[i];
for(;i<n1/2+n0/2;i++)
pcm[i]=p[i];
}else{
/* small/small */
const float *w=_vorbis_window_get(b->window[0]-hs);
float *pcm=v->pcm[j]+prevCenter;
float *p=vb->pcm[j];
for(i=0;i<n0;i++)
pcm[i]=pcm[i]*w[n0-i-1] +p[i]*w[i];
}
}
 
/* the copy section */
{
float *pcm=v->pcm[j]+thisCenter;
float *p=vb->pcm[j]+n;
for(i=0;i<n;i++)
pcm[i]=p[i];
}
}
 
if(v->centerW)
v->centerW=0;
else
v->centerW=n1;
 
/* deal with initial packet state; we do this using the explicit
pcm_returned==-1 flag otherwise we're sensitive to first block
being short or long */
 
if(v->pcm_returned==-1){
v->pcm_returned=thisCenter;
v->pcm_current=thisCenter;
}else{
v->pcm_returned=prevCenter;
v->pcm_current=prevCenter+
((ci->blocksizes[v->lW]/4+
ci->blocksizes[v->W]/4)>>hs);
}
 
}
 
/* track the frame number... This is for convenience, but also
making sure our last packet doesn't end with added padding. If
the last packet is partial, the number of samples we'll have to
return will be past the vb->granulepos.
 
This is not foolproof! It will be confused if we begin
decoding at the last page after a seek or hole. In that case,
we don't have a starting point to judge where the last frame
is. For this reason, vorbisfile will always try to make sure
it reads the last two marked pages in proper sequence */
 
if(b->sample_count==-1){
b->sample_count=0;
}else{
b->sample_count+=ci->blocksizes[v->lW]/4+ci->blocksizes[v->W]/4;
}
 
if(v->granulepos==-1){
if(vb->granulepos!=-1){ /* only set if we have a position to set to */
 
v->granulepos=vb->granulepos;
 
/* is this a short page? */
if(b->sample_count>v->granulepos){
/* corner case; if this is both the first and last audio page,
then spec says the end is cut, not beginning */
long extra=b->sample_count-vb->granulepos;
 
/* we use ogg_int64_t for granule positions because a
uint64 isn't universally available. Unfortunately,
that means granposes can be 'negative' and result in
extra being negative */
if(extra<0)
extra=0;
 
if(vb->eofflag){
/* trim the end */
/* no preceding granulepos; assume we started at zero (we'd
have to in a short single-page stream) */
/* granulepos could be -1 due to a seek, but that would result
in a long count, not short count */
 
/* Guard against corrupt/malicious frames that set EOP and
a backdated granpos; don't rewind more samples than we
actually have */
if(extra > (v->pcm_current - v->pcm_returned)<<hs)
extra = (v->pcm_current - v->pcm_returned)<<hs;
 
v->pcm_current-=extra>>hs;
}else{
/* trim the beginning */
v->pcm_returned+=extra>>hs;
if(v->pcm_returned>v->pcm_current)
v->pcm_returned=v->pcm_current;
}
 
}
 
}
}else{
v->granulepos+=ci->blocksizes[v->lW]/4+ci->blocksizes[v->W]/4;
if(vb->granulepos!=-1 && v->granulepos!=vb->granulepos){
 
if(v->granulepos>vb->granulepos){
long extra=v->granulepos-vb->granulepos;
 
if(extra)
if(vb->eofflag){
/* partial last frame. Strip the extra samples off */
 
/* Guard against corrupt/malicious frames that set EOP and
a backdated granpos; don't rewind more samples than we
actually have */
if(extra > (v->pcm_current - v->pcm_returned)<<hs)
extra = (v->pcm_current - v->pcm_returned)<<hs;
 
/* we use ogg_int64_t for granule positions because a
uint64 isn't universally available. Unfortunately,
that means granposes can be 'negative' and result in
extra being negative */
if(extra<0)
extra=0;
 
v->pcm_current-=extra>>hs;
} /* else {Shouldn't happen *unless* the bitstream is out of
spec. Either way, believe the bitstream } */
} /* else {Shouldn't happen *unless* the bitstream is out of
spec. Either way, believe the bitstream } */
v->granulepos=vb->granulepos;
}
}
 
/* Update, cleanup */
 
if(vb->eofflag)v->eofflag=1;
return(0);
 
}
 
/* pcm==NULL indicates we just want the pending samples, no more */
int vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm){
vorbis_info *vi=v->vi;
 
if(v->pcm_returned>-1 && v->pcm_returned<v->pcm_current){
if(pcm){
int i;
for(i=0;i<vi->channels;i++)
v->pcmret[i]=v->pcm[i]+v->pcm_returned;
*pcm=v->pcmret;
}
return(v->pcm_current-v->pcm_returned);
}
return(0);
}
 
int vorbis_synthesis_read(vorbis_dsp_state *v,int n){
if(n && v->pcm_returned+n>v->pcm_current)return(OV_EINVAL);
v->pcm_returned+=n;
return(0);
}
 
/* intended for use with a specific vorbisfile feature; we want access
to the [usually synthetic/postextrapolated] buffer and lapping at
the end of a decode cycle, specifically, a half-short-block worth.
This funtion works like pcmout above, except it will also expose
this implicit buffer data not normally decoded. */
int vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm){
vorbis_info *vi=v->vi;
codec_setup_info *ci=vi->codec_setup;
int hs=ci->halfrate_flag;
 
int n=ci->blocksizes[v->W]>>(hs+1);
int n0=ci->blocksizes[0]>>(hs+1);
int n1=ci->blocksizes[1]>>(hs+1);
int i,j;
 
if(v->pcm_returned<0)return 0;
 
/* our returned data ends at pcm_returned; because the synthesis pcm
buffer is a two-fragment ring, that means our data block may be
fragmented by buffering, wrapping or a short block not filling
out a buffer. To simplify things, we unfragment if it's at all
possibly needed. Otherwise, we'd need to call lapout more than
once as well as hold additional dsp state. Opt for
simplicity. */
 
/* centerW was advanced by blockin; it would be the center of the
*next* block */
if(v->centerW==n1){
/* the data buffer wraps; swap the halves */
/* slow, sure, small */
for(j=0;j<vi->channels;j++){
float *p=v->pcm[j];
for(i=0;i<n1;i++){
float temp=p[i];
p[i]=p[i+n1];
p[i+n1]=temp;
}
}
 
v->pcm_current-=n1;
v->pcm_returned-=n1;
v->centerW=0;
}
 
/* solidify buffer into contiguous space */
if((v->lW^v->W)==1){
/* long/short or short/long */
for(j=0;j<vi->channels;j++){
float *s=v->pcm[j];
float *d=v->pcm[j]+(n1-n0)/2;
for(i=(n1+n0)/2-1;i>=0;--i)
d[i]=s[i];
}
v->pcm_returned+=(n1-n0)/2;
v->pcm_current+=(n1-n0)/2;
}else{
if(v->lW==0){
/* short/short */
for(j=0;j<vi->channels;j++){
float *s=v->pcm[j];
float *d=v->pcm[j]+n1-n0;
for(i=n0-1;i>=0;--i)
d[i]=s[i];
}
v->pcm_returned+=n1-n0;
v->pcm_current+=n1-n0;
}
}
 
if(pcm){
int i;
for(i=0;i<vi->channels;i++)
v->pcmret[i]=v->pcm[i]+v->pcm_returned;
*pcm=v->pcmret;
}
 
return(n1+n-v->pcm_returned);
 
}
 
const float *vorbis_window(vorbis_dsp_state *v,int W){
vorbis_info *vi=v->vi;
codec_setup_info *ci=vi->codec_setup;
int hs=ci->halfrate_flag;
private_state *b=v->backend_state;
 
if(b->window[W]-1<0)return NULL;
return _vorbis_window_get(b->window[W]-hs);
}
/contrib/sdk/sources/libvorbis-1.3.7/lib/books/coupled/res_books_51.h
0,0 → 1,12273
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
*
* function: static codebooks for 5.1 surround
*
********************************************************************/
 
static const long _vq_quantlist__44p0_l0_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44p0_l0_0[] = {
1, 3, 4, 7, 7, 8, 8, 9, 9, 9,10,10,10, 5, 6, 5,
8, 7, 9, 8, 9, 9,10, 9,11,10, 5, 5, 7, 7, 8, 8,
9, 9, 9, 9,10,10,11, 8, 9, 8,10, 9,10, 9,10, 9,
11,10,11,10, 8, 8, 9, 9,10, 9,10, 9,11,10,11,10,
11,10,11,11,11,11,11,11,11,11,11,11,11,11,10,11,
11,11,12,11,11,11,11,11,11,10,12,12,12,12,12,12,
12,11,12,12,12,11,11,11,12,12,12,12,12,12,12,11,
12,11,12,11,11,13,12,12,12,13,12,12,12,12,11,12,
11,11,13,13,13,12,12,12,12,12,12,11,11,11,10,13,
13,13,12,13,12,13,11,13,10,12,11,11,13,13,12,13,
12,12,12,12,11,12,11,11,11,
};
 
static const static_codebook _44p0_l0_0 = {
2, 169,
(char *)_vq_lengthlist__44p0_l0_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44p0_l0_0,
0
};
 
static const long _vq_quantlist__44p0_l0_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p0_l0_1[] = {
1, 4, 4, 6, 6, 5, 5, 5, 7, 5, 5, 5, 5, 6, 7, 7,
6, 7, 7, 7, 6, 7, 7, 7, 7,
};
 
static const static_codebook _44p0_l0_1 = {
2, 25,
(char *)_vq_lengthlist__44p0_l0_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p0_l0_1,
0
};
 
static const long _vq_quantlist__44p0_l1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p0_l1_0[] = {
1, 4, 4, 4, 4, 4, 4, 4, 4,
};
 
static const static_codebook _44p0_l1_0 = {
2, 9,
(char *)_vq_lengthlist__44p0_l1_0,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44p0_l1_0,
0
};
 
static const char _huff_lengthlist__44p0_lfe[] = {
1, 3, 2, 3,
};
 
static const static_codebook _huff_book__44p0_lfe = {
2, 4,
(char *)_huff_lengthlist__44p0_lfe,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44p0_long[] = {
2, 3, 6, 7,10,14,16, 3, 2, 5, 7,11,14,17, 6, 5,
5, 7,10,12,14, 7, 7, 6, 6, 7, 9,13,10,11, 9, 6,
6, 9,11,15,15,13,10, 9,10,12,18,18,16,14,12,13,
16,
};
 
static const static_codebook _huff_book__44p0_long = {
2, 49,
(char *)_huff_lengthlist__44p0_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p0_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p0_p1_0[] = {
1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44p0_p1_0 = {
5, 243,
(char *)_vq_lengthlist__44p0_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p0_p1_0,
0
};
 
static const long _vq_quantlist__44p0_p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p0_p2_0[] = {
1, 5, 5, 0, 7, 7, 0, 8, 8, 0, 9, 9, 0,12,12, 0,
8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 0, 6, 6, 0,11,
11, 0,12,12, 0,12,12, 0,15,15, 0,11,11, 0,12,12,
0,15,15, 0,12,12, 0, 5, 5, 0, 5, 5, 0, 6, 6, 0,
7, 7, 0,11,11, 0, 6, 6, 0, 7, 7, 0,10,11, 0, 6,
6, 0, 7, 7, 0,11,11, 0,12,12, 0,11,11, 0,15,15,
0,10,10, 0,12,12, 0,15,15, 0,12,12, 0, 6, 6, 0,
12,12, 0,12,12, 0,12,12, 0,15,15, 0,11,11, 0,12,
12, 0,15,15, 0,12,12, 0, 0, 0, 0, 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, 8, 0,12,12, 0,12,12, 0,12,12, 0,15,
15, 0,12,12, 0,11,12, 0,15,16, 0,11,11, 0, 6, 6,
0,11,12, 0,12,12, 0,12,12, 0,16,15, 0,12,12, 0,
13,12, 0,15,14, 0,12,12, 0, 0, 0, 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 const static_codebook _44p0_p2_0 = {
5, 243,
(char *)_vq_lengthlist__44p0_p2_0,
1, -533200896, 1614282752, 2, 0,
(long *)_vq_quantlist__44p0_p2_0,
0
};
 
static const long _vq_quantlist__44p0_p2_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p0_p2_1[] = {
1, 3, 3, 0, 9, 9, 0, 9, 9, 0,10,10, 0, 9, 9, 0,
10,10, 0,10,10, 0, 9, 9, 0,10,10, 0, 7, 7, 0, 7,
7, 0, 6, 6, 0, 8, 8, 0, 7, 7, 0, 8, 8, 0, 8, 9,
0, 8, 8, 0, 8, 8, 0, 7, 7, 0, 9, 9, 0, 8, 8, 0,
10,10, 0, 9, 9, 0,10,10, 0,10,10, 0, 9, 9, 0,10,
10, 0, 9, 9, 0,11,11, 0,11,11, 0,12,12, 0,11,11,
0,12,12, 0,13,13, 0,12,12, 0,13,12, 0, 8, 8, 0,
12,12, 0,12,12, 0,13,13, 0,12,12, 0,13,13, 0,13,
13, 0,13,13, 0,13,13, 0, 7, 7, 0, 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, 9, 0,11,11, 0,12,12, 0,13,13, 0,12,
12, 0,13,13, 0,13,13, 0,12,12, 0,12,12, 0, 8, 8,
0,12,12, 0,12,12, 0,13,13, 0,13,13, 0,13,14, 0,
14,13, 0,13,13, 0,13,13, 0, 7, 7, 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 const static_codebook _44p0_p2_1 = {
5, 243,
(char *)_vq_lengthlist__44p0_p2_1,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p0_p2_1,
0
};
 
static const long _vq_quantlist__44p0_p3_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p0_p3_0[] = {
1, 6, 6, 7, 8, 8, 7, 8, 8, 7, 9, 9,10,12,11, 9,
8, 8, 7, 9, 9,11,12,12, 9, 9, 9, 6, 7, 7,10,11,
11,10,11,11,10,11,11,13,13,14,12,12,12,11,11,11,
14,14,14,12,12,12, 6, 5, 5, 9, 6, 5, 9, 6, 6, 9,
7, 7,12,10,10,11, 6, 6,10, 7, 7,13,10,10,12, 7,
7, 7, 8, 8,12,10,10,12,10,10,11,10,10,15,13,13,
13, 9, 9,12,11,11,16,13,13,15,11,11, 8, 7, 7,12,
12,12,12,11,11,12,11,11,14,14,14,14,12,12,12,12,
12,16,15,15,14,12,12, 0,10,10, 0,12,12, 0,12,12,
0,11,11, 0,14,14, 0,11,11, 0,12,12, 0,15,15, 0,
11,11, 8, 8, 8,13,11,11,13,10,10,13,11,11,15,13,
13,14,11,11,12,10,10,16,14,14,14,10,10, 9, 7, 7,
13,11,11,13,11,11,12,11,11,16,14,14,14,12,12,13,
12,12,15,14,14,15,13,12, 0,11,11, 0,12,12, 0,12,
12, 0,12,12, 0,15,15, 0,12,12, 0,13,12, 0,14,15,
0,12,12,
};
 
static const static_codebook _44p0_p3_0 = {
5, 243,
(char *)_vq_lengthlist__44p0_p3_0,
1, -531365888, 1616117760, 2, 0,
(long *)_vq_quantlist__44p0_p3_0,
0
};
 
static const long _vq_quantlist__44p0_p3_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p0_p3_1[] = {
2, 4, 4, 8, 8,10,12,12,11,11, 9,11,11,12,13,11,
12,12,11,11,11,12,12,12,12,10,13,12,13,13,11,12,
12,13,13,11,12,12,13,13,11,12,13,13,13,11,13,13,
13,13,10,13,13,12,13,11,12,12,14,14,11,13,12,12,
12,11,12,12,13,13,11,13,13,12,12,11,13,13,13,13,
11,12,12,13,13,11,13,13,12,12,11,12,12,13,13,11,
13,13,12,12,11,13,13,13,13,11,12,12,14,14,11,13,
13,12,12,11,12,12,13,13,11,13,13,12,12,11,10,10,
10,10,12,10,10,11,11,11, 8, 8,11,11,13,10,10,10,
10,12,10,10,10,10,13,11,11,11,11,13,10,10,11,11,
13,11,11,12,12,13,11,11,11,11,13,11,11,12,12,13,
11,11,12,12,13,10,10,11,11,13,11,11,11,11,13,11,
10,11,11,13,11,11,11,11,13,11,11,11,11,13,10,10,
11,11,13,11,11,11,11,12,10,11,11,11,13,11,11,11,
11,13,11,11,11,11,13,10,10,11,11,13,11,11,11,11,
13,11,11,11,11,13,11,11,11,11,11,10,10,10,10,12,
10,10, 9, 9,12,12,12,11,11,13,12,12, 9, 9,13,12,
12,10,10,12,12,12,12,12,13,13,13,14,14,13,12,12,
11,11,13,13,13,12,12,13,12,12,11,11,13,12,13,11,
11,13,13,13,14,14,13,12,12,10,10,13,13,13,11,11,
13,12,12,10,10,13,13,13,11,11,13,13,13,14,14,13,
12,12,10,10,13,13,13,11,11,13,12,13,10,10,13,13,
13,11,11,13,13,13,14,14,13,12,12,10,10,13,13,13,
11,11,13,13,12,10,10,14,12,12, 8, 8,14,12,12, 9,
9,14,11,11, 9, 9,14,12,12, 8, 8,14,11,11, 7, 7,
14,13,13,10,10,15,12,12,10,10,15,13,13,10,10,15,
12,12, 9, 9,15,13,13,10,10,15,13,13,10,10,15,12,
12,10,10,15,13,13,10,10,14,12,12, 9, 9,14,13,13,
9, 9,14,13,13, 9, 9,15,12,12, 9, 9,15,13,13, 9,
9,14,12,12, 9, 9,14,13,13, 9, 9,14,13,13, 9, 9,
15,12,12, 9, 9,14,13,13, 9, 9,14,12,12, 9, 9,14,
13,13, 9, 9,13,12,12, 8, 8,13,13,13, 8, 8,14,13,
13, 9, 9,13,13,13, 7, 7,14,13,13, 8, 8,14,14,14,
10,10,14,14,14,11,11,14,14,14, 9, 9,14,14,14,10,
10,14,14,14, 9, 9,14,14,14,10, 9,15,14,14,11,11,
14,14,14, 9, 9,14,14,14,10,10,14,14,14, 9, 9,14,
14,14, 9, 9,15,14,14,11,11,14,14,14, 8, 8,14,14,
14, 9, 9,14,14,14, 8, 8,14,14,14, 9, 9,15,14,14,
11,11,14,14,14, 8, 8,14,14,14, 9, 9,14,14,14, 8,
8,12,12,12,13,13,16,15,15,11,11,16,15,16,12,12,
17,16,16,11,11,17,15,15,12,11,16,16,16,12,13,16,
15,15,13,13,16,16,16,12,12,16,16,15,13,13,16,16,
16,12,12,16,16,16,13,13,17,16,16,14,14,17,17,16,
12,12,17,16,16,13,13,17,17,16,12,13,16,16,17,13,
12,17,16,16,14,13,17,16,16,12,12,17,16,16,12,12,
17,16,17,12,12,17,17,17,13,13,16,16,16,13,14,17,
17,16,12,12,16,16,16,13,13,17,17,17,12,12,13,14,
14,10,10,16,14,14,12,12,16,15,15,14,14,16,14,14,
12,12,15,14,14,13,13,17,15,15,14,13,16,16,15,15,
15,16,15,15,14,14,16,15,15,14,14,17,15,15,14,14,
16,15,15,14,14,16,16,15,15,15,17,15,15,13,13,16,
15,15,14,14,17,15,15,13,13,17,15,15,14,14,16,15,
15,15,15,16,14,14,13,13,16,15,15,14,14,16,14,14,
13,13,17,15,15,14,14,16,16,15,15,15,17,14,14,13,
13,16,15,15,14,14,17,14,14,13,13,13,11,11,10,10,
16,14,14,13,13,15,14,14,13,13,16,14,14,12,12,16,
14,14,12,12,15,15,15,14,14,16,14,14,14,14,16,15,
14,14,14,16,14,14,14,14,16,15,15,14,13,16,15,15,
14,14,16,14,14,14,14,17,15,15,14,14,16,14,14,14,
14,16,15,15,13,14,16,15,15,14,14,16,14,14,14,14,
16,15,15,13,13,16,14,14,13,13,16,15,15,13,13,16,
15,15,14,14,16,14,14,14,14,17,15,15,13,13,16,15,
14,13,13,17,15,15,13,13,14,14,14, 9, 9,14,14,14,
17,17,14,15,15,18,18,14,14,14,18,19,14,14,14,18,
18,15,15,15,19,18,15,16,15,18,20,15,15,15,18,19,
15,15,15,19,19,15,15,15,18,20,15,15,15,18,19,15,
15,16,20,18,15,15,15,18,18,15,15,15,19,19,15,15,
15,18,19,15,15,15,18,19,15,15,15,19,19,14,15,14,
19,19,15,15,15,20,19,15,14,14,19,18,14,15,15,18,
19,15,15,16,20,20,14,14,14,18,19,15,15,15,19,18,
14,14,14,18,18,14,12,12, 9, 9,13,14,14,18,18,14,
13,13,18,19,14,14,14,18,18,14,14,14,18,18,15,15,
15,19,19,15,14,14,19,18,14,15,15,19,18,15,14,14,
18,18,15,15,15,19,18,14,15,15,19,19,15,14,14,19,
18,14,15,15,19,18,15,14,14,19,18,14,15,15,19,18,
15,15,15,21,18,15,14,14,19,18,14,15,15,18,19,14,
15,14,20,19,14,15,15,18,19,14,15,15,19,19,15,14,
14,19,20,14,15,15,18,18,14,14,14,19,19,14,15,15,
19,18,12,12,12,13,13,16,15,15,11,11,16,15,15,12,
12,16,16,16,11,11,16,15,15,11,11,16,16,16,13,13,
17,16,16,13,13,17,17,17,12,12,16,16,16,13,13,17,
16,17,13,12,15,16,16,12,12,16,15,15,13,13,17,16,
16,12,12,16,16,15,12,12,16,16,16,12,12,17,17,16,
13,12,16,16,16,13,13,17,16,16,12,12,17,16,16,12,
12,17,17,16,12,12,16,17,16,12,12,17,15,15,13,13,
17,16,16,12,12,16,16,16,12,12,16,16,16,12,12,13,
13,13, 9, 9,15,14,14,13,13,16,15,14,14,14,16,14,
14,13,13,15,14,14,13,13,17,15,15,14,14,16,15,15,
15,15,16,15,15,14,14,16,15,15,15,15,17,15,15,14,
14,16,15,15,14,14,16,15,15,15,15,17,14,15,14,14,
16,15,15,14,14,17,15,15,13,14,17,15,15,14,14,16,
15,15,15,15,17,14,14,13,13,16,15,15,14,14,17,14,
14,13,13,17,15,15,14,14,16,15,16,15,15,17,14,14,
13,13,16,15,15,14,14,18,14,14,13,13,13,11,11,11,
11,15,14,14,12,12,15,14,14,13,13,16,14,14,12,12,
16,13,14,12,12,16,15,15,13,13,16,14,14,14,14,16,
15,15,13,13,16,14,14,13,13,16,14,15,13,13,15,15,
15,13,13,16,14,14,14,13,16,14,14,13,13,16,14,14,
13,13,16,15,15,13,13,16,15,15,13,13,16,14,14,14,
14,16,15,15,12,12,16,14,14,13,13,16,15,15,12,12,
16,15,15,13,13,16,14,14,14,14,17,15,14,12,12,16,
14,14,13,13,16,15,15,12,12,14,14,14, 8, 8,14,14,
14,17,18,14,15,15,17,18,14,14,14,17,18,14,14,14,
18,18,14,15,15,18,18,14,16,15,19,19,15,15,15,18,
19,15,16,15,20,19,15,15,15,18,18,14,15,15,18,19,
15,16,16,20,19,15,15,15,19,17,14,15,15,20,18,14,
15,15,18,18,14,15,15,18,19,14,15,15,19,20,14,14,
14,18,18,14,15,15,18,19,14,14,14,18,19,14,15,15,
19,18,15,16,16,20,21,14,14,15,19,19,14,15,15,19,
19,14,14,14,19,18,13,12,12, 9, 9,13,14,14,18,19,
14,14,14,18,19,14,14,14,18,18,14,14,14,18,18,14,
15,15,19,19,15,14,14,19,18,15,15,15,19,19,15,14,
14,19,20,14,15,15,18,19,14,15,15,20,18,15,14,14,
18,18,14,15,15,18,18,14,14,14,19,19,14,15,15,18,
18,14,15,15,19,18,15,14,14,19,19,14,15,15,19,18,
15,14,14,19,18,14,14,15,18,19,14,15,15,19,18,15,
14,14,18,19,14,15,14,19,20,14,14,14,19,19,14,15,
15,19,19,12,12,12,13,13,16,16,16,11,11,16,16,16,
12,12,17,16,16,11,11,17,15,15,11,11,16,16,16,13,
13,17,15,16,13,13,16,16,16,12,12,17,16,16,13,13,
17,17,16,12,12,17,17,16,13,13,17,16,16,13,13,17,
17,17,12,12,17,16,16,13,13,17,17,17,12,12,16,16,
16,12,12,17,15,15,13,13,17,16,16,11,11,17,16,16,
12,12,16,16,16,11,11,16,17,16,12,12,17,16,16,13,
13,17,17,16,12,12,17,17,16,12,12,17,16,16,11,11,
13,14,14, 9, 9,16,14,14,13,13,16,14,15,14,14,16,
14,14,12,12,16,14,14,13,13,17,15,15,14,14,16,15,
15,15,15,17,15,15,14,14,16,15,15,14,14,17,15,15,
14,14,16,15,15,14,14,16,15,15,15,16,17,14,15,14,
14,16,15,15,14,14,17,15,15,14,14,16,15,15,14,14,
16,15,15,15,15,17,14,14,13,13,16,15,15,14,14,16,
14,14,13,13,17,15,15,14,14,16,16,15,15,15,17,14,
14,13,13,16,15,15,14,14,17,14,14,13,13,13,11,11,
10,10,16,14,14,12,12,15,13,13,13,12,16,14,14,11,
11,16,14,14,11,11,16,14,15,13,14,16,14,14,13,13,
16,15,15,13,13,16,14,14,13,13,16,15,15,13,13,16,
15,15,13,13,17,14,14,14,14,17,15,15,13,13,16,14,
15,13,13,16,15,15,13,13,16,15,15,13,13,16,14,14,
13,13,17,15,15,12,12,16,14,14,12,12,16,15,15,12,
12,16,15,15,13,13,16,14,14,13,13,17,15,15,12,12,
17,14,14,12,12,16,15,15,12,12,13,14,14, 8, 8,13,
14,14,18,18,13,15,15,17,18,14,14,14,18,19,14,14,
14,19,18,14,15,15,19,18,15,15,16,21,18,15,15,15,
19,19,14,16,16,19,19,14,15,15,18,19,14,15,15,19,
20,14,16,16,19,18,15,15,15,18,19,14,15,15,19,18,
15,15,15,18,18,15,15,15,20,18,15,16,16,20,19,14,
15,14,18,19,14,15,16,19,20,14,15,15,19,18,15,15,
15,19,18,15,16,16,20,19,15,14,14,18,18,14,15,15,
19,19,14,15,15,18,18,13,12,12, 8, 8,13,14,14,19,
18,14,13,13,20,18,14,14,14,19,18,14,13,13,18,19,
14,15,15,20,19,15,14,14,19,19,14,15,15,19,18,15,
14,14,20,20,15,15,15,19,18,14,15,15,19,18,15,14,
14,19,18,14,15,15,20,19,14,14,14,20,19,14,15,15,
19,18,15,15,15,18,18,15,14,14,18,18,14,15,15,19,
19,14,14,14,19,19,14,15,15,19,19,15,15,15,19,18,
15,14,14,20,19,15,15,15,19,19,14,14,14,20,19,14,
15,15,20,20,12,12,12,13,13,17,16,16,11,11,16,16,
15,12,12,17,16,16,11,11,17,15,15,11,11,17,17,17,
13,13,17,16,16,13,13,17,17,17,12,12,17,16,16,13,
13,17,17,16,12,13,16,17,16,13,13,17,16,15,13,13,
17,16,16,12,12,17,16,16,12,13,17,16,17,12,12,17,
17,17,12,12,17,16,15,13,13,17,16,16,12,12,17,16,
16,12,12,17,16,16,11,11,16,16,16,12,12,17,15,15,
13,13,17,16,15,11,11,16,16,16,12,12,17,16,16,11,
11,13,14,14, 9, 9,16,14,14,13,13,16,14,15,14,14,
16,14,14,12,12,16,14,14,13,13,17,15,15,14,15,16,
15,15,15,15,17,15,15,14,14,16,15,15,15,14,16,15,
15,14,14,16,15,15,14,14,16,15,16,15,15,17,15,14,
14,14,16,15,15,14,14,17,15,15,13,13,16,15,15,14,
14,16,16,16,15,15,17,14,14,13,13,16,15,15,14,14,
18,14,15,13,13,16,15,15,14,14,16,16,15,15,15,16,
14,14,13,13,16,15,15,14,14,17,14,15,13,13,13,11,
11,10,10,15,14,14,12,12,15,14,14,13,13,16,14,14,
12,12,16,13,14,12,12,16,14,15,14,13,16,14,14,14,
14,16,15,15,13,13,16,14,14,13,13,16,15,15,13,13,
15,15,15,13,13,16,14,14,14,14,17,15,15,13,13,16,
14,14,13,13,16,15,15,13,13,16,15,15,13,13,16,14,
14,13,13,17,15,15,12,12,16,14,14,12,12,16,14,15,
12,12,16,15,15,13,13,16,14,14,13,13,17,15,15,12,
12,16,14,14,12,12,16,15,15,12,12,14,14,14, 8, 8,
14,14,14,17,17,14,15,15,18,18,14,14,14,18,17,14,
14,14,18,18,14,15,15,18,20,15,16,15,19,18,15,15,
15,19,18,15,15,16,19,18,15,15,15,18,18,14,15,15,
18,18,15,16,16,18,19,15,15,15,18,18,15,15,15,19,
20,15,15,15,18,18,15,15,15,18,18,15,16,16,19,19,
15,14,15,19,19,15,15,15,19,20,14,14,15,18,18,15,
15,15,19,19,15,16,16,19,19,15,15,14,18,19,15,15,
15,20,20,15,15,14,18,18,13,12,12, 8, 8,13,14,14,
18,18,14,14,14,18,18,14,14,14,18,20,14,14,14,18,
18,14,15,15,19,18,15,14,14,18,19,15,15,15,18,19,
15,14,14,18,19,15,15,15,18,18,14,15,14,18,19,15,
14,14,21,19,15,15,15,19,18,14,14,14,19,18,14,15,
15,19,18,15,15,15,20,19,15,14,14,20,18,14,15,15,
18,19,14,14,14,19,18,14,15,15,18,19,15,15,15,18,
19,15,14,14,19,19,15,15,15,19,19,14,14,14,19,20,
14,15,15,18,19,
};
 
static const static_codebook _44p0_p3_1 = {
5, 3125,
(char *)_vq_lengthlist__44p0_p3_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p0_p3_1,
0
};
 
static const long _vq_quantlist__44p0_p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p0_p4_0[] = {
2, 6, 6,14,14, 6, 8, 8,14,14, 7, 7, 7,14,14, 0,
13,13,15,16, 0,13,13,15,15, 7, 8, 8,15,15, 9,10,
10,16,16, 9, 8, 8,14,15, 0,13,13,17,17, 0,13,13,
16,16, 8, 8, 8,15,15,12,11,11,16,16, 9, 8, 8,14,
14, 0,13,13,17,17, 0,13,13,15,15, 0,14,14,16,16,
0, 0, 0,18,19, 0,12,12,16,15, 0,16,16, 0,20, 0,
14,14,16,16, 0,14,14,17,17, 0, 0, 0,19,19, 0,12,
12,15,15, 0,18,17,21,21, 0,14,14,16,16, 5, 7, 7,
12,13, 9,10, 9,14,14,11,10,10,14,14, 0, 0, 0,18,
17, 0,20,21,18,18, 9,10,10,14,14,12,12,12,17,16,
12,10,10,14,14, 0,20,20,18,17, 0,21,21,17,17,11,
10,10,14,14,15,13,13,18,18,13,11,11,14,14, 0,20,
0,18,18, 0,20,21,18,17, 0,21, 0,18,19, 0, 0, 0,
0,21, 0,21,20,16,17, 0, 0, 0,21,21, 0, 0, 0,20,
18, 0,20, 0,17,18, 0, 0, 0, 0, 0, 0, 0,20,16,17,
0, 0, 0,20, 0, 0, 0, 0,18,18, 6, 6, 6,13,13, 8,
5, 5,11,11, 9, 6, 6,13,13, 0, 9, 9,12,12, 0,10,
10,14,14, 9, 7, 7,13,13,12, 9, 9,13,13,10, 6, 6,
13,13, 0,10,10,14,14, 0,10,10,13,13, 9, 7, 7,13,
13,13,10,10,13,13,11, 6, 6,13,13, 0,10,10,15,15,
0,10,10,13,13, 0,12,11,15,15, 0,20,19,17,16, 0,
9, 9,13,13, 0,13,13,20,19, 0,11,11,13,13, 0,11,
11,15,15, 0,20,19,17,17, 0,10,10,13,13, 0,14,15,
0,21, 0,12,12,13,13, 0,10,10,12,12, 0,11,11,15,
15, 0,11,11,15,15, 0,15,15,20,20, 0,16,16, 0, 0,
0,11,11,15,15, 0,14,14,17,17, 0,11,11,15,15, 0,
15,15,20,21, 0,16,16,21,21, 0,12,12,15,15, 0,15,
15,18,20, 0,11,11,16,15, 0,15,15,21,21, 0,16,16,
0,21, 0,16,16, 0, 0, 0, 0, 0, 0, 0, 0,14,14,21,
21, 0,17,18, 0, 0, 0,16,17,20, 0, 0,16,16, 0, 0,
0, 0, 0, 0, 0, 0,15,15,20,20, 0,19,18, 0,21, 0,
18,17, 0, 0, 0,10,10,11,11, 0,10,10,10,10, 0,11,
11,12,12, 0,11,11, 9, 9, 0,13,13,12,12, 0,11,11,
12,12, 0,13,13,12,12, 0,10,10,12,12, 0,12,12,13,
13, 0,12,12,12,12, 0,11,11,12,12, 0,13,13,12,12,
0,10,10,12,12, 0,13,13,13,13, 0,12,12,12,12, 0,
14,13,13,13, 0,19,21,15,15, 0,12,11,12,12, 0,16,
15,19,19, 0,13,13,11,11, 0,13,13,13,13, 0, 0,21,
15,16, 0,12,12,12,12, 0,16,16,19,21, 0,13,13,12,
12, 7, 7, 7,16,16,11, 9, 9,16,16,12, 9, 9,16,16,
0,13,13,16,16, 0,14,14,17,16,11, 9, 9,16,16,14,
12,11,17,17,13, 8, 9,15,15, 0,13,13,19,19, 0,13,
13,16,15,12,10,10,17,17,15,12,12,19,18,14, 9, 9,
17,16, 0,14,14,18, 0, 0,14,13,16,16, 0,14,15,18,
17, 0,21, 0,19,21, 0,12,12,16,16, 0,16,16, 0, 0,
0,14,14,16,16, 0,14,14,18,18, 0, 0,21,20, 0, 0,
13,13,16,17, 0,18,18, 0, 0, 0,15,14,17,16, 8, 7,
7,14,14,11,10,10,15,15,13,10,10,15,15, 0,21,20,
19,19, 0,21, 0,17,18,11,10,10,15,16,14,12,12,18,
18,14,11,11,15,14, 0,21,20,18,19, 0, 0,21,18,18,
12,11,11,16,16,16,14,14,18,20,14,11,11,16,15, 0,
20,20,19,19, 0, 0,20,18,18, 0,21, 0,18,19, 0, 0,
0, 0, 0, 0,20,20,17,18, 0, 0, 0,20,20, 0, 0, 0,
19,19, 0, 0, 0,20,18, 0, 0, 0, 0, 0, 0, 0,21,18,
18, 0,21,21, 0,21, 0, 0, 0,19,20,11, 9, 9,14,14,
13,10,10,14,14,13,11,11,15,15, 0,13,13,13,13, 0,
14,14,16,16,13,11,11,15,15,16,12,12,15,15,14,10,
10,14,14, 0,14,14,16,16, 0,14,14,15,15,13,10,10,
15,15,17,13,14,15,16,15,10,10,15,15, 0,14,14,17,
16, 0,14,14,15,15, 0,15,15,17,17, 0, 0,21,18,18,
0,13,13,15,15, 0,16,16,21,20, 0,14,14,15,14, 0,
15,14,16,17, 0, 0,20,20,19, 0,13,13,15,15, 0,19,
18, 0, 0, 0,15,15,15,15, 0,11,11,14,14, 0,12,12,
16,16, 0,12,12,16,16, 0,15,16,21,21, 0,16,17,21,
0, 0,12,12,17,16, 0,14,14,18,19, 0,11,11,16,16,
0,15,15,20,21, 0,16,16,21, 0, 0,12,12,17,16, 0,
15,15,19,19, 0,12,12,16,17, 0,16,15, 0, 0, 0,16,
16, 0, 0, 0,17,17, 0,21, 0, 0, 0, 0, 0, 0,14,15,
20, 0, 0,17,17, 0, 0, 0,17,17, 0, 0, 0,17,16, 0,
0, 0, 0, 0, 0, 0, 0,15,15, 0, 0, 0,18,18, 0, 0,
0,18,17, 0, 0, 0,11,11,14,14, 0,12,12,15,15, 0,
12,12,15,15, 0,13,13,14,14, 0,14,14,17,17, 0,12,
12,16,16, 0,14,14,16,16, 0,11,11,15,15, 0,13,13,
16,17, 0,13,13,16,16, 0,12,12,15,15, 0,14,14,17,
16, 0,11,11,15,15, 0,14,14,17,17, 0,13,13,16,16,
0,15,15,17,18, 0,21,20,20,21, 0,12,12,15,15, 0,
16,16,20,21, 0,14,14,15,15, 0,14,14,17,17, 0, 0,
0,18,19, 0,12,13,15,15, 0,18,17,21, 0, 0,14,15,
15,15, 8, 8, 8,16,16,12,10,10,16,16,13, 9, 9,16,
16, 0,14,14,18,17, 0,14,14,16,17,12,10,10,18,17,
14,12,11,18,18,14, 9, 9,16,16, 0,13,13,18,18, 0,
13,13,17,16,12, 9, 9,16,17,17,13,13,17,17,14, 9,
9,15,15, 0,14,14,20,19, 0,13,13,16,16, 0,15,15,
19,18, 0, 0, 0,20,19, 0,12,13,17,17, 0,16,16,20,
0, 0,14,14,16,17, 0,14,14,19,18, 0, 0, 0,20,20,
0,13,13,16,16, 0,18,17, 0, 0, 0,15,15,16,16, 9,
7, 7,14,14,12,10,10,15,15,13,10,10,15,15, 0,21,
0,18,19, 0,20,21,19,18,12,10,10,16,15,15,13,13,
18,18,14,11,11,15,15, 0, 0, 0,19,18, 0, 0,21,18,
18,13,11,11,15,15,16,14,14,17,19,15,11,11,15,15,
0,21,21,20,18, 0, 0,21,18,18, 0, 0,21,21,19, 0,
0, 0, 0, 0, 0,19,20,18,17, 0, 0, 0,21,21, 0,21,
0,20,18, 0, 0,21,19,19, 0, 0, 0, 0, 0, 0,20,21,
17,17, 0, 0, 0, 0, 0, 0,21, 0,18,20, 0,10,10,14,
14, 0,11,11,15,15, 0,11,11,15,15, 0,14,14,15,15,
0,15,15,16,16, 0,11,12,16,16, 0,13,13,16,16, 0,
11,11,15,15, 0,14,14,17,17, 0,14,14,15,15, 0,11,
11,16,15, 0,14,14,15,15, 0,11,11,15,15, 0,15,15,
17,17, 0,14,14,15,15, 0,16,16,18,18, 0, 0, 0,20,
19, 0,14,13,16,15, 0,17,17,21, 0, 0,15,15,15,15,
0,16,15,17,16, 0,20, 0,20,18, 0,13,14,15,15, 0,
19,18, 0,21, 0,15,15,15,15, 0,11,11,14,14, 0,12,
12,16,16, 0,12,12,16,16, 0,16,15,20,21, 0,17,16,
0, 0, 0,12,12,16,16, 0,14,14,18,18, 0,11,11,16,
16, 0,15,15,21,20, 0,16,16, 0, 0, 0,12,12,16,17,
0,15,14,19,19, 0,11,12,16,16, 0,15,15,21, 0, 0,
16,16, 0, 0, 0,16,17, 0, 0, 0, 0, 0, 0, 0, 0,15,
15,21, 0, 0,17,17, 0, 0, 0,17,17, 0, 0, 0,17,16,
0, 0, 0, 0, 0, 0, 0, 0,15,15, 0,20, 0,19,20, 0,
0, 0,17,17, 0, 0, 0,12,12,15,15, 0,12,12,15,15,
0,12,12,16,16, 0,13,13,15,15, 0,15,15,17,17, 0,
13,13,17,16, 0,14,14,17,17, 0,11,11,16,16, 0,14,
14,17,17, 0,13,13,16,16, 0,12,12,16,16, 0,15,15,
16,17, 0,11,11,15,16, 0,14,14,17,17, 0,13,14,16,
16, 0,15,15,18,18, 0,21,20,20,19, 0,13,13,16,17,
0,16,16, 0, 0, 0,14,14,16,16, 0,15,15,18,18, 0,
0, 0,20,19, 0,13,13,16,16, 0,17,17, 0, 0, 0,14,
14,16,16, 0,11,11,16,16, 0,13,13,18,17, 0,13,13,
17,17, 0,16,16,17,17, 0,16,16,17,18, 0,12,12,17,
17, 0,15,15,18,18, 0,12,12,16,16, 0,16,16,19,19,
0,15,15,16,17, 0,12,12,17,17, 0,17,17,18,18, 0,
12,12,17,17, 0,16,16,19,19, 0,15,16,17,17, 0,16,
16,18,17, 0, 0, 0,21,21, 0,13,13,16,16, 0,17,17,
0,20, 0,15,15,16,17, 0,16,16,19,18, 0, 0,21,20,
21, 0,14,14,17,16, 0,20, 0, 0, 0, 0,15,16,16,17,
0, 9, 9,14,14, 0,13,13,16,16, 0,14,14,15,15, 0,
0,20,19,19, 0, 0, 0,19,19, 0,12,12,15,15, 0,15,
16,19,18, 0,14,14,15,15, 0,21, 0,18,18, 0,20, 0,
17,18, 0,13,13,16,16, 0,17,17,17,19, 0,14,14,16,
15, 0,21,20,20,19, 0, 0, 0,19,19, 0, 0, 0,19,18,
0, 0, 0, 0, 0, 0,20,20,17,18, 0, 0, 0,21,21, 0,
0, 0,18,18, 0,21, 0,18,19, 0, 0, 0, 0, 0, 0,20,
21,18,18, 0, 0, 0,20,21, 0, 0, 0,19,19, 0,18,18,
15,15, 0,20,21,17,17, 0,19,21,17,17, 0, 0, 0,17,
18, 0, 0, 0,20,19, 0,19,19,17,17, 0, 0, 0,18,18,
0,19,20,16,17, 0, 0,21,20,20, 0,19,20,19,18, 0,
19,20,16,16, 0, 0, 0,18,19, 0,19,20,17,17, 0, 0,
21, 0,20, 0,21,21,17,19, 0,20, 0,19,20, 0, 0, 0,
20, 0, 0,19,18,17,16, 0, 0, 0, 0, 0, 0, 0,20,17,
17, 0,20,21,18,20, 0, 0, 0, 0,21, 0,19,20,17,17,
0, 0, 0, 0, 0, 0,20,21,17,17, 0,11,11,14,14, 0,
13,13,16,17, 0,13,13,16,16, 0,17,17, 0,21, 0,18,
17,21, 0, 0,13,13,16,16, 0,15,15,18,18, 0,12,12,
16,16, 0,17,16,21, 0, 0,17,17, 0, 0, 0,12,12,17,
17, 0,17,17,19,21, 0,13,12,16,16, 0,17,17, 0, 0,
0,17,17, 0, 0, 0,18,17, 0,21, 0, 0, 0, 0, 0, 0,
15,15,20, 0, 0,20,18, 0, 0, 0,17,18, 0, 0, 0,16,
17, 0, 0, 0, 0, 0, 0, 0, 0,15,15, 0, 0, 0,19,19,
0, 0, 0,18,18, 0, 0, 0,14,14,18,18, 0,16,16, 0,
21, 0,16,16,21,21, 0,17,17, 0,20, 0,17,17,20, 0,
0,16,15, 0, 0, 0,20,20, 0, 0, 0,15,15,20,20, 0,
17,17,21, 0, 0,17,18,20,20, 0,15,15,20,20, 0,18,
18, 0, 0, 0,15,15,19,20, 0,17,18, 0, 0, 0,17,17,
20,20, 0,18,17,21, 0, 0, 0, 0, 0,21, 0,15,15,20,
20, 0,19,19, 0, 0, 0,17,17,21, 0, 0,17,17, 0, 0,
0, 0, 0,21, 0, 0,15,15,19,19, 0,20,21, 0, 0, 0,
18,17,21,21, 0,12,12,16,16, 0,14,14,17,17, 0,13,
13,17,18, 0,16,16,18,17, 0,16,16,18,18, 0,13,13,
18,18, 0,15,16,19,18, 0,13,13,16,16, 0,16,16,20,
18, 0,16,16,17,17, 0,12,13,17,17, 0,17,16,18,18,
0,12,12,16,16, 0,17,16,20,19, 0,16,16,16,16, 0,
16,17,18,20, 0, 0, 0,21,20, 0,14,14,17,16, 0,19,
18, 0,20, 0,16,16,17,16, 0,16,16,17,18, 0, 0,21,
21,21, 0,14,14,16,16, 0,20,20,21, 0, 0,16,16,16,
16, 0,10,10,14,14, 0,14,14,15,16, 0,14,14,15,15,
0, 0,21,18,18, 0, 0,21,18,19, 0,13,13,16,16, 0,
16,16,18,18, 0,14,14,15,15, 0,21, 0,18,18, 0,21,
0,18,18, 0,13,13,16,16, 0,17,17,19,20, 0,14,14,
15,15, 0, 0, 0,18,20, 0, 0,21,18,18, 0, 0,21,19,
18, 0, 0, 0, 0, 0, 0,20,21,18,17, 0, 0, 0,21,21,
0, 0, 0,19,19, 0,21, 0,18,19, 0, 0, 0, 0, 0, 0,
21,20,17,17, 0, 0,21,20, 0, 0, 0, 0,19,19, 0,19,
20,15,16, 0, 0,20,18,17, 0,20,21,17,18, 0,21, 0,
18,18, 0, 0, 0,19,19, 0,20,20,17,18, 0, 0, 0,18,
19, 0,20,20,18,17, 0, 0, 0, 0,20, 0, 0,21,17,18,
0,20,21,17,17, 0, 0, 0,18,18, 0,19,19,17,17, 0,
0, 0,21,21, 0,20,20,17,17, 0, 0, 0,21,19, 0, 0,
0,20,19, 0,21,20,17,18, 0, 0, 0, 0, 0, 0, 0,20,
18,17, 0,21,20,18,18, 0, 0, 0,20,21, 0,20,20,17,
17, 0, 0, 0, 0, 0, 0,20, 0,17,17, 0,11,11,13,14,
0,13,13,16,16, 0,13,13,16,16, 0,17,17, 0, 0, 0,
17,18, 0, 0, 0,13,13,16,16, 0,15,16,18,18, 0,13,
13,16,17, 0,16,17,20, 0, 0,17,18,20, 0, 0,13,13,
17,17, 0,16,16,20,21, 0,13,13,16,16, 0,17,17,21,
0, 0,17,18, 0, 0, 0,17,18, 0,21, 0, 0, 0, 0, 0,
0,15,15,20, 0, 0,19,19, 0, 0, 0,17,17, 0, 0, 0,
18,17,21,20, 0, 0, 0, 0, 0, 0,16,16,20,21, 0,21,
20, 0,21, 0,19,21, 0, 0, 0,15,15, 0, 0, 0,16,17,
0,19, 0,16,16, 0, 0, 0,17,17, 0, 0, 0,19,18, 0,
0, 0,16,16,20,20, 0,20,18,21, 0, 0,15,15,21,21,
0,18,18, 0, 0, 0,18,19, 0, 0, 0,16,15, 0,21, 0,
20,19, 0, 0, 0,16,16, 0, 0, 0,20,18, 0,21, 0,17,
18,21, 0, 0,18,19, 0, 0, 0, 0, 0, 0, 0, 0,16,16,
20,20, 0,19,20, 0, 0, 0,17,17, 0, 0, 0,18,17,20,
21, 0, 0, 0, 0, 0, 0,16,16, 0,20, 0,20,22, 0, 0,
0,18,18, 0,22,
};
 
static const static_codebook _44p0_p4_0 = {
5, 3125,
(char *)_vq_lengthlist__44p0_p4_0,
1, -528744448, 1616642048, 3, 0,
(long *)_vq_quantlist__44p0_p4_0,
0
};
 
static const long _vq_quantlist__44p0_p4_1[] = {
3,
2,
4,
1,
5,
0,
6,
};
 
static const char _vq_lengthlist__44p0_p4_1[] = {
2, 3, 3, 3, 3, 3, 3,
};
 
static const static_codebook _44p0_p4_1 = {
1, 7,
(char *)_vq_lengthlist__44p0_p4_1,
1, -533200896, 1611661312, 3, 0,
(long *)_vq_quantlist__44p0_p4_1,
0
};
 
static const long _vq_quantlist__44p0_p5_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p0_p5_0[] = {
1, 6, 6, 6, 8, 8, 7, 8, 8, 7, 9, 8,10,11,11, 9,
8, 8, 7, 8, 8,11,11,11, 9, 8, 8, 6, 7, 7,10,10,
10,10,10,10,10,10,10,14,13,13,12,11,11,10,10,10,
14,14,13,13,11,11, 6, 6, 6, 8, 5, 5, 8, 7, 7, 8,
7, 7,11, 9, 9, 9, 7, 7, 8, 7, 7,12,10,10,10, 7,
7, 7, 8, 8,12,11,11,12,10,10,11,10,10,14,13,13,
13,10,10,11,10,11,16,14,14,13,10,10, 7, 8, 7,12,
12,12,12,11,11,12,11,11,16,14,15,13,12,12,11,11,
11,17,15,14,14,13,13,10, 9, 9,13,11,11,13,11,11,
12,11,11,16,14,13,14,11,11,12,11,11,16,15,14,14,
11,11, 7, 8, 8,12,11,11,12,10,10,12,10,10,16,14,
13,13,11,11,12,10,10,16,14,14,13,10,10, 8, 8, 8,
12,12,12,12,11,11,12,11,11,16,14,15,14,12,12,12,
11,11,16,15,15,14,12,12,10,10,10,13,11,11,13,11,
11,12,12,12,16,14,14,14,11,11,12,11,11,17,14,15,
14,11,11,
};
 
static const static_codebook _44p0_p5_0 = {
5, 243,
(char *)_vq_lengthlist__44p0_p5_0,
1, -527106048, 1620377600, 2, 0,
(long *)_vq_quantlist__44p0_p5_0,
0
};
 
static const long _vq_quantlist__44p0_p5_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p0_p5_1[] = {
2, 7, 7, 7, 8, 8, 7, 7, 7, 7, 8, 8, 8, 8, 9, 8,
7, 7, 8, 8, 8, 9, 9, 9, 9, 7, 7, 6, 6, 6, 9, 7,
7, 9, 7, 7, 9, 8, 8,10, 8, 8,10, 8, 8,10, 8, 8,
10, 8, 8,10, 8, 8, 7, 6, 6, 9, 6, 6, 9, 6, 6, 9,
7, 7,10, 8, 8, 9, 6, 6, 9, 7, 7,10, 8, 8, 9, 7,
7, 7, 8, 8,11, 9, 9,11, 9, 9,11, 9, 9,12, 9, 9,
12, 8, 8,12, 9, 9,12,10, 9,12, 8, 8, 8, 7, 7,10,
9, 9,11, 9, 9,11, 9, 9,11,11,10,11, 9, 9,11,10,
9,11,10,11,11, 9, 9,10, 8, 8,11, 9, 9,11, 9, 9,
11, 9, 9,11,10,10,11, 9, 9,11, 9, 9,11,10,10,11,
9, 9, 9, 8, 8,12, 9, 9,12, 9, 9,11, 9, 9,12, 9,
9,12, 8, 8,12, 9, 9,12, 9, 9,12, 8, 8, 9, 7, 7,
11, 9,10,11,10, 9,11, 9, 9,11,11,11,11, 9, 9,11,
10,10,11,11,11,11, 9, 9,10, 9, 9,11, 9, 9,11,10,
10,11,10, 9,11,10,10,11, 9, 9,11,10,10,11,10,11,
11, 9, 9,
};
 
static const static_codebook _44p0_p5_1 = {
5, 243,
(char *)_vq_lengthlist__44p0_p5_1,
1, -530841600, 1616642048, 2, 0,
(long *)_vq_quantlist__44p0_p5_1,
0
};
 
static const long _vq_quantlist__44p0_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p0_p6_0[] = {
1, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,
};
 
static const static_codebook _44p0_p6_0 = {
5, 243,
(char *)_vq_lengthlist__44p0_p6_0,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44p0_p6_0,
0
};
 
static const long _vq_quantlist__44p0_p6_1[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p0_p6_1[] = {
1, 3, 2, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
11,12,12,12,14,14,14,15,15,
};
 
static const static_codebook _44p0_p6_1 = {
1, 25,
(char *)_vq_lengthlist__44p0_p6_1,
1, -518864896, 1620639744, 5, 0,
(long *)_vq_quantlist__44p0_p6_1,
0
};
 
static const long _vq_quantlist__44p0_p6_2[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p0_p6_2[] = {
3, 4, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44p0_p6_2 = {
1, 25,
(char *)_vq_lengthlist__44p0_p6_2,
1, -529006592, 1611661312, 5, 0,
(long *)_vq_quantlist__44p0_p6_2,
0
};
 
static const char _huff_lengthlist__44p0_short[] = {
3, 3, 7, 8,10,13,16, 3, 2, 5, 7, 9,13,16, 6, 4,
4, 6,10,14,15, 7, 5, 5, 7,10,13,14, 9, 8, 9, 9,
9,11,13,12,11,12, 9, 7, 8,11,14,12,10, 6, 5, 7,
10,
};
 
static const static_codebook _huff_book__44p0_short = {
2, 49,
(char *)_huff_lengthlist__44p0_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p1_l0_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44p1_l0_0[] = {
1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 4, 6, 5,
8, 6, 9, 8,10, 9,10,10,11,10, 5, 5, 6, 6, 8, 8,
9, 9,10,10,10,10,11, 7, 8, 8, 9, 8,10, 9,10, 9,
11,10,11,10, 7, 8, 8, 8,10, 9,10,10,10,10,11,10,
11, 9,10,10,11,11,11,11,12,11,12,11,12,11, 9,10,
10,11,11,11,11,11,11,11,12,11,12,11,11,11,12,12,
12,12,12,12,12,12,12,11,11,12,11,12,12,12,12,12,
12,12,12,11,12,12,12,12,12,13,12,13,12,12,12,12,
12,12,12,12,12,13,13,13,13,12,13,12,12,12,12,12,
13,13,12,13,12,13,12,13,12,12,12,12,13,13,13,13,
13,13,12,12,12,12,12,11,12,
};
 
static const static_codebook _44p1_l0_0 = {
2, 169,
(char *)_vq_lengthlist__44p1_l0_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44p1_l0_0,
0
};
 
static const long _vq_quantlist__44p1_l0_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p1_l0_1[] = {
1, 4, 4, 6, 6, 5, 5, 5, 6, 6, 5, 6, 5, 6, 6, 6,
6, 7, 7, 7, 6, 7, 6, 7, 7,
};
 
static const static_codebook _44p1_l0_1 = {
2, 25,
(char *)_vq_lengthlist__44p1_l0_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p1_l0_1,
0
};
 
static const long _vq_quantlist__44p1_l1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p1_l1_0[] = {
1, 4, 4, 4, 4, 4, 4, 4, 4,
};
 
static const static_codebook _44p1_l1_0 = {
2, 9,
(char *)_vq_lengthlist__44p1_l1_0,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44p1_l1_0,
0
};
 
static const char _huff_lengthlist__44p1_lfe[] = {
1, 3, 2, 3,
};
 
static const static_codebook _huff_book__44p1_lfe = {
2, 4,
(char *)_huff_lengthlist__44p1_lfe,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44p1_long[] = {
3, 3, 7, 7, 9,13,16, 3, 2, 4, 6,10,13,17, 7, 4,
4, 6, 9,12,14, 7, 6, 6, 5, 7, 9,12,10,10, 9, 6,
6, 9,12,14,14,13, 9, 8,10,11,18,18,15,13,11,10,
11,
};
 
static const static_codebook _huff_book__44p1_long = {
2, 49,
(char *)_huff_lengthlist__44p1_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p1_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p1_p1_0[] = {
1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44p1_p1_0 = {
5, 243,
(char *)_vq_lengthlist__44p1_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p1_p1_0,
0
};
 
static const long _vq_quantlist__44p1_p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p1_p2_0[] = {
1, 4, 4, 0, 7, 7, 0, 8, 8, 0, 9, 9, 0,12,12, 0,
8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 0, 6, 6, 0,11,
11, 0,11,11, 0,12,12, 0,14,14, 0,11,11, 0,12,12,
0,14,14, 0,11,11, 0, 6, 6, 0, 6, 5, 0, 7, 6, 0,
7, 7, 0,10,10, 0, 6, 6, 0, 7, 7, 0,10,10, 0, 7,
7, 0, 7, 7, 0,10,10, 0,11,11, 0,11,11, 0,14,14,
0,10,10, 0,12,12, 0,14,14, 0,12,12, 0, 6, 6, 0,
11,11, 0,11,11, 0,12,12, 0,14,14, 0,11,11, 0,12,
12, 0,15,15, 0,11,11, 0, 0, 0, 0, 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, 8, 0,11,11, 0,11,11, 0,12,12, 0,15,
15, 0,12,12, 0,11,11, 0,15,15, 0,11,11, 0, 6, 6,
0,11,11, 0,12,12, 0,12,12, 0,15,15, 0,11,11, 0,
12,12, 0,14,14, 0,12,12, 0, 0, 0, 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 const static_codebook _44p1_p2_0 = {
5, 243,
(char *)_vq_lengthlist__44p1_p2_0,
1, -533200896, 1614282752, 2, 0,
(long *)_vq_quantlist__44p1_p2_0,
0
};
 
static const long _vq_quantlist__44p1_p2_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p1_p2_1[] = {
1, 3, 3, 0, 8, 8, 0, 8, 8, 0,10,10, 0, 9, 9, 0,
10,10, 0,10,10, 0, 9, 9, 0,10,10, 0, 7, 7, 0, 7,
7, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 9, 9,
0, 8, 8, 0, 8, 8, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0,
10,10, 0, 9, 9, 0, 9, 9, 0,10,10, 0, 9, 9, 0,10,
10, 0, 8, 8, 0,11,11, 0,11,11, 0,12,12, 0,11,11,
0,12,12, 0,12,12, 0,12,12, 0,12,12, 0, 8, 8, 0,
11,11, 0,11,11, 0,13,12, 0,12,12, 0,13,12, 0,13,
13, 0,12,12, 0,13,13, 0, 7, 7, 0, 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, 8, 0,11,11, 0,11,11, 0,13,12, 0,12,
12, 0,12,12, 0,12,12, 0,11,11, 0,12,12, 0, 8, 8,
0,12,12, 0,12,12, 0,13,13, 0,12,12, 0,13,13, 0,
13,13, 0,12,13, 0,13,13, 0, 7, 7, 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 const static_codebook _44p1_p2_1 = {
5, 243,
(char *)_vq_lengthlist__44p1_p2_1,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p1_p2_1,
0
};
 
static const long _vq_quantlist__44p1_p3_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p1_p3_0[] = {
1, 6, 6, 6, 7, 7, 7, 8, 8, 7, 8, 8,10,11,11, 9,
8, 8, 7, 9, 9,11,12,12, 9, 8, 8, 6, 7, 7, 9,11,
11,10,11,11,10,11,11,13,13,13,11,12,12,10,11,11,
13,14,14,12,12,12, 6, 6, 6, 8, 6, 6, 8, 6, 6, 9,
7, 7,12,10,10,10, 6, 6, 9, 7, 7,12,10,10,11, 7,
6, 7, 8, 8,12,10,10,12,10,10,11,10,10,15,13,13,
13,10,10,12,11,11,15,13,13,14,11,11, 8, 7, 7,12,
11,11,12,11,11,11,11,11,14,14,14,13,12,12,12,11,
11,16,15,15,14,12,12, 0,10,10, 0,11,11, 0,12,12,
0,11,11, 0,14,14, 0,11,11, 0,11,11, 0,15,15, 0,
11,11, 7, 8, 8,13,10,10,12,10,10,12,11,11,15,13,
13,14,11,11,12,10,10,16,14,14,14,10,10, 8, 7, 7,
12,11,11,13,11,11,12,11,11,15,14,14,14,12,12,13,
12,12,15,14,14,15,12,12, 0,11,11, 0,12,12, 0,12,
12, 0,12,12, 0,15,15, 0,12,12, 0,12,12, 0,15,14,
0,12,12,
};
 
static const static_codebook _44p1_p3_0 = {
5, 243,
(char *)_vq_lengthlist__44p1_p3_0,
1, -531365888, 1616117760, 2, 0,
(long *)_vq_quantlist__44p1_p3_0,
0
};
 
static const long _vq_quantlist__44p1_p3_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p1_p3_1[] = {
2, 3, 4, 7, 7,10,12,12,12,12,10,11,11,13,13,11,
12,12,11,11,12,12,12,12,12,11,13,13,13,13,12,12,
12,13,14,12,13,13,13,13,12,13,13,13,13,12,13,13,
13,13,11,13,13,13,13,12,12,12,14,14,12,13,13,12,
12,12,12,13,13,13,12,13,13,13,13,12,13,13,13,13,
12,12,12,14,14,12,13,13,12,12,12,13,13,13,13,12,
13,13,12,12,12,13,13,13,13,12,12,12,14,14,12,13,
13,12,12,12,13,13,13,13,12,13,13,12,12,10,10,11,
10,10,11,11,11,11,11,11, 9, 9,10,10,12,11,11,10,
10,12,10,10,10,10,13,12,12,12,12,13,11,11,11,11,
13,12,12,12,12,13,11,11,11,11,13,12,12,12,12,13,
12,12,12,12,13,11,11,11,11,13,12,12,12,12,13,11,
11,11,11,13,12,12,11,11,13,12,12,11,11,13,11,11,
11,11,13,12,12,11,11,13,11,11,11,11,13,12,12,11,
11,13,12,12,11,11,13,11,11,11,11,13,12,12,11,11,
13,11,11,11,11,13,12,12,11,11,11,11,11,10,10,11,
11,11, 9, 9,11,12,12,11,11,12,12,12, 9, 9,13,13,
13,10,10,13,13,13,11,11,13,13,13,14,14,13,13,13,
11,10,13,13,14,12,12,13,13,13,11,11,13,13,13,11,
11,13,13,13,14,14,13,13,13,10,10,13,13,13,11,11,
13,13,13,10,10,13,14,13,11,11,13,14,14,14,14,13,
13,13,10,10,13,14,14,11,11,13,13,13,10,10,13,14,
14,11,11,13,13,13,14,14,14,13,13,10,10,13,14,14,
11,11,13,13,13,10,10,14,12,12, 9, 9,14,12,12, 9,
9,14,11,11, 9, 9,14,12,12, 8, 8,14,11,11, 7, 7,
15,13,13,10,10,15,12,12,10,10,15,13,13,10,10,15,
12,12,10,10,15,13,13,10,10,15,13,13,10,10,15,12,
12,10,10,15,13,13,10,10,15,12,12,10,10,15,13,13,
10,10,15,13,13,10,10,15,12,12,10,10,15,13,13, 9,
9,15,12,12, 9, 9,14,13,13, 9, 9,15,13,13,10,10,
15,12,12,10,10,15,13,13, 9, 9,15,12,12, 9, 9,15,
13,13, 9, 9,13,12,12, 9, 9,13,13,13, 8, 8,13,13,
13, 9, 9,13,13,13, 7, 7,14,13,13, 8, 8,14,14,14,
10,10,15,14,14,11,11,14,14,14, 9, 9,15,14,14,10,
10,15,14,14, 9, 9,14,14,14,10,10,15,14,14,11,11,
15,14,14, 9, 9,14,14,14,10,10,14,14,14, 9, 9,15,
14,15,10,10,15,14,14,11,11,14,14,14, 9, 9,14,14,
14, 9, 9,14,14,14, 8, 8,15,14,14,10,10,15,14,14,
11,11,14,14,14, 9, 9,15,14,14, 9, 9,14,14,14, 8,
8,12,12,12,13,13,16,16,16,11,11,17,16,16,12,12,
17,16,16,11,11,17,16,16,11,11,17,17,16,13,13,17,
16,16,13,13,18,17,16,12,12,17,16,16,13,13,17,16,
17,12,12,18,17,17,13,13,17,16,16,14,14,18,17,17,
12,12,18,16,16,13,13,17,17,17,13,12,17,17,17,13,
13,17,16,16,13,13,18,17,17,12,12,17,16,16,13,12,
17,17,17,12,12,18,17,17,13,13,18,16,16,14,14,18,
17,17,12,12,17,17,17,13,13,18,17,18,12,12,13,14,
14,10,10,16,14,14,13,13,17,15,15,14,14,17,14,14,
12,13,16,14,14,13,13,17,15,15,14,14,16,16,16,15,
15,17,15,15,14,14,17,16,16,14,15,17,15,15,14,14,
17,15,16,14,14,17,16,16,15,15,17,15,15,13,13,17,
15,15,14,14,18,15,15,13,14,17,15,15,14,14,16,16,
16,15,15,17,15,15,13,13,17,15,15,14,14,17,15,15,
13,13,17,15,15,14,14,16,16,16,15,15,17,15,15,13,
13,17,15,15,14,14,18,15,15,13,13,13,11,11,10,10,
16,14,14,13,12,16,14,14,13,13,16,15,14,12,12,16,
14,14,12,12,16,15,15,14,14,16,14,14,14,14,17,15,
15,13,13,16,15,15,14,14,17,15,15,13,14,17,15,15,
14,14,17,15,14,14,14,17,15,15,13,13,17,15,15,14,
14,17,15,15,13,13,17,15,15,14,14,17,14,14,14,14,
17,15,15,13,13,17,15,15,13,13,17,15,15,13,13,17,
15,15,14,14,17,15,15,14,14,17,15,15,13,13,17,15,
15,13,13,17,15,15,13,13,14,14,15, 8, 8,14,14,14,
19,19,14,15,15,18,19,14,14,14,19,18,14,14,14,19,
19,15,15,15,19,18,15,16,16,19,19,15,15,15,19,19,
15,16,16,20,19,15,15,15,19,19,15,15,15,19,19,16,
16,16,20,19,15,15,15,19,18,15,16,16,20,19,15,15,
15,18,18,15,15,15,19,20,15,16,16,19,19,15,15,15,
20,19,15,15,15,20,19,15,15,15,19,18,15,15,15,19,
19,15,16,16,19,20,15,15,15,19,19,15,15,15,19,20,
15,15,15,19,19,14,12,12, 9, 9,14,14,14,19,19,14,
14,14,19,19,14,14,15,20,19,15,14,14,18,19,15,15,
15,19,19,15,15,14,20,19,15,15,15,20,19,15,15,14,
20,19,15,15,15,20,19,15,15,15,19,20,15,14,14,19,
20,15,15,15,20,20,15,14,14,20,19,15,15,15,19,19,
15,15,15,19,19,15,14,14,19,19,15,15,15,19,20,15,
15,15,20,20,15,15,15,19,19,15,15,15,20,19,16,14,
14,19,19,15,15,15,20,19,15,14,15,20,19,14,15,15,
20,19,12,12,12,13,13,16,16,16,11,11,16,16,16,12,
12,17,16,16,11,11,17,15,16,11,11,17,17,17,13,13,
18,16,17,13,13,18,17,17,13,12,17,16,17,13,13,17,
17,17,13,13,16,16,16,12,12,17,16,16,13,13,17,16,
16,12,12,17,16,16,12,13,17,17,17,12,12,17,17,17,
13,13,18,16,16,13,13,18,17,17,12,12,18,17,17,12,
12,17,17,17,12,12,17,17,17,12,12,17,16,16,13,13,
17,17,17,12,12,17,16,16,12,12,17,17,17,12,12,13,
14,14, 9, 9,16,14,14,13,13,16,15,15,14,14,17,14,
14,13,13,16,14,14,13,13,17,15,15,15,15,16,16,16,
15,15,17,15,15,14,14,17,15,15,15,15,17,15,15,14,
14,17,15,15,14,14,16,16,16,15,15,17,15,15,14,14,
17,15,15,14,14,17,15,15,14,14,17,15,15,14,14,16,
16,16,15,15,18,15,15,14,13,17,15,15,14,14,17,15,
15,13,13,17,15,15,14,14,16,16,16,15,15,17,15,15,
14,13,17,15,15,14,14,17,15,15,13,13,13,11,11,11,
11,16,14,14,12,12,16,14,14,13,13,16,15,14,12,12,
17,14,14,12,12,17,15,15,13,13,17,14,14,14,14,17,
15,15,13,13,17,14,15,14,13,17,15,15,13,13,16,15,
15,13,13,16,14,14,14,14,17,15,15,13,13,16,14,14,
13,13,16,15,15,13,13,17,15,15,13,13,17,14,14,14,
14,17,15,15,12,12,17,15,15,13,13,17,15,15,12,12,
16,15,15,13,13,17,14,14,13,14,17,15,15,12,12,17,
14,14,13,13,17,15,15,12,12,14,14,14, 8, 8,14,14,
14,18,18,14,15,15,19,19,14,14,14,19,19,14,15,14,
18,19,15,15,15,18,19,15,16,16,20,20,15,15,15,19,
20,15,16,16,19,20,15,15,15,19,20,15,15,16,19,19,
15,16,16,20,20,15,15,15,20,19,15,16,16,20,19,15,
15,15,19,20,15,15,15,19,19,15,16,16,20,19,15,15,
15,19,19,15,16,15,20,19,15,15,15,19,19,15,15,15,
19,20,15,16,16,20,20,15,15,15,19,19,15,15,15,20,
20,15,15,15,19,19,14,12,12, 9, 9,14,14,14,18,18,
14,14,14,19,20,14,14,14,18,18,14,14,14,18,19,15,
15,15,19,20,15,14,14,19,19,15,15,15,19,19,15,14,
15,19,19,15,15,15,18,20,15,15,15,19,19,15,14,14,
19,19,15,15,15,20,19,15,15,14,20,20,15,15,15,19,
19,15,15,15,19,19,15,14,14,19,19,15,15,15,19,19,
15,14,14,19,20,14,15,15,19,19,15,15,15,19,19,15,
14,14,20,19,15,15,15,19,19,15,14,14,20,19,15,15,
15,19,19,13,12,12,13,13,17,17,16,11,11,16,16,16,
12,12,17,17,16,11,11,17,16,16,11,11,17,17,17,13,
13,17,16,16,13,13,18,17,17,12,12,17,16,16,13,13,
18,17,17,12,12,18,17,17,13,13,18,16,17,13,13,17,
17,17,12,12,18,17,17,13,13,18,17,17,12,12,17,16,
17,12,12,17,16,16,13,13,17,16,16,11,11,17,16,16,
12,12,17,17,17,11,11,17,17,17,12,12,18,16,16,13,
13,18,17,17,12,11,17,16,16,12,12,18,17,17,11,11,
13,14,14, 9, 9,16,14,14,13,13,16,15,15,14,14,17,
14,14,12,12,16,14,14,13,13,17,15,15,14,14,17,16,
16,15,16,18,15,15,14,14,17,15,15,14,14,17,15,15,
14,14,18,15,15,14,14,16,16,16,15,16,18,15,15,14,
14,17,16,15,14,14,18,15,15,14,14,17,15,15,14,14,
17,16,16,15,15,18,14,15,13,13,17,15,15,14,14,18,
15,15,13,13,17,15,15,14,14,17,16,15,15,15,17,15,
15,13,13,17,15,15,14,14,18,15,15,13,13,13,11,11,
10,10,16,14,14,12,12,16,14,14,12,12,17,14,15,11,
11,17,14,14,11,11,17,15,15,13,13,17,14,14,14,13,
17,15,15,13,13,16,15,15,13,13,17,15,15,13,13,17,
15,15,13,13,17,14,14,14,14,17,15,15,13,13,17,14,
15,13,13,16,15,15,13,13,17,15,15,13,13,17,14,14,
13,13,17,15,15,12,12,16,14,14,12,12,17,15,15,12,
12,17,15,15,13,13,17,14,14,13,13,17,15,15,12,12,
17,14,14,12,12,17,15,15,12,12,13,15,14, 8, 8,14,
14,14,19,19,14,15,15,18,19,14,14,14,18,19,14,15,
14,19,19,15,16,15,19,19,15,16,16,19,20,15,15,15,
19,19,15,16,16,19,19,15,16,16,19,19,15,15,15,19,
19,15,16,16,20,20,15,15,15,19,19,15,15,15,19,19,
15,15,15,19,19,15,15,15,19,19,15,16,16,20,19,15,
15,15,19,19,15,15,15,19,19,15,15,15,19,19,15,16,
15,19,19,15,16,16,21,19,15,15,15,20,20,15,15,15,
20,21,15,15,15,19,20,14,12,12, 8, 8,14,14,14,19,
19,14,13,13,19,19,14,14,14,19,19,14,13,14,19,19,
15,15,15,20,20,15,14,14,20,19,15,15,15,19,20,15,
14,14,19,20,15,15,15,20,19,15,15,15,19,20,15,14,
14,20,20,15,15,15,20,19,15,14,14,19,19,15,15,15,
19,19,15,15,15,20,19,15,14,14,21,19,15,15,15,20,
21,15,14,14,21,19,15,15,15,19,19,15,15,15,20,20,
15,14,14,19,21,15,15,15,19,19,15,14,14,19,20,15,
15,15,19,19,13,12,12,13,13,17,16,16,11,11,17,16,
15,12,12,18,16,16,11,11,17,16,16,11,11,18,17,17,
13,13,18,16,16,13,13,17,17,17,12,13,18,17,16,13,
13,18,17,17,13,13,17,17,17,13,13,17,16,16,13,13,
18,16,17,12,12,17,16,16,13,12,17,17,17,12,12,18,
17,17,13,12,18,16,16,13,13,18,17,17,12,12,17,16,
16,12,12,17,17,17,11,11,17,16,16,12,12,17,16,16,
13,13,17,16,16,11,11,17,16,16,12,12,17,17,17,11,
11,13,14,14, 9, 9,16,14,14,13,13,16,15,15,14,14,
17,14,14,12,12,16,14,14,13,13,17,15,15,14,14,17,
15,16,15,15,17,15,15,14,14,17,15,16,14,15,18,15,
15,14,14,17,15,15,14,14,16,16,16,15,15,18,15,15,
13,14,17,15,15,14,14,18,15,15,14,14,17,15,15,14,
14,17,16,16,15,15,17,15,15,13,13,17,15,15,14,14,
18,15,15,13,13,17,15,15,14,14,17,16,16,15,15,17,
15,15,13,13,17,15,15,14,14,18,15,15,13,13,13,11,
11,10,10,16,14,14,12,12,16,14,14,13,13,17,14,14,
11,11,17,14,14,12,12,17,15,15,14,14,17,14,14,14,
14,17,15,15,13,13,17,15,14,13,13,16,15,15,13,13,
16,15,15,13,13,17,14,14,14,14,17,15,15,13,13,17,
14,14,13,13,16,15,15,13,13,16,15,15,13,13,17,14,
14,13,13,17,15,15,12,12,17,14,14,12,12,16,15,15,
12,12,17,15,15,13,13,17,14,14,13,13,17,15,15,12,
12,17,14,14,12,12,16,15,15,12,12,14,14,14, 8, 8,
14,14,14,18,18,14,15,15,19,18,14,14,14,18,18,14,
14,14,18,19,15,16,15,19,19,15,17,16,20,20,15,15,
15,19,19,15,16,16,19,19,15,15,15,19,19,15,16,15,
18,19,15,16,16,20,20,15,15,15,19,19,15,16,16,19,
20,15,15,15,19,19,15,15,16,19,19,15,16,16,20,20,
15,15,15,19,19,15,15,15,19,20,15,15,15,19,19,15,
15,15,19,19,15,16,16,20,20,15,15,15,19,20,15,16,
16,20,20,15,15,15,19,19,13,12,12, 8, 8,14,14,14,
19,20,14,14,14,19,19,14,14,14,18,19,14,14,14,19,
20,15,15,15,19,20,15,14,14,21,20,15,15,15,20,20,
15,15,14,19,19,15,15,15,19,19,15,15,15,19,19,15,
14,14,19,20,15,15,15,19,20,15,14,14,19,19,15,15,
15,19,19,15,15,15,19,19,16,14,14,19,19,15,15,15,
20,20,15,14,14,21,19,15,15,15,19,19,15,15,15,19,
20,16,14,14,19,20,15,15,15,19,19,15,14,14,19,19,
15,15,15,20,19,
};
 
static const static_codebook _44p1_p3_1 = {
5, 3125,
(char *)_vq_lengthlist__44p1_p3_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p1_p3_1,
0
};
 
static const long _vq_quantlist__44p1_p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p1_p4_0[] = {
2, 6, 6,14,14, 6, 7, 7,14,14, 7, 7, 7,14,14, 0,
13,13,16,16, 0,13,13,15,14, 7, 8, 8,15,15, 9,10,
10,16,16, 9, 8, 8,15,15, 0,13,13,17,16, 0,13,13,
15,16, 8, 8, 8,15,15,12,11,11,16,16, 9, 8, 8,14,
14, 0,13,13,17,18, 0,13,13,15,15, 0,14,14,16,16,
0, 0, 0,19,18, 0,12,12,16,15, 0,15,16, 0,20, 0,
14,14,16,16, 0,14,14,17,17, 0, 0, 0,19,18, 0,12,
12,15,15, 0,17,17, 0,20, 0,14,14,16,16, 5, 6, 7,
12,12, 9, 9, 9,14,14,10,10,10,14,14, 0,21,21,18,
17, 0,20,20,18,17, 9,10,10,14,14,12,12,12,16,16,
12,10,10,14,14, 0,20,19,18,17, 0, 0,20,17,18,11,
10,10,14,14,14,13,13,18,18,13,11,11,14,14, 0,20,
20,17,18, 0,21,21,17,17, 0,21, 0,18,18, 0, 0, 0,
0, 0, 0,20,19,16,17, 0, 0, 0,19,19, 0, 0, 0,18,
18, 0,21,21,18,18, 0, 0, 0, 0, 0, 0,20,20,16,17,
0, 0, 0,21,21, 0, 0, 0,18,19, 6, 6, 6,13,12, 8,
6, 6,11,11, 8, 6, 6,13,13, 0, 9, 9,11,11, 0,11,
10,14,14, 9, 7, 7,13,13,11, 9, 9,13,13,10, 6, 6,
13,13, 0,10,10,14,15, 0,10,10,13,13, 9, 7, 7,13,
13,13,10, 9,13,13,10, 6, 6,13,13, 0,10,10,15,14,
0,10,10,13,13, 0,11,11,15,15, 0,19,20,17,17, 0,
9, 9,13,13, 0,13,13,20,20, 0,11,11,13,13, 0,11,
11,15,15, 0,19,19,17,17, 0,10,10,13,13, 0,15,15,
20,20, 0,12,12,13,13, 0,10,10,12,12, 0,11,11,15,
15, 0,11,11,15,15, 0,15,15,20, 0, 0,16,16, 0,21,
0,11,11,15,15, 0,14,14,18,17, 0,11,11,15,15, 0,
15,16,19,20, 0,16,16,21,21, 0,12,12,15,15, 0,15,
14,18,18, 0,11,11,16,16, 0,15,15,21,21, 0,16,15,
0, 0, 0,16,16,21, 0, 0, 0, 0, 0, 0, 0,14,14,20,
20, 0,18,18, 0, 0, 0,16,17,21, 0, 0,16,16,21,21,
0, 0, 0, 0, 0, 0,15,15,21,21, 0,20,19, 0,21, 0,
17,17, 0, 0, 0,10,10,12,11, 0,10,10,10,11, 0,11,
11,12,12, 0,11,11, 9, 9, 0,13,13,11,12, 0,11,11,
12,12, 0,13,13,12,12, 0,10,10,12,12, 0,12,12,13,
13, 0,12,12,12,12, 0,11,11,12,12, 0,13,13,12,12,
0,10,10,12,12, 0,13,13,14,14, 0,12,12,12,12, 0,
14,14,14,13, 0,19,20,15,15, 0,12,11,12,12, 0,15,
15,21,20, 0,13,13,11,11, 0,13,13,13,13, 0,19, 0,
15,15, 0,12,12,12,12, 0,17,16,19, 0, 0,13,13,12,
12, 7, 7, 7,16,16,11, 9, 9,15,15,12, 9, 9,16,16,
0,13,13,15,14, 0,14,14,17,16,10, 9, 9,16,16,14,
11,11,17,16,12, 9, 8,15,15, 0,13,13,18,18, 0,13,
13,15,15,12,10,10,18,17,15,12,12,17,17,14, 9, 9,
16,16, 0,13,13,18,19, 0,14,13,17,16, 0,14,14,18,
18, 0, 0, 0,20,21, 0,12,12,16,16, 0,16,16,20,21,
0,14,14,17,16, 0,14,14,18,19, 0, 0, 0,19,21, 0,
13,13,17,17, 0,17,17, 0,21, 0,15,15,16,16, 8, 7,
7,14,14,11,10,10,15,15,12,10,10,15,15, 0,20,20,
18,18, 0, 0, 0,17,17,11,10,10,16,16,14,12,12,18,
17,14,11,11,15,15, 0,20,21,18,18, 0, 0,19,18,17,
12,10,10,16,16,17,14,14,19,19,14,11,11,15,15, 0,
21,21,19,19, 0,21,20,19,18, 0,21, 0,18,19, 0, 0,
0, 0, 0, 0,20,20,18,17, 0,21, 0, 0, 0, 0, 0, 0,
19,18, 0, 0, 0,18,19, 0, 0, 0, 0, 0, 0, 0,21,17,
18, 0, 0, 0, 0,21, 0, 0,21,18,19,11, 9, 9,14,14,
13,10,10,13,13,13,11,11,15,15, 0,13,13,12,12, 0,
15,15,16,16,13,10,10,15,15,16,12,12,15,15,15,10,
10,15,15, 0,14,13,16,15, 0,14,13,15,15,13,10,10,
15,15,18,14,14,15,15,15,10,10,14,15, 0,14,14,16,
16, 0,14,14,16,15, 0,15,15,17,16, 0,21, 0,18,18,
0,12,13,15,15, 0,16,16, 0, 0, 0,14,14,15,15, 0,
15,15,16,16, 0,21,20,18,18, 0,13,13,15,15, 0,19,
18, 0, 0, 0,15,15,15,15, 0,11,11,13,13, 0,12,12,
16,16, 0,12,12,16,16, 0,15,16,20, 0, 0,16,17, 0,
0, 0,12,12,16,16, 0,14,14,18,18, 0,11,11,16,17,
0,15,15,20, 0, 0,16,16, 0, 0, 0,12,12,16,16, 0,
15,15,19,19, 0,11,11,17,17, 0,16,16,21, 0, 0,16,
16, 0, 0, 0,17,17,20,20, 0, 0, 0, 0, 0, 0,15,15,
20, 0, 0,17,18, 0, 0, 0,17,17, 0, 0, 0,16,16, 0,
21, 0, 0, 0, 0, 0, 0,15,15,21, 0, 0,19,18, 0, 0,
0,18,17, 0, 0, 0,11,11,14,14, 0,11,11,15,15, 0,
12,12,16,16, 0,13,13,14,14, 0,14,14,17,17, 0,12,
12,16,16, 0,14,14,16,16, 0,11,11,16,15, 0,13,13,
16,17, 0,13,13,16,16, 0,12,12,15,16, 0,15,14,16,
16, 0,11,11,15,15, 0,14,14,17,17, 0,13,13,16,16,
0,15,14,18,18, 0,21, 0,19,19, 0,13,13,15,15, 0,
16,16,20,20, 0,14,14,16,15, 0,14,14,17,17, 0,21,
0,20,18, 0,13,13,15,15, 0,17,17, 0, 0, 0,14,14,
16,15, 8, 8, 8,16,16,12, 9, 9,16,16,13, 9, 9,16,
16, 0,14,14,18,17, 0,14,14,16,17,12,10,10,18,17,
14,11,11,18,18,14, 9, 9,16,16, 0,13,13,18,18, 0,
13,13,17,16,12, 9, 9,16,17,17,13,13,16,16,14, 9,
9,15,15, 0,14,14,20,20, 0,13,13,15,15, 0,15,14,
18,18, 0, 0, 0,20,21, 0,12,13,16,17, 0,16,16,20,
21, 0,14,14,16,17, 0,14,14,18,17, 0, 0, 0,20,21,
0,13,13,16,16, 0,19,17, 0,21, 0,14,15,16,16, 8,
7, 7,14,13,12,10,10,15,15,13,10,10,15,15, 0,21,
21,18,19, 0,20,21,18,18,12,10,10,16,15,15,12,12,
17,17,14,11,11,15,15, 0,21,21,19,18, 0, 0,21,17,
18,13,11,11,15,15,16,13,13,18,19,15,11,11,15,14,
0,21, 0,19,19, 0, 0,21,18,18, 0, 0,21,19,19, 0,
0, 0, 0, 0, 0,20,19,17,17, 0, 0, 0,21, 0, 0,21,
0,18,19, 0, 0,20,20,19, 0, 0, 0, 0, 0, 0,21,20,
18,17, 0, 0, 0, 0,20, 0, 0, 0,18,19, 0,10,10,15,
14, 0,11,11,14,14, 0,11,11,15,16, 0,14,14,15,15,
0,15,15,16,16, 0,11,11,16,16, 0,14,13,16,16, 0,
11,11,15,15, 0,14,14,16,16, 0,14,14,15,15, 0,11,
11,15,15, 0,13,13,15,15, 0,11,11,15,15, 0,15,15,
18,17, 0,14,14,15,15, 0,15,16,18,18, 0, 0, 0,20,
20, 0,14,13,16,15, 0,17,17,21, 0, 0,15,15,15,15,
0,16,15,17,17, 0, 0, 0,19,19, 0,13,13,15,15, 0,
20,19, 0, 0, 0,15,15,15,15, 0,11,11,13,13, 0,12,
12,16,16, 0,12,12,16,16, 0,15,15,21,21, 0,17,16,
0, 0, 0,12,12,16,16, 0,14,14,17,17, 0,11,11,16,
16, 0,15,15, 0, 0, 0,16,16,21, 0, 0,12,12,17,16,
0,14,15,20,20, 0,11,11,16,16, 0,15,15, 0,20, 0,
16,16, 0,21, 0,16,17,21, 0, 0, 0, 0, 0, 0, 0,15,
15, 0,21, 0,18,18, 0, 0, 0,17,16, 0, 0, 0,17,17,
21, 0, 0, 0, 0, 0, 0, 0,15,15, 0,20, 0,19,20,21,
0, 0,17,18, 0, 0, 0,12,12,15,15, 0,12,12,15,15,
0,12,12,16,16, 0,13,13,15,15, 0,15,15,17,17, 0,
13,12,17,16, 0,14,14,17,16, 0,11,11,16,16, 0,14,
14,17,17, 0,14,14,17,17, 0,12,12,16,16, 0,15,15,
17,17, 0,11,11,16,16, 0,14,14,17,17, 0,14,14,16,
16, 0,15,15,18,17, 0, 0, 0,19, 0, 0,13,13,16,16,
0,16,16, 0,21, 0,14,14,16,16, 0,15,15,18,17, 0,
0, 0,19,19, 0,13,13,16,16, 0,18,17, 0,21, 0,14,
15,16,16, 0,11,11,16,16, 0,13,13,17,17, 0,13,13,
17,17, 0,16,16,16,17, 0,16,16,18,18, 0,12,12,17,
17, 0,16,15,18,17, 0,12,12,16,16, 0,16,15,19,19,
0,16,15,17,17, 0,12,12,17,18, 0,16,16,18,18, 0,
12,12,16,16, 0,16,16,19,19, 0,15,16,17,17, 0,15,
16,18,18, 0, 0, 0,20,20, 0,13,13,16,16, 0,18,18,
21,20, 0,15,15,16,16, 0,16,16,19,18, 0, 0, 0,19,
20, 0,14,14,17,17, 0,19,19, 0,21, 0,15,16,16,16,
0, 9, 9,14,14, 0,13,13,15,15, 0,14,14,15,15, 0,
0,21,19,19, 0, 0,21,18,18, 0,12,12,15,15, 0,15,
15,18,18, 0,14,13,15,15, 0,21,21,18,19, 0,21,20,
18,18, 0,13,13,16,16, 0,17,17,18,19, 0,14,14,15,
15, 0, 0,21,19,19, 0,21,20,18,19, 0,20,20,19,19,
0, 0, 0, 0, 0, 0,19,20,17,17, 0, 0, 0,21,21, 0,
21, 0,18,20, 0,21, 0,18,21, 0, 0, 0, 0, 0, 0,21,
21,19,18, 0, 0, 0, 0, 0, 0, 0, 0,19,19, 0,18,18,
15,15, 0,18,20,17,16, 0,20, 0,17,17, 0,21, 0,17,
17, 0,21,20,19,20, 0,19,19,16,16, 0,21,21,17,18,
0,19,19,17,17, 0,20,21,21,21, 0,20,20,18,18, 0,
19,19,16,16, 0, 0,21,18,19, 0,18,19,16,17, 0,21,
21,19,20, 0,21,19,18,18, 0,21,20,19,21, 0, 0, 0,
20,21, 0,19,19,17,16, 0, 0, 0, 0, 0, 0,21,20,17,
17, 0,20,21,19,18, 0, 0, 0, 0,21, 0,19,18,16,17,
0, 0, 0, 0, 0, 0,20,20,17,17, 0,11,11,14,14, 0,
13,13,16,16, 0,13,13,16,16, 0,17,17,21, 0, 0,17,
18, 0, 0, 0,12,12,16,16, 0,15,15,17,18, 0,12,12,
16,16, 0,16,16, 0,20, 0,17,17, 0,21, 0,12,12,17,
17, 0,16,16,19,20, 0,12,12,17,17, 0,17,17, 0,20,
0,17,17, 0, 0, 0,17,17,21, 0, 0, 0, 0, 0, 0, 0,
15,15, 0,20, 0,19,19, 0, 0, 0,18,18, 0, 0, 0,17,
17, 0, 0, 0, 0, 0, 0, 0, 0,15,15, 0, 0, 0,20,19,
0, 0, 0,19,18, 0, 0, 0,14,14,21,19, 0,16,16,20,
21, 0,16,16,20,20, 0,17,17,20, 0, 0,17,17,20,20,
0,15,15,20,20, 0,19,18,20, 0, 0,15,15,20,20, 0,
17,18,21,20, 0,17,17,20,21, 0,15,15,19,19, 0,19,
18,21,21, 0,15,15,19,20, 0,17,18, 0, 0, 0,17,17,
20,20, 0,17,18,20,21, 0, 0, 0, 0, 0, 0,15,15,20,
20, 0,19,19, 0, 0, 0,17,17,19,21, 0,17,17, 0,21,
0, 0, 0, 0,21, 0,15,15,20,19, 0, 0,20, 0, 0, 0,
17,17,21,20, 0,12,12,16,16, 0,14,14,17,17, 0,13,
13,17,17, 0,16,16,17,18, 0,17,16,18,18, 0,13,13,
18,17, 0,15,16,19,18, 0,13,13,16,16, 0,16,16,19,
19, 0,16,16,17,17, 0,13,12,17,17, 0,16,16,18,17,
0,12,12,16,16, 0,17,17,19,18, 0,16,15,16,16, 0,
16,17,18,19, 0, 0, 0,20,20, 0,14,14,17,16, 0,18,
18,21, 0, 0,16,16,16,16, 0,16,16,18,17, 0, 0,21,
21,21, 0,14,14,16,16, 0,21,20,21, 0, 0,16,16,16,
16, 0,10,10,14,14, 0,14,14,15,16, 0,14,14,15,15,
0, 0,21,18,18, 0, 0,21,18,19, 0,13,13,16,16, 0,
16,16,18,17, 0,14,14,15,15, 0,20, 0,18,18, 0,21,
0,18,17, 0,13,13,16,15, 0,17,17,19,19, 0,14,14,
15,15, 0,20,20,18,19, 0, 0, 0,18,17, 0, 0,21,18,
18, 0, 0, 0, 0, 0, 0,20,21,18,17, 0, 0, 0, 0, 0,
0, 0, 0,19,19, 0, 0,21,18,18, 0, 0, 0, 0, 0, 0,
21, 0,18,17, 0, 0, 0, 0,21, 0, 0, 0,19,20, 0,19,
19,16,16, 0, 0,21,18,17, 0,21, 0,18,18, 0,20, 0,
19,18, 0,21,20,19,19, 0,21,19,17,18, 0, 0,21,19,
19, 0,21,19,18,18, 0,21, 0,20,18, 0, 0,21,18,18,
0,20,21,17,17, 0,21, 0,18,18, 0,21,19,17,17, 0,
21, 0, 0,20, 0, 0,20,17,18, 0, 0, 0,19,20, 0, 0,
0,20,19, 0,19,21,17,18, 0,21, 0, 0, 0, 0,21,21,
18,17, 0, 0,21,18,18, 0, 0, 0, 0,21, 0,20,19,16,
17, 0, 0, 0, 0, 0, 0,21,20,17,17, 0,11,11,13,13,
0,13,13,16,16, 0,13,13,16,16, 0,17,17, 0,21, 0,
18,19,21, 0, 0,12,12,16,16, 0,15,15,19,18, 0,13,
13,16,16, 0,16,17,21,19, 0,17,17,21,21, 0,13,13,
16,16, 0,16,16,20,18, 0,13,13,16,16, 0,17,17, 0,
0, 0,18,18, 0, 0, 0,18,17, 0,20, 0, 0, 0, 0, 0,
0,15,15,21,21, 0,19,18, 0, 0, 0,17,17,21,21, 0,
17,17, 0, 0, 0, 0, 0, 0, 0, 0,15,15,20,21, 0,20,
20, 0, 0, 0,19,19, 0, 0, 0,14,15,21,19, 0,16,16,
0,21, 0,17,16,21,21, 0,17,18,21,20, 0,18,18, 0,
21, 0,16,16, 0,20, 0,19,19, 0, 0, 0,16,15, 0,20,
0,18,18, 0, 0, 0,17,17, 0,21, 0,16,16,20,20, 0,
20,19, 0, 0, 0,15,16,21,22, 0,18,18, 0, 0, 0,18,
17, 0, 0, 0,18,18, 0, 0, 0, 0, 0, 0, 0, 0,16,16,
21,20, 0,19,20, 0, 0, 0,18,17,21, 0, 0,17,18, 0,
0, 0, 0, 0, 0, 0, 0,16,16, 0,20, 0, 0,20, 0, 0,
0,18,18,22, 0,
};
 
static const static_codebook _44p1_p4_0 = {
5, 3125,
(char *)_vq_lengthlist__44p1_p4_0,
1, -528744448, 1616642048, 3, 0,
(long *)_vq_quantlist__44p1_p4_0,
0
};
 
static const long _vq_quantlist__44p1_p4_1[] = {
3,
2,
4,
1,
5,
0,
6,
};
 
static const char _vq_lengthlist__44p1_p4_1[] = {
2, 3, 3, 3, 3, 3, 3,
};
 
static const static_codebook _44p1_p4_1 = {
1, 7,
(char *)_vq_lengthlist__44p1_p4_1,
1, -533200896, 1611661312, 3, 0,
(long *)_vq_quantlist__44p1_p4_1,
0
};
 
static const long _vq_quantlist__44p1_p5_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p1_p5_0[] = {
1, 6, 6, 7, 8, 8, 7, 8, 8, 7, 9, 8,10,11,11, 9,
8, 8, 7, 8, 8,11,11,11, 9, 8, 8, 6, 7, 7,10,10,
10,10,10,10,10,10,10,14,13,13,12,11,11,10,10,10,
14,14,13,12,11,11, 6, 6, 6, 8, 5, 5, 8, 7, 7, 9,
7, 7,11,10,10, 9, 7, 7, 9, 7, 7,12,10,10,10, 7,
7, 7, 8, 8,12,11,10,12,10,10,11,10,10,15,13,13,
13,10,10,11,10,10,17,14,13,13,10,10, 7, 7, 7,12,
11,12,12,11,11,12,11,11,16,14,14,13,12,12,12,11,
11,17,15,14,14,12,12,10, 9, 9,13,11,11,13,11,11,
13,11,11,17,14,13,14,11,11,12,11,11,16,15,14,14,
11,11, 7, 8, 8,12,11,11,12,10,10,12,10,10,15,13,
13,14,11,10,12,10,10,16,14,14,14,10,10, 8, 7, 7,
12,11,11,12,11,11,12,11,11,17,14,14,14,12,12,12,
11,11,16,15,15,14,12,12,10,10,10,13,11,11,13,11,
11,13,11,12,16,14,14,14,11,11,13,12,11,16,15,15,
14,11,11,
};
 
static const static_codebook _44p1_p5_0 = {
5, 243,
(char *)_vq_lengthlist__44p1_p5_0,
1, -527106048, 1620377600, 2, 0,
(long *)_vq_quantlist__44p1_p5_0,
0
};
 
static const long _vq_quantlist__44p1_p5_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p1_p5_1[] = {
2, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 8, 8, 8,
7, 7, 8, 8, 8, 9, 8, 8, 9, 7, 7, 6, 6, 6, 9, 8,
7, 9, 7, 7, 9, 8, 8,10, 8, 8,10, 8, 8,10, 8, 8,
10, 8, 8,10, 8, 8, 7, 6, 6, 9, 6, 6, 9, 7, 7, 9,
7, 7,10, 8, 8, 9, 6, 6, 9, 7, 7,10, 8, 8, 9, 7,
7, 7, 8, 8,11, 9, 9,11, 9, 9,11, 8, 9,12, 9, 9,
12, 8, 8,11, 9, 9,12, 9, 9,12, 8, 8, 8, 7, 7,10,
9, 9,10,10, 9,10, 9, 9,11,10,10,11, 9, 9,11, 9,
9,11,10,11,11, 9, 9,10, 8, 8,11, 9, 9,10, 9, 9,
11, 9, 9,11,10,10,11, 9, 9,11, 9, 9,11,10,10,11,
9, 9, 9, 8, 8,11, 9, 9,12, 9, 9,11, 9, 9,12, 9,
9,12, 8, 8,12, 9, 9,12, 9, 9,12, 8, 8, 9, 7, 7,
11, 9, 9,11,10,10,11, 9, 9,11,11,11,11, 9, 9,11,
10,10,11,11,11,11, 9, 9,10, 9, 9,11, 9, 9,11,10,
10,11, 9, 9,11,10,10,11, 9, 9,11, 9,10,11,10,10,
11, 9, 9,
};
 
static const static_codebook _44p1_p5_1 = {
5, 243,
(char *)_vq_lengthlist__44p1_p5_1,
1, -530841600, 1616642048, 2, 0,
(long *)_vq_quantlist__44p1_p5_1,
0
};
 
static const long _vq_quantlist__44p1_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p1_p6_0[] = {
1, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,
};
 
static const static_codebook _44p1_p6_0 = {
5, 243,
(char *)_vq_lengthlist__44p1_p6_0,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44p1_p6_0,
0
};
 
static const long _vq_quantlist__44p1_p6_1[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p1_p6_1[] = {
1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
12,13,13,13,14,16,16,16,16,
};
 
static const static_codebook _44p1_p6_1 = {
1, 25,
(char *)_vq_lengthlist__44p1_p6_1,
1, -518864896, 1620639744, 5, 0,
(long *)_vq_quantlist__44p1_p6_1,
0
};
 
static const long _vq_quantlist__44p1_p6_2[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p1_p6_2[] = {
3, 4, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44p1_p6_2 = {
1, 25,
(char *)_vq_lengthlist__44p1_p6_2,
1, -529006592, 1611661312, 5, 0,
(long *)_vq_quantlist__44p1_p6_2,
0
};
 
static const char _huff_lengthlist__44p1_short[] = {
4, 5, 7, 8,10,13,14, 4, 2, 4, 6, 8,11,12, 7, 4,
3, 5, 8,12,14, 8, 5, 4, 4, 8,12,12, 9, 7, 7, 7,
9,10,11,13,11,11, 9, 7, 8,10,13,11,10, 6, 5, 7,
9,
};
 
static const static_codebook _huff_book__44p1_short = {
2, 49,
(char *)_huff_lengthlist__44p1_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p2_l0_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44p2_l0_0[] = {
1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 4, 6, 5,
8, 7, 9, 8,10, 9,11,10,11,11, 4, 5, 6, 7, 8, 8,
9, 9,10,10,10,10,11, 8, 9, 8,10, 8,10, 9,11,10,
11,11,11,11, 8, 8, 9, 8,10, 9,10,10,11,11,11,11,
11, 9,10,10,11,11,11,11,11,11,12,11,12,11, 9,10,
10,10,11,11,11,11,11,11,12,11,12,10,11,11,12,11,
12,12,12,12,12,12,12,12,10,11,11,11,11,12,12,12,
13,12,12,12,12,11,12,12,12,12,13,13,12,12,12,12,
12,12,11,12,12,12,12,13,13,12,13,12,12,12,12,12,
13,13,13,13,13,13,12,13,12,13,12,12,12,13,13,13,
13,13,13,13,12,13,12,12,12,
};
 
static const static_codebook _44p2_l0_0 = {
2, 169,
(char *)_vq_lengthlist__44p2_l0_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44p2_l0_0,
0
};
 
static const long _vq_quantlist__44p2_l0_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p2_l0_1[] = {
2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
5, 6, 6, 6, 5, 6, 5, 6, 6,
};
 
static const static_codebook _44p2_l0_1 = {
2, 25,
(char *)_vq_lengthlist__44p2_l0_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p2_l0_1,
0
};
 
static const long _vq_quantlist__44p2_l1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p2_l1_0[] = {
1, 4, 4, 4, 4, 4, 4, 4, 4,
};
 
static const static_codebook _44p2_l1_0 = {
2, 9,
(char *)_vq_lengthlist__44p2_l1_0,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44p2_l1_0,
0
};
 
static const char _huff_lengthlist__44p2_lfe[] = {
1, 3, 2, 3,
};
 
static const static_codebook _huff_book__44p2_lfe = {
2, 4,
(char *)_huff_lengthlist__44p2_lfe,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44p2_long[] = {
3, 4, 9, 8, 8,10,13,16, 4, 2, 9, 5, 7,10,14,18,
9, 7, 6, 5, 7, 9,12,16, 7, 5, 5, 3, 5, 8,11,13,
8, 7, 7, 5, 5, 7, 9,11,10,10, 9, 8, 6, 6, 8,10,
13,14,13,11, 9, 8, 9,10,17,18,16,14,11,10,10,10,
};
 
static const static_codebook _huff_book__44p2_long = {
2, 64,
(char *)_huff_lengthlist__44p2_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p2_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p2_p1_0[] = {
1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44p2_p1_0 = {
5, 243,
(char *)_vq_lengthlist__44p2_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p2_p1_0,
0
};
 
static const long _vq_quantlist__44p2_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p2_p2_0[] = {
1, 4, 4, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0,
10,10, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0,
0, 0, 0, 0, 9, 9, 0, 0, 0,11,11, 0, 0, 0, 0, 0,
0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0,
0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0,11,11, 0, 0,
0, 0, 0, 0, 0, 0,10,10, 0, 0, 0,11,11, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0,
6, 6, 0, 0, 0, 7, 7, 0, 0, 0, 8, 8, 0, 0, 0, 0,
0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7,
0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0,
0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0,
0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,
8, 8, 0, 0, 0, 9, 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, 8, 8, 0, 0, 0, 8, 8, 0,
0, 0,10,10, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0,
0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,
11,11, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0,
0, 0, 0, 0, 9, 9, 0, 0, 0,11,10, 0, 0, 0, 0, 0,
0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0,
0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 0, 0, 0,10,10, 0, 0, 0,11,11, 0, 0,
0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,11,11, 0, 0, 0,
0, 0, 0, 0, 0,10,10, 0, 0, 0,13,13, 0, 0, 0, 0,
0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,12,12,
0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,13,13, 0,
0, 0, 0, 0, 0, 0, 0,12,12, 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, 6,
6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 9, 0, 0, 0,11,11,
0, 0, 0,12,12, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0,
0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,12,11, 0, 0,
0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,13,13, 0, 0, 0,
0, 0, 0, 0, 0,12,12, 0, 0, 0,13,13, 0, 0, 0, 0,
0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,12,12,
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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 0, 0, 0,10,10, 0, 0, 0,11,11, 0,
0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,13,13, 0, 0,
0, 0, 0, 0, 0, 0,12,12, 0, 0, 0,13,13, 0, 0, 0,
0, 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0,10,
10, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,14,13,
0, 0, 0, 0, 0, 0, 0, 0,13,12, 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,
6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 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, 9, 0, 0, 0,11,
11, 0, 0, 0,12,12, 0, 0, 0,12,12, 0, 0, 0, 0, 0,
0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,12,12, 0,
0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,13,13, 0, 0,
0, 0, 0, 0, 0, 0,12,12, 0, 0, 0,12,12, 0, 0, 0,
0, 0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,12,
12, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 9, 0, 0, 0,11,11, 0, 0, 0,12,12,
0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,12,12, 0,
0, 0, 0, 0, 0, 0, 0,11,11, 0, 0, 0,14,14, 0, 0,
0, 0, 0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,
12,12, 0, 0, 0,12,13, 0, 0, 0, 0, 0, 0, 0, 0,12,
12, 0, 0, 0, 0, 0, 0, 0, 0,11,11, 0, 0, 0,14,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, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 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, 9, 0, 0, 0,
11,11, 0, 0, 0,12,12, 0, 0, 0,13,13, 0, 0, 0, 0,
0, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,12,12,
0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0,12,12, 0,
0, 0, 0, 0, 0, 0, 0,12,12, 0, 0, 0,14,14, 0, 0,
0, 0, 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0,
12,12, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44p2_p2_0 = {
5, 3125,
(char *)_vq_lengthlist__44p2_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p2_p2_0,
0
};
 
static const long _vq_quantlist__44p2_p3_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p2_p3_0[] = {
1, 5, 5, 6, 7, 7, 0, 8, 8, 6, 9, 9, 8,11,11, 0,
8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 5, 7, 7, 7,10,
10, 0,12,12, 8,11,11, 9,12,12, 0,11,12, 0,12,12,
0,15,15, 0,12,12, 0, 6, 6, 0, 6, 6, 0, 7, 7, 0,
7, 7, 0,10,10, 0, 7, 7, 0, 8, 8, 0,11,11, 0, 7,
7, 6, 7, 7,10, 9, 9, 0,11,10,10, 9, 9,12,12,12,
0,10,10, 0,11,11, 0,13,13, 0,11,11, 7, 6, 6,10,
10,10, 0,11,11,11,11,11,12,12,12, 0,11,11, 0,12,
12, 0,15,15, 0,11,11, 0,11,11, 0,11,11, 0,12,12,
0,12,12, 0,14,14, 0,12,12, 0,12,12, 0,15,15, 0,
11,11, 0, 8, 8, 0,10,10, 0,11,11, 0,11,11, 0,12,
12, 0,12,12, 0,11,11, 0,15,15, 0,11,11, 0, 6, 6,
0,10,10, 0,12,12, 0,10,10, 0,13,13, 0,12,12, 0,
13,13, 0,14,14, 0,12,12, 0, 0, 0, 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 const static_codebook _44p2_p3_0 = {
5, 243,
(char *)_vq_lengthlist__44p2_p3_0,
1, -533200896, 1614282752, 2, 0,
(long *)_vq_quantlist__44p2_p3_0,
0
};
 
static const long _vq_quantlist__44p2_p3_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p2_p3_1[] = {
2, 3, 3, 0, 8, 8, 0, 8, 8, 0, 9, 9, 0, 9, 9, 0,
9, 9, 0, 9, 9, 0, 9, 9, 0, 8, 8, 0, 6, 6, 0, 7,
7, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 8, 8,
0, 8, 8, 0, 8, 8, 0, 6, 6, 0, 6, 6, 0, 6, 6, 0,
8, 8, 0, 9, 9, 0, 7, 7, 0, 8, 8, 0, 9, 9, 0, 6,
6, 0, 8, 8, 0, 9, 9, 0, 9, 9, 0,10,10, 0,10,10,
0,10,10, 0,10,10, 0,11,11, 0, 9, 9, 0, 7, 7, 0,
10,10, 0,10,10, 0,12,11, 0,12,12, 0,11,11, 0,11,
11, 0,12,12, 0,10,10, 0, 7, 7, 0,10,10, 0,10,10,
0,12,12, 0,11,12, 0,11,11, 0,11,11, 0,11,11, 0,
10,10, 0, 8, 8, 0, 9, 9, 0, 9, 9, 0,10,10, 0,10,
10, 0,10, 9, 0,10,10, 0,10,10, 0, 9, 9, 0, 6, 6,
0,10,10, 0,10,10, 0,11,11, 0,12,12, 0,11,11, 0,
11,11, 0,12,12, 0,11,11, 0, 7, 7, 0, 9, 9, 0, 9,
9, 0,11,11, 0,11,11, 0,10,10, 0,10,10, 0,11,11,
0, 9, 9,
};
 
static const static_codebook _44p2_p3_1 = {
5, 243,
(char *)_vq_lengthlist__44p2_p3_1,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p2_p3_1,
0
};
 
static const long _vq_quantlist__44p2_p4_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p2_p4_0[] = {
1, 6, 6, 6, 7, 7, 7, 8, 8, 7, 8, 8,10,11,11, 9,
8, 8, 7, 8, 8,11,11,11, 9, 8, 8, 6, 7, 7, 9,11,
11, 9,11,11,10,11,11,12,13,13,11,12,12,10,11,11,
13,14,14,12,12,12, 6, 6, 6, 8, 6, 6, 8, 7, 7, 9,
7, 7,11,10,10,10, 6, 6, 9, 7, 7,12,10,10,11, 6,
7, 7, 7, 7,11,10,10,12,10,10,11,10,10,14,13,13,
13,10,10,12,11,11,15,13,13,14,10,10, 8, 7, 7,12,
11,11,12,11,11,11,11,11,14,14,14,13,12,12,12,11,
11,15,15,15,13,12,12, 0,10,10, 0,11,11, 0,11,11,
0,11,11, 0,14,14, 0,11,11, 0,11,11, 0,15,15, 0,
11,11, 7, 8, 8,12,10,10,12,10,10,12,11,11,15,13,
13,14,11,11,12,10,10,16,14,14,14,10,10, 8, 7, 7,
12,11,11,12,11,11,12,11,11,16,14,14,14,12,12,13,
12,12,15,14,14,15,12,12, 0,11,11, 0,12,12, 0,12,
12, 0,12,12, 0,15,15, 0,12,12, 0,12,12, 0,14,14,
0,12,12,
};
 
static const static_codebook _44p2_p4_0 = {
5, 243,
(char *)_vq_lengthlist__44p2_p4_0,
1, -531365888, 1616117760, 2, 0,
(long *)_vq_quantlist__44p2_p4_0,
0
};
 
static const long _vq_quantlist__44p2_p4_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p2_p4_1[] = {
3, 4, 4, 8, 8,11, 9, 9,12,12,11,10,10,12,12,12,
10,10,11,11,12,12,12,12,12,12,11,11,13,13,12,12,
12,13,13,12,10,10,12,12,12,11,11,13,13,12,13,13,
13,13,12,11,11,13,13,12,12,12,13,13,12,10,10,12,
12,12,11,11,13,13,12,13,13,12,12,12,11,11,13,13,
12,13,13,13,13,12,11,11,12,12,12,11,11,12,12,12,
13,13,12,12,12,13,13,13,13,12,13,13,13,13,13,13,
13,12,12,12,13,13,13,13,12,13,13,12,12,11, 8, 8,
10,10,12,11,11,11,11,12,10,10,10,10,13,11,11,10,
10,13,11,11,10,10,13,12,12,12,12,13,11,11,11,11,
13,12,12,11,11,13,12,12,11,11,13,12,12,12,11,13,
12,12,12,12,13,11,11,11,11,13,12,12,11,11,13,11,
12,11,11,13,12,12,11,11,14,12,12,11,11,13,11,11,
11,11,14,12,12,11,11,13,11,12,10,10,14,12,12,11,
11,14,12,12,11,11,14,11,11,11,11,14,12,12,11,11,
13,12,12,11,11,14,12,12,11,11,11, 8, 8,10,10,12,
7, 7,10,10,12, 9, 9,11,11,13, 9, 9, 9, 9,13,13,
13,10,10,13, 9, 9,12,12,13,13,13,12,12,13, 9, 8,
11,11,13,10,10,12,12,14,13,13,11,11,13, 9, 9,11,
11,13,13,13,12,12,13, 9, 9,10,10,13,10,10,11,11,
13,13,13,10,10,14,10,10,11,11,14,14,14,12,12,13,
9, 9,10,10,13,10,10,11,11,14,13,14,10,10,14,14,
14,11,12,14,14,14,14,14,14,13,13,10,10,13,14,14,
11,11,14,14,14,10,10,14, 9, 9, 9, 9,14, 9, 9, 9,
9,14,10,10, 9, 9,14,10,10, 8, 8,14,11,11, 8, 8,
15,11,11,10,10,15,12,12,10,10,15,10,10,10,10,15,
11,11,10,10,15,13,13,10,10,15,11,11,10,10,15,12,
12,10,10,15,10,10,10,10,15,11,11,10,10,15,13,13,
10,10,15,11,11,10,10,15,12,12,10,10,15,11,11, 9,
9,15,11,11, 9, 9,15,13,13, 9, 9,15,13,13,10,10,
15,12,12,10,10,15,13,13,10,10,15,13,12, 9, 9,15,
13,13, 9, 9,14,12,12, 9, 9,14,13,13, 9, 9,14,13,
13, 9, 9,14,13,13, 7, 7,14,13,13, 8, 8,15,14,14,
10,10,15,14,14,10,10,15,14,14,10,10,15,14,14,10,
10,15,14,14, 9, 9,15,14,14,10,10,15,14,14,10,10,
14,14,14, 9, 9,15,14,14,10,10,14,14,14, 9, 9,15,
14,14,10,10,15,14,14,10,10,14,14,14, 9, 9,14,14,
14, 9, 9,14,14,14, 8, 8,15,14,14,10,10,15,14,14,
11,11,15,14,14, 9, 9,15,14,14, 9, 9,14,14,14, 8,
8,13, 9, 9,12,12,17,11,11,12,12,17,12,12,12,12,
17,12,12,11,11,18,15,15,12,12,17,12,12,12,12,17,
14,15,13,13,17,12,12,12,12,17,13,13,12,13,17,15,
15,12,12,18,13,13,13,13,18,15,15,13,13,18,12,12,
12,12,18,13,13,13,13,18,15,15,12,12,18,13,13,12,
12,18,15,15,13,13,18,13,13,12,12,17,13,13,12,12,
17,15,15,12,12,18,15,15,13,13,18,15,15,13,14,18,
15,16,12,12,18,15,15,12,12,18,16,16,12,12,13, 8,
8,10,10,14,15,14,11,11,14,15,15,12,12,15,14,14,
12,11,15,15,15,12,12,15,15,15,12,12,15,15,15,13,
13,15,15,15,12,12,15,15,15,13,13,15,15,15,13,13,
15,15,15,13,13,15,15,16,13,13,15,15,15,12,12,15,
15,15,13,13,15,15,15,13,13,15,15,15,13,13,15,15,
15,13,13,15,15,14,12,12,15,15,15,12,12,16,15,14,
12,12,16,15,15,13,13,16,16,16,13,13,16,15,15,12,
12,15,15,15,13,13,15,15,15,12,12,13,12,12,10,10,
14,14,14,11,11,15,14,14,12,12,15,14,14,11,11,15,
14,14,11,11,15,15,15,13,13,15,14,14,13,13,15,15,
15,12,12,15,14,15,13,13,16,15,15,12,12,15,15,15,
13,13,16,14,14,13,13,15,15,15,12,12,15,15,15,13,
13,16,15,15,12,12,16,15,15,12,12,16,14,14,13,13,
15,15,15,11,11,15,15,15,12,12,16,15,15,11,11,16,
15,15,13,13,16,14,15,14,14,16,15,15,12,12,16,15,
14,12,12,16,15,15,12,12,14,10,10, 9, 9,14,11,11,
12,12,14,12,12,13,13,14,12,12,12,12,15,14,14,13,
13,15,13,13,14,14,15,14,14,15,15,15,12,12,13,13,
15,13,13,14,14,15,14,14,13,13,15,13,13,13,14,15,
14,14,15,15,15,12,12,13,13,15,13,13,14,14,15,14,
14,13,13,15,13,13,14,14,15,14,14,15,15,15,13,13,
12,12,15,13,13,13,13,15,14,14,13,12,15,15,15,14,
15,15,15,14,20,20,15,14,14,13,13,15,14,14,13,13,
15,14,14,13,13,14,12,12, 9, 9,14,14,14,12,12,14,
13,13,12,13,14,14,14,12,12,15,14,14,12,12,15,14,
14,14,13,15,14,14,14,14,15,14,14,13,13,15,14,14,
13,13,15,15,15,14,14,15,14,14,13,13,15,14,14,14,
14,15,14,14,13,13,15,14,14,13,13,15,15,15,15,14,
15,15,15,13,13,15,14,14,14,14,15,14,14,13,13,15,
14,14,13,13,14,15,15,14,14,15,15,15,14,14,15,14,
14,14,14,15,15,15,14,14,15,14,14,13,14,15,15,15,
14,14,13,10,10,12,12,17,11,11,12,12,17,12,12,12,
12,17,12,12,11,11,17,15,15,12,11,18,13,13,13,13,
18,15,15,13,13,17,12,12,12,12,18,13,13,13,13,17,
15,15,12,12,17,12,12,12,12,17,15,15,13,13,17,12,
12,12,12,17,13,13,12,12,17,15,15,12,12,18,14,13,
12,12,18,15,15,13,13,18,13,13,12,12,18,13,13,12,
12,18,16,16,12,12,18,16,16,12,12,18,15,15,13,13,
18,16,16,12,12,17,15,15,12,12,17,16,16,12,12,13,
8, 8,10,10,14,14,15,12,12,14,15,15,12,12,15,14,
14,12,12,15,15,14,12,12,15,15,15,13,13,15,15,15,
13,13,15,15,15,12,12,16,15,15,13,13,16,15,15,13,
13,15,15,15,12,12,15,15,15,14,14,15,15,15,12,12,
15,15,15,13,13,16,15,15,13,13,15,15,15,13,13,16,
15,15,13,13,15,15,14,12,12,15,15,15,12,12,16,14,
15,13,13,16,15,15,13,13,15,16,15,13,13,16,15,14,
13,13,16,15,15,13,13,16,15,15,13,13,13,12,12,11,
11,14,14,14,11,11,14,14,14,12,12,15,14,14,11,11,
16,14,14,11,11,15,15,15,12,13,16,14,14,13,13,15,
15,15,12,12,15,14,14,13,13,16,15,15,12,12,15,15,
15,12,12,15,14,14,13,13,15,15,15,12,12,15,14,14,
12,12,16,15,15,12,12,16,15,15,12,12,16,14,14,13,
13,15,15,15,11,11,15,15,14,12,12,16,15,15,11,11,
16,15,15,12,12,16,14,14,13,13,16,15,15,11,11,16,
14,14,12,12,16,15,15,11,11,14,10,10, 9, 9,14,11,
11,12,12,14,12,12,13,14,14,12,12,12,12,14,14,14,
13,13,15,13,13,14,14,15,14,14,15,15,15,12,12,13,
13,15,13,13,14,14,15,15,15,14,14,15,13,13,14,14,
15,15,15,15,15,15,12,12,13,13,15,13,13,14,14,15,
14,14,13,13,15,13,13,14,14,15,14,14,15,15,15,12,
12,13,13,15,13,13,13,13,14,14,14,13,13,15,15,15,
14,15,15,15,15,21,19,15,14,14,13,13,15,14,14,14,
14,14,14,14,13,13,14,12,12, 9, 9,14,14,14,12,12,
14,14,13,13,13,14,14,14,12,12,14,14,14,12,12,15,
14,14,13,13,15,14,14,14,14,15,14,14,13,13,15,14,
14,13,13,15,15,15,15,15,15,14,14,13,13,15,14,14,
14,14,15,14,14,13,13,15,14,14,13,13,14,15,15,15,
15,15,14,15,13,13,15,14,14,14,14,15,14,14,13,13,
15,14,14,13,13,14,15,15,14,14,15,15,15,14,14,15,
14,14,14,14,15,15,15,15,15,15,14,14,14,13,14,15,
15,14,14,13,10,10,12,12,18,12,12,12,12,17,12,12,
12,12,18,13,13,11,11,18,15,14,11,11,17,13,13,13,
13,18,15,15,12,12,18,12,12,12,12,17,13,13,12,12,
18,15,15,12,12,18,13,13,13,12,18,15,15,13,13,18,
13,13,12,12,18,13,13,12,12,18,15,15,12,12,17,13,
13,12,12,17,15,15,12,12,17,12,12,11,11,17,13,13,
11,11,17,15,15,11,11,18,16,16,12,12,18,15,15,13,
13,18,15,15,11,11,17,15,15,12,12,18,15,15,11,11,
13, 8, 8,10,10,14,14,14,11,11,15,15,15,12,12,15,
14,14,11,11,16,14,14,12,12,15,15,15,12,12,15,15,
15,13,13,15,15,15,12,12,15,15,15,12,12,16,15,15,
13,13,15,15,15,12,12,15,15,15,13,13,16,15,15,12,
12,15,15,15,12,12,16,15,15,13,13,16,15,15,12,12,
15,15,15,13,13,15,14,14,12,12,15,15,15,12,12,16,
15,14,12,12,16,15,15,13,13,16,16,16,13,13,16,14,
15,13,13,15,15,15,13,13,16,15,15,12,12,13,12,12,
10,10,14,14,14,11,11,15,14,14,12,12,15,14,14,11,
11,16,14,14,11,11,15,14,15,12,12,15,14,14,13,13,
15,15,15,12,12,15,14,14,12,12,15,14,15,12,12,15,
15,15,12,12,16,14,14,13,13,15,15,15,11,12,16,14,
14,12,12,16,15,15,12,12,15,15,15,12,12,16,14,14,
12,12,15,15,15,11,11,15,14,14,11,12,15,15,14,11,
11,16,15,15,12,12,16,14,14,13,13,16,15,15,11,11,
16,14,14,12,12,16,15,15,11,11,13,10,10, 8, 8,14,
12,12,12,12,14,12,12,13,13,14,12,12,12,12,14,14,
14,13,13,15,13,13,14,14,15,15,14,15,15,15,13,13,
13,13,15,13,13,14,14,15,14,15,14,14,15,13,13,13,
13,15,15,15,15,15,15,12,12,13,12,15,13,13,14,14,
15,14,14,13,13,15,13,13,14,13,15,15,15,16,16,15,
13,13,12,12,15,13,13,13,13,14,14,14,12,12,15,15,
15,14,14,15,15,15,20,20,15,14,14,13,13,15,15,14,
14,14,15,14,14,13,13,13,12,12, 9, 9,14,13,13,12,
12,14,13,13,12,12,14,14,14,12,12,14,14,14,13,13,
15,14,14,13,13,15,14,14,14,14,15,15,14,12,12,15,
14,14,13,13,15,14,15,14,15,15,14,14,13,13,15,14,
14,14,14,15,14,14,12,12,15,14,14,13,13,14,15,14,
15,14,15,14,14,13,13,15,14,14,14,14,15,14,14,12,
12,15,14,14,13,13,15,15,15,14,14,15,15,15,14,14,
16,14,14,14,14,15,15,15,14,14,15,14,14,14,14,14,
15,15,14,14,13,13,13,12,13,17,15,15,12,12,17,15,
15,12,12,18,15,15,11,11,17,16,16,11,11,18,16,16,
13,13,18,17,16,13,13,18,16,16,12,12,18,16,16,12,
12,18,17,17,12,12,17,16,16,12,13,17,16,16,12,13,
17,16,16,12,12,17,16,16,12,12,18,17,16,12,12,18,
16,16,12,12,17,16,17,12,12,18,15,15,11,11,18,15,
15,12,12,17,17,17,11,11,17,17,17,12,12,17,16,16,
13,13,18,16,16,11,11,18,16,16,12,12,18,17,16,11,
11,14,14,14,10,10,16,15,14,11,11,16,15,15,12,12,
16,14,14,12,12,17,14,14,13,13,17,15,15,13,13,17,
15,15,14,14,16,15,15,12,12,16,15,15,13,13,18,15,
15,14,14,16,15,15,12,12,16,15,15,14,14,16,15,15,
12,12,16,15,15,13,13,17,15,15,13,13,17,15,15,13,
13,17,15,15,14,14,16,14,14,12,12,17,15,15,12,12,
18,15,15,13,13,17,15,15,14,14,17,16,16,15,15,17,
15,14,13,13,17,15,15,14,14,17,15,15,13,13,14,12,
12,11,11,15,14,14,12,12,16,14,14,12,12,16,14,14,
11,11,17,14,14,12,12,16,15,14,13,13,16,14,14,13,
13,16,15,15,12,12,16,14,14,13,13,17,15,15,13,13,
16,15,15,13,13,17,14,14,13,13,16,15,15,12,12,16,
14,14,12,12,16,15,15,12,12,17,15,15,12,12,17,14,
14,13,13,16,15,15,12,12,16,14,14,12,12,16,15,15,
12,12,17,15,15,13,13,17,14,14,13,13,17,15,15,12,
12,17,14,14,12,12,17,15,15,12,12,14,14,14, 8, 8,
14,14,14,13,13,14,15,15,14,14,14,14,14,14,14,15,
15,15,19,19,15,15,15,14,14,15,15,16,20,19,15,15,
15,14,14,15,16,16,15,15,15,15,15,19,19,15,15,15,
14,14,15,16,16,19,20,15,15,15,14,14,15,15,15,15,
15,15,15,15,19,19,15,15,15,15,15,15,15,16,19,20,
15,14,15,14,14,15,15,15,15,15,15,15,15,20,19,15,
15,15,21,19,15,16,16,20,20,15,15,14,19,19,15,15,
16,20,21,15,15,15,20,19,13,12,12, 9, 9,14,14,14,
12,12,14,13,13,13,13,14,14,14,13,13,15,14,14,20,
19,15,14,14,14,13,15,14,14,19,19,15,15,14,13,13,
15,14,14,14,14,15,15,15,19,20,15,14,14,13,13,15,
14,14,20,19,14,15,14,13,13,15,14,14,14,13,15,15,
15,19,20,15,15,14,14,14,15,14,14,21,19,15,15,15,
13,13,15,14,14,14,14,14,15,15,20,20,15,15,15,21,
20,15,14,14,19,20,15,15,15,20,20,15,14,14,19,20,
15,15,15,21,19,
};
 
static const static_codebook _44p2_p4_1 = {
5, 3125,
(char *)_vq_lengthlist__44p2_p4_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p2_p4_1,
0
};
 
static const long _vq_quantlist__44p2_p5_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p2_p5_0[] = {
2, 6, 6,14,14, 6, 7, 7,14,14, 7, 7, 7,15,15, 0,
13,13,16,16, 0,13,13,15,15, 7, 8, 8,15,15, 9,10,
10,17,16, 9, 8, 8,15,15, 0,13,13,18,17, 0,13,13,
16,16, 8, 8, 8,15,15,12,11,11,16,17, 9, 8, 8,14,
14, 0,13,13,18,17, 0,13,13,16,15, 0,14,14,18,17,
0,20,22,18,20, 0,12,12,16,16, 0,16,16,22,20, 0,
14,14,16,16, 0,14,14,17,17, 0,22,22,22,19, 0,12,
13,16,16, 0,17,17, 0, 0, 0,15,15,16,16, 5, 7, 7,
13,13, 9, 9, 9,15,14,10,10,10,14,14, 0,21,21,18,
17, 0,21,22,18,17, 9,10,10,14,14,12,12,12,17,17,
12,10,10,14,14, 0,19,21,18,17, 0,20,22,18,18,11,
10,10,14,14,14,13,13,18,17,12,11,11,14,14, 0,22,
19,17,18, 0,20, 0,18,17, 0,22,21,17,17, 0, 0, 0,
0, 0, 0,20,22,17,17, 0,22, 0,21,19, 0,22, 0,18,
18, 0, 0,22,18,19, 0, 0, 0, 0, 0, 0,19,21,17,17,
0, 0, 0,20,20, 0, 0, 0,18,18, 6, 6, 6,13,12, 8,
6, 6,11,11, 8, 6, 6,13,13, 0, 9, 9,11,11, 0,11,
11,14,14, 9, 7, 7,13,13,11, 9, 9,13,13,10, 6, 6,
13,13, 0,10,10,14,14, 0,10,10,13,13, 9, 7, 7,13,
14,13, 9, 9,13,13,10, 6, 6,13,12, 0,11,11,15,15,
0,10,10,13,13, 0,12,12,15,15, 0,19, 0,17,17, 0,
9, 9,13,13, 0,13,14,19,20, 0,11,11,13,13, 0,11,
11,14,14, 0,19,20,17,18, 0,10,10,13,13, 0,15,15,
21,19, 0,12,12,13,13, 0,10,10,12,13, 0,11,11,15,
15, 0,11,11,15,15, 0,15,15,22, 0, 0,16,17,22, 0,
0,11,11,15,15, 0,14,14,18,17, 0,11,11,15,16, 0,
15,15,22,21, 0,16,16, 0,20, 0,12,12,16,15, 0,15,
14,19,19, 0,11,11,16,16, 0,15,15,21, 0, 0,16,15,
0, 0, 0,16,16,22,21, 0, 0, 0, 0, 0, 0,15,15,20,
20, 0,18,18, 0, 0, 0,16,17, 0, 0, 0,17,17, 0,22,
0, 0, 0, 0, 0, 0,15,15,21,22, 0,20,18, 0, 0, 0,
18,17,22, 0, 0,10,10,12,11, 0,10,10,10,10, 0,11,
11,12,12, 0,11,11, 9, 9, 0,13,13,12,12, 0,11,11,
12,12, 0,13,13,12,12, 0,10,10,12,12, 0,13,12,13,
13, 0,12,12,12,12, 0,11,11,12,12, 0,13,13,12,12,
0,10,10,12,12, 0,13,13,13,14, 0,12,12,12,12, 0,
13,14,14,14, 0,20,21,15,15, 0,12,11,12,12, 0,15,
16,20,22, 0,13,12,11,11, 0,13,13,14,13, 0,20, 0,
16,15, 0,12,12,12,12, 0,16,16,22,21, 0,13,13,12,
12, 6, 7, 7,16,16,11, 9, 9,15,15,12, 9, 9,16,16,
0,13,13,14,14, 0,14,14,16,17,10, 9, 9,16,16,14,
12,12,16,16,12, 9, 9,15,15, 0,13,13,18,18, 0,13,
13,15,16,12,10,10,17,18,15,12,12,17,17,13, 9, 9,
16,16, 0,13,13,17,18, 0,14,14,16,16, 0,15,15,18,
18, 0,22, 0,20,20, 0,12,12,16,16, 0,16,16,20,22,
0,14,14,16,16, 0,15,14,18,18, 0, 0,22,19,21, 0,
13,13,16,17, 0,17,17,22,22, 0,15,15,16,16, 7, 7,
7,14,14,11,10,10,15,15,12,10,10,15,14, 0,22, 0,
18,18, 0, 0,21,17,18,11,10,10,15,15,14,12,12,17,
17,14,11,11,15,15, 0,22,20,18,18, 0, 0,20,18,17,
12,10,10,16,16,17,14,14,19,18,14,11,11,15,15, 0,
21,22,19,19, 0,21,22,18,18, 0,22, 0,19,21, 0, 0,
0, 0, 0, 0,22,22,18,17, 0, 0, 0,21,20, 0,22,22,
20,19, 0, 0,22,20,20, 0, 0, 0, 0, 0, 0,20,21,17,
17, 0, 0,22,21,21, 0, 0, 0,18,18,10, 9, 9,14,14,
13,10,10,13,13,13,10,11,14,14, 0,13,13,12,12, 0,
15,15,16,16,13,10,10,15,15,15,12,12,14,14,15,10,
10,14,15, 0,14,14,16,15, 0,14,14,15,15,13,10,10,
15,15,18,13,13,15,15,15,10,10,14,15, 0,14,14,16,
16, 0,14,14,15,15, 0,15,15,16,16, 0,22, 0,18,18,
0,12,13,14,14, 0,17,17,22, 0, 0,14,14,14,14, 0,
15,15,16,16, 0,22, 0,18,17, 0,13,13,14,14, 0,19,
18,21,22, 0,15,15,14,14, 0,11,11,13,13, 0,12,12,
16,16, 0,12,12,16,16, 0,15,16,21, 0, 0,16,17, 0,
22, 0,12,12,16,16, 0,14,14,17,18, 0,11,11,16,16,
0,15,15,21,22, 0,16,16, 0, 0, 0,12,12,16,16, 0,
15,15, 0,19, 0,12,12,16,17, 0,16,16,22, 0, 0,16,
16, 0,22, 0,17,17, 0,22, 0, 0, 0, 0, 0, 0,15,15,
20,19, 0,18,18, 0, 0, 0,17,18, 0, 0, 0,17,17, 0,
0, 0, 0, 0, 0, 0, 0,15,15, 0,22, 0,20,18, 0, 0,
0,18,18,22,22, 0,11,11,14,14, 0,12,12,14,14, 0,
12,12,15,15, 0,13,13,14,14, 0,14,14,17,16, 0,12,
12,16,16, 0,14,14,16,16, 0,11,11,15,15, 0,13,13,
16,16, 0,13,13,15,15, 0,12,12,15,15, 0,15,14,16,
16, 0,11,11,15,15, 0,14,14,17,17, 0,13,13,15,15,
0,15,15,17,17, 0, 0, 0,19,18, 0,13,12,15,15, 0,
16,16, 0, 0, 0,14,14,15,15, 0,14,14,16,17, 0,22,
0,18,18, 0,13,13,15,15, 0,17,17, 0, 0, 0,14,14,
15,15, 8, 8, 8,16,16,12,10,10,16,16,13, 9, 9,16,
16, 0,14,14,17,17, 0,14,14,17,16,12,10,10,18,17,
14,11,11,18,18,14, 9,10,16,16, 0,13,13,18,19, 0,
14,13,16,16,12, 9, 9,16,16,17,13,13,17,17,14, 9,
9,15,15, 0,14,14,19,20, 0,13,13,15,15, 0,15,15,
18,19, 0, 0,22,22,22, 0,13,13,17,17, 0,16,16,19,
21, 0,14,14,16,16, 0,14,14,18,18, 0, 0, 0, 0, 0,
0,13,13,16,16, 0,18,18, 0, 0, 0,15,15,16,16, 8,
7, 7,14,14,12,10,10,15,15,13,10,10,15,14, 0,22,
0,18,18, 0,22, 0,18,18,12,10,10,16,15,15,12,12,
17,17,14,11,11,15,15, 0,20,21,19,18, 0, 0, 0,17,
18,13,11,11,15,15,16,13,13,18,18,15,11,11,14,14,
0,22,21,19,19, 0,21,22,18,18, 0,22,22,20,18, 0,
0, 0, 0, 0, 0,22,19,17,17, 0, 0, 0,22,21, 0, 0,
22,19,17, 0, 0,22,19,19, 0, 0, 0, 0, 0, 0,22,21,
18,17, 0, 0, 0,22, 0, 0, 0, 0,19,19, 0,10,10,14,
14, 0,11,11,15,14, 0,11,11,15,15, 0,14,14,15,14,
0,15,15,16,16, 0,11,11,16,16, 0,13,13,16,16, 0,
11,11,15,15, 0,14,14,17,16, 0,14,14,15,15, 0,11,
11,16,16, 0,14,13,15,15, 0,11,11,15,15, 0,15,15,
17,17, 0,14,14,15,14, 0,16,16,17,17, 0, 0,22,18,
18, 0,13,13,15,15, 0,17,17,22, 0, 0,15,15,15,14,
0,15,16,16,17, 0, 0,22,18,19, 0,13,13,15,15, 0,
20,18,21, 0, 0,15,15,14,14, 0,11,11,13,13, 0,12,
12,16,16, 0,12,12,16,15, 0,15,16,22,22, 0,17,17,
0, 0, 0,12,12,16,16, 0,14,14,18,18, 0,11,11,16,
16, 0,15,16,22,20, 0,16,16, 0,22, 0,12,12,16,16,
0,15,15,18,20, 0,11,11,16,16, 0,15,15, 0, 0, 0,
16,16, 0, 0, 0,17,17,22, 0, 0, 0, 0, 0, 0, 0,15,
15, 0,21, 0,18,18, 0, 0, 0,17,16, 0, 0, 0,17,17,
22,22, 0, 0, 0, 0, 0, 0,15,15,21, 0, 0,20,22, 0,
0, 0,18,18, 0, 0, 0,12,12,15,15, 0,12,12,15,15,
0,12,12,16,16, 0,13,13,15,15, 0,15,15,17,17, 0,
13,12,16,16, 0,14,14,16,16, 0,12,11,16,16, 0,14,
14,17,17, 0,14,14,16,16, 0,12,12,16,16, 0,15,15,
17,16, 0,11,11,15,16, 0,14,14,17,17, 0,14,14,16,
16, 0,15,15,18,18, 0, 0, 0,22,19, 0,13,13,15,16,
0,16,17, 0, 0, 0,14,14,16,16, 0,15,15,18,17, 0,
0, 0,20,20, 0,13,13,16,15, 0,17,17,22,22, 0,14,
14,15,15, 0,11,11,16,16, 0,13,13,16,17, 0,13,13,
17,18, 0,16,16,17,17, 0,17,17,18,18, 0,12,12,17,
17, 0,16,15,18,18, 0,12,12,16,16, 0,16,16,18,18,
0,15,15,17,17, 0,12,12,17,17, 0,16,16,19,18, 0,
12,12,16,17, 0,16,16,19,19, 0,15,16,16,17, 0,16,
16,19,17, 0, 0, 0,20,22, 0,13,13,16,16, 0,19,18,
21, 0, 0,15,15,16,16, 0,16,16,18,18, 0, 0, 0,22,
21, 0,14,14,16,16, 0,21,19,21,22, 0,16,16,16,16,
0, 9, 9,14,14, 0,13,13,15,15, 0,14,14,15,15, 0,
0,20,18,19, 0, 0,22,18,18, 0,12,12,15,15, 0,15,
15,17,18, 0,14,13,14,14, 0,20, 0,18,18, 0,21, 0,
18,17, 0,13,13,15,16, 0,17,17,18,18, 0,14,14,15,
15, 0,22,22,20,19, 0,20,21,18,18, 0,20,22,19,19,
0, 0, 0, 0, 0, 0,20,20,17,17, 0, 0,22,22,21, 0,
22, 0,18,18, 0,20,22,19,19, 0, 0, 0, 0, 0, 0,21,
21,17,18, 0, 0, 0,21,20, 0, 0,22,19,18, 0,18,18,
15,15, 0,22,21,17,16, 0, 0,22,17,17, 0,20,22,18,
18, 0, 0,22,20,20, 0,21,19,16,16, 0,21,21,18,18,
0,19,19,17,17, 0, 0,22,19,19, 0,22,20,17,17, 0,
21,19,16,16, 0,22,22,19,18, 0,19,20,16,16, 0,22,
21,19,21, 0,21,22,17,18, 0,21,20,18,18, 0, 0, 0,
19,20, 0,20,19,16,16, 0,22,22, 0, 0, 0,21,21,17,
16, 0,22,20,19,18, 0, 0, 0,20,20, 0,20,19,16,16,
0, 0, 0, 0, 0, 0,21,22,17,17, 0,11,11,13,13, 0,
13,13,15,16, 0,13,13,16,16, 0,17,18,21, 0, 0,17,
18, 0, 0, 0,12,12,15,16, 0,15,15,19,18, 0,12,12,
16,16, 0,17,17,22, 0, 0,17,17, 0,22, 0,12,12,17,
16, 0,16,16,19,20, 0,12,12,16,16, 0,17,17, 0, 0,
0,17,17, 0,21, 0,17,16,22, 0, 0, 0, 0, 0, 0, 0,
15,15,20,22, 0,20,18, 0, 0, 0,18,18, 0, 0, 0,17,
17,21, 0, 0, 0, 0, 0, 0, 0,15,15,21,22, 0,19,20,
22, 0, 0,19,18, 0, 0, 0,14,14,18,18, 0,16,16,22,
20, 0,16,16,22,19, 0,17,17,20,22, 0,19,19, 0, 0,
0,15,15,20, 0, 0,18,21, 0,20, 0,15,15,21,20, 0,
18,17, 0, 0, 0,17,17, 0,22, 0,15,15,19,19, 0,19,
18, 0, 0, 0,15,15,20, 0, 0,18,18,22,22, 0,17,17,
0,20, 0,18,18, 0, 0, 0, 0,22, 0, 0, 0,15,15,19,
20, 0,20,19, 0, 0, 0,17,17,20,21, 0,17,18,20,22,
0, 0, 0, 0,22, 0,15,15,20,20, 0,22,20, 0, 0, 0,
17,18,20, 0, 0,12,12,17,16, 0,14,14,17,17, 0,13,
13,17,17, 0,16,16,18,18, 0,17,16,17,17, 0,13,13,
17,17, 0,15,16,18,18, 0,13,13,16,16, 0,16,16,18,
18, 0,16,16,17,16, 0,13,13,16,16, 0,17,17,18,17,
0,12,12,15,16, 0,17,17,19,19, 0,16,16,16,16, 0,
16,17,19,18, 0, 0, 0,21,22, 0,14,14,16,16, 0,18,
18, 0,22, 0,16,16,16,16, 0,16,16,18,17, 0, 0, 0,
21,20, 0,14,14,16,16, 0,21,22,22, 0, 0,16,16,16,
16, 0, 9, 9,14,13, 0,13,14,15,16, 0,14,13,15,14,
0,22, 0,18,18, 0,21, 0,17,18, 0,13,13,15,15, 0,
15,16,18,17, 0,14,14,15,14, 0,20,22,18,18, 0,22,
21,17,17, 0,13,13,15,15, 0,17,17,19,19, 0,14,14,
14,14, 0, 0,22,18,18, 0, 0,22,17,17, 0, 0,22,19,
20, 0, 0, 0, 0, 0, 0,21,20,17,16, 0, 0, 0,21,22,
0, 0, 0,18,19, 0, 0, 0,18,18, 0, 0, 0, 0, 0, 0,
22, 0,17,17, 0, 0, 0,20,22, 0, 0, 0,18,19, 0,18,
19,16,16, 0,22,20,17,17, 0,22,22,17,18, 0,22,22,
18,17, 0, 0,22,18,19, 0,20,20,17,18, 0, 0,22,19,
18, 0,22,22,17,17, 0,22, 0,19,19, 0, 0,22,18,18,
0,20,22,17,17, 0, 0,22,18,18, 0,19,20,17,17, 0,
22, 0,20,19, 0,22,21,17,17, 0, 0, 0,18,18, 0, 0,
0,22,19, 0,20, 0,17,17, 0,22, 0, 0,22, 0, 0,20,
17,18, 0,22, 0,19,19, 0, 0, 0, 0,19, 0,19,21,17,
17, 0, 0, 0, 0, 0, 0,20,21,17,16, 0,11,11,13,13,
0,13,13,16,16, 0,13,13,15,16, 0,17,17,21,22, 0,
17,18, 0, 0, 0,12,12,16,16, 0,15,15,18,18, 0,13,
13,16,16, 0,17,16,21,21, 0,17,17, 0, 0, 0,13,13,
16,16, 0,16,16,19,18, 0,13,13,16,16, 0,17,17, 0,
22, 0,17,18,20,22, 0,17,18, 0, 0, 0, 0, 0, 0, 0,
0,15,15,20, 0, 0,18,19, 0, 0, 0,17,17, 0, 0, 0,
18,17,22, 0, 0, 0, 0, 0, 0, 0,15,16,21,20, 0,20,
20, 0, 0, 0,18,19, 0, 0, 0,15,15,22,22, 0,17,16,
20,22, 0,17,17,20,22, 0,18,18, 0,21, 0,19,18, 0,
0, 0,16,16,20,20, 0,19,19,22, 0, 0,15,16,21,22,
0,18,19,22, 0, 0,17,18, 0, 0, 0,16,16,22, 0, 0,
19,19, 0,21, 0,15,16,20, 0, 0,18,18, 0,22, 0,18,
17, 0, 0, 0,18,18, 0, 0, 0, 0, 0, 0, 0, 0,16,16,
22,21, 0,20,21, 0, 0, 0,17,18,22, 0, 0,18,18, 0,
0, 0, 0, 0, 0, 0, 0,16,16,20,19, 0,22,21, 0, 0,
0,18,18,22,22,
};
 
static const static_codebook _44p2_p5_0 = {
5, 3125,
(char *)_vq_lengthlist__44p2_p5_0,
1, -528744448, 1616642048, 3, 0,
(long *)_vq_quantlist__44p2_p5_0,
0
};
 
static const long _vq_quantlist__44p2_p5_1[] = {
3,
2,
4,
1,
5,
0,
6,
};
 
static const char _vq_lengthlist__44p2_p5_1[] = {
2, 3, 3, 3, 3, 3, 3,
};
 
static const static_codebook _44p2_p5_1 = {
1, 7,
(char *)_vq_lengthlist__44p2_p5_1,
1, -533200896, 1611661312, 3, 0,
(long *)_vq_quantlist__44p2_p5_1,
0
};
 
static const long _vq_quantlist__44p2_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p2_p6_0[] = {
1, 7, 7, 7, 8, 8, 7, 8, 8, 7, 9, 9,10,11,11, 9,
8, 8, 7, 8, 9,11,11,11, 9, 8, 8, 6, 7, 7,10,10,
10,10,10,10,10,10,10,14,14,14,12,11,11,10,11,11,
15,14,14,13,11,11, 6, 6, 6, 8, 5, 5, 8, 7, 7, 8,
7, 7,11,10,10, 9, 7, 7, 9, 7, 7,12,10,10,10, 7,
7, 6, 8, 7,12,10,10,12,10,10,11,10,10,15,14,13,
13,10,10,11,10,10,16,14,14,14,10,10, 7, 7, 7,12,
11,11,12,11,11,11,11,11,16,14,14,13,12,12,11,11,
11,17,15,15,14,12,12,10, 9, 9,13,11,11,13,11,11,
12,11,11,16,14,13,14,11,11,12,11,11,17,15,14,14,
11,11, 7, 8, 8,12,11,11,12,10,10,12,10,10,16,13,
14,13,10,10,11,10,10,17,14,14,14,10,10, 7, 7, 7,
12,11,11,12,11,11,12,11,11,15,14,15,14,12,12,12,
11,11,17,15,15,14,12,12,10,10, 9,13,11,11,13,11,
11,13,11,11,16,14,14,14,11,11,13,11,11,16,15,15,
15,11,11,
};
 
static const static_codebook _44p2_p6_0 = {
5, 243,
(char *)_vq_lengthlist__44p2_p6_0,
1, -527106048, 1620377600, 2, 0,
(long *)_vq_quantlist__44p2_p6_0,
0
};
 
static const long _vq_quantlist__44p2_p6_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p2_p6_1[] = {
2, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 8,
7, 7, 8, 8, 8, 9, 9, 9, 9, 8, 8, 6, 7, 7, 9, 8,
8, 9, 7, 7, 9, 8, 8,10, 8, 8,10, 8, 8,10, 8, 8,
10, 8, 9,10, 8, 8, 7, 6, 6, 8, 6, 6, 9, 6, 6, 9,
7, 7,10, 8, 8, 9, 6, 6, 9, 7, 7,10, 9, 8, 9, 7,
7, 7, 7, 7,11, 8, 8,11, 9, 9,10, 9, 9,12, 9, 9,
12, 8, 8,11, 9, 9,12, 9, 9,12, 8, 8, 8, 7, 7,10,
9, 9,10, 9, 9,10, 9, 9,11,10,11,11, 9, 9,11, 9,
9,11,11,11,11, 9, 9,10, 8, 8,11, 9, 9,10, 9, 9,
11, 9, 9,11,10,10,11, 9, 9,11, 9, 9,12,10,10,11,
9, 9, 8, 8, 8,11, 9, 9,12, 9, 9,11, 9, 9,12, 9,
9,12, 8, 8,12, 9, 9,12, 9,10,12, 8, 8, 9, 7, 7,
11, 9, 9,11,10,10,11, 9, 9,11,11,11,11, 9, 9,11,
10,10,12,11,11,11, 9,10,10, 9, 9,11, 9, 9,11,10,
10,11,10,10,11,11,11,11, 9, 9,11, 9,10,11,11,11,
11, 9, 9,
};
 
static const static_codebook _44p2_p6_1 = {
5, 243,
(char *)_vq_lengthlist__44p2_p6_1,
1, -530841600, 1616642048, 2, 0,
(long *)_vq_quantlist__44p2_p6_1,
0
};
 
static const long _vq_quantlist__44p2_p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p2_p7_0[] = {
1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,
};
 
static const static_codebook _44p2_p7_0 = {
5, 243,
(char *)_vq_lengthlist__44p2_p7_0,
1, -513979392, 1633504256, 2, 0,
(long *)_vq_quantlist__44p2_p7_0,
0
};
 
static const long _vq_quantlist__44p2_p7_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p2_p7_1[] = {
1, 9, 9, 6, 9, 9, 5, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,
};
 
static const static_codebook _44p2_p7_1 = {
5, 243,
(char *)_vq_lengthlist__44p2_p7_1,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44p2_p7_1,
0
};
 
static const long _vq_quantlist__44p2_p7_2[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p2_p7_2[] = {
1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
12,13,13,14,14,15,15,15,15,
};
 
static const static_codebook _44p2_p7_2 = {
1, 25,
(char *)_vq_lengthlist__44p2_p7_2,
1, -518864896, 1620639744, 5, 0,
(long *)_vq_quantlist__44p2_p7_2,
0
};
 
static const long _vq_quantlist__44p2_p7_3[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p2_p7_3[] = {
3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44p2_p7_3 = {
1, 25,
(char *)_vq_lengthlist__44p2_p7_3,
1, -529006592, 1611661312, 5, 0,
(long *)_vq_quantlist__44p2_p7_3,
0
};
 
static const char _huff_lengthlist__44p2_short[] = {
4, 4,12, 9, 8,12,15,17, 4, 2,11, 6, 5, 9,13,15,
11, 7, 8, 7, 7,10,14,13, 8, 5, 7, 5, 5, 8,12,12,
8, 4, 7, 4, 3, 6,11,12,11, 8, 9, 7, 6, 8,11,12,
15,13,14,12, 9, 7,10,13,16,12,17,12, 7, 5, 8,11,
};
 
static const static_codebook _huff_book__44p2_short = {
2, 64,
(char *)_huff_lengthlist__44p2_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p3_l0_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44p3_l0_0[] = {
1, 4, 4, 8, 8, 8, 8, 9, 9,10,10,10,10, 4, 6, 5,
8, 7, 9, 9, 9, 9,10, 9,11, 9, 4, 5, 6, 7, 8, 9,
9, 9, 9, 9,10, 9,10, 8, 9, 8, 9, 8,10, 9,11, 9,
12,10,12,10, 8, 8, 9, 8, 9, 9,10, 9,11,10,12,10,
12, 9,10,10,11,10,12,11,12,11,12,12,12,12, 9,10,
10,11,11,11,11,11,12,12,12,12,12,10,11,11,12,12,
12,12,12,12,12,12,12,12,10,11,11,12,12,12,12,12,
12,12,12,12,12,11,12,12,12,12,12,13,12,13,12,13,
12,12,11,12,12,12,12,12,12,13,12,12,12,12,12,12,
12,12,13,13,12,13,12,13,12,13,12,12,12,13,12,13,
12,13,12,13,12,13,12,12,12,
};
 
static const static_codebook _44p3_l0_0 = {
2, 169,
(char *)_vq_lengthlist__44p3_l0_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44p3_l0_0,
0
};
 
static const long _vq_quantlist__44p3_l0_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p3_l0_1[] = {
3, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5,
5, 6, 5, 6, 5, 6, 5, 6, 5,
};
 
static const static_codebook _44p3_l0_1 = {
2, 25,
(char *)_vq_lengthlist__44p3_l0_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p3_l0_1,
0
};
 
static const long _vq_quantlist__44p3_l1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p3_l1_0[] = {
1, 4, 4, 4, 4, 4, 4, 4, 4,
};
 
static const static_codebook _44p3_l1_0 = {
2, 9,
(char *)_vq_lengthlist__44p3_l1_0,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44p3_l1_0,
0
};
 
static const char _huff_lengthlist__44p3_lfe[] = {
1, 3, 2, 3,
};
 
static const static_codebook _huff_book__44p3_lfe = {
2, 4,
(char *)_huff_lengthlist__44p3_lfe,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44p3_long[] = {
3, 4,13, 9, 9,12,15,17, 4, 2,18, 5, 7,10,14,18,
11, 8, 6, 5, 6, 8,11,14, 8, 5, 5, 3, 5, 8,11,13,
9, 6, 7, 5, 5, 7, 9,10,11,10, 9, 8, 6, 6, 8,10,
14,14,11,11, 9, 8, 9,10,17,17,14,13,10, 9,10,10,
};
 
static const static_codebook _huff_book__44p3_long = {
2, 64,
(char *)_huff_lengthlist__44p3_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p3_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p3_p1_0[] = {
1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44p3_p1_0 = {
5, 243,
(char *)_vq_lengthlist__44p3_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p3_p1_0,
0
};
 
static const long _vq_quantlist__44p3_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p3_p2_0[] = {
3, 7, 7, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,
11,11, 0, 0, 0, 0, 0, 0, 0, 0,10, 9, 0, 0, 0, 0,
0, 0, 0, 0, 9, 9, 0, 0, 0,10,11, 0, 0, 0, 0, 0,
0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0,
0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0,12,12, 0, 0,
0, 0, 0, 0, 0, 0,11,11, 0, 0, 0,12,12, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0,
5, 5, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0,
0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5,
0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0,
0, 0, 0, 0, 0, 0, 0, 5, 6, 0, 0, 0, 7, 7, 0, 0,
0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,
8, 8, 0, 0, 0, 9, 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,11,11, 0, 0, 0, 9, 9, 0,
0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0,
0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,
10,10, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0,
0, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
0, 0, 0,11,12, 0, 0, 0, 0, 0, 0, 0, 0,11,11, 0,
0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 9, 0, 0, 0, 7, 7, 0, 0, 0, 8, 8, 0, 0,
0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0,
0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0,
0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,
0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0,
0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,11,11, 0, 0,
0, 0, 0, 0, 0, 0, 0, 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,
5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 9, 0, 0, 0, 7, 7,
0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0,
0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0,
0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,
0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0,
0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,
0, 0, 0,10,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 9, 0, 0, 0, 7, 7, 0, 0, 0, 8, 8, 0,
0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0,
0, 0, 0, 0, 0, 0, 8, 7, 0, 0, 0, 9, 9, 0, 0, 0,
0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 7,
7, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,11,11,
0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,10,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,
5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 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, 9, 0, 0, 0, 7,
7, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0,
0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0,
0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0,
0, 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9,
9, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,10, 0, 0, 0, 9, 9, 0, 0, 0,10,10,
0, 0, 0,11,12, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0,
0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0,11,11, 0, 0,
0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0,
9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0,11,
11, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,12,12,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 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,10, 0, 0, 0,
9, 9, 0, 0, 0,10,10, 0, 0, 0,12,12, 0, 0, 0, 0,
0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,
0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0,
0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,11,11, 0, 0,
0, 0, 0, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,
10,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44p3_p2_0 = {
5, 3125,
(char *)_vq_lengthlist__44p3_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p3_p2_0,
0
};
 
static const long _vq_quantlist__44p3_p3_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p3_p3_0[] = {
1, 5, 5, 5, 8, 8, 0, 8, 8, 6, 9, 9, 8,10,10, 0,
8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 4, 7, 7, 6,10,
10, 0,12,12, 7,11,11, 9,12,12, 0,12,12, 0,13,13,
0,15,15, 0,12,12, 0, 7, 7, 0, 7, 7, 0, 8, 8, 0,
8, 8, 0,10,10, 0, 7, 7, 0, 8, 8, 0,11,11, 0, 7,
7, 5, 7, 7, 9, 9, 9, 0,11,10, 9, 9, 9,11,12,12,
0,10,10, 0,11,11, 0,13,13, 0,11,11, 6, 7, 7, 9,
10,10, 0,12,12,10,11,11,11,12,12, 0,12,12, 0,13,
13, 0,15,15, 0,12,12, 0,10,10, 0,11,11, 0,11,11,
0,12,12, 0,13,13, 0,11,11, 0,12,12, 0,15,15, 0,
11,11, 0, 8, 8, 0,10,10, 0,12,12, 0,11,11, 0,12,
12, 0,12,12, 0,12,12, 0,15,15, 0,11,11, 0, 7, 7,
0,10,10, 0,12,12, 0,10,10, 0,12,13, 0,12,12, 0,
13,13, 0,14,14, 0,12,12, 0, 0, 0, 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 const static_codebook _44p3_p3_0 = {
5, 243,
(char *)_vq_lengthlist__44p3_p3_0,
1, -533200896, 1614282752, 2, 0,
(long *)_vq_quantlist__44p3_p3_0,
0
};
 
static const long _vq_quantlist__44p3_p3_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p3_p3_1[] = {
3, 4, 4, 0, 8, 8, 0, 8, 8, 0, 9, 9, 0,10,10, 0,
8, 8, 0, 9, 9, 0,10,10, 0, 8, 8, 0, 7, 7, 0, 8,
8, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 8, 8,
0, 8, 8, 0, 8, 8, 0, 7, 7, 0, 6, 6, 0, 7, 7, 0,
7, 7, 0,10,10, 0, 6, 6, 0, 7, 7, 0,10,10, 0, 6,
5, 0, 8, 8, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0, 9, 9,
0, 7, 7, 0, 8, 8, 0, 9, 9, 0, 7, 7, 0, 6, 6, 0,
9,10, 0,10,10, 0,10,10, 0,11,11, 0, 9, 9, 0,10,
10, 0,11,11, 0, 9, 9, 0, 8, 8, 0, 8, 8, 0, 8, 8,
0, 9, 9, 0, 9, 9, 0, 8, 8, 0, 8, 8, 0, 9, 9, 0,
7, 7, 0, 8, 8, 0, 7, 7, 0, 7, 7, 0, 8, 8, 0, 9,
9, 0, 7, 7, 0, 7, 7, 0, 9, 9, 0, 6, 6, 0, 6, 6,
0,10,10, 0,10,10, 0,10,10, 0,12,12, 0, 9, 9, 0,
10,10, 0,12,12, 0, 9, 9, 0, 8, 8, 0, 7, 7, 0, 8,
8, 0, 8, 8, 0, 9, 9, 0, 7, 7, 0, 8, 8, 0, 9, 9,
0, 7, 7,
};
 
static const static_codebook _44p3_p3_1 = {
5, 243,
(char *)_vq_lengthlist__44p3_p3_1,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p3_p3_1,
0
};
 
static const long _vq_quantlist__44p3_p4_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p3_p4_0[] = {
1, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8,10,11,11, 9,
8, 8, 8, 8, 8,11,11,11,10, 8, 8, 5, 7, 7, 9,11,
11,10,11,11,10,11,11,12,13,14,11,12,12,10,11,11,
13,14,14,12,12,12, 5, 6, 6, 8, 6, 6, 8, 7, 7, 8,
7, 7,11,10,10,10, 7, 7, 9, 7, 7,12,11,11,11, 7,
7, 7, 7, 7,11,10,10,12,10,10,11,10,10,15,13,13,
13,10,10,12,11,11,15,13,13,14,11,11, 7, 7, 7,11,
11,11,12,11,11,12,11,11,14,14,14,14,12,12,12,12,
12,16,15,15,14,12,12, 0,10,10, 0,11,11, 0,11,12,
0,11,11, 0,14,14, 0,11,11, 0,12,12, 0,15,15, 0,
11,11, 8, 8, 8,12,10,10,12,10,10,13,11,11,15,13,
13,14,11,11,12,10,10,16,14,14,14,10,10, 8, 7, 7,
12,11,11,13,11,11,12,11,11,15,14,14,14,12,12,13,
12,12,15,14,14,15,12,12, 0,11,11, 0,12,12, 0,12,
12, 0,12,12, 0,15,15, 0,12,12, 0,13,13, 0,14,15,
0,12,12,
};
 
static const static_codebook _44p3_p4_0 = {
5, 243,
(char *)_vq_lengthlist__44p3_p4_0,
1, -531365888, 1616117760, 2, 0,
(long *)_vq_quantlist__44p3_p4_0,
0
};
 
static const long _vq_quantlist__44p3_p4_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p3_p4_1[] = {
3, 4, 5, 8, 8,12,10,10,12,12,12,10,10,12,12,13,
11,11,12,12,13,12,12,12,12,13,10,10,13,13,13,13,
13,13,13,13,10,10,13,13,13,11,11,13,13,14,13,13,
12,12,13,10,10,13,13,13,13,13,13,13,13,10,10,12,
12,13,11,11,13,13,13,13,13,12,12,13,12,12,13,13,
13,13,13,13,13,14,11,11,12,12,14,12,12,13,12,14,
14,14,12,12,13,14,14,13,13,14,13,13,13,13,14,14,
14,12,12,14,13,13,13,13,14,14,14,12,12,12, 8, 8,
11,11,12,12,12,11,11,12,11,11,10,10,13,12,12,10,
10,13,12,12,10,10,13,12,12,12,12,14,12,12,12,12,
13,13,13,11,11,14,12,12,11,11,14,12,12,12,12,14,
12,12,12,12,13,12,12,12,12,13,13,13,11,11,14,12,
12,11,11,14,12,12,12,12,14,13,13,12,12,14,12,12,
12,11,14,13,13,11,11,14,13,12,11,11,14,13,13,11,
11,14,13,13,12,12,14,12,12,12,12,15,13,13,12,12,
14,12,12,11,11,14,13,13,11,11,12, 9, 9,10,10,12,
7, 7,11,11,12, 9, 9,12,12,13,10,10,10,10,14,14,
14,11,11,13, 9, 9,12,12,14,14,14,12,12,13, 8, 8,
11,11,14, 9, 9,12,12,14,14,14,11,11,13, 9, 9,12,
12,14,14,14,12,12,14, 8, 8,11,11,14, 9, 9,12,12,
14,14,14,11,11,14,10,10,12,12,14,14,14,13,13,14,
9, 9,11,11,14,10,10,12,12,14,14,14,11,11,14,14,
15,12,12,15,14,14,14,14,15,14,14,11,11,14,14,14,
12,12,14,14,14,11,11,14,11,11,10,10,14,10,10,10,
10,14,10,10,10,10,15,11,11, 9, 9,14,12,12, 9, 9,
15,11,11,11,11,15,13,13,11,11,15,10,10,10,10,15,
11,11,10,10,15,13,13,11,11,15,11,11,11,11,15,13,
13,11,11,15,10,10,10,10,15,11,11,10,10,15,13,13,
11,11,15,12,12,11,11,15,13,13,11,11,15,11,11,10,
10,15,12,12,10,10,15,13,13,10,10,15,14,14,11,11,
15,13,13,11,11,15,14,14,10,11,15,13,13,10,10,15,
13,14,10,10,14,13,13,10,10,14,13,13,10,10,14,13,
13,10,10,14,13,13, 9, 9,14,14,14, 9, 9,15,14,14,
11,11,15,14,14,10,10,15,14,14,10,10,15,14,14,11,
11,15,14,14,10,10,15,14,14,11,11,15,14,14,10,10,
14,14,14,10,10,15,14,14,10,10,14,14,14,10,10,15,
14,14,11,11,15,14,14,11,11,14,14,14,10,10,15,14,
14,10,10,14,14,14, 9, 9,15,15,15,11,11,15,14,14,
12,12,15,15,14,10,10,15,14,14,10,10,14,15,15, 9,
9,14,10,10,12,12,17, 9, 9,12,12,17,10,10,13,13,
17,11,11,12,12,18,14,14,12,12,17,10,10,13,13,17,
14,14,12,12,17, 9, 9,12,12,17,11,11,12,12,17,14,
14,12,12,18,10,10,13,13,18,14,14,13,13,18, 9, 9,
12,12,18,10,10,13,13,18,14,14,12,12,18,11,11,13,
13,18,14,14,13,13,18,10,10,12,12,17,11,11,12,12,
17,14,14,12,12,18,15,15,13,13,18,14,14,14,14,18,
15,15,12,12,18,14,14,12,12,18,15,15,12,12,13, 7,
7,11,11,14,15,15,11,11,14,15,15,12,12,14,15,15,
11,11,15,15,15,11,11,14,15,15,12,12,14,15,15,12,
12,14,15,15,11,11,14,15,15,11,11,15,15,15,12,12,
14,15,15,12,12,14,15,15,12,12,14,15,15,11,11,14,
15,15,11,11,15,15,15,12,12,15,15,15,12,12,14,15,
15,12,12,14,15,14,12,12,14,15,15,11,11,15,14,14,
12,12,15,15,15,12,12,15,16,16,12,12,15,15,15,12,
12,15,15,15,12,12,15,15,15,12,12,13,13,13,11,10,
14,14,15,11,11,14,14,14,12,12,15,14,14,10,10,15,
15,15,11,11,14,15,15,12,12,14,14,14,11,11,14,15,
15,11,11,14,15,15,12,12,15,15,15,11,11,14,15,15,
12,12,14,14,14,12,12,14,15,15,11,11,14,15,15,12,
12,15,15,15,11,11,15,15,15,12,12,15,14,14,12,12,
14,15,15,11,11,14,15,15,11,11,15,15,15,10,10,15,
15,16,12,12,15,15,15,14,14,15,15,15,11,11,15,15,
15,12,12,15,15,15,11,11,14,11,11,10,10,15, 9, 9,
12,12,15,10,10,12,12,15,11,11,11,11,15,14,14,12,
12,15,10,10,13,13,15,14,14,12,12,15, 9, 9,12,12,
15,10,10,13,13,15,13,13,12,11,15,10,10,12,12,15,
14,14,12,12,15, 9, 9,11,11,15,11,11,12,12,15,13,
13,11,11,15,11,11,13,13,15,13,14,13,14,15,11,11,
11,11,15,11,11,12,12,15,14,14,11,11,15,14,14,13,
13,15,14,14,20,20,15,14,14,12,12,15,14,14,12,12,
15,14,14,11,11,14,13,13,10,10,14,13,13,12,12,14,
14,13,12,12,15,14,14,12,12,15,14,14,11,11,15,14,
14,12,12,15,14,14,13,13,15,14,14,12,11,15,14,14,
11,11,15,14,14,13,13,15,14,14,12,12,15,14,14,13,
13,15,14,14,12,11,15,14,14,12,12,15,14,14,13,13,
15,14,14,13,13,15,14,14,12,12,15,14,14,12,12,15,
14,14,12,12,15,15,15,13,13,15,15,15,13,13,15,14,
14,13,13,15,15,15,13,13,15,14,15,12,12,15,15,15,
13,13,14,10,10,12,13,17, 9, 9,12,12,17,10,10,13,
13,17,11,11,12,12,18,14,14,12,12,18,10,10,13,13,
18,14,14,12,12,17, 9, 9,12,12,18,10,11,13,13,18,
14,14,12,12,17,10,10,12,12,17,14,14,12,12,17, 9,
9,12,12,17,11,11,12,12,17,14,14,12,12,18,11,11,
12,12,18,14,14,13,13,18,11,11,12,12,18,11,11,12,
12,18,14,14,12,12,18,15,15,12,12,18,14,14,13,13,
18,15,15,12,12,17,14,14,12,12,17,15,15,12,12,13,
7, 7,11,11,14,15,15,11,11,14,15,15,11,11,14,15,
14,12,12,15,15,15,12,11,14,15,15,12,12,14,15,15,
12,12,14,15,15,11,11,14,15,15,11,11,15,15,15,13,
13,14,15,15,11,11,14,15,15,13,12,14,15,15,11,11,
14,15,15,11,11,15,15,15,13,13,14,15,15,12,12,15,
15,15,12,12,15,15,15,11,11,15,15,15,11,11,15,15,
15,12,12,15,15,15,13,13,15,16,16,12,12,15,15,15,
12,13,15,15,15,12,12,15,15,15,12,12,13,13,13,11,
11,14,14,14,11,11,14,14,14,12,12,14,14,14,10,10,
15,14,14,11,11,14,15,15,12,12,14,14,14,12,12,14,
15,15,11,11,14,15,14,12,12,15,14,14,11,11,14,15,
15,12,12,14,14,14,11,11,14,15,15,11,11,14,14,14,
12,12,15,15,14,11,11,15,15,15,12,12,15,14,14,12,
12,14,15,15,11,11,14,15,14,11,11,15,15,15,10,10,
15,15,15,12,12,15,14,14,14,13,15,15,15,11,11,15,
15,15,11,11,15,15,15,10,10,14,11,11,10,10,15, 9,
9,12,12,15,10,10,12,12,15,11,11,11,11,15,14,14,
12,12,15,10,10,13,13,15,13,13,12,12,15, 9, 9,12,
12,15,11,11,13,13,15,14,14,12,12,15,10,10,13,13,
15,13,14,12,12,15, 9, 9,12,12,15,10,10,13,13,15,
13,13,11,11,15,11,11,13,13,15,14,14,13,13,15,10,
10,11,11,15,11,11,12,12,15,14,14,11,11,15,14,14,
13,13,15,14,14,21,20,15,14,14,11,11,15,14,14,12,
12,15,14,14,11,11,14,13,13,10,10,14,13,13,11,11,
15,14,14,12,12,15,14,14,12,12,14,14,14,12,12,15,
14,14,12,12,15,14,14,13,13,14,14,14,11,11,15,14,
14,11,11,15,14,14,13,13,15,14,14,12,12,15,14,14,
13,13,14,14,14,11,11,15,14,14,11,11,14,14,14,13,
13,15,14,14,12,12,15,14,14,12,12,15,14,14,12,12,
15,14,14,12,12,14,14,14,13,13,15,15,15,13,13,16,
14,14,12,13,15,15,15,13,13,15,14,14,12,12,15,15,
15,13,13,15,11,11,13,12,18,10,10,12,12,17,11,11,
12,12,18,12,12,11,11,18,14,14,12,12,18,11,11,13,
13,17,14,14,12,12,18,10,10,12,12,18,12,12,12,12,
18,14,15,12,12,18,11,11,13,13,18,14,14,12,12,17,
10,10,12,12,18,11,11,12,12,18,15,14,12,12,17,12,
12,12,12,17,14,14,12,12,17,11,11,11,11,17,12,12,
12,11,17,15,15,11,11,18,15,15,12,12,18,14,15,13,
13,18,15,15,11,11,17,15,15,12,12,18,15,15,11,11,
14, 9, 9,11,11,14,15,15,11,11,15,15,15,11,11,15,
15,15,12,11,15,15,15,12,12,15,15,15,11,11,15,15,
15,13,13,14,15,15,11,11,15,15,15,11,11,15,15,15,
13,13,15,15,15,11,11,15,15,15,13,13,15,15,15,11,
11,15,15,15,11,11,15,15,15,13,13,15,15,15,12,12,
15,15,15,13,13,15,15,14,11,11,15,15,15,12,12,15,
15,15,12,12,16,15,15,13,13,15,16,16,13,13,16,15,
15,12,12,15,15,15,13,12,15,15,15,12,12,13,12,12,
11,11,14,14,14,11,11,14,14,14,12,12,15,14,14,11,
11,15,14,14,12,12,15,14,14,12,12,15,14,14,12,12,
14,15,15,11,11,15,14,14,12,12,15,14,14,11,11,15,
14,14,12,12,15,14,14,12,12,14,15,15,11,11,15,14,
14,12,12,15,14,14,11,11,15,15,15,12,12,15,14,14,
12,12,15,15,15,11,11,15,14,14,11,11,15,14,15,11,
11,15,15,15,12,12,15,14,14,13,13,16,15,15,11,11,
15,14,14,12,12,15,15,15,11,11,14,11,11, 9, 9,15,
10,10,12,12,14,11,11,12,12,15,12,12,12,12,15,14,
14,13,13,15,11,11,13,13,15,14,14,13,13,15,10,10,
12,12,15,12,12,13,13,15,14,14,13,13,15,11,11,12,
12,15,14,14,13,13,14,10,10,12,12,15,12,12,13,13,
15,14,14,12,12,15,12,12,13,13,15,14,14,15,15,15,
11,11,12,12,15,12,12,12,13,15,14,14,12,12,15,15,
15,14,14,15,14,14,20,20,15,14,14,12,12,15,14,14,
13,13,15,14,14,12,12,14,13,13,10,10,14,13,13,11,
11,14,13,13,12,12,14,14,14,12,12,15,14,14,13,13,
15,14,14,12,12,14,14,14,14,14,14,14,14,11,11,15,
14,14,12,12,15,14,14,14,14,15,14,14,12,12,14,14,
14,14,14,14,14,14,11,11,15,14,14,12,12,14,14,14,
14,14,15,14,14,12,12,15,14,14,13,13,15,14,14,12,
12,15,14,14,12,12,14,14,14,14,13,15,15,15,14,14,
15,14,14,13,13,15,15,15,14,14,15,14,14,13,13,15,
15,15,13,13,14,13,13,13,13,18,15,15,12,12,18,15,
15,13,12,18,15,16,11,11,18,16,17,12,12,18,15,15,
13,13,18,17,17,12,12,18,15,15,12,12,17,15,15,12,
12,18,17,17,12,12,18,15,15,13,13,18,16,17,12,12,
17,15,15,12,12,18,15,15,12,12,18,16,17,11,12,18,
16,16,12,12,17,16,17,12,12,18,15,15,11,11,18,15,
15,12,12,18,17,17,11,11,17,17,17,12,12,18,16,16,
13,13,18,17,17,11,11,18,16,16,12,12,18,17,17,11,
11,15,14,14,11,11,16,15,15,11,11,16,15,15,12,12,
16,15,15,12,12,17,15,15,14,13,16,15,15,12,12,17,
15,15,14,14,16,15,15,11,11,16,15,15,12,12,18,15,
15,13,13,16,15,15,11,11,17,15,15,14,14,16,15,15,
11,11,16,15,15,12,12,17,15,15,13,13,16,15,15,12,
12,17,16,15,14,14,16,14,15,12,12,16,15,15,12,12,
18,15,15,13,13,17,15,15,14,14,17,16,16,15,15,17,
15,15,13,13,17,15,15,14,14,18,15,15,13,13,15,12,
13,11,11,15,14,14,12,12,16,14,14,12,12,16,14,14,
12,12,16,14,14,12,12,16,14,14,13,12,17,14,14,13,
13,16,15,15,12,12,16,14,14,12,12,17,14,14,12,12,
16,14,14,12,12,17,14,14,13,13,15,15,15,12,12,16,
14,14,12,12,17,14,14,12,12,17,15,15,12,12,17,14,
14,13,13,16,15,15,12,12,16,14,14,12,12,17,15,15,
12,12,18,15,15,13,13,17,14,14,13,13,17,15,15,12,
12,17,14,14,12,12,17,15,15,12,12,14,15,15, 9, 9,
15,15,15,12,12,15,15,15,13,13,15,15,15,14,14,15,
15,15,19,19,15,15,16,13,13,15,15,16,19,20,15,15,
15,13,12,15,16,16,14,14,15,15,15,19,19,15,15,15,
13,13,15,16,15,20,19,14,15,15,13,13,15,15,15,14,
14,15,15,15,19,19,15,15,15,14,14,15,16,16,19,20,
15,15,15,14,14,15,15,15,14,14,15,15,15,19,19,15,
15,15,20,19,15,16,16,20,19,15,15,15,19,19,15,16,
16,20,20,15,15,15,19,20,14,13,13,10,10,14,14,14,
11,11,14,14,14,12,12,15,14,14,13,13,15,14,14,19,
20,15,14,14,12,12,14,14,14,20,19,14,14,14,11,11,
15,14,14,12,12,15,14,14,20,20,15,14,14,12,12,14,
14,14,20,19,14,14,14,11,11,15,14,14,12,12,15,14,
14,19,20,15,14,14,13,13,15,14,14,22,19,15,15,14,
12,12,15,14,14,13,13,14,15,15,22,20,15,15,15,20,
20,15,14,14,21,20,15,15,15,20,21,15,14,14,20,20,
14,15,15,20,20,
};
 
static const static_codebook _44p3_p4_1 = {
5, 3125,
(char *)_vq_lengthlist__44p3_p4_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p3_p4_1,
0
};
 
static const long _vq_quantlist__44p3_p5_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p3_p5_0[] = {
2, 6, 6,14,14, 6, 7, 7,14,14, 7, 7, 7,15,15, 0,
12,12,15,15, 0,13,13,15,15, 7, 8, 8,15,15,10,10,
10,16,16, 9, 8, 8,15,15, 0,13,13,18,17, 0,13,13,
16,16, 8, 8, 8,15,15,12,11,11,16,16, 9, 8, 8,15,
15, 0,13,13,18,18, 0,13,13,16,16, 0,14,14,17,17,
0,20, 0,19,20, 0,12,12,16,16, 0,16,16,20,22, 0,
14,14,16,16, 0,14,14,17,17, 0,20,22,20,19, 0,13,
13,15,16, 0,17,18, 0,21, 0,15,15,16,16, 5, 7, 7,
13,13, 8, 9, 9,14,14,10,10,10,14,14, 0,20,22,18,
18, 0,22,21,18,17, 9,10,10,14,14,12,12,12,17,17,
12,10,10,14,14, 0, 0,20,17,17, 0,22,21,17,18,11,
10,10,14,14,14,13,13,18,18,12,11,11,14,14, 0,22,
21,18,19, 0,20, 0,17,17, 0,22, 0,18,18, 0, 0, 0,
0, 0, 0,20,20,17,17, 0,22, 0,22,21, 0,21, 0,19,
18, 0,22,22,18,18, 0, 0, 0, 0, 0, 0,21, 0,17,17,
0,22, 0,20,20, 0, 0, 0,19,18, 6, 6, 6,12,12, 8,
6, 6,10,10, 8, 6, 6,13,12, 0,10,10,11,11, 0,11,
11,13,13, 8, 7, 7,13,13,11, 9, 9,13,13,10, 6, 6,
12,12, 0,10,10,14,14, 0,10,10,13,13, 9, 7, 7,13,
13,12,10,10,13,13,10, 6, 6,12,12, 0,11,11,15,15,
0,10,10,13,13, 0,12,12,15,14, 0,19,20,16,17, 0,
9, 9,13,13, 0,14,14,20,21, 0,12,11,13,12, 0,12,
12,15,14, 0,20,19,17,17, 0,10,10,12,13, 0,15,15,
22,21, 0,12,12,12,13, 0,10,10,12,12, 0,11,11,15,
15, 0,11,11,15,15, 0,15,15,22,22, 0,16,17, 0, 0,
0,11,11,15,15, 0,14,14,18,18, 0,11,11,16,16, 0,
16,15, 0,21, 0,16,16, 0, 0, 0,12,12,15,15, 0,14,
14,19,19, 0,11,11,15,15, 0,15,15,22, 0, 0,16,16,
22, 0, 0,16,16, 0,21, 0, 0, 0, 0, 0, 0,15,15,19,
20, 0,18,18, 0, 0, 0,17,17, 0, 0, 0,17,17, 0, 0,
0, 0, 0, 0, 0, 0,16,15,22,21, 0,20,20, 0, 0, 0,
18,18, 0, 0, 0,10,10,12,12, 0,10,10,11,11, 0,11,
11,12,12, 0,11,11, 9, 9, 0,13,12,12,12, 0,11,11,
13,13, 0,13,13,12,12, 0,10,10,12,12, 0,13,12,13,
13, 0,12,12,12,12, 0,11,11,13,13, 0,13,13,12,12,
0,10,10,12,12, 0,13,13,14,13, 0,12,12,12,12, 0,
14,13,13,14, 0,20,21,15,15, 0,11,11,12,12, 0,15,
16,20,20, 0,12,13,10,10, 0,13,13,14,13, 0,20,20,
15,15, 0,11,11,12,12, 0,16,17,21,21, 0,13,13,11,
11, 6, 7, 7,16,15,11, 9, 9,14,15,12, 9, 9,16,16,
0,13,13,15,15, 0,14,14,17,17,10, 9, 9,16,16,14,
12,12,16,16,12, 9, 9,15,15, 0,13,13,17,18, 0,13,
13,15,15,12,10,10,17,17,15,12,12,17,17,13, 9, 9,
16,16, 0,13,13,18,19, 0,14,14,16,16, 0,15,15,18,
18, 0, 0, 0,20,19, 0,12,12,17,16, 0,16,17, 0,21,
0,14,15,16,16, 0,15,15,18,18, 0, 0,22,19,21, 0,
13,13,16,16, 0,18,17,22,22, 0,15,15,16,16, 7, 7,
7,13,13,11,10,10,15,15,12,10,10,14,14, 0,21, 0,
18,17, 0,21,22,18,18,11,10,10,15,15,14,12,12,17,
17,14,11,11,14,14, 0,21,20,18,18, 0,22,21,18,17,
12,11,10,16,16,16,14,14,17,19,14,11,11,15,15, 0,
0,22,19,19, 0,21,22,18,18, 0,21, 0,18,19, 0, 0,
0,22, 0, 0,22,21,17,17, 0, 0, 0,20,22, 0, 0,21,
18,18, 0, 0, 0,19,20, 0, 0, 0, 0, 0, 0, 0,21,17,
17, 0, 0, 0,22,21, 0, 0, 0,19,19,10, 9, 9,14,13,
13,10,10,12,12,13,10,10,14,14, 0,13,13,12,12, 0,
15,14,16,15,13,10,10,14,14,15,12,12,14,14,15,10,
10,14,14, 0,14,14,15,15, 0,14,13,14,14,13,10,10,
15,15,17,13,13,15,15,14,10,10,14,14, 0,14,14,15,
16, 0,14,14,15,15, 0,15,15,16,16, 0,21,22,17,18,
0,12,12,14,14, 0,17,17,20,21, 0,14,14,14,14, 0,
15,15,16,16, 0,21,22,18,18, 0,13,13,14,14, 0,18,
18,22, 0, 0,15,15,14,14, 0,11,11,13,13, 0,12,12,
16,15, 0,12,12,16,16, 0,16,16, 0, 0, 0,16,17, 0,
22, 0,12,12,16,16, 0,14,14,17,18, 0,11,11,16,16,
0,15,15, 0,21, 0,16,16,21,22, 0,12,12,16,16, 0,
15,15,19,19, 0,12,12,17,16, 0,16,16,21,22, 0,16,
16, 0, 0, 0,17,17, 0,22, 0, 0, 0, 0, 0, 0,15,15,
19,20, 0,17,19, 0, 0, 0,17,17,22, 0, 0,17,17, 0,
22, 0, 0, 0, 0, 0, 0,15,15,21, 0, 0,19,20, 0, 0,
0,19,18,22, 0, 0,11,12,14,14, 0,11,11,14,14, 0,
12,12,15,15, 0,13,13,13,13, 0,14,14,16,16, 0,12,
12,15,15, 0,14,14,16,15, 0,11,11,15,15, 0,13,13,
16,16, 0,13,13,15,15, 0,12,12,15,15, 0,15,14,16,
16, 0,11,11,15,15, 0,14,14,17,17, 0,13,13,15,15,
0,15,15,16,16, 0, 0, 0,18,18, 0,12,12,14,14, 0,
16,16,22, 0, 0,14,14,15,15, 0,15,15,16,17, 0,21,
22,18,18, 0,13,13,15,14, 0,18,17,22, 0, 0,14,14,
15,15, 8, 8, 8,16,15,12,10,10,16,15,12,10,10,16,
16, 0,14,14,16,17, 0,14,14,17,16,12,10,10,17,18,
14,12,12,18,18,14,10,10,16,16, 0,14,14,18,18, 0,
14,14,16,16,12, 9, 9,16,16,17,13,13,16,17,14, 9,
9,15,15, 0,14,14,18,19, 0,13,13,15,15, 0,15,15,
18,19, 0, 0, 0,22,21, 0,13,13,16,16, 0,16,16,22,
0, 0,15,15,16,16, 0,14,14,18,17, 0, 0, 0,20, 0,
0,13,13,16,16, 0,18,18, 0, 0, 0,15,15,16,16, 8,
7, 7,13,13,12,10,10,15,15,12,10,10,14,14, 0,22,
22,19,18, 0, 0, 0,18,18,12,10,10,15,15,14,13,13,
17,17,14,11,11,15,15, 0,19,20,18,18, 0,22,21,17,
18,13,11,11,15,15,16,13,13,18,18,14,11,11,14,15,
0,22,21,20,19, 0,22,21,17,17, 0, 0,22,19,18, 0,
0, 0, 0, 0, 0,22,20,17,17, 0, 0, 0,21,20, 0, 0,
0,19,17, 0, 0,22,19,19, 0, 0, 0, 0, 0, 0,22,20,
18,17, 0, 0, 0, 0, 0, 0, 0, 0,18,18, 0,10,10,14,
14, 0,11,11,14,14, 0,11,11,15,15, 0,14,14,14,14,
0,15,15,16,16, 0,11,11,16,16, 0,13,13,16,16, 0,
11,11,15,15, 0,14,14,16,16, 0,14,14,15,15, 0,11,
11,15,15, 0,13,13,15,15, 0,10,10,15,15, 0,15,15,
17,17, 0,14,14,14,14, 0,16,16,16,16, 0, 0,22,19,
19, 0,13,13,14,14, 0,17,17, 0, 0, 0,15,15,14,14,
0,16,16,17,17, 0, 0,22,18,18, 0,13,13,14,14, 0,
21,18, 0, 0, 0,15,15,14,14, 0,11,11,13,13, 0,12,
12,15,15, 0,12,12,16,15, 0,16,16, 0, 0, 0,17,17,
22,22, 0,12,12,16,16, 0,14,14,18,18, 0,11,12,16,
16, 0,15,16, 0,21, 0,16,16,22,21, 0,12,12,16,16,
0,15,15,19,20, 0,11,12,16,16, 0,15,15,20,22, 0,
16,16, 0,22, 0,17,17,22, 0, 0, 0, 0, 0, 0, 0,15,
15,21,22, 0,19,18, 0, 0, 0,17,17, 0, 0, 0,17,17,
0,22, 0, 0, 0, 0, 0, 0,16,15,22, 0, 0,19,19, 0,
0, 0,17,18, 0, 0, 0,12,12,15,15, 0,12,12,15,15,
0,12,12,15,15, 0,13,13,14,14, 0,15,15,16,17, 0,
12,12,16,16, 0,14,14,16,16, 0,12,11,15,16, 0,14,
14,16,17, 0,14,14,16,16, 0,13,12,16,16, 0,15,15,
16,16, 0,11,11,15,15, 0,14,14,16,16, 0,14,14,15,
15, 0,15,15,18,17, 0, 0,22, 0,20, 0,13,13,15,15,
0,16,17,22,22, 0,14,14,15,15, 0,15,15,17,18, 0,
20, 0,19,19, 0,13,13,15,15, 0,18,18,22, 0, 0,14,
14,15,15, 0,11,11,16,16, 0,14,14,17,16, 0,13,13,
17,17, 0,16,16,17,17, 0,17,17,18,19, 0,12,12,16,
17, 0,15,15,18,18, 0,12,12,16,16, 0,16,16,19,18,
0,16,16,17,16, 0,12,13,17,17, 0,17,16,18,17, 0,
13,12,16,16, 0,16,16,18,19, 0,16,16,16,17, 0,16,
16,18,18, 0,22, 0,22,22, 0,13,13,16,16, 0,19,18,
22,20, 0,16,15,16,16, 0,16,17,18,18, 0, 0, 0,22,
20, 0,14,14,16,16, 0,19,19, 0, 0, 0,16,16,16,16,
0, 9, 9,13,13, 0,13,13,15,15, 0,14,14,15,15, 0,
0,22,17,18, 0,22, 0,18,19, 0,12,12,15,15, 0,15,
16,17,17, 0,14,14,14,14, 0,22, 0,18,18, 0,21,22,
17,17, 0,13,13,15,15, 0,17,17,17,18, 0,14,14,15,
15, 0,22,21,21,19, 0,20,21,17,17, 0,21,21,19,18,
0, 0, 0, 0, 0, 0,21,21,17,17, 0, 0, 0,22,22, 0,
0,22,19,18, 0, 0,21,19,18, 0, 0, 0, 0,22, 0,19,
20,17,17, 0, 0, 0, 0,22, 0, 0, 0,19,18, 0,19,19,
15,16, 0,21,19,16,17, 0, 0,21,17,17, 0, 0,22,17,
17, 0,22,22,18,19, 0,20,20,16,16, 0, 0,22,18,18,
0,20,19,16,17, 0,22,21,20,19, 0, 0,21,17,17, 0,
21,20,17,17, 0, 0, 0,18,18, 0,19,19,17,16, 0,22,
0,19,19, 0,21,22,17,18, 0, 0,22,19,18, 0, 0, 0,
19,20, 0,19,19,16,16, 0,22,22,22, 0, 0,20,22,16,
16, 0,22,20,18,19, 0, 0, 0,20,19, 0,20,20,16,16,
0, 0, 0, 0, 0, 0,22,20,17,16, 0,11,11,13,13, 0,
14,13,15,15, 0,13,13,16,15, 0,18,17,21, 0, 0,18,
18,21, 0, 0,12,12,15,15, 0,15,16,17,18, 0,12,12,
15,15, 0,17,17,22,20, 0,17,18,22, 0, 0,12,12,17,
16, 0,16,17,19,19, 0,13,13,16,16, 0,17,17, 0,22,
0,17,17, 0,21, 0,18,18,20,22, 0, 0, 0, 0, 0, 0,
15,15,21,20, 0,20,19, 0, 0, 0,18,18,22, 0, 0,17,
17,22, 0, 0, 0, 0, 0, 0, 0,15,16,20,22, 0,20,21,
0, 0, 0,19,18, 0, 0, 0,15,15,19,19, 0,17,16,20,
20, 0,16,17,20,21, 0,18,17, 0, 0, 0,19,19, 0, 0,
0,15,15,21,19, 0,19,19, 0, 0, 0,15,15,22,22, 0,
18,18, 0,22, 0,17,18,22,21, 0,15,15,20,19, 0,19,
19, 0, 0, 0,15,15,20,22, 0,18,19,20, 0, 0,18,17,
21,21, 0,18,18,19,22, 0, 0, 0, 0, 0, 0,15,15,20,
19, 0,19,19, 0, 0, 0,18,18,21,22, 0,18,18,22, 0,
0, 0, 0, 0, 0, 0,15,15,19,20, 0,21,21, 0, 0, 0,
17,17,20,20, 0,12,12,17,17, 0,14,14,16,17, 0,13,
14,17,17, 0,16,16,17,17, 0,17,17,17,19, 0,13,13,
17,17, 0,16,16,18,18, 0,13,13,16,16, 0,16,16,18,
18, 0,16,16,17,17, 0,13,13,17,17, 0,17,17,18,17,
0,12,12,15,16, 0,17,18,19,20, 0,16,16,16,16, 0,
17,16,18,19, 0, 0,22,21,22, 0,14,14,16,16, 0,19,
19, 0, 0, 0,16,16,16,16, 0,16,16,18,17, 0, 0,22,
21,21, 0,14,14,16,16, 0,22,20,22, 0, 0,16,16,15,
15, 0, 9, 9,13,13, 0,14,14,15,15, 0,14,14,14,14,
0,22,22,18,18, 0, 0,22,18,18, 0,12,12,15,15, 0,
16,16,18,17, 0,14,14,14,14, 0,20,21,18,18, 0,22,
21,17,17, 0,13,13,15,15, 0,17,17,18,18, 0,14,14,
14,14, 0, 0,21,18,19, 0, 0,22,17,17, 0,22,22,19,
18, 0, 0, 0, 0, 0, 0,19,21,17,17, 0, 0, 0,22,20,
0, 0,21,18,19, 0, 0,22,18,18, 0, 0, 0, 0,22, 0,
20,22,17,17, 0, 0, 0,20,22, 0, 0, 0,18,18, 0,19,
21,16,16, 0,20,22,16,17, 0,20, 0,17,17, 0,22, 0,
18,17, 0,21, 0,18,19, 0,20,20,17,17, 0,22, 0,18,
18, 0,21,20,17,17, 0, 0,20,20,19, 0, 0,21,18,17,
0,21,21,17,17, 0,22, 0,18,17, 0,19,19,17,17, 0,
0,22,20,21, 0, 0,21,17,17, 0,22, 0,18,18, 0, 0,
0,20,22, 0,20,19,16,16, 0, 0, 0, 0, 0, 0,22,22,
17,17, 0,22, 0,18,19, 0, 0, 0,21,20, 0,19,21,16,
17, 0, 0, 0, 0, 0, 0,22,22,17,16, 0,11,11,13,13,
0,13,13,15,15, 0,13,13,15,15, 0,17,17,22,21, 0,
18,18,22, 0, 0,12,13,16,15, 0,15,16,18,18, 0,13,
13,16,16, 0,17,17, 0,22, 0,17,17,22,22, 0,13,13,
16,16, 0,16,16,19,18, 0,13,13,16,16, 0,18,17, 0,
20, 0,18,17,20, 0, 0,17,17,21, 0, 0, 0, 0, 0, 0,
0,15,15,21,22, 0,19,20, 0, 0, 0,18,18, 0, 0, 0,
18,17, 0, 0, 0, 0, 0, 0, 0, 0,16,16,22,22, 0,20,
20, 0, 0, 0,21,19, 0, 0, 0,15,15,20,19, 0,16,16,
22,20, 0,17,17, 0,22, 0,18,18, 0,22, 0,19,17, 0,
0, 0,15,16,22,20, 0,18,19, 0, 0, 0,16,16,22,20,
0,18,18, 0,22, 0,18,18,22, 0, 0,16,16,21,20, 0,
19,20, 0,22, 0,16,16, 0,22, 0,18,18, 0,22, 0,18,
18, 0,21, 0,19,18, 0,22, 0, 0, 0, 0, 0, 0,16,16,
21,20, 0,20, 0, 0, 0, 0,18,18,21, 0, 0,18,18, 0,
0, 0, 0, 0, 0, 0, 0,16,16,21,19, 0, 0, 0, 0, 0,
0,18,18, 0,21,
};
 
static const static_codebook _44p3_p5_0 = {
5, 3125,
(char *)_vq_lengthlist__44p3_p5_0,
1, -528744448, 1616642048, 3, 0,
(long *)_vq_quantlist__44p3_p5_0,
0
};
 
static const long _vq_quantlist__44p3_p5_1[] = {
3,
2,
4,
1,
5,
0,
6,
};
 
static const char _vq_lengthlist__44p3_p5_1[] = {
2, 3, 3, 3, 3, 3, 3,
};
 
static const static_codebook _44p3_p5_1 = {
1, 7,
(char *)_vq_lengthlist__44p3_p5_1,
1, -533200896, 1611661312, 3, 0,
(long *)_vq_quantlist__44p3_p5_1,
0
};
 
static const long _vq_quantlist__44p3_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p3_p6_0[] = {
1, 6, 6, 7, 7, 7, 7, 8, 8, 7, 9, 9,11,11,11, 9,
8, 8, 8, 9, 9,12,11,11, 9, 8, 8, 6, 7, 7,10,11,
10,10,10,10,11,11,10,14,13,14,12,11,11,11,11,11,
15,14,14,13,12,12, 5, 6, 6, 8, 5, 5, 8, 7, 7, 8,
8, 8,12,10,10, 9, 7, 7, 9, 7, 8,12,10,10,10, 7,
7, 7, 8, 8,12,10,10,12,10,10,11,10,10,15,13,13,
13,10,10,11,10,10,16,13,14,14,10,10, 7, 7, 7,12,
11,11,12,11,11,11,11,11,16,15,15,14,12,12,12,11,
11,16,15,16,14,12,12,10, 9, 9,14,11,11,13,11,11,
12,11,11,16,14,14,14,11,11,12,11,11,17,15,15,14,
11,11, 7, 8, 8,12,11,11,12,10,10,12,10,10,16,14,
13,14,10,10,12,10,10,17,14,14,14,10,10, 8, 7, 7,
13,11,11,12,11,11,12,11,11,16,15,14,14,12,12,12,
11,11,16,15,14,15,12,12,11,10,10,13,11,11,13,12,
11,13,11,11,17,14,14,14,11,11,13,11,11,17,14,15,
14,11,11,
};
 
static const static_codebook _44p3_p6_0 = {
5, 243,
(char *)_vq_lengthlist__44p3_p6_0,
1, -527106048, 1620377600, 2, 0,
(long *)_vq_quantlist__44p3_p6_0,
0
};
 
static const long _vq_quantlist__44p3_p6_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p3_p6_1[] = {
2, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,
7, 7, 8, 8, 8, 9, 9, 9, 9, 7, 8, 6, 7, 7, 8, 8,
8, 8, 8, 8, 9, 8, 8,10, 9, 9,10, 8, 8,10, 8, 8,
10, 9, 9,10, 8, 8, 6, 6, 6, 8, 6, 6, 8, 7, 7, 8,
7, 7,10, 8, 8, 9, 7, 7, 9, 7, 7,10, 8, 9, 9, 7,
7, 7, 7, 7,10, 8, 8,11, 8, 8,10, 8, 8,12, 9, 9,
12, 8, 8,11, 9, 9,12, 9, 9,11, 8, 8, 7, 7, 7,10,
9, 9,10, 9, 9,10, 9, 9,11,10,10,10, 9, 9,11, 9,
9,11,10,10,11, 9, 9, 9, 8, 8,10, 9, 9,10, 9, 9,
11, 9, 9,11,10,10,11, 9, 9,11, 9, 9,11,10,10,11,
9, 9, 8, 8, 8,11, 9, 9,11, 9, 9,11, 9, 9,12, 9,
9,12, 8, 8,12, 9, 9,12, 9, 9,12, 8, 8, 8, 7, 7,
10, 9, 9,10, 9, 9,11, 9, 9,11,11,11,11, 9, 9,11,
10,10,11,11,11,11, 9, 9,10, 9, 9,11, 9, 9,11, 9,
10,11,10, 9,11,10,10,11, 9, 9,11, 9,10,11,10,10,
11, 9, 9,
};
 
static const static_codebook _44p3_p6_1 = {
5, 243,
(char *)_vq_lengthlist__44p3_p6_1,
1, -530841600, 1616642048, 2, 0,
(long *)_vq_quantlist__44p3_p6_1,
0
};
 
static const long _vq_quantlist__44p3_p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p3_p7_0[] = {
1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,
};
 
static const static_codebook _44p3_p7_0 = {
5, 243,
(char *)_vq_lengthlist__44p3_p7_0,
1, -513979392, 1633504256, 2, 0,
(long *)_vq_quantlist__44p3_p7_0,
0
};
 
static const long _vq_quantlist__44p3_p7_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p3_p7_1[] = {
1, 9, 9, 6, 9, 9, 5, 9, 9, 8, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,
};
 
static const static_codebook _44p3_p7_1 = {
5, 243,
(char *)_vq_lengthlist__44p3_p7_1,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44p3_p7_1,
0
};
 
static const long _vq_quantlist__44p3_p7_2[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p3_p7_2[] = {
1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
12,13,13,14,14,15,15,15,15,
};
 
static const static_codebook _44p3_p7_2 = {
1, 25,
(char *)_vq_lengthlist__44p3_p7_2,
1, -518864896, 1620639744, 5, 0,
(long *)_vq_quantlist__44p3_p7_2,
0
};
 
static const long _vq_quantlist__44p3_p7_3[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p3_p7_3[] = {
4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44p3_p7_3 = {
1, 25,
(char *)_vq_lengthlist__44p3_p7_3,
1, -529006592, 1611661312, 5, 0,
(long *)_vq_quantlist__44p3_p7_3,
0
};
 
static const char _huff_lengthlist__44p3_short[] = {
4, 5,16, 9, 9,12,17,18, 4, 2,18, 6, 5, 9,13,15,
10, 7, 7, 6, 7, 9,13,13, 8, 5, 6, 5, 5, 7,11,12,
8, 4, 7, 4, 3, 6,10,12,11, 8, 9, 7, 6, 8,11,12,
15,13,13,11, 9, 7,10,12,16,12,16,12, 6, 5, 8,11,
};
 
static const static_codebook _huff_book__44p3_short = {
2, 64,
(char *)_huff_lengthlist__44p3_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p4_l0_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44p4_l0_0[] = {
1, 4, 4, 8, 8, 9, 8, 9, 9,10,10,10,10, 4, 6, 5,
8, 7, 9, 9, 9, 9,10, 9,10,10, 4, 5, 6, 7, 8, 9,
9, 9, 9, 9,10, 9,10, 8, 9, 8, 9, 8,10, 9,11, 9,
12,10,11,10, 8, 8, 9, 8, 9, 9,10, 9,11,10,11,10,
12, 9,10,10,11,10,11,11,12,11,12,12,12,12, 9,10,
10,11,11,11,11,11,12,12,12,12,12,10,11,11,12,12,
12,12,12,12,12,12,12,12,10,11,11,12,12,12,12,12,
12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,13,
12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,13,12,12,12,12,12,12,11,13,12,12,
12,13,12,12,12,12,12,12,12,
};
 
static const static_codebook _44p4_l0_0 = {
2, 169,
(char *)_vq_lengthlist__44p4_l0_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44p4_l0_0,
0
};
 
static const long _vq_quantlist__44p4_l0_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p4_l0_1[] = {
3, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5,
5, 6, 5, 6, 5, 6, 5, 6, 5,
};
 
static const static_codebook _44p4_l0_1 = {
2, 25,
(char *)_vq_lengthlist__44p4_l0_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p4_l0_1,
0
};
 
static const long _vq_quantlist__44p4_l1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p4_l1_0[] = {
1, 4, 4, 4, 4, 4, 4, 4, 4,
};
 
static const static_codebook _44p4_l1_0 = {
2, 9,
(char *)_vq_lengthlist__44p4_l1_0,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44p4_l1_0,
0
};
 
static const char _huff_lengthlist__44p4_lfe[] = {
1, 3, 2, 3,
};
 
static const static_codebook _huff_book__44p4_lfe = {
2, 4,
(char *)_huff_lengthlist__44p4_lfe,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44p4_long[] = {
3, 5,13, 9, 9,12,16,18, 4, 2,20, 6, 7,10,15,20,
10, 7, 5, 5, 6, 8,10,13, 8, 5, 5, 3, 5, 7,10,11,
9, 7, 6, 5, 5, 7, 9, 9,11,10, 8, 7, 6, 6, 8, 8,
15,15,10,10, 9, 7, 8, 9,17,19,13,12,10, 8, 9, 9,
};
 
static const static_codebook _huff_book__44p4_long = {
2, 64,
(char *)_huff_lengthlist__44p4_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p4_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p4_p1_0[] = {
1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44p4_p1_0 = {
5, 243,
(char *)_vq_lengthlist__44p4_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p4_p1_0,
0
};
 
static const long _vq_quantlist__44p4_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p4_p2_0[] = {
3, 9, 9, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0,
12,12, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0,
0, 0, 0, 0, 9, 9, 0, 0, 0,11,11, 0, 0, 0, 0, 0,
0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0,
0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0,12,12, 0, 0,
0, 0, 0, 0, 0, 0,11,11, 0, 0, 0,12,12, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0,
5, 5, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0,
0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5,
0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0,
0, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 7, 7, 0, 0,
0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,
7, 7, 0, 0, 0, 9, 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,11,11, 0, 0, 0, 9, 9, 0,
0, 0,10,10, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0,
0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,
10,10, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0,
0, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0,11,11, 0,
0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 9, 0, 0, 0, 7, 7, 0, 0, 0, 8, 8, 0, 0,
0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0,
0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0,
0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8,
0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0,
0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,11,11, 0, 0,
0, 0, 0, 0, 0, 0, 0, 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,
5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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,10, 0, 0, 0, 7, 7,
0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0,
0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0,
0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,
0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, 0,
0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,
0, 0, 0,10,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 9, 0, 0, 0, 7, 7, 0, 0, 0, 8, 8, 0,
0, 0,10,11, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0,
0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0,
0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 7,
7, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,11,11,
0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,10,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,
5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 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,10, 0, 0, 0, 7,
7, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0,
0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0,
0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0,
0, 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9,
9, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,10, 0, 0, 0, 9, 9, 0, 0, 0,10,10,
0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0,
0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0,
0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0,
9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0,11,
11, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,12,12,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 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,10, 0, 0, 0,
9, 9, 0, 0, 0,10,10, 0, 0, 0,12,12, 0, 0, 0, 0,
0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9,
0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0,
0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0,
0, 0, 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0,
10,10, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44p4_p2_0 = {
5, 3125,
(char *)_vq_lengthlist__44p4_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p4_p2_0,
0
};
 
static const long _vq_quantlist__44p4_p3_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p4_p3_0[] = {
1, 6, 6, 5, 7, 8, 0, 8, 8, 6, 9, 9, 7,10,10, 0,
8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 4, 7, 7, 6,10,
10, 0,12,12, 7,11,11, 8,12,12, 0,12,12, 0,13,12,
0,15,15, 0,12,12, 0, 7, 7, 0, 7, 7, 0, 7, 7, 0,
8, 8, 0,10,10, 0, 7, 7, 0, 8, 8, 0,11,11, 0, 7,
7, 5, 7, 7, 8, 9, 9, 0,10,10, 8, 9, 9,11,11,11,
0,10, 9, 0,11,11, 0,13,13, 0,10,10, 6, 7, 7, 8,
10,10, 0,12,12, 9,10,10,10,12,12, 0,12,12, 0,12,
12, 0,15,15, 0,12,12, 0,10,10, 0,11,11, 0,11,11,
0,11,11, 0,13,13, 0,11,11, 0,11,11, 0,15,15, 0,
10,10, 0, 8, 8, 0,10,10, 0,12,12, 0,11,11, 0,12,
12, 0,12,12, 0,12,12, 0,15,15, 0,11,11, 0, 7, 7,
0,10,10, 0,12,12, 0,10,10, 0,12,12, 0,12,12, 0,
13,13, 0,14,14, 0,12,12, 0, 0, 0, 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 const static_codebook _44p4_p3_0 = {
5, 243,
(char *)_vq_lengthlist__44p4_p3_0,
1, -533200896, 1614282752, 2, 0,
(long *)_vq_quantlist__44p4_p3_0,
0
};
 
static const long _vq_quantlist__44p4_p3_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p4_p3_1[] = {
3, 5, 5, 0, 8, 8, 0, 8, 8, 0, 9, 9, 0,10,10, 0,
8, 8, 0, 8, 8, 0,10,10, 0, 8, 8, 0, 7, 7, 0, 8,
8, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 8, 8,
0, 8, 8, 0, 8, 8, 0, 7, 7, 0, 6, 6, 0, 7, 7, 0,
7, 7, 0,10,10, 0, 6, 6, 0, 7, 7, 0,10,10, 0, 5,
5, 0, 8, 8, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0, 9, 9,
0, 7, 7, 0, 8, 8, 0, 9, 9, 0, 7, 7, 0, 6, 6, 0,
9,10, 0,10,10, 0,10,10, 0,11,11, 0, 9, 9, 0,10,
10, 0,11,11, 0, 9, 9, 0, 8, 8, 0, 8, 8, 0, 8, 8,
0, 9, 9, 0, 9, 9, 0, 7, 7, 0, 8, 8, 0, 9, 9, 0,
7, 7, 0, 8, 8, 0, 7, 7, 0, 7, 7, 0, 8, 8, 0, 9,
9, 0, 7, 7, 0, 7, 7, 0, 8, 8, 0, 6, 6, 0, 6, 6,
0,10,10, 0,10,10, 0,10,10, 0,12,12, 0, 9, 9, 0,
10,10, 0,12,12, 0, 9, 9, 0, 8, 8, 0, 7, 7, 0, 7,
7, 0, 8, 8, 0, 9, 9, 0, 7, 7, 0, 8, 8, 0, 9, 9,
0, 6, 6,
};
 
static const static_codebook _44p4_p3_1 = {
5, 243,
(char *)_vq_lengthlist__44p4_p3_1,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p4_p3_1,
0
};
 
static const long _vq_quantlist__44p4_p4_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p4_p4_0[] = {
1, 6, 6, 6, 7, 7, 7, 8, 8, 7, 8, 8,10,11,11, 9,
8, 8, 8, 8, 8,11,11,12, 9, 8, 8, 5, 7, 7, 9,11,
11,10,11,11,10,11,11,12,14,14,11,12,12,10,12,12,
13,14,14,12,12,12, 5, 6, 6, 7, 6, 6, 8, 7, 7, 8,
7, 7,11,10,10,10, 7, 7, 9, 8, 8,12,11,11,10, 7,
7, 7, 7, 7,11,10,10,12,10,10,11,10,10,15,13,13,
13,10,10,12,11,11,15,13,13,14,11,11, 7, 7, 7,11,
11,11,12,11,11,12,11,11,14,14,14,13,12,12,12,12,
12,16,15,15,14,12,12, 0,10,10, 0,11,11, 0,12,12,
0,11,11, 0,14,14, 0,11,11, 0,12,12, 0,15,15, 0,
11,11, 7, 8, 8,12,11,10,12,10,10,12,11,11,15,13,
13,14,11,11,12,10,10,16,14,14,14,10,10, 8, 7, 7,
12,11,11,12,11,11,12,11,11,15,14,14,14,12,12,13,
12,12,15,14,14,15,13,13, 0,11,11, 0,12,12, 0,12,
12, 0,12,12, 0,15,15, 0,12,12, 0,13,13, 0,15,14,
0,12,12,
};
 
static const static_codebook _44p4_p4_0 = {
5, 243,
(char *)_vq_lengthlist__44p4_p4_0,
1, -531365888, 1616117760, 2, 0,
(long *)_vq_quantlist__44p4_p4_0,
0
};
 
static const long _vq_quantlist__44p4_p4_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p4_p4_1[] = {
4, 5, 5, 9, 9,12, 9, 9,12,12,12,10,10,13,13,13,
11,11,12,12,13,13,13,12,12,13,10,10,13,13,13,13,
13,13,13,13,10,10,13,12,13,11,11,13,13,13,14,14,
13,12,13,10,10,13,13,12,13,13,13,13,13,10,10,12,
12,13,11,11,13,13,13,14,14,12,12,13,12,12,13,13,
13,13,13,13,13,13,11,11,12,12,13,11,11,13,13,13,
14,14,12,12,13,14,14,13,13,14,13,13,14,14,14,14,
14,12,12,13,14,14,13,13,14,14,14,12,12,12, 8, 8,
12,12,13,12,12,11,11,13,11,11,11,11,14,12,12,11,
11,14,12,12,10,11,14,12,12,12,12,14,12,12,12,12,
13,13,13,11,11,14,12,12,11,11,14,12,12,12,12,14,
12,12,12,12,14,12,12,12,12,14,13,13,11,11,14,12,
12,11,11,14,12,12,12,12,14,13,13,12,12,14,12,12,
12,12,14,13,13,11,11,14,12,12,11,11,14,13,13,11,
11,15,13,13,12,12,14,12,12,12,12,15,13,13,12,12,
14,12,12,11,11,15,13,13,11,11,12, 9, 9,11,11,13,
7, 7,11,11,13, 8, 8,12,12,14,10,10,10,10,14,14,
14,11,11,14, 8, 8,12,12,14,14,14,12,12,14, 7, 7,
11,11,14, 9, 9,12,12,14,14,14,11,11,14, 8, 8,12,
12,14,14,14,12,12,14, 7, 7,11,11,14, 9, 9,12,12,
14,14,14,11,11,14,10,10,12,12,14,14,14,13,13,14,
9, 9,11,11,14,10,10,12,11,15,14,14,11,11,14,15,
15,12,12,15,14,14,14,14,15,14,14,11,11,15,14,14,
12,12,15,14,14,11,11,14,11,11,10,10,15,10,10,10,
10,15,10,10,10,10,15,11,11, 9, 9,15,12,13, 9, 9,
15,11,11,11,11,15,13,13,11,11,15,10,10,10,10,15,
11,11,10,10,15,13,13,11,11,15,11,11,11,11,15,13,
13,11,11,15,10,10,10,10,15,11,11,10,10,15,13,13,
10,11,15,12,12,11,11,15,13,13,11,10,15,11,11,10,
10,15,11,12,10, 9,15,13,13,10,10,15,14,14,11,11,
15,13,13,11,11,15,14,14,10,10,15,13,13,10,10,15,
14,14,10,10,14,13,13,10,10,15,13,13,10,10,15,13,
13,10,10,14,14,14, 8, 9,15,14,14, 9, 9,15,14,14,
11,11,15,14,14,10,10,15,14,14,10,10,15,14,14,11,
11,15,14,14,10,10,15,14,14,11,11,15,14,14,10,10,
15,14,14,10,10,15,14,14,10,10,15,14,14, 9, 9,15,
14,14,11,11,15,14,14,11,11,15,14,14,10,10,15,14,
14,10,10,14,14,14, 9, 9,15,15,15,11,11,15,14,14,
12,12,15,15,15,10,10,15,14,15,10,10,15,15,15, 9,
9,15,10,10,13,13,17, 8, 8,12,12,17,10, 9,13,13,
18,11,11,12,12,18,14,14,12,12,17, 9, 9,13,13,17,
13,13,12,12,18, 8, 8,12,12,18,10,10,12,12,18,14,
14,12,12,18,10,10,13,13,18,13,13,13,13,18, 9, 9,
12,12,18,10,10,13,13,18,14,14,12,12,18,11,11,13,
13,18,14,14,13,13,18,10,10,12,12,17,11,11,12,12,
18,14,14,12,12,18,14,14,13,13,18,14,14,13,13,19,
14,15,12,12,18,14,14,12,12,18,15,15,12,12,13, 7,
7,11,11,14,15,15,11,11,14,16,15,11,11,14,15,15,
11,11,14,15,15,11,11,14,15,15,11,12,14,15,15,12,
12,13,15,15,11,11,14,15,15,11,11,15,15,15,12,12,
14,15,15,12,12,14,16,16,12,12,14,15,15,11,11,14,
15,15,11,11,15,15,15,12,12,15,15,15,12,12,14,15,
15,12,12,14,15,15,11,11,14,15,15,11,11,15,14,15,
12,12,15,15,15,12,12,15,16,16,12,12,15,15,15,12,
12,14,15,15,12,12,15,15,15,12,12,13,13,13,11,11,
14,14,15,11,11,14,14,14,12,12,14,15,15,10,10,15,
15,15,11,11,14,15,15,12,12,14,14,14,11,11,14,15,
15,11,11,14,15,15,12,12,15,15,15,11,11,14,15,15,
12,12,14,14,15,11,11,14,15,15,11,11,14,15,15,12,
12,15,15,15,11,11,15,15,15,12,12,14,15,15,12,12,
14,15,15,10,10,14,15,15,11,11,15,15,15,10,10,15,
15,15,12,12,15,15,15,14,14,15,15,15,11,11,15,15,
15,11,11,15,15,15,11,11,14,10,10,10,10,15, 9, 9,
12,11,15,10,10,12,12,15,11,11,11,11,15,13,13,12,
12,16,10,10,12,12,15,13,13,12,12,15, 9, 9,11,11,
15,10,10,13,12,15,13,13,11,11,15,10,10,12,12,15,
13,13,12,12,15, 9, 9,11,11,15,10,10,12,12,15,13,
13,11,11,15,11,11,12,12,15,13,13,13,13,15,10,10,
11,11,15,11,11,12,12,15,13,14,11,11,15,14,14,13,
13,16,14,14,20,19,15,14,14,11,11,15,13,14,12,12,
15,14,14,11,11,14,13,13,10,10,14,14,13,11,11,15,
13,14,12,12,15,14,14,12,12,15,14,14,11,11,15,14,
14,12,12,15,15,14,13,13,15,14,14,11,11,15,14,14,
11,11,15,14,14,13,13,15,14,14,12,12,15,14,14,13,
13,15,14,14,11,11,15,14,14,11,11,15,14,14,13,13,
15,14,14,12,12,15,14,14,12,12,15,14,14,12,12,15,
14,14,11,11,15,15,15,12,12,15,15,15,13,13,16,14,
14,12,12,15,15,15,13,13,15,15,15,12,12,15,15,15,
12,12,14,10,10,13,13,17, 9, 9,12,12,17, 9, 9,13,
13,17,11,11,12,12,18,14,14,12,12,18,10,10,13,13,
18,14,13,12,12,18, 9, 9,12,12,18,10,10,12,13,18,
14,14,12,12,17, 9, 9,12,12,17,13,14,12,12,17, 9,
9,12,12,17,10,10,12,12,17,14,14,11,11,18,11,11,
12,12,18,14,14,12,13,18,10,10,12,12,18,11,11,12,
12,18,14,14,11,11,18,15,15,12,12,18,14,14,13,13,
18,14,15,12,12,17,14,14,12,12,17,15,15,12,12,13,
7, 7,11,11,14,15,15,11,11,14,15,15,11,11,14,15,
15,11,11,14,15,15,11,11,14,15,15,11,11,14,15,15,
12,12,14,15,15,11,11,14,15,15,11,11,15,15,15,12,
12,14,15,15,11,11,14,15,15,12,12,14,15,15,11,11,
15,15,15,11,11,15,15,15,12,12,14,15,15,12,12,14,
15,16,12,12,14,15,15,11,11,14,15,15,11,11,15,15,
15,12,12,15,15,15,12,12,15,16,16,12,12,15,15,15,
12,12,15,15,15,12,12,15,15,15,12,12,13,13,13,12,
12,14,14,14,11,11,14,14,14,12,12,14,14,14,10,10,
15,15,15,11,11,14,15,15,12,12,14,14,14,11,11,14,
15,15,11,11,14,14,14,12,12,15,15,14,11,11,14,15,
15,12,12,14,14,14,11,11,14,15,15,11,11,14,14,14,
11,11,15,14,14,10,10,14,15,15,12,12,14,14,14,12,
12,14,15,15,10,10,14,15,15,11,11,15,15,15,10,10,
15,15,15,12,12,15,14,14,13,13,15,15,15,10,10,15,
14,14,11,11,15,15,15,10,10,14,10,10,10,10,14, 9,
9,12,12,15,10,10,12,12,14,11,11,11,11,15,13,14,
12,12,15,10,10,13,13,15,13,13,12,12,15, 9, 9,12,
12,15,10,10,13,13,15,13,14,11,11,15,10,10,12,12,
15,13,13,12,12,15, 9, 9,11,11,15,10,10,12,12,15,
13,13,11,11,15,11,11,12,12,15,13,13,13,13,15,10,
10,11,11,15,11,11,12,12,15,14,14,11,11,15,14,14,
13,13,15,14,14,20,19,15,14,14,11,11,15,14,14,12,
12,15,14,14,11,11,14,13,13,11,11,15,13,13,11,11,
15,14,13,12,12,15,14,14,11,12,15,14,14,11,11,15,
14,14,12,12,14,14,14,13,13,15,14,14,11,11,15,14,
14,11,11,15,14,14,13,13,15,14,14,12,12,15,14,14,
13,13,14,14,14,11,11,15,14,14,11,11,15,14,14,13,
13,15,14,14,12,12,15,14,14,12,12,15,14,14,12,12,
15,14,14,11,11,14,14,14,12,12,15,15,15,13,13,16,
14,14,12,12,15,15,15,13,13,15,14,14,12,12,15,15,
15,12,12,15,11,11,13,13,18,10,10,12,12,17,11,11,
12,12,18,12,12,11,11,18,14,14,12,12,18,10,10,13,
13,18,14,14,12,12,18,10,10,12,12,18,11,11,12,12,
18,14,14,12,12,18,11,11,12,13,18,14,14,12,12,18,
10,10,12,12,18,11,11,12,12,18,14,14,11,11,18,11,
11,12,12,18,14,14,12,12,17,10,10,11,11,17,12,12,
11,11,17,14,14,11,11,18,15,15,12,12,18,14,14,13,
13,18,15,15,11,11,18,15,14,12,12,18,15,15,11,11,
14, 8, 8,11,11,14,15,15,10,10,14,15,15,11,11,14,
15,15,11,11,15,15,15,12,12,15,15,15,11,11,15,15,
15,12,12,14,15,15,10,10,15,15,15,11,11,15,15,15,
12,12,15,15,15,11,11,15,15,15,13,13,14,15,15,10,
10,15,15,15,11,11,15,15,15,12,12,15,15,15,12,12,
15,16,16,12,12,15,14,14,11,11,15,15,15,11,11,15,
15,15,12,12,16,15,15,13,13,15,16,16,13,13,16,15,
15,12,12,15,15,15,12,12,15,15,15,12,12,14,13,13,
11,11,14,14,14,11,11,14,14,14,12,12,15,14,14,11,
11,15,15,14,11,11,15,14,14,12,12,15,14,14,12,12,
14,15,15,11,11,15,14,14,12,12,15,14,14,11,11,15,
14,15,12,12,15,14,14,12,12,14,15,15,11,11,15,14,
14,11,11,15,14,14,11,11,15,15,14,12,12,15,14,14,
12,12,15,15,15,10,11,15,14,14,11,11,15,15,15,10,
10,15,15,15,12,12,16,14,14,13,13,15,15,15,11,11,
15,14,14,11,11,15,15,15,11,11,14,11,11, 9, 9,14,
10,10,12,12,15,11,11,12,12,15,12,12,12,12,15,14,
14,13,13,15,11,11,12,12,15,14,14,13,13,14,10,10,
12,12,15,11,11,13,13,15,14,14,12,12,15,10,10,12,
12,14,14,14,13,13,14,10,10,11,11,15,11,11,12,12,
15,14,14,12,12,15,12,12,13,13,15,14,14,14,14,15,
11,11,11,11,15,12,11,12,12,15,14,14,11,11,15,15,
15,13,14,15,14,14,20,19,15,14,14,12,12,15,14,14,
13,13,15,14,14,12,12,14,13,13,10,10,14,13,13,11,
11,14,13,13,11,11,15,14,14,12,12,15,14,14,12,12,
15,14,14,12,11,14,14,14,13,13,15,14,14,11,11,15,
14,14,11,11,15,14,14,14,14,15,14,14,11,12,15,14,
14,13,13,14,14,14,11,11,15,14,14,11,11,15,14,14,
14,14,15,14,14,12,12,15,14,14,13,13,15,14,14,11,
11,14,14,14,12,12,15,14,14,13,13,15,15,15,13,13,
15,14,14,13,13,15,15,15,13,13,15,14,14,13,13,15,
15,15,13,13,15,14,14,13,13,18,15,15,12,12,18,15,
15,12,12,18,16,16,11,11,18,17,17,12,12,18,15,15,
13,13,18,17,17,12,12,18,15,15,12,12,18,15,16,12,
12,18,17,17,12,12,18,15,15,13,12,17,16,17,12,12,
17,15,15,11,12,18,15,15,12,12,18,17,17,11,11,18,
16,16,12,12,18,17,16,12,12,18,15,15,11,11,18,15,
15,12,12,18,17,17,11,11,18,17,17,12,12,18,16,16,
13,13,18,17,17,11,11,17,16,16,11,11,18,17,17,11,
11,15,15,15,11,11,16,15,15,11,11,16,15,15,11,11,
16,15,15,12,12,17,15,15,14,14,16,15,15,11,11,17,
15,15,14,14,16,15,15,11,11,16,15,15,12,12,18,15,
15,13,13,16,15,15,11,11,17,15,15,14,14,16,15,15,
11,11,16,15,15,12,12,17,15,15,13,13,16,15,15,12,
12,17,16,15,14,14,16,15,15,11,11,16,15,15,12,12,
18,15,15,13,13,17,15,15,14,14,17,16,16,15,15,18,
14,15,13,13,18,15,15,14,14,18,15,15,13,13,15,13,
13,12,12,15,14,14,12,12,16,14,14,12,12,16,14,14,
12,12,17,14,15,12,12,16,14,14,12,12,17,14,14,13,
13,16,15,15,12,12,16,14,14,12,12,17,14,14,12,12,
16,14,14,12,12,17,14,14,13,13,15,15,15,11,11,16,
14,14,12,12,17,14,14,12,12,16,15,15,12,12,17,14,
14,13,12,16,15,15,11,11,16,14,14,12,12,17,15,15,
11,11,17,15,15,13,13,17,14,14,13,13,18,15,15,12,
12,17,14,14,12,12,17,15,15,12,12,14,15,15, 9, 9,
14,15,15,12,12,15,16,15,13,13,15,15,15,14,14,15,
15,15,21,19,15,15,15,13,13,15,15,15,19,19,15,15,
15,12,12,15,16,16,14,14,15,15,15,19,19,15,16,15,
13,13,15,16,16,19,20,15,15,15,12,13,15,16,16,14,
14,15,15,15,20,19,15,15,15,14,14,15,16,16,19,19,
15,15,15,14,13,15,15,15,14,14,15,15,15,19,19,15,
16,16,20,19,15,17,16,21,20,15,15,15,20,19,15,16,
16,20,20,15,15,15,19,20,14,13,13,10,10,14,14,14,
11,11,14,14,14,12,12,15,14,14,13,13,15,15,14,20,
20,15,14,14,12,12,14,14,14,19,19,15,14,14,11,11,
15,14,14,12,12,15,14,14,20,19,15,14,14,12,12,14,
14,14,20,20,14,14,14,11,11,15,14,14,12,12,15,14,
14,20,21,15,14,14,13,13,15,14,14,20,20,15,14,14,
12,12,15,14,14,13,13,14,15,15,20,20,15,15,15,20,
19,15,14,14,20,19,15,15,15,20,20,15,14,14,21,20,
15,15,15,20,20,
};
 
static const static_codebook _44p4_p4_1 = {
5, 3125,
(char *)_vq_lengthlist__44p4_p4_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p4_p4_1,
0
};
 
static const long _vq_quantlist__44p4_p5_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p4_p5_0[] = {
1, 7, 6,15,15, 7, 8, 8,15,15, 8, 8, 8,15,15, 0,
13,13,16,16, 0,14,14,16,16, 7, 9, 9,16,16,10,11,
11,17,17,10, 8, 8,15,16, 0,14,14,18,18, 0,14,14,
16,16, 9, 9, 9,16,16,12,11,11,17,17,10, 9, 9,15,
15, 0,14,14,19,19, 0,14,14,16,16, 0,15,15,18,17,
0, 0, 0,20,20, 0,13,13,16,16, 0,17,17,22,20, 0,
15,15,17,17, 0,15,15,18,18, 0,22,21,20,21, 0,13,
13,16,16, 0,18,18, 0,22, 0,15,15,17,17, 6, 7, 7,
13,13, 9,10,10,15,15,11,10,10,15,15, 0,21,22,18,
18, 0, 0, 0,18,18,10,10,10,15,15,12,13,13,17,17,
12,11,11,15,15, 0,22,22,18,18, 0, 0,21,18,18,12,
11,11,15,15,15,14,14,18,18,13,11,11,15,15, 0, 0,
21,18,19, 0,21,22,18,19, 0,22, 0,18,19, 0, 0, 0,
0, 0, 0,21,21,18,18, 0,22, 0, 0,21, 0, 0, 0,19,
18, 0, 0, 0,18,19, 0, 0, 0, 0, 0, 0,20,20,18,17,
0, 0,22, 0,21, 0, 0, 0,19,19, 6, 6, 6,13,13, 8,
6, 6,11,11, 9, 7, 7,13,13, 0,10,10,11,11, 0,12,
12,14,14, 9, 8, 8,14,14,12,10,10,13,13,10, 7, 7,
13,13, 0,11,11,15,15, 0,11,11,13,13, 9, 8, 8,14,
14,13,10,10,13,14,11, 7, 7,13,13, 0,11,11,15,15,
0,11,11,13,13, 0,12,12,15,15, 0,21,21,17,17, 0,
10,10,13,13, 0,14,14,20,20, 0,12,12,13,13, 0,12,
12,15,15, 0,21,22,17,18, 0,10,10,13,13, 0,16,16,
20,21, 0,12,12,13,13, 0,11,11,13,13, 0,12,12,16,
16, 0,12,12,16,16, 0,16,16, 0,21, 0,17,18, 0, 0,
0,12,12,15,15, 0,15,15,18,18, 0,12,12,16,16, 0,
16,16,21,22, 0,17,17,22,21, 0,12,12,16,16, 0,15,
15,19,19, 0,12,12,16,16, 0,16,16,22,22, 0,17,16,
22, 0, 0,17,18, 0, 0, 0, 0, 0, 0, 0, 0,15,15,21,
20, 0,19,20, 0,22, 0,18,18, 0, 0, 0,18,17, 0, 0,
0, 0, 0, 0, 0, 0,16,16,22,21, 0,20,20, 0,22, 0,
20,19, 0, 0, 0,11,11,12,12, 0,10,10,11,11, 0,11,
11,12,12, 0,12,12,10,10, 0,13,13,12,12, 0,11,11,
13,13, 0,13,13,12,12, 0,10,10,12,12, 0,13,13,14,
13, 0,12,12,12,12, 0,12,12,13,13, 0,14,14,13,13,
0,10,10,12,12, 0,13,13,14,14, 0,13,12,12,12, 0,
14,14,14,14, 0,21,21,16,16, 0,12,12,12,12, 0,16,
16,20,21, 0,13,13,11,11, 0,14,14,14,14, 0,20,20,
16,15, 0,12,12,12,12, 0,17,17,20,20, 0,13,13,11,
11, 7, 8, 8,16,16,11,10,10,15,15,12,10,10,17,17,
0,14,14,16,15, 0,15,15,17,17,11, 9, 9,16,16,14,
12,12,17,17,13, 9, 9,16,15, 0,14,14,19,18, 0,14,
14,16,16,12,10,10,17,18,16,13,13,17,18,14,10,10,
16,16, 0,14,14,19,19, 0,14,15,17,17, 0,15,15,18,
19, 0, 0, 0,20,20, 0,13,13,17,17, 0,17,18, 0,22,
0,15,15,16,17, 0,15,15,18,18, 0, 0, 0,20,21, 0,
14,14,17,17, 0,19,18, 0, 0, 0,16,16,17,17, 8, 7,
7,14,14,12,11,11,15,15,13,11,11,15,15, 0, 0, 0,
18,19, 0,21,20,18,18,12,10,11,15,16,14,13,13,18,
18,14,11,11,15,15, 0,20,20,19,18, 0,20, 0,18,18,
13,11,11,16,16,17,15,15,19,19,14,12,12,15,15, 0,
21, 0,18,20, 0,22,22,18,19, 0,22,22,19,19, 0, 0,
0, 0, 0, 0,21,22,19,18, 0, 0, 0, 0,21, 0, 0, 0,
19,19, 0, 0,22,20,20, 0, 0, 0, 0, 0, 0,22, 0,18,
18, 0, 0, 0, 0,22, 0, 0, 0,19,20,11,10,10,14,14,
14,11,11,13,13,14,11,11,15,15, 0,14,13,12,12, 0,
15,15,16,16,13,11,11,15,15,16,13,13,15,15,15,10,
10,14,15, 0,14,14,16,16, 0,14,14,15,15,13,11,11,
15,15,18,14,14,15,15,15,10,10,15,14, 0,14,14,16,
16, 0,14,14,15,15, 0,15,15,17,16, 0,21,22,18,18,
0,13,13,14,14, 0,18,17,20,21, 0,15,15,14,14, 0,
15,16,16,17, 0, 0, 0,19,18, 0,13,13,15,14, 0,19,
19, 0, 0, 0,15,15,14,14, 0,12,12,14,13, 0,13,13,
16,16, 0,12,12,16,16, 0,16,16,22, 0, 0,17,18, 0,
22, 0,13,13,16,16, 0,15,15,18,18, 0,12,12,16,16,
0,16,16,22,22, 0,17,17, 0, 0, 0,13,13,17,17, 0,
16,16,19,20, 0,12,12,17,17, 0,17,17,22, 0, 0,17,
17,22,21, 0,18,18, 0, 0, 0, 0, 0, 0, 0, 0,16,16,
21,21, 0,19,19, 0, 0, 0,18,18, 0,22, 0,18,18, 0,
22, 0, 0, 0, 0, 0, 0,16,16,22, 0, 0,20,20, 0, 0,
0,19,18, 0, 0, 0,12,12,15,15, 0,12,12,15,14, 0,
13,13,15,15, 0,14,14,14,14, 0,15,15,16,16, 0,13,
13,15,16, 0,15,15,16,16, 0,12,12,15,15, 0,14,14,
16,16, 0,14,14,15,15, 0,13,13,15,16, 0,15,15,16,
16, 0,12,12,15,15, 0,15,15,17,17, 0,14,14,15,15,
0,15,15,17,17, 0,21,21,19,19, 0,13,13,14,14, 0,
17,17,22, 0, 0,14,14,15,15, 0,15,15,17,17, 0,22,
0,18,20, 0,13,13,15,15, 0,18,18, 0,22, 0,15,15,
14,15, 8, 8, 8,17,16,12,10,10,16,16,13,10,10,17,
16, 0,15,15,17,17, 0,15,15,17,17,12,11,11,18,18,
15,12,12,18,18,15,10,10,16,17, 0,14,14,18,18, 0,
14,14,17,17,13,10,10,16,16,17,14,14,17,17,15,10,
10,16,15, 0,15,15,19,20, 0,14,14,15,16, 0,16,16,
19,19, 0, 0, 0,21,22, 0,13,13,17,17, 0,18,17, 0,
21, 0,15,15,17,17, 0,15,15,18,19, 0, 0,22, 0,21,
0,13,13,16,17, 0,19,19, 0,22, 0,16,15,16,16, 9,
8, 8,14,14,12,11,11,15,15,13,11,11,15,15, 0,21,
20,19,18, 0, 0, 0,19,18,12,11,11,16,15,15,13,13,
17,18,14,11,11,15,15, 0,22,22,19,18, 0,22,21,18,
18,14,11,11,15,15,17,14,14,18,18,15,12,12,15,15,
0,22,22,20,19, 0, 0,21,18,18, 0, 0,22,20,20, 0,
0, 0, 0, 0, 0,20,21,18,18, 0, 0, 0,21,21, 0, 0,
0,20,19, 0,22,21,19,19, 0, 0, 0, 0, 0, 0, 0,22,
17,18, 0, 0,22, 0,22, 0,22, 0,19,19, 0,11,11,15,
15, 0,11,11,14,14, 0,12,12,15,15, 0,15,15,14,14,
0,16,16,16,16, 0,12,12,16,16, 0,14,14,16,16, 0,
11,11,15,15, 0,15,15,17,17, 0,15,15,15,15, 0,12,
12,16,16, 0,14,14,15,15, 0,11,11,15,15, 0,15,15,
17,17, 0,15,15,14,15, 0,16,16,17,17, 0, 0, 0,19,
19, 0,14,14,15,15, 0,18,18,21, 0, 0,15,15,14,15,
0,16,16,17,17, 0,21, 0,19,19, 0,14,14,15,15, 0,
20,20,22, 0, 0,16,15,14,14, 0,12,12,13,13, 0,12,
12,16,16, 0,12,12,16,16, 0,16,16,22,21, 0,18,17,
21, 0, 0,13,13,16,16, 0,15,15,18,19, 0,12,12,16,
16, 0,16,17,22, 0, 0,17,17, 0,22, 0,13,13,17,16,
0,15,15,19,19, 0,12,12,16,16, 0,16,16,21,20, 0,
17,16,22, 0, 0,18,18,22,21, 0, 0, 0, 0, 0, 0,15,
16,21,21, 0,19,19, 0, 0, 0,18,17, 0, 0, 0,18,18,
21, 0, 0, 0, 0, 0, 0, 0,16,16,22,22, 0,20,21, 0,
0, 0,18,19, 0,22, 0,13,13,16,16, 0,12,12,15,15,
0,13,13,16,16, 0,14,14,15,15, 0,15,15,17,17, 0,
13,13,17,16, 0,15,15,17,17, 0,12,12,16,16, 0,15,
15,17,17, 0,14,14,16,16, 0,13,13,16,17, 0,15,15,
17,17, 0,12,12,16,16, 0,14,14,17,17, 0,14,14,16,
16, 0,16,16,17,17, 0,21, 0,21,19, 0,13,13,16,16,
0,17,17, 0, 0, 0,15,15,16,16, 0,16,15,18,18, 0,
22, 0,20,20, 0,13,13,15,15, 0,18,18, 0, 0, 0,15,
15,15,15, 0,12,12,17,17, 0,14,14,17,17, 0,14,14,
17,17, 0,17,17,18,17, 0,17,17,19,18, 0,13,13,17,
17, 0,16,16,18,18, 0,13,13,16,16, 0,17,17,19,19,
0,16,16,17,17, 0,13,13,18,18, 0,17,17,18,18, 0,
13,13,17,17, 0,17,17,19,19, 0,16,17,17,17, 0,17,
17,19,19, 0,21, 0,21,19, 0,14,14,16,16, 0,20,19,
0,21, 0,16,16,16,16, 0,17,18,19,19, 0, 0, 0, 0,
21, 0,15,15,16,17, 0,21,20, 0, 0, 0,17,18,16,17,
0, 9, 9,14,14, 0,14,14,15,16, 0,14,14,15,15, 0,
0, 0,18,18, 0,21, 0,18,19, 0,12,12,15,15, 0,16,
16,17,17, 0,14,14,14,14, 0,22, 0,19,18, 0,22, 0,
17,18, 0,14,14,16,15, 0,18,18,19,18, 0,14,15,15,
15, 0, 0,21,20,20, 0, 0, 0,18,18, 0,21,21,19,19,
0, 0, 0, 0, 0, 0,21,21,18,18, 0,22, 0,20,20, 0,
22, 0,19,19, 0,22, 0,19,20, 0, 0, 0, 0, 0, 0, 0,
21,17,18, 0, 0, 0,22,22, 0, 0, 0,19,18, 0,18,20,
16,16, 0,21,20,17,17, 0, 0,21,18,18, 0,22,21,18,
18, 0, 0,22,19,19, 0,20,20,17,17, 0, 0, 0,18,18,
0,19,20,17,17, 0,22, 0,19,21, 0,22,21,18,18, 0,
20,19,17,18, 0, 0, 0,19,19, 0,20,20,17,17, 0,22,
22,21,21, 0,20, 0,18,18, 0,22,22,18,18, 0, 0, 0,
20,22, 0,20,20,16,16, 0, 0, 0,21, 0, 0,21,20,16,
17, 0,22, 0,19,20, 0, 0, 0,21,20, 0,19,21,17,17,
0, 0, 0, 0, 0, 0,21,21,17,17, 0,12,12,13,13, 0,
14,14,16,16, 0,14,14,16,16, 0,18,18, 0, 0, 0,19,
18,22, 0, 0,13,13,16,16, 0,16,16,18,18, 0,13,13,
16,16, 0,17,18,21, 0, 0,18,18,21, 0, 0,13,13,16,
16, 0,17,17,19,20, 0,13,13,16,17, 0,18,18,21, 0,
0,18,18,21, 0, 0,18,19, 0,21, 0, 0, 0, 0, 0, 0,
16,16,21,20, 0,20,20, 0, 0, 0,18,19, 0, 0, 0,18,
18, 0, 0, 0, 0, 0, 0, 0, 0,16,16, 0,21, 0,22,22,
0, 0, 0,19,19, 0, 0, 0,16,16,19,20, 0,17,16,22,
21, 0,17,17,21,20, 0,19,18, 0,22, 0,19,19,22,22,
0,16,15,22,22, 0,19,19, 0,21, 0,15,15,20,20, 0,
18,19, 0,21, 0,18,18,22,22, 0,16,16,21,20, 0,20,
19,21,22, 0,16,15,20,20, 0,19,19, 0,22, 0,18,18,
21, 0, 0,19,18,21,22, 0, 0, 0, 0, 0, 0,16,16,19,
21, 0,20,22, 0,22, 0,18,18,20,21, 0,19,18, 0,22,
0, 0, 0,22, 0, 0,16,16,20,20, 0,21,21, 0, 0, 0,
18,18,21, 0, 0,12,12,17,17, 0,15,14,17,17, 0,14,
14,18,18, 0,17,17,17,18, 0,18,18,18,18, 0,13,13,
18,18, 0,16,17,19,18, 0,13,13,16,17, 0,17,17,18,
19, 0,17,17,17,17, 0,13,13,17,17, 0,17,18,18,18,
0,13,13,16,16, 0,18,18,19,20, 0,16,17,17,16, 0,
17,18,19,18, 0, 0, 0,22,21, 0,15,15,16,16, 0,20,
20,21,22, 0,17,17,16,16, 0,16,17,18,18, 0, 0, 0,
21,21, 0,15,15,16,16, 0,21,20, 0, 0, 0,17,17,16,
16, 0,10,10,14,14, 0,14,14,15,15, 0,14,14,15,15,
0,22, 0,18,18, 0, 0, 0,19,19, 0,13,13,15,16, 0,
17,16,18,18, 0,14,14,15,15, 0,21,21,19,18, 0,22,
21,18,17, 0,14,14,15,15, 0,18,18,19,18, 0,15,15,
14,14, 0,22,21,19,19, 0,22,21,17,18, 0, 0, 0,19,
19, 0, 0, 0, 0, 0, 0,20,22,17,17, 0, 0,22,22,20,
0, 0, 0,19,18, 0,21,22,19,18, 0, 0, 0, 0, 0, 0,
22,22,17,18, 0, 0, 0,21,22, 0, 0, 0,19,18, 0,20,
20,17,17, 0,21,21,17,18, 0,21,22,18,18, 0,21, 0,
18,18, 0,22, 0,19,19, 0,19,21,18,18, 0, 0,22,18,
18, 0,22,21,17,17, 0,22, 0,20,20, 0, 0, 0,18,18,
0,22,21,18,18, 0,21, 0,19,19, 0,20,21,17,17, 0,
0,22,22,20, 0,21,22,17,17, 0, 0,21,19,18, 0, 0,
0,21,21, 0,21,20,16,17, 0, 0, 0, 0, 0, 0,21, 0,
17,17, 0,21, 0,19,20, 0, 0, 0,20,22, 0,20,20,17,
17, 0, 0, 0, 0, 0, 0,21,21,17,17, 0,12,12,13,13,
0,14,14,16,16, 0,14,14,16,16, 0,18,18,21, 0, 0,
19,19,22, 0, 0,13,13,16,16, 0,16,16,18,18, 0,13,
13,16,16, 0,18,18,21,22, 0,18,18, 0,22, 0,13,13,
16,16, 0,17,17,20,18, 0,13,13,16,16, 0,19,18, 0,
22, 0,18,18,22,21, 0,18,19, 0, 0, 0, 0, 0, 0, 0,
0,16,16,21,21, 0,21,21, 0, 0, 0,18,19, 0, 0, 0,
19,19,21, 0, 0, 0, 0, 0, 0, 0,16,16, 0,21, 0,20,
20, 0, 0, 0,20,20, 0, 0, 0,16,16,21,20, 0,18,17,
21,22, 0,17,18, 0,21, 0,18,19,22,22, 0,19,19, 0,
22, 0,16,17,21,22, 0,20,19, 0, 0, 0,16,16,20,21,
0,19,19, 0, 0, 0,19,19, 0,22, 0,17,17,21,21, 0,
19,20, 0, 0, 0,16,16, 0,20, 0,19,20, 0,21, 0,18,
18, 0,22, 0,19,20,22,22, 0, 0, 0, 0,22, 0,17,17,
0,21, 0,21,21, 0, 0, 0,18,19,23,21, 0,20,19, 0,
0, 0, 0, 0, 0, 0, 0,17,17, 0,20, 0, 0, 0, 0, 0,
0,19,19,23,22,
};
 
static const static_codebook _44p4_p5_0 = {
5, 3125,
(char *)_vq_lengthlist__44p4_p5_0,
1, -528744448, 1616642048, 3, 0,
(long *)_vq_quantlist__44p4_p5_0,
0
};
 
static const long _vq_quantlist__44p4_p5_1[] = {
3,
2,
4,
1,
5,
0,
6,
};
 
static const char _vq_lengthlist__44p4_p5_1[] = {
2, 3, 3, 3, 3, 3, 3,
};
 
static const static_codebook _44p4_p5_1 = {
1, 7,
(char *)_vq_lengthlist__44p4_p5_1,
1, -533200896, 1611661312, 3, 0,
(long *)_vq_quantlist__44p4_p5_1,
0
};
 
static const long _vq_quantlist__44p4_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p4_p6_0[] = {
1, 7, 7, 7, 8, 8, 7, 8, 8, 7, 9, 9,11,11,11, 9,
8, 8, 8, 9, 9,12,11,12, 9, 8, 8, 6, 7, 7,10,11,
11,10,10,10,11,11,11,14,14,14,12,11,12,11,11,11,
15,15,14,13,12,12, 5, 6, 6, 8, 5, 5, 8, 7, 7, 8,
7, 7,12,10,10,10, 7, 6, 9, 8, 8,12,10,10,10, 6,
6, 7, 8, 8,12,10,10,12,10,10,11,10,10,16,14,14,
13,10,10,12,10,10,15,14,14,14,10,10, 7, 7, 7,13,
11,11,13,11,11,12,11,11,16,14,14,14,12,12,12,11,
11,18,15,15,14,12,12,10, 9,10,14,11,11,13,11,11,
12,11,11,17,14,14,14,11,11,13,11,11,16,15,15,14,
11,11, 7, 8, 8,13,11,11,12,10,10,12,10,10,16,14,
13,13,10,10,12,10,10,17,14,14,14,10,10, 8, 7, 7,
12,11,11,13,11,11,12,11,11,16,15,14,14,12,12,12,
11,11,16,15,15,14,12,12,11,10,10,14,11,11,13,11,
11,13,11,11,17,14,14,14,11,11,13,11,11,18,14,15,
15,11,10,
};
 
static const static_codebook _44p4_p6_0 = {
5, 243,
(char *)_vq_lengthlist__44p4_p6_0,
1, -527106048, 1620377600, 2, 0,
(long *)_vq_quantlist__44p4_p6_0,
0
};
 
static const long _vq_quantlist__44p4_p6_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p4_p6_1[] = {
2, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,
7, 7, 8, 8, 8, 9, 9, 9, 9, 8, 8, 6, 7, 7, 8, 8,
8, 8, 8, 8, 9, 8, 8, 9, 8, 9, 9, 8, 8,10, 8, 8,
10, 9, 9,10, 8, 8, 6, 6, 6, 8, 6, 6, 8, 7, 7, 8,
7, 7,10, 8, 8, 9, 7, 7, 9, 7, 7,10, 8, 8, 9, 7,
7, 7, 7, 7,10, 8, 8,11, 9, 9,10, 9, 9,11, 9, 9,
11, 8, 8,11, 9, 9,12, 9, 9,12, 8, 8, 7, 7, 7,10,
9, 9,10, 9, 9,10, 9, 9,11,10,10,10, 9, 9,11, 9,
10,11,10,11,10, 9, 9, 9, 8, 8,10, 9, 9,10, 9, 9,
11, 9, 9,11,10,10,11, 9, 9,11, 9, 9,11,10,10,11,
9, 9, 8, 8, 8,11, 9, 9,11, 9, 9,11, 9, 9,12, 9,
9,12, 8, 8,11, 9, 9,12, 9, 9,12, 8, 8, 8, 7, 7,
10, 9, 9,10, 9, 9,10, 9, 9,11,11,11,11, 9, 9,11,
10,10,11,11,11,11, 9, 9,10, 9, 9,11, 9, 9,11, 9,
10,11,10,10,11,10,10,11, 9, 9,11,10,10,11,10,10,
11, 9, 9,
};
 
static const static_codebook _44p4_p6_1 = {
5, 243,
(char *)_vq_lengthlist__44p4_p6_1,
1, -530841600, 1616642048, 2, 0,
(long *)_vq_quantlist__44p4_p6_1,
0
};
 
static const long _vq_quantlist__44p4_p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p4_p7_0[] = {
1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,
};
 
static const static_codebook _44p4_p7_0 = {
5, 243,
(char *)_vq_lengthlist__44p4_p7_0,
1, -513979392, 1633504256, 2, 0,
(long *)_vq_quantlist__44p4_p7_0,
0
};
 
static const long _vq_quantlist__44p4_p7_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p4_p7_1[] = {
1, 9, 9, 7, 9, 9, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8,
9, 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 7, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 6, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 5, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 5,10, 9,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10, 8,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,
};
 
static const static_codebook _44p4_p7_1 = {
5, 243,
(char *)_vq_lengthlist__44p4_p7_1,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44p4_p7_1,
0
};
 
static const long _vq_quantlist__44p4_p7_2[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p4_p7_2[] = {
1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
12,13,13,14,14,15,15,15,15,
};
 
static const static_codebook _44p4_p7_2 = {
1, 25,
(char *)_vq_lengthlist__44p4_p7_2,
1, -518864896, 1620639744, 5, 0,
(long *)_vq_quantlist__44p4_p7_2,
0
};
 
static const long _vq_quantlist__44p4_p7_3[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p4_p7_3[] = {
4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44p4_p7_3 = {
1, 25,
(char *)_vq_lengthlist__44p4_p7_3,
1, -529006592, 1611661312, 5, 0,
(long *)_vq_quantlist__44p4_p7_3,
0
};
 
static const char _huff_lengthlist__44p4_short[] = {
3, 5,16, 9, 9,13,18,21, 4, 2,21, 6, 6,10,15,21,
16,19, 6, 5, 7,10,13,16, 8, 6, 5, 4, 4, 8,13,16,
8, 5, 6, 4, 4, 7,12,15,13,10, 9, 7, 7, 9,13,16,
18,15,13,12, 9, 7,10,14,21,18,13,13, 7, 5, 8,12,
};
 
static const static_codebook _huff_book__44p4_short = {
2, 64,
(char *)_huff_lengthlist__44p4_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p5_l0_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44p5_l0_0[] = {
1, 4, 4, 8, 8,10,10,10,10, 9, 8,11,11, 4, 6, 5,
8, 6,10,10,10,10,10, 9,10, 9, 4, 5, 6, 6, 9,10,
10,10,10, 9,10, 9,10, 8, 9, 8, 9, 8, 9, 9,10, 9,
11,10,12,10, 8, 8, 9, 8, 9, 9, 9, 9,10,10,11,10,
12, 9,10,10,11,10,11,10,12,11,12,11,13,11, 9,10,
10,10,11,10,11,11,12,11,12,11,12,11,12,12,12,12,
13,12,13,12,13,12,13,13,11,12,12,12,12,12,12,12,
13,13,13,13,13,12,12,12,13,13,13,13,13,13,13,13,
13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,12,
13,13,13,14,14,13,13,13,13,13,13,13,12,13,12,13,
13,13,13,13,13,13,13,13,13,
};
 
static const static_codebook _44p5_l0_0 = {
2, 169,
(char *)_vq_lengthlist__44p5_l0_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44p5_l0_0,
0
};
 
static const long _vq_quantlist__44p5_l0_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p5_l0_1[] = {
4, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 4, 4, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44p5_l0_1 = {
2, 25,
(char *)_vq_lengthlist__44p5_l0_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p5_l0_1,
0
};
 
static const long _vq_quantlist__44p5_l1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p5_l1_0[] = {
1, 4, 4, 4, 4, 4, 4, 4, 4,
};
 
static const static_codebook _44p5_l1_0 = {
2, 9,
(char *)_vq_lengthlist__44p5_l1_0,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44p5_l1_0,
0
};
 
static const char _huff_lengthlist__44p5_lfe[] = {
1, 3, 2, 3,
};
 
static const static_codebook _huff_book__44p5_lfe = {
2, 4,
(char *)_huff_lengthlist__44p5_lfe,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44p5_long[] = {
3, 7,12,14,14,16,18,19, 6, 2, 4, 6, 8, 9,12,14,
12, 3, 3, 5, 7, 8,11,13,13, 6, 4, 5, 7, 8,10,11,
14, 8, 7, 7, 7, 7, 9,10,15, 9, 8, 7, 7, 6, 8, 9,
17,11,11,10, 9, 8, 9, 9,19,14,13,11,10, 9, 9, 9,
};
 
static const static_codebook _huff_book__44p5_long = {
2, 64,
(char *)_huff_lengthlist__44p5_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p5_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p5_p1_0[] = {
2, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 8, 9, 7,
9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 5, 7, 8, 8, 9,
10, 8, 9,10, 8, 9,10, 9,10,12,10,11,11, 8,10,10,
10,11,11, 9,11,11, 5, 8, 7, 8, 9, 9, 8,10, 9, 8,
10,10, 9,11,11,10,11,11, 8,10, 9,10,11,11, 9,12,
10, 5, 8, 8, 7, 9,10, 8,10, 9, 7, 9, 9, 9,10,11,
9,11,11, 8,10, 9,10,11,11,10,11,11, 7, 9, 9, 9,
10,11, 9,11,11, 9, 9,11,10,10,13,11,11,12, 9,11,
11,11,12,13,11,13,12, 7, 9, 9, 9,11,11, 9,11,10,
9,11,10,10,11,12,11,13,12, 9,11,11,11,12,13,11,
13,11, 5, 8, 8, 8, 9,10, 7,10, 9, 8, 9,10,10,11,
11,10,11,11, 7, 9, 9, 9,11,11, 9,11,10, 7, 9, 9,
9,10,11, 9,11,11, 9,11,11,11,11,13,11,13,12, 9,
10,11,11,12,13,10,12,11, 7, 9, 9, 9,11,11, 9,11,
10, 9,11,11,11,12,13,11,13,12, 9,11, 9,11,12,11,
10,13,10,
};
 
static const static_codebook _44p5_p1_0 = {
5, 243,
(char *)_vq_lengthlist__44p5_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p5_p1_0,
0
};
 
static const long _vq_quantlist__44p5_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p5_p2_0[] = {
4, 6, 6, 9, 9, 6, 7, 8,10,10, 6, 8, 7,10,10, 8,
10,10,12,13, 8,10,10,13,12, 6, 7, 8,10,10, 7, 8,
9,10,11, 8, 9, 9,11,11,10,10,11,12,14,10,11,11,
14,13, 6, 8, 7,10,10, 8, 9, 9,11,11, 7, 9, 8,11,
10,10,11,11,13,14,10,11,10,14,12, 9,10,10,12,12,
10,10,11,12,13,10,11,11,13,13,12,12,13,12,15,13,
14,13,15,14, 9,10,10,12,12,10,11,11,13,13,10,11,
10,13,12,13,13,14,14,15,12,13,12,15,12, 6, 7, 8,
10,11, 8, 9,10,11,12, 8, 9, 9,11,12,10,11,12,13,
14,10,11,11,14,13, 8, 9,10,11,12, 9,10,11,12,13,
9,10,11,12,13,11,12,13,13,15,12,12,13,15,14, 8,
9, 9,12,12, 9,10,11,12,13, 9,10,10,13,12,12,12,
13,14,15,11,12,12,14,14,11,11,12,13,14,11,12,13,
13,15,12,13,13,14,15,14,13,15,14,16,14,15,15,16,
16,11,12,11,14,13,12,13,13,15,14,11,13,12,14,13,
14,15,15,15,16,13,14,14,16,14, 6, 8, 7,11,10, 8,
9, 9,11,12, 8,10, 9,12,11,10,11,11,13,14,10,12,
11,14,13, 8, 9, 9,12,12, 9,10,10,12,13, 9,11,10,
13,12,11,12,12,13,14,12,13,12,15,14, 8,10, 9,12,
11, 9,11,10,13,12, 9,11,10,13,12,12,13,12,14,15,
11,13,12,15,13,11,11,12,13,14,11,12,13,13,15,12,
13,13,14,15,13,14,14,14,16,14,15,15,16,16,11,12,
11,14,13,12,13,13,15,14,11,13,12,15,13,14,15,15,
16,16,13,15,13,16,14, 9,10,11,12,14,11,11,12,13,
15,11,12,12,13,14,13,14,15,15,17,13,14,14,15,16,
11,11,12,13,15,12,12,13,14,16,12,13,13,14,15,14,
14,16,15,17,15,15,15,16,17,11,12,12,14,14,12,13,
13,15,16,12,13,13,15,15,15,15,15,16,17,14,15,15,
16,16,14,14,15,15,17,14,15,15,15,17,15,15,16,16,
17,16,16,17,16,18,17,17,17,18,18,14,15,14,16,16,
15,15,16,17,17,14,15,15,17,16,17,17,17,18,18,16,
16,16,17,17, 9,11,10,14,12,11,12,12,14,13,11,12,
11,15,13,13,14,14,16,15,13,15,14,17,15,11,12,12,
15,14,12,13,13,15,15,12,13,13,15,15,14,15,15,16,
16,15,15,15,17,16,11,12,11,15,13,12,13,13,15,14,
12,13,12,16,14,15,15,15,17,16,14,15,14,17,15,14,
14,15,16,16,14,15,15,16,16,15,16,15,17,17,16,16,
16,17,17,17,17,17,18,17,14,15,14,16,15,15,15,15,
17,16,15,15,15,17,15,17,17,17,18,18,16,17,16,18,
16, 6, 8, 8,11,11, 8, 9, 9,11,12, 8, 9, 9,12,11,
10,11,11,13,14,10,12,11,14,13, 7, 9, 9,11,12, 9,
10,10,12,13, 9,10,10,13,13,11,11,12,13,15,11,12,
12,15,14, 8, 9, 9,12,11, 9,11,10,13,13, 9,11,10,
13,12,12,13,12,14,15,11,13,12,15,13,10,11,12,13,
14,11,12,12,13,15,12,12,13,14,15,13,13,14,14,16,
14,15,15,16,16,11,12,11,14,13,12,13,13,15,14,11,
13,12,15,13,14,15,15,15,16,13,14,14,16,14, 7, 9,
9,11,12, 9,10,11,12,13, 9,10,10,13,12,11,12,12,
14,15,11,12,12,15,14, 9, 9,11,11,13,10,10,12,12,
14,10,11,12,13,14,12,12,13,14,16,12,13,13,15,15,
9,11,10,13,13,10,12,12,13,14,10,12,11,14,13,12,
13,13,15,16,12,13,13,15,14,11,11,13,13,15,12,12,
14,13,16,13,13,13,14,15,14,14,15,14,17,15,15,15,
16,16,12,13,12,15,14,13,14,14,15,15,12,14,13,16,
14,15,15,16,16,17,14,15,14,17,15, 7, 9, 9,12,11,
9,10,10,12,13, 9,11,10,13,12,11,12,12,14,14,11,
13,12,15,14, 9,10,10,13,12,10,10,11,12,13,10,12,
11,14,13,12,12,13,13,15,12,14,13,16,15, 9,10,10,
13,12,11,11,12,13,13,10,12,10,14,12,13,13,13,15,
15,12,13,12,15,13,11,12,12,14,14,12,12,13,14,15,
13,14,13,15,15,14,13,15,13,16,15,16,15,17,16,12,
13,12,14,14,13,14,14,15,15,12,13,12,15,14,15,15,
16,16,17,14,15,13,16,13,10,11,12,13,14,11,12,13,
14,15,12,13,13,15,15,14,14,15,15,17,14,15,15,16,
16,12,12,13,12,15,12,12,14,13,16,13,13,14,14,16,
14,14,16,15,17,15,15,16,16,17,12,13,13,15,15,13,
14,14,16,16,13,14,13,16,15,15,16,16,17,17,14,15,
15,17,16,14,14,15,14,17,15,15,16,15,17,15,15,16,
15,17,16,16,17,16,18,17,17,17,17,18,14,15,15,17,
16,15,16,16,17,17,15,16,15,17,16,17,17,17,18,18,
16,17,16,18,17,10,12,11,14,14,12,13,13,15,15,12,
13,12,15,14,14,15,15,16,16,14,15,15,17,16,11,13,
12,15,14,12,13,13,15,15,13,14,13,16,14,15,15,15,
16,16,15,16,15,17,16,12,13,13,15,15,13,14,14,16,
16,12,14,13,16,15,15,16,16,17,17,15,16,15,17,16,
14,15,15,16,16,14,15,15,16,16,15,16,16,17,16,16,
16,16,16,17,17,18,17,18,17,14,15,15,17,16,15,16,
16,17,17,15,16,15,17,16,17,17,18,18,18,16,17,16,
18,16, 6, 8, 8,11,11, 8, 9, 9,11,12, 8, 9, 9,12,
11,10,11,12,13,14,10,11,11,14,13, 8, 9, 9,11,12,
9,10,11,12,13, 9,10,11,13,13,11,12,13,13,15,12,
12,12,15,14, 7, 9, 9,12,11, 9,10,10,13,13, 9,10,
10,13,12,11,12,12,14,15,11,12,11,15,13,11,11,12,
13,14,11,12,13,13,15,12,13,13,14,15,13,14,14,14,
16,14,15,15,16,16,10,12,11,14,13,12,13,12,14,14,
11,12,12,15,13,14,15,15,16,16,13,14,13,16,14, 7,
9, 9,11,12, 9,10,11,12,13, 9,10,10,13,12,11,12,
13,14,15,11,12,12,14,14, 9,10,10,12,13,10,10,12,
12,14,11,12,11,13,13,12,12,14,13,15,13,13,13,15,
15, 9,10,10,12,13,10,11,12,13,14,10,11,10,13,12,
13,13,14,15,16,12,13,12,15,13,12,13,13,14,14,12,
12,13,14,15,13,14,14,15,15,14,13,15,13,16,15,16,
15,17,16,11,12,12,14,14,13,13,14,15,15,12,13,12,
15,14,15,15,16,16,17,14,14,13,16,13, 7, 9, 9,12,
11, 9,10,10,12,13, 9,11,10,13,12,11,12,12,14,15,
11,12,12,15,14, 9,10,11,13,13,10,11,12,13,14,10,
12,12,14,13,12,13,13,14,16,12,13,13,16,15, 9,11,
9,13,11,10,12,11,13,13,10,12,10,14,12,12,13,13,
15,15,12,13,12,16,14,12,12,13,14,15,12,13,14,14,
15,13,14,14,15,15,14,14,15,15,17,15,16,15,17,16,
11,13,11,15,13,13,14,13,15,14,12,14,12,16,13,15,
15,15,16,16,14,15,14,17,14,10,11,12,14,14,12,12,
13,14,15,12,13,13,15,15,14,15,15,16,17,14,15,15,
16,16,12,12,13,15,15,13,13,14,15,16,13,14,14,16,
16,15,15,16,16,17,15,16,16,17,17,11,12,13,14,15,
13,13,14,15,16,12,13,13,15,15,15,15,16,16,17,15,
15,15,16,16,14,15,15,16,17,15,15,16,16,17,15,16,
16,17,17,16,16,17,16,18,17,17,17,18,18,14,15,15,
16,16,15,16,16,16,17,15,15,15,16,16,17,17,17,18,
18,16,16,16,17,16,10,12,11,14,13,12,13,13,15,15,
11,13,12,15,14,14,15,15,16,16,14,15,14,17,15,12,
13,13,15,15,13,13,14,16,16,13,14,14,16,16,15,15,
15,16,17,15,16,16,17,17,12,13,12,15,12,13,14,13,
16,14,12,14,12,16,13,15,16,15,17,16,14,16,14,17,
15,14,15,15,16,17,15,15,16,17,17,15,16,16,17,17,
16,16,17,17,18,17,18,17,18,18,14,15,14,17,14,15,
16,15,17,15,15,16,15,17,15,17,17,17,18,17,16,17,
16,18,16, 9,11,11,14,14,11,12,12,14,14,11,12,12,
15,14,13,14,14,16,16,13,15,14,16,16,10,11,12,14,
14,11,12,13,15,15,12,13,13,15,15,13,14,15,16,17,
14,15,15,17,16,11,12,12,15,14,12,13,13,15,15,12,
13,13,15,15,14,15,15,16,16,14,15,15,17,16,12,13,
14,15,16,13,14,14,15,16,13,14,15,16,16,15,15,16,
16,18,16,16,16,18,17,14,14,14,16,15,15,15,15,17,
16,14,15,15,17,16,16,17,17,18,17,16,16,16,18,16,
10,12,12,14,14,11,12,13,15,15,12,13,13,15,15,13,
14,15,16,17,14,15,15,17,16,11,12,13,14,15,12,12,
14,15,16,13,13,14,15,16,14,14,15,16,17,15,15,16,
17,17,12,13,13,15,15,13,14,14,16,16,13,14,13,16,
15,15,16,15,17,17,15,16,15,17,16,13,13,15,14,17,
14,13,16,15,17,15,14,16,15,17,15,15,17,16,18,16,
16,17,17,18,14,15,15,17,16,15,16,16,17,17,15,16,
15,17,16,17,17,17,18,18,16,17,16,18,17,10,12,11,
14,14,11,12,13,15,15,12,13,12,15,15,14,15,15,16,
16,14,15,15,17,16,11,12,12,15,15,12,13,13,15,15,
13,14,13,16,15,14,15,15,16,16,15,16,15,17,16,11,
13,13,15,15,13,14,14,15,15,12,14,13,16,15,15,16,
15,17,17,15,16,15,17,16,13,15,14,16,16,14,15,14,
16,16,15,16,15,17,16,15,16,16,16,17,16,17,16,18,
17,14,15,15,16,16,15,16,16,17,17,15,15,15,17,16,
17,17,17,18,18,16,16,16,18,16,12,13,13,15,16,13,
14,14,15,16,13,14,14,16,16,15,15,16,16,18,15,16,
16,17,17,13,13,14,15,16,14,14,15,15,17,14,15,15,
16,17,15,15,17,16,18,16,16,17,17,17,13,14,14,16,
16,14,15,15,17,17,14,15,14,17,16,16,17,16,17,18,
16,17,16,18,17,15,15,16,14,17,16,15,17,14,18,16,
16,16,15,18,16,16,18,15,19,18,18,18,17,19,15,16,
16,18,17,16,17,17,18,17,16,17,16,18,17,18,18,18,
19,19,17,18,16,18,17,11,12,12,15,15,13,13,14,15,
16,13,14,13,16,15,15,16,16,16,17,15,16,16,17,16,
12,14,13,16,15,13,13,14,15,16,14,15,14,17,15,15,
15,16,16,17,16,17,16,18,17,12,13,14,15,16,14,15,
15,16,16,13,14,13,16,15,16,16,16,17,17,15,16,15,
17,15,15,16,15,17,16,15,15,15,16,16,16,17,16,18,
16,16,15,16,15,17,17,18,17,18,17,15,15,16,17,17,
16,16,17,17,17,15,16,15,17,16,18,18,18,18,18,16,
17,16,18,15, 9,11,11,14,14,11,12,12,14,15,10,12,
12,15,14,13,14,15,16,16,13,14,14,16,16,11,12,12,
14,15,12,12,13,15,15,12,13,13,15,15,14,15,15,16,
17,14,15,15,16,16,10,12,12,14,14,12,13,13,15,15,
11,13,12,15,15,14,15,15,16,17,13,15,14,16,16,14,
14,14,15,16,14,15,15,16,17,14,15,15,16,17,16,16,
17,16,18,16,17,17,17,17,12,14,13,16,15,13,15,14,
16,16,13,14,14,16,15,16,16,16,17,17,15,16,15,17,
16,10,11,11,14,14,12,12,13,14,15,11,13,12,15,14,
14,15,15,16,17,14,15,15,16,16,12,13,13,15,15,12,
13,14,15,16,13,14,14,15,15,15,15,16,16,17,15,15,
16,17,17,11,12,12,15,15,13,13,14,15,16,12,13,13,
15,15,15,15,16,16,17,14,15,15,16,16,14,15,15,16,
16,15,15,15,16,17,15,16,16,17,17,16,16,17,16,18,
17,17,17,17,18,13,14,15,16,16,15,15,16,16,17,14,
14,14,16,16,16,16,17,17,18,16,16,16,17,16,10,12,
12,14,14,12,13,13,15,15,11,13,12,15,15,14,15,15,
16,17,13,15,14,17,16,12,13,13,15,15,13,13,14,15,
16,13,14,14,16,16,15,15,16,16,17,15,15,16,17,17,
11,13,12,15,14,13,14,13,16,15,12,14,12,16,15,15,
16,15,17,17,14,15,14,17,16,14,15,15,16,17,15,15,
16,16,17,15,16,16,17,17,16,16,17,17,18,17,17,17,
18,18,13,15,13,17,14,14,16,14,17,16,14,15,13,17,
15,16,17,16,18,17,15,17,15,18,16,11,12,12,15,15,
13,13,14,15,16,13,14,13,16,15,15,16,16,16,17,15,
16,16,17,16,12,14,13,16,15,13,13,14,15,16,14,15,
15,16,16,16,15,16,16,17,16,16,16,17,17,12,13,14,
15,16,14,14,15,15,17,13,14,13,16,15,16,16,17,17,
18,15,16,15,17,15,15,16,15,17,17,15,15,16,16,17,
16,17,16,17,17,16,15,17,15,18,17,18,17,18,18,15,
15,16,16,17,16,16,17,16,18,15,15,15,16,16,17,17,
18,17,18,16,16,15,17,15,12,13,13,15,15,13,14,14,
16,16,13,14,14,16,16,15,16,16,17,18,15,16,15,18,
16,13,14,14,16,16,14,14,15,16,17,14,15,15,17,17,
16,16,17,17,18,16,16,17,18,17,13,14,13,16,14,14,
15,15,17,16,14,15,14,17,15,16,17,17,18,17,15,17,
15,18,16,15,16,16,17,17,16,16,17,17,18,16,17,17,
18,18,17,16,18,17,19,18,18,18,18,18,15,16,15,17,
14,16,16,16,18,15,16,17,15,18,14,18,18,18,18,17,
17,18,16,19,15,
};
 
static const static_codebook _44p5_p2_0 = {
5, 3125,
(char *)_vq_lengthlist__44p5_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p5_p2_0,
0
};
 
static const long _vq_quantlist__44p5_p3_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p5_p3_0[] = {
1, 5, 6, 5, 7, 8, 5, 8, 7, 5, 7, 8, 7, 8,10, 8,
10,10, 5, 8, 7, 8,10,10, 7,10, 8, 6, 8, 9, 8,10,
11, 9,10,10, 9,10,11,10,11,12,11,12,12, 9,11,10,
11,12,12,10,12,11, 6, 9, 8, 9,10,10, 8,11,10, 9,
10,11,10,11,12,11,12,12, 9,11,10,11,12,12,10,12,
11, 6, 9, 9, 8,10,11, 9,11,10, 8,10,10,10,10,12,
11,12,12, 9,11,10,11,12,12,10,12,11, 8,10,10,10,
11,12,10,12,11,10,10,12,11,11,13,12,13,13,10,12,
11,12,13,13,11,13,11, 7,10,10,10,11,12,10,12,11,
10,12,11,11,11,12,12,14,13,10,12,12,12,14,14,11,
13,11, 6, 9, 9, 9,10,11, 8,11,10, 9,10,11,10,11,
12,11,12,12, 8,11,10,11,12,12,10,12,10, 7,10,10,
10,11,12,10,12,11,10,12,12,11,11,13,12,13,13,10,
11,12,12,13,14,11,12,11, 8,10,10,10,11,12,10,12,
11,10,11,12,11,11,13,12,13,13,10,12,10,12,13,13,
11,13,11,
};
 
static const static_codebook _44p5_p3_0 = {
5, 243,
(char *)_vq_lengthlist__44p5_p3_0,
1, -533200896, 1614282752, 2, 0,
(long *)_vq_quantlist__44p5_p3_0,
0
};
 
static const long _vq_quantlist__44p5_p3_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p5_p3_1[] = {
5, 6, 6, 6, 7, 7, 6, 7, 7, 6, 7, 7, 7, 7, 8, 7,
8, 8, 6, 7, 7, 7, 8, 8, 7, 8, 7, 7, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8,
8, 9, 9, 8, 9, 9, 7, 8, 7, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9,
8, 6, 8, 8, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 9,
8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9, 8, 7, 8, 8, 8,
9, 9, 8, 9, 9, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8, 9,
9, 9, 9, 9, 9, 9, 9, 7, 8, 8, 8, 8, 9, 8, 9, 8,
8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9, 9, 8,
9, 9, 6, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
9, 8, 9, 9, 7, 8, 8, 8, 9, 9, 8, 9, 8, 7, 8, 8,
8, 8, 9, 8, 9, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 8,
8, 8, 9, 9, 9, 8, 9, 9, 7, 8, 8, 8, 9, 9, 8, 9,
9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9, 9,
9, 9, 9,
};
 
static const static_codebook _44p5_p3_1 = {
5, 243,
(char *)_vq_lengthlist__44p5_p3_1,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p5_p3_1,
0
};
 
static const long _vq_quantlist__44p5_p4_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p5_p4_0[] = {
1, 5, 5, 5, 7, 9, 5, 9, 7, 5, 7, 8, 7, 7,10, 9,
10,10, 5, 8, 7, 9,10,10, 7,10, 7, 6, 8, 9, 9,10,
12, 9,11,11, 9,10,11,11,11,13,12,13,13, 9,11,11,
11,12,13,11,13,11, 6, 9, 8, 9,11,11, 9,12,10, 9,
11,11,11,11,13,11,13,12, 9,11,10,12,13,13,11,13,
11, 6, 9, 9, 8,10,11, 9,12,11, 9,10,11,10,10,12,
11,13,13, 9,11,11,11,13,12,11,13,11, 8,10,10, 9,
10,12,10,12,11,10,10,12,10,10,13,12,13,13,10,12,
11,12,13,13,10,13,10, 7,10,10,11,11,13,11,14,11,
10,12,11,11,11,13,13,14,13,10,12,12,14,14,14,11,
14,11, 6, 9, 9, 9,11,12, 8,11,10, 9,11,11,11,11,
13,11,12,13, 8,11,10,11,13,13,10,12,10, 7,10,10,
11,11,14,11,13,11,10,12,12,11,11,14,14,14,14,10,
11,12,13,13,14,11,13,11, 8,10,10,10,11,12, 9,12,
10,10,11,12,11,10,13,12,13,13,10,12,10,12,13,13,
11,13,10,
};
 
static const static_codebook _44p5_p4_0 = {
5, 243,
(char *)_vq_lengthlist__44p5_p4_0,
1, -531365888, 1616117760, 2, 0,
(long *)_vq_quantlist__44p5_p4_0,
0
};
 
static const long _vq_quantlist__44p5_p4_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p5_p4_1[] = {
5, 7, 7,10,10, 7, 8, 9,10,11, 7, 9, 8,11,10, 9,
10,10,11,11, 9,10,10,11,11, 7, 9, 9,10,10, 8, 9,
10,10,11, 9,10,10,11,11,10,10,11,11,11,10,11,11,
12,12, 7, 9, 9,10,10, 9,10,10,11,11, 8,10, 9,11,
10,10,11,11,11,11,10,11,10,11,11,10,10,10,11,11,
10,10,11,11,11,11,11,11,11,11,11,11,12,11,12,11,
12,11,12,12,10,10,10,11,11,10,11,11,11,11,10,11,
10,11,11,11,12,11,12,12,11,12,11,12,11, 8, 9, 9,
11,11, 9,10,10,11,12, 9,10,10,11,11,10,11,11,12,
12,10,11,11,12,12, 9,10,10,11,11,10,10,11,11,12,
10,11,11,12,12,11,11,12,12,12,11,12,12,12,12, 9,
10,10,11,11,10,11,11,12,12,10,11,10,12,12,11,12,
12,12,12,11,12,12,12,12,11,11,11,12,12,11,11,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,
12,12,12,12,12,12,12,12,12,12, 8, 9, 9,11,11, 9,
10,10,11,11, 9,10,10,11,11,10,11,11,12,12,10,11,
11,12,12, 9,10,10,11,11,10,10,11,12,12,10,11,11,
12,12,11,12,12,12,12,11,12,12,12,12, 9,10,10,11,
11,10,11,11,12,12,10,11,10,12,11,11,12,12,12,12,
11,12,11,12,12,11,11,11,12,12,11,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,
11,12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,
12,12,12,12,12,12,12,10,11,11,12,12,11,12,12,12,
12,11,12,12,12,12,12,12,13,13,13,12,12,12,13,13,
11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,
12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,
12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,
13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,
13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,
11,12,12,12,12,12,13,12,12,12,12,13,13,11,12,12,
12,12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,
13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,
12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,12,
12,12,12,13,12,13,13,13,13,12,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,12,12,12,13,12,13,13,13,
13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,
13, 8, 9, 9,11,11, 9,10,10,11,11, 9,10,10,12,11,
10,11,11,12,12,10,11,11,12,12, 9,10,10,11,11,10,
10,11,11,12,10,11,11,12,12,11,11,12,12,12,11,12,
12,12,12, 9,10,10,11,11,10,11,11,12,12,10,11,10,
12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,
12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12, 9,10,
10,11,11,10,10,11,12,12,10,11,11,12,12,11,11,12,
12,12,11,12,12,12,12,10,10,11,11,12,11,11,12,12,
12,11,11,12,12,12,11,11,12,12,13,12,12,12,12,12,
10,11,11,12,12,11,12,11,12,12,11,12,11,12,12,12,
12,12,12,12,12,12,12,12,12,11,11,12,12,12,12,12,
12,12,12,12,12,12,12,13,12,12,13,12,13,12,12,13,
13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,13,12,12,12,12,13,12, 8,10,10,11,11,
10,11,11,12,12,10,11,10,12,12,11,12,12,12,12,11,
12,12,12,12,10,11,10,12,12,10,10,11,12,12,11,12,
12,12,12,12,12,12,12,13,12,12,12,13,13,10,11,11,
12,12,11,12,12,12,12,10,12,11,12,12,12,12,12,13,
13,12,13,12,13,12,11,12,12,12,12,11,12,12,12,13,
12,12,12,13,13,12,12,13,12,13,12,13,13,13,13,11,
12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,
13,13,13,12,13,12,13,12,11,11,11,12,12,11,12,12,
12,13,11,12,12,12,12,12,12,12,13,13,12,12,13,13,
13,11,12,12,12,12,12,12,12,12,13,12,12,13,13,13,
12,12,13,13,13,13,13,13,13,13,11,12,12,12,12,12,
13,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,
13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,10,11,11,12,12,11,12,12,12,13,11,
12,12,13,12,12,13,13,13,13,12,13,13,13,13,11,12,
12,12,12,12,12,12,13,13,12,13,12,13,13,13,13,13,
13,13,13,13,13,13,13,11,12,12,13,12,12,13,12,13,
13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,
12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13, 8, 9, 9,11,11, 9,10,10,11,12, 9,10,10,11,
11,10,11,11,12,12,10,11,11,12,12, 9,10,10,11,11,
10,10,11,12,12,10,11,11,12,12,11,11,12,12,12,11,
12,12,12,12, 9,10,10,11,11,10,11,11,12,12,10,11,
10,12,12,11,12,12,12,12,11,12,11,12,12,11,11,11,
12,12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,
11,12,11,12,12,12,12,12,12,12,12,12,12,12,12, 8,
10,10,11,11,10,10,11,12,12,10,11,11,12,12,11,12,
12,12,12,11,12,12,12,12,10,11,11,12,12,10,11,12,
12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,
13,10,10,11,12,12,11,12,12,12,12,10,11,10,12,12,
12,12,12,13,13,12,12,12,13,12,11,12,12,12,12,11,
12,12,12,13,12,12,12,13,13,12,12,13,12,13,12,13,
13,13,13,11,12,12,12,12,12,12,12,13,13,11,12,12,
13,12,12,13,13,13,13,12,13,12,13,12, 9,10,10,11,
11,10,11,11,12,12,10,11,11,12,12,11,12,12,12,12,
11,12,11,12,12,10,11,11,12,12,11,11,12,12,12,11,
11,12,12,12,12,12,12,12,13,12,12,12,13,12,10,11,
10,12,11,11,12,11,12,12,11,12,11,12,12,12,12,12,
12,12,12,12,11,12,12,11,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,13,12,13,12,13,13,13,13,
11,12,11,12,12,12,12,12,13,12,12,12,12,12,12,12,
13,12,13,13,12,12,12,13,12,10,11,11,12,12,11,12,
12,12,13,11,12,12,13,12,12,12,13,13,13,12,13,13,
13,13,11,12,12,12,13,12,12,13,13,13,12,12,13,13,
13,13,13,13,13,13,13,13,13,13,13,11,12,12,12,12,
12,12,13,13,13,12,13,12,13,13,13,13,13,13,13,13,
13,13,13,13,12,13,13,13,13,12,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,13,
13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,11,11,11,12,12,11,12,12,12,12,
11,12,12,12,12,12,12,13,13,13,12,13,12,13,13,11,
12,12,12,12,12,12,13,13,13,12,12,13,13,13,12,13,
13,13,13,12,13,13,13,13,11,12,12,12,12,12,13,12,
13,13,12,12,12,13,12,13,13,13,13,13,12,13,12,13,
13,12,12,12,13,13,12,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,13,
13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,12,
12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,
12,11,12,12,13,13,12,12,12,13,13,12,12,13,13,13,
12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,
12,12,13,12,12,13,13,13,13,12,13,12,13,13,12,12,
12,12,12,12,12,13,13,13,12,13,13,13,13,12,13,13,
13,13,13,13,13,13,13,12,12,12,13,12,12,13,13,13,
13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,
10,11,11,12,12,11,12,12,12,13,11,12,12,13,12,12,
12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,
13,13,13,12,12,12,13,13,12,12,13,13,13,12,13,13,
13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,
13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,13,
12,12,13,13,13,12,13,13,13,13,12,13,13,13,13,13,
13,13,13,13,12,12,12,13,13,13,13,13,13,13,12,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,10,11,11,
12,12,11,12,12,12,13,11,12,12,13,12,12,13,13,13,
13,12,13,12,13,13,11,12,12,13,13,12,12,12,13,13,
12,12,13,13,13,12,13,13,13,13,13,13,13,13,13,11,
12,12,13,12,12,13,12,13,13,12,13,12,13,13,13,13,
13,13,13,12,13,13,13,13,12,12,12,13,13,12,13,13,
13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,11,11,11,12,12,11,
12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,
12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,
13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,
12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,13,
12,13,12,13,13,12,12,12,12,12,12,12,13,12,13,12,
13,13,13,13,12,13,13,12,13,13,13,13,13,13,12,12,
12,12,12,12,13,13,13,13,12,13,12,13,13,13,13,13,
13,13,12,13,13,13,12,10,11,11,12,12,11,12,12,12,
12,11,12,12,12,12,12,12,12,13,13,12,13,12,13,13,
11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,
12,13,13,13,13,13,13,13,13,11,12,12,12,12,12,13,
12,13,13,12,13,12,13,13,12,13,13,13,13,12,13,12,
13,13,12,12,12,12,12,12,13,13,13,13,12,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,
12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,
13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,
12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,
12,12,12,12,12,13,13,12,12,12,13,13,12,12,13,13,
13,12,12,13,13,13,11,12,11,12,12,12,12,12,13,13,
11,12,12,13,13,12,13,13,13,13,12,13,12,13,13,12,
12,12,12,12,12,13,13,13,13,12,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,12,12,12,13,12,12,13,13,
13,13,12,13,12,13,13,13,13,13,13,13,12,13,13,13,
13,10,11,11,12,12,11,12,12,12,13,11,12,12,13,12,
12,12,13,13,13,12,13,13,13,13,11,12,12,13,13,12,
12,13,13,13,12,12,13,13,13,12,13,13,13,13,13,13,
13,13,13,11,12,12,13,12,12,13,12,13,13,12,12,12,
13,13,12,13,13,13,13,13,13,13,13,13,12,12,13,13,
13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,12,12,12,13,13,13,13,13,13,13,12,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,10,12,
11,12,12,11,12,12,12,13,11,12,12,12,12,12,12,12,
13,13,12,12,12,13,13,11,12,12,12,13,12,12,12,13,
13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,
11,12,12,13,12,12,12,12,13,13,12,12,12,13,13,12,
13,13,13,13,12,13,12,13,13,12,13,12,13,13,12,13,
13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,12,12,12,13,12,13,13,13,13,13,12,13,12,13,
13,13,13,13,13,13,12,13,13,13,13,10,11,11,12,12,
11,12,12,12,13,11,12,12,12,12,12,12,12,13,13,12,
12,12,13,13,11,12,12,12,12,12,12,13,13,13,12,13,
13,13,13,12,12,13,13,13,13,13,13,13,13,11,12,12,
12,12,12,13,12,13,13,12,12,12,13,13,12,13,13,13,
13,12,13,12,13,13,12,12,12,12,13,12,13,13,13,13,
12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,12,
12,12,12,12,12,13,13,13,13,12,13,13,13,13,13,13,
13,13,13,12,13,13,13,13,11,12,11,12,12,11,12,12,
12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,
12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,
12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,
12,12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,
12,13,13,12,12,12,12,12,12,12,13,13,13,12,13,13,
13,13,13,13,13,12,13,13,13,13,13,13,12,12,12,12,
12,12,13,13,13,13,12,13,12,13,12,13,13,13,13,13,
13,13,13,13,12,
};
 
static const static_codebook _44p5_p4_1 = {
5, 3125,
(char *)_vq_lengthlist__44p5_p4_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p5_p4_1,
0
};
 
static const long _vq_quantlist__44p5_p5_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p5_p5_0[] = {
1, 6, 6,10,10, 6, 7, 9,11,13, 5, 9, 7,13,11, 8,
11,12,13,15, 8,12,11,15,13, 6, 7, 8,11,11, 7, 8,
10,11,13, 9,10,10,13,13,11,11,13,12,16,12,13,13,
16,15, 6, 8, 7,11,11, 9,10,10,13,13, 7,10, 7,13,
11,12,13,13,15,16,11,13,11,16,12,10,11,11,11,13,
11,11,13,12,15,13,13,13,14,15,13,12,15,12,17,15,
16,16,16,16,10,11,11,14,11,13,13,13,15,14,11,13,
11,15,12,15,15,16,16,16,13,15,12,17,12, 6, 8, 9,
12,12, 9,10,12,13,15, 9,11,11,15,14,12,13,15,16,
18,13,14,14,17,16, 9,10,11,13,14,11,10,13,14,16,
11,12,12,15,15,14,13,16,15,18,14,15,15,17,17, 9,
11,11,14,14,11,12,13,15,16,11,13,11,15,14,15,15,
15,17,18,14,15,14,17,15,13,14,14,15,16,14,14,15,
15,17,15,16,15,17,17,16,16,17,15,19,17,18,18,19,
18,13,14,14,16,15,15,15,16,17,17,14,15,14,18,15,
17,17,17,19,19,16,17,15,19,16, 6, 9, 8,13,12, 9,
11,11,14,15, 9,12,10,15,13,13,14,14,16,17,12,15,
13,18,16, 9,11,11,14,14,11,11,13,14,15,11,13,12,
16,15,14,14,15,15,18,14,15,15,18,17, 9,11,10,14,
13,11,12,12,15,15,11,13,10,16,14,14,15,15,16,18,
14,16,13,18,15,13,14,14,16,16,14,14,15,15,17,15,
16,15,17,17,16,16,17,16,19,17,18,17,18,19,13,14,
14,16,15,15,15,15,17,17,14,15,14,17,15,17,17,17,
18,19,16,17,15,19,15,11,13,13,15,16,13,14,15,16,
18,14,15,15,17,17,16,16,18,18,20,17,18,17,19,20,
13,14,14,16,17,15,15,16,17,18,15,16,16,17,17,18,
17,19,18,19,18,18,18,19,21,14,14,15,16,17,15,15,
16,18,18,15,16,16,17,18,18,18,19,19,21,18,19,19,
22,20,16,16,17,17,19,17,17,17,18,20,17,18,18,20,
19,19,19,20,19, 0,19,19,20,20,21,17,17,17,19,18,
18,18,20,19,19,18,18,18,20,20,19,19,20,20,20,20,
21,20,21,19,11,13,13,16,15,14,15,15,17,17,14,15,
14,18,16,16,18,18,20,19,16,19,17,21,18,13,14,15,
16,17,15,15,16,18,18,15,16,15,19,18,18,18,18,19,
19,18,18,18,22,20,13,14,14,16,16,15,16,16,18,17,
15,16,15,18,17,18,18,18,19,19,17,18,17,21,18,16,
17,17,18,18,17,18,19,19,19,18,20,18,19,19,19,20,
21,19,21,20,20,20, 0,21,16,17,17,19,19,18,18,18,
19,21,17,18,18,19,18,20,19,21,20,21,19,20,20,22,
19, 7, 9, 9,13,13, 8,10,11,14,15, 9,12,11,15,14,
11,13,14,16,17,13,15,14,17,16, 8,10,11,14,14,10,
10,12,14,16,11,12,12,16,15,13,12,15,15,18,14,15,
15,19,17, 9,11,11,14,14,11,12,12,15,15,11,13,11,
16,14,14,15,14,17,17,14,16,14,18,15,12,13,14,15,
16,13,13,15,14,17,15,15,15,17,17,15,14,17,14,19,
17,18,18,19,18,13,14,14,16,16,15,15,15,17,17,14,
15,14,18,15,17,18,17,18,17,16,18,16,19,15, 7,10,
10,13,13, 9,10,12,14,15,10,12,11,15,14,12,13,14,
16,17,13,15,14,18,16,10,10,12,13,14,10,10,13,13,
16,12,12,13,15,15,13,12,15,15,18,15,15,16,18,17,
10,11,11,14,14,12,13,13,15,16,10,13,10,16,14,14,
15,15,17,17,14,15,13,17,15,13,13,14,15,16,14,13,
15,14,18,15,15,16,16,17,16,15,18,15,18,17,18,18,
18,18,13,15,14,17,16,15,16,16,17,17,14,15,13,17,
15,17,17,18,18,18,16,17,14,20,14, 8,10,10,14,14,
11,11,13,14,16,11,13,11,16,14,14,15,16,16,18,14,
16,15,18,16,10,12,11,15,14,11,11,13,14,16,13,14,
13,16,15,15,14,16,15,19,16,17,16,20,18,10,11,12,
14,15,13,13,14,16,16,11,14,11,16,14,16,16,17,18,
19,15,17,14,20,15,14,15,14,17,16,13,14,15,15,18,
16,17,16,19,18,16,15,18,15,19,18,19,18,21,21,14,
14,15,16,17,16,16,17,18,18,13,15,14,17,15,18,18,
19,18,22,16,18,15,21,15,12,13,14,16,16,14,14,16,
16,18,14,15,15,17,18,16,16,18,18,20,18,18,17,20,
20,13,14,15,15,17,15,14,16,16,18,16,16,16,17,19,
17,15,18,17,21,18,18,18,19,19,14,15,15,18,17,15,
16,16,18,19,15,16,15,18,18,17,18,18,20,21,17,19,
17,20,19,16,16,17,16,19,17,17,18,17,20,18,18,18,
18,19,19,18,20,17,22,20,20,19,20,20,17,17,18,18,
19,18,18,20,21,20,17,18,17,20,20,21,21,21,21,21,
19,21,18,22,20,11,13,13,17,16,14,14,16,16,18,14,
16,14,18,16,17,18,19,19,20,18,19,18,21,19,14,15,
14,17,16,14,14,16,18,18,16,17,16,18,17,18,17,19,
18,20,19,19,18,20,20,13,14,15,16,17,16,16,17,18,
19,14,16,14,19,17,18,19,18,20,20,18,20,17,21,18,
17,17,17,19,18,16,17,18,18,19,18,19,18,21,21,18,
18,20,17,21,19,20,20,22,21,16,17,18,18,19,18,18,
19,21,20,16,17,17,20,18,21,21,22,21,22,18,21,18,
0,18, 7, 9, 9,13,13, 9,11,12,14,15, 8,11,10,15,
14,13,14,15,16,18,11,14,13,17,15, 9,11,11,14,14,
11,11,13,14,16,11,12,12,15,15,14,14,16,15,18,14,
14,15,17,17, 8,11,10,14,14,11,12,12,15,15,10,12,
10,16,14,14,15,15,17,18,13,15,12,18,15,13,14,14,
16,16,14,14,15,15,17,15,15,15,16,17,16,15,17,15,
19,17,17,17,18,18,12,14,13,16,15,15,15,15,17,17,
13,15,13,17,14,17,18,18,18,19,15,17,14,19,14, 8,
10,10,14,14,11,11,13,14,16,11,13,11,16,14,14,15,
16,17,19,14,16,15,18,17,10,12,11,15,14,11,11,14,
14,17,13,14,13,17,15,15,14,17,15,19,16,17,16,19,
17,10,11,12,14,15,13,13,14,15,17,11,13,11,17,14,
16,16,17,18,19,15,16,14,18,15,14,15,14,16,16,13,
14,15,15,18,16,16,16,18,18,16,15,18,15,20,18,19,
18,21,18,14,14,15,16,17,16,16,17,17,18,13,15,14,
17,16,19,19,19,19,19,15,18,15,20,15, 7,10,10,13,
13,10,11,12,14,15, 9,12,10,15,14,13,14,15,16,17,
12,15,13,17,16,10,11,11,14,14,10,10,13,14,16,12,
13,13,16,15,14,13,16,15,18,15,15,16,17,17,10,12,
10,14,13,12,13,12,15,15,10,13,10,16,13,15,16,15,
17,18,13,16,12,18,15,13,14,14,16,17,14,13,15,15,
18,15,16,15,17,17,16,14,17,15,19,17,18,18,19,19,
13,15,13,17,14,15,15,15,18,17,14,15,13,17,14,18,
17,18,18,19,15,17,15,19,15,11,13,13,16,17,14,14,
16,16,18,14,16,15,18,17,17,18,19,18,21,18,18,17,
20,18,13,15,14,17,16,14,14,16,17,18,16,17,16,19,
17,18,17,19,18,22,18,19,19,21,21,13,14,15,16,18,
16,16,17,17,20,14,16,14,18,17,18,18,19,19,21,17,
18,17,21,18,17,18,17,19,18,16,17,17,18,19,18,18,
18,22,22,18,17,19,17, 0,20,21,19,21,20,17,17,18,
18,21,18,18,18,19,21,17,17,17,19,19,20,20,22,21,
21,19,20,18,20,17,12,14,13,17,16,14,15,15,17,18,
14,16,14,18,16,17,18,18,21,20,16,18,16,21,18,14,
15,15,17,17,15,15,16,18,18,15,17,16,18,18,17,17,
19,19,20,18,19,18,20,19,14,15,14,17,15,15,16,16,
18,17,15,16,14,19,15,18,18,18,19,20,17,20,15,21,
17,16,17,18,18,19,17,17,18,18,20,18,19,18,19,21,
19,18,19,19,21,20, 0,19,21,20,16,17,16,19,16,18,
18,18,19,19,17,18,17,20,17,19,20,20,22, 0,19,20,
17,21,17,11,13,14,16,17,14,15,15,17,18,14,15,15,
18,18,16,17,17,19,20,16,18,17,19,21,13,14,15,17,
17,14,15,16,17,19,15,16,16,18,19,16,17,18,19,21,
17,18,20,21,21,13,15,15,17,17,15,16,16,18,19,15,
16,16,18,19,17,17,18,19,22,17,19,18,22,19,15,16,
17,19,19,16,17,18,18,20,17,18,18,19,20,19,18,20,
18,22,20,19,19,22,21,16,17,17,18,19,18,18,18,19,
20,17,18,18,20,19,20,19,20,22,20,19,20,21,21,20,
12,14,14,16,16,13,14,16,17,18,14,16,15,18,18,15,
17,17,19,19,17,18,18,19,19,13,14,15,16,17,14,14,
16,16,20,15,16,16,17,19,16,15,18,17,20,18,17,19,
19,19,14,15,15,17,17,16,16,16,18,18,15,16,15,19,
18,17,18,18,20,21,17,18,17,21,18,16,15,17,17,19,
17,15,18,17,20,19,17,18,19,20,18,16,19,17,22,20,
19,20,19,20,17,17,18,19,19,18,18,19,20,20,17,18,
17,18,18,21,21,20,20,21,18,20,17,21,19,11,14,14,
16,17,15,14,16,17,19,14,16,14,18,17,18,18,19,19,
21,17,19,18,20,20,13,15,14,17,17,14,14,16,17,18,
16,17,16,19,18,18,17,19,18,20,18,21,18,20,20,13,
15,15,16,17,16,16,17,18,19,14,16,15,19,18,19,19,
19,21,20,18,19,17,20,18,16,17,16,19,18,16,17,17,
19,20,17,19,18,20,19,18,17,21,18, 0,21,20,20, 0,
20,17,17,18,18,19,18,19,19,20,22,16,17,17,20,18,
21,22,20,20,22,18,22,18,22,18,12,14,14,17,17,14,
15,16,17,19,14,16,15,17,17,17,17,18,18,21,17,19,
17,20,19,14,15,15,16,18,15,14,16,16,19,16,17,16,
19,18,17,16,20,17,20,18,20,19,19,20,14,15,15,18,
17,16,16,17,18,19,14,16,15,19,17,18,21,18,19,21,
17,18,17,19,18,17,17,18,17,20,17,16,18,17,21,18,
19,19,19,19,18,17,19,17,20,20,21,20,21,20,17,17,
17,19,19,19,18,18,20,21,16,18,16,19,18,20,20,21,
21,20,18,19,16, 0,17,12,14,14,17,17,15,15,18,17,
19,15,18,15,20,16,20,19,21,18,22,20,20,20,22,19,
14,16,14,20,17,14,15,17,17,20,18,18,17,20,18,18,
17,19,17,21,20,21,20, 0,21,14,15,16,17,19,18,17,
19,18,21,14,18,15,21,17,21,20,21,20, 0,18,21,17,
21,17,18,19,17,20,18,16,17,17,19,19,19,21,20, 0,
20,18,17,21,17, 0,22, 0,21, 0,22,17,17,19,18,20,
20,20,21,19,22,16,17,18,20,18,22,22, 0,22, 0,17,
21,17,22,17,11,14,13,16,16,14,15,15,17,18,14,15,
14,18,17,17,18,18,19,20,16,17,17,21,19,13,14,15,
17,17,15,16,16,18,18,15,16,16,19,18,18,18,18,19,
20,17,18,18,20,19,13,15,14,17,17,15,16,16,17,18,
14,16,15,19,17,17,18,19,21,21,17,18,17,20,18,16,
17,17,19,19,17,18,19,19,20,18,19,18,21,21,21,20,
19,21,22,20,20,19,21,20,15,17,16,19,19,17,18,18,
20,21,16,18,17,20,18,19,19,21,21,21,19,19,19,20,
18,11,14,13,17,16,14,14,16,16,19,14,16,15,19,16,
18,18,18,19,22,17,18,17,20,19,13,15,14,17,17,15,
15,16,17,19,16,17,16,20,18,18,17,19,18,21,19,19,
18,22, 0,13,14,15,17,18,16,16,17,17,19,14,16,15,
19,18,18,19,19,20,21,18,18,17,20,18,17,18,17,20,
18,16,17,17,18,20,18,19,18,20,20,18,18,21,17,21,
20,21,21, 0,19,16,16,18,18,19,19,18,20,19,20,16,
17,17,20,18,21,20,21,22,22,18,20,17,21,17,12,14,
14,17,16,14,15,16,18,18,13,15,14,18,17,17,18,18,
19,19,15,17,16,19,19,14,15,15,17,17,15,15,16,18,
19,15,16,16,19,18,17,17,18,18,20,18,18,18,21,20,
13,15,14,17,16,15,16,15,18,18,14,16,14,18,17,18,
18,18,19,21,16,18,16,20,17,17,18,17,18,19,17,17,
18,18,19,18,19,19,21,19,19,18,20,18,21,21,20,20,
21,20,16,17,15,20,17,17,19,17,19,19,17,18,15,20,
17,19,20,19,21,22,17,20,16, 0,17,12,14,14,17,18,
16,15,18,16,20,16,18,15,21,17,20,18,21,19,22,19,
21,19, 0,19,14,16,15,19,17,14,15,17,16,21,18,19,
18,21,17,19,17,21,17,22,20,21,21, 0,21,14,15,16,
17,19,18,17,19,18,21,14,17,15,20,17,21,22,21,20,
22,18,21,17,21,17,17,19,17,21,18,16,17,17,19,20,
19,21,20,21,20,17,18,20,17,21, 0,22,20,21,22,17,
17,20,18,21,21,20,22,20,21,16,17,17,21,19, 0,22,
0,21,21,18,22,17,21,17,12,14,14,17,16,14,15,16,
17,18,14,16,15,18,17,17,17,20,19,20,16,18,17,21,
18,14,15,15,17,17,14,15,16,17,19,16,17,16,18,18,
17,16,19,18,19,18,19,18,21,20,14,15,15,18,17,16,
16,16,19,18,15,16,14,20,16,18,18,19,19,20,16,19,
16,21,17,17,17,18,19,19,16,16,18,18,19,19,19,18,
20,20,18,16,19,18,20,22,21,20,19,20,16,18,17,20,
16,18,19,18,19,18,16,18,16,20,17,21,20,21,20,20,
18,19,17,21,16,
};
 
static const static_codebook _44p5_p5_0 = {
5, 3125,
(char *)_vq_lengthlist__44p5_p5_0,
1, -528744448, 1616642048, 3, 0,
(long *)_vq_quantlist__44p5_p5_0,
0
};
 
static const long _vq_quantlist__44p5_p5_1[] = {
3,
2,
4,
1,
5,
0,
6,
};
 
static const char _vq_lengthlist__44p5_p5_1[] = {
2, 3, 3, 3, 3, 3, 3,
};
 
static const static_codebook _44p5_p5_1 = {
1, 7,
(char *)_vq_lengthlist__44p5_p5_1,
1, -533200896, 1611661312, 3, 0,
(long *)_vq_quantlist__44p5_p5_1,
0
};
 
static const long _vq_quantlist__44p5_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p5_p6_0[] = {
1, 5, 5, 5, 7, 9, 5, 9, 7, 5, 7, 8, 7, 7,10, 9,
9,10, 5, 8, 7, 9,10, 9, 7,10, 7, 6, 9, 9, 9,10,
12,10,12,11, 9,10,11,11,10,13,12,12,13,10,11,11,
12,13,13,11,13,11, 6, 9, 9,10,11,12, 9,12,11,10,
11,11,11,11,13,12,13,13, 9,11,10,12,13,13,11,13,
10, 6, 9,10, 9,11,12,10,12,11, 9,10,11,10,10,13,
11,13,13,10,11,11,12,13,12,11,13,11, 7, 9,10, 9,
10,12,10,11,11,10,10,11,10,10,12,12,11,12,10,11,
10,12,12,12,10,12,10, 7,10,10,11,11,13,11,13,11,
10,12,11,11,10,13,13,14,13,10,11,12,13,13,14,11,
13,10, 6,10, 9,10,11,12, 9,12,11, 9,11,11,11,11,
13,12,12,13, 9,11,10,12,13,13,10,13,10, 7,10,10,
11,11,14,11,13,11,10,12,11,11,10,14,13,14,13,10,
11,12,13,13,14,11,13,10, 7,10, 9,10,10,12, 9,12,
10,10,11,11,10,10,12,12,12,12, 9,11,10,11,12,12,
10,12, 9,
};
 
static const static_codebook _44p5_p6_0 = {
5, 243,
(char *)_vq_lengthlist__44p5_p6_0,
1, -527106048, 1620377600, 2, 0,
(long *)_vq_quantlist__44p5_p6_0,
0
};
 
static const long _vq_quantlist__44p5_p6_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p5_p6_1[] = {
2, 6, 6, 5, 7, 8, 5, 8, 7, 6, 7, 7, 7, 7, 8, 8,
8, 8, 6, 7, 7, 7, 8, 8, 7, 8, 7, 6, 8, 8, 8, 9,
10, 8, 9, 9, 8, 9, 9, 9, 9,10,10,10,10, 8, 9, 9,
10,10,10, 9,10,10, 6, 8, 8, 8, 9, 9, 8,10, 9, 9,
9, 9, 9, 9,10,10,10,10, 8, 9, 9,10,10,10, 9,10,
9, 6, 8, 9, 8, 9, 9, 8, 9, 9, 8, 9, 9, 9, 9,10,
9,10,10, 8, 9, 9, 9,10,10, 9,10, 9, 7, 8, 9, 8,
9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9,
9, 9, 9, 9, 9, 9, 9, 7, 9, 9, 9,10,10, 9,10,10,
9,10, 9, 9, 9,10,10,10,10, 9,10, 9,10,10,10, 9,
10, 9, 6, 8, 8, 8, 9, 9, 8, 9, 9, 8, 9, 9, 9, 9,
10, 9,10,10, 8, 9, 9, 9,10,10, 9,10, 9, 7, 9, 9,
9,10,10, 9,10, 9, 9, 9,10,10, 9,10,10,10,10, 9,
9, 9,10,10,10, 9,10, 9, 7, 9, 8, 8, 9, 9, 8, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9, 9,
9, 9, 9,
};
 
static const static_codebook _44p5_p6_1 = {
5, 243,
(char *)_vq_lengthlist__44p5_p6_1,
1, -530841600, 1616642048, 2, 0,
(long *)_vq_quantlist__44p5_p6_1,
0
};
 
static const long _vq_quantlist__44p5_p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p5_p7_0[] = {
1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,
};
 
static const static_codebook _44p5_p7_0 = {
5, 243,
(char *)_vq_lengthlist__44p5_p7_0,
1, -513979392, 1633504256, 2, 0,
(long *)_vq_quantlist__44p5_p7_0,
0
};
 
static const long _vq_quantlist__44p5_p7_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p5_p7_1[] = {
1, 7, 7, 6, 9, 9, 7, 9, 9, 6, 9, 9, 9, 9, 9, 9,
9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,
};
 
static const static_codebook _44p5_p7_1 = {
5, 243,
(char *)_vq_lengthlist__44p5_p7_1,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44p5_p7_1,
0
};
 
static const long _vq_quantlist__44p5_p7_2[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p5_p7_2[] = {
1, 2, 3, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
11,12,12,13,13,14,14,14,14,
};
 
static const static_codebook _44p5_p7_2 = {
1, 25,
(char *)_vq_lengthlist__44p5_p7_2,
1, -518864896, 1620639744, 5, 0,
(long *)_vq_quantlist__44p5_p7_2,
0
};
 
static const long _vq_quantlist__44p5_p7_3[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p5_p7_3[] = {
4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44p5_p7_3 = {
1, 25,
(char *)_vq_lengthlist__44p5_p7_3,
1, -529006592, 1611661312, 5, 0,
(long *)_vq_quantlist__44p5_p7_3,
0
};
 
static const char _huff_lengthlist__44p5_short[] = {
4, 7,12,14,15,18,20,20, 5, 3, 4, 6, 9,11,15,19,
9, 4, 3, 4, 7, 9,13,18,11, 6, 3, 3, 5, 8,13,19,
14, 9, 6, 5, 7,10,16,20,16,11, 9, 8,10,10,14,16,
21,14,13,11, 8, 7,11,14,21,14,13, 9, 6, 5,10,12,
};
 
static const static_codebook _huff_book__44p5_short = {
2, 64,
(char *)_huff_lengthlist__44p5_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p6_l0_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44p6_l0_0[] = {
1, 4, 4, 7, 7,10,10,12,12,12,12,13,12, 5, 5, 5,
8, 6,11, 9,12,12,13,12,12,12, 4, 5, 5, 6, 8, 9,
11,12,12,13,12,12,12, 7, 7, 8, 9, 9,11, 8,12, 9,
12,12,12,12, 7, 8, 8, 9, 9, 8,11, 9,12,12,12,11,
12,10,10,10,11,11,11,11,11,10,11,11,12,11,10,10,
10,11,11,11,11,10,11,11,11,11,12,11,11,11,12,11,
12,11,12,11,13,11,13,11,11,11,11,11,12,11,12,10,
13,11,12,11,13,12,12,12,13,12,13,13,13,12,14,12,
14,13,12,12,12,12,13,13,13,12,14,12,14,13,14,13,
14,14,14,14,14,14,14,14,15,14,15,14,13,14,13,14,
14,14,14,14,15,14,14,14,15,
};
 
static const static_codebook _44p6_l0_0 = {
2, 169,
(char *)_vq_lengthlist__44p6_l0_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44p6_l0_0,
0
};
 
static const long _vq_quantlist__44p6_l0_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p6_l0_1[] = {
4, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5,
5, 5, 4, 5, 5, 5, 5, 5, 4,
};
 
static const static_codebook _44p6_l0_1 = {
2, 25,
(char *)_vq_lengthlist__44p6_l0_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p6_l0_1,
0
};
 
static const long _vq_quantlist__44p6_l1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p6_l1_0[] = {
1, 3, 2, 5, 5, 6, 6, 6, 6,
};
 
static const static_codebook _44p6_l1_0 = {
2, 9,
(char *)_vq_lengthlist__44p6_l1_0,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44p6_l1_0,
0
};
 
static const char _huff_lengthlist__44p6_lfe[] = {
2, 3, 1, 3,
};
 
static const static_codebook _huff_book__44p6_lfe = {
2, 4,
(char *)_huff_lengthlist__44p6_lfe,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44p6_long[] = {
2, 7,13,15,16,17,19,20, 6, 3, 4, 7, 9,10,12,15,
13, 4, 3, 4, 7, 8,11,13,14, 7, 4, 4, 6, 7,10,11,
16, 9, 7, 6, 7, 8, 9,10,16, 9, 8, 7, 7, 6, 8, 8,
18,12,10,10, 9, 8, 8, 9,20,14,13,12,11, 8, 9, 9,
};
 
static const static_codebook _huff_book__44p6_long = {
2, 64,
(char *)_huff_lengthlist__44p6_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p6_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p6_p1_0[] = {
2, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 8, 9, 7,
9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 5, 7, 8, 8, 9,
10, 8, 9, 9, 8, 9,10, 9,10,12,10,11,11, 8, 9,10,
10,11,11, 9,11,11, 5, 8, 7, 8, 9, 9, 8,10, 9, 8,
10, 9, 9,11,11,10,11,11, 8,10, 9,10,11,11, 9,12,
10, 5, 8, 8, 7, 9,10, 8,10, 9, 7, 9, 9, 9,10,11,
9,11,11, 8,10,10,10,11,11,10,12,11, 7, 9, 9, 9,
10,11, 9,11,11, 9, 9,11,10,10,13,11,11,12, 9,11,
11,11,12,13,11,13,12, 7, 9, 9, 9,11,11, 9,12,10,
9,11,10,10,11,12,11,13,12, 9,11,11,11,13,13,11,
13,11, 5, 8, 8, 8, 9,10, 7,10, 9, 8,10,10,10,11,
11,10,11,11, 7, 9, 9, 9,11,11, 9,11,10, 7, 9, 9,
9,10,12, 9,11,11, 9,11,11,11,11,13,11,13,13, 9,
10,11,11,12,13,10,12,11, 7, 9, 9, 9,11,11, 9,11,
10, 9,11,11,11,12,13,11,13,12, 9,11, 9,11,12,11,
10,13,10,
};
 
static const static_codebook _44p6_p1_0 = {
5, 243,
(char *)_vq_lengthlist__44p6_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p6_p1_0,
0
};
 
static const long _vq_quantlist__44p6_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p6_p2_0[] = {
4, 6, 6, 9, 9, 6, 7, 8,10,10, 6, 8, 7,10,10, 8,
10,10,12,13, 8,10,10,13,12, 6, 8, 8,10,10, 7, 8,
9,10,11, 8, 9, 9,11,11,10,10,11,12,13,10,11,11,
14,13, 6, 8, 8,10,10, 8, 9, 9,11,11, 7, 9, 8,11,
10,10,11,11,13,14,10,11,10,13,12, 9,10,10,12,12,
10,10,11,12,13,10,11,11,13,13,12,12,13,12,15,13,
14,13,15,14, 9,10,10,13,12,10,11,11,13,13,10,11,
10,13,12,13,13,14,14,15,12,13,12,15,12, 6, 8, 8,
10,11, 8, 9,10,11,12, 8, 9, 9,11,11,10,11,12,13,
14,10,11,11,14,13, 8, 9, 9,11,12, 9,10,11,12,13,
9,10,11,12,13,11,11,13,13,15,11,12,12,14,14, 8,
9, 9,12,12, 9,10,11,12,13, 9,10,10,13,12,11,12,
13,14,15,11,12,12,14,14,11,11,12,13,14,11,12,13,
13,15,12,13,13,14,15,13,13,14,14,16,14,15,15,16,
16,11,12,11,14,13,12,13,13,14,14,11,13,12,14,13,
14,15,15,16,16,13,14,14,16,14, 6, 8, 8,11,10, 8,
9, 9,12,11, 8,10, 9,12,11,10,11,11,13,13,10,12,
11,14,13, 8, 9, 9,12,12, 9,10,10,12,13, 9,11,10,
13,12,11,12,12,14,14,11,13,12,15,14, 8, 9, 9,12,
11, 9,10,10,13,12, 9,11,10,13,12,12,12,12,14,14,
11,13,12,15,13,11,11,12,13,14,11,12,13,13,14,12,
13,13,14,15,13,13,14,14,16,14,15,15,16,16,11,12,
11,14,13,12,13,13,15,14,11,13,12,15,13,14,15,15,
16,16,13,15,13,16,14, 9,10,11,12,13,11,11,12,13,
14,11,12,12,13,14,13,13,14,14,16,13,14,14,15,16,
11,11,12,13,14,12,12,13,14,15,12,13,13,14,15,14,
14,15,15,17,14,15,15,16,17,11,12,12,14,14,12,13,
13,14,15,12,13,12,15,15,14,15,15,16,17,14,15,15,
16,16,13,14,14,15,16,14,14,15,15,17,15,15,15,16,
17,16,16,17,16,18,16,17,17,18,18,13,14,14,16,15,
14,15,15,17,16,14,15,15,16,16,16,17,17,18,18,16,
16,16,17,16, 9,11,10,13,12,11,12,12,14,13,11,12,
11,15,13,13,14,14,16,15,13,14,13,17,14,11,12,12,
14,14,12,12,13,15,15,12,13,13,15,14,14,14,15,16,
16,14,15,15,17,16,11,12,11,14,13,12,13,13,15,14,
12,13,12,15,13,14,15,15,16,16,14,15,14,17,15,13,
14,14,15,16,14,15,15,16,17,14,15,15,16,17,16,16,
16,17,17,16,17,17,18,18,13,15,14,16,15,15,15,15,
17,16,14,15,14,17,15,16,17,17,18,18,16,17,16,18,
16, 6, 8, 8,11,11, 8, 9, 9,11,12, 8, 9, 9,12,11,
10,11,11,13,14,10,12,11,14,13, 7, 9, 9,11,12, 9,
10,10,12,13, 9,10,10,13,12,11,11,12,13,15,11,12,
12,15,14, 8, 9, 9,12,11, 9,10,10,13,13, 9,11,10,
13,12,12,12,12,14,15,11,13,12,15,13,10,11,11,13,
14,11,12,12,13,15,11,12,12,14,14,13,13,14,14,16,
14,15,14,16,16,11,12,11,14,13,12,13,13,15,14,11,
13,12,15,13,14,15,15,16,16,13,14,14,16,14, 8, 9,
9,11,12, 9,10,11,12,13, 9,10,10,13,12,11,12,13,
14,15,11,12,12,15,14, 9, 9,11,11,13,10,10,12,12,
14,10,10,11,13,14,12,12,13,14,16,12,13,13,15,15,
9,11,10,13,12,10,11,11,13,14,10,12,11,14,13,12,
13,13,15,16,12,13,13,15,15,11,11,13,13,15,12,12,
14,13,15,13,13,14,14,15,14,14,15,14,17,15,15,15,
16,16,12,13,12,15,14,13,14,14,15,15,12,14,13,15,
14,15,15,15,17,17,14,15,14,17,15, 7, 9, 9,12,11,
9,10,10,12,12, 9,11,10,13,12,11,12,12,14,14,11,
13,12,15,14, 9,10,10,12,12,10,10,11,12,13,10,11,
11,14,13,12,12,13,14,15,12,13,13,16,15, 9,10,10,
13,12,10,11,11,13,13,10,11,10,14,12,13,13,13,15,
15,12,13,12,15,14,11,12,12,14,14,12,12,13,14,15,
13,14,13,15,15,14,13,15,14,16,15,16,15,17,16,12,
12,12,14,14,13,13,14,15,15,12,13,12,15,14,15,15,
16,16,17,14,15,14,17,14,10,11,12,13,14,11,12,13,
14,15,11,12,13,14,15,13,14,15,15,17,14,15,15,16,
16,11,12,13,12,15,12,12,14,13,16,13,13,14,13,16,
14,14,16,14,18,15,15,16,16,17,12,13,12,15,15,13,
14,14,15,16,13,14,13,16,15,15,15,16,17,18,15,15,
15,17,16,14,14,15,14,17,15,14,16,14,17,15,15,16,
15,18,16,16,17,16,19,17,17,17,17,18,14,15,15,17,
16,15,16,16,17,17,15,16,15,18,16,17,17,18,18,18,
16,17,16,18,17,10,11,11,14,13,11,12,12,15,14,11,
13,12,15,14,14,15,15,16,16,14,15,15,17,16,11,12,
12,15,14,12,13,13,15,14,13,14,13,16,14,14,15,15,
16,16,15,16,15,18,16,11,13,12,15,15,13,14,14,15,
15,12,14,13,16,15,15,16,16,17,17,15,16,15,17,16,
14,15,14,16,16,14,15,15,16,16,15,16,15,17,16,16,
16,17,16,17,17,18,17,19,18,14,15,15,17,16,15,16,
16,17,17,15,15,15,18,16,17,18,18,18,18,16,17,16,
19,16, 6, 8, 8,11,11, 8, 9, 9,11,12, 8, 9, 9,12,
11,10,11,12,13,14,10,11,11,14,13, 8, 9, 9,11,12,
9,10,11,12,13, 9,10,10,13,13,11,12,13,13,15,11,
12,12,15,14, 7, 9, 9,12,11, 9,10,10,12,13, 9,10,
10,13,12,11,12,12,14,15,11,12,11,14,13,11,11,12,
13,14,11,12,13,13,15,12,13,13,14,15,13,14,14,14,
16,14,15,15,16,16,10,11,11,14,13,11,12,12,14,14,
11,12,12,15,13,14,14,14,16,16,13,14,13,16,14, 7,
9, 9,11,12, 9,10,10,12,13, 9,10,10,12,12,11,12,
13,14,15,11,12,12,14,14, 9,10,10,12,13,10,10,11,
12,14,10,11,11,13,13,12,12,13,14,15,13,13,13,15,
15, 9,10,10,12,12,10,11,11,13,14,10,11,10,13,12,
12,13,13,15,16,12,13,12,15,14,11,12,13,14,14,12,
12,13,14,15,13,14,13,15,15,14,14,15,14,17,15,16,
15,17,16,11,12,12,14,14,13,13,13,15,15,12,13,12,
15,14,15,15,15,16,17,14,15,14,16,14, 8, 9, 9,12,
11, 9,10,10,12,13, 9,11,10,13,12,11,12,12,14,15,
11,12,12,15,14, 9,10,11,13,13,10,11,12,13,14,10,
11,11,14,13,12,13,13,15,15,12,13,13,16,15, 9,11,
9,13,11,10,11,10,14,13,10,12,10,14,12,12,13,13,
15,15,12,13,12,16,14,12,12,13,14,15,12,13,14,14,
16,13,14,14,15,15,14,14,15,15,17,15,16,15,17,16,
11,13,11,15,13,13,14,13,15,14,12,14,12,16,13,15,
15,15,16,16,14,15,14,17,14,10,11,11,13,14,11,12,
13,14,15,11,12,12,14,15,14,14,15,16,17,14,15,15,
16,16,11,12,13,14,15,12,13,14,15,16,13,14,14,15,
16,15,15,16,16,18,15,16,16,17,17,11,12,12,14,15,
13,13,14,14,16,12,13,13,15,15,15,15,16,16,18,14,
15,15,16,16,14,15,15,16,17,15,15,16,16,17,15,16,
16,17,17,16,16,17,16,19,17,18,17,18,18,14,14,15,
16,16,15,15,16,16,17,14,15,15,16,16,17,17,18,18,
19,16,17,16,17,16,10,12,11,14,13,11,13,12,15,14,
11,13,12,15,14,14,15,15,16,16,13,15,14,17,15,12,
13,13,15,15,13,13,14,15,16,13,14,14,16,16,14,15,
15,17,17,15,16,16,17,17,11,13,12,15,12,13,14,13,
16,13,12,14,12,16,13,15,16,15,17,16,14,16,14,18,
14,14,15,15,16,17,15,15,16,16,17,15,16,16,17,17,
16,16,17,17,18,17,18,17,18,18,14,15,14,17,14,15,
16,15,18,15,15,16,15,18,14,17,17,17,18,17,16,17,
16,19,16, 9,11,11,13,13,10,12,12,14,14,11,12,12,
15,14,13,14,14,16,16,13,14,14,16,16,10,11,12,14,
14,11,12,13,14,15,12,13,13,15,15,13,14,15,16,16,
14,15,15,17,16,11,12,12,15,14,12,13,13,15,15,12,
13,12,15,15,14,15,15,16,17,14,15,14,17,16,12,13,
14,15,16,13,13,14,15,16,13,14,15,16,16,14,15,16,
16,18,15,16,16,18,18,13,14,14,16,15,14,15,15,17,
16,14,15,15,17,16,16,17,17,18,18,16,17,16,18,17,
10,12,12,14,14,11,12,13,15,15,12,13,13,15,15,13,
14,15,16,17,14,15,15,17,16,11,11,13,14,15,12,12,
14,15,16,13,13,14,15,16,14,14,15,16,17,15,15,16,
17,17,12,13,12,15,15,13,14,14,16,16,13,14,13,16,
15,15,16,15,17,17,15,16,15,18,16,13,12,15,14,17,
14,13,16,14,17,14,14,16,15,18,15,14,17,16,18,16,
16,17,17,18,14,15,15,17,16,15,16,16,17,17,15,16,
15,18,16,17,17,17,18,18,16,17,16,19,17,10,11,11,
14,14,11,12,12,15,15,11,13,12,15,15,14,15,14,16,
16,14,15,15,17,16,11,12,12,15,14,12,12,13,15,15,
13,14,13,16,15,14,15,15,16,16,15,16,15,18,17,11,
13,12,15,15,13,14,13,15,15,12,14,13,16,15,15,16,
15,17,17,15,16,15,18,16,13,14,13,16,16,14,15,14,
16,16,14,15,15,17,16,16,16,16,16,18,16,18,17,19,
18,14,15,15,17,16,15,16,16,17,17,15,15,15,17,16,
17,17,18,18,19,16,17,16,18,16,12,13,13,15,16,13,
14,14,16,17,13,14,14,16,16,15,15,16,17,18,15,16,
16,18,17,13,13,14,14,17,14,14,15,15,17,14,14,15,
16,17,15,15,17,16,18,16,17,17,18,18,13,14,14,17,
16,14,15,15,17,17,14,15,14,17,16,16,17,17,18,18,
16,17,16,18,17,15,14,16,13,18,16,15,17,14,19,16,
16,17,15,18,17,16,18,15,19,18,18,18,17,19,15,16,
16,18,17,16,17,17,18,18,16,17,16,19,17,18,19,18,
19,19,17,18,17,20,18,11,12,12,15,15,13,13,14,15,
16,13,14,13,16,15,15,16,16,17,17,15,16,16,18,17,
12,14,13,16,15,13,13,14,15,16,14,15,14,17,16,16,
16,16,16,17,16,17,17,19,17,12,13,14,16,16,14,15,
15,16,17,13,15,13,17,15,16,17,17,18,18,16,17,16,
18,16,15,16,15,17,16,15,15,15,17,17,16,17,16,18,
17,17,16,17,16,18,18,19,18,20,18,15,16,16,17,17,
16,17,17,18,18,15,16,15,18,17,18,18,19,19,19,17,
18,16,19,16, 9,11,11,13,13,11,12,12,14,15,10,12,
12,14,14,13,14,14,16,16,13,14,14,16,16,11,12,12,
14,14,12,12,13,15,15,12,13,13,15,15,14,15,15,16,
17,14,15,15,16,16,10,12,11,14,14,12,13,13,15,15,
11,13,12,15,14,14,15,15,16,17,13,15,14,17,16,13,
14,14,15,16,14,15,15,16,17,14,15,15,16,17,16,16,
17,17,18,16,17,17,18,18,12,14,13,16,15,13,15,14,
17,16,13,14,13,17,15,15,16,16,18,18,15,16,15,18,
16,10,11,11,14,14,11,12,13,14,15,11,12,12,15,15,
14,15,15,16,17,14,15,15,16,16,11,12,13,15,15,12,
13,14,15,16,13,14,14,15,16,15,15,16,16,18,15,15,
16,17,17,11,12,12,14,15,13,13,14,15,16,12,13,13,
15,15,15,15,16,17,18,14,15,15,17,16,14,15,15,16,
17,15,15,16,16,17,15,16,16,17,17,16,16,17,16,19,
17,17,18,19,18,13,13,14,16,16,14,15,16,17,17,14,
14,15,16,16,16,16,17,18,18,16,16,16,18,16,10,12,
12,14,14,12,13,13,15,15,11,13,12,15,15,14,15,15,
16,17,13,15,14,17,16,12,13,13,15,15,13,13,14,15,
16,13,14,14,16,16,15,15,16,17,18,15,15,16,17,17,
11,13,12,15,14,13,14,13,16,15,12,14,12,16,14,15,
16,15,17,17,14,16,14,17,16,14,15,15,16,17,15,15,
16,16,18,15,16,16,17,17,16,17,17,17,19,17,17,17,
18,18,13,15,12,17,14,14,16,14,17,15,14,15,13,17,
14,16,17,16,18,17,15,17,14,19,15,11,12,12,15,15,
13,13,14,15,16,13,14,13,16,15,15,16,16,17,18,15,
16,16,17,17,12,14,13,16,16,13,13,15,15,17,14,15,
15,17,16,16,16,17,16,19,16,17,17,18,18,12,13,14,
15,16,14,14,15,16,17,13,14,13,16,15,16,17,17,18,
19,15,16,16,17,16,15,16,16,18,17,15,15,16,17,18,
16,17,17,18,18,16,16,18,16,19,18,19,19,20,19,15,
15,16,16,17,16,16,17,17,18,15,15,15,17,16,18,18,
19,18,20,17,17,16,18,16,12,13,13,16,15,13,14,14,
16,16,13,14,14,16,16,15,16,16,17,18,15,16,15,18,
17,13,14,14,16,16,14,15,15,16,17,14,15,15,17,17,
16,17,17,18,18,16,17,17,18,18,13,14,13,17,14,14,
15,14,17,16,14,15,14,17,15,16,17,17,18,18,15,17,
15,19,15,16,16,16,17,18,16,16,17,17,19,16,17,17,
18,19,17,17,18,18,20,18,18,18,19,19,15,16,14,18,
13,16,17,16,19,15,16,17,15,19,14,18,18,18,19,17,
17,18,16,20,15,
};
 
static const static_codebook _44p6_p2_0 = {
5, 3125,
(char *)_vq_lengthlist__44p6_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p6_p2_0,
0
};
 
static const long _vq_quantlist__44p6_p3_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p6_p3_0[] = {
1, 5, 5, 5, 7, 8, 5, 8, 7, 5, 7, 8, 8, 8,10, 8,
10,10, 5, 8, 7, 8,10,10, 8,10, 8, 6, 8, 9, 8,10,
12, 9,11,11, 9,10,11,11,11,13,12,13,13, 9,11,11,
11,13,13,11,13,12, 6, 9, 8, 9,11,11, 8,12,10, 9,
11,11,11,12,13,11,13,13, 9,11,10,11,13,13,11,13,
11, 5, 9, 9, 8,11,11, 9,12,11, 8,10,11,10,11,13,
11,13,13, 9,11,11,11,13,13,11,13,12, 8,10,11,10,
12,13,10,13,12,10,10,13,11,11,14,12,13,14,11,13,
12,13,14,14,12,14,12, 8,11,10,11,12,13,11,14,12,
10,13,12,12,12,13,13,15,14,11,12,13,13,14,15,12,
14,12, 5, 9, 9, 9,11,12, 8,11,11, 9,11,11,11,12,
13,11,13,13, 8,11,10,11,13,13,10,13,11, 8,10,11,
11,12,14,11,13,12,11,13,12,12,12,14,13,15,14,10,
12,13,13,14,15,12,13,12, 8,11,10,10,12,13,10,13,
12,11,12,13,12,12,14,13,14,14,10,13,10,12,14,13,
11,14,11,
};
 
static const static_codebook _44p6_p3_0 = {
5, 243,
(char *)_vq_lengthlist__44p6_p3_0,
1, -533200896, 1614282752, 2, 0,
(long *)_vq_quantlist__44p6_p3_0,
0
};
 
static const long _vq_quantlist__44p6_p3_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p6_p3_1[] = {
5, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 7, 8, 8, 7,
8, 8, 6, 7, 7, 7, 8, 8, 7, 8, 8, 7, 7, 8, 7, 8,
8, 7, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8,
8, 9, 9, 8, 9, 8, 7, 8, 7, 7, 8, 8, 7, 8, 8, 8,
8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9,
8, 6, 8, 8, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 9,
8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9, 8, 7, 8, 8, 8,
8, 9, 8, 9, 9, 8, 8, 9, 8, 9, 9, 9, 9, 9, 8, 9,
9, 9, 9, 9, 9, 9, 9, 7, 8, 8, 8, 9, 9, 8, 9, 8,
8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9, 9, 9,
9, 9, 6, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
9, 8, 9, 9, 7, 8, 8, 8, 9, 9, 8, 9, 8, 7, 8, 8,
8, 8, 9, 8, 9, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8,
8, 8, 9, 9, 9, 8, 9, 9, 7, 8, 8, 8, 9, 9, 8, 9,
8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9, 9,
9, 9, 9,
};
 
static const static_codebook _44p6_p3_1 = {
5, 243,
(char *)_vq_lengthlist__44p6_p3_1,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p6_p3_1,
0
};
 
static const long _vq_quantlist__44p6_p4_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p6_p4_0[] = {
2, 5, 5, 5, 7, 8, 5, 8, 7, 5, 7, 7, 7, 7, 9, 7,
9, 9, 5, 7, 7, 8, 9, 9, 7, 9, 7, 6, 8, 8, 8, 9,
10, 8, 9, 9, 8, 9,10, 9, 9,11,10,11,11, 8, 9, 9,
10,11,11, 9,11,10, 6, 8, 8, 8, 9, 9, 8,10, 9, 8,
9, 9, 9,10,11,10,11,10, 8,10, 9,10,11,11, 9,11,
9, 6, 8, 8, 7, 9, 9, 8,10, 9, 7, 9, 9, 9, 9,10,
9,10,10, 8, 9, 9, 9,10,10, 9,11,10, 7, 9, 9, 8,
10,10, 9,10,10, 9, 9,10,10,10,11,10,11,11, 9,10,
10,10,11,11,10,11,10, 7, 9, 9, 9, 9,10, 9,10, 9,
8,10, 9, 9, 9,11,10,11,11, 9,10,10,10,11,11, 9,
11, 9, 6, 8, 8, 8, 9,10, 7, 9, 9, 8, 9, 9, 9,10,
10, 9,10,10, 7, 9, 9, 9,10,10, 9,10, 9, 7, 9, 9,
9, 9,10, 9,10, 9, 9,10,10, 9, 9,11,10,11,11, 8,
9,10,10,11,11, 9,11, 9, 7, 9, 9, 9,10,10, 8,10,
10, 9,10,10,10,10,11,10,11,11, 9,10, 9,10,11,11,
10,11,10,
};
 
static const static_codebook _44p6_p4_0 = {
5, 243,
(char *)_vq_lengthlist__44p6_p4_0,
1, -531365888, 1616117760, 2, 0,
(long *)_vq_quantlist__44p6_p4_0,
0
};
 
static const long _vq_quantlist__44p6_p4_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p6_p4_1[] = {
6, 8, 8,10,10, 8, 9, 9,10,11, 8,10, 9,11,10, 9,
10,10,11,11, 9,10,10,11,11, 8, 9, 9,10,10, 9, 9,
10,11,11,10,10,10,11,11,10,11,11,11,11,10,11,11,
11,11, 8, 9, 9,11,10,10,10,10,11,11, 9,10, 9,11,
11,10,11,11,11,11,10,11,10,11,11,10,10,11,11,11,
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,10,11,10,11,11,11,11,11,11,11,10,11,
11,11,11,11,11,11,11,11,11,11,11,11,11, 8, 9,10,
11,11,10,10,11,11,11,10,10,10,11,11,10,11,11,12,
12,10,11,11,12,12,10,10,11,11,11,10,10,11,11,12,
11,11,11,12,12,11,11,12,12,12,11,11,12,12,12,10,
10,10,11,11,11,11,11,12,12,10,11,11,12,12,11,12,
12,12,12,11,12,11,12,12,11,11,11,11,12,11,11,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,11,11,11,12,11,11,12,12,12,12,11,12,12,12,12,
12,12,12,12,12,12,12,12,12,12, 8,10, 9,11,11,10,
10,10,11,11,10,11,10,11,11,10,11,11,12,12,10,11,
11,12,12,10,10,10,11,11,10,11,11,12,12,11,11,11,
12,12,11,11,12,12,12,11,12,12,12,12,10,11,10,11,
11,11,11,11,12,12,10,11,10,12,11,11,12,11,12,12,
11,12,11,12,12,11,11,11,12,12,11,11,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,
11,12,11,11,12,12,12,12,11,12,11,12,12,12,12,12,
12,12,12,12,12,12,12,10,11,11,11,12,11,11,12,12,
12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,
11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,13,11,12,11,12,12,12,12,
12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,13,12,13,12,12,12,12,13,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,12,
12,12,13,12,10,11,11,12,11,11,11,12,12,12,11,12,
11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,11,12,11,12,12,12,12,12,12,12,
11,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,13,12,12,12,12,13,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,13,13,12,13,12,13,
12, 8,10,10,11,11,10,10,11,11,11,10,11,10,11,11,
10,11,11,12,12,10,11,11,12,12, 9,10,11,11,11,10,
10,11,12,12,10,11,11,12,12,11,11,12,12,12,11,12,
12,12,12,10,11,10,11,11,11,11,11,12,12,10,11,11,
12,12,11,12,12,12,12,11,12,11,12,12,11,11,11,12,
12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12, 9,10,
10,11,11,10,11,11,12,12,10,11,11,12,12,11,11,12,
12,12,11,12,12,12,12,10,11,11,12,12,11,11,12,12,
12,11,11,12,12,12,11,11,12,12,12,12,12,12,12,12,
10,11,11,12,12,11,12,12,12,12,11,12,11,12,12,12,
12,12,12,12,12,12,12,12,12,11,11,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12, 9,10,10,11,11,
10,11,11,12,12,10,11,11,12,11,11,12,12,12,12,11,
12,12,12,12,10,11,11,12,12,11,11,11,12,12,11,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,10,11,11,
12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,12,
12,12,12,12,12,12,11,12,12,12,12,11,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,13,12,13,12,12,13,13,13,11,12,12,12,12,12,
12,12,13,13,12,12,12,13,12,12,12,12,13,13,12,13,
12,13,13,12,12,12,12,12,12,12,12,12,13,12,13,13,
13,13,12,13,13,13,13,13,13,13,13,13,12,12,12,12,
12,12,12,13,13,13,12,13,12,13,13,12,13,13,13,13,
12,13,13,13,13,11,11,11,12,12,11,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,
12,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,
13,12,12,12,13,12,12,13,12,13,13,12,13,12,13,13,
12,12,12,12,12,12,12,13,13,13,12,12,13,13,13,12,
13,13,12,13,13,13,13,13,13,12,12,12,12,12,12,13,
12,13,13,12,13,12,13,12,12,13,13,13,13,12,13,13,
13,13, 8,10,10,11,11,10,10,11,11,11, 9,11,10,11,
11,10,11,11,12,12,10,11,11,12,12,10,10,11,11,11,
10,11,11,12,12,11,11,11,12,12,11,11,12,12,12,11,
12,12,12,12, 9,11,10,11,11,10,11,11,12,12,10,11,
10,12,12,11,12,12,12,12,11,12,11,12,12,11,11,11,
12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,
11,12,11,12,12,12,12,12,12,12,12,12,12,12,12, 9,
10,10,11,11,10,11,11,12,12,10,11,11,12,12,11,12,
12,12,12,11,12,12,12,12,10,11,11,12,12,11,11,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,10,11,11,12,12,11,11,12,12,12,11,11,11,12,12,
12,12,12,12,12,11,12,12,12,12,11,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,11,12,12,12,12,12,12,12,12,12,11,12,12,
12,12,12,12,12,12,12,12,12,12,12,12, 9,10,10,11,
11,10,11,11,12,12,10,11,11,12,12,11,12,12,12,12,
11,12,11,12,12,10,11,11,12,12,11,11,12,12,12,11,
11,12,12,12,12,12,12,12,12,12,12,12,12,12,10,11,
11,12,12,11,12,11,12,12,11,12,11,12,12,12,12,12,
12,12,11,12,11,12,12,11,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,
12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,
13,12,12,12,13,13,12,12,13,13,13,11,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,13,12,13,13,12,
12,12,13,12,12,12,12,12,12,12,12,13,13,13,12,12,
13,13,13,12,13,13,12,13,12,13,13,13,13,12,12,12,
12,12,12,12,13,13,13,12,12,12,13,12,12,13,13,13,
13,12,13,13,13,13,11,11,11,12,12,11,12,12,12,12,
11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,
13,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,
13,12,12,12,12,13,12,12,13,12,13,13,12,13,12,13,
12,12,12,12,12,12,12,12,13,13,13,12,13,13,13,13,
12,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,
13,12,13,12,12,13,12,13,12,13,13,13,13,13,12,13,
13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,11,11,12,12,
12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,
12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,12,
12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,
12,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,
12,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,
11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,
12,12,12,13,12,12,12,13,12,11,12,12,12,12,12,12,
12,12,13,12,12,12,12,13,12,12,13,13,13,12,12,13,
13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,
12,12,13,12,13,13,12,13,12,13,13,12,12,12,12,12,
12,12,13,12,13,12,12,13,13,13,12,12,13,13,13,13,
13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,13,
12,13,12,12,13,13,13,13,12,13,13,13,13,11,11,11,
12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,
12,12,12,12,12,13,11,12,12,12,12,12,12,12,12,13,
12,12,12,13,13,12,12,13,13,13,12,12,13,13,13,11,
12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,
12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,12,
12,13,12,13,12,13,13,12,13,13,13,13,12,13,13,13,
13,12,12,12,12,12,12,13,12,13,13,12,12,12,13,13,
12,13,13,13,13,12,13,12,13,13,11,12,12,12,12,11,
12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,13,12,13,12,12,12,13,13,11,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,
12,13,12,13,13,12,12,12,12,12,12,12,13,12,13,12,
12,13,12,13,12,12,13,12,13,12,13,13,13,13,12,12,
12,12,12,12,12,12,12,12,12,12,12,13,12,12,13,13,
13,13,12,13,12,13,12,11,11,11,12,12,11,12,12,12,
12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,13,13,11,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,
13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,13,12,12,12,13,12,12,12,12,12,12,12,12,
12,12,12,13,12,12,12,12,13,12,12,13,12,13,12,12,
13,12,13,12,10,11,11,12,12,11,12,12,12,12,11,12,
11,12,12,11,12,12,12,12,11,12,12,12,12,11,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
13,12,12,12,13,13,11,12,11,12,12,12,12,12,12,12,
11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,
12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,13,
13,12,13,12,13,13,13,13,12,12,12,12,12,12,12,12,
13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,
12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,
12,12,12,13,13,12,12,12,13,12,11,12,12,12,12,12,
12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,12,
13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,
13,12,12,13,12,13,13,12,12,12,13,13,12,12,12,12,
12,12,12,13,13,13,12,12,13,13,13,12,12,13,13,13,
12,13,13,13,13,12,12,12,12,12,12,12,13,13,13,12,
12,12,13,12,12,13,13,13,13,12,13,13,13,13,11,11,
11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,
12,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,
13,12,12,12,13,13,12,12,13,13,13,12,12,13,13,13,
11,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,
13,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,
12,13,13,12,13,12,13,13,12,13,13,13,13,13,13,13,
13,13,12,12,12,12,12,12,13,12,13,13,12,13,12,13,
12,12,13,13,13,13,12,13,12,13,13,11,11,11,12,12,
11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,13,12,12,12,13,13,11,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,
13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,
12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
13,12,12,12,13,12,12,12,11,12,11,12,12,11,12,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,11,12,12,12,12,12,12,12,12,13,12,12,12,12,12,
12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,13,12,13,13,12,12,
12,13,12,12,12,12,12,12,12,12,12,12,13,12,12,12,
13,13,12,12,13,12,13,12,13,13,13,13,12,12,12,12,
12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,13,
12,13,12,13,12,
};
 
static const static_codebook _44p6_p4_1 = {
5, 3125,
(char *)_vq_lengthlist__44p6_p4_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p6_p4_1,
0
};
 
static const long _vq_quantlist__44p6_p5_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p6_p5_0[] = {
2, 6, 6,10,10, 5, 7, 8,11,12, 5, 8, 7,12,11, 9,
11,11,13,15, 9,11,11,15,13, 6, 7, 8,11,11, 7, 7,
9,11,13, 8, 9, 9,13,12,11,11,12,12,15,11,12,12,
15,14, 6, 8, 7,11,11, 8, 9, 9,12,13, 7, 9, 7,13,
11,11,12,12,14,15,11,12,11,15,12,10,11,11,12,14,
10,11,12,12,15,12,13,13,14,15,13,12,14,12,16,15,
15,15,16,16,10,11,11,14,12,12,13,13,15,14,10,12,
11,15,12,15,15,15,16,17,13,14,12,17,12, 6, 8, 8,
12,12, 8, 9,10,13,13, 8, 9, 9,13,13,12,12,13,15,
16,12,13,13,16,15, 8, 9,10,12,13, 9, 9,11,13,14,
10,11,11,14,14,13,13,14,15,16,13,14,14,16,16, 8,
10, 9,13,13,10,11,11,14,14, 9,10,10,14,13,13,14,
14,16,17,13,13,13,16,15,12,13,13,14,16,13,13,14,
14,16,14,14,14,16,16,15,15,16,15,18,16,17,17,18,
18,12,13,13,15,15,14,14,14,16,16,13,14,13,16,15,
16,16,17,18,18,15,16,15,18,15, 6, 8, 8,12,12, 8,
9, 9,13,13, 8,10, 9,13,13,12,13,13,15,16,12,13,
12,16,15, 8, 9,10,13,13, 9,10,10,13,14,10,11,11,
14,14,13,13,13,15,16,13,14,14,17,16, 8,10, 9,13,
13,10,11,11,14,14, 9,11, 9,14,13,13,14,14,16,16,
13,14,13,16,14,12,13,13,15,16,13,13,14,15,16,14,
14,14,16,16,15,15,16,15,18,17,17,17,18,18,12,13,
13,16,14,14,14,14,16,16,13,14,13,16,14,16,17,17,
18,18,15,16,15,18,15,11,12,13,14,16,13,13,14,15,
17,13,14,14,16,17,16,16,17,17,19,16,17,17,18,19,
13,13,14,16,16,14,14,15,16,17,14,15,15,17,17,17,
16,17,17,19,17,17,18,19,19,13,14,14,16,16,14,14,
15,17,18,14,15,14,17,17,17,17,18,18,19,17,17,17,
18,19,16,16,16,17,18,17,17,17,18,19,17,17,17,18,
19,18,18,19,18,20,19,20,19,21,20,16,17,17,18,18,
17,17,18,19,19,17,17,17,19,18,19,19,19,19,20,19,
19,19,20,19,11,13,12,16,14,13,14,14,17,16,13,14,
13,17,15,16,17,17,18,18,16,17,16,19,17,13,14,14,
16,16,14,14,14,17,17,14,15,15,17,16,17,17,17,19,
19,17,18,17,19,18,13,14,13,17,16,14,15,15,17,17,
14,15,14,18,16,17,17,17,19,19,17,17,16,19,17,16,
17,17,18,19,17,17,17,18,18,17,18,17,19,18,18,19,
18,19,19,19,20,19,20,20,16,17,16,18,17,17,17,17,
18,18,17,18,17,19,17,19,19,19,19,20,18,19,19,20,
18, 6, 8, 8,12,12, 8, 9, 9,13,13, 8,10, 9,13,13,
11,13,13,15,16,12,13,13,16,15, 8, 9, 9,13,13, 9,
9,10,13,14,10,11,11,14,14,12,12,13,14,16,13,14,
14,17,16, 8,10, 9,13,13,10,11,11,14,14, 9,11,10,
14,13,13,14,14,16,16,13,14,13,16,15,12,13,13,14,
16,12,13,14,14,16,13,14,14,16,16,15,14,16,15,18,
16,17,17,18,17,12,13,13,16,15,14,14,14,16,16,13,
14,13,16,15,16,16,17,17,17,15,16,15,18,15, 7, 9,
9,13,13, 9, 9,11,13,14, 9,10,10,14,13,12,13,14,
15,16,12,14,13,17,15, 9, 9,10,13,14,10, 9,11,13,
15,11,11,11,14,14,13,12,14,14,17,14,14,14,17,16,
9,10,10,14,13,11,11,11,14,14,10,11,10,15,13,14,
14,14,16,17,13,14,13,17,14,13,13,14,14,16,13,13,
14,14,17,14,14,14,16,16,15,14,16,15,18,17,17,17,
18,18,13,14,13,16,15,14,14,15,17,16,13,14,13,17,
15,17,16,17,17,17,15,16,14,18,14, 7, 9, 9,13,13,
9,10,10,13,14, 9,11,10,14,13,13,14,14,16,16,13,
14,14,17,15, 9,10,10,14,13, 9,10,11,13,14,11,12,
11,15,14,13,13,14,14,16,14,15,15,17,17, 9,10,10,
14,14,11,12,12,14,15,10,11,10,15,13,14,15,15,17,
17,14,15,13,17,14,13,14,13,16,16,13,13,14,15,16,
14,15,15,17,17,15,14,16,15,18,17,18,17,20,18,13,
14,14,16,16,15,15,15,17,17,13,14,13,17,15,17,17,
18,18,18,15,16,14,19,14,12,13,13,15,16,13,13,15,
16,17,13,14,14,16,16,15,15,17,17,19,16,17,17,19,
18,13,13,14,15,17,14,13,15,15,17,14,15,15,16,17,
16,15,18,16,19,17,17,17,18,19,13,14,14,17,16,14,
15,15,17,17,14,15,14,17,16,17,17,17,18,19,16,17,
16,19,17,16,16,17,16,18,16,16,17,16,19,17,17,18,
18,19,18,17,18,17,21,19,19,19,20,19,16,17,17,18,
18,17,17,18,18,19,16,17,16,18,18,19,19,19,19,20,
18,18,17,20,18,11,13,13,16,15,13,14,14,16,17,13,
15,14,17,16,16,17,17,18,18,17,17,17,19,18,13,14,
13,17,16,14,13,14,16,17,15,16,15,18,16,17,16,17,
17,19,18,18,18,20,18,13,14,14,16,17,15,15,15,17,
18,14,15,14,18,16,18,18,18,19,20,17,18,16,20,17,
16,17,16,18,18,16,16,17,18,18,17,18,18,19,18,18,
17,19,17,20,19,20,19,22,20,16,16,17,18,18,18,17,
17,19,19,16,17,16,18,17,19,20,19,22,21,18,19,18,
21,17, 6, 8, 8,12,12, 8, 9,10,13,13, 8, 9, 9,13,
13,12,13,13,15,16,11,13,13,16,15, 8, 9,10,13,13,
9,10,11,13,14,10,11,11,14,14,13,13,14,15,16,13,
14,14,16,16, 8, 9, 9,13,13,10,11,11,14,14, 9,10,
9,14,13,13,14,14,16,17,12,14,12,16,14,12,13,13,
15,16,13,13,14,15,16,13,14,14,15,17,15,15,16,15,
18,16,16,17,17,17,12,13,13,16,14,13,14,14,16,16,
12,14,13,16,14,16,17,17,18,18,15,15,14,18,14, 7,
9, 9,13,13, 9,10,11,13,14, 9,10,10,14,13,13,14,
14,15,17,13,14,14,16,15, 9,10,10,14,14,10,10,11,
13,15,11,12,12,15,14,14,13,15,14,17,14,15,15,17,
17, 9,10,10,13,14,11,11,12,14,15, 9,11,10,14,13,
14,15,15,16,18,13,14,13,16,14,13,14,14,16,16,13,
13,14,15,17,15,15,15,16,17,15,14,16,15,18,17,17,
18,19,18,13,14,14,16,16,14,15,15,17,17,13,14,13,
16,15,17,17,18,18,18,15,16,14,18,15, 7, 9, 9,13,
13, 9,10,10,13,14, 9,11,10,14,13,12,13,14,15,16,
12,14,13,16,15, 9,10,10,13,14,10,10,11,13,14,11,
11,11,15,14,13,13,14,14,16,14,14,14,17,16, 9,10,
9,14,13,11,11,11,14,14,10,11, 9,15,13,14,14,14,
16,16,13,14,12,17,14,13,13,14,15,16,13,13,14,15,
16,14,15,14,16,17,15,14,16,14,18,16,17,17,18,18,
13,14,13,16,14,14,14,14,16,16,13,14,13,17,14,17,
17,17,18,18,15,16,14,18,15,11,13,13,16,16,13,14,
15,16,17,13,14,14,17,16,16,17,17,18,19,17,17,17,
19,18,13,14,14,17,17,13,13,15,16,18,15,15,15,17,
17,17,16,18,17,20,18,17,18,19,19,13,14,14,16,17,
15,15,16,16,18,14,15,14,16,16,17,17,18,18,20,17,
18,16,18,17,16,17,16,19,18,16,16,17,18,19,18,18,
18,19,19,18,17,18,17,21,20,19,19,21,21,16,16,17,
18,18,17,17,18,19,19,16,17,16,19,18,20,20,20,19,
21,18,18,17,20,18,12,13,13,16,15,13,14,14,16,16,
13,14,13,17,16,16,17,17,18,18,15,17,15,19,17,13,
14,14,16,17,14,14,15,16,17,14,15,15,17,17,16,16,
17,17,18,17,17,17,19,19,13,14,13,17,15,14,15,15,
17,16,14,15,13,17,15,17,18,17,19,18,16,17,15,20,
16,16,17,17,18,18,16,16,17,18,18,17,18,17,19,18,
17,17,18,18,20,19,20,19,20,19,16,16,16,19,16,17,
17,17,19,18,16,17,16,19,16,19,19,19,19,19,18,19,
17,19,17,11,13,13,16,16,13,14,14,17,17,13,14,14,
17,17,15,17,17,19,19,16,18,17,20,19,12,14,14,17,
17,13,14,15,17,18,14,15,15,17,18,16,16,17,18,20,
17,18,18,20,18,13,14,14,17,17,14,15,15,17,18,14,
15,15,17,17,17,18,17,19,19,17,18,17,19,19,15,16,
16,18,18,15,16,17,18,19,16,17,17,19,19,17,17,18,
18,21,18,19,19,21,19,16,17,17,18,18,17,17,18,19,
19,17,18,17,19,19,19,19,19,20,20,18,19,18,21,19,
12,13,13,16,16,13,14,14,16,17,13,15,14,17,16,15,
16,17,17,19,16,17,17,19,18,13,13,14,16,17,14,13,
15,16,17,14,15,15,17,17,15,15,17,17,20,17,17,18,
19,18,13,14,14,17,16,15,15,15,17,18,14,15,14,17,
16,17,17,17,18,18,16,17,16,19,17,16,15,17,17,19,
16,15,17,16,19,17,16,17,18,19,17,16,19,16,20,19,
18,19,19,19,16,17,17,18,18,17,17,17,18,19,16,17,
16,19,18,20,19,19,20,19,18,18,17,20,17,11,13,13,
16,16,13,14,15,16,17,14,15,14,18,16,17,17,17,18,
21,17,18,17,20,19,13,14,14,17,16,13,14,15,16,18,
15,16,15,18,17,17,16,17,17,19,17,18,18,20,19,13,
14,14,16,17,15,15,16,17,18,14,15,14,18,17,17,18,
18,19,20,17,18,16,19,17,16,17,15,19,18,16,16,16,
18,18,17,18,17,20,19,18,17,18,17,20,20,20,19,22,
20,16,17,17,18,19,18,18,18,19,20,16,17,16,19,18,
20,19,19,20,20,18,19,17,20,17,13,14,14,16,17,14,
14,16,16,18,14,16,15,17,16,16,16,17,17,18,17,17,
16,19,18,14,14,15,16,17,14,14,16,16,18,16,16,16,
17,17,16,15,17,16,19,18,18,18,19,19,14,15,15,17,
17,15,16,16,17,18,14,16,14,18,16,17,17,18,18,19,
16,17,16,19,17,16,16,17,16,18,16,16,17,16,19,18,
18,18,17,18,17,16,18,16,20,19,19,19,19,19,16,17,
17,18,18,17,17,18,19,19,16,17,16,19,17,18,19,19,
19,20,17,18,16,20,16,11,14,13,17,17,14,14,16,16,
18,14,16,14,19,16,18,18,19,18,19,18,19,18,21,18,
13,15,14,18,16,14,14,16,16,18,16,17,16,19,17,18,
16,19,17,20,19,19,19,21,19,13,14,15,17,18,17,16,
17,17,19,14,16,14,18,16,20,19,19,20,21,18,19,16,
21,17,17,18,16,19,17,16,16,17,18,18,19,19,18,21,
18,17,17,18,17,20,20,20,20,22,20,17,17,18,18,20,
19,19,19,18,20,16,17,17,19,19,21,21,21,20,21,17,
19,17,23,17,11,13,13,16,16,13,14,14,17,17,13,14,
14,17,17,16,17,17,19,20,15,16,16,19,19,13,14,14,
16,17,14,15,15,17,18,14,15,15,17,17,17,17,18,19,
19,17,17,18,19,19,13,14,14,17,16,14,15,15,17,17,
13,15,14,18,17,17,18,18,19,20,16,17,16,19,18,16,
16,17,18,18,17,17,17,18,19,17,18,17,19,19,19,19,
19,19,20,19,20,19,20,20,15,16,16,18,17,16,17,17,
20,18,15,16,16,19,17,19,19,19,20,20,17,18,17,21,
17,11,13,13,16,16,13,14,15,16,17,13,15,14,17,16,
17,17,18,18,20,17,17,17,19,19,13,14,14,17,17,14,
14,15,17,18,15,15,15,18,17,17,17,18,17,20,18,18,
17,20,18,13,14,14,16,17,15,15,16,17,18,14,15,13,
17,17,17,18,18,19,20,17,17,16,19,17,16,17,17,18,
18,16,16,17,18,18,18,18,18,19,19,18,17,19,18,21,
19,20,20,20,20,16,15,17,18,18,17,17,18,18,20,16,
16,16,18,17,20,19,20,21,22,17,18,17,20,17,12,13,
13,16,16,13,14,15,16,17,13,14,14,17,16,16,17,18,
18,19,15,16,16,19,18,13,14,14,16,17,14,14,15,16,
17,14,15,15,17,17,16,16,17,17,19,17,17,17,19,18,
13,14,13,17,16,14,15,15,17,17,13,15,13,17,16,17,
17,17,19,19,15,17,15,19,17,16,17,17,18,18,16,16,
17,17,19,17,18,17,19,19,18,17,19,17,19,19,19,19,
20,19,15,17,15,19,16,17,17,16,19,18,16,17,15,18,
16,19,19,19,20,19,17,19,16,19,16,11,14,14,17,17,
15,14,16,16,18,15,16,14,18,16,18,18,19,18,21,18,
19,18,20,18,13,15,14,18,17,14,14,16,16,18,16,17,
16,19,17,17,17,19,17,22,19,19,19,21,19,13,14,15,
17,18,17,16,17,17,19,14,16,14,18,16,19,19,19,20,
21,18,18,16,20,17,17,18,16,19,18,15,17,17,19,19,
19,19,18,21,19,18,17,20,17,21,22,21,20,21,21,17,
16,19,18,20,19,18,19,18,20,16,17,16,19,18,21,20,
21,19,23,18,19,16,20,17,13,14,14,17,16,14,14,15,
16,18,14,16,14,17,16,16,16,17,17,19,16,17,16,19,
17,14,15,15,17,17,14,14,16,16,17,15,16,16,18,17,
16,16,17,17,19,17,18,17,19,18,14,15,14,17,16,16,
16,16,17,17,14,16,14,17,16,18,18,18,18,19,16,17,
15,19,16,17,17,17,18,18,16,15,17,17,18,18,18,18,
19,19,17,16,18,16,19,19,19,19,19,19,16,17,16,19,
16,18,18,17,19,18,16,17,16,19,16,19,19,20,19,19,
17,18,16,20,16,
};
 
static const static_codebook _44p6_p5_0 = {
5, 3125,
(char *)_vq_lengthlist__44p6_p5_0,
1, -528744448, 1616642048, 3, 0,
(long *)_vq_quantlist__44p6_p5_0,
0
};
 
static const long _vq_quantlist__44p6_p5_1[] = {
3,
2,
4,
1,
5,
0,
6,
};
 
static const char _vq_lengthlist__44p6_p5_1[] = {
2, 3, 3, 3, 3, 3, 3,
};
 
static const static_codebook _44p6_p5_1 = {
1, 7,
(char *)_vq_lengthlist__44p6_p5_1,
1, -533200896, 1611661312, 3, 0,
(long *)_vq_quantlist__44p6_p5_1,
0
};
 
static const long _vq_quantlist__44p6_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p6_p6_0[] = {
1, 5, 5, 5, 7, 9, 5, 9, 7, 5, 7, 8, 7, 7,10, 9,
10,10, 5, 8, 7, 9,10,10, 7,10, 7, 6, 9, 9, 9,10,
12, 9,11,11, 9,10,11,11,11,13,12,13,13, 9,11,11,
12,13,13,11,13,11, 6, 9, 9, 9,11,11, 9,12,10, 9,
11,11,11,11,13,12,13,13, 9,11,10,12,13,13,11,13,
11, 6, 9, 9, 9,11,12, 9,12,11, 9,10,11,10,10,13,
12,13,13, 9,11,11,12,13,12,11,13,11, 7, 9,10, 9,
10,12,10,12,11,10,10,12,10,10,12,12,12,13,10,11,
11,12,12,13,10,12,10, 7,10,10,11,11,14,11,14,11,
10,12,11,11,11,14,14,14,14,10,11,12,14,14,14,11,
14,11, 6, 9, 9, 9,11,12, 9,12,11, 9,11,11,11,11,
13,12,12,13, 9,11,10,12,13,13,10,13,10, 7,10,10,
11,11,14,11,14,11,10,12,11,11,11,14,14,15,14,10,
11,12,13,14,15,11,14,11, 7,10, 9,10,11,12, 9,12,
10,10,11,11,10,10,12,12,13,12, 9,12,10,12,13,12,
10,12,10,
};
 
static const static_codebook _44p6_p6_0 = {
5, 243,
(char *)_vq_lengthlist__44p6_p6_0,
1, -527106048, 1620377600, 2, 0,
(long *)_vq_quantlist__44p6_p6_0,
0
};
 
static const long _vq_quantlist__44p6_p6_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p6_p6_1[] = {
2, 6, 6, 6, 7, 8, 6, 8, 7, 6, 7, 7, 7, 7, 8, 7,
8, 8, 6, 7, 7, 7, 8, 8, 7, 8, 7, 6, 8, 8, 8, 9,
9, 8, 9, 9, 8, 9, 9, 9, 9,10, 9,10,10, 8, 9, 9,
9,10,10, 9,10, 9, 6, 8, 8, 8, 9, 9, 8, 9, 9, 8,
9, 9, 9, 9,10, 9,10,10, 8, 9, 9, 9,10, 9, 9,10,
9, 6, 8, 8, 8, 9, 9, 8, 9, 9, 8, 9, 9, 9, 9,10,
9, 9,10, 8, 9, 9, 9,10, 9, 9,10, 9, 7, 8, 8, 8,
9, 9, 8, 9, 9, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8, 9,
9, 9,10, 9, 9, 9, 9, 7, 9, 9, 9, 9,10, 9,10, 9,
9, 9, 9, 9, 9,10,10,10,10, 9, 9, 9,10,10,10, 9,
10, 9, 6, 8, 8, 8, 9, 9, 8, 9, 9, 8, 9, 9, 9, 9,
10, 9,10,10, 8, 9, 9, 9,10, 9, 9,10, 9, 7, 9, 9,
9, 9,10, 9,10, 9, 9, 9, 9, 9, 9,10,10,10,10, 9,
9, 9,10,10,10, 9,10, 9, 7, 8, 8, 8, 9, 9, 8, 9,
9, 8, 9, 9, 9, 9,10, 9, 9,10, 8, 9, 8, 9, 9, 9,
9,10, 9,
};
 
static const static_codebook _44p6_p6_1 = {
5, 243,
(char *)_vq_lengthlist__44p6_p6_1,
1, -530841600, 1616642048, 2, 0,
(long *)_vq_quantlist__44p6_p6_1,
0
};
 
static const long _vq_quantlist__44p6_p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p6_p7_0[] = {
1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,
};
 
static const static_codebook _44p6_p7_0 = {
5, 243,
(char *)_vq_lengthlist__44p6_p7_0,
1, -513979392, 1633504256, 2, 0,
(long *)_vq_quantlist__44p6_p7_0,
0
};
 
static const long _vq_quantlist__44p6_p7_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p6_p7_1[] = {
1, 4, 5, 5,10,10, 5,10,10, 5,10,10,10,10,10,10,
10,10, 5,10,10,10,10,10,10,10,10, 7,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10, 6,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10, 6,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10, 9,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10, 9,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10, 6,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10, 9,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10, 9,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,
11,11,11,
};
 
static const static_codebook _44p6_p7_1 = {
5, 243,
(char *)_vq_lengthlist__44p6_p7_1,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44p6_p7_1,
0
};
 
static const long _vq_quantlist__44p6_p7_2[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p6_p7_2[] = {
1, 2, 3, 4, 5, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
12,13,13,14,14,15,15,15,15,
};
 
static const static_codebook _44p6_p7_2 = {
1, 25,
(char *)_vq_lengthlist__44p6_p7_2,
1, -518864896, 1620639744, 5, 0,
(long *)_vq_quantlist__44p6_p7_2,
0
};
 
static const long _vq_quantlist__44p6_p7_3[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p6_p7_3[] = {
4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44p6_p7_3 = {
1, 25,
(char *)_vq_lengthlist__44p6_p7_3,
1, -529006592, 1611661312, 5, 0,
(long *)_vq_quantlist__44p6_p7_3,
0
};
 
static const char _huff_lengthlist__44p6_short[] = {
2, 8,13,15,16,18,21,22, 5, 4, 6, 8,10,12,17,21,
9, 5, 5, 6, 8,11,15,19,11, 6, 5, 5, 6, 7,12,14,
14, 8, 7, 5, 4, 4, 9,11,16,11, 9, 7, 4, 3, 7,10,
22,15,14,12, 8, 7, 9,11,21,16,15,12, 9, 5, 6, 8,
};
 
static const static_codebook _huff_book__44p6_short = {
2, 64,
(char *)_huff_lengthlist__44p6_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p7_l0_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44p7_l0_0[] = {
2, 4, 4, 7, 7, 8, 8,10,10,11,11,12,12, 4, 5, 5,
7, 7, 9, 9,11, 9,12,11,12,12, 4, 5, 5, 7, 7, 9,
9, 9,10,10,11,12,12, 7, 7, 7, 7, 8, 9, 8,11, 5,
12, 6,12,10, 7, 7, 7, 8, 7, 8, 9, 5,11, 6,12,10,
12, 8, 9, 9, 9, 9,10,10,11, 7,11, 7,12, 9, 8, 9,
8, 9, 9,10,10, 7,11, 7,11, 9,11,10,10,10,10,10,
10,10,11,10,11, 8,11, 9,10,10,10,10,10,10,10,10,
11, 8,10, 9,11,10,11,11,11,11,11,10,11,10,12,10,
12,11,10,11,11,11,11,10,11,10,11,10,12,11,12,11,
12,12,12,12,12,12,12,12,12,12,13,12,11,12,11,12,
12,12,12,12,11,12,11,12,13,
};
 
static const static_codebook _44p7_l0_0 = {
2, 169,
(char *)_vq_lengthlist__44p7_l0_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44p7_l0_0,
0
};
 
static const long _vq_quantlist__44p7_l0_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p7_l0_1[] = {
4, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44p7_l0_1 = {
2, 25,
(char *)_vq_lengthlist__44p7_l0_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p7_l0_1,
0
};
 
static const long _vq_quantlist__44p7_l1_0[] = {
54,
29,
79,
0,
108,
};
 
static const char _vq_lengthlist__44p7_l1_0[] = {
1, 2, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _44p7_l1_0 = {
2, 25,
(char *)_vq_lengthlist__44p7_l1_0,
1, -514516992, 1620639744, 7, 0,
(long *)_vq_quantlist__44p7_l1_0,
0
};
 
static const char _huff_lengthlist__44p7_lfe[] = {
2, 3, 1, 3,
};
 
static const static_codebook _huff_book__44p7_lfe = {
2, 4,
(char *)_huff_lengthlist__44p7_lfe,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44p7_long[] = {
2, 7,14,16,17,17,18,20, 6, 3, 5, 8,10,11,13,15,
13, 5, 3, 5, 8, 9,11,12,15, 7, 4, 3, 5, 7, 9,11,
16,10, 7, 5, 6, 7, 9,10,17,11, 8, 7, 7, 6, 8, 8,
19,13,11, 9, 9, 8, 8, 9,20,14,13,11,10, 8, 9, 9,
};
 
static const static_codebook _huff_book__44p7_long = {
2, 64,
(char *)_huff_lengthlist__44p7_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p7_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p7_p1_0[] = {
2, 5, 5, 4, 7, 7, 4, 7, 7, 5, 7, 7, 7, 8, 9, 7,
9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 6, 7, 8, 8, 9,
10, 8, 9,10, 8, 9,10,10,10,12,10,11,11, 8,10,10,
10,11,12,10,11,11, 6, 8, 7, 8,10, 9, 8,10, 9, 8,
10,10,10,11,11,10,12,11, 8,10, 9,10,11,11,10,12,
10, 5, 8, 8, 8,10,10, 8,10,10, 7, 9,10, 9,10,11,
9,11,11, 8,10,10,10,11,12,10,12,11, 7, 9, 9, 9,
10,11, 9,11,11, 9, 9,11,10,11,12,11,11,12, 9,11,
11,11,12,12,11,12,12, 7, 9, 9,10,11,11,10,12,11,
9,11,10,11,11,12,11,13,12,10,11,11,12,13,13,11,
13,11, 5, 8, 8, 8,10,10, 8,10,10, 8,10,10,10,11,
12,10,12,11, 7,10, 9, 9,11,11, 9,11,10, 7, 9, 9,
10,11,12,10,11,11,10,11,11,11,11,13,12,13,13, 9,
10,11,11,12,13,11,12,11, 7, 9, 9, 9,11,11, 9,11,
10, 9,11,11,11,12,12,11,12,12, 9,11, 9,11,12,11,
10,12,11,
};
 
static const static_codebook _44p7_p1_0 = {
5, 243,
(char *)_vq_lengthlist__44p7_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p7_p1_0,
0
};
 
static const long _vq_quantlist__44p7_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p7_p2_0[] = {
4, 6, 6, 9, 9, 6, 8, 8,10,10, 6, 8, 8,10,10, 8,
10,10,12,13, 8,10,10,13,12, 6, 8, 8,10,10, 8, 8,
9,10,11, 8, 9, 9,11,11,10,10,11,12,13,10,11,11,
13,13, 6, 8, 8,10,10, 8, 9, 9,11,11, 8, 9, 8,11,
10,10,11,11,13,13,10,11,10,13,12, 9,10,10,12,12,
10,10,11,12,13,10,11,11,13,13,12,12,13,12,15,13,
13,13,15,14, 9,10,10,12,12,10,11,11,13,13,10,11,
10,13,12,12,13,13,14,15,12,13,12,15,12, 6, 8, 8,
10,11, 8, 9,10,11,12, 8, 9, 9,11,11,10,11,12,13,
14,10,11,11,13,13, 8, 9, 9,11,12, 9,10,11,12,13,
9,10,10,12,13,11,12,13,13,15,11,12,12,14,14, 8,
9, 9,11,12, 9,10,11,12,13, 9,10,10,13,12,11,12,
13,14,15,11,12,12,14,13,10,11,12,13,14,11,12,13,
13,15,12,13,13,14,14,13,13,14,14,16,14,15,14,16,
15,10,12,11,14,13,12,12,13,14,14,11,12,12,14,14,
14,14,15,15,16,13,14,14,16,14, 6, 8, 8,11,10, 8,
9, 9,11,11, 8,10, 9,12,11,10,11,11,13,13,10,12,
11,14,13, 8, 9, 9,12,11, 9,10,10,12,13, 9,11,10,
13,12,11,12,12,14,14,11,13,12,15,14, 8, 9, 9,12,
11, 9,10,10,13,12, 9,11,10,13,12,11,12,12,14,14,
11,13,12,15,13,10,11,12,13,14,11,12,13,13,14,12,
13,12,14,14,13,13,14,14,16,14,15,14,16,16,10,12,
11,14,13,12,13,13,14,14,11,13,12,15,13,14,14,15,
16,16,13,14,13,16,14, 9,10,11,12,13,11,11,12,13,
14,11,11,12,13,14,13,13,14,14,16,13,14,14,15,15,
11,11,12,13,14,12,12,13,13,15,12,13,13,14,15,14,
14,15,15,17,14,14,15,16,16,11,12,12,13,14,12,12,
13,14,15,12,13,12,14,15,14,14,15,15,17,14,15,14,
16,16,13,14,14,15,16,14,14,15,15,17,14,15,15,16,
16,15,16,17,16,18,16,17,16,17,17,13,14,14,16,15,
14,15,15,16,16,14,15,14,16,15,16,16,17,17,18,16,
16,16,17,16, 9,11,10,13,12,11,12,11,14,13,11,12,
11,14,13,13,14,14,16,15,13,14,13,16,14,11,12,12,
14,13,12,12,13,14,14,12,13,13,15,14,14,14,15,16,
16,14,15,14,17,15,11,12,11,14,13,12,13,13,15,14,
12,13,12,15,13,14,15,14,16,16,14,15,14,17,15,13,
14,14,15,16,14,14,15,16,16,14,15,15,16,16,15,16,
16,16,17,16,16,16,17,17,13,14,14,16,15,14,15,15,
17,16,14,15,14,17,15,16,17,17,17,17,16,16,16,18,
16, 6, 8, 8,11,11, 8, 9, 9,11,12, 8, 9, 9,12,11,
10,11,11,13,14,10,11,11,14,13, 8, 9, 9,11,12, 9,
10,10,12,13, 9,10,10,13,12,11,11,12,13,15,11,12,
12,15,14, 8, 9, 9,12,11, 9,10,11,12,13, 9,11,10,
13,12,11,12,12,14,15,11,13,12,15,14,10,11,11,13,
14,11,12,12,13,14,11,12,12,14,14,13,13,14,14,16,
13,14,14,16,15,11,12,11,14,13,12,13,13,14,14,11,
13,12,14,13,14,14,15,16,16,13,14,14,16,14, 8, 9,
9,11,12, 9,10,10,12,13, 9,10,10,13,12,11,12,12,
14,15,11,12,12,14,14, 9, 9,10,11,13,10,10,12,12,
14,10,10,11,13,13,12,12,13,14,16,12,12,13,15,15,
9,10,10,13,12,10,11,11,13,14,10,12,11,14,13,12,
13,13,15,15,12,13,13,15,15,11,11,12,13,15,12,12,
13,13,15,12,13,13,14,15,14,14,15,15,17,14,15,15,
16,16,11,13,12,15,14,13,13,13,15,15,12,14,13,15,
14,15,15,15,16,16,14,15,15,17,15, 7, 9, 9,12,11,
9,10,10,12,12, 9,11,10,13,12,11,12,12,14,14,11,
13,12,15,14, 9,10,10,12,12,10,10,11,12,13,10,11,
11,14,13,12,12,13,14,15,12,13,13,15,14, 9,10,10,
12,12,10,11,11,13,13,10,11,10,14,12,12,13,13,15,
15,12,13,12,15,13,11,12,12,14,14,12,12,13,14,15,
12,13,13,15,15,14,13,14,13,16,14,15,15,16,16,11,
12,12,14,14,13,13,14,15,15,12,13,12,15,14,15,15,
15,16,16,14,15,14,17,14,10,11,12,13,14,11,12,13,
14,15,11,12,12,14,15,13,14,15,15,17,14,14,14,16,
16,11,12,13,12,15,12,12,14,13,16,13,13,14,13,16,
14,14,15,14,17,15,15,15,15,17,11,13,12,15,15,13,
13,14,15,16,12,14,13,16,15,15,15,15,17,17,15,15,
15,17,16,14,14,15,14,16,14,14,16,14,17,15,15,15,
14,17,16,16,17,15,18,17,17,17,16,18,14,15,15,17,
16,15,16,16,17,17,15,16,15,17,16,17,17,17,18,18,
16,17,16,18,17,10,11,11,14,13,11,12,12,14,14,11,
13,12,15,14,14,14,14,16,16,14,15,14,16,15,11,12,
12,15,13,12,13,13,15,14,13,14,13,16,14,14,15,15,
16,16,15,16,15,17,16,11,13,12,15,14,13,13,14,15,
15,12,14,13,16,14,15,15,15,17,17,14,16,15,17,16,
14,14,14,16,15,14,15,15,16,16,15,16,15,17,16,16,
16,16,16,17,16,17,17,18,17,14,15,15,16,16,15,15,
16,17,16,14,15,15,17,16,17,17,17,18,18,16,17,16,
18,16, 6, 8, 8,11,11, 8, 9, 9,11,12, 8, 9, 9,12,
11,10,11,12,13,14,10,11,11,14,13, 8, 9, 9,11,12,
9,10,11,12,13, 9,11,10,13,12,11,12,13,14,15,11,
12,12,15,14, 8, 9, 9,12,11, 9,10,10,12,13, 9,10,
10,13,12,11,12,12,14,15,11,12,12,14,13,11,11,12,
13,14,11,12,13,13,15,12,13,13,14,14,13,14,14,14,
16,14,15,14,16,16,10,11,11,14,13,11,12,12,14,14,
11,12,12,14,13,13,14,14,15,16,13,14,13,16,14, 7,
9, 9,11,11, 9,10,11,12,13, 9,10,10,12,12,11,12,
13,14,15,11,12,12,14,14, 9,10,10,12,12,10,10,11,
12,13,10,11,11,13,13,12,12,13,13,15,12,13,13,15,
15, 9,10,10,12,12,10,11,11,13,13,10,11,10,13,12,
12,13,13,14,15,12,13,12,15,13,11,12,12,14,14,12,
12,13,14,15,13,14,13,15,15,14,13,15,13,16,15,15,
15,16,16,11,12,12,14,14,12,13,13,14,15,12,13,12,
15,14,14,15,15,16,17,13,14,13,16,13, 8, 9, 9,12,
11, 9,10,10,12,13, 9,10,10,13,12,11,12,12,14,15,
11,12,12,15,14, 9,10,10,12,13,10,11,12,13,14,10,
11,11,14,13,12,13,13,15,15,12,13,13,15,15, 9,10,
9,13,11,10,11,10,13,13,10,12,10,14,12,12,13,12,
15,15,12,13,12,15,14,11,12,13,14,15,12,13,14,14,
15,13,13,13,15,15,14,15,15,15,17,15,15,15,16,16,
11,12,11,15,13,12,13,13,15,14,12,13,12,16,13,14,
15,15,16,16,14,15,14,17,14,10,11,11,13,14,11,12,
13,14,15,11,12,12,14,14,14,14,15,15,17,14,14,14,
15,16,11,12,13,14,15,12,13,14,14,16,13,14,13,15,
15,14,15,16,15,17,15,15,15,17,17,11,12,12,13,15,
13,13,14,14,16,12,13,13,14,15,15,15,15,16,17,14,
15,15,16,16,14,15,15,16,16,14,15,15,16,17,15,15,
16,16,17,16,16,17,16,18,17,17,17,18,18,14,14,15,
15,16,15,15,15,16,17,14,15,15,16,16,16,17,17,17,
18,16,16,16,17,16,10,11,11,14,13,11,13,12,15,14,
11,13,12,15,14,14,15,14,16,16,13,15,14,17,15,11,
12,13,15,15,12,13,14,15,16,13,14,13,16,15,15,15,
15,16,17,15,15,15,17,16,11,13,11,15,12,13,14,13,
16,13,12,14,12,16,13,15,15,15,17,15,14,16,14,17,
14,14,15,15,16,17,15,15,16,16,17,15,16,15,17,17,
16,16,17,17,18,16,17,17,18,18,14,15,14,17,13,15,
16,15,17,15,15,16,15,17,14,16,17,16,18,16,16,17,
16,18,15, 9,11,11,13,13,10,12,12,14,14,11,12,12,
14,14,13,14,14,15,16,13,14,14,16,16,10,11,12,14,
14,11,12,13,14,15,11,13,13,15,15,13,14,14,15,16,
14,15,15,16,16,11,12,12,14,14,12,13,13,15,15,12,
13,12,15,14,14,15,15,16,16,14,15,14,17,16,12,13,
13,15,16,13,13,14,15,16,13,14,14,16,16,14,15,16,
16,17,15,16,16,17,17,13,14,14,16,15,14,15,15,17,
16,14,15,14,17,15,16,16,17,17,17,16,16,16,18,16,
10,11,12,14,14,11,12,13,14,15,11,13,12,15,15,13,
14,15,16,16,14,15,15,17,16,11,11,13,14,15,12,12,
14,14,16,12,13,14,15,15,14,14,15,16,17,15,15,15,
17,17,12,13,12,15,15,13,14,14,16,15,13,14,13,16,
15,15,16,15,17,17,15,16,15,17,16,13,12,15,14,16,
14,13,15,14,17,14,13,15,15,17,15,14,17,15,18,16,
15,17,17,18,14,15,15,17,16,15,16,16,17,17,15,16,
15,17,16,16,17,17,18,18,16,17,16,18,17,10,11,11,
14,14,11,12,12,14,15,11,13,12,15,14,13,14,14,16,
16,14,15,14,16,16,11,12,12,14,14,12,12,13,15,15,
12,13,13,15,15,14,14,15,16,16,14,15,15,17,16,11,
12,12,15,15,13,13,13,15,15,12,13,13,15,15,15,15,
15,17,17,14,15,15,17,16,13,14,13,16,15,14,14,14,
16,16,14,15,14,17,16,15,15,16,16,17,16,17,16,18,
17,14,15,15,16,16,15,15,15,17,17,14,15,15,17,16,
16,17,17,18,18,16,17,16,18,16,12,13,13,15,15,13,
14,14,16,16,13,14,14,16,16,14,15,16,16,18,15,16,
16,17,17,13,13,14,14,16,14,14,15,15,17,14,14,15,
15,17,15,15,17,15,18,16,16,17,17,18,13,14,14,16,
16,14,15,15,16,17,14,15,15,17,16,16,17,16,17,18,
16,17,16,18,17,15,14,16,13,18,16,15,17,14,18,16,
15,17,14,18,17,16,18,15,19,17,17,18,16,19,15,16,
16,17,17,16,17,17,18,18,16,17,16,18,17,18,18,18,
19,18,17,18,17,19,17,11,12,12,15,15,13,13,14,15,
16,13,14,13,16,15,15,15,15,16,17,15,16,15,17,16,
12,13,13,15,15,13,13,14,15,16,14,15,14,16,15,15,
15,16,16,17,16,16,16,18,17,12,13,13,15,15,14,14,
15,16,16,13,14,13,16,15,16,16,16,17,17,15,16,15,
18,16,15,15,15,17,15,14,15,15,16,16,16,17,16,17,
16,16,16,17,16,17,17,18,17,19,18,15,15,16,17,17,
16,16,16,17,17,15,16,15,17,16,17,18,18,18,18,16,
17,16,18,16, 9,11,11,13,13,11,12,12,14,14,10,12,
12,14,14,13,14,14,15,16,13,14,14,16,15,11,12,12,
14,14,12,12,13,14,15,12,13,13,15,15,14,14,15,16,
17,14,15,15,16,16,10,12,11,14,14,11,13,13,15,15,
11,13,12,15,14,14,14,15,16,16,13,14,14,16,15,13,
14,14,15,16,14,14,15,15,17,14,15,15,16,17,16,16,
16,16,18,16,16,17,17,17,12,13,13,16,15,13,14,14,
16,16,12,14,13,16,15,15,16,16,17,17,14,16,15,17,
16,10,11,11,14,14,11,12,13,14,15,11,12,12,15,14,
14,14,15,16,16,13,14,14,16,16,11,12,12,14,15,12,
13,14,15,15,13,13,13,15,15,14,15,15,16,17,15,15,
15,16,17,11,12,12,14,14,12,13,13,15,15,12,13,12,
15,15,14,15,15,16,17,14,15,14,16,16,14,14,15,16,
16,14,15,15,16,17,15,16,15,17,17,16,16,17,16,18,
16,17,17,18,18,13,13,14,15,16,14,14,15,16,17,14,
14,14,16,15,16,16,17,17,18,15,16,15,17,16,10,12,
11,14,14,11,13,13,15,15,11,13,12,15,15,14,15,15,
16,16,13,15,14,16,16,12,12,13,15,15,13,13,14,15,
16,13,14,14,16,15,15,15,16,16,17,15,15,15,17,17,
11,13,11,15,14,12,14,13,16,15,12,14,12,16,14,15,
15,15,17,17,14,15,14,17,15,14,15,15,16,17,15,15,
16,16,17,15,16,16,17,17,16,16,17,17,18,16,17,17,
18,18,13,14,12,16,14,14,15,13,17,15,14,15,13,17,
14,16,17,15,18,17,15,17,14,18,15,11,12,12,14,15,
13,13,14,15,16,13,14,13,16,15,15,15,16,16,17,15,
15,15,16,16,12,13,13,15,15,13,13,14,15,16,14,15,
14,16,16,15,15,16,16,18,16,16,16,18,17,12,13,13,
15,15,14,14,15,15,16,13,14,13,15,15,16,16,16,17,
18,15,16,15,17,16,15,16,15,17,16,15,15,16,16,17,
16,17,16,17,17,16,16,17,16,18,17,18,18,18,18,14,
15,15,15,17,16,15,17,16,17,14,15,15,16,16,17,17,
18,18,19,16,16,16,17,16,12,13,13,15,15,13,14,14,
16,16,13,14,14,16,16,15,16,16,17,17,15,16,15,18,
16,13,14,14,16,16,14,15,15,16,17,14,15,15,17,16,
16,16,17,17,18,16,17,16,18,18,13,14,13,16,14,14,
15,14,17,15,14,15,14,17,14,16,17,16,18,17,15,17,
15,18,15,15,16,16,17,18,16,16,17,17,18,16,17,17,
17,18,17,17,18,18,19,17,18,18,19,18,15,16,14,17,
13,16,17,15,18,14,16,17,15,18,14,18,18,17,19,16,
17,18,16,19,15,
};
 
static const static_codebook _44p7_p2_0 = {
5, 3125,
(char *)_vq_lengthlist__44p7_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p7_p2_0,
0
};
 
static const long _vq_quantlist__44p7_p3_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p7_p3_0[] = {
2, 5, 5, 4, 7, 7, 4, 7, 7, 5, 7, 8, 7, 8,10, 8,
9, 9, 5, 7, 7, 8, 9, 9, 7,10, 8, 5, 7, 8, 8, 9,
10, 8,10,10, 8, 9,10,10,10,12,10,12,12, 8,10,10,
10,12,12,10,12,11, 5, 8, 7, 8,10,10, 8,10, 9, 8,
10,10,10,11,12,10,12,12, 8,10, 9,10,12,12,10,12,
10, 5, 8, 8, 7,10,10, 8,10,10, 7, 9,10, 9,10,12,
10,12,12, 8,10,10,10,12,12,10,12,11, 7, 9,10, 9,
11,12,10,12,11, 9, 9,12,11,10,14,12,12,13,10,12,
11,12,13,13,11,14,12, 7,10, 9,10,11,11,10,12,11,
9,11,11,11,11,13,12,14,13,10,12,12,12,14,14,11,
14,12, 5, 8, 8, 8,10,10, 7,10,10, 8,10,10,10,11,
12,10,12,12, 7,10, 9,10,12,12, 9,12,10, 7, 9,10,
10,11,12,10,11,11,10,12,12,11,12,14,12,14,14, 9,
11,11,12,13,14,11,13,11, 7,10, 9,10,11,12, 9,12,
11,10,11,12,11,12,14,12,13,13, 9,12, 9,12,13,12,
11,14,10,
};
 
static const static_codebook _44p7_p3_0 = {
5, 243,
(char *)_vq_lengthlist__44p7_p3_0,
1, -533200896, 1614282752, 2, 0,
(long *)_vq_quantlist__44p7_p3_0,
0
};
 
static const long _vq_quantlist__44p7_p3_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p7_p3_1[] = {
6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 8, 7,
8, 8, 7, 8, 7, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 8, 8,
8, 8, 8, 8, 9, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9,
8, 7, 8, 8, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 7, 8, 8, 8,
8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8,
8, 9, 9, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8,
9, 8, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
9, 8, 8, 9, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8,
8, 8, 8, 9, 9, 8, 9, 8, 7, 8, 8, 8, 8, 8, 8, 9,
8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9,
8, 9, 8,
};
 
static const static_codebook _44p7_p3_1 = {
5, 243,
(char *)_vq_lengthlist__44p7_p3_1,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p7_p3_1,
0
};
 
static const long _vq_quantlist__44p7_p4_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p7_p4_0[] = {
1, 5, 5, 5, 7, 8, 5, 8, 7, 5, 7, 8, 7, 8,10, 8,
10,10, 5, 8, 7, 8,10,10, 7,10, 8, 6, 8, 9, 9,10,
12, 9,11,11, 9,10,11,11,11,13,11,13,13, 9,11,11,
11,12,13,11,13,11, 6, 9, 8, 9,11,11, 9,12,10, 9,
11,11,11,11,13,11,13,13, 9,11,10,11,13,13,11,13,
11, 6, 9, 9, 8,10,11, 9,12,11, 8,10,11,10,11,13,
11,13,13, 9,11,11,11,13,12,11,13,11, 8,10,10, 9,
11,12,10,12,12,10,10,12,11,11,14,12,13,14,10,12,
12,12,13,13,11,14,11, 8,11,10,11,12,13,11,14,12,
10,12,11,11,12,14,13,15,14,10,12,12,13,14,15,12,
14,12, 5, 9, 9, 9,11,12, 8,11,10, 9,11,11,11,11,
13,11,12,13, 8,11,10,11,13,13,10,13,11, 8,10,11,
11,12,14,11,13,12,10,12,12,12,12,14,14,15,14,10,
11,12,13,14,15,11,14,12, 8,10,10,10,12,12, 9,12,
11,10,12,12,11,11,14,12,13,13,10,12,10,12,14,13,
11,13,11,
};
 
static const static_codebook _44p7_p4_0 = {
5, 243,
(char *)_vq_lengthlist__44p7_p4_0,
1, -531365888, 1616117760, 2, 0,
(long *)_vq_quantlist__44p7_p4_0,
0
};
 
static const long _vq_quantlist__44p7_p4_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p7_p4_1[] = {
7, 8, 8,10,10, 8, 9, 9,10,11, 8, 9, 9,10,10, 9,
10,10,11,11, 9,10,10,11,11, 8, 9, 9,10,10, 9, 9,
10,11,11, 9,10,10,11,11,10,10,11,11,11,10,11,11,
11,11, 8, 9, 9,10,10, 9,10,10,11,11, 9,10, 9,11,
11,10,11,11,11,11,10,11,10,11,11,10,10,10,11,11,
10,11,11,11,11,10,11,11,11,11,11,11,11,11,12,11,
11,11,11,12,10,10,10,11,11,10,11,11,11,11,10,11,
11,11,11,11,11,11,12,11,11,11,11,12,11, 8, 9,10,
11,11, 9,10,11,11,11, 9,10,10,11,11,10,11,11,12,
12,10,11,11,12,12,10,10,10,11,11,10,10,11,11,12,
10,11,11,12,12,11,11,12,12,12,11,11,12,12,12,10,
10,10,11,11,10,11,11,12,12,10,11,11,12,11,11,12,
12,12,12,11,12,11,12,12,11,11,11,11,12,11,11,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,11,11,11,12,12,11,12,12,12,12,11,12,11,12,12,
12,12,12,12,12,12,12,12,12,12, 8,10, 9,11,11, 9,
10,10,11,11, 9,10,10,11,11,10,11,11,12,12,10,11,
11,12,12,10,10,10,11,11,10,11,11,12,12,10,11,11,
12,12,11,11,12,12,12,11,12,12,12,12,10,10,10,11,
11,10,11,11,12,12,10,11,10,12,11,11,12,11,12,12,
11,12,11,12,12,11,11,11,12,12,11,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,
11,12,11,11,12,12,12,12,11,12,11,12,12,12,12,12,
12,12,12,12,12,12,12,10,11,11,11,12,11,11,12,12,
12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,
11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,
12,13,12,13,12,12,12,13,13,11,12,11,12,12,11,12,
12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,
13,13,12,12,12,12,12,12,12,12,12,13,12,12,13,13,
13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,
12,12,13,13,13,12,12,12,13,12,12,13,13,13,13,12,
13,13,13,13,10,11,11,12,11,11,11,11,12,12,11,12,
11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,
13,12,12,12,13,13,11,12,11,12,12,12,12,12,12,12,
11,12,11,12,12,12,12,12,13,13,12,12,12,13,12,12,
12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,13,
13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,
13,13,12,13,12,13,12,12,13,13,13,13,13,13,13,13,
13, 8,10,10,11,11, 9,10,10,11,11, 9,10,10,11,11,
10,11,11,12,12,10,11,11,12,12, 9,10,10,11,11,10,
10,11,11,12,10,11,11,12,12,11,11,12,12,12,11,11,
12,12,12,10,10,10,11,11,10,11,11,12,12,10,11,10,
12,11,11,12,11,12,12,11,12,11,12,12,11,11,11,12,
12,11,11,12,12,12,11,12,12,12,12,11,12,12,12,12,
12,12,12,12,12,11,11,11,12,11,11,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12, 9,10,
10,11,11,10,11,11,11,12,10,11,11,12,12,11,11,11,
12,12,11,11,11,12,12,10,10,11,11,12,11,11,12,12,
12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,
10,11,11,12,12,11,11,11,12,12,11,12,11,12,12,11,
12,12,12,12,11,12,12,12,12,11,11,12,12,12,11,12,
12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,
12,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,13,12, 9,10,10,11,11,
10,11,11,12,12,10,11,11,12,11,11,12,11,12,12,11,
12,11,12,12,10,11,11,12,12,11,11,11,12,12,11,12,
11,12,12,11,12,12,12,12,12,12,12,12,12,10,11,11,
12,12,11,12,11,12,12,11,12,11,12,12,12,12,12,13,
12,12,12,12,12,12,11,12,11,12,12,11,12,12,12,12,
12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,11,
12,12,12,12,12,12,12,13,12,11,12,12,12,12,12,12,
12,13,12,12,12,12,13,12,10,11,11,12,12,11,12,12,
12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,
13,11,11,12,12,12,12,12,12,12,13,12,12,12,12,12,
12,12,13,12,13,12,12,13,13,13,11,12,12,12,12,12,
12,12,13,13,12,12,12,13,12,12,13,12,13,13,12,13,
12,13,13,12,12,12,12,12,12,12,13,12,13,12,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,
13,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,
12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,
12,12,12,12,12,12,12,13,12,12,12,13,12,12,12,13,
13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,
13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,
12,12,12,12,12,12,13,13,13,13,12,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,12,12,12,13,12,12,13,
13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,
13,13, 8,10,10,11,11, 9,10,10,11,11, 9,10,10,11,
11,10,11,11,12,12,10,11,11,12,12,10,10,10,11,11,
10,11,11,11,12,10,11,11,12,12,11,11,12,12,12,11,
11,12,12,12, 9,10,10,11,11,10,11,11,12,12,10,11,
10,12,11,11,12,11,12,12,11,12,11,12,12,11,11,11,
12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,11,11,11,12,11,11,12,12,12,12,
11,12,11,12,12,12,12,12,12,12,12,12,12,12,12, 9,
10,10,11,11,10,11,11,12,12,10,11,11,12,12,11,11,
12,12,12,11,12,12,12,12,10,11,11,12,12,11,11,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,10,11,11,12,12,11,11,12,12,12,11,11,11,12,12,
12,12,12,12,12,11,12,12,12,12,11,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,13,12,13,12,12,
12,13,12,11,12,12,12,12,12,12,12,12,12,11,12,12,
12,12,12,12,12,13,12,12,12,12,13,12, 9,10,10,11,
11,10,11,11,12,12,10,11,11,12,12,11,11,11,12,12,
11,12,11,12,12,10,11,11,12,12,11,11,12,12,12,11,
11,11,12,12,11,12,12,12,12,11,12,12,12,12,10,11,
10,12,11,11,11,11,12,12,11,12,11,12,12,11,12,12,
12,12,11,12,11,12,12,11,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,
11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,
12,12,13,12,12,12,12,13,12,10,11,11,12,12,11,12,
12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,
13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,
13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,
12,12,12,12,13,12,12,12,12,12,12,13,13,13,13,12,
13,12,13,13,12,12,12,12,13,12,13,13,13,13,12,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,
12,12,12,13,13,13,13,12,13,12,13,13,13,13,13,13,
13,13,13,13,13,13,11,11,11,12,12,11,12,12,12,12,
11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,11,
12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,12,
13,13,13,12,13,13,13,13,11,12,11,12,12,12,12,12,
13,12,12,12,12,13,12,12,13,12,13,13,12,13,12,13,
12,12,12,12,12,13,12,12,13,13,13,12,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,
13,13,13,13,12,13,12,13,12,13,13,13,13,13,13,13,
13,13,13,10,11,11,12,12,10,11,11,12,12,10,11,11,
12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,
12,11,11,12,12,12,11,12,12,12,12,12,12,12,13,13,
12,12,12,13,13,11,11,11,12,12,11,12,12,12,12,11,
12,11,13,12,12,12,12,13,13,12,12,12,13,13,11,12,
12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,
13,13,12,13,12,13,13,11,12,12,12,12,12,12,12,13,
12,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,
10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,
12,12,13,13,12,12,12,13,13,11,11,12,12,12,11,12,
12,12,13,12,12,12,13,13,12,12,13,13,13,12,12,13,
13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,
13,12,13,13,13,13,12,13,12,13,13,12,12,12,12,13,
12,12,13,12,13,12,12,13,13,13,12,12,13,13,13,12,
13,13,13,13,12,12,12,12,13,12,12,13,13,13,12,12,
12,13,13,13,13,13,13,13,12,13,13,13,13,10,11,11,
12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,
13,12,12,12,13,13,11,12,12,12,12,11,12,12,12,13,
12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,11,
12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,
12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,12,
13,13,12,13,12,13,13,12,13,13,13,13,13,13,13,13,
13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,
13,13,13,13,13,13,13,13,13,13,11,11,11,12,12,11,
12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,
12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,
13,13,12,12,13,13,13,12,12,13,13,13,11,12,12,12,
12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,
12,13,12,13,13,12,12,12,12,12,12,12,13,12,13,12,
13,13,13,13,12,13,13,12,13,13,13,13,13,13,12,12,
12,12,12,12,13,13,13,13,12,13,12,13,13,13,13,13,
13,13,13,13,13,13,13,10,11,11,12,12,11,12,12,12,
13,11,12,12,13,12,12,12,12,13,13,12,12,12,13,13,
11,12,12,12,12,12,12,12,13,13,12,13,12,13,13,12,
12,13,13,13,12,13,13,13,13,11,12,12,12,13,12,12,
12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,
13,13,12,12,12,12,12,12,12,13,13,13,12,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,
12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,
13,13,13,13,10,11,11,12,12,10,11,11,12,12,10,11,
11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,
12,12,11,11,12,12,13,11,12,12,12,12,12,12,12,13,
13,12,12,12,13,13,10,11,11,12,12,11,12,12,12,12,
11,12,11,12,12,12,12,12,13,13,12,12,12,13,12,11,
12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,
13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,
13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,
13,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,
12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,
12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,12,
13,13,13,11,12,12,12,12,12,12,12,13,13,11,12,12,
13,12,12,13,13,13,13,12,13,12,13,13,12,12,12,12,
13,12,12,13,13,13,12,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,12,12,12,13,12,12,12,13,13,13,12,
12,12,13,13,13,13,13,13,13,12,13,13,13,13,10,11,
11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,
13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,
13,12,12,12,13,13,12,12,13,13,13,12,12,13,13,13,
11,12,11,12,12,12,12,12,13,13,11,12,12,13,12,12,
13,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,
13,13,13,12,13,12,13,13,12,13,13,13,13,13,13,13,
13,13,12,12,12,13,12,12,13,12,13,13,12,13,12,13,
13,13,13,13,13,13,12,13,12,13,13,10,11,11,12,12,
11,12,12,12,12,11,12,12,13,12,12,12,12,13,13,12,
12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,
12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,
12,12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,
13,12,13,12,13,13,12,12,12,12,13,12,12,13,13,13,
12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,
12,12,12,12,12,13,13,13,13,12,13,12,13,13,13,13,
13,13,13,13,13,13,13,13,11,11,11,12,12,11,12,12,
12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,
13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,
12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,
12,12,13,13,12,12,12,13,12,12,13,12,13,13,12,13,
12,13,13,12,12,12,12,12,12,13,13,13,13,12,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,
12,12,13,13,13,13,12,13,12,13,12,13,13,13,13,13,
13,13,13,13,12,
};
 
static const static_codebook _44p7_p4_1 = {
5, 3125,
(char *)_vq_lengthlist__44p7_p4_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p7_p4_1,
0
};
 
static const long _vq_quantlist__44p7_p5_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p7_p5_0[] = {
2, 6, 6, 9, 9, 5, 7, 8,10,11, 5, 8, 7,11,10, 8,
10,11,12,13, 8,11,10,13,12, 6, 7, 8,10,11, 7, 8,
10,10,12, 8, 9, 9,12,11,10,10,12,11,14,10,11,12,
14,13, 6, 8, 7,11,10, 8, 9, 9,11,12, 7,10, 8,12,
10,10,12,12,13,14,10,12,10,14,11, 9,10,11,11,12,
10,10,11,11,13,11,12,12,13,13,12,11,13,11,15,13,
14,13,14,14, 9,11,10,12,11,11,12,12,13,13,10,11,
10,13,11,13,13,14,14,14,12,13,11,14,11, 7, 8, 9,
11,12, 9, 9,11,12,13, 9,10,10,13,12,11,12,13,13,
15,11,12,12,14,14, 9,10,10,12,13,10,10,12,12,14,
11,11,11,13,13,12,12,13,13,15,12,13,13,15,14, 9,
10,10,12,13,10,11,11,13,14,10,12,11,14,13,12,13,
13,14,15,12,13,13,15,14,12,12,13,13,14,12,13,13,
13,15,13,14,14,14,15,14,14,15,14,16,14,15,15,16,
16,12,13,13,14,14,13,13,14,15,14,12,13,13,15,14,
14,15,15,15,16,14,15,14,16,14, 7, 9, 8,12,11, 9,
10,10,12,13, 9,11, 9,13,12,11,12,12,14,14,11,13,
12,15,13, 9,10,10,13,12,10,11,12,13,14,10,12,11,
14,13,12,13,13,14,15,13,13,13,15,14, 9,10,10,13,
12,11,11,11,13,13,10,12,10,14,12,13,13,13,14,15,
12,13,12,15,13,12,13,13,14,14,12,13,13,14,15,13,
14,13,15,15,14,14,15,14,16,14,15,15,16,15,12,13,
12,14,13,13,13,13,15,14,12,13,13,15,13,14,15,15,
16,15,14,15,14,16,14,11,12,12,13,14,12,13,14,14,
15,12,13,13,14,15,14,14,15,15,16,14,15,15,16,16,
12,13,13,14,15,13,13,14,14,16,13,14,14,15,15,15,
15,16,15,17,15,15,15,16,16,12,13,13,14,15,13,14,
14,15,16,13,14,14,15,15,15,15,16,16,17,15,15,15,
17,16,14,15,15,16,16,15,15,16,15,16,15,16,16,16,
17,16,16,17,16,18,16,16,17,18,17,14,15,15,16,16,
15,16,16,16,17,15,16,15,17,16,16,17,17,17,18,16,
16,16,17,16,11,12,12,14,13,12,13,13,15,14,12,14,
13,15,14,14,15,15,16,16,14,15,14,16,15,12,13,13,
15,14,13,14,14,15,15,13,14,14,16,15,15,15,15,16,
16,15,16,15,17,16,12,13,13,15,14,13,14,14,15,15,
13,14,13,16,14,15,15,15,16,16,15,15,15,17,15,14,
15,15,16,16,15,15,15,16,16,15,16,16,17,17,16,16,
17,17,17,16,17,17,18,17,14,15,15,16,15,15,15,16,
16,16,15,15,15,17,15,17,17,17,18,17,16,17,16,18,
16, 6, 9, 9,12,12, 8,10,10,12,13, 9,11,10,13,12,
10,12,12,14,14,11,13,12,14,14, 8,10,10,12,12, 9,
10,11,12,14,10,11,11,13,13,12,12,13,13,15,12,13,
13,15,14, 9,10,10,13,13,10,11,11,13,13,10,12,10,
14,13,12,13,13,14,15,12,13,13,15,14,11,12,12,13,
14,12,12,13,13,15,12,13,13,14,14,13,13,14,13,16,
14,15,15,16,15,11,12,12,14,14,13,13,13,15,14,12,
13,13,15,14,14,15,15,16,15,14,14,14,16,14, 7, 9,
10,12,12, 9,10,11,13,13, 9,11,10,13,13,11,12,13,
14,15,12,13,13,15,14, 9,10,11,12,13,10,10,12,13,
14,11,11,12,14,14,12,12,14,14,15,13,13,13,15,15,
9,11,11,13,13,11,12,12,14,14,10,12,10,14,13,13,
14,13,15,15,12,14,13,15,14,12,12,13,13,15,12,12,
14,13,15,13,14,14,15,15,14,14,15,14,17,14,15,15,
16,16,12,13,13,15,14,13,14,14,15,15,12,14,13,15,
14,14,15,15,16,16,14,15,14,16,14, 7,10,10,12,12,
10,11,11,12,13,10,12,10,14,12,12,13,13,14,15,12,
13,13,15,14, 9,11,10,13,12,10,10,12,12,14,11,13,
12,14,13,13,13,14,13,15,13,14,14,15,14,10,11,11,
13,13,12,12,12,13,14,10,12,10,14,12,13,14,14,15,
15,13,14,13,15,13,12,13,13,14,14,12,12,13,14,15,
13,14,14,15,15,13,13,14,13,15,14,15,15,16,16,12,
13,13,14,14,13,14,14,15,15,12,13,13,15,13,15,15,
15,16,16,13,14,13,16,13,11,12,13,14,14,12,13,14,
14,15,12,13,13,15,15,14,14,15,15,17,14,15,15,16,
16,12,13,14,14,15,13,13,14,14,16,13,14,14,15,16,
14,14,16,15,17,15,15,16,16,16,12,13,13,15,15,13,
14,14,15,16,13,14,14,15,16,15,15,16,17,17,15,16,
15,17,16,14,15,15,15,16,15,15,16,15,17,15,15,16,
16,17,16,16,16,16,18,16,16,17,17,17,14,15,15,16,
16,15,16,16,16,17,15,16,15,17,16,16,17,17,17,17,
16,17,16,18,17,11,12,12,14,14,13,13,14,14,15,13,
14,13,15,14,14,15,15,15,16,14,15,15,17,15,12,13,
13,15,14,13,13,14,15,15,14,15,14,16,15,15,15,15,
15,16,15,16,15,17,16,12,13,13,15,15,14,14,14,15,
16,13,14,13,16,15,15,15,16,16,17,15,16,15,17,15,
14,15,15,16,16,14,15,15,16,16,15,16,16,17,16,15,
15,16,15,17,16,17,17,18,17,14,15,15,16,16,15,16,
16,16,17,14,15,15,17,16,17,17,17,17,18,15,16,16,
18,15, 6, 9, 9,12,12, 9,10,11,12,13, 8,10,10,13,
12,11,12,13,14,14,10,12,12,14,13, 9,10,10,12,13,
10,10,12,13,14,10,11,11,13,13,12,13,13,14,15,12,
13,13,15,14, 8,10,10,12,12,10,11,11,13,13, 9,11,
10,13,13,12,13,13,14,15,12,13,12,15,13,11,12,12,
14,14,12,13,13,13,15,13,13,13,14,15,14,14,15,14,
16,14,15,15,15,15,11,12,12,14,13,12,13,13,15,14,
12,13,12,15,13,14,14,15,16,16,13,14,13,16,13, 7,
10,10,12,12,10,10,12,12,14,10,11,11,13,12,12,13,
13,13,15,12,13,13,15,14,10,11,11,13,13,10,10,12,
12,14,12,12,12,14,13,13,13,14,13,15,13,14,14,15,
14, 9,10,11,13,13,11,12,12,13,14,10,12,10,14,12,
13,13,14,14,15,13,13,12,15,13,12,13,13,14,14,12,
13,13,14,15,13,14,14,15,15,13,13,15,13,16,15,15,
15,16,16,12,13,13,14,14,13,14,14,15,15,12,13,12,
15,14,15,15,15,16,16,13,14,13,15,13, 7,10, 9,12,
12, 9,10,11,13,13, 9,11,10,13,13,11,13,13,14,15,
11,13,12,15,14, 9,11,11,13,13,10,10,12,13,14,11,
12,12,14,14,12,13,14,14,15,13,13,13,15,15, 9,11,
10,13,12,11,12,11,14,14,10,12,10,14,13,13,14,13,
15,15,12,14,12,15,14,12,13,13,14,15,13,13,14,14,
15,13,14,14,15,15,14,14,15,14,17,14,15,15,16,16,
12,13,12,15,13,13,14,14,15,15,12,14,13,15,13,14,
15,15,16,16,14,15,14,16,14,11,12,12,14,14,13,13,
14,14,15,13,14,13,15,15,14,15,15,16,17,14,15,15,
16,15,12,13,13,15,15,13,13,14,15,16,14,14,14,16,
15,15,15,16,15,17,15,16,15,17,16,12,13,13,14,15,
14,14,15,15,16,13,14,13,15,15,15,15,16,16,17,15,
15,15,16,15,14,15,15,16,16,14,15,15,16,17,15,16,
16,17,17,16,15,16,15,17,16,17,17,17,17,14,15,15,
15,16,15,15,16,16,17,14,15,15,16,16,16,16,17,17,
18,15,16,15,17,15,11,13,12,14,14,12,13,13,15,15,
12,14,13,15,14,14,15,15,16,16,14,15,14,16,15,12,
13,13,15,15,13,14,14,15,16,13,14,14,16,16,15,15,
16,16,17,15,16,15,17,16,12,13,13,15,14,13,14,14,
16,15,13,14,13,16,14,15,16,15,17,16,15,15,14,18,
15,14,15,15,16,16,15,15,16,16,17,15,16,15,17,16,
16,16,17,17,18,16,17,17,18,17,14,15,15,16,15,15,
16,15,17,16,15,15,15,17,15,16,17,17,18,17,16,17,
16,18,15,10,12,12,14,14,12,13,13,14,14,12,13,13,
14,14,13,14,14,15,15,13,14,14,16,15,11,12,13,14,
14,12,13,13,15,15,12,13,13,15,15,13,14,15,15,16,
14,15,15,16,16,12,13,13,14,14,13,13,14,15,15,13,
14,13,15,15,14,15,15,16,16,14,15,14,16,15,13,14,
14,15,15,13,14,14,15,16,14,14,15,16,16,14,15,15,
15,17,15,16,16,17,17,13,14,14,15,15,14,15,15,16,
16,14,15,15,16,16,15,16,16,16,17,15,16,15,17,16,
11,12,12,14,14,12,13,13,14,15,12,13,13,15,14,13,
14,14,15,16,13,14,14,16,15,12,13,13,14,15,13,13,
14,15,15,13,14,14,15,15,14,14,15,15,17,14,15,15,
16,16,12,13,13,15,15,13,14,14,15,15,13,14,13,15,
15,14,15,15,16,17,14,15,15,16,16,13,13,14,15,16,
14,14,15,15,16,14,15,15,16,16,15,15,16,15,18,15,
16,16,17,17,14,15,15,16,16,15,15,15,16,16,14,15,
15,17,16,16,16,16,17,17,15,16,16,17,16,10,12,12,
14,14,12,13,13,14,15,12,13,13,15,14,14,14,15,15,
16,14,15,14,16,15,12,13,13,15,14,13,13,14,15,15,
13,14,14,15,15,14,14,15,15,16,14,15,15,16,16,12,
13,13,15,15,13,14,14,15,16,13,14,13,15,14,15,15,
15,16,16,14,15,15,16,15,13,14,14,16,15,14,14,14,
15,16,14,15,15,16,16,15,15,16,15,17,16,17,16,17,
17,14,14,15,15,16,15,15,16,16,16,14,15,14,16,15,
16,16,16,17,17,15,16,15,17,15,11,13,13,14,15,13,
13,14,15,15,13,14,13,15,15,14,15,15,15,16,14,15,
15,17,15,13,13,14,15,15,13,14,15,15,16,14,14,14,
16,16,15,14,16,15,17,15,16,16,17,16,13,14,14,15,
15,14,14,14,16,16,13,15,14,16,15,15,15,16,17,17,
15,16,15,17,16,14,15,15,15,16,15,15,16,15,17,15,
16,16,16,17,16,16,17,15,18,16,17,17,17,17,14,15,
15,16,16,15,16,16,17,17,15,16,15,17,16,16,17,17,
18,18,16,17,15,18,16,10,12,12,14,14,13,13,14,14,
15,13,14,13,15,14,14,15,15,15,16,15,15,15,16,15,
12,13,13,15,14,12,12,14,14,15,14,15,14,16,15,15,
14,15,14,17,15,16,16,17,16,12,13,13,14,15,14,14,
15,15,16,13,14,12,16,14,15,16,16,16,17,15,16,14,
17,15,14,15,14,16,15,14,14,15,15,15,15,16,15,17,
16,15,14,16,14,16,16,17,17,18,17,14,14,15,15,16,
15,16,16,16,17,14,15,14,16,15,16,16,17,17,17,15,
16,14,17,14,10,12,12,14,13,12,13,13,14,14,11,13,
12,14,14,13,14,14,15,16,13,14,14,16,15,12,13,13,
14,14,13,13,14,15,15,13,14,13,15,15,14,14,15,15,
16,14,15,15,16,16,11,13,12,14,14,12,13,13,15,15,
12,13,13,15,15,14,15,15,16,16,13,14,14,16,15,13,
14,14,15,15,14,15,15,15,16,14,15,15,16,16,15,16,
16,16,17,16,16,16,17,17,13,14,14,15,15,14,15,15,
16,16,13,14,14,16,15,15,16,16,17,17,15,15,15,17,
15,11,12,12,14,14,12,13,13,14,15,12,13,13,15,14,
14,14,15,15,16,14,14,14,16,15,12,13,13,15,14,13,
13,14,15,15,13,14,14,16,15,14,15,15,15,16,15,15,
15,16,16,12,13,13,14,15,13,13,14,15,15,13,14,13,
15,15,15,15,15,16,16,14,15,14,16,15,14,14,15,16,
16,14,15,15,15,16,15,16,15,16,16,15,15,16,15,17,
16,16,16,17,17,13,14,14,15,16,14,15,15,16,16,14,
14,14,16,16,16,16,16,17,17,15,15,15,17,15,11,12,
12,14,14,12,13,13,14,15,12,13,13,15,14,14,14,14,
15,16,13,14,14,16,15,12,13,13,15,15,13,13,14,15,
16,13,14,14,15,15,14,15,15,16,17,14,15,15,17,16,
12,13,13,15,14,13,14,14,15,15,13,14,13,15,15,14,
15,15,16,16,14,15,14,17,15,14,15,15,16,16,14,15,
15,16,17,15,15,15,17,17,15,16,16,16,17,16,17,16,
17,17,13,15,14,16,15,14,15,15,16,16,14,15,14,16,
15,16,16,16,17,17,15,16,15,17,15,10,12,12,14,14,
13,13,14,14,15,13,14,13,15,14,14,15,15,15,17,14,
15,15,16,15,12,13,13,15,14,12,12,14,14,15,14,15,
14,16,15,15,14,16,15,17,15,16,16,17,16,12,13,13,
14,15,14,14,15,15,16,12,14,12,15,14,15,16,16,16,
17,15,16,14,17,14,14,15,14,16,16,14,14,15,15,16,
15,16,16,17,16,15,14,16,14,17,16,17,17,18,17,14,
14,15,15,16,15,15,16,16,17,14,15,14,16,15,16,17,
17,17,18,15,16,14,17,14,11,13,13,15,14,13,13,14,
15,15,12,14,13,15,15,14,15,15,15,17,14,15,14,16,
15,13,14,14,15,15,13,14,15,15,16,14,15,14,16,16,
15,15,16,16,17,15,16,16,17,17,13,14,13,15,15,14,
14,14,16,16,13,15,14,16,15,15,16,16,17,17,15,16,
14,17,15,15,15,15,16,17,15,15,16,16,17,15,16,16,
17,17,16,15,17,16,17,17,17,17,18,18,14,15,15,17,
15,15,16,16,17,16,15,16,15,17,15,16,17,17,17,17,
16,17,15,18,15,
};
 
static const static_codebook _44p7_p5_0 = {
5, 3125,
(char *)_vq_lengthlist__44p7_p5_0,
1, -528744448, 1616642048, 3, 0,
(long *)_vq_quantlist__44p7_p5_0,
0
};
 
static const long _vq_quantlist__44p7_p5_1[] = {
3,
2,
4,
1,
5,
0,
6,
};
 
static const char _vq_lengthlist__44p7_p5_1[] = {
2, 3, 3, 3, 3, 3, 3,
};
 
static const static_codebook _44p7_p5_1 = {
1, 7,
(char *)_vq_lengthlist__44p7_p5_1,
1, -533200896, 1611661312, 3, 0,
(long *)_vq_quantlist__44p7_p5_1,
0
};
 
static const long _vq_quantlist__44p7_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p7_p6_0[] = {
2, 5, 6, 5, 7, 8, 5, 8, 7, 5, 7, 7, 7, 7, 9, 8,
9, 9, 5, 7, 7, 8, 9, 9, 7, 9, 7, 6, 8, 8, 8, 9,
10, 8, 9, 9, 8, 9,10, 9, 9,11,10,10,11, 8,10, 9,
10,10,11, 9,10,10, 6, 8, 8, 8, 9, 9, 8,10, 9, 8,
9,10, 9,10,10,10,11,10, 8,10, 9,10,11,10, 9,11,
9, 6, 8, 8, 7, 9, 9, 8, 9, 9, 7, 9, 9, 9, 9,10,
9,10,10, 8, 9, 9, 9,10,10, 9,10, 9, 7, 9, 9, 9,
10,10, 9,10,10, 9, 9,10,10, 9,11,10,11,11, 9,10,
10,10,11,11,10,11,10, 6, 9, 8, 9,10,10, 9,10, 9,
8,10,10, 9, 9,10,10,11,11, 9,10,10,10,11,11, 9,
11, 9, 6, 8, 8, 8, 9, 9, 7, 9, 9, 8, 9, 9, 9, 9,
10, 9,10,10, 7, 9, 9, 9,10,10, 9,10, 9, 6, 8, 9,
9, 9,10, 9,10,10, 9,10,10, 9, 9,11,10,11,11, 8,
10,10,10,11,11, 9,10, 9, 7, 9, 9, 9,10,10, 9,10,
10, 9,10,10,10,10,11,10,11,11, 9,10, 9,10,11,11,
10,11, 9,
};
 
static const static_codebook _44p7_p6_0 = {
5, 243,
(char *)_vq_lengthlist__44p7_p6_0,
1, -527106048, 1620377600, 2, 0,
(long *)_vq_quantlist__44p7_p6_0,
0
};
 
static const long _vq_quantlist__44p7_p6_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p7_p6_1[] = {
4, 7, 7, 6, 7, 8, 6, 8, 7, 7, 7, 8, 7, 7, 8, 8,
8, 8, 7, 7, 7, 8, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8,
8, 9, 9, 8, 9, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9,
8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9, 8, 7, 8, 8, 8,
8, 9, 8, 9, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8,
8, 9, 9, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8,
9, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9, 8, 7, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8,
8, 8, 8, 9, 9, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8, 9, 9, 9,
8, 9, 8,
};
 
static const static_codebook _44p7_p6_1 = {
5, 243,
(char *)_vq_lengthlist__44p7_p6_1,
1, -530841600, 1616642048, 2, 0,
(long *)_vq_quantlist__44p7_p6_1,
0
};
 
static const long _vq_quantlist__44p7_p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p7_p7_0[] = {
1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,
};
 
static const static_codebook _44p7_p7_0 = {
5, 243,
(char *)_vq_lengthlist__44p7_p7_0,
1, -513979392, 1633504256, 2, 0,
(long *)_vq_quantlist__44p7_p7_0,
0
};
 
static const long _vq_quantlist__44p7_p7_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p7_p7_1[] = {
1, 5, 5, 4,10,10, 5,10,10, 5,10,10,10,10,10,10,
10,10, 5,10,10,10,10,10, 9,10,10, 6,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10, 7,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10, 6,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10, 6,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,11,11,
};
 
static const static_codebook _44p7_p7_1 = {
5, 243,
(char *)_vq_lengthlist__44p7_p7_1,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44p7_p7_1,
0
};
 
static const long _vq_quantlist__44p7_p7_2[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p7_p7_2[] = {
1, 3, 2, 4, 5, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
12,13,13,14,14,15,15,15,15,
};
 
static const static_codebook _44p7_p7_2 = {
1, 25,
(char *)_vq_lengthlist__44p7_p7_2,
1, -518864896, 1620639744, 5, 0,
(long *)_vq_quantlist__44p7_p7_2,
0
};
 
static const long _vq_quantlist__44p7_p7_3[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p7_p7_3[] = {
4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44p7_p7_3 = {
1, 25,
(char *)_vq_lengthlist__44p7_p7_3,
1, -529006592, 1611661312, 5, 0,
(long *)_vq_quantlist__44p7_p7_3,
0
};
 
static const char _huff_lengthlist__44p7_short[] = {
3, 9,14,16,17,19,22,22, 5, 4, 6, 9,11,13,17,20,
9, 5, 5, 6, 9,11,15,19,11, 7, 5, 5, 7, 9,13,17,
14, 9, 7, 6, 6, 7,11,14,16,11, 9, 7, 6, 4, 4, 8,
19,15,13,11, 9, 4, 3, 4,21,16,16,15,12, 6, 4, 4,
};
 
static const static_codebook _huff_book__44p7_short = {
2, 64,
(char *)_huff_lengthlist__44p7_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p8_l0_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44p8_l0_0[] = {
2, 4, 4, 7, 7, 8, 8,10,10,11,11,12,12, 4, 5, 5,
7, 7, 9, 9,10, 9,12,10,12,12, 4, 5, 5, 7, 7, 9,
9, 9,10,10,12,12,12, 7, 7, 7, 7, 8, 9, 8,11, 5,
12, 6,12,10, 7, 7, 7, 8, 7, 8, 9, 5,11, 6,12,10,
12, 8, 9, 9, 9, 9, 9, 9,11, 7,11, 7,11, 9, 8, 9,
9, 9, 9, 9, 9, 7,10, 7,11, 9,11,10,10,10,10,10,
10,10,11,10,11, 8,12, 9,10,10,10,10,10,10,10,10,
11, 8,11, 9,12,10,11,11,11,11,11,11,11,11,12,10,
12,11,10,11,11,11,11,11,11,11,11,10,12,11,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,
12,12,12,12,12,12,11,12,12,
};
 
static const static_codebook _44p8_l0_0 = {
2, 169,
(char *)_vq_lengthlist__44p8_l0_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44p8_l0_0,
0
};
 
static const long _vq_quantlist__44p8_l0_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p8_l0_1[] = {
4, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44p8_l0_1 = {
2, 25,
(char *)_vq_lengthlist__44p8_l0_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p8_l0_1,
0
};
 
static const long _vq_quantlist__44p8_l1_0[] = {
54,
29,
79,
0,
108,
};
 
static const char _vq_lengthlist__44p8_l1_0[] = {
1, 2, 3, 6, 7, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _44p8_l1_0 = {
2, 25,
(char *)_vq_lengthlist__44p8_l1_0,
1, -514516992, 1620639744, 7, 0,
(long *)_vq_quantlist__44p8_l1_0,
0
};
 
static const char _huff_lengthlist__44p8_lfe[] = {
2, 3, 1, 3,
};
 
static const static_codebook _huff_book__44p8_lfe = {
2, 4,
(char *)_huff_lengthlist__44p8_lfe,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44p8_long[] = {
2, 7,14,16,17,18,20,21, 7, 4, 6, 8,11,12,14,16,
13, 5, 4, 4, 8, 9,11,13,15, 8, 4, 3, 5, 7, 9,10,
17,11, 8, 4, 4, 6, 9, 9,17,11, 9, 7, 6, 5, 7, 8,
19,13,11, 9, 9, 7, 8, 8,21,15,13,11,10, 8, 8, 7,
};
 
static const static_codebook _huff_book__44p8_long = {
2, 64,
(char *)_huff_lengthlist__44p8_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p8_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p8_p1_0[] = {
2, 5, 5, 4, 7, 7, 4, 7, 7, 5, 7, 7, 7, 8, 9, 7,
9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 6, 7, 8, 8, 9,
10, 8, 9,10, 8, 9,10,10,10,12,10,11,12, 8,10,10,
10,11,12,10,11,11, 6, 8, 7, 8,10, 9, 8,10, 9, 8,
10,10,10,11,11,10,12,11, 8,10, 9,10,12,11,10,12,
10, 5, 8, 8, 8,10,10, 8,10,10, 7, 9,10, 9,10,11,
9,11,11, 8,10,10,10,12,12,10,12,11, 7, 9, 9, 9,
10,11, 9,11,11, 9, 9,11,10,11,12,10,11,12, 9,11,
11,11,12,12,11,12,12, 7, 9, 9,10,11,11,10,12,11,
9,11,10,11,11,12,11,13,12,10,11,11,12,13,13,11,
13,11, 5, 8, 8, 8,10,10, 8,10,10, 8,10,10,10,11,
12,10,12,11, 7,10, 9, 9,11,11, 9,11,10, 7, 9, 9,
10,11,12,10,11,11,10,11,11,11,11,13,12,13,13, 9,
10,11,12,12,13,11,12,11, 7, 9, 9, 9,11,11, 9,11,
10, 9,11,11,11,12,12,11,12,12, 9,11, 9,10,12,11,
10,12,11,
};
 
static const static_codebook _44p8_p1_0 = {
5, 243,
(char *)_vq_lengthlist__44p8_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p8_p1_0,
0
};
 
static const long _vq_quantlist__44p8_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p8_p2_0[] = {
4, 6, 6, 9, 9, 6, 8, 8,10,10, 6, 8, 8,10,10, 8,
9,10,12,12, 8,10, 9,12,12, 6, 8, 8,10,10, 8, 8,
9,10,11, 8, 9, 9,11,11, 9,10,11,12,13,10,11,11,
13,13, 6, 8, 8,10,10, 8, 9, 9,11,11, 8, 9, 8,11,
10,10,11,11,13,13, 9,11,10,13,12, 9,10,10,12,12,
10,10,11,12,13,10,11,11,13,13,12,12,13,12,15,12,
13,13,15,14, 9,10,10,12,12,10,11,11,13,13,10,11,
10,13,12,12,13,13,14,15,12,13,12,15,12, 7, 8, 8,
10,11, 8, 9,10,11,12, 8, 9, 9,11,11,10,11,11,13,
14,10,11,11,13,13, 8, 9, 9,11,12, 9,10,11,11,13,
9,10,10,12,12,11,11,12,13,15,11,12,12,14,14, 8,
9, 9,11,11, 9,10,11,12,13, 9,10,10,12,12,11,12,
12,14,15,11,12,12,14,14,10,11,12,13,13,11,12,12,
13,14,12,12,12,14,14,13,13,14,14,16,14,14,14,16,
15,10,11,11,13,13,12,12,12,14,14,11,12,12,14,13,
14,14,14,15,16,13,14,13,16,14, 7, 8, 8,11,10, 8,
9, 9,11,11, 8,10, 9,12,11,10,11,11,13,13,10,11,
11,14,13, 8, 9, 9,12,11, 9,10,10,12,12, 9,11,10,
13,12,11,12,12,13,14,11,12,12,15,14, 8, 9, 9,12,
11, 9,10,10,12,12, 9,11,10,13,11,11,12,12,14,14,
11,12,12,14,13,10,11,11,13,13,11,12,12,13,14,12,
13,12,14,14,13,13,14,14,16,13,14,14,16,15,10,11,
11,13,13,12,12,12,14,14,11,12,12,14,13,13,14,14,
15,15,13,14,13,16,14, 9,10,11,12,13,11,11,12,12,
14,11,11,12,13,14,13,13,14,14,16,13,13,14,15,15,
11,11,12,12,14,12,12,13,13,15,12,12,13,13,15,14,
14,15,15,16,14,14,14,15,16,11,12,12,13,14,12,12,
13,14,15,12,13,12,14,14,14,14,15,15,16,14,14,14,
16,16,13,13,14,15,16,14,14,15,15,16,14,15,15,16,
16,15,15,16,16,18,16,16,16,17,17,13,14,14,15,15,
14,14,15,16,16,14,15,14,16,16,16,16,16,17,18,15,
16,16,17,16, 9,11,10,13,12,11,12,11,14,13,11,12,
11,14,12,13,14,13,15,14,13,14,13,16,14,11,12,12,
14,13,12,12,13,14,14,12,13,12,15,14,14,14,14,16,
16,14,15,14,17,15,11,12,11,14,12,12,13,12,15,13,
12,13,12,15,13,14,14,14,16,15,14,15,14,16,15,13,
14,14,15,15,14,14,15,16,16,14,15,14,16,16,15,15,
16,16,17,16,16,16,17,17,13,14,14,16,15,14,15,15,
16,16,14,15,14,17,15,16,16,16,17,17,15,16,15,18,
16, 7, 8, 8,10,11, 8, 9, 9,11,12, 8, 9, 9,12,11,
10,11,11,13,14,10,11,11,14,13, 8, 9, 9,11,11, 9,
10,10,12,12, 9,10,10,12,12,11,12,12,13,14,11,12,
12,14,14, 8, 9, 9,12,11, 9,10,11,12,13, 9,11,10,
13,12,11,12,12,14,14,11,12,12,14,13,10,11,11,13,
13,11,12,12,13,14,11,12,12,14,14,13,13,14,14,16,
13,14,14,16,15,10,12,11,13,13,12,12,12,14,14,11,
12,12,14,13,14,14,14,15,16,13,14,14,16,14, 8, 9,
9,11,11, 9,10,10,12,12, 9,10,10,12,12,11,11,12,
13,14,11,12,12,14,14, 9, 9,10,11,12,10,10,11,12,
13,10,10,11,12,13,12,12,13,14,15,12,12,13,14,15,
9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,
13,13,15,15,12,13,13,15,14,11,11,12,13,14,12,12,
13,13,15,12,12,13,14,15,14,14,15,14,16,14,14,15,
15,16,11,12,12,14,14,12,13,13,15,15,12,13,13,15,
14,14,15,15,16,16,14,15,14,17,15, 8, 9, 9,11,11,
9,10,10,12,12, 9,11,10,13,12,11,12,12,14,14,11,
13,12,15,13, 9,10,10,12,12,10,10,11,12,13,10,12,
11,13,13,12,12,13,13,15,12,13,13,15,14, 9,10,10,
12,12,11,11,12,13,13,10,12,10,13,12,12,13,13,15,
15,12,13,13,15,13,11,12,12,14,14,12,12,13,14,14,
12,13,13,15,14,13,13,14,13,16,14,15,14,16,16,11,
12,12,14,14,13,13,13,15,15,12,13,12,15,14,14,15,
15,16,17,14,15,13,16,13,10,11,11,13,14,11,12,12,
13,15,11,12,12,14,14,13,14,14,15,16,13,14,14,16,
16,11,11,12,12,14,12,12,13,13,15,12,13,13,13,15,
14,14,15,14,17,14,14,15,15,16,11,12,12,14,14,12,
13,13,15,15,12,13,13,15,15,14,15,15,16,17,14,15,
15,16,16,13,14,14,14,16,14,14,15,14,17,14,15,15,
14,17,16,16,17,15,18,16,16,17,16,18,13,14,14,16,
16,14,15,15,17,16,14,15,15,17,16,16,17,17,18,18,
16,17,16,18,17,10,11,11,14,13,11,12,12,14,14,11,
13,12,15,14,14,14,14,16,15,14,15,14,16,15,11,12,
12,14,13,12,13,13,15,14,13,14,13,15,14,14,15,15,
16,16,14,15,15,17,15,11,12,12,14,14,13,13,13,15,
15,12,13,13,15,14,15,15,15,17,17,14,15,15,17,15,
13,14,14,16,15,14,15,15,16,16,15,15,15,17,16,16,
16,16,16,17,16,17,16,18,17,14,14,14,16,16,15,15,
15,16,16,14,15,14,17,16,16,17,17,17,18,16,17,16,
18,16, 7, 8, 8,11,11, 8, 9, 9,11,12, 8, 9, 9,12,
11,10,11,11,13,14,10,11,11,14,13, 8, 9, 9,11,12,
9,10,11,12,13, 9,11,10,13,12,11,12,12,13,14,11,
12,12,14,14, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
10,13,12,11,12,12,14,14,11,12,11,14,13,10,11,12,
13,13,11,12,12,13,14,12,13,12,14,14,13,13,14,14,
16,13,14,14,16,15,10,11,11,13,13,11,12,12,14,14,
11,12,12,14,13,13,14,14,15,16,13,14,13,16,14, 8,
9, 9,11,11, 9,10,11,12,13, 9,10,10,12,12,11,12,
13,13,14,11,12,12,14,14, 9,10,10,12,12,10,10,11,
12,13,11,12,11,13,13,12,12,13,13,15,12,13,13,15,
15, 9,10,10,12,12,10,11,12,13,14,10,11,10,13,12,
12,13,13,14,15,12,13,12,15,13,12,12,12,14,14,12,
12,13,14,15,13,13,13,15,15,14,14,15,13,16,14,15,
15,16,16,11,12,12,14,14,12,13,13,14,15,12,13,12,
14,14,14,14,15,16,16,13,14,13,16,14, 8, 9, 9,11,
11, 9,10,10,12,12, 9,10,10,12,12,11,12,12,14,14,
11,12,11,14,14, 9,10,10,12,12,10,11,11,13,13,10,
11,11,13,13,12,13,13,14,15,12,13,13,15,14, 9,10,
9,12,11,10,11,10,13,12,10,11,10,13,12,12,13,12,
15,14,12,13,12,15,14,11,12,12,14,14,12,13,13,14,
15,12,13,13,15,15,14,14,15,15,17,14,15,15,16,16,
11,12,11,14,13,12,13,12,15,14,12,13,12,15,13,14,
15,14,16,15,13,15,14,17,14,10,11,11,13,14,11,12,
13,13,15,11,12,12,14,14,14,14,15,15,17,13,14,14,
15,16,11,12,12,14,14,12,12,13,14,15,13,13,13,15,
15,14,15,15,15,17,15,15,15,16,16,11,12,12,13,14,
13,13,14,14,15,12,13,13,14,15,14,15,15,16,17,14,
15,15,16,16,14,14,14,16,16,14,14,15,15,17,15,15,
15,17,16,16,16,17,16,18,16,17,17,18,17,13,14,14,
15,16,14,15,15,16,17,14,15,15,16,16,16,17,17,17,
18,16,16,16,17,16,10,11,11,14,13,11,12,12,14,14,
11,12,12,15,13,13,14,14,16,15,13,14,14,16,15,11,
12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,
15,16,17,14,15,15,17,16,11,12,11,14,12,12,13,13,
15,13,12,13,12,15,13,14,15,15,16,15,14,15,14,17,
14,13,14,14,16,16,14,15,15,16,17,14,15,15,16,17,
16,16,17,17,18,16,17,17,18,18,13,14,14,16,13,14,
15,15,17,14,14,15,14,17,14,16,17,16,17,16,16,17,
16,18,15, 8,11,11,13,13,10,12,12,14,14,11,12,12,
14,14,13,13,14,15,16,13,14,14,16,15,10,11,11,14,
14,11,12,12,14,15,11,12,12,15,14,13,14,14,15,16,
13,14,14,16,16,11,12,12,14,14,12,13,13,15,15,12,
13,12,15,14,14,14,15,16,16,14,15,14,16,16,12,13,
13,15,15,12,13,14,15,16,13,14,14,16,16,14,15,15,
16,17,15,15,16,17,17,13,14,14,16,15,14,15,15,16,
16,14,15,14,16,16,16,16,16,17,17,15,16,16,18,16,
10,11,11,13,14,11,12,12,14,15,11,12,12,15,14,13,
14,14,16,16,13,14,14,16,16,11,11,12,14,14,12,12,
13,14,15,12,13,13,15,15,14,14,15,15,17,14,14,15,
16,16,11,12,12,15,14,12,13,13,15,15,12,13,13,15,
15,14,15,15,17,17,14,15,15,17,16,13,12,14,14,16,
13,13,15,14,17,14,13,15,15,17,15,14,16,15,18,16,
15,16,16,18,13,14,14,16,16,14,15,15,17,17,14,15,
15,17,16,16,17,17,18,18,16,17,16,18,17,10,11,11,
14,13,11,12,12,14,14,11,13,12,15,14,13,14,14,15,
16,13,14,14,16,16,11,12,12,14,14,12,13,13,14,15,
12,13,13,15,15,14,14,15,15,16,14,15,15,17,16,11,
12,12,14,14,13,13,13,15,15,12,13,13,15,14,14,15,
15,16,17,14,15,14,17,15,13,14,13,16,15,14,14,14,
15,16,14,15,14,16,16,15,15,16,16,17,16,16,16,18,
17,14,14,14,16,16,15,15,15,17,16,14,15,14,17,16,
16,16,17,17,18,16,17,16,18,16,11,13,13,15,15,12,
13,14,15,16,12,14,14,15,15,14,15,15,16,17,14,15,
15,17,17,12,13,14,14,16,13,14,14,14,16,14,14,14,
15,16,15,15,16,15,18,15,16,16,17,17,13,14,14,16,
16,14,14,15,16,16,14,15,14,16,16,15,16,16,17,18,
15,16,16,18,17,14,14,16,13,17,15,15,16,14,18,15,
15,16,14,18,16,16,18,15,19,17,17,18,16,18,15,16,
15,17,17,15,16,17,18,18,16,16,16,18,17,17,18,18,
19,19,17,18,17,19,18,11,12,12,15,14,13,13,14,15,
16,13,14,13,16,14,15,15,15,16,17,15,16,15,17,16,
12,13,13,15,14,13,13,14,15,15,14,15,14,16,15,15,
15,16,16,17,16,16,16,18,17,12,13,13,15,15,14,14,
15,16,16,13,14,13,16,15,16,16,16,17,18,15,16,15,
17,16,14,15,14,17,15,14,15,15,16,16,15,16,15,17,
16,16,15,16,15,17,17,18,17,18,17,15,15,15,16,17,
16,16,16,17,17,15,16,15,17,16,17,18,18,18,18,16,
17,16,18,15, 8,11,11,13,13,11,12,12,14,14,10,12,
12,14,14,13,14,14,15,16,13,14,13,16,15,11,12,12,
14,14,12,12,13,14,15,12,13,13,15,15,14,14,15,15,
16,14,14,14,16,16,10,11,11,14,14,11,12,12,14,15,
11,12,12,15,14,13,14,14,16,16,13,14,14,16,15,13,
14,14,15,16,14,14,15,16,16,14,15,15,16,16,15,16,
16,16,18,16,16,16,17,17,12,13,13,15,15,13,14,14,
16,16,12,14,13,16,15,15,16,15,17,17,14,16,15,17,
16,10,11,11,13,14,11,12,13,14,15,11,13,12,14,14,
14,14,15,16,16,13,14,14,16,16,11,12,12,14,14,12,
13,13,14,15,13,14,13,15,15,14,15,15,16,17,14,15,
15,17,16,11,12,12,14,14,12,13,13,15,15,12,13,12,
15,14,14,15,15,16,17,14,15,15,16,16,14,14,14,16,
16,14,14,15,16,16,15,15,15,16,16,16,16,17,16,18,
16,17,17,18,18,13,13,14,15,16,14,14,15,16,17,13,
14,14,16,16,16,16,17,17,18,15,16,15,17,16,10,11,
11,14,13,11,12,12,14,14,11,12,12,15,14,13,14,14,
16,16,13,14,14,16,16,11,12,12,14,14,12,13,13,15,
15,12,13,13,15,15,14,15,15,16,17,14,15,15,17,16,
11,12,11,14,14,12,13,13,15,15,12,13,12,15,14,14,
15,14,16,16,14,15,14,17,16,14,14,14,16,16,14,15,
15,16,17,14,15,15,17,17,16,16,17,17,18,16,17,17,
18,18,13,14,12,16,14,14,15,13,17,15,13,15,13,17,
14,16,16,15,18,16,15,17,14,18,15,11,12,12,14,15,
13,13,14,14,16,13,14,13,15,14,15,15,16,16,17,15,
16,15,17,16,12,13,13,15,15,13,13,14,15,16,14,15,
14,16,16,15,15,16,15,18,16,16,16,18,17,12,13,13,
15,15,14,14,15,15,16,13,14,13,15,15,16,16,16,16,
18,15,16,15,17,16,15,15,15,17,16,15,15,16,16,17,
16,16,16,18,17,16,16,17,15,18,17,18,17,19,18,14,
14,15,15,17,15,15,16,16,17,14,15,15,16,16,17,17,
18,17,19,16,17,15,17,15,11,13,12,15,15,12,14,14,
15,15,12,14,13,16,15,15,15,15,17,17,14,15,15,17,
16,12,14,14,16,16,14,14,15,16,16,14,14,14,16,16,
15,16,17,17,18,15,16,16,18,17,12,14,13,16,14,13,
14,14,16,15,13,15,14,16,14,15,16,16,17,17,15,16,
15,18,15,15,15,16,17,17,15,16,16,17,18,16,16,16,
18,18,17,17,18,18,19,17,17,18,19,19,14,15,14,17,
13,15,16,15,18,14,15,16,15,18,14,17,18,17,18,16,
16,18,16,19,15,
};
 
static const static_codebook _44p8_p2_0 = {
5, 3125,
(char *)_vq_lengthlist__44p8_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p8_p2_0,
0
};
 
static const long _vq_quantlist__44p8_p3_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p8_p3_0[] = {
2, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 8, 9, 7,
9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 5, 7, 8, 7, 9,
10, 8, 9, 9, 8, 9,10, 9,10,12,10,11,11, 8,10, 9,
10,11,12, 9,11,10, 5, 8, 7, 8,10, 9, 7,10, 9, 8,
9,10, 9,10,11,10,12,11, 8,10, 9,10,11,11, 9,12,
10, 5, 8, 8, 7, 9,10, 8,10, 9, 7, 9,10, 9,10,11,
9,11,11, 8,10, 9,10,11,11,10,12,10, 7, 9,10, 9,
10,12, 9,11,11, 9, 9,12,11,10,13,11,11,13,10,12,
11,11,13,13,11,13,12, 7, 9, 9, 9,11,11, 9,12,11,
9,11,10,10,11,12,11,13,12, 9,11,11,12,13,13,11,
13,11, 5, 8, 8, 8, 9,10, 7,10, 9, 8, 9,10,10,10,
12,10,11,11, 7,10, 9, 9,11,11, 9,11,10, 7, 9, 9,
9,11,12, 9,11,11, 9,11,11,11,11,13,12,13,13, 9,
10,11,11,12,13,10,12,11, 7,10, 9, 9,11,11, 9,12,
10,10,11,12,11,12,13,12,13,13, 9,12, 9,11,13,11,
10,13,10,
};
 
static const static_codebook _44p8_p3_0 = {
5, 243,
(char *)_vq_lengthlist__44p8_p3_0,
1, -533200896, 1614282752, 2, 0,
(long *)_vq_quantlist__44p8_p3_0,
0
};
 
static const long _vq_quantlist__44p8_p3_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p8_p3_1[] = {
6, 7, 7, 7, 7, 8, 7, 8, 7, 7, 7, 8, 7, 8, 8, 8,
8, 8, 7, 8, 7, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 8,
8, 8, 9, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 9, 9, 8,
9, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8,
8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8, 8, 9, 8,
8, 9, 8,
};
 
static const static_codebook _44p8_p3_1 = {
5, 243,
(char *)_vq_lengthlist__44p8_p3_1,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p8_p3_1,
0
};
 
static const long _vq_quantlist__44p8_p4_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p8_p4_0[] = {
2, 5, 5, 4, 7, 8, 4, 8, 7, 5, 7, 8, 7, 7,10, 8,
9, 9, 5, 7, 7, 8, 9, 9, 7,10, 7, 5, 7, 8, 8, 9,
11, 8,10,10, 8, 9,10,10,10,12,11,12,12, 8,10,10,
10,12,12,10,12,11, 5, 8, 7, 8,10,10, 8,11, 9, 8,
10,10,10,11,12,10,12,12, 8,10, 9,11,12,12,10,12,
10, 5, 8, 8, 7,10,10, 8,11,10, 7, 9,10, 9,10,12,
10,12,12, 8,10,10,10,12,12,10,12,11, 7, 9,10, 9,
11,12,10,12,11, 9, 9,12,10,10,13,12,12,13,10,12,
11,12,13,13,11,13,11, 7,10, 9,10,11,12,10,13,11,
9,11,11,11,11,13,12,14,13,10,11,11,12,14,14,11,
14,11, 5, 8, 8, 8,10,11, 7,10,10, 8,10,10,10,11,
12,10,12,12, 7,10, 9,10,12,12, 9,12,10, 7, 9,10,
10,11,13,10,12,11,10,11,11,11,11,14,12,14,14, 9,
11,11,12,13,14,11,13,11, 7,10, 9,10,11,12, 9,12,
10,10,11,12,11,11,13,12,13,13, 9,12, 9,12,13,12,
10,13,10,
};
 
static const static_codebook _44p8_p4_0 = {
5, 243,
(char *)_vq_lengthlist__44p8_p4_0,
1, -531365888, 1616117760, 2, 0,
(long *)_vq_quantlist__44p8_p4_0,
0
};
 
static const long _vq_quantlist__44p8_p4_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p8_p4_1[] = {
7, 9, 9,10,10, 9,10,10,10,11, 9,10,10,11,10, 9,
10,10,11,11, 9,10,10,11,11, 9,10,10,11,11,10,10,
10,11,11,10,10,10,11,11,10,11,11,11,11,10,11,11,
11,11, 9,10,10,11,11,10,10,10,11,11, 9,10,10,11,
11,10,11,11,11,11,10,11,11,11,11,10,11,11,11,11,
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,12,10,11,11,11,11,11,11,11,11,11,10,11,
11,11,11,11,11,11,11,11,11,11,11,11,11, 9,10,10,
11,11,10,10,11,11,11,10,10,11,11,11,10,11,11,11,
12,10,11,11,12,12,10,10,11,11,11,10,11,11,11,12,
11,11,11,12,12,11,11,12,12,12,11,11,12,12,12,10,
11,11,11,11,11,11,11,12,12,10,11,11,12,12,11,12,
11,12,12,11,12,11,12,12,11,11,11,11,12,11,11,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,11,11,11,12,12,11,12,12,12,12,11,12,11,12,12,
12,12,12,12,12,12,12,12,12,12, 9,10,10,11,11,10,
11,10,11,11,10,11,10,11,11,10,11,11,12,12,10,11,
11,12,11,10,11,11,11,11,10,11,11,11,12,11,11,11,
12,12,11,11,12,12,12,11,11,11,12,12,10,11,10,11,
11,11,11,11,12,12,10,11,11,12,11,11,12,11,12,12,
11,12,11,12,12,11,11,11,12,12,11,11,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,
11,12,11,11,12,12,12,12,11,12,11,12,12,12,12,12,
12,12,12,12,12,12,12,10,11,11,11,11,11,11,11,12,
12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,
11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,
12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,13,12,13,12,12,12,12,13,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,13,12,10,11,11,11,11,11,11,11,12,12,11,11,
11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,
12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,
11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,13,12,12,13,12,13,
12, 9,10,10,11,11,10,10,11,11,11,10,11,10,11,11,
10,11,11,12,12,10,11,11,12,12,10,10,11,11,11,10,
11,11,11,12,10,11,11,12,12,11,11,12,12,12,11,11,
11,12,12,10,11,10,11,11,11,11,11,12,12,10,11,11,
12,11,11,12,11,12,12,11,12,11,12,12,11,11,11,11,
12,11,11,12,12,12,11,12,12,12,12,11,12,12,12,12,
11,12,12,12,12,11,11,11,12,11,11,12,12,12,12,11,
12,11,12,12,12,12,12,12,12,12,12,12,12,12,10,10,
11,11,11,10,11,11,12,12,10,11,11,12,12,11,11,11,
12,12,11,11,12,12,12,10,11,11,11,12,11,11,12,12,
12,11,11,12,12,12,11,11,12,12,12,11,12,12,12,12,
11,11,11,12,12,11,12,12,12,12,11,12,11,12,12,11,
12,12,12,12,11,12,12,12,12,11,11,12,12,12,11,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12, 9,10,10,11,11,
10,11,11,11,12,10,11,11,12,11,11,12,11,12,12,11,
12,11,12,12,10,11,11,12,11,11,11,11,12,12,11,12,
11,12,12,11,12,12,12,12,11,12,12,12,12,10,11,11,
12,12,11,12,11,12,12,11,12,11,12,12,12,12,12,12,
12,11,12,12,12,12,11,12,11,12,12,11,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,13,12,12,12,12,12,11,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,
12,13,13,12,12,12,12,12,12,12,12,12,13,12,12,12,
12,13,12,12,13,12,13,12,13,13,13,13,12,12,12,12,
12,12,12,12,13,12,12,12,12,13,12,12,13,13,13,13,
12,13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,
12,12,12,12,13,12,12,12,12,13,13,12,12,12,13,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,
13,13,12,13,12,13,13,13,13,12,12,12,12,12,12,12,
12,13,12,12,12,12,13,12,12,13,13,13,13,12,13,13,
13,13, 9,10,10,11,11,10,10,11,11,11,10,11,10,11,
11,10,11,11,12,12,10,11,11,12,12,10,11,11,11,11,
10,11,11,12,12,11,11,11,12,12,11,11,12,12,12,11,
11,12,12,12,10,11,10,11,11,10,11,11,12,12,10,11,
11,12,11,11,12,11,12,12,11,11,11,12,12,11,11,11,
11,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,11,11,11,12,11,11,12,12,12,12,
11,12,11,12,12,12,12,12,12,12,11,12,12,12,12, 9,
10,10,11,11,10,11,11,11,12,10,11,11,12,11,11,11,
12,12,12,11,11,12,12,12,10,11,11,12,12,11,11,12,
12,12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,
12,10,11,11,12,12,11,11,11,12,12,11,11,11,12,12,
11,12,12,12,12,11,12,12,12,12,11,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,11,11,12,12,12,12,12,12,12,12,11,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,10,11,10,11,
11,10,11,11,12,12,10,11,11,12,12,11,11,11,12,12,
11,12,11,12,12,11,11,11,12,12,11,11,12,12,12,11,
11,12,12,12,11,12,12,12,12,11,12,12,12,12,10,11,
11,12,11,11,12,11,12,12,11,12,11,12,12,11,12,12,
12,12,11,12,11,12,12,11,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,11,
12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,12,
12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,
12,12,12,12,12,12,12,12,12,12,12,13,12,13,12,12,
12,13,13,12,13,13,12,13,12,13,13,13,13,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,
13,12,13,12,13,12,11,11,11,12,12,11,12,12,12,12,
11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,13,13,12,12,12,13,13,11,12,11,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,
12,12,12,12,12,12,12,12,12,13,13,12,12,12,12,13,
12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,
12,12,13,12,12,12,12,13,12,12,13,13,13,13,12,13,
13,13,12,10,11,11,12,12,11,11,11,12,12,11,11,11,
12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,
12,11,11,12,12,12,11,12,12,12,12,11,12,12,12,12,
12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,
12,11,12,12,12,12,12,12,12,12,12,12,12,12,11,12,
12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
12,13,12,12,12,12,12,11,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,
11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,
12,12,12,12,11,12,12,12,12,11,11,12,12,12,11,12,
12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,
13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,13,13,12,12,12,13,13,12,12,12,12,12,
12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,12,
12,13,13,13,12,12,12,12,12,12,12,12,12,13,12,12,
12,13,12,12,13,13,13,13,12,13,13,13,13,10,11,11,
12,12,11,12,12,12,12,11,12,12,12,12,11,12,12,12,
12,12,12,12,12,12,11,11,12,12,12,11,12,12,12,12,
12,12,12,12,12,12,12,12,12,13,12,12,12,13,13,11,
12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,
12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,13,12,12,12,12,12,13,12,13,12,13,
13,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,
12,13,12,13,13,12,13,12,13,12,11,11,11,12,12,11,
12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,13,12,13,12,12,13,13,13,11,12,12,12,
12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,13,
12,12,12,13,12,12,12,12,12,12,12,12,13,12,13,12,
12,12,12,13,12,12,13,12,13,12,13,13,12,13,12,12,
12,12,12,12,13,13,13,12,12,12,12,13,12,12,13,13,
13,13,12,13,13,13,12,11,11,11,12,12,11,12,12,12,
12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,13,12,12,13,13,13,11,12,12,12,12,12,12,
12,12,13,12,12,12,13,12,12,13,12,13,13,12,13,12,
13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,13,12,13,12,13,13,13,12,12,12,12,12,12,
12,13,12,13,12,12,12,12,13,12,12,13,13,13,12,12,
13,12,13,12,10,11,11,12,12,11,11,11,12,12,11,11,
11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,
12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,
11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,13,12,12,12,12,12,11,12,12,12,12,12,12,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,10,11,11,12,12,11,11,12,12,12,11,12,12,12,12,
11,12,12,12,12,12,12,12,12,12,11,11,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,
12,13,13,11,11,11,12,12,12,12,12,12,12,11,12,12,
12,12,12,12,12,13,13,12,12,12,13,13,12,12,12,12,
12,12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,
12,12,13,13,13,12,12,12,12,12,12,12,12,12,13,12,
12,12,12,12,12,12,13,13,13,12,12,12,13,12,11,11,
11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,
12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,
11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,
12,12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,
12,12,13,12,12,12,13,13,12,13,13,13,13,12,13,13,
13,13,12,12,12,12,12,12,12,12,13,12,12,12,12,13,
12,12,13,12,13,13,12,13,12,13,12,11,11,11,12,12,
11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,11,12,12,12,12,12,12,12,12,13,12,12,
12,13,13,12,12,13,12,13,12,12,13,13,13,11,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,
13,12,12,12,13,12,12,12,12,12,12,12,12,12,12,13,
12,12,12,13,13,12,12,13,12,13,12,13,13,13,13,12,
12,12,12,12,12,12,13,12,13,12,12,12,12,12,12,13,
13,12,12,12,13,12,12,12,11,11,11,12,12,11,12,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,11,12,12,12,12,12,12,12,12,13,12,12,12,12,13,
12,12,13,13,13,12,12,12,13,13,11,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,13,12,13,13,12,13,
12,13,12,12,12,12,12,12,12,12,12,12,13,12,13,12,
13,13,12,13,13,12,13,12,13,13,13,13,12,12,12,12,
12,12,12,12,13,12,12,13,12,13,12,12,13,12,13,12,
12,13,12,13,12,
};
 
static const static_codebook _44p8_p4_1 = {
5, 3125,
(char *)_vq_lengthlist__44p8_p4_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p8_p4_1,
0
};
 
static const long _vq_quantlist__44p8_p5_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p8_p5_0[] = {
2, 6, 6, 9, 9, 5, 7, 8,10,11, 5, 8, 7,11,10, 8,
10,11,12,13, 8,11,10,13,12, 6, 7, 8,10,11, 7, 8,
10,10,12, 8, 9, 9,12,12,10,10,12,12,14,10,12,12,
14,13, 6, 8, 7,11,10, 8, 9, 9,12,12, 7,10, 8,12,
11,10,12,12,13,14,10,12,10,14,12, 9,10,11,11,13,
10,10,11,11,13,11,12,12,13,14,12,12,13,11,15,13,
14,14,15,14, 9,11,10,13,11,11,12,12,13,13,10,11,
10,13,11,13,14,14,15,15,12,13,12,15,11, 6, 8, 9,
11,12, 8, 9,11,12,13, 8,10,10,13,13,11,12,13,14,
15,11,12,13,14,14, 9, 9,10,12,13,10,10,12,12,14,
10,11,11,13,14,12,12,14,14,15,13,13,14,15,15, 9,
10,10,13,13,10,11,11,13,14,10,11,10,14,13,13,13,
14,15,15,12,14,13,15,14,12,12,13,13,14,12,13,14,
13,15,13,14,14,15,15,14,14,15,14,16,15,15,15,16,
16,12,13,13,14,14,13,14,14,15,15,12,14,13,15,14,
14,15,15,16,16,14,15,14,16,14, 6, 9, 8,12,11, 8,
10,10,13,13, 8,11, 9,13,12,11,12,12,14,14,11,13,
12,15,14, 9,10,10,13,13,10,10,11,13,14,10,12,11,
14,13,12,13,14,14,15,13,13,13,15,14, 9,10, 9,13,
12,10,11,11,14,13,10,12,10,14,12,13,14,13,15,15,
12,14,12,15,14,12,13,13,14,14,13,13,13,14,15,13,
14,14,15,15,14,14,15,14,16,14,15,15,16,16,12,13,
12,14,13,13,14,14,15,15,12,14,13,15,13,15,15,15,
16,16,14,15,14,16,14,11,12,12,13,14,12,13,14,14,
16,12,13,13,15,15,14,14,16,15,17,14,15,15,16,16,
12,13,14,14,15,13,13,15,15,16,14,14,14,15,16,15,
15,16,16,17,15,15,16,16,17,13,13,13,15,15,14,14,
15,15,16,13,14,14,15,16,15,15,16,16,17,15,16,15,
17,16,14,15,15,16,16,15,15,16,16,17,15,16,16,17,
17,16,16,17,16,18,16,17,17,17,17,15,15,15,16,16,
15,16,16,17,17,15,16,16,17,16,16,17,17,18,18,16,
17,16,17,16,11,12,12,15,13,13,13,13,15,15,12,14,
13,16,14,14,15,15,16,16,14,15,14,17,15,13,13,13,
15,14,13,14,14,16,15,14,14,14,16,15,15,15,16,16,
17,15,16,15,17,16,12,14,13,15,14,14,14,14,16,15,
13,14,13,16,15,15,16,16,17,16,15,16,15,17,16,15,
15,15,16,16,15,15,16,16,17,15,16,16,17,17,16,16,
17,17,17,17,17,17,18,17,14,15,15,16,16,15,16,16,
17,16,15,16,15,17,16,17,17,17,18,17,16,17,16,18,
16, 6, 9, 9,12,12, 8,10,10,12,13, 8,10,10,13,12,
10,12,12,14,15,11,13,12,15,14, 8, 9,10,12,13, 9,
10,11,13,14,10,11,11,14,13,12,12,13,14,15,12,13,
13,15,15, 8,10,10,13,13,10,11,11,13,14,10,12,10,
14,13,12,13,13,15,15,12,14,13,15,14,11,12,12,13,
14,12,12,13,13,15,12,13,13,15,15,14,13,15,14,16,
14,15,15,16,16,12,13,13,14,14,13,13,14,15,14,12,
14,13,15,14,14,15,15,16,15,14,15,14,16,14, 7, 9,
10,12,12, 9,10,11,13,14, 9,11,10,13,13,11,12,13,
14,15,12,13,13,15,14, 9,10,11,12,13,10,10,12,13,
14,11,11,12,14,14,12,12,14,14,15,13,13,14,15,15,
9,11,11,13,13,11,12,12,14,14,10,12,10,14,13,13,
14,14,15,15,13,14,13,16,14,12,12,13,14,15,13,13,
14,14,16,13,14,14,15,15,14,14,15,14,17,14,15,15,
16,16,12,13,13,15,14,13,14,14,15,15,13,14,13,16,
14,15,15,15,16,16,14,15,14,16,14, 7,10, 9,13,12,
10,11,12,12,14,10,12,11,14,12,12,13,13,14,15,12,
14,13,15,14, 9,11,10,13,13,10,11,12,13,14,12,13,
12,15,13,13,13,14,13,15,13,14,14,16,15,10,11,11,
13,13,12,12,13,14,14,11,12,11,14,13,14,14,14,15,
16,13,14,13,16,13,12,13,13,14,14,12,13,13,14,15,
14,14,14,15,15,14,13,15,13,16,15,15,15,17,16,13,
13,13,14,14,14,14,14,15,15,12,13,13,15,14,15,16,
16,16,16,14,15,14,16,13,11,12,13,14,15,12,13,14,
15,16,13,14,14,15,15,14,14,15,15,17,14,15,15,16,
16,13,13,14,14,15,13,13,15,14,16,14,14,15,15,16,
15,14,16,15,17,15,16,16,16,17,13,14,14,15,15,14,
14,15,16,16,13,15,14,16,16,15,16,16,17,17,15,16,
15,17,16,14,15,15,15,17,15,15,16,15,17,15,16,16,
16,17,16,16,17,16,18,17,17,17,17,18,15,15,15,17,
16,15,16,16,17,17,15,16,16,17,16,16,17,17,18,18,
16,17,16,18,17,11,13,12,15,14,13,13,14,15,15,13,
14,13,16,14,15,15,15,16,16,15,16,15,17,16,13,14,
13,15,14,13,13,14,15,15,14,15,14,16,15,15,15,16,
16,16,15,16,15,18,16,13,14,14,15,15,14,15,15,15,
16,13,15,13,16,15,15,16,16,17,17,15,16,15,17,16,
15,15,15,16,16,15,15,15,16,17,16,16,16,17,16,16,
16,17,16,17,17,17,17,18,17,15,15,15,16,16,16,16,
16,17,17,15,16,15,17,16,17,17,17,18,18,16,17,16,
17,15, 6, 9, 9,12,12, 8,10,10,12,13, 8,10,10,13,
12,11,12,13,14,15,10,12,12,14,14, 9,10,10,13,13,
10,10,12,13,14,10,11,11,14,13,12,13,14,14,15,12,
13,13,15,15, 8,10, 9,13,12,10,11,11,13,14, 9,11,
10,14,13,12,13,13,15,15,12,13,12,15,14,12,13,13,
14,14,12,13,13,14,15,13,14,14,14,15,14,14,15,14,
16,14,15,15,16,16,11,12,12,14,13,13,13,13,15,15,
12,13,12,15,13,14,15,15,16,16,14,15,14,16,14, 7,
9,10,12,13,10,10,12,12,14,10,12,11,14,13,12,13,
14,14,15,12,13,13,15,14,10,11,11,13,13,11,11,12,
13,14,12,13,12,14,14,13,13,14,13,16,14,14,14,15,
15, 9,10,11,13,14,12,12,13,13,15,10,12,10,14,13,
13,14,14,15,16,13,14,13,15,13,13,14,13,14,15,12,
13,13,14,15,14,14,14,15,15,14,13,15,13,16,15,16,
16,16,16,12,13,13,14,14,14,14,14,15,15,12,13,13,
15,14,15,15,16,16,16,14,15,13,16,13, 7,10, 9,12,
12, 9,10,11,13,13, 9,11,10,14,13,12,13,13,14,15,
11,13,12,15,14, 9,11,11,13,13,10,10,12,13,14,11,
12,12,14,14,13,13,14,14,16,13,14,14,16,15, 9,11,
10,13,12,11,12,11,14,14,10,12,10,14,13,13,14,13,
15,15,12,14,12,16,14,12,13,13,14,15,13,13,14,14,
16,13,14,14,15,15,14,14,15,14,16,15,15,15,16,16,
12,13,12,15,14,13,14,14,15,15,12,14,13,16,14,14,
15,15,16,16,14,15,14,17,14,11,12,13,14,15,13,13,
14,14,16,13,14,13,15,15,15,15,16,16,17,15,15,15,
16,16,13,14,13,15,15,13,13,15,15,16,14,15,15,16,
16,15,15,16,15,17,16,16,16,17,17,13,13,14,14,15,
14,14,15,15,16,13,14,13,15,15,15,16,16,16,17,15,
16,15,16,16,15,15,15,16,16,15,15,16,16,17,16,16,
16,17,17,16,16,17,16,18,17,17,17,18,18,15,15,15,
16,16,16,16,16,17,17,15,15,15,16,16,17,17,17,17,
18,16,16,16,17,15,11,13,12,15,14,13,13,14,15,15,
12,14,13,16,14,14,15,15,16,16,14,15,14,16,15,13,
14,14,15,15,13,14,14,16,16,14,15,14,16,16,15,15,
16,17,17,15,16,16,17,17,13,14,13,15,14,14,14,14,
16,15,13,15,13,16,14,15,16,15,17,16,15,16,14,17,
15,14,16,15,16,17,15,16,16,16,17,15,16,16,17,17,
16,16,17,17,18,16,17,17,18,17,14,15,15,17,15,15,
16,16,17,16,15,16,15,17,15,16,17,17,18,17,16,17,
16,18,15,10,12,12,14,14,12,13,13,15,15,12,13,13,
15,15,13,14,14,15,16,14,15,14,16,16,12,13,13,15,
15,12,13,14,15,15,13,14,14,15,15,14,14,15,16,17,
14,15,15,17,16,12,13,13,15,15,13,14,14,15,16,13,
14,14,16,15,14,15,15,16,17,14,15,15,17,16,13,14,
14,15,16,14,14,15,15,16,14,15,15,16,16,15,15,16,
16,17,15,16,16,17,17,14,15,15,16,16,15,15,15,16,
16,15,15,15,16,16,16,17,16,17,17,16,16,16,18,16,
11,12,12,14,14,12,13,14,15,15,12,13,13,15,15,13,
14,15,16,16,14,15,15,16,16,12,13,13,15,15,13,13,
14,15,16,13,14,14,15,16,14,14,15,16,17,15,15,15,
16,17,12,13,13,15,15,13,14,14,15,16,13,14,14,16,
15,15,15,15,16,17,15,16,15,17,16,14,14,15,15,16,
14,14,15,15,17,15,15,16,16,17,15,15,16,15,18,16,
16,16,17,17,14,15,15,16,16,15,16,16,17,17,15,15,
15,17,16,16,17,16,17,17,16,16,16,18,16,11,12,12,
14,14,13,13,14,15,15,13,14,13,15,15,14,15,15,16,
16,14,15,15,16,16,12,13,13,15,15,13,13,14,15,15,
14,14,14,16,15,15,15,15,15,16,15,16,15,17,16,12,
13,13,15,15,14,14,15,15,16,13,14,13,16,15,15,15,
16,16,17,15,16,15,17,15,14,15,14,16,16,14,15,15,
16,16,15,16,15,17,16,15,15,16,15,17,16,17,16,17,
17,14,15,15,16,16,15,16,16,16,17,14,15,15,16,16,
16,17,17,17,18,16,16,16,17,16,12,13,13,15,15,13,
13,14,15,16,13,14,14,16,15,14,15,15,16,17,14,15,
15,17,16,13,14,14,15,16,14,14,15,15,17,14,15,15,
16,16,15,14,16,15,17,15,16,16,17,17,13,14,14,16,
16,14,15,15,16,16,14,15,14,16,16,15,16,16,17,17,
15,16,15,17,16,15,15,16,15,17,15,15,16,15,17,15,
16,16,16,17,16,15,17,15,18,17,17,17,17,17,15,15,
15,17,17,16,16,16,17,17,15,16,15,17,17,16,17,17,
18,18,16,17,15,18,15,11,12,12,15,15,13,13,15,14,
16,13,14,13,16,14,15,15,16,16,17,15,16,15,17,15,
12,14,13,16,14,13,13,14,14,16,14,15,14,16,15,15,
15,16,15,17,16,16,16,17,16,12,13,14,15,16,15,15,
15,15,16,13,15,13,16,14,16,16,16,17,17,15,16,15,
17,15,15,16,15,16,15,14,14,15,16,16,16,16,16,17,
16,15,15,16,15,17,17,17,17,18,17,15,15,15,16,16,
16,16,16,16,17,14,15,15,17,16,17,17,17,17,18,15,
16,15,18,14,10,12,12,14,14,12,13,13,15,15,12,13,
13,15,15,14,14,15,15,16,13,15,14,16,16,12,13,13,
15,15,13,14,14,15,16,13,14,14,15,15,14,15,15,16,
17,14,15,15,17,16,12,13,13,15,15,13,14,14,15,15,
12,14,13,15,15,14,15,15,16,17,14,15,14,17,15,14,
15,15,16,16,14,15,15,16,17,15,15,15,17,16,16,16,
16,16,17,16,16,16,17,17,13,14,14,16,15,14,15,15,
16,16,14,15,14,16,16,15,16,16,17,17,15,16,15,17,
16,11,12,12,14,15,13,13,14,14,15,13,14,13,15,15,
14,15,15,16,16,14,15,15,16,16,12,14,13,15,15,13,
13,14,15,16,14,15,14,16,15,15,15,16,15,17,15,16,
16,17,16,12,13,13,15,15,14,14,15,15,16,13,14,13,
16,15,15,15,16,16,17,15,15,15,16,16,14,15,15,16,
16,14,15,15,16,16,15,16,16,17,17,16,16,16,16,17,
16,17,17,18,17,14,14,15,15,16,15,15,16,16,17,14,
15,15,16,16,16,16,16,17,17,15,16,15,17,15,11,12,
12,14,14,12,13,14,15,15,12,13,13,15,15,14,15,15,
16,16,13,15,14,16,16,12,13,13,15,15,13,14,14,15,
16,13,14,14,16,16,15,15,15,16,17,15,15,15,17,16,
12,13,13,15,15,13,14,14,16,15,13,14,13,16,15,15,
16,15,17,17,14,15,14,17,16,14,15,15,16,16,15,15,
16,16,17,15,16,16,17,17,16,16,16,16,18,16,17,16,
18,17,14,15,14,16,15,15,15,15,17,16,14,15,14,17,
15,16,17,16,17,17,15,16,15,17,15,11,12,12,15,15,
13,13,15,14,16,13,15,13,16,14,15,15,16,15,17,15,
16,15,17,16,12,14,13,15,15,13,13,15,15,16,15,15,
15,16,15,15,15,16,15,17,16,16,16,17,16,12,13,14,
15,16,14,14,15,15,16,13,14,13,16,14,16,16,16,16,
17,15,16,15,17,15,15,16,15,16,16,14,15,15,16,16,
16,16,16,17,16,15,15,16,15,17,17,17,17,18,17,15,
15,15,15,16,16,16,16,16,17,14,15,14,16,15,17,17,
17,17,18,15,16,15,17,15,12,13,13,15,15,13,14,14,
15,16,13,14,14,16,15,14,15,15,16,17,14,15,15,17,
16,13,14,14,16,15,13,14,15,16,16,14,15,15,16,16,
15,15,16,16,17,15,16,16,17,17,13,14,13,16,15,14,
15,15,16,16,13,15,14,16,15,15,16,16,17,17,15,16,
14,17,15,15,15,16,17,17,15,15,16,16,17,16,16,16,
17,17,16,15,17,16,18,17,17,17,18,18,15,15,15,17,
14,16,16,16,17,16,15,16,15,17,15,16,17,17,18,17,
16,17,15,18,15,
};
 
static const static_codebook _44p8_p5_0 = {
5, 3125,
(char *)_vq_lengthlist__44p8_p5_0,
1, -528744448, 1616642048, 3, 0,
(long *)_vq_quantlist__44p8_p5_0,
0
};
 
static const long _vq_quantlist__44p8_p5_1[] = {
3,
2,
4,
1,
5,
0,
6,
};
 
static const char _vq_lengthlist__44p8_p5_1[] = {
2, 3, 3, 3, 3, 3, 3,
};
 
static const static_codebook _44p8_p5_1 = {
1, 7,
(char *)_vq_lengthlist__44p8_p5_1,
1, -533200896, 1611661312, 3, 0,
(long *)_vq_quantlist__44p8_p5_1,
0
};
 
static const long _vq_quantlist__44p8_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p8_p6_0[] = {
2, 6, 6, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 7, 9, 7,
9, 9, 6, 7, 7, 8, 9, 9, 7, 9, 7, 6, 8, 8, 8, 9,
10, 8, 9, 9, 8, 9,10, 9, 9,10,10,10,10, 8, 9, 9,
10,10,11, 9,10,10, 6, 8, 8, 8, 9, 9, 8,10, 9, 8,
9, 9, 9,10,10,10,11,10, 8,10, 9,10,11,10, 9,11,
9, 6, 8, 8, 7, 9, 9, 7, 9, 9, 7, 9, 9, 8, 9,10,
9,10,10, 8, 9, 9, 9,10,10, 9,10, 9, 7, 9, 9, 9,
9,10, 9,10,10, 9, 9,10,10, 9,11,10,11,11, 9,10,
10,10,11,11,10,11,10, 6, 9, 8, 9, 9,10, 9,10, 9,
8,10,10, 9, 9,10,10,11,11, 9,10,10,10,11,11, 9,
11, 9, 6, 8, 8, 7, 9, 9, 7, 9, 9, 8, 9, 9, 9, 9,
10, 9,10,10, 7, 9, 9, 9,10,10, 8,10, 9, 6, 8, 9,
9, 9,10, 9,10, 9, 9,10,10, 9, 9,11,10,11,11, 8,
9,10,10,11,11, 9,10, 9, 7, 9, 9, 9,10,10, 9,10,
9, 9,10,10,10,10,11,10,11,11, 9,10, 9,10,11,11,
10,11, 9,
};
 
static const static_codebook _44p8_p6_0 = {
5, 243,
(char *)_vq_lengthlist__44p8_p6_0,
1, -527106048, 1620377600, 2, 0,
(long *)_vq_quantlist__44p8_p6_0,
0
};
 
static const long _vq_quantlist__44p8_p6_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p8_p6_1[] = {
4, 7, 7, 7, 7, 8, 7, 8, 7, 7, 7, 8, 7, 8, 8, 8,
8, 8, 7, 8, 7, 8, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 8, 8,
8, 9, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9,
8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
8, 8, 9, 8, 8, 8, 8, 9, 9, 8, 9, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8,
8, 8, 9, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 9, 8, 9, 8, 8, 8, 8, 8, 9, 9, 8,
9, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
9, 8, 9, 9, 8, 8, 8, 8, 9, 8, 8, 9, 8, 7, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8,
8, 8, 8, 9, 9, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8, 8, 9, 9,
8, 9, 8,
};
 
static const static_codebook _44p8_p6_1 = {
5, 243,
(char *)_vq_lengthlist__44p8_p6_1,
1, -530841600, 1616642048, 2, 0,
(long *)_vq_quantlist__44p8_p6_1,
0
};
 
static const long _vq_quantlist__44p8_p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p8_p7_0[] = {
1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,
};
 
static const static_codebook _44p8_p7_0 = {
5, 243,
(char *)_vq_lengthlist__44p8_p7_0,
1, -512202240, 1635281408, 2, 0,
(long *)_vq_quantlist__44p8_p7_0,
0
};
 
static const long _vq_quantlist__44p8_p7_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p8_p7_1[] = {
1, 7, 7,12,12, 5,11,12,12,12, 5,12,11,12,12,12,
12,12,12,12,12,13,13,13,13, 7,11,11,13,13,13,12,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13, 7,13,10,13,13,13,13,13,13,13,12,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13, 7,13,12,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13, 8,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13, 8,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,10,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13, 8,13,12,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,11,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,11,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,
};
 
static const static_codebook _44p8_p7_1 = {
5, 3125,
(char *)_vq_lengthlist__44p8_p7_1,
1, -514619392, 1630767104, 3, 0,
(long *)_vq_quantlist__44p8_p7_1,
0
};
 
static const long _vq_quantlist__44p8_p7_2[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p8_p7_2[] = {
1, 3, 2, 4, 5, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
12,13,13,14,14,15,15,15,15,
};
 
static const static_codebook _44p8_p7_2 = {
1, 25,
(char *)_vq_lengthlist__44p8_p7_2,
1, -518864896, 1620639744, 5, 0,
(long *)_vq_quantlist__44p8_p7_2,
0
};
 
static const long _vq_quantlist__44p8_p7_3[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p8_p7_3[] = {
4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44p8_p7_3 = {
1, 25,
(char *)_vq_lengthlist__44p8_p7_3,
1, -529006592, 1611661312, 5, 0,
(long *)_vq_quantlist__44p8_p7_3,
0
};
 
static const char _huff_lengthlist__44p8_short[] = {
3, 9,15,17,20,21,22,23, 5, 5, 7, 9,11,13,17,20,
9, 5, 5, 6, 8,10,15,18,11, 7, 5, 4, 6, 9,13,17,
14, 9, 7, 5, 6, 7,10,14,17,10, 8, 6, 6, 4, 5, 8,
20,14,13,10, 8, 4, 3, 4,23,17,16,14,12, 6, 4, 4,
};
 
static const static_codebook _huff_book__44p8_short = {
2, 64,
(char *)_huff_lengthlist__44p8_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p9_l0_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44p9_l0_0[] = {
2, 5, 5, 7, 6, 8, 8, 9, 9,10,10,11,11, 4, 5, 5,
6, 7, 8, 8, 9, 9,10,10,11,10, 4, 5, 5, 7, 6, 8,
8, 9, 9,10,10,10,10, 6, 6, 7, 6, 7, 8, 8, 9, 9,
10, 9,11, 9, 6, 6, 6, 7, 6, 8, 8, 9, 9, 9,10, 9,
11, 7, 7, 8, 8, 8, 8, 9, 9, 9,10, 9,11, 9, 7, 8,
8, 8, 8, 9, 8, 9, 9, 9,10, 9,11, 8, 9, 9, 9, 9,
9, 9,10,10,11,10,12,10, 8, 9, 9, 9, 9, 9, 9,10,
9,10,11,11,12, 9,10,10,10,10,10,10,10,11,11,11,
11,12, 9,10,10,10,10,11,10,11,10,11,11,12,11,11,
11,11,11,11,11,11,11,12,11,12,11,12,11,11,11,11,
11,11,11,12,11,12,11,12,11,
};
 
static const static_codebook _44p9_l0_0 = {
2, 169,
(char *)_vq_lengthlist__44p9_l0_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44p9_l0_0,
0
};
 
static const long _vq_quantlist__44p9_l0_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p9_l0_1[] = {
4, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44p9_l0_1 = {
2, 25,
(char *)_vq_lengthlist__44p9_l0_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p9_l0_1,
0
};
 
static const long _vq_quantlist__44p9_l1_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p9_l1_0[] = {
1, 2, 3, 5, 9, 9, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9,10,10,10,10,10,10,10,10,
};
 
static const static_codebook _44p9_l1_0 = {
2, 25,
(char *)_vq_lengthlist__44p9_l1_0,
1, -514619392, 1630767104, 3, 0,
(long *)_vq_quantlist__44p9_l1_0,
0
};
 
static const char _huff_lengthlist__44p9_lfe[] = {
1, 1,
};
 
static const static_codebook _huff_book__44p9_lfe = {
1, 2,
(char *)_huff_lengthlist__44p9_lfe,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44p9_long[] = {
3, 3, 3, 3, 3, 3, 3, 3,
};
 
static const static_codebook _huff_book__44p9_long = {
1, 8,
(char *)_huff_lengthlist__44p9_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44p9_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p9_p1_0[] = {
1, 5, 5, 4, 8, 8, 4, 8, 8, 5, 7, 8, 8, 9,10, 8,
10,10, 5, 8, 7, 8,10,10, 8,10, 9, 7, 9, 9, 9,11,
11, 9,11,11, 9,11,11,11,12,13,11,13,13, 9,11,11,
11,13,13,11,13,13, 7, 9, 9, 9,11,11, 9,11,11, 9,
11,11,11,13,13,11,13,13, 9,11,11,11,13,13,11,13,
12, 5, 9, 9, 9,11,11, 9,11,11, 9,11,11,11,12,13,
11,13,13, 9,11,11,11,13,13,11,13,13, 9,11,12,11,
13,13,12,13,13,11,12,13,13,14,15,13,14,14,12,13,
13,13,15,15,13,15,14, 8,10,10,11,13,13,12,14,13,
11,12,12,13,14,15,13,15,15,11,12,12,13,15,15,13,
15,14, 5, 9, 9, 9,11,11, 9,11,11, 9,11,11,11,13,
13,11,13,13, 9,11,10,11,13,13,11,13,12, 8,10,10,
11,13,13,12,13,13,11,12,12,13,14,15,14,15,15,10,
12,12,13,14,15,13,15,14, 9,12,11,12,13,13,11,13,
13,12,13,13,13,15,15,13,14,15,11,13,12,13,15,14,
13,15,14,
};
 
static const static_codebook _44p9_p1_0 = {
5, 243,
(char *)_vq_lengthlist__44p9_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p9_p1_0,
0
};
 
static const long _vq_quantlist__44p9_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p9_p2_0[] = {
4, 6, 6, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 6,
8, 8,11,11, 6, 8, 8,11,11, 6, 7, 7, 9, 9, 7, 8,
9,10,11, 7, 9, 9,11,10, 8, 9,10,12,12, 8,10,10,
12,12, 6, 7, 7, 9, 9, 7, 9, 9,10,10, 7, 9, 8,11,
10, 8,10,10,12,12, 8,10, 9,12,12, 8, 9, 9,11,11,
9,10,10,12,12, 9,11,11,12,13,11,12,12,13,14,11,
12,12,14,14, 8, 9, 9,11,11, 9,11,10,13,12, 9,10,
10,13,12,11,12,12,14,14,11,12,12,14,13, 7, 8, 9,
10,10, 8,10,10,11,11, 8,10,10,11,11,10,11,11,13,
13,10,11,11,13,13, 8, 9,10,10,11,10,11,11,12,13,
10,11,11,12,12,11,11,12,13,14,11,12,12,14,14, 8,
10,10,11,11,10,11,11,12,13,10,11,11,12,12,11,12,
12,14,14,11,12,12,14,14,10,11,11,12,13,11,12,12,
13,14,12,13,13,14,14,13,13,14,14,16,13,14,14,15,
16,10,11,11,13,13,12,12,12,14,14,11,12,12,14,14,
13,14,14,15,16,13,14,14,16,15, 7, 8, 8,10,10, 8,
10,10,11,11, 8,10,10,12,11,10,11,11,13,13,10,11,
11,13,13, 8,10,10,11,11,10,11,11,12,12,10,11,11,
12,12,11,12,12,14,14,11,12,12,14,14, 8,10, 9,11,
10,10,11,11,13,12,10,11,10,13,12,11,12,12,14,14,
11,12,11,14,13,10,11,11,13,13,11,12,12,14,14,12,
12,12,14,14,13,14,14,15,16,13,14,14,15,15,10,11,
11,13,12,12,12,12,14,14,11,12,12,14,13,13,14,14,
16,15,13,14,13,16,14,10,11,11,13,13,12,12,13,14,
15,12,13,13,14,15,13,14,15,15,16,13,14,14,16,16,
11,12,13,14,14,13,13,14,15,16,13,14,14,15,16,14,
15,15,16,17,14,15,16,17,17,11,12,12,14,14,13,14,
14,15,16,13,14,14,15,15,14,15,15,16,18,14,15,15,
17,16,13,14,15,15,16,15,15,16,16,18,15,15,15,17,
17,16,16,17,17,18,16,16,16,18,18,14,14,14,16,16,
15,15,15,16,17,15,15,15,16,17,16,17,17,18,18,16,
16,17,18,17,10,11,11,14,13,12,13,13,15,14,11,13,
13,15,14,13,15,15,16,16,13,14,14,16,16,11,12,12,
14,14,13,13,13,15,15,13,14,13,15,15,15,15,15,17,
16,14,15,15,17,16,11,13,12,14,14,13,14,13,15,15,
13,14,13,15,15,14,15,15,17,17,14,15,15,17,16,14,
14,14,16,16,14,15,15,17,17,15,15,16,17,16,17,16,
17,18,18,16,17,17,18,18,13,14,14,16,15,15,15,15,
17,17,14,16,15,16,16,17,17,17,18,18,16,17,16,20,
19, 6, 8, 8,10,10, 8,10,10,11,11, 8,10,10,12,11,
10,11,11,13,13,10,11,11,13,13, 8, 9,10,11,11,10,
11,11,12,12,10,11,11,13,12,11,12,12,14,14,11,12,
12,14,14, 9,10,10,11,11,10,11,11,12,12,10,11,11,
13,12,11,12,12,14,14,11,12,12,14,14,10,10,11,12,
13,11,12,12,14,14,11,12,12,14,14,13,14,14,15,16,
13,14,14,15,16,10,11,11,13,13,12,12,12,14,14,12,
13,12,14,14,13,14,14,16,16,13,14,14,15,15, 9,10,
10,11,12,10,11,11,12,13,10,11,11,13,12,11,12,12,
14,14,11,12,12,14,14,10,10,11,12,13,11,12,12,13,
14,11,12,12,13,14,12,13,14,14,15,12,13,13,15,15,
10,11,11,13,13,11,12,12,13,14,11,12,12,14,13,12,
13,13,15,15,12,13,13,15,15,12,11,13,12,14,13,13,
14,14,15,13,13,14,14,15,14,15,15,16,17,14,15,15,
16,17,12,13,12,14,14,13,14,14,15,15,13,14,14,15,
15,14,15,15,16,17,14,15,15,16,17, 8, 9, 9,11,11,
10,11,11,12,13,10,11,11,13,12,12,13,13,14,15,11,
13,12,15,14, 9,11,10,12,12,11,12,12,13,14,11,12,
12,14,13,13,13,14,15,15,13,14,13,15,15, 9,11,11,
12,12,11,12,12,14,14,11,12,12,14,13,13,14,14,15,
16,13,14,13,15,14,11,12,12,14,13,12,13,13,14,15,
13,14,14,16,15,15,15,15,15,16,15,16,15,17,17,11,
12,12,14,14,13,14,14,15,15,12,13,13,15,14,15,15,
15,17,17,14,15,15,17,15,11,12,12,14,14,12,13,13,
15,15,12,13,13,15,15,14,15,15,17,17,14,15,15,16,
16,12,13,13,14,15,13,14,14,16,16,14,14,14,15,16,
15,16,16,17,17,15,16,16,17,17,12,13,13,15,15,14,
14,14,16,16,14,14,15,16,16,15,16,16,17,17,15,16,
16,17,17,14,15,15,15,16,15,15,16,16,18,15,16,16,
17,17,17,17,17,18,18,16,17,17,19,18,14,15,15,16,
17,15,16,16,17,17,15,16,16,18,17,16,17,17,19,18,
17,17,17,19,18,10,12,12,14,14,13,13,14,15,15,12,
14,13,16,15,15,15,15,17,17,14,15,15,17,16,12,13,
13,15,14,13,14,14,16,16,14,14,15,17,16,15,16,16,
17,17,15,16,16,18,17,12,13,13,15,14,14,15,15,16,
16,13,15,14,16,15,16,17,16,19,17,15,16,16,17,17,
14,15,15,17,15,15,16,15,17,17,16,17,16,18,17,17,
17,18,18,18,17,17,18,19,18,14,15,15,16,16,15,16,
16,17,18,15,16,16,18,16,17,18,18,19,19,17,18,17,
18,19, 6, 8, 8,10,10, 8,10,10,11,11, 8,10,10,12,
11,10,11,11,13,13, 9,11,11,13,13, 9,10,10,11,11,
10,11,11,12,12,10,11,11,12,12,11,12,12,14,14,11,
12,12,14,14, 8,10, 9,11,11,10,11,11,12,12,10,11,
11,12,12,11,12,12,14,14,11,12,12,14,14,10,11,11,
13,13,11,12,13,14,14,12,12,12,14,14,13,14,14,15,
16,13,14,14,16,16,10,11,10,13,12,11,12,12,14,14,
11,12,12,14,14,13,14,14,15,16,13,14,14,16,15, 8,
9, 9,11,11,10,11,11,12,13,10,11,11,13,12,12,13,
13,14,15,12,13,13,15,14,10,11,11,12,12,11,11,12,
13,14,11,12,12,14,14,13,13,14,15,16,13,14,14,15,
15, 9,10,11,12,12,11,12,12,13,14,11,12,12,14,13,
13,14,14,15,16,12,14,13,15,15,11,12,12,14,14,12,
13,13,14,15,13,14,14,16,15,14,15,15,15,17,15,15,
16,16,17,11,12,12,13,14,13,14,14,15,15,12,13,13,
15,14,15,16,15,16,17,14,16,15,17,15, 9,10,10,12,
11,10,11,11,13,13,10,11,11,13,12,11,12,12,14,14,
11,12,12,14,14,10,11,11,12,13,11,12,12,13,14,11,
12,12,14,14,12,13,13,15,15,12,13,13,15,15,10,11,
10,13,12,11,12,12,13,13,11,12,12,14,13,12,13,13,
15,15,12,13,13,15,14,12,13,12,14,14,13,14,14,15,
15,13,14,14,15,15,14,15,15,16,16,14,15,15,16,16,
11,13,11,14,12,13,13,13,15,14,12,14,13,15,14,15,
15,15,17,16,14,15,14,17,15,10,12,12,14,14,13,13,
14,15,16,12,14,13,15,15,14,15,16,17,17,14,15,16,
17,17,12,13,13,14,15,13,14,14,16,16,14,14,15,16,
16,16,16,16,17,17,16,16,16,18,18,12,13,13,14,15,
14,14,15,16,16,13,14,14,16,15,16,16,16,17,18,15,
16,16,17,17,14,15,15,16,16,15,15,16,17,17,15,16,
16,17,18,17,18,18,18,19,17,18,18,19,19,14,15,15,
16,16,15,16,16,17,17,15,16,16,17,17,17,17,18,20,
18,17,18,17,18,18,11,12,12,14,14,12,13,14,15,15,
12,13,13,15,15,14,15,15,16,17,14,15,15,16,17,12,
13,13,15,15,14,14,14,16,16,14,14,14,16,16,15,16,
16,17,17,15,16,16,17,17,12,13,13,15,14,13,14,14,
16,15,14,15,14,16,15,15,16,16,17,17,15,16,16,17,
16,14,15,15,16,16,15,16,16,17,17,16,16,16,17,17,
17,17,17,19,18,17,17,17,18,19,14,15,14,17,15,15,
16,16,17,17,15,16,15,17,17,16,17,17,18,18,16,17,
17,18,17, 6,11,11,13,13,11,12,12,14,14,11,12,12,
14,14,13,14,14,16,16,13,14,14,16,16,11,12,12,14,
14,12,13,13,15,15,12,13,13,15,15,14,15,15,16,17,
14,15,15,17,18,11,12,12,14,14,12,13,13,15,15,12,
13,13,15,15,14,15,15,17,17,14,15,15,16,16,13,14,
14,15,16,14,15,15,16,17,14,15,15,17,16,15,16,17,
18,17,16,16,16,18,17,14,14,15,16,16,14,15,15,18,
16,14,15,15,17,16,16,17,17,18,18,16,17,16,18,17,
11,12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,
15,15,17,17,14,15,15,16,16,12,13,13,15,15,13,14,
14,15,16,13,14,14,16,16,15,16,16,17,17,15,15,16,
17,17,12,13,13,15,15,14,14,14,16,16,13,14,14,16,
16,15,16,16,17,17,15,16,16,17,17,14,14,15,15,16,
15,15,16,16,17,15,15,16,16,17,16,17,17,17,18,16,
17,17,18,18,14,15,15,16,16,15,16,16,17,17,15,16,
16,17,17,17,17,17,18,19,17,17,17,18,18,10,12,12,
14,14,12,13,14,15,16,13,14,13,15,15,14,15,15,17,
17,14,15,16,17,17,12,13,13,15,15,13,14,14,15,15,
14,15,14,16,16,15,16,16,17,18,15,17,16,18,17,12,
13,13,15,15,14,14,14,16,16,13,14,14,16,15,15,16,
16,17,18,15,16,16,17,17,14,14,14,16,16,15,15,16,
17,17,15,16,16,17,17,17,17,17,18,20,17,17,17,19,
19,14,15,15,16,16,15,17,16,18,18,15,16,15,17,16,
17,18,19,19,19,17,17,17,18,17,13,14,14,16,16,14,
15,15,17,17,14,15,15,16,17,15,17,17,18,18,16,16,
17,18,17,14,15,15,16,17,15,16,16,17,17,15,16,16,
17,17,16,17,17,18,18,17,17,17,18,19,14,15,15,16,
17,15,16,16,17,17,15,16,16,17,17,16,17,17,18,18,
17,17,17,19,19,16,16,16,16,18,16,17,17,17,18,17,
17,17,17,19,18,18,18,19,19,18,18,18,19,20,16,16,
17,18,18,16,18,17,18,18,17,17,17,20,19,18,18,19,
21,20,18,20,18,18,19,10,12,12,14,14,14,14,15,15,
17,14,15,14,17,15,16,16,17,18,18,16,18,17,19,18,
12,14,13,16,15,14,14,15,15,17,15,16,16,18,17,16,
17,18,17,19,17,19,18,20,19,12,13,13,15,15,15,16,
17,17,18,14,16,14,17,16,17,18,18,19,19,17,17,17,
18,18,15,15,15,17,16,15,16,16,17,17,17,19,17,18,
18,18,18,18,18,21,19,20,19,20,19,15,15,16,16,17,
17,17,18,20,20,15,16,16,18,17,18,19,19,19,20,18,
19,18,19,17, 6,11,11,13,13,11,12,12,14,14,11,12,
12,14,14,13,14,14,16,16,13,14,14,16,16,11,12,12,
14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,17,
17,14,15,15,17,16,11,12,12,14,14,12,13,13,15,15,
12,13,13,15,15,14,15,15,16,16,14,15,15,16,16,13,
14,14,16,16,15,15,15,16,16,14,15,15,17,16,16,17,
17,19,18,16,17,17,18,18,13,14,14,15,15,14,15,15,
17,16,14,15,15,17,16,16,17,16,17,18,15,16,16,18,
18,10,12,12,14,14,12,13,14,15,15,12,13,13,15,15,
14,15,15,17,17,14,15,15,17,16,12,13,13,15,15,14,
14,14,15,16,14,15,15,16,16,15,16,16,17,18,16,16,
16,18,18,12,13,13,14,14,14,14,15,16,16,13,14,14,
16,16,15,16,16,18,18,15,16,16,19,17,14,15,15,16,
17,15,15,16,17,17,16,17,16,17,18,17,17,18,17,19,
17,17,18,18,19,14,14,14,16,16,15,16,16,17,17,15,
16,15,17,17,17,17,17,19,20,16,17,17,18,18,11,12,
12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,
16,16,14,15,14,16,16,12,13,13,15,15,14,14,14,16,
16,13,14,14,16,16,15,16,16,18,17,15,16,16,17,17,
12,13,13,15,15,13,14,14,16,16,13,14,14,16,16,15,
16,15,18,18,15,16,15,17,16,14,15,15,16,16,15,16,
16,17,17,15,16,16,18,17,16,17,17,18,18,16,17,17,
18,18,14,15,14,16,15,15,16,15,17,17,15,16,15,17,
16,16,17,17,18,18,17,17,16,19,17,10,12,12,14,15,
14,14,15,15,17,14,15,14,17,15,16,17,17,17,18,16,
17,17,18,18,12,14,13,16,15,14,14,16,15,17,15,17,
16,18,17,17,17,18,17,19,18,18,18,19,18,12,13,14,
15,15,15,16,16,16,17,14,15,14,18,16,18,17,18,19,
19,17,18,17,20,18,15,15,15,17,17,15,16,16,17,18,
18,18,18,19,18,18,18,19,18,20,18,19,19,21,21,15,
15,16,16,17,17,18,18,18,18,15,16,16,17,17,17,19,
20,19,20,17,18,18,19,17,13,14,14,16,16,14,15,15,
16,17,14,15,15,17,17,16,16,17,17,18,15,17,16,17,
17,14,15,15,16,16,15,16,16,17,17,16,16,16,17,17,
17,17,18,17,18,17,17,17,18,20,14,15,15,17,16,15,
16,16,17,17,15,16,16,17,17,17,17,17,18,18,16,17,
17,19,18,16,16,17,17,17,17,18,17,19,18,17,17,17,
18,19,17,20,18,19,21,17,19,18,19,20,15,17,15,17,
16,16,17,17,18,18,17,17,17,18,17,18,19,18,19,21,
18,18,17,19,19,
};
 
static const static_codebook _44p9_p2_0 = {
5, 3125,
(char *)_vq_lengthlist__44p9_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p9_p2_0,
0
};
 
static const long _vq_quantlist__44p9_p3_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p9_p3_0[] = {
2, 5, 4, 4, 7, 7, 4, 7, 6, 5, 6, 7, 7, 8, 9, 7,
9, 9, 5, 7, 6, 7, 9, 9, 7, 9, 8, 6, 8, 8, 8,10,
10, 8,10,10, 8, 9,10,10,11,12,10,12,12, 8,10,10,
10,12,12,10,12,11, 6, 8, 8, 8,10,10, 8,10,10, 8,
10,10,10,11,12,10,12,12, 8,10, 9,10,12,11,10,12,
11, 5, 8, 8, 8,10,10, 8,10,10, 8, 9,10,10,11,11,
10,11,11, 8,10,10,10,11,12,10,12,11, 8,10,10,10,
11,11,10,11,11,10,11,11,11,12,13,11,12,13,10,11,
11,11,13,13,11,13,13, 7, 9, 9,10,11,12,10,12,11,
9,11,11,11,12,13,12,14,13, 9,11,11,12,13,14,11,
13,12, 5, 8, 8, 8,10,10, 8,10,10, 8,10,10,10,11,
12,10,12,12, 8,10, 9,10,12,11, 9,11,11, 7, 9, 9,
10,11,12,10,12,11, 9,11,11,11,12,13,12,14,13, 9,
11,11,12,13,14,11,13,12, 8,10,10,10,11,11,10,11,
11,10,11,11,11,13,13,11,13,13,10,11,10,11,13,12,
11,13,12,
};
 
static const static_codebook _44p9_p3_0 = {
5, 243,
(char *)_vq_lengthlist__44p9_p3_0,
1, -533200896, 1614282752, 2, 0,
(long *)_vq_quantlist__44p9_p3_0,
0
};
 
static const long _vq_quantlist__44p9_p3_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p9_p3_1[] = {
4, 6, 6, 6, 7, 7, 6, 7, 7, 6, 7, 7, 7, 7, 8, 7,
7, 8, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8,
8, 9, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9,
9, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9,
8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8, 8,
9, 9, 8, 9, 9, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8, 9,
9, 9, 9, 9, 9, 9, 9, 7, 8, 8, 8, 9, 9, 8, 9, 9,
8, 9, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9,
9, 9, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
9, 8, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9, 9, 7, 8, 8,
8, 9, 9, 8, 9, 9, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8,
8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9, 8, 9,
9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9, 9,
9, 9, 9,
};
 
static const static_codebook _44p9_p3_1 = {
5, 243,
(char *)_vq_lengthlist__44p9_p3_1,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44p9_p3_1,
0
};
 
static const long _vq_quantlist__44p9_p4_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p9_p4_0[] = {
2, 5, 5, 4, 7, 7, 4, 7, 6, 5, 7, 7, 7, 8, 9, 7,
9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 6, 7, 8, 8, 9,
10, 8,10,10, 8, 9,10,10,11,12,10,11,12, 8,10,10,
10,11,12,10,12,11, 6, 8, 7, 8,10,10, 8,10, 9, 8,
10,10,10,11,12,10,12,12, 8,10, 9,10,12,11,10,12,
11, 5, 8, 8, 8,10,10, 8,10,10, 7, 9,10, 9,10,11,
10,11,11, 8,10,10,10,12,12,10,12,11, 7, 9, 9, 9,
11,11, 9,11,11, 9,10,11,11,11,12,11,12,12, 9,11,
11,11,12,12,11,12,12, 7, 9, 9,10,11,12,10,12,11,
9,11,10,11,11,12,12,13,13, 9,11,11,12,13,13,11,
13,11, 5, 8, 8, 8,10,10, 8,10,10, 8,10,10,10,11,
12,10,12,12, 7, 9, 9, 9,11,11, 9,11,10, 7, 9, 9,
10,11,12,10,12,11, 9,11,11,11,11,13,12,13,13, 9,
10,11,12,13,13,11,12,11, 7, 9, 9, 9,11,11, 9,11,
11, 9,11,11,11,12,12,11,12,12, 9,11,10,11,12,12,
10,12,11,
};
 
static const static_codebook _44p9_p4_0 = {
5, 243,
(char *)_vq_lengthlist__44p9_p4_0,
1, -531365888, 1616117760, 2, 0,
(long *)_vq_quantlist__44p9_p4_0,
0
};
 
static const long _vq_quantlist__44p9_p4_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p9_p4_1[] = {
6, 8, 8,10, 9, 8, 9, 9,10,10, 8, 9, 9,10,10, 8,
10,10,10,10, 8,10,10,10,10, 9, 9, 9,10,10, 9,10,
10,10,11, 9,10,10,11,11,10,10,10,11,11,10,10,10,
11,11, 9, 9, 9,10,10, 9,10,10,11,11, 9,10,10,11,
10,10,10,10,11,11,10,10,10,11,11,10,10,10,10,11,
10,10,11,11,11,10,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,10,10,10,11,10,10,11,11,11,11,10,11,
10,11,11,11,11,11,11,11,10,11,11,11,11, 9,10,10,
10,11,10,10,11,11,11,10,11,11,11,11,10,11,11,11,
11,10,11,11,11,11,10,10,11,11,11,11,11,11,11,11,
11,11,11,11,12,11,11,12,12,12,11,11,11,12,12,10,
11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,
11,12,12,11,11,11,12,12,11,11,11,11,11,11,12,12,
12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,
12,11,11,11,11,11,11,12,12,12,12,11,12,11,12,12,
11,12,12,12,12,12,12,12,12,12, 9,10,10,11,10,10,
11,11,11,11,10,11,11,11,11,10,11,11,11,11,10,11,
11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,
12,12,11,11,12,12,12,11,11,11,12,12,10,11,10,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,
11,11,11,12,12,11,11,11,11,11,11,12,12,12,12,11,
12,12,12,12,11,12,12,12,12,12,12,12,12,12,11,11,
11,11,11,11,12,12,12,12,11,12,11,12,12,12,12,12,
12,12,11,12,12,12,12,11,11,11,11,11,11,12,12,12,
12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,
13,13,12,12,12,12,12,12,12,12,12,13,12,12,12,13,
13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,
12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,12,
13,13,13,13,11,11,11,11,11,11,12,12,12,12,11,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,
13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,
12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,13,
13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,
13,13,12,12,12,13,12,12,13,13,13,13,12,13,13,13,
13, 7,10,10,11,11,10,10,11,11,11,10,11,11,11,11,
10,11,11,11,11,10,11,11,11,11,10,10,10,11,11,10,
11,11,11,11,11,11,11,11,12,11,11,11,12,12,11,11,
11,12,12,10,11,11,11,11,11,11,11,12,11,11,11,11,
12,11,11,11,11,12,12,11,11,11,12,12,11,11,11,11,
11,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,
11,12,12,12,12,11,11,11,11,11,11,12,12,12,12,11,
11,12,12,12,11,12,12,12,12,11,12,12,12,12,10,11,
11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,
12,12,11,11,11,12,12,11,11,11,11,11,11,11,12,12,
12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,
11,11,11,11,11,11,12,11,12,12,11,11,11,12,12,11,
12,12,12,12,11,12,12,12,12,11,11,11,11,12,11,12,
12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,10,11,10,11,11,
11,11,11,12,12,11,11,11,12,12,11,12,12,12,12,11,
12,12,12,12,10,11,11,12,11,11,11,12,12,12,11,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,
12,11,11,12,12,12,12,11,12,11,12,12,12,12,12,12,
12,12,12,12,12,12,11,12,11,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,13,12,12,12,13,12,11,11,11,12,12,12,12,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,13,13,13,12,12,12,13,13,11,12,12,12,12,12,
12,12,12,13,12,12,12,12,12,12,12,13,13,13,12,13,
12,13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,
13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,
12,12,12,12,13,13,12,13,12,13,13,12,13,13,13,13,
12,13,13,13,13,11,11,11,12,12,12,12,12,12,12,11,
12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,
12,12,12,12,12,12,12,12,12,12,12,13,13,12,13,12,
13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,
13,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,
12,12,12,12,12,12,12,13,13,13,12,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,13,
13,13,13,12,12,12,13,13,13,13,13,13,13,13,13,13,
13,13, 7,10,10,11,11,10,11,11,11,11,10,11,11,11,
11,10,11,11,11,11,10,11,11,11,11,10,11,11,11,11,
11,11,11,11,11,11,11,11,12,11,11,11,12,12,12,11,
11,11,12,12,10,10,10,11,11,11,11,11,12,11,10,11,
11,11,11,11,11,11,12,12,11,11,11,12,12,11,11,11,
11,11,11,11,12,12,12,11,12,11,12,12,11,12,12,12,
12,11,12,12,12,12,11,11,11,11,11,11,11,11,12,12,
11,12,11,12,12,11,12,12,12,12,11,12,12,12,12,10,
10,10,11,11,11,11,11,12,12,11,11,11,12,12,11,12,
12,12,12,11,12,12,12,12,11,11,11,11,11,11,11,12,
12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,11,11,11,11,11,11,12,12,12,12,11,12,11,12,12,
12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,
12,13,12,11,11,11,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,10,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,
11,11,11,12,12,11,11,11,11,11,11,11,12,12,12,11,
12,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,
11,11,11,11,11,11,12,12,11,11,11,12,12,11,12,12,
12,12,11,12,12,12,12,11,11,11,12,11,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
11,11,11,12,11,11,12,12,12,12,11,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,
12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,
13,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,
13,12,13,13,13,13,12,13,13,13,13,11,12,12,12,12,
12,12,12,12,13,12,12,12,12,12,12,13,13,13,13,12,
13,13,13,13,12,12,12,12,12,12,12,13,13,13,12,13,
12,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,
12,12,12,13,13,13,13,12,13,12,13,13,13,13,13,13,
13,13,13,13,13,13,11,11,11,12,12,11,12,12,12,12,
11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,
12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,13,13,12,13,12,13,
13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,
13,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,
13,12,13,13,12,13,12,13,12,12,13,13,13,13,12,13,
13,13,13, 8,11,11,12,12,11,12,12,12,12,11,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,
12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,
12,12,12,13,13,11,11,11,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,
12,12,12,12,12,12,12,13,12,12,12,12,12,12,12,13,
13,13,12,12,13,13,13,11,12,12,12,12,12,12,12,13,
12,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,
11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,
13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,13,12,13,13,12,13,12,13,13,12,12,12,12,12,
12,12,12,12,13,12,12,12,13,13,12,13,13,13,13,12,
13,13,13,13,12,12,12,12,12,12,12,12,13,13,12,12,
12,13,13,12,13,13,13,13,12,13,13,13,13,11,11,11,
12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,
12,12,12,12,12,13,11,12,12,12,12,12,12,12,12,13,
12,12,12,12,13,12,13,13,13,13,12,13,13,13,13,11,
12,12,12,12,12,12,12,12,13,12,12,12,13,12,12,13,
13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,
13,13,12,12,13,13,13,12,13,13,13,13,12,13,13,13,
13,12,12,12,12,12,12,13,13,13,13,12,13,12,13,13,
12,13,13,13,13,13,13,13,13,13,11,11,11,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,13,13,13,12,13,13,13,13,11,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,
12,13,12,13,13,12,12,12,12,12,12,12,12,13,13,12,
12,12,13,13,12,13,13,13,13,12,13,13,13,13,12,12,
12,12,12,12,13,12,13,13,12,12,12,13,13,13,13,13,
13,13,12,13,13,13,13,11,11,11,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,12,
11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,
12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,
12,12,13,12,12,12,13,12,12,13,13,13,13,12,13,13,
13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,
13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,
12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,
13,13,13,13, 8,11,11,11,11,11,12,12,12,12,11,12,
12,12,12,12,12,12,12,12,11,12,12,12,12,11,11,11,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
13,12,12,12,13,13,11,11,11,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,13,
13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,
12,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,
13,11,11,11,12,12,12,12,12,12,12,11,12,12,12,12,
12,12,12,13,13,12,12,12,13,12,11,12,12,12,12,12,
12,12,12,12,12,12,12,13,13,12,12,13,13,13,12,13,
13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,
12,12,12,13,13,13,13,12,13,13,13,13,12,12,12,12,
12,12,12,13,13,13,12,12,13,13,13,13,13,13,13,13,
12,13,13,13,13,12,12,12,12,12,12,13,12,13,13,12,
12,12,13,13,13,13,13,13,13,12,13,13,13,13,11,11,
11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,13,12,13,13,12,12,12,13,13,
11,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,
12,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,
12,13,12,12,12,12,13,13,12,13,13,13,13,12,13,13,
13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,
12,12,13,13,13,13,12,13,13,13,13,11,11,11,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,
12,12,12,12,13,13,13,13,12,13,13,13,13,11,12,12,
12,12,12,12,12,12,13,12,12,12,12,12,12,13,13,13,
13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,13,
12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,12,
12,12,12,12,12,13,13,13,13,12,12,12,13,12,13,13,
13,13,13,12,13,13,13,13,11,11,11,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
13,11,12,12,12,12,12,12,12,12,12,12,12,12,13,12,
12,12,12,13,13,12,13,13,13,13,11,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,13,13,13,13,12,13,
12,13,13,12,12,12,12,12,12,12,13,13,13,12,13,12,
13,13,12,13,13,13,13,13,13,13,13,13,12,12,12,12,
12,12,12,12,12,13,12,12,12,13,13,13,13,13,13,13,
12,13,13,13,13,
};
 
static const static_codebook _44p9_p4_1 = {
5, 3125,
(char *)_vq_lengthlist__44p9_p4_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44p9_p4_1,
0
};
 
static const long _vq_quantlist__44p9_p5_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p9_p5_0[] = {
4, 6, 6, 9, 9, 6, 7, 8,10,11, 6, 8, 7,10,10, 8,
10,10,12,12, 8,10,10,12,12, 6, 7, 8,10,10, 7, 8,
9,10,11, 8, 9, 9,11,11,10,10,11,12,13,10,11,11,
13,13, 6, 8, 7,10,10, 8, 9, 9,11,11, 7, 9, 8,11,
10,10,11,11,13,13,10,11,10,13,12, 9,10,10,11,12,
10,10,11,12,13,10,11,11,12,13,12,12,13,12,14,12,
13,13,14,14, 9,10,10,12,11,10,11,11,13,12,10,11,
10,13,12,12,13,13,14,14,12,13,12,14,12, 7, 8, 8,
10,11, 8, 9,10,11,12, 8, 9, 9,11,12,10,11,12,13,
14,10,11,11,13,13, 8, 9,10,11,12, 9,10,11,12,13,
10,10,11,12,12,11,12,12,13,14,11,12,12,14,14, 8,
9, 9,11,12,10,10,11,12,13, 9,10,10,12,12,11,12,
12,14,14,11,12,12,14,13,11,11,12,12,13,11,12,12,
13,14,12,12,13,14,14,13,13,14,14,16,13,14,14,15,
15,11,12,11,13,13,12,12,12,14,14,11,12,12,14,13,
13,14,14,15,15,13,14,13,15,14, 7, 8, 8,11,10, 8,
10, 9,12,11, 8,10, 9,12,11,10,11,11,13,13,10,12,
11,14,13, 8, 9, 9,12,11, 9,10,10,12,12,10,11,10,
13,12,11,12,12,13,14,11,12,12,14,14, 8,10, 9,12,
11,10,11,10,12,12, 9,11,10,13,11,11,12,12,14,14,
11,12,12,14,13,11,11,12,13,13,11,12,12,13,14,12,
12,12,14,14,13,13,14,14,15,13,14,14,15,15,11,12,
11,13,12,12,12,12,14,14,11,12,12,14,13,13,14,14,
15,15,13,14,13,15,14,10,11,11,12,13,11,12,12,13,
14,11,12,12,13,14,13,13,14,14,16,13,14,14,15,15,
11,12,12,12,14,12,12,13,13,15,12,13,13,13,15,14,
14,15,15,16,14,14,15,15,16,11,12,12,13,14,12,13,
13,14,15,12,13,13,14,14,14,14,15,15,16,14,14,14,
15,15,13,14,14,14,15,14,14,15,15,16,14,15,15,15,
16,15,15,16,16,18,16,16,16,17,17,13,14,14,15,15,
14,14,15,16,16,14,14,14,16,15,16,16,16,17,17,15,
16,16,17,16,10,11,11,13,12,11,12,12,14,13,11,12,
12,14,13,13,14,14,15,15,13,14,13,16,14,11,12,12,
14,13,12,13,13,14,14,12,13,13,15,14,14,14,14,15,
15,14,15,14,16,15,11,12,12,14,12,12,13,13,15,14,
12,13,12,15,13,14,15,14,16,15,14,15,14,16,15,13,
14,14,15,15,14,14,14,15,16,14,15,14,16,16,15,16,
16,16,17,16,16,16,17,17,13,14,14,15,14,14,15,15,
16,15,14,15,14,16,15,16,16,16,17,17,15,16,15,18,
16, 6, 8, 8,11,11, 8, 9,10,11,12, 8,10, 9,12,12,
10,11,11,13,13,10,12,11,14,13, 8, 9, 9,11,12, 9,
10,10,12,12, 9,10,10,12,12,11,11,12,13,14,11,12,
12,14,14, 8,10, 9,12,11,10,11,11,12,12, 9,11,10,
13,12,11,12,12,14,14,11,12,12,14,13,10,11,11,13,
13,11,12,12,13,14,11,12,12,14,14,13,13,14,13,15,
13,14,14,15,15,11,12,11,13,13,12,12,12,14,14,11,
12,12,14,13,13,14,14,15,15,13,14,13,15,14, 8, 9,
9,11,11, 9,10,10,12,12, 9,10,10,12,12,11,12,12,
13,14,11,12,12,14,14, 9, 9,10,11,12,10,10,11,12,
13,10,10,11,12,13,12,12,13,13,15,12,12,13,14,14,
9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,
13,13,14,15,12,13,12,14,14,11,11,12,12,14,12,12,
13,13,14,12,12,13,13,14,13,13,14,14,16,14,14,14,
15,15,11,12,12,14,13,12,13,13,14,14,12,13,13,15,
14,14,14,14,16,16,13,14,14,16,14, 7, 9, 9,12,11,
9,10,10,12,12, 9,11,10,13,12,11,12,12,13,14,11,
13,12,14,13, 9,10,10,12,12,10,10,11,12,13,10,12,
11,13,13,12,12,13,13,14,12,13,13,15,14, 9,10,10,
12,12,11,11,11,13,13,10,12,10,13,12,12,13,13,14,
15,12,13,12,15,13,11,12,12,14,13,12,12,13,13,14,
12,13,13,15,14,13,13,14,13,16,14,15,14,16,15,12,
12,12,14,14,13,13,13,14,14,12,13,12,14,13,14,15,
15,16,16,13,14,13,16,13,10,11,12,13,14,11,12,13,
13,15,12,12,13,14,14,13,14,14,15,16,13,14,14,16,
15,12,12,13,12,14,12,12,13,13,15,13,13,13,13,15,
14,14,15,14,16,14,15,15,15,16,12,13,12,14,14,13,
13,13,15,15,12,13,13,15,15,14,15,15,16,16,14,15,
15,16,16,13,14,14,13,16,14,14,15,14,16,14,14,15,
14,16,15,15,16,15,18,16,16,16,16,17,14,14,14,16,
15,14,15,15,16,16,14,15,15,16,16,16,16,16,17,17,
15,16,16,17,16,10,12,11,14,13,12,13,13,14,14,12,
13,12,15,14,14,14,14,15,15,14,15,14,16,15,12,13,
12,14,13,12,13,13,15,14,13,14,13,15,14,14,15,15,
16,16,14,15,15,17,15,12,13,12,14,14,13,14,14,15,
15,13,14,13,15,14,15,15,15,16,16,14,15,15,17,15,
14,14,14,16,15,14,15,15,16,16,14,15,15,16,15,16,
16,16,16,17,16,17,16,18,17,14,14,14,16,15,15,15,
15,16,16,14,15,14,16,15,16,16,17,17,17,15,16,15,
17,16, 6, 8, 8,11,11, 8, 9,10,12,12, 8,10, 9,12,
11,10,11,12,13,13,10,11,11,13,13, 8, 9,10,11,12,
9,10,11,12,13,10,11,11,12,12,11,12,12,13,14,11,
12,12,14,14, 8, 9, 9,12,11, 9,10,10,12,12, 9,10,
10,12,12,11,12,12,14,14,11,12,11,14,13,11,11,12,
13,13,11,12,12,13,14,12,12,12,14,14,13,13,14,14,
15,13,14,14,15,15,10,11,11,13,13,11,12,12,14,14,
11,12,12,14,13,13,14,14,15,15,13,14,13,15,13, 7,
9, 9,11,12, 9,10,11,12,13, 9,10,10,12,12,11,12,
13,13,14,11,12,12,14,14, 9,10,10,12,12,10,10,11,
12,13,11,12,11,13,13,12,12,13,13,15,12,13,13,15,
14, 9,10,10,12,12,10,11,12,13,13,10,11,10,13,12,
12,13,13,14,15,12,13,12,14,13,12,12,12,14,14,12,
12,13,13,14,13,13,13,15,14,14,13,14,13,16,14,15,
15,16,16,11,12,12,13,14,12,13,13,14,15,12,13,12,
14,13,14,14,15,15,16,13,14,13,15,13, 8, 9, 9,11,
11, 9,10,10,12,12, 9,10,10,12,12,11,12,12,14,14,
11,12,11,14,13, 9,10,10,12,12,10,11,11,13,13,10,
11,11,13,13,12,12,13,14,15,12,13,13,15,14, 9,10,
9,12,11,10,11,10,13,12,10,11,10,13,12,12,13,12,
14,14,12,13,12,15,13,11,12,12,13,14,12,13,13,14,
14,12,13,13,14,14,14,14,14,14,16,14,14,14,16,15,
11,12,11,14,12,12,13,12,15,13,12,13,12,15,13,14,
14,14,16,15,13,14,13,16,14,10,11,12,13,14,12,12,
13,13,15,12,13,13,14,14,14,14,15,15,16,14,14,14,
15,16,12,12,13,14,14,12,13,14,14,15,13,14,14,15,
15,14,15,15,15,17,15,15,15,16,16,12,12,13,13,14,
13,13,14,14,15,12,13,13,14,15,15,15,15,15,17,14,
15,15,15,15,14,14,14,16,16,14,15,15,15,16,15,15,
15,16,16,16,15,16,16,18,16,16,17,17,17,14,14,14,
15,16,15,15,15,16,17,14,15,14,16,16,16,16,17,17,
18,16,16,15,17,16,10,12,11,14,13,12,12,12,14,14,
11,13,12,14,13,13,14,14,15,15,13,14,13,16,15,12,
12,13,14,14,12,13,13,15,15,13,13,13,15,15,14,15,
15,16,16,14,15,15,17,16,12,13,12,14,12,13,13,13,
15,13,12,13,12,15,13,14,15,15,16,15,14,15,14,16,
14,14,14,14,16,16,14,15,15,16,16,14,15,15,16,16,
15,16,16,16,17,16,17,16,18,17,13,14,14,16,13,14,
15,15,16,14,14,15,14,16,14,16,16,16,17,16,15,16,
15,18,15, 9,11,11,13,13,11,12,12,14,14,11,12,12,
14,14,13,14,14,15,15,13,14,14,15,15,11,12,12,14,
14,11,12,13,14,15,12,13,13,15,14,13,14,14,15,16,
13,14,14,16,16,11,12,12,14,14,12,13,13,15,15,12,
13,13,15,14,14,14,14,16,16,14,15,14,16,15,12,13,
13,14,15,12,13,14,15,16,13,14,14,16,16,14,14,15,
16,17,15,15,15,17,17,13,14,14,15,15,14,15,14,16,
16,14,15,14,16,15,15,16,16,17,17,15,16,15,17,16,
10,12,12,13,14,11,12,13,14,14,12,13,12,14,14,13,
14,14,15,16,13,14,14,16,15,11,12,12,14,14,12,12,
13,14,15,12,13,13,15,15,13,13,15,15,17,14,14,15,
16,16,12,13,12,14,14,12,13,13,15,15,12,13,13,15,
14,14,15,15,16,16,14,15,14,16,16,13,12,14,13,16,
13,13,15,14,16,14,13,15,15,16,14,14,16,15,17,15,
15,16,16,17,13,14,14,16,15,14,15,15,16,16,14,15,
14,16,15,16,16,16,17,17,15,16,16,18,16,10,12,12,
14,14,12,12,13,14,14,12,13,12,15,14,13,14,14,15,
16,14,15,14,16,15,11,12,12,14,14,12,13,13,14,15,
13,14,13,15,15,14,14,15,15,16,14,15,15,17,16,12,
13,13,14,14,13,13,14,15,15,12,14,13,15,15,14,15,
15,16,16,14,15,15,17,15,13,14,13,15,15,13,14,14,
15,16,14,15,14,17,16,15,15,15,15,17,16,16,16,18,
17,14,14,14,16,16,15,15,15,16,16,14,15,14,16,16,
16,16,17,17,17,16,16,16,17,16,11,12,13,14,14,12,
13,13,15,15,12,13,13,15,15,14,15,15,16,16,14,15,
15,17,16,12,13,13,14,15,13,13,14,14,16,13,14,14,
15,16,15,14,16,15,17,15,15,16,16,17,12,13,13,15,
15,13,14,14,16,16,13,14,14,16,15,15,15,16,17,17,
15,16,15,17,16,14,14,15,13,16,15,14,16,14,17,15,
15,16,14,17,16,15,17,15,18,16,16,17,16,18,14,15,
15,17,16,15,16,16,17,17,15,16,15,17,16,16,17,17,
18,18,16,17,15,18,16,11,12,12,14,14,13,13,14,14,
15,13,14,13,16,14,15,15,15,16,16,15,16,15,17,16,
12,13,13,15,14,13,13,14,15,15,14,15,14,16,15,15,
15,16,15,16,16,16,16,18,16,12,13,13,15,15,14,14,
15,15,16,13,14,13,16,15,16,16,16,17,17,15,16,15,
17,15,14,15,14,16,15,14,15,15,16,16,15,16,15,17,
16,16,15,16,15,17,17,18,17,18,17,15,15,15,16,16,
16,16,16,17,17,14,15,15,17,16,17,17,18,18,18,16,
17,15,18,15, 9,11,11,13,13,11,12,12,14,14,11,12,
12,14,14,13,14,14,15,16,13,14,14,15,15,11,12,12,
14,14,12,13,13,14,15,12,13,13,14,14,14,14,15,15,
16,14,14,14,16,16,11,12,12,14,14,12,13,13,14,15,
11,13,12,14,14,13,14,14,16,16,13,14,14,16,15,13,
14,14,15,15,14,14,15,15,16,14,15,14,16,16,15,15,
16,16,17,15,16,16,17,17,12,13,13,15,15,13,14,14,
16,15,12,14,13,16,15,15,16,15,17,17,14,15,15,17,
15,10,12,12,14,14,12,12,13,14,15,12,13,12,14,14,
14,14,15,15,16,13,14,14,16,16,12,13,13,14,14,13,
13,14,14,15,13,14,13,15,15,14,15,15,15,17,14,15,
15,16,16,11,12,12,14,14,13,13,14,15,15,12,13,13,
15,14,14,15,15,16,17,14,15,14,16,15,14,14,14,16,
16,14,15,15,16,16,15,15,15,16,16,15,16,16,16,18,
16,17,16,18,17,13,13,14,15,15,14,14,15,16,16,13,
14,14,16,15,16,16,17,17,17,15,15,15,17,15,10,12,
12,14,13,12,12,13,14,14,11,13,12,14,14,13,14,14,
16,16,13,14,14,16,15,12,12,13,14,14,12,13,13,14,
15,13,13,13,15,15,14,14,15,16,16,14,15,15,16,16,
11,12,12,14,14,12,13,13,15,15,12,13,12,15,14,14,
15,14,16,16,13,15,13,16,15,13,14,14,15,16,14,15,
15,15,17,14,15,15,16,16,16,15,16,16,17,16,16,16,
17,17,13,14,12,16,13,14,15,13,16,15,13,15,13,16,
14,15,16,15,17,16,15,16,14,17,15,11,12,12,14,15,
13,13,14,14,16,13,14,13,15,14,15,15,16,16,17,15,
15,15,16,16,12,13,13,15,15,13,13,14,15,16,14,15,
14,16,15,15,15,16,15,17,16,16,16,17,17,12,13,13,
14,15,14,14,15,15,16,13,14,13,15,15,16,16,16,17,
17,15,16,15,16,15,15,15,15,16,16,14,15,15,16,17,
16,16,16,17,17,16,15,17,15,18,17,18,17,18,18,14,
14,15,15,17,15,15,16,16,17,14,15,15,16,16,17,17,
17,17,18,16,16,15,17,15,11,12,12,14,14,12,13,13,
15,15,12,13,13,15,15,14,15,15,16,16,14,15,14,17,
16,13,13,13,15,15,13,14,14,15,16,13,14,14,16,16,
15,15,16,16,17,15,16,16,17,17,12,13,13,15,14,13,
14,14,16,15,13,14,13,16,14,15,16,16,17,16,15,16,
14,17,15,14,15,15,16,17,15,15,16,16,17,15,16,16,
17,17,16,15,17,16,18,16,17,17,18,18,14,15,14,16,
13,15,16,15,17,14,15,16,14,17,14,16,17,16,18,16,
16,17,15,18,15,
};
 
static const static_codebook _44p9_p5_0 = {
5, 3125,
(char *)_vq_lengthlist__44p9_p5_0,
1, -528744448, 1616642048, 3, 0,
(long *)_vq_quantlist__44p9_p5_0,
0
};
 
static const long _vq_quantlist__44p9_p5_1[] = {
3,
2,
4,
1,
5,
0,
6,
};
 
static const char _vq_lengthlist__44p9_p5_1[] = {
2, 3, 3, 3, 3, 3, 3,
};
 
static const static_codebook _44p9_p5_1 = {
1, 7,
(char *)_vq_lengthlist__44p9_p5_1,
1, -533200896, 1611661312, 3, 0,
(long *)_vq_quantlist__44p9_p5_1,
0
};
 
static const long _vq_quantlist__44p9_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p9_p6_0[] = {
2, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 8, 9, 7,
9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 5, 7, 8, 8, 9,
10, 8, 9,10, 8, 9,10,10,10,12,10,11,11, 8,10,10,
10,11,12,10,11,10, 5, 8, 7, 8,10,10, 8,10, 9, 8,
10,10,10,10,11,10,12,11, 8,10, 9,10,11,11,10,12,
10, 5, 8, 8, 7, 9,10, 8,10, 9, 7, 9,10, 9,10,11,
9,11,11, 8,10, 9,10,11,11, 9,11,10, 7, 9, 9, 9,
10,11, 9,11,11, 9, 9,11,10,10,13,11,12,12, 9,11,
11,11,12,13,11,13,11, 7, 9, 9, 9,10,11, 9,11,10,
9,11,10,10,10,12,11,13,12, 9,11,11,11,12,12,10,
12,10, 5, 8, 8, 8, 9,10, 7,10, 9, 8, 9,10, 9,10,
11,10,11,11, 7,10, 9, 9,11,11, 9,11,10, 7, 9, 9,
9,10,11, 9,11,10, 9,11,11,10,10,12,11,12,12, 9,
10,11,11,12,13,10,12,10, 7, 9, 9, 9,11,11, 9,11,
10, 9,11,11,11,11,13,11,13,12, 9,11, 9,11,12,12,
10,13,10,
};
 
static const static_codebook _44p9_p6_0 = {
5, 243,
(char *)_vq_lengthlist__44p9_p6_0,
1, -527106048, 1620377600, 2, 0,
(long *)_vq_quantlist__44p9_p6_0,
0
};
 
static const long _vq_quantlist__44p9_p6_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44p9_p6_1[] = {
6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 8, 7,
8, 8, 7, 8, 7, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 8, 8,
8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,
8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 8,
8, 8, 9, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 9, 9, 8,
9, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8,
8, 8, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8, 8, 9, 8,
8, 9, 8,
};
 
static const static_codebook _44p9_p6_1 = {
5, 243,
(char *)_vq_lengthlist__44p9_p6_1,
1, -530841600, 1616642048, 2, 0,
(long *)_vq_quantlist__44p9_p6_1,
0
};
 
static const long _vq_quantlist__44p9_p7_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p9_p7_0[] = {
1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,
};
 
static const static_codebook _44p9_p7_0 = {
5, 3125,
(char *)_vq_lengthlist__44p9_p7_0,
1, -510105088, 1635281408, 3, 0,
(long *)_vq_quantlist__44p9_p7_0,
0
};
 
static const long _vq_quantlist__44p9_p7_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44p9_p7_1[] = {
1, 4, 4,16,16, 4, 9,11,15,16, 4,12, 8,16,16,12,
16,16,16,16,13,16,16,16,16, 5, 8,10,16,16, 9, 9,
14,15,16,12,14,14,16,16,16,16,16,16,16,16,16,16,
16,16, 5,11, 8,16,15,12,14,16,16,16, 9,15, 9,16,
16,16,16,16,16,16,16,16,16,16,16,15,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16, 6,11,11,
16,16,12,13,16,16,16,12,16,14,16,16,16,16,16,16,
16,16,16,16,16,16,11,15,15,16,16,14,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,12,
15,16,16,16,16,16,16,16,16,14,16,15,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16, 5,11,11,16,16,12,
15,16,16,16,12,16,14,16,16,16,16,16,16,16,16,16,
16,16,16,12,15,15,16,16,14,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,11,15,15,16,
16,16,16,16,16,16,15,16,14,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16, 6,11,12,16,16,11,15,16,16,16,13,16,14,16,16,
16,16,16,16,16,16,16,16,16,16,11,16,14,16,16,14,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,12,14,14,16,16,16,16,16,16,16,15,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16, 8,13,
15,16,16,15,15,16,16,16,14,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,14,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16, 7,12,12,16,16,
13,12,16,16,16,14,16,14,16,16,16,16,16,16,16,16,
16,16,16,16,13,16,16,16,16,14,14,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,12,14,16,
16,16,16,16,16,16,16,14,16,14,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16, 6,11,11,16,16,13,15,16,16,16,11,15,14,16,
16,16,16,16,16,16,14,16,16,16,16,11,16,16,16,16,
16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,11,16,14,16,16,14,16,16,16,16,13,15,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, 7,
11,11,16,16,13,13,16,16,16,13,16,13,16,16,16,16,
16,16,16,16,16,16,16,16,12,16,15,16,16,14,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,12,14,16,16,16,16,16,16,16,16,14,16,13,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16, 8,13,14,16,
16,15,16,16,16,16,14,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,
15,16,16,16,16,16,16,16,16,16,15,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,
};
 
static const static_codebook _44p9_p7_1 = {
5, 3125,
(char *)_vq_lengthlist__44p9_p7_1,
1, -514619392, 1630767104, 3, 0,
(long *)_vq_quantlist__44p9_p7_1,
0
};
 
static const long _vq_quantlist__44p9_p7_2[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p9_p7_2[] = {
1, 3, 2, 5, 4, 7, 7, 8, 8, 9,10,10,10,11,11,11,
12,12,12,13,13,13,13,13,13,
};
 
static const static_codebook _44p9_p7_2 = {
1, 25,
(char *)_vq_lengthlist__44p9_p7_2,
1, -518864896, 1620639744, 5, 0,
(long *)_vq_quantlist__44p9_p7_2,
0
};
 
static const long _vq_quantlist__44p9_p7_3[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44p9_p7_3[] = {
4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44p9_p7_3 = {
1, 25,
(char *)_vq_lengthlist__44p9_p7_3,
1, -529006592, 1611661312, 5, 0,
(long *)_vq_quantlist__44p9_p7_3,
0
};
 
static const char _huff_lengthlist__44p9_short[] = {
3, 3, 3, 3, 3, 3, 3, 3,
};
 
static const static_codebook _huff_book__44p9_short = {
1, 8,
(char *)_huff_lengthlist__44p9_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44pn1_l0_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44pn1_l0_0[] = {
1, 3, 3, 8, 8,10,10,10,10,10,10,10,10, 5, 7, 5,
9, 8,10,10,10,10,11,10,11,10, 5, 5, 7, 8, 9,10,
10,11,10,10,11,10,11,10,10,10,11,11,11,11,11,11,
11,10,11,11,10,10,10,10,11,11,11,11,11,10,11,11,
11,11,11,11,11,11,12,11,10,11,11,11,11,11,11,11,
11,11,11,11,11,10,10,11,11,12,11,11,11,11,11,11,
12,11,11,11,10,11,11,11,11,11,11,11,11,10,11,11,
10,11,10,11,11,11,11,11,11,11,11,11,11,12,11,11,
12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,11,
10,11,11,11,11,11,11,11,12,11,13,11,11,11,11,11,
11,11,11,11,11,11,12,11,13,
};
 
static const static_codebook _44pn1_l0_0 = {
2, 169,
(char *)_vq_lengthlist__44pn1_l0_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44pn1_l0_0,
0
};
 
static const long _vq_quantlist__44pn1_l0_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44pn1_l0_1[] = {
1, 4, 4, 7, 7, 4, 5, 6, 7, 7, 4, 6, 5, 7, 7, 7,
6, 7, 6, 7, 7, 7, 6, 7, 6,
};
 
static const static_codebook _44pn1_l0_1 = {
2, 25,
(char *)_vq_lengthlist__44pn1_l0_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44pn1_l0_1,
0
};
 
static const long _vq_quantlist__44pn1_l1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44pn1_l1_0[] = {
1, 4, 4, 4, 4, 4, 4, 4, 4,
};
 
static const static_codebook _44pn1_l1_0 = {
2, 9,
(char *)_vq_lengthlist__44pn1_l1_0,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44pn1_l1_0,
0
};
 
static const char _huff_lengthlist__44pn1_lfe[] = {
1, 3, 2, 3,
};
 
static const static_codebook _huff_book__44pn1_lfe = {
2, 4,
(char *)_huff_lengthlist__44pn1_lfe,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44pn1_long[] = {
2, 3, 6, 7, 9,13,17, 3, 2, 5, 7, 9,13,17, 6, 5,
5, 6, 9,12,16, 7, 7, 6, 6, 7,10,13,10,10, 9, 7,
6,10,13,13,13,12,10,10,11,15,17,17,17,14,14,15,
17,
};
 
static const static_codebook _huff_book__44pn1_long = {
2, 49,
(char *)_huff_lengthlist__44pn1_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44pn1_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44pn1_p1_0[] = {
1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44pn1_p1_0 = {
5, 243,
(char *)_vq_lengthlist__44pn1_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44pn1_p1_0,
0
};
 
static const long _vq_quantlist__44pn1_p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44pn1_p2_0[] = {
1, 5, 5, 0, 7, 7, 0, 8, 8, 0, 9, 9, 0,12,12, 0,
8, 8, 0, 9, 9, 0,13,13, 0, 8, 8, 0, 6, 6, 0,11,
11, 0,12,12, 0,12,12, 0,14,14, 0,11,12, 0,12,12,
0,15,15, 0,12,12, 0, 5, 5, 0, 5, 5, 0, 6, 6, 0,
7, 7, 0,10,10, 0, 6, 6, 0, 7, 7, 0,11,11, 0, 6,
6, 0, 7, 7, 0,11,11, 0,12,11, 0,11,11, 0,14,14,
0,10,10, 0,12,12, 0,15,15, 0,12,12, 0, 6, 6, 0,
12,12, 0,12,12, 0,12,12, 0,14,14, 0,11,11, 0,12,
12, 0,16,16, 0,12,12, 0, 0, 0, 0, 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, 8, 0,12,12, 0,12,12, 0,12,12, 0,15,
15, 0,12,12, 0,11,11, 0,16,16, 0,11,11, 0, 6, 6,
0,12,12, 0,12,12, 0,13,13, 0,15,15, 0,12,12, 0,
13,13, 0,15,15, 0,12,12, 0, 0, 0, 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 const static_codebook _44pn1_p2_0 = {
5, 243,
(char *)_vq_lengthlist__44pn1_p2_0,
1, -533200896, 1614282752, 2, 0,
(long *)_vq_quantlist__44pn1_p2_0,
0
};
 
static const long _vq_quantlist__44pn1_p2_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44pn1_p2_1[] = {
1, 3, 3, 0, 9, 9, 0, 9, 9, 0,10,10, 0, 9, 9, 0,
10,10, 0,10,10, 0,10,10, 0,10,10, 0, 7, 7, 0, 7,
7, 0, 6, 6, 0, 8, 8, 0, 7, 7, 0, 8, 8, 0, 8, 8,
0, 7, 7, 0, 8, 8, 0, 7, 7, 0, 9, 9, 0, 8, 9, 0,
10,10, 0, 9, 9, 0,10,10, 0,10,11, 0, 9, 9, 0,10,
10, 0, 9, 9, 0,11,11, 0,12,12, 0,12,12, 0,11,11,
0,12,12, 0,13,13, 0,12,12, 0,13,13, 0, 8, 8, 0,
12,12, 0,12,12, 0,13,13, 0,13,13, 0,13,13, 0,13,
13, 0,13,13, 0,13,13, 0, 7, 7, 0, 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, 9, 0,11,11, 0,12,12, 0,13,13, 0,12,
12, 0,13,13, 0,13,13, 0,12,12, 0,12,12, 0, 9, 9,
0,12,12, 0,13,13, 0,14,14, 0,13,13, 0,14,14, 0,
14,14, 0,13,13, 0,14,14, 0, 7, 7, 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 const static_codebook _44pn1_p2_1 = {
5, 243,
(char *)_vq_lengthlist__44pn1_p2_1,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44pn1_p2_1,
0
};
 
static const long _vq_quantlist__44pn1_p3_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44pn1_p3_0[] = {
1, 6, 6, 6, 8, 8, 6, 8, 8, 7, 9, 9,10,11,11, 8,
8, 8, 7, 9, 9,11,12,12, 9, 9, 9, 6, 7, 7,10,11,
11,10,11,11,10,11,11,13,13,13,12,12,12,10,12,11,
14,14,14,12,12,12, 6, 5, 5, 9, 6, 6, 9, 6, 6, 9,
7, 7,12,10,10,11, 7, 6, 9, 7, 7,13,11,11,12, 7,
7, 7, 8, 8,12,10,10,12,10,10,11,10,10,15,13,13,
13, 9, 9,12,11,11,15,14,14,15,11,11, 8, 7, 7,12,
11,11,12,11,11,11,11,11,14,13,14,14,12,12,12,11,
11,16,15,15,14,12,12, 0,10,10, 0,12,12, 0,12,12,
0,11,11, 0,14,14, 0,11,11, 0,11,11, 0,15,15, 0,
11,11, 7, 8, 8,13,11,11,12,10,10,12,11,11,15,13,
13,14,11,11,12,10,10,16,14,14,15,10,10, 9, 7, 7,
13,11,12,13,12,11,12,11,11,15,14,14,14,12,12,13,
12,12,16,15,15,15,12,12, 0,11,11, 0,12,12, 0,12,
13, 0,12,12, 0,15,15, 0,12,12, 0,12,12, 0,16,15,
0,12,12,
};
 
static const static_codebook _44pn1_p3_0 = {
5, 243,
(char *)_vq_lengthlist__44pn1_p3_0,
1, -531365888, 1616117760, 2, 0,
(long *)_vq_quantlist__44pn1_p3_0,
0
};
 
static const long _vq_quantlist__44pn1_p3_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44pn1_p3_1[] = {
2, 3, 4, 9, 9,10,12,12,12,11,10,12,12,13,12,11,
13,12,11,11,11,12,12,12,11,11,13,13,13,13,11,12,
12,14,14,12,13,13,13,13,11,13,13,13,13,11,13,13,
13,13,11,13,13,13,13,11,12,12,14,14,12,13,13,12,
12,11,13,13,13,13,11,13,13,12,12,11,13,13,13,13,
12,12,13,14,14,12,13,13,12,12,11,13,13,13,13,11,
13,13,12,12,11,13,13,13,13,12,13,13,14,14,12,13,
13,12,12,11,13,13,13,13,11,13,13,12,12,11,10,10,
10,10,12,10,10,11,11,12, 9, 9,11,11,13,11,11,10,
10,13,10,10,10,10,13,11,11,12,12,13,10,10,12,12,
14,12,11,12,12,13,11,11,11,12,13,12,12,12,12,13,
11,11,12,12,13,10,10,12,12,14,11,11,12,12,13,11,
11,12,12,13,11,11,12,12,14,12,12,12,12,14,10,10,
11,11,14,12,11,11,11,13,11,11,11,11,13,12,12,11,
11,14,12,12,12,11,14,10,10,11,11,14,12,11,11,11,
13,11,11,11,11,13,12,12,11,11,11,11,11,10,10,12,
10,11, 9, 9,12,12,12,11,11,13,12,12, 9, 9,13,13,
13,10,10,13,13,13,12,12,13,13,13,14,14,13,12,12,
11,11,14,13,13,12,12,14,13,13,11,11,13,13,13,12,
11,13,13,13,14,14,13,12,12,10,10,14,13,13,11,11,
13,13,13,10,10,13,13,13,11,11,14,13,13,14,14,14,
12,12,10,10,13,13,13,11,11,13,13,13,10,10,13,13,
13,11,11,14,13,13,14,14,14,13,13,10,10,13,13,13,
11,11,13,13,13,10,10,14,12,12, 8, 8,14,12,12, 9,
9,14,11,11, 9, 9,14,12,12, 8, 8,14,12,12, 7, 7,
15,13,13,10,10,15,12,12,10,10,15,13,13,10,10,15,
12,13, 9, 9,15,13,13,10,10,15,13,13,10,10,15,12,
12,10,10,15,13,13,10,10,15,13,13, 9, 9,15,13,13,
10,10,15,13,13,10,10,15,12,12,10,10,15,13,13, 9,
9,14,13,12, 9, 9,14,13,13, 9, 9,15,13,13,10,10,
15,12,12,10,10,15,13,13, 9, 9,15,13,13, 9, 9,14,
13,13, 9, 9,14,12,12, 8, 8,13,13,13, 8, 8,14,14,
13, 9, 9,14,14,13, 7, 7,14,14,14, 8, 8,14,14,14,
10,10,15,14,14,12,12,14,14,14, 9, 9,15,14,14,10,
10,14,14,14, 9, 9,14,14,14,10, 9,15,14,14,12,12,
14,14,14, 9, 9,15,14,14,10,10,14,14,14, 9, 9,15,
14,15, 9, 9,15,14,14,11,11,14,14,14, 8, 8,14,14,
14, 9, 9,14,14,14, 8, 8,14,15,14,10,10,15,14,14,
11,11,14,14,14, 8, 8,15,14,14, 9, 9,14,14,14, 8,
8,12,12,12,13,13,16,16,15,12,12,17,16,16,13,13,
17,16,16,11,11,17,16,16,12,12,17,16,17,13,13,17,
16,16,14,14,17,17,16,12,12,18,16,16,13,13,17,16,
17,12,12,17,17,17,13,13,18,16,16,14,14,18,17,17,
12,12,17,17,17,13,13,18,17,17,13,13,17,17,17,13,
13,17,16,16,14,14,17,17,17,12,12,16,16,17,13,13,
17,17,16,12,12,18,17,17,13,13,18,16,16,14,14,18,
17,17,12,12,19,16,17,13,13,17,16,17,12,12,13,14,
14,10,10,16,14,14,13,13,17,15,15,14,14,17,14,14,
13,13,16,14,14,13,13,17,16,15,14,14,16,16,16,15,
15,17,15,15,14,14,17,15,15,14,14,17,15,15,14,14,
17,16,15,14,14,16,16,16,15,15,18,15,15,13,13,16,
16,15,14,14,17,15,15,14,13,17,15,15,14,14,16,16,
16,15,15,18,15,14,13,13,17,15,15,14,14,18,14,15,
13,13,18,15,15,14,14,16,16,16,15,15,17,15,15,13,
13,17,15,15,14,14,17,15,15,13,13,13,11,11,10,10,
16,14,14,13,13,17,14,15,14,14,17,15,15,12,12,17,
14,14,12,12,16,15,15,14,14,16,14,14,14,14,16,15,
15,14,14,16,15,15,14,14,16,15,15,14,14,16,15,15,
14,14,16,15,14,15,15,17,15,15,14,14,17,15,15,14,
14,17,15,15,14,14,17,15,16,14,14,16,14,14,14,14,
17,15,15,13,13,17,15,15,13,13,16,15,15,13,13,17,
16,16,14,14,17,15,14,15,14,17,15,15,13,13,17,15,
15,13,13,17,15,15,13,13,14,14,14, 9, 9,14,14,14,
18,19,14,15,15,19,18,14,14,14,19,19,15,14,14,19,
19,15,16,16,19,19,15,16,16,19,19,15,15,15,19,19,
15,16,16,19,20,15,15,15,19,19,15,15,15,19,19,15,
16,16,20,20,15,15,15,18,19,15,15,16,19,20,15,15,
15,19,18,15,15,15,18,18,15,16,16,21,20,15,15,15,
19,19,15,15,15,19,19,15,15,14,19,20,15,15,15,20,
19,15,16,16,19,20,15,15,15,19,19,15,15,15,20,21,
15,14,15,19,19,14,12,12, 9, 9,14,14,15,21,19,14,
14,14,18,19,14,15,15,19,20,14,14,14,19,19,15,15,
15,19,20,15,15,14,21,19,15,15,15,20,19,15,14,15,
20,21,15,15,15,18,18,15,15,15,20,21,16,14,14,18,
19,15,15,15,20,19,15,15,15,18,21,15,15,15,19,19,
15,15,15,19,20,16,15,14,20,19,15,16,15,19,19,15,
15,15,19, 0,14,15,15,19,19,15,15,15,19,19,15,15,
14,20,19,15,15,15,20,19,15,15,15,19,19,15,15,15,
20,19,12,12,12,13,13,16,15,16,11,11,16,16,16,12,
12,17,16,16,11,11,17,16,16,12,11,17,17,17,13,13,
18,16,16,14,14,18,18,17,13,13,17,16,16,13,13,17,
17,17,13,13,17,16,17,12,12,17,15,16,13,13,17,16,
17,12,12,17,16,16,13,12,17,16,16,12,12,18,17,17,
13,13,18,16,16,13,14,18,17,17,12,12,17,16,16,12,
12,17,17,17,12,12,18,17,17,13,13,17,16,16,14,14,
17,17,17,12,12,17,16,16,12,12,18,17,17,12,12,13,
14,14, 9, 9,16,14,14,13,13,16,15,15,14,14,16,14,
14,13,13,16,14,14,13,13,17,16,15,15,15,16,15,16,
16,15,17,15,15,14,14,17,15,15,15,15,17,15,15,14,
14,17,15,15,14,14,16,15,16,16,16,17,15,15,14,14,
16,15,15,14,15,16,15,15,14,14,17,15,15,15,15,16,
16,16,15,16,18,15,14,13,14,17,15,15,14,14,17,14,
14,13,13,17,15,15,14,14,16,15,15,15,15,17,15,14,
14,14,17,15,15,14,14,17,14,14,13,13,13,11,11,11,
11,16,14,14,12,12,16,14,14,13,13,16,14,14,12,12,
16,14,14,12,12,16,15,15,13,13,17,14,14,14,14,17,
15,15,13,13,16,15,15,14,13,16,15,15,13,13,16,15,
15,13,13,16,14,14,14,14,16,15,15,13,13,16,14,15,
13,13,17,15,15,13,13,17,15,15,13,13,16,14,14,14,
14,17,15,15,12,12,17,14,15,13,13,17,15,15,12,12,
16,15,15,13,13,17,14,14,14,14,17,15,15,12,12,17,
15,15,13,13,16,15,15,12,12,14,15,15, 8, 8,14,14,
14,19,18,14,15,15,19,20,14,14,14,19,19,14,14,15,
19,20,15,16,15,19,21,15,16,16,21,19,15,15,15,20,
19,15,16,16,19,20,15,15,15,19,18,15,16,15,20,19,
15,16,16,19,20,15,15,15,19,19,15,16,15,20,20,14,
15,15,19,19,15,15,15,21,19,15,17,16,19,20,15,14,
15, 0,21,15,15,15,19,20,14,14,14,19,19,15,15,15,
20,19,15,16,16,19,19,15,15,15,19,18,15,15,15,20,
19,14,14,15,18,18,14,12,12, 9, 9,14,14,14,18,18,
14,14,14,18,18,14,15,14,19,18,14,14,14,19,18,15,
15,15,19,20,15,14,14,18,18,15,15,15,20,19,15,15,
15,18,20,15,15,15,19,18,15,15,15,19,19,15,14,14,
19,21,15,15,15,20,20,15,15,15,18,19,14,15,15,19,
20,15,15,15,20,19,15,14,14,19,21,15,15,15,18,19,
15,14,15,20,19,14,15,15,21,21,14,15,15,19,20,15,
14,14,19,20,15,15,15,19,20,15,15,14,20,20,14,15,
15,20,19,13,12,12,13,13,17,16,16,11,11,17,16,16,
12,12,18,17,16,11,11,18,16,16,11,11,17,17,17,13,
13,18,16,16,13,13,18,17,17,12,12,18,16,16,13,13,
18,17,17,12,12,18,17,17,13,13,18,16,16,14,14,18,
16,17,12,12,18,17,17,13,13,17,17,17,12,12,17,17,
17,12,12,17,16,15,13,13,18,16,16,11,11,17,16,16,
12,12,17,16,17,11,11,18,17,17,13,12,17,16,16,13,
13,17,17,17,12,12,17,16,17,12,12,18,17,17,11,11,
14,14,14, 9, 9,16,14,14,13,13,17,15,15,14,14,17,
14,14,13,13,16,14,14,13,13,17,15,15,14,14,16,16,
16,16,15,18,15,15,14,14,17,16,15,15,15,17,15,15,
14,14,17,15,15,14,15,16,16,16,15,16,18,15,15,14,
14,17,15,15,14,15,17,15,15,14,14,17,15,15,14,14,
16,16,16,15,16,17,14,14,13,13,17,15,15,14,14,18,
15,15,13,13,17,15,15,14,14,16,16,16,15,15,17,14,
14,13,13,17,15,15,14,14,17,14,14,13,13,13,11,11,
11,11,16,14,14,12,12,16,14,14,12,13,17,15,14,11,
11,17,14,14,11,11,17,15,15,13,14,17,14,14,14,14,
17,15,15,13,13,17,14,14,13,13,17,15,15,13,13,17,
15,15,13,13,17,14,14,14,14,17,15,15,13,13,18,14,
15,13,13,17,15,15,13,13,16,15,15,13,13,17,14,14,
13,13,17,15,15,12,12,16,14,14,12,12,16,15,15,12,
12,17,16,15,13,13,17,14,14,13,13,17,15,15,12,12,
16,15,15,12,12,16,15,15,12,12,13,15,15, 8, 8,14,
14,14,18,19,14,15,15,19,20,14,14,14,18,18,14,15,
15,18,18,15,16,16,19,19,15,16,17,20,20,15,15,15,
19,19,15,16,16,18,20,15,15,15,19,19,15,15,16,18,
18,15,17,16,19,19,15,15,15,18,21,15,16,16,21,20,
15,15,15,19,21,15,16,15,20,19,15,16,17,20,20,15,
15,15,19,19,15,16,16,21,20,15,15,15,19,20,15,15,
15,19,19,15,16,16,20,19,15,15,15,19,19,15,16,15,
20,21,15,15,15,21,19,14,12,12, 8, 8,14,14,14,20,
18,14,13,13,19,19,14,14,14,19,18,15,14,14,19,20,
14,15,15,20,20,15,14,14,21,20,15,15,15,20,20,15,
15,14,21,19,15,15,15,19,19,15,15,15,19,20,15,14,
14,20,20,15,15,15,19,20,15,14,14,19,20,15,15,15,
20,20,15,15,15,20,19,15,14,14,20,21,15,15,15,20,
21,15,14,14,20, 0,15,16,15,20,21,15,15,15,19,20,
15,14,14,19,19,15,15,15,19,20,15,15,15,19,19,15,
15,15,18,20,13,12,12,13,13,18,16,17,12,12,17,16,
16,12,12,17,17,16,11,11,18,16,16,11,11,17,17,18,
13,13,18,16,16,14,14,18,17,17,13,13,18,16,16,13,
13,18,17,17,12,12,17,17,16,13,13,17,16,16,13,14,
18,17,17,12,12,18,16,16,12,13,17,16,17,12,12,17,
18,17,13,13,18,16,16,13,13,18,17,17,12,12,17,16,
16,12,12,17,17,17,11,11,17,16,17,12,12,17,16,16,
13,13,17,16,16,11,11,17,16,16,12,12,18,16,17,11,
11,14,14,14, 9, 9,16,14,15,13,13,17,15,15,14,14,
17,14,14,12,12,16,14,14,13,13,18,15,15,15,15,17,
15,16,15,16,18,15,15,14,14,17,15,16,15,15,17,15,
15,14,14,18,15,15,14,14,16,16,16,16,15,17,15,15,
14,14,16,15,15,14,14,17,15,15,14,14,17,15,15,14,
14,17,16,16,15,15,17,15,14,13,13,17,15,15,14,14,
17,15,15,13,13,17,15,15,14,14,16,16,16,15,15,18,
15,14,14,14,17,15,15,14,14,18,15,15,13,13,13,12,
12,11,11,16,14,14,12,12,16,14,14,13,13,17,15,15,
12,12,17,14,14,12,12,17,15,15,14,14,17,14,14,14,
14,17,15,15,13,13,17,15,14,13,13,17,15,15,13,13,
17,15,15,13,13,16,14,14,14,14,17,15,15,13,13,16,
14,14,13,13,16,15,15,13,13,17,15,16,13,13,17,14,
14,14,13,17,15,15,12,12,16,15,14,12,12,17,15,15,
12,12,16,15,16,13,13,16,14,14,14,13,17,15,15,12,
12,16,14,14,12,12,17,15,15,12,12,14,15,15, 8, 8,
14,14,14,18,18,14,15,15,19,18,14,14,14,18,18,14,
15,15,19,20,15,16,15,21,18,15,16,16,18, 0,15,15,
15,19,20,15,16,16,20, 0,15,16,15,19,18,15,15,15,
19,19,15,16,16,21,19,15,15,15,19,19,15,16,16,20,
20,15,15,15,19,19,15,15,15,19,18,15,16,16,20,20,
15,14,15,20,19,15,15,15,19,20,15,15,15,19,19,15,
16,15,19,20,15,16,16,19,20,15,15,15,19,19,15,16,
15,20,20,15,15,15,20,18,13,12,12, 8, 8,14,14,14,
19,20,14,14,14,19,19,14,15,15,20,20,14,14,14,18,
19,15,15,15,20, 0,15,14,14,18,20,15,15,15,19,19,
15,15,15,21,19,15,15,15,19,20,15,15,15,20,21,15,
14,14,20,19,15,15,15,20,19,15,15,14,21,19,15,15,
15,19,18,15,15,15,20,19,15,14,14,19,19,15,15,16,
20,19,15,15,15,20, 0,15,15,15,19,21,15,15,15,22,
20,15,14,14,22,19,15,15,15,19,20,15,14,14,20,19,
14,15,15,19,21,
};
 
static const static_codebook _44pn1_p3_1 = {
5, 3125,
(char *)_vq_lengthlist__44pn1_p3_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44pn1_p3_1,
0
};
 
static const long _vq_quantlist__44pn1_p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44pn1_p4_0[] = {
1, 7, 7,14,14, 6, 8, 8,15,16, 7, 8, 8,16,15, 0,
14,14,17,17, 0,14,14,16,16, 7, 9, 9,16,16,10,11,
11,17,18, 9, 8, 8,16,16, 0,14,14,19,19, 0,14,14,
17,16, 8, 9, 9,16,16,12,12,12,17,17,10, 9, 9,16,
16, 0,15,14,18,20, 0,14,14,17,17, 0,15,15,18,17,
0,21, 0, 0,21, 0,13,13,17,17, 0,17,17, 0, 0, 0,
15,15,17,17, 0,15,15,17,18, 0, 0, 0, 0,21, 0,13,
13,17,17, 0,18,18, 0,21, 0,16,15,17,18, 6, 7, 7,
14,14, 9,10,10,16,16,11,10,10,15,15, 0,21, 0,20,
21, 0, 0, 0,18,20,10,10,10,15,16,12,13,13,18,18,
12,11,11,15,15, 0, 0, 0,20,20, 0, 0,21,19,19,12,
11,11,15,15,15,14,14,18,18,13,11,11,15,16, 0, 0,
0,20,19, 0, 0, 0,20,21, 0, 0,20,19,19, 0, 0, 0,
0, 0, 0,20, 0,17,18, 0, 0,21, 0, 0, 0, 0, 0,21,
0, 0,21, 0,20,19, 0, 0, 0, 0, 0, 0,21, 0,18,18,
0, 0, 0,21, 0, 0, 0, 0, 0,20, 7, 6, 6,13,13, 9,
6, 6,12,12, 9, 7, 7,14,14, 0,10,10,12,12, 0,11,
11,15,15, 9, 7, 7,14,14,12, 9, 9,14,14,10, 7, 7,
14,13, 0,11,11,16,15, 0,11,11,14,14, 9, 7, 7,14,
14,13,10,10,14,14,11, 7, 7,14,13, 0,11,11,16,16,
0,11,11,14,14, 0,12,12,16,16, 0,19, 0,17,18, 0,
10,10,14,14, 0,15,14, 0, 0, 0,12,12,14,14, 0,12,
12,15,15, 0,20, 0,18,19, 0,10,10,14,14, 0,16,15,
0,20, 0,13,13,14,14, 0,11,11,13,13, 0,12,13,16,
16, 0,12,12,16,16, 0,16,16, 0,21, 0,17,18, 0, 0,
0,12,12,16,16, 0,15,15,18, 0, 0,12,12,16,16, 0,
17,16,21,21, 0,16,17, 0, 0, 0,13,13,17,16, 0,16,
16,20,21, 0,12,12,17,16, 0,17,17, 0,21, 0,17,17,
21,21, 0,17,18, 0, 0, 0, 0, 0, 0, 0, 0,15,15, 0,
0, 0,18,21, 0, 0, 0,18,19, 0, 0, 0,18,17,21,21,
0, 0, 0, 0, 0, 0,16,16, 0, 0, 0, 0, 0, 0, 0, 0,
19,19, 0, 0, 0,11,11,12,12, 0,11,11,10,10, 0,12,
12,13,13, 0,12,12, 9, 9, 0,14,14,13,13, 0,12,12,
13,13, 0,14,14,12,13, 0,11,11,12,12, 0,13,13,13,
13, 0,13,13,13,13, 0,12,12,13,13, 0,14,14,12,12,
0,11,11,12,12, 0,14,13,14,14, 0,13,13,13,13, 0,
15,15,14,15, 0, 0, 0,16,16, 0,12,12,13,13, 0,16,
17,20,21, 0,14,13,12,12, 0,14,14,14,14, 0,21, 0,
16,16, 0,12,12,13,13, 0,18,17,21, 0, 0,14,14,13,
13, 7, 8, 8,17,17,11,10,10,18,18,12,10,10,17,17,
0,15,15,20,18, 0,15,15,17,17,11, 9, 9,17,17,14,
12,12,19,19,13, 9, 9,16,16, 0,15,14, 0,19, 0,14,
14,16,16,12,10,10,20,18,16,13,13,21,20,14,10,10,
17,17, 0,15,15,21,20, 0,15,14,17,17, 0,15,15,21,
21, 0, 0,21, 0, 0, 0,13,13,18,18, 0,19,16, 0, 0,
0,15,15,17,16, 0,16,16, 0,21, 0, 0, 0, 0,21, 0,
13,14,18,17, 0,20,19, 0, 0, 0,15,15,18,18, 8, 7,
7,15,15,12,11,11,17,16,13,11,11,16,16, 0, 0, 0,
21,20, 0, 0, 0, 0,20,11,10,10,17,17,14,13,13,19,
18,14,11,11,16,16, 0,20, 0,21,19, 0, 0,21, 0,20,
12,11,11,17,17,16,15,15, 0,19,14,11,11,17,16, 0,
21, 0, 0,19, 0, 0, 0,21,20, 0, 0,21,20, 0, 0, 0,
0, 0, 0, 0, 0, 0,19,21, 0, 0, 0, 0, 0, 0, 0, 0,
19,20, 0, 0, 0,20,21, 0, 0, 0, 0, 0, 0,20, 0,19,
21, 0, 0, 0, 0, 0, 0, 0, 0,21,20,11,10, 9,15,15,
14,11,11,15,15,14,11,11,16,16, 0,14,14,14,14, 0,
16,15,17,16,13,11,11,16,16,16,13,13,16,16,15,10,
10,15,15, 0,14,15,17,17, 0,14,14,16,15,13,11,11,
16,16,17,15,14,16,16,15,10,10,15,15, 0,15,15,17,
18, 0,15,15,16,16, 0,16,16,17,17, 0,21, 0,21,20,
0,13,13,15,15, 0,18,18, 0,21, 0,15,15,15,15, 0,
16,16,17,17, 0, 0, 0, 0,18, 0,13,13,15,15, 0,19,
18, 0, 0, 0,15,15,16,16, 0,12,12,15,15, 0,13,13,
17,17, 0,13,13,17,18, 0,16,17,21, 0, 0,20,18, 0,
0, 0,13,13,17,17, 0,15,15, 0,18, 0,12,12,17,18,
0,16,16, 0, 0, 0,17,17,21, 0, 0,13,13,18,18, 0,
16,16,21,21, 0,12,12,17,18, 0,16,17,21, 0, 0,17,
17, 0,21, 0,17,18, 0, 0, 0, 0, 0, 0, 0, 0,16,15,
0,21, 0,21,19, 0, 0, 0,18,18, 0, 0, 0,18,19, 0,
0, 0, 0, 0, 0, 0, 0,16,16,21,21, 0,20,19, 0, 0,
0,19,21, 0,21, 0,12,12,15,15, 0,12,12,15,16, 0,
13,13,16,16, 0,14,14,15,15, 0,16,15,17,17, 0,13,
13,17,17, 0,15,15,16,18, 0,12,12,16,16, 0,14,14,
17,17, 0,15,14,16,16, 0,13,13,16,16, 0,16,15,17,
17, 0,12,12,16,16, 0,15,15,18,18, 0,14,14,17,16,
0,16,16,17,18, 0, 0, 0,20,21, 0,13,13,16,17, 0,
17,17, 0, 0, 0,15,15,16,16, 0,15,16,17,17, 0, 0,
0,19, 0, 0,13,13,15,16, 0,19,18, 0, 0, 0,16,15,
16,17, 8, 8, 8,17,17,13,11,10,17,18,13,10,10,17,
17, 0,15,15,20,19, 0,15,15,17,17,12,10,10,19,18,
15,12,12,20,18,14,10,10,17,16, 0,15,15,20,20, 0,
14,15,16,16,13,10,10,17,17,17,14,14, 0,18,15,10,
10,17,17, 0,16,15,20,20, 0,14,14,17,17, 0,15,16,
20,20, 0, 0,21, 0, 0, 0,13,13,17,17, 0,18,17, 0,
0, 0,15,16,17,18, 0,15,15,18,21, 0, 0, 0,21, 0,
0,13,13,18,18, 0,19,19, 0, 0, 0,16,16,18,17, 9,
8, 8,15,15,12,11,11,16,16,13,11,11,16,15, 0, 0,
0, 0,21, 0,21, 0,19,19,12,11,11,17,18,15,13,13,
18,19,14,11,11,16,16, 0, 0,21,21,19, 0, 0, 0,21,
20,13,11,11,18,17,17,14,15,20,21,15,11,12,16,16,
0, 0, 0,20, 0, 0, 0,21, 0,19, 0, 0, 0, 0,19, 0,
0, 0, 0, 0, 0,21,21,19,19, 0, 0, 0,21, 0, 0, 0,
0,19,21, 0, 0, 0,19,20, 0, 0, 0,21, 0, 0, 0,21,
19,19, 0, 0, 0, 0, 0, 0, 0, 0,21,20, 0,11,11,15,
15, 0,12,12,15,16, 0,12,12,16,16, 0,15,15,16,15,
0,16,16,17,17, 0,12,12,17,17, 0,14,14,17,17, 0,
11,11,16,16, 0,15,15,19,18, 0,15,15,16,16, 0,12,
12,17,16, 0,14,15,16,16, 0,11,11,15,15, 0,16,16,
18,19, 0,15,15,15,16, 0,17,17,18,20, 0,21, 0,21,
19, 0,14,14,16,16, 0,18,18, 0, 0, 0,16,16,15,15,
0,16,16,18,17, 0, 0, 0,19,20, 0,14,14,16,16, 0,
19,19, 0, 0, 0,16,17,15,15, 0,12,12,14,15, 0,13,
13,16,17, 0,12,12,17,17, 0,17,16, 0, 0, 0,18,17,
21, 0, 0,13,13,19,17, 0,15,15,20,21, 0,12,12,17,
17, 0,17,17, 0, 0, 0,17,17, 0, 0, 0,13,13,17,18,
0,16,16,21, 0, 0,12,12,17,17, 0,17,17, 0, 0, 0,
17,17, 0, 0, 0,18,21, 0, 0, 0, 0, 0, 0, 0, 0,15,
15,21, 0, 0,20,21, 0, 0, 0,18,19, 0, 0, 0,18,17,
0, 0, 0, 0, 0, 0, 0, 0,16,16,21, 0, 0,21,21, 0,
0, 0,18,19, 0, 0, 0,12,12,16,16, 0,13,13,16,17,
0,13,13,17,16, 0,14,14,16,16, 0,16,15,19,18, 0,
13,13,17,17, 0,15,15,18,18, 0,12,12,16,16, 0,15,
15,18,19, 0,15,15,17,16, 0,13,13,17,17, 0,16,16,
18,17, 0,12,12,17,16, 0,15,15,18,18, 0,15,15,17,
17, 0,16,16, 0,19, 0, 0, 0, 0, 0, 0,14,14,16,17,
0,18,18, 0, 0, 0,15,15,17,17, 0,16,16,21,19, 0,
21, 0,21,21, 0,13,14,16,16, 0,19,19, 0, 0, 0,15,
16,16,16, 0,11,11,17,16, 0,15,14,19,18, 0,14,14,
19,19, 0,18,17,18,20, 0,17,17,18,19, 0,13,13,17,
17, 0,16,17,21,18, 0,13,13,17,16, 0,18,17,19, 0,
0,16,17,18,18, 0,12,12,19,18, 0,18,18,20,20, 0,
13,13,17,17, 0,17,17,21, 0, 0,16,17,17,18, 0,18,
17,19,18, 0, 0, 0, 0, 0, 0,14,14,17,17, 0,19,19,
21, 0, 0,16,16,16,17, 0,17,17,19,20, 0, 0, 0, 0,
21, 0,15,15,17,18, 0,21,21, 0, 0, 0,17,17,17,18,
0,10,10,15,15, 0,15,14,17,18, 0,14,14,16,16, 0,
0, 0,18, 0, 0,21, 0,19, 0, 0,13,13,17,16, 0,17,
17,18, 0, 0,14,14,16,15, 0, 0, 0,21, 0, 0,21, 0,
19,18, 0,13,13,17,17, 0,18,18,20,20, 0,15,15,16,
16, 0, 0, 0,21,21, 0, 0, 0,20,20, 0, 0, 0,19, 0,
0, 0, 0, 0, 0, 0,21,20,18,18, 0, 0, 0, 0, 0, 0,
0, 0, 0,20, 0, 0, 0, 0,20, 0, 0, 0, 0, 0, 0, 0,
0,19,18, 0, 0, 0, 0,21, 0, 0, 0,18,20, 0,18,19,
16,17, 0,21,19,17,17, 0, 0,21,18,18, 0, 0,21,20,
19, 0, 0, 0,20,20, 0, 0,21,17,17, 0, 0, 0,19,19,
0,20,20,17,17, 0, 0, 0, 0,20, 0, 0,20,18,18, 0,
21,20,17,17, 0, 0, 0,20,21, 0,19, 0,17,17, 0, 0,
21, 0, 0, 0,20, 0,18,19, 0, 0, 0,21,21, 0, 0, 0,
0,21, 0,20,20,17,17, 0, 0, 0, 0, 0, 0,21, 0,18,
17, 0, 0, 0,20,19, 0, 0, 0, 0,21, 0,20,20,17,17,
0, 0, 0, 0, 0, 0,21,21,18,18, 0,12,12,15,14, 0,
14,14,17,17, 0,14,14,17,16, 0,18,18,21, 0, 0,19,
20, 0, 0, 0,13,13,18,17, 0,16,16,19,18, 0,13,13,
17,17, 0,17,17, 0, 0, 0,17,17,21, 0, 0,13,13,17,
17, 0,17,17,21,20, 0,13,13,18,17, 0,18,19,21,21,
0,19,18, 0, 0, 0,18,17, 0, 0, 0, 0, 0, 0, 0, 0,
15,16, 0, 0, 0,21,21, 0, 0, 0,20,18,21, 0, 0,17,
18, 0, 0, 0, 0, 0, 0, 0, 0,15,16, 0, 0, 0, 0,20,
0, 0, 0, 0,19, 0, 0, 0,15,15,18,19, 0,18,17,21,
0, 0,16,18, 0,20, 0,17,18,21, 0, 0,18,20, 0, 0,
0,16,16,21,21, 0,19,20,21, 0, 0,16,15, 0,21, 0,
18,20, 0, 0, 0,18,19, 0, 0, 0,16,15,21,21, 0,21,
0, 0, 0, 0,16,15,21, 0, 0,20,19, 0, 0, 0,18,21,
21, 0, 0,20,18, 0, 0, 0, 0, 0, 0, 0, 0,16,16, 0,
20, 0,21, 0, 0, 0, 0,17,18,20,21, 0,18,18,21,21,
0, 0, 0, 0, 0, 0,16,16,20, 0, 0, 0,21, 0, 0, 0,
21,18, 0, 0, 0,12,12,20,17, 0,15,15,19,18, 0,14,
14,19,18, 0,18,17,21,19, 0,17,17,21,17, 0,13,13,
21,19, 0,16,17,20,19, 0,13,13,16,16, 0,17,17,20,
21, 0,16,16,19,17, 0,13,13,18,18, 0,17,19,19,19,
0,13,13,17,17, 0,18,18, 0,19, 0,16,17,18,18, 0,
16,17,19,21, 0, 0, 0, 0, 0, 0,15,15,16,17, 0,20,
19,21, 0, 0,17,17,17,17, 0,17,17,21,19, 0, 0, 0,
0, 0, 0,15,15,17,17, 0,21, 0, 0, 0, 0,18,18,17,
17, 0,10,10,15,15, 0,15,15,17,17, 0,15,14,16,16,
0, 0, 0,21,19, 0,21,21,19,21, 0,13,13,17,16, 0,
17,17,18,19, 0,14,15,16,15, 0, 0, 0,21,19, 0,21,
21,18,19, 0,14,14,16,17, 0,18,18,18,19, 0,15,15,
15,16, 0, 0,21, 0,21, 0, 0, 0,19,20, 0, 0, 0,21,
19, 0, 0, 0, 0, 0, 0,21,21,19,17, 0, 0, 0, 0, 0,
0, 0, 0,21,21, 0,21, 0, 0,21, 0, 0, 0, 0, 0, 0,
21,21,19,18, 0, 0, 0, 0, 0, 0, 0, 0, 0,19, 0,21,
18,18,17, 0,21, 0,20,20, 0, 0, 0,18,20, 0, 0,21,
18,21, 0, 0, 0,21,18, 0, 0, 0, 0,19, 0, 0, 0,21,
21, 0,20,21,17,19, 0,21, 0,21, 0, 0,21, 0,18,18,
0,20,21,17,18, 0, 0, 0,21,19, 0,20,21,17,18, 0,
0, 0,21,21, 0, 0, 0,20,19, 0, 0, 0,21,21, 0, 0,
0, 0, 0, 0,21,21,19,18, 0, 0, 0, 0, 0, 0, 0,21,
19,18, 0,21,21,19, 0, 0, 0, 0,21, 0, 0,21,21,18,
17, 0, 0, 0, 0, 0, 0,21, 0,21,18, 0,12,12,14,14,
0,15,14,17,17, 0,14,14,17,16, 0,19,17, 0, 0, 0,
19,19, 0, 0, 0,13,13,17,17, 0,17,17,20,20, 0,13,
13,18,18, 0,18,17, 0, 0, 0,18,21, 0, 0, 0,13,13,
17,17, 0,18,18,21,20, 0,14,14,18,19, 0,19,18,21,
0, 0,19,19, 0, 0, 0,20,18,20, 0, 0, 0, 0, 0, 0,
0,15,16, 0, 0, 0,21,21, 0, 0, 0,19,19, 0, 0, 0,
18,18, 0, 0, 0, 0, 0, 0, 0, 0,16,16, 0,21, 0, 0,
0, 0, 0, 0,19,20, 0, 0, 0,15,15,20,21, 0,17,17,
21,21, 0,17,17, 0, 0, 0,19,18, 0, 0, 0,18,19, 0,
0, 0,17,16, 0,21, 0, 0,20, 0, 0, 0,16,16, 0,20,
0,19,19, 0,21, 0,19,18, 0,21, 0,16,16, 0, 0, 0,
21,21, 0, 0, 0,16,16, 0, 0, 0,21,21, 0, 0, 0,19,
19, 0, 0, 0,20, 0, 0, 0, 0, 0, 0, 0, 0, 0,17,17,
0,21, 0, 0,20, 0, 0, 0,20,18,21,21, 0,19,18, 0,
20, 0, 0, 0, 0, 0, 0,16,17,21, 0, 0, 0,21, 0, 0,
0,19,20,21,20,
};
 
static const static_codebook _44pn1_p4_0 = {
5, 3125,
(char *)_vq_lengthlist__44pn1_p4_0,
1, -528744448, 1616642048, 3, 0,
(long *)_vq_quantlist__44pn1_p4_0,
0
};
 
static const long _vq_quantlist__44pn1_p4_1[] = {
3,
2,
4,
1,
5,
0,
6,
};
 
static const char _vq_lengthlist__44pn1_p4_1[] = {
2, 3, 3, 3, 3, 3, 3,
};
 
static const static_codebook _44pn1_p4_1 = {
1, 7,
(char *)_vq_lengthlist__44pn1_p4_1,
1, -533200896, 1611661312, 3, 0,
(long *)_vq_quantlist__44pn1_p4_1,
0
};
 
static const long _vq_quantlist__44pn1_p5_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44pn1_p5_0[] = {
1, 7, 7, 6, 8, 8, 7, 8, 8, 7, 9, 9,11,11,11, 9,
8, 8, 7, 9, 9,11,12,11, 9, 9, 9, 6, 7, 7,10,11,
11,10,10,10,10,11,11,15,14,14,12,12,12,11,11,11,
14,14,14,12,12,12, 5, 6, 6, 8, 5, 5, 8, 7, 7, 8,
8, 8,12,10,10,10, 7, 7, 8, 7, 7,12,10,10,10, 7,
7, 6, 7, 7,12,11,11,12,10,10,11,10,10,14,14,13,
13,10,10,11,10,10,16,14,14,14,11,10, 7, 7, 7,13,
12,12,12,12,11,11,11,11,15,14,17,13,12,12,12,11,
11,15,15,15,14,13,13,10, 9, 9,14,12,11,13,11,11,
12,11,11,16,15,14,14,11,11,12,11,11,17,14,14,15,
11,11, 7, 8, 8,12,11,11,13,10,10,11,10,10,17,14,
13,14,10,10,12,10,10,18,15,15,14,10,10, 8, 7, 7,
13,12,12,13,11,11,12,11,11,16,14,15,14,12,12,12,
11,11,18,16,16,14,12,12,11,10,10,13,12,11,13,11,
11,13,12,12, 0,15,14,14,11,11,13,11,11,16,15,15,
15,11,11,
};
 
static const static_codebook _44pn1_p5_0 = {
5, 243,
(char *)_vq_lengthlist__44pn1_p5_0,
1, -527106048, 1620377600, 2, 0,
(long *)_vq_quantlist__44pn1_p5_0,
0
};
 
static const long _vq_quantlist__44pn1_p5_1[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44pn1_p5_1[] = {
2, 6, 7, 6, 8, 8, 7, 7, 8, 7, 8, 8, 9, 9, 9, 8,
7, 7, 8, 8, 8, 9, 9, 9, 9, 8, 8, 6, 6, 6, 9, 7,
7, 9, 7, 7, 9, 8, 8,10, 8, 8,10, 8, 8,10, 8, 8,
10, 9, 8,10, 8, 8, 7, 6, 6, 9, 6, 6, 9, 6, 6, 9,
7, 7,10, 8, 8,10, 6, 6, 9, 7, 7,10, 8, 8,10, 6,
6, 7, 7, 7,11, 9, 9,11, 9, 9,10, 9, 9,12,10,10,
12, 8, 8,11, 9, 9,13, 9,10,12, 8, 8, 8, 7, 7,11,
9,10,11,10,10,10, 9, 9,11,11,11,11, 9, 9,11,10,
9,12,11,11,11, 9,10,10, 8, 8,11, 9,10,11, 9, 9,
11, 9, 9,12,10,10,11, 9, 9,11, 9, 9,12,10,11,11,
9, 9, 8, 8, 8,12, 9, 9,12, 9, 9,11, 9, 9,13, 9,
9,13, 8, 8,12, 9, 9,13,10,10,12, 8, 8, 9, 7, 7,
11,10,10,11,10,10,11,10,10,12,11,11,11,10, 9,11,
10,10,11,11,11,11, 9, 9,11, 9, 9,12,10,10,11,10,
10,12,10,10,11,11,11,11, 9, 9,11,10,10,12,11,11,
11, 9, 9,
};
 
static const static_codebook _44pn1_p5_1 = {
5, 243,
(char *)_vq_lengthlist__44pn1_p5_1,
1, -530841600, 1616642048, 2, 0,
(long *)_vq_quantlist__44pn1_p5_1,
0
};
 
static const long _vq_quantlist__44pn1_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44pn1_p6_0[] = {
1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,
};
 
static const static_codebook _44pn1_p6_0 = {
5, 243,
(char *)_vq_lengthlist__44pn1_p6_0,
1, -516716544, 1630767104, 2, 0,
(long *)_vq_quantlist__44pn1_p6_0,
0
};
 
static const long _vq_quantlist__44pn1_p6_1[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44pn1_p6_1[] = {
1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
12,13,13,14,14,15,15,15,15,
};
 
static const static_codebook _44pn1_p6_1 = {
1, 25,
(char *)_vq_lengthlist__44pn1_p6_1,
1, -518864896, 1620639744, 5, 0,
(long *)_vq_quantlist__44pn1_p6_1,
0
};
 
static const long _vq_quantlist__44pn1_p6_2[] = {
12,
11,
13,
10,
14,
9,
15,
8,
16,
7,
17,
6,
18,
5,
19,
4,
20,
3,
21,
2,
22,
1,
23,
0,
24,
};
 
static const char _vq_lengthlist__44pn1_p6_2[] = {
3, 5, 4, 5, 4, 5, 4, 5, 5, 5, 4, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44pn1_p6_2 = {
1, 25,
(char *)_vq_lengthlist__44pn1_p6_2,
1, -529006592, 1611661312, 5, 0,
(long *)_vq_quantlist__44pn1_p6_2,
0
};
 
static const char _huff_lengthlist__44pn1_short[] = {
4, 3, 7, 9,12,16,16, 3, 2, 5, 7,11,14,15, 7, 4,
5, 6, 9,12,15, 8, 5, 5, 5, 8,10,14, 9, 7, 6, 6,
8,10,12,12,10,10, 7, 6, 8,10,15,12,10, 6, 4, 7,
9,
};
 
static const static_codebook _huff_book__44pn1_short = {
2, 49,
(char *)_huff_lengthlist__44pn1_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
/contrib/sdk/sources/libvorbis-1.3.7/lib/books/coupled/res_books_stereo.h
0,0 → 1,15782
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: static codebooks autogenerated by huff/huffbuld
 
********************************************************************/
 
#include "codebook.h"
 
static const long _vq_quantlist__16c0_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__16c0_s_p1_0[] = {
1, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0,
0, 0, 0, 7, 9,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
0, 0, 0, 0, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 8, 8, 0, 0, 0, 0,
0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 8,10,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, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0, 0,
0, 0, 0, 9, 9,12, 0, 0, 0, 0, 0, 0,10,12,11, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0,
0, 0, 0, 0, 9,12,10, 0, 0, 0, 0, 0, 0,10,11,12,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 8, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0,
0, 0, 0, 0, 8,10,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,12,11, 0,
0, 0, 0, 0, 0, 9,10,12, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,11,12,
0, 0, 0, 0, 0, 0, 9,12, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _16c0_s_p1_0 = {
8, 6561,
(char *)_vq_lengthlist__16c0_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__16c0_s_p1_0,
0
};
 
static const long _vq_quantlist__16c0_s_p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__16c0_s_p3_0[] = {
1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 7, 6, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 6, 6, 9, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _16c0_s_p3_0 = {
4, 625,
(char *)_vq_lengthlist__16c0_s_p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__16c0_s_p3_0,
0
};
 
static const long _vq_quantlist__16c0_s_p4_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__16c0_s_p4_0[] = {
1, 3, 2, 7, 8, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _16c0_s_p4_0 = {
2, 81,
(char *)_vq_lengthlist__16c0_s_p4_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__16c0_s_p4_0,
0
};
 
static const long _vq_quantlist__16c0_s_p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__16c0_s_p5_0[] = {
1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
8, 8, 0, 0, 0, 7, 7, 7, 7, 8, 8, 0, 0, 0, 7, 7,
8, 8, 9, 9, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0, 0, 0,
8, 9, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
10,
};
 
static const static_codebook _16c0_s_p5_0 = {
2, 81,
(char *)_vq_lengthlist__16c0_s_p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__16c0_s_p5_0,
0
};
 
static const long _vq_quantlist__16c0_s_p6_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__16c0_s_p6_0[] = {
1, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,11,
11,11, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,
11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
11,11,12,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
10,11,11,12,12,12,13, 0, 0, 0, 9, 9, 9, 9,10,10,
10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,10,10,10,
10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
10,10,11,11,12,12,13,13,13,13, 0, 0, 0, 0, 0, 9,
9,10,10,11,11,12,12,13,13,13,14, 0, 0, 0, 0, 0,
10,10,10,11,11,11,12,12,13,13,13,14, 0, 0, 0, 0,
0, 0, 0,10,10,11,11,12,12,13,13,14,14, 0, 0, 0,
0, 0, 0, 0,11,11,12,12,13,13,13,13,14,14, 0, 0,
0, 0, 0, 0, 0,11,11,12,12,12,13,13,14,15,14, 0,
0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,14,14,15,
0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,14,13,14,
14,
};
 
static const static_codebook _16c0_s_p6_0 = {
2, 289,
(char *)_vq_lengthlist__16c0_s_p6_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__16c0_s_p6_0,
0
};
 
static const long _vq_quantlist__16c0_s_p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__16c0_s_p7_0[] = {
1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,11,10,10,11,
11,10, 4, 7, 7,10,10,10,11,10,10, 6,10,10,11,11,
11,11,11,10, 6, 9, 9,11,12,12,11, 9, 9, 6, 9,10,
11,12,12,11, 9,10, 7,11,11,11,11,11,12,13,12, 6,
9,10,11,10,10,12,13,13, 6,10, 9,11,10,10,11,12,
13,
};
 
static const static_codebook _16c0_s_p7_0 = {
4, 81,
(char *)_vq_lengthlist__16c0_s_p7_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__16c0_s_p7_0,
0
};
 
static const long _vq_quantlist__16c0_s_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__16c0_s_p7_1[] = {
1, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7,
8, 8, 8, 9, 9, 9,10,10,10, 6, 7, 8, 8, 8, 8, 9,
8,10,10,10, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10, 7,
7, 8, 8, 9, 9, 8, 9,10,10,10, 8, 8, 9, 9, 9, 9,
9, 9,11,11,11, 8, 8, 9, 9, 9, 9, 9,10,10,11,11,
9, 9, 9, 9, 9, 9, 9,10,11,11,11,10,11, 9, 9, 9,
9,10, 9,11,11,11,10,11,10,10, 9, 9,10,10,11,11,
11,11,11, 9, 9, 9, 9,10,10,
};
 
static const static_codebook _16c0_s_p7_1 = {
2, 121,
(char *)_vq_lengthlist__16c0_s_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__16c0_s_p7_1,
0
};
 
static const long _vq_quantlist__16c0_s_p8_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__16c0_s_p8_0[] = {
1, 4, 4, 7, 7, 7, 7, 7, 6, 8, 8,10,10, 6, 5, 6,
8, 8, 8, 8, 8, 8, 8, 9,10,10, 7, 6, 6, 8, 8, 8,
8, 8, 8, 8, 8,10,10, 0, 8, 8, 8, 8, 9, 8, 9, 9,
9,10,10,10, 0, 9, 8, 8, 8, 9, 9, 8, 8, 9, 9,10,
10, 0,12,11, 8, 8, 9, 9, 9, 9,10,10,11,10, 0,12,
13, 8, 8, 9,10, 9, 9,11,11,11,12, 0, 0, 0, 8, 8,
8, 8,10, 9,12,13,12,14, 0, 0, 0, 8, 8, 8, 9,10,
10,12,12,13,14, 0, 0, 0,13,13, 9, 9,11,11, 0, 0,
14, 0, 0, 0, 0,14,14,10,10,12,11,12,14,14,14, 0,
0, 0, 0, 0,11,11,13,13,14,13,14,14, 0, 0, 0, 0,
0,12,13,13,12,13,14,14,14,
};
 
static const static_codebook _16c0_s_p8_0 = {
2, 169,
(char *)_vq_lengthlist__16c0_s_p8_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__16c0_s_p8_0,
0
};
 
static const long _vq_quantlist__16c0_s_p8_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__16c0_s_p8_1[] = {
1, 4, 3, 5, 5, 7, 7, 7, 6, 6, 7, 7, 7, 5, 5, 7,
7, 7, 6, 6, 7, 7, 7, 6, 6,
};
 
static const static_codebook _16c0_s_p8_1 = {
2, 25,
(char *)_vq_lengthlist__16c0_s_p8_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__16c0_s_p8_1,
0
};
 
static const long _vq_quantlist__16c0_s_p9_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__16c0_s_p9_0[] = {
1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7,
};
 
static const static_codebook _16c0_s_p9_0 = {
4, 81,
(char *)_vq_lengthlist__16c0_s_p9_0,
1, -518803456, 1628680192, 2, 0,
(long *)_vq_quantlist__16c0_s_p9_0,
0
};
 
static const long _vq_quantlist__16c0_s_p9_1[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__16c0_s_p9_1[] = {
1, 5, 5, 5, 5, 9,11,11,10,10,10,10,10,10,10, 7,
6, 6, 6, 6,10,10,10,10,10,10,10,10,10,10, 7, 6,
6, 6, 6,10, 9,10,10,10,10,10,10,10,10,10, 7, 7,
8, 9,10,10,10,10,10,10,10,10,10,10,10, 8, 7,10,
10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,
};
 
static const static_codebook _16c0_s_p9_1 = {
2, 225,
(char *)_vq_lengthlist__16c0_s_p9_1,
1, -520986624, 1620377600, 4, 0,
(long *)_vq_quantlist__16c0_s_p9_1,
0
};
 
static const long _vq_quantlist__16c0_s_p9_2[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__16c0_s_p9_2[] = {
1, 5, 5, 7, 8, 8, 7, 9, 9, 9,12,12,11,12,12,10,
10,11,12,12,12,11,12,12, 8, 9, 8, 7, 9,10,10,11,
11,10,11,12,10,12,10,12,12,12,11,12,11, 9, 8, 8,
9,10, 9, 8, 9,10,12,12,11,11,12,11,10,11,12,11,
12,12, 8, 9, 9, 9,10,11,12,11,12,11,11,11,11,12,
12,11,11,12,12,11,11, 9, 9, 8, 9, 9,11, 9, 9,10,
9,11,11,11,11,12,11,11,10,12,12,12, 9,12,11,10,
11,11,11,11,12,12,12,11,11,11,12,10,12,12,12,10,
10, 9,10, 9,10,10, 9, 9, 9,10,10,12,10,11,11, 9,
11,11,10,11,11,11,10,10,10, 9, 9,10,10, 9, 9,10,
11,11,10,11,10,11,10,11,11,10,11,11,11,10, 9,10,
10, 9,10, 9, 9,11, 9, 9,11,10,10,11,11,10,10,11,
10,11, 8, 9,11,11,10, 9,10,11,11,10,11,11,10,10,
10,11,10, 9,10,10,11, 9,10,10, 9,11,10,10,10,10,
11,10,11,11, 9,11,10,11,10,10,11,11,10,10,10, 9,
10,10,11,11,11, 9,10,10,10,10,10,11,10,10,10, 9,
10,10,11,10,10,10,10,10, 9,10,11,10,10,10,10,11,
11,11,10,10,10,10,10,11,10,11,10,11,10,10,10, 9,
11,11,10,10,10,11,11,10,10,10,10,10,10,10,10,11,
11, 9,10,10,10,11,10,11,10,10,10,11, 9,10,11,10,
11,10,10, 9,10,10,10,11,10,11,10,10,10,10,10,11,
11,10,11,11,10,10,11,11,10, 9, 9,10,10,10,10,10,
9,11, 9,10,10,10,11,11,10,10,10,10,11,11,11,10,
9, 9,10,10,11,10,10,10,10,10,11,11,11,10,10,10,
11,11,11, 9,10,10,10,10, 9,10, 9,10,11,10,11,10,
10,11,11,10,11,11,11,11,11,10,11,10,10,10, 9,11,
11,10,11,11,11,11,11,11,11,11,11,10,11,10,10,10,
10,11,10,10,11, 9,10,10,10,
};
 
static const static_codebook _16c0_s_p9_2 = {
2, 441,
(char *)_vq_lengthlist__16c0_s_p9_2,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__16c0_s_p9_2,
0
};
 
static const char _huff_lengthlist__16c0_s_single[] = {
3, 4,19, 7, 9, 7, 8,11, 9,12, 4, 1,19, 6, 7, 7,
8,10,11,13,18,18,18,18,18,18,18,18,18,18, 8, 6,
18, 8, 9, 9,11,12,14,18, 9, 6,18, 9, 7, 8, 9,11,
12,18, 7, 6,18, 8, 7, 7, 7, 9,11,17, 8, 8,18, 9,
7, 6, 6, 8,11,17,10,10,18,12, 9, 8, 7, 9,12,18,
13,15,18,15,13,11,10,11,15,18,14,18,18,18,18,18,
16,16,18,18,
};
 
static const static_codebook _huff_book__16c0_s_single = {
2, 100,
(char *)_huff_lengthlist__16c0_s_single,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__16c1_s_long[] = {
2, 5,20, 7,10, 7, 8,10,11,11, 4, 2,20, 5, 8, 6,
7, 9,10,10,20,20,20,20,19,19,19,19,19,19, 7, 5,
19, 6,10, 7, 9,11,13,17,11, 8,19,10, 7, 7, 8,10,
11,15, 7, 5,19, 7, 7, 5, 6, 9,11,16, 7, 6,19, 8,
7, 6, 6, 7, 9,13, 9, 9,19,11, 9, 8, 6, 7, 8,13,
12,14,19,16,13,10, 9, 8, 9,13,14,17,19,18,18,17,
12,11,11,13,
};
 
static const static_codebook _huff_book__16c1_s_long = {
2, 100,
(char *)_huff_lengthlist__16c1_s_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__16c1_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__16c1_s_p1_0[] = {
1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
0, 0, 0, 7, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
0, 0, 0, 0, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 8, 7, 0, 0, 0, 0,
0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 7, 9, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0, 9,11,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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
0, 0, 0, 0, 8,11, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
0, 0, 0, 0, 8, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
0, 0, 0, 0, 0, 8, 9,11, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
0, 0, 0, 0, 0, 0, 9,11, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _16c1_s_p1_0 = {
8, 6561,
(char *)_vq_lengthlist__16c1_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__16c1_s_p1_0,
0
};
 
static const long _vq_quantlist__16c1_s_p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__16c1_s_p3_0[] = {
1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 9, 9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 7, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _16c1_s_p3_0 = {
4, 625,
(char *)_vq_lengthlist__16c1_s_p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__16c1_s_p3_0,
0
};
 
static const long _vq_quantlist__16c1_s_p4_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__16c1_s_p4_0[] = {
1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0,
0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _16c1_s_p4_0 = {
2, 81,
(char *)_vq_lengthlist__16c1_s_p4_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__16c1_s_p4_0,
0
};
 
static const long _vq_quantlist__16c1_s_p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__16c1_s_p5_0[] = {
1, 3, 3, 5, 5, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 8, 8,
8, 8, 9, 9, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
9, 9, 8, 8,10,10, 0, 0, 0, 9, 9, 8, 8,10,10, 0,
0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
10,
};
 
static const static_codebook _16c1_s_p5_0 = {
2, 81,
(char *)_vq_lengthlist__16c1_s_p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__16c1_s_p5_0,
0
};
 
static const long _vq_quantlist__16c1_s_p6_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__16c1_s_p6_0[] = {
1, 3, 3, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,12,
12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
11,12,12, 0, 0, 0, 8, 8, 8, 9,10, 9,10,10,10,10,
11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,11,
11,11,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
11,11,12,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
10,11,11,12,12,13,13, 0, 0, 0, 9, 9, 9, 9,10,10,
10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,10,
10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0, 0, 9,
9,10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0, 0,
10,10,11,10,11,11,12,12,13,13,13,13, 0, 0, 0, 0,
0, 0, 0,10,10,11,11,12,12,13,13,13,13, 0, 0, 0,
0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14, 0, 0,
0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14, 0,
0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,13,13,14,
14,
};
 
static const static_codebook _16c1_s_p6_0 = {
2, 289,
(char *)_vq_lengthlist__16c1_s_p6_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__16c1_s_p6_0,
0
};
 
static const long _vq_quantlist__16c1_s_p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__16c1_s_p7_0[] = {
1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9,10,10,
10, 9, 4, 7, 7,10,10,10,11,10,10, 6,10,10,11,11,
11,11,10,10, 6,10, 9,11,11,11,11,10,10, 6,10,10,
11,11,11,11,10,10, 7,11,11,11,11,11,12,12,11, 6,
10,10,11,10,10,11,11,11, 6,10,10,10,11,10,11,11,
11,
};
 
static const static_codebook _16c1_s_p7_0 = {
4, 81,
(char *)_vq_lengthlist__16c1_s_p7_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__16c1_s_p7_0,
0
};
 
static const long _vq_quantlist__16c1_s_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__16c1_s_p7_1[] = {
2, 3, 3, 5, 6, 7, 7, 7, 7, 8, 8,10,10,10, 6, 6,
7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8,
8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
8, 8, 8, 8, 8, 8, 9, 9,10,10,10,10,10, 8, 8, 8,
8, 9, 9,10,10,10,10,10, 9, 9, 8, 8, 9, 9,10,10,
10,10,10, 8, 8, 8, 8, 9, 9,
};
 
static const static_codebook _16c1_s_p7_1 = {
2, 121,
(char *)_vq_lengthlist__16c1_s_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__16c1_s_p7_1,
0
};
 
static const long _vq_quantlist__16c1_s_p8_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__16c1_s_p8_0[] = {
1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 6, 5, 5,
7, 8, 8, 9, 8, 8, 9, 9,10,11, 6, 5, 5, 8, 8, 9,
9, 8, 8, 9,10,10,11, 0, 8, 8, 8, 9, 9, 9, 9, 9,
10,10,11,11, 0, 9, 9, 9, 8, 9, 9, 9, 9,10,10,11,
11, 0,13,13, 9, 9,10,10,10,10,11,11,12,12, 0,14,
13, 9, 9,10,10,10,10,11,11,12,12, 0, 0, 0,10,10,
9, 9,11,11,12,12,13,12, 0, 0, 0,10,10, 9, 9,10,
10,12,12,13,13, 0, 0, 0,13,14,11,10,11,11,12,12,
13,14, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
0, 0, 0, 0,12,12,12,12,13,13,14,15, 0, 0, 0, 0,
0,12,12,12,12,13,13,14,15,
};
 
static const static_codebook _16c1_s_p8_0 = {
2, 169,
(char *)_vq_lengthlist__16c1_s_p8_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__16c1_s_p8_0,
0
};
 
static const long _vq_quantlist__16c1_s_p8_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__16c1_s_p8_1[] = {
2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
6, 6, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _16c1_s_p8_1 = {
2, 25,
(char *)_vq_lengthlist__16c1_s_p8_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__16c1_s_p8_1,
0
};
 
static const long _vq_quantlist__16c1_s_p9_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__16c1_s_p9_0[] = {
1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _16c1_s_p9_0 = {
2, 169,
(char *)_vq_lengthlist__16c1_s_p9_0,
1, -513964032, 1628680192, 4, 0,
(long *)_vq_quantlist__16c1_s_p9_0,
0
};
 
static const long _vq_quantlist__16c1_s_p9_1[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__16c1_s_p9_1[] = {
1, 4, 4, 4, 4, 8, 8,12,13,14,14,14,14,14,14, 6,
6, 6, 6, 6,10, 9,14,14,14,14,14,14,14,14, 7, 6,
5, 6, 6,10, 9,12,13,13,13,13,13,13,13,13, 7, 7,
9, 9,11,11,12,13,13,13,13,13,13,13,13, 7, 7, 8,
8,11,12,13,13,13,13,13,13,13,13,13,12,12,10,10,
13,12,13,13,13,13,13,13,13,13,13,12,12,10,10,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,12,13,12,
13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,
};
 
static const static_codebook _16c1_s_p9_1 = {
2, 225,
(char *)_vq_lengthlist__16c1_s_p9_1,
1, -520986624, 1620377600, 4, 0,
(long *)_vq_quantlist__16c1_s_p9_1,
0
};
 
static const long _vq_quantlist__16c1_s_p9_2[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__16c1_s_p9_2[] = {
1, 4, 4, 6, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9,10,
10,10, 9,10,10,11,12,12, 8, 8, 8, 8, 9, 9, 9, 9,
10,10,10,10,10,11,11,10,12,11,11,13,11, 7, 7, 8,
8, 8, 8, 9, 9, 9,10,10,10,10, 9,10,10,11,11,12,
11,11, 8, 8, 8, 8, 9, 9,10,10,10,10,11,11,11,11,
11,11,11,12,11,12,12, 8, 8, 9, 9, 9, 9, 9,10,10,
10,10,10,10,11,11,11,11,11,11,12,11, 9, 9, 9, 9,
10,10,10,10,11,10,11,11,11,11,11,11,12,12,12,12,
11, 9, 9, 9, 9,10,10,10,10,11,11,11,11,11,11,11,
11,11,12,12,12,13, 9,10,10, 9,11,10,10,10,10,11,
11,11,11,11,10,11,12,11,12,12,11,12,11,10, 9,10,
10,11,10,11,11,11,11,11,11,11,11,11,12,12,11,12,
12,12,10,10,10,11,10,11,11,11,11,11,11,11,11,11,
11,11,12,13,12,12,11, 9,10,10,11,11,10,11,11,11,
12,11,11,11,11,11,12,12,13,13,12,13,10,10,12,10,
11,11,11,11,11,11,11,11,11,12,12,11,13,12,12,12,
12,13,12,11,11,11,11,11,11,12,11,12,11,11,11,11,
12,12,13,12,11,12,12,11,11,11,11,11,12,11,11,11,
11,12,11,11,12,11,12,13,13,12,12,12,12,11,11,11,
11,11,12,11,11,12,11,12,11,11,11,11,13,12,12,12,
12,13,11,11,11,12,12,11,11,11,12,11,12,12,12,11,
12,13,12,11,11,12,12,11,12,11,11,11,12,12,11,12,
11,11,11,12,12,12,12,13,12,13,12,12,12,12,11,11,
12,11,11,11,11,11,11,12,12,12,13,12,11,13,13,12,
12,11,12,10,11,11,11,11,12,11,12,12,11,12,12,13,
12,12,13,12,12,12,12,12,11,12,12,12,11,12,11,11,
11,12,13,12,13,13,13,13,13,12,13,13,12,12,13,11,
11,11,11,11,12,11,11,12,11,
};
 
static const static_codebook _16c1_s_p9_2 = {
2, 441,
(char *)_vq_lengthlist__16c1_s_p9_2,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__16c1_s_p9_2,
0
};
 
static const char _huff_lengthlist__16c1_s_short[] = {
5, 6,17, 8,12, 9,10,10,12,13, 5, 2,17, 4, 9, 5,
7, 8,11,13,16,16,16,16,16,16,16,16,16,16, 6, 4,
16, 5,10, 5, 7,10,14,16,13, 9,16,11, 8, 7, 8, 9,
13,16, 7, 4,16, 5, 7, 4, 6, 8,11,13, 8, 6,16, 7,
8, 5, 5, 7, 9,13, 9, 8,16, 9, 8, 6, 6, 7, 9,13,
11,11,16,10,10, 7, 7, 7, 9,13,13,13,16,13,13, 9,
9, 9,10,13,
};
 
static const static_codebook _huff_book__16c1_s_short = {
2, 100,
(char *)_huff_lengthlist__16c1_s_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__16c2_s_long[] = {
4, 7, 9, 9, 9, 8, 9,10,13,16, 5, 4, 5, 6, 7, 7,
8, 9,12,16, 6, 5, 5, 5, 7, 7, 9,10,12,15, 7, 6,
5, 4, 5, 6, 8, 9,10,13, 8, 7, 7, 5, 5, 5, 7, 9,
10,12, 7, 7, 7, 6, 5, 5, 6, 7,10,12, 8, 8, 8, 7,
7, 5, 5, 6, 9,11, 8, 9, 9, 8, 8, 6, 6, 5, 8,11,
10,11,12,12,11, 9, 9, 8, 9,12,13,14,15,15,14,12,
12,11,11,13,
};
 
static const static_codebook _huff_book__16c2_s_long = {
2, 100,
(char *)_huff_lengthlist__16c2_s_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__16c2_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__16c2_s_p1_0[] = {
1, 3, 3, 0, 0, 0, 0, 0, 0, 4, 5, 5, 0, 0, 0, 0,
0, 0, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _16c2_s_p1_0 = {
4, 81,
(char *)_vq_lengthlist__16c2_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__16c2_s_p1_0,
0
};
 
static const long _vq_quantlist__16c2_s_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__16c2_s_p2_0[] = {
2, 4, 4, 7, 7, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0,
0, 0, 8, 8, 0, 0, 0, 8, 8, 4, 4, 4, 8, 7, 0, 0,
0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0,
9, 9, 4, 4, 4, 7, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8,
8, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 7, 8, 8,10, 9,
0, 0, 0,12,11, 0, 0, 0,11,12, 0, 0, 0,14,13, 0,
0, 0,14,14, 7, 8, 8, 9,10, 0, 0, 0,11,12, 0, 0,
0,11,11, 0, 0, 0,14,14, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
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, 8, 8,11,11, 0, 0, 0,
12,11, 0, 0, 0,12,12, 0, 0, 0,13,12, 0, 0, 0,13,
13, 8, 8, 8,11,11, 0, 0, 0,11,11, 0, 0, 0,12,12,
0, 0, 0,13,13, 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, 8, 9, 8,12,11, 0, 0, 0,12,12, 0,
0, 0,12,11, 0, 0, 0,13,13, 0, 0, 0,13,13, 8, 8,
8,11,12, 0, 0, 0,11,12, 0, 0, 0,11,12, 0, 0, 0,
13,14, 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, 8, 9, 9,14,14, 0, 0, 0,13,13, 0, 0, 0,13,
13, 0, 0, 0,13,12, 0, 0, 0,13,13, 8, 9, 9,14,14,
0, 0, 0,13,13, 0, 0, 0,13,13, 0, 0, 0,12,13, 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, 8,
9, 9,14,14, 0, 0, 0,13,13, 0, 0, 0,13,13, 0, 0,
0,13,13, 0, 0, 0,13,12, 8, 9, 9,14,14, 0, 0, 0,
13,13, 0, 0, 0,13,13, 0, 0, 0,13,13, 0, 0, 0,12,
12,
};
 
static const static_codebook _16c2_s_p2_0 = {
4, 625,
(char *)_vq_lengthlist__16c2_s_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__16c2_s_p2_0,
0
};
 
static const long _vq_quantlist__16c2_s_p3_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__16c2_s_p3_0[] = {
1, 3, 3, 5, 5, 7, 7, 8, 8, 0, 0, 0, 6, 6, 8, 8,
9, 9, 0, 0, 0, 6, 6, 8, 8, 9, 9, 0, 0, 0, 7, 7,
8, 9,10,10, 0, 0, 0, 7, 7, 9, 9,10,10, 0, 0, 0,
8, 8, 9, 9,11,11, 0, 0, 0, 7, 7, 9, 9,11,11, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _16c2_s_p3_0 = {
2, 81,
(char *)_vq_lengthlist__16c2_s_p3_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__16c2_s_p3_0,
0
};
 
static const long _vq_quantlist__16c2_s_p4_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__16c2_s_p4_0[] = {
2, 3, 3, 5, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9,
9, 0, 0, 0, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,
11,10, 0, 0, 0, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,
10,10,10, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,10,
11,11,11,11, 0, 0, 0, 7, 6, 8, 8, 9, 9, 9, 9,10,
10,11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,
11,11,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,
10,11,11,11,11,12,12, 0, 0, 0, 7, 8, 8, 8, 9, 9,
10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8, 9,
9,10,10,11,11,12,12,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _16c2_s_p4_0 = {
2, 289,
(char *)_vq_lengthlist__16c2_s_p4_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__16c2_s_p4_0,
0
};
 
static const long _vq_quantlist__16c2_s_p5_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__16c2_s_p5_0[] = {
1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 6,10,11,10,10,
10,11, 4, 6, 6,10,10,11,10,11,10, 5,10,10, 9,12,
11,10,12,12, 7,10,10,12,12,12,12,13,13, 7,11,10,
11,12,12,12,13,13, 6,11,10,10,12,12,11,12,12, 7,
11,10,12,13,13,12,12,12, 7,10,11,12,13,13,12,12,
12,
};
 
static const static_codebook _16c2_s_p5_0 = {
4, 81,
(char *)_vq_lengthlist__16c2_s_p5_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__16c2_s_p5_0,
0
};
 
static const long _vq_quantlist__16c2_s_p5_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__16c2_s_p5_1[] = {
2, 3, 3, 6, 6, 6, 6, 7, 7, 7, 7,11,10,10, 6, 6,
7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8,
8,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9,11,11,11, 6,
7, 8, 8, 8, 8, 9, 9,11,11,11, 7, 7, 8, 8, 8, 8,
8, 8,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9,11,11,11,
8, 8, 8, 8, 8, 8, 8, 8,11,11,11,11,11, 8, 8, 8,
8, 8, 8,12,11,11,11,11, 8, 8, 8, 8, 8, 8,12,11,
11,11,11, 7, 7, 8, 8, 8, 8,
};
 
static const static_codebook _16c2_s_p5_1 = {
2, 121,
(char *)_vq_lengthlist__16c2_s_p5_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__16c2_s_p5_1,
0
};
 
static const long _vq_quantlist__16c2_s_p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__16c2_s_p6_0[] = {
1, 4, 4, 6, 6, 8, 7, 8, 8, 9, 9,10,10, 5, 5, 5,
7, 7, 9, 9, 9, 9,11,11,12,12, 6, 5, 5, 7, 7, 9,
9,10, 9,11,11,12,12, 0, 7, 7, 7, 7, 9, 9,10,10,
11,11,12,12, 0, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
12, 0,11,11, 8, 8,10,10,11,11,12,12,13,13, 0,12,
12, 9, 9,10,10,11,11,12,12,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, 0, 0, 0,
};
 
static const static_codebook _16c2_s_p6_0 = {
2, 169,
(char *)_vq_lengthlist__16c2_s_p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__16c2_s_p6_0,
0
};
 
static const long _vq_quantlist__16c2_s_p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__16c2_s_p6_1[] = {
2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
6, 6, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _16c2_s_p6_1 = {
2, 25,
(char *)_vq_lengthlist__16c2_s_p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__16c2_s_p6_1,
0
};
 
static const long _vq_quantlist__16c2_s_p7_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__16c2_s_p7_0[] = {
1, 4, 4, 7, 7, 8, 8, 8, 8,10, 9,10,10, 5, 5, 5,
7, 7, 9, 9,10,10,11,10,12,11, 6, 5, 5, 7, 7, 9,
9,10,10,11,11,12,12,20, 7, 7, 7, 7, 9, 9,10,10,
11,11,12,12,20, 7, 7, 7, 7, 9, 9,11,10,12,11,12,
12,20,11,11, 8, 8,10,10,11,11,12,12,13,13,20,12,
12, 8, 8, 9, 9,11,11,12,12,13,13,20,20,21,10,10,
10,10,11,11,12,12,13,13,21,21,21,10,10,10,10,11,
11,12,12,13,13,21,21,21,14,14,11,11,12,12,13,13,
13,14,21,21,21,16,15,11,11,12,11,13,13,14,14,21,
21,21,21,21,13,13,12,12,13,13,14,14,21,21,21,21,
21,13,13,12,12,13,13,14,14,
};
 
static const static_codebook _16c2_s_p7_0 = {
2, 169,
(char *)_vq_lengthlist__16c2_s_p7_0,
1, -523206656, 1618345984, 4, 0,
(long *)_vq_quantlist__16c2_s_p7_0,
0
};
 
static const long _vq_quantlist__16c2_s_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__16c2_s_p7_1[] = {
2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 7, 9, 9, 9, 6, 7,
7, 7, 7, 7, 8, 8, 9, 9, 9, 6, 6, 7, 7, 7, 7, 8,
8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 7,
7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8,
8, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9,
7, 7, 8, 8, 7, 7, 8, 8, 9, 9, 9, 9, 9, 8, 8, 7,
7, 8, 8, 9, 9, 9, 9, 9, 8, 8, 7, 7, 8, 8, 9, 9,
9, 9, 9, 7, 7, 7, 7, 8, 8,
};
 
static const static_codebook _16c2_s_p7_1 = {
2, 121,
(char *)_vq_lengthlist__16c2_s_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__16c2_s_p7_1,
0
};
 
static const long _vq_quantlist__16c2_s_p8_0[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__16c2_s_p8_0[] = {
1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9,10,10, 6,
6, 6, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,11, 6, 5,
5, 8, 7, 9, 9, 8, 8, 9, 9,10,10,11,11,20, 8, 8,
8, 8, 9, 9, 9, 9,10,10,11,10,12,11,20, 8, 8, 8,
8, 9, 9, 9, 9,10,10,11,11,12,12,20,12,12, 9, 9,
10,10,10,10,11,11,12,12,13,12,20,13,13, 9, 9,10,
10,10,10,11,11,12,12,13,13,20,20,20, 9, 9, 9, 9,
10,10,11,11,12,12,13,12,20,20,20, 9, 9, 9, 8,10,
10,12,11,12,12,13,13,20,20,20,13,13,10,10,11,11,
12,12,13,13,13,13,20,20,20,13,13,10,10,11,10,12,
11,13,13,14,14,20,20,20,20,20,11,11,11,11,12,12,
13,13,14,14,20,20,20,20,20,11,10,11,11,13,11,13,
13,14,14,20,20,21,21,21,14,14,11,12,13,13,13,13,
14,14,21,21,21,21,21,15,15,12,11,13,12,14,13,15,
14,
};
 
static const static_codebook _16c2_s_p8_0 = {
2, 225,
(char *)_vq_lengthlist__16c2_s_p8_0,
1, -520986624, 1620377600, 4, 0,
(long *)_vq_quantlist__16c2_s_p8_0,
0
};
 
static const long _vq_quantlist__16c2_s_p8_1[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__16c2_s_p8_1[] = {
2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,11,10, 7, 7, 8,
8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
11,11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9,11,11,11, 8, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9,10, 9,10,10,10,10,11,11,11, 8, 8, 9, 9,
9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,11,11,
11, 8, 8, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,
10,10,10,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
10,10,10,10,10,10,10,10,11,11,11,11,11, 9, 9, 9,
9, 9, 9,10,10,10,10,10,10,10,10,10,10,11,11,11,
11,11, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,
10,10,11,11,11,11,11, 9, 9, 9, 9,10,10,10,10,10,
10,10,10,10,10,10,10,11,11,11,11,11,10, 9,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,
11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,11,11,11,11,11,11,11,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,
11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,
10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,
10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,
11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,
10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,10,
10,10,10,10,10,10,10,10,10,
};
 
static const static_codebook _16c2_s_p8_1 = {
2, 441,
(char *)_vq_lengthlist__16c2_s_p8_1,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__16c2_s_p8_1,
0
};
 
static const long _vq_quantlist__16c2_s_p9_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__16c2_s_p9_0[] = {
1, 4, 3,10, 8,10,10,10,10,10,10,10,10,10,10,10,
10, 6,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10, 6,10, 9,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,
};
 
static const static_codebook _16c2_s_p9_0 = {
2, 289,
(char *)_vq_lengthlist__16c2_s_p9_0,
1, -509798400, 1631393792, 5, 0,
(long *)_vq_quantlist__16c2_s_p9_0,
0
};
 
static const long _vq_quantlist__16c2_s_p9_1[] = {
9,
8,
10,
7,
11,
6,
12,
5,
13,
4,
14,
3,
15,
2,
16,
1,
17,
0,
18,
};
 
static const char _vq_lengthlist__16c2_s_p9_1[] = {
1, 4, 4, 7, 7, 7, 7, 7, 7, 8, 8,10, 9,11,10,13,
11,14,13, 6, 6, 6, 8, 8, 8, 8, 8, 7, 9, 8,11, 9,
13,11,14,12,14,13, 5, 6, 6, 8, 8, 8, 8, 8, 8, 9,
9,11,11,13,11,14,13,15,15,17, 8, 8, 8, 8, 9, 9,
9, 8,11, 9,12,10,13,11,14,12,14,13,17, 8, 8, 8,
8, 9, 9, 9, 9,10,10,11,11,13,13,13,14,16,15,17,
12,12, 8, 8, 9, 9,10,10,11,11,12,11,13,12,13,12,
14,13,16,12,12, 8, 8, 9, 9,10,10,11,11,12,12,13,
13,14,14,15,15,17,17,17, 9, 9, 9, 9,11,11,12,12,
12,13,13,13,16,14,14,14,17,17,17, 9, 8, 9, 8,11,
10,12,12,13,13,14,14,15,15,16,16,17,17,17,12,12,
10,10,11,12,12,13,13,14,13,15,15,14,16,15,17,17,
17,12,12,10, 8,12, 9,13,12,14,14,15,14,15,16,16,
16,17,17,17,17,17,11,11,12,12,14,14,14,16,15,16,
15,16,15,17,17,17,17,17,17,11, 9,12,10,13,11,15,
14,16,16,17,16,16,15,17,17,17,17,17,15,15,12,12,
14,14,15,16,16,15,16,16,17,17,17,17,17,17,17,14,
14,12,10,14,11,15,12,17,16,15,16,17,16,17,17,17,
17,17,17,17,13,13,14,14,14,16,17,17,16,17,17,17,
17,17,17,17,17,17,17,13, 9,13,12,15,13,16,16,17,
17,17,17,17,17,17,17,17,17,17,15,17,14,14,15,16,
16,17,16,17,16,17,17,17,17,17,17,17,17,17,17,14,
13,15,16,16,17,16,17,17,17,
};
 
static const static_codebook _16c2_s_p9_1 = {
2, 361,
(char *)_vq_lengthlist__16c2_s_p9_1,
1, -518287360, 1622704128, 5, 0,
(long *)_vq_quantlist__16c2_s_p9_1,
0
};
 
static const long _vq_quantlist__16c2_s_p9_2[] = {
24,
23,
25,
22,
26,
21,
27,
20,
28,
19,
29,
18,
30,
17,
31,
16,
32,
15,
33,
14,
34,
13,
35,
12,
36,
11,
37,
10,
38,
9,
39,
8,
40,
7,
41,
6,
42,
5,
43,
4,
44,
3,
45,
2,
46,
1,
47,
0,
48,
};
 
static const char _vq_lengthlist__16c2_s_p9_2[] = {
2, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7,
};
 
static const static_codebook _16c2_s_p9_2 = {
1, 49,
(char *)_vq_lengthlist__16c2_s_p9_2,
1, -526909440, 1611661312, 6, 0,
(long *)_vq_quantlist__16c2_s_p9_2,
0
};
 
static const char _huff_lengthlist__16c2_s_short[] = {
7,10,12,11,12,13,15,16,18,15,10, 8, 8, 8, 9,10,
12,13,14,17,10, 7, 7, 7, 7, 8,10,12,15,18,10, 7,
7, 5, 5, 6, 8,10,13,15,10, 7, 6, 5, 4, 4, 6, 9,
12,15,11, 7, 7, 5, 4, 3, 4, 7,11,13,12, 9, 8, 7,
5, 4, 4, 5,10,13,11,11,11, 9, 7, 5, 5, 5, 9,12,
13,12,13,12,10, 8, 8, 7, 9,13,14,14,14,14,13,11,
11,10,10,13,
};
 
static const static_codebook _huff_book__16c2_s_short = {
2, 100,
(char *)_huff_lengthlist__16c2_s_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__8c0_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__8c0_s_p1_0[] = {
1, 5, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0,
0, 0, 0, 7, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
0, 0, 0, 0, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 8, 8, 0, 0, 0, 0,
0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 8, 9, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10, 9, 0, 0, 0,
0, 0, 0, 8, 9,11, 0, 0, 0, 0, 0, 0, 9,11,11, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9,10, 0, 0,
0, 0, 0, 0, 9,11,10, 0, 0, 0, 0, 0, 0, 9,11,11,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
0, 0, 0, 0, 8, 9,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,11, 0,
0, 0, 0, 0, 0, 9,10,11, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 9,11,11,
0, 0, 0, 0, 0, 0, 8,11, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _8c0_s_p1_0 = {
8, 6561,
(char *)_vq_lengthlist__8c0_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__8c0_s_p1_0,
0
};
 
static const long _vq_quantlist__8c0_s_p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__8c0_s_p3_0[] = {
1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 7, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 8, 8,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 7, 7, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _8c0_s_p3_0 = {
4, 625,
(char *)_vq_lengthlist__8c0_s_p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__8c0_s_p3_0,
0
};
 
static const long _vq_quantlist__8c0_s_p4_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__8c0_s_p4_0[] = {
1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
8, 8, 0, 0, 0, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0,
0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _8c0_s_p4_0 = {
2, 81,
(char *)_vq_lengthlist__8c0_s_p4_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__8c0_s_p4_0,
0
};
 
static const long _vq_quantlist__8c0_s_p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__8c0_s_p5_0[] = {
1, 3, 3, 5, 5, 7, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
8, 8, 0, 0, 0, 7, 7, 7, 7, 8, 9, 0, 0, 0, 8, 8,
8, 8, 9, 9, 0, 0, 0, 8, 8, 8, 8, 9, 9, 0, 0, 0,
9, 9, 8, 8,10,10, 0, 0, 0, 9, 9, 8, 8,10,10, 0,
0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
10,
};
 
static const static_codebook _8c0_s_p5_0 = {
2, 81,
(char *)_vq_lengthlist__8c0_s_p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__8c0_s_p5_0,
0
};
 
static const long _vq_quantlist__8c0_s_p6_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__8c0_s_p6_0[] = {
1, 3, 3, 6, 6, 8, 8, 9, 9, 8, 8,10, 9,10,10,11,
11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
11,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
11,12,11, 0, 0, 0, 8, 8, 9, 9,10,10, 9, 9,10,10,
11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10, 9, 9,11,
10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,10,10,
11,11,11,12,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,10,
10,11,11,12,12,13,13, 0, 0, 0,10,10,10,10,11,11,
10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,10, 9,10,
11,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
10, 9,10,11,12,12,13,13,14,13, 0, 0, 0, 0, 0, 9,
9, 9,10,10,10,11,11,13,12,13,13, 0, 0, 0, 0, 0,
10,10,10,10,11,11,12,12,13,13,14,14, 0, 0, 0, 0,
0, 0, 0,10,10,11,11,12,12,13,13,13,14, 0, 0, 0,
0, 0, 0, 0,11,11,11,11,12,12,13,14,14,14, 0, 0,
0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,14,13, 0,
0, 0, 0, 0, 0, 0,11,11,12,12,13,13,14,14,14,14,
0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
14,
};
 
static const static_codebook _8c0_s_p6_0 = {
2, 289,
(char *)_vq_lengthlist__8c0_s_p6_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__8c0_s_p6_0,
0
};
 
static const long _vq_quantlist__8c0_s_p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__8c0_s_p7_0[] = {
1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,11, 9,10,12,
9,10, 4, 7, 7,10,10,10,11, 9, 9, 6,11,10,11,11,
12,11,11,11, 6,10,10,11,11,12,11,10,10, 6, 9,10,
11,11,11,11,10,10, 7,10,11,12,11,11,12,11,12, 6,
9, 9,10, 9, 9,11,10,10, 6, 9, 9,10,10,10,11,10,
10,
};
 
static const static_codebook _8c0_s_p7_0 = {
4, 81,
(char *)_vq_lengthlist__8c0_s_p7_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__8c0_s_p7_0,
0
};
 
static const long _vq_quantlist__8c0_s_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__8c0_s_p7_1[] = {
1, 3, 3, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10, 7, 7,
8, 8, 9, 9, 9, 9,10,10, 9, 7, 7, 8, 8, 9, 9, 9,
9,10,10,10, 8, 8, 9, 9, 9, 9, 9, 9,10,10,10, 8,
8, 9, 9, 9, 9, 8, 9,10,10,10, 8, 8, 9, 9, 9,10,
10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,10,11,10,11,
9, 9, 9, 9,10,10,10,10,11,11,11,10,10, 9, 9,10,
10,10, 9,11,10,10,10,10,10,10, 9, 9,10,10,11,11,
10,10,10, 9, 9, 9,10,10,10,
};
 
static const static_codebook _8c0_s_p7_1 = {
2, 121,
(char *)_vq_lengthlist__8c0_s_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__8c0_s_p7_1,
0
};
 
static const long _vq_quantlist__8c0_s_p8_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__8c0_s_p8_0[] = {
1, 4, 4, 7, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 6, 6,
7, 7, 8, 8, 7, 7, 8, 9,10,10, 7, 6, 6, 7, 7, 8,
7, 7, 7, 9, 9,10,12, 0, 8, 8, 8, 8, 8, 9, 8, 8,
9, 9,10,10, 0, 8, 8, 8, 8, 8, 9, 8, 9, 9, 9,11,
10, 0, 0,13, 9, 8, 9, 9, 9, 9,10,10,11,11, 0,13,
0, 9, 9, 9, 9, 9, 9,11,10,11,11, 0, 0, 0, 8, 9,
10, 9,10,10,13,11,12,12, 0, 0, 0, 8, 9, 9, 9,10,
10,13,12,12,13, 0, 0, 0,12, 0,10,10,12,11,10,11,
12,12, 0, 0, 0,13,13,10,10,10,11,12, 0,13, 0, 0,
0, 0, 0, 0,13,11, 0,12,12,12,13,12, 0, 0, 0, 0,
0, 0,13,13,11,13,13,11,12,
};
 
static const static_codebook _8c0_s_p8_0 = {
2, 169,
(char *)_vq_lengthlist__8c0_s_p8_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__8c0_s_p8_0,
0
};
 
static const long _vq_quantlist__8c0_s_p8_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__8c0_s_p8_1[] = {
1, 3, 4, 5, 5, 7, 6, 6, 6, 5, 7, 7, 7, 6, 6, 7,
7, 7, 6, 6, 7, 7, 7, 6, 6,
};
 
static const static_codebook _8c0_s_p8_1 = {
2, 25,
(char *)_vq_lengthlist__8c0_s_p8_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__8c0_s_p8_1,
0
};
 
static const long _vq_quantlist__8c0_s_p9_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__8c0_s_p9_0[] = {
1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7,
};
 
static const static_codebook _8c0_s_p9_0 = {
4, 81,
(char *)_vq_lengthlist__8c0_s_p9_0,
1, -518803456, 1628680192, 2, 0,
(long *)_vq_quantlist__8c0_s_p9_0,
0
};
 
static const long _vq_quantlist__8c0_s_p9_1[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__8c0_s_p9_1[] = {
1, 4, 4, 5, 5,10, 8,11,11,11,11,11,11,11,11, 6,
6, 6, 7, 6,11,10,11,11,11,11,11,11,11,11, 7, 5,
6, 6, 6, 8, 7,11,11,11,11,11,11,11,11,11, 7, 8,
8, 8, 9, 9,11,11,11,11,11,11,11,11,11, 9, 8, 7,
8, 9,11,11,11,11,11,11,11,11,11,11,11,10,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,
};
 
static const static_codebook _8c0_s_p9_1 = {
2, 225,
(char *)_vq_lengthlist__8c0_s_p9_1,
1, -520986624, 1620377600, 4, 0,
(long *)_vq_quantlist__8c0_s_p9_1,
0
};
 
static const long _vq_quantlist__8c0_s_p9_2[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__8c0_s_p9_2[] = {
1, 5, 5, 7, 7, 8, 7, 8, 8,10,10, 9, 9,10,10,10,
11,11,10,12,11,12,12,12, 9, 8, 8, 8, 8, 8, 9,10,
10,10,10,11,11,11,10,11,11,12,12,11,12, 8, 8, 7,
7, 8, 9,10,10,10, 9,10,10, 9,10,10,11,11,11,11,
11,11, 9, 9, 9, 9, 8, 9,10,10,11,10,10,11,11,12,
10,10,12,12,11,11,10, 9, 9,10, 8, 9,10,10,10, 9,
10,10,11,11,10,11,10,10,10,12,12,12, 9,10, 9,10,
9, 9,10,10,11,11,11,11,10,10,10,11,12,11,12,11,
12,10,11,10,11, 9,10, 9,10, 9,10,10, 9,10,10,11,
10,11,11,11,11,12,11, 9,10,10,10,10,11,11,11,11,
11,10,11,11,11,11,10,12,10,12,12,11,12,10,10,11,
10, 9,11,10,11, 9,10,11,10,10,10,11,11,11,11,12,
12,10, 9, 9,11,10, 9,12,11,10,12,12,11,11,11,11,
10,11,11,12,11,10,12, 9,11,10,11,10,10,11,10,11,
9,10,10,10,11,12,11,11,12,11,10,10,11,11, 9,10,
10,12,10,11,10,10,10, 9,10,10,10,10, 9,10,10,11,
11,11,11,12,11,10,10,10,10,11,11,10,11,11, 9,11,
10,12,10,12,11,10,11,10,10,10,11,10,10,11,11,10,
11,10,10,10,10,11,11,12,10,10,10,11,10,11,12,11,
10,11,10,10,11,11,10,12,10, 9,10,10,11,11,11,10,
12,10,10,11,11,11,10,10,11,10,10,10,11,10,11,10,
12,11,11,10,10,10,12,10,10,11, 9,10,11,11,11,10,
10,11,10,10, 9,11,11,12,12,11,12,11,11,11,11,11,
11, 9,10,11,10,12,10,10,10,10,11,10,10,11,10,10,
12,10,10,10,10,10, 9,12,10,10,10,10,12, 9,11,10,
10,11,10,12,12,10,12,12,12,10,10,10,10, 9,10,11,
10,10,12,10,10,12,11,10,11,10,10,12,11,10,12,10,
10,11, 9,11,10, 9,10, 9,10,
};
 
static const static_codebook _8c0_s_p9_2 = {
2, 441,
(char *)_vq_lengthlist__8c0_s_p9_2,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__8c0_s_p9_2,
0
};
 
static const char _huff_lengthlist__8c0_s_single[] = {
4, 5,18, 7,10, 6, 7, 8, 9,10, 5, 2,18, 5, 7, 5,
6, 7, 8,11,17,17,17,17,17,17,17,17,17,17, 7, 4,
17, 6, 9, 6, 8,10,12,15,11, 7,17, 9, 6, 6, 7, 9,
11,15, 6, 4,17, 6, 6, 4, 5, 8,11,16, 6, 6,17, 8,
6, 5, 6, 9,13,16, 8, 9,17,11, 9, 8, 8,11,13,17,
9,12,17,15,14,13,12,13,14,17,12,15,17,17,17,17,
17,16,17,17,
};
 
static const static_codebook _huff_book__8c0_s_single = {
2, 100,
(char *)_huff_lengthlist__8c0_s_single,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__8c1_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__8c1_s_p1_0[] = {
1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 7, 0, 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0,
0, 0, 0, 7, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
0, 0, 0, 0, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 8, 8, 0, 0, 0, 0,
0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
0, 0, 0, 8, 8,10, 0, 0, 0, 0, 0, 0, 9,10,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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,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, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
0, 0, 0, 0, 8, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
0, 0, 0, 0, 0, 8, 9,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
0, 0, 0, 0, 0, 0, 8,10, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _8c1_s_p1_0 = {
8, 6561,
(char *)_vq_lengthlist__8c1_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__8c1_s_p1_0,
0
};
 
static const long _vq_quantlist__8c1_s_p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__8c1_s_p3_0[] = {
2, 4, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 7, 7,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 6, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _8c1_s_p3_0 = {
4, 625,
(char *)_vq_lengthlist__8c1_s_p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__8c1_s_p3_0,
0
};
 
static const long _vq_quantlist__8c1_s_p4_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__8c1_s_p4_0[] = {
1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
8, 8, 0, 0, 0, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0,
0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _8c1_s_p4_0 = {
2, 81,
(char *)_vq_lengthlist__8c1_s_p4_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__8c1_s_p4_0,
0
};
 
static const long _vq_quantlist__8c1_s_p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__8c1_s_p5_0[] = {
1, 3, 3, 4, 5, 6, 6, 8, 8, 0, 0, 0, 8, 8, 7, 7,
9, 9, 0, 0, 0, 8, 8, 7, 7, 9, 9, 0, 0, 0, 9,10,
8, 8, 9, 9, 0, 0, 0,10,10, 8, 8, 9, 9, 0, 0, 0,
11,10, 8, 8,10,10, 0, 0, 0,11,11, 8, 8,10,10, 0,
0, 0,12,12, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
10,
};
 
static const static_codebook _8c1_s_p5_0 = {
2, 81,
(char *)_vq_lengthlist__8c1_s_p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__8c1_s_p5_0,
0
};
 
static const long _vq_quantlist__8c1_s_p6_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__8c1_s_p6_0[] = {
1, 3, 3, 5, 5, 8, 8, 8, 8, 9, 9,10,10,11,11,11,
11, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,11,
12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
11,12,12, 0, 0, 0, 9, 9, 8, 8,10,10,10,10,11,11,
12,12,12,12, 0, 0, 0, 9, 9, 8, 8,10,10,10,10,11,
11,12,12,12,12, 0, 0, 0,10,10, 9, 9,10,10,10,10,
11,11,12,12,13,13, 0, 0, 0,10,10, 9, 9,10,10,10,
10,11,11,12,12,13,13, 0, 0, 0,11,11, 9, 9,10,10,
10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,10,
10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0, 0, 9,
9,10,10,11,11,12,11,12,12,13,13, 0, 0, 0, 0, 0,
10,10,11,11,11,11,12,12,13,12,13,13, 0, 0, 0, 0,
0, 0, 0,11,10,11,11,12,12,13,13,13,13, 0, 0, 0,
0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0, 0,
0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,13, 0,
0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,13,13,14,
14,
};
 
static const static_codebook _8c1_s_p6_0 = {
2, 289,
(char *)_vq_lengthlist__8c1_s_p6_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__8c1_s_p6_0,
0
};
 
static const long _vq_quantlist__8c1_s_p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__8c1_s_p7_0[] = {
1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10,
10,11,10,10, 6, 9, 9,10, 9,10,11,10,10, 6, 9, 9,
10, 9, 9,11, 9,10, 7,10,10,11,11,11,11,10,10, 6,
9, 9,10,10,10,11, 9, 9, 6, 9, 9,10,10,10,10, 9,
9,
};
 
static const static_codebook _8c1_s_p7_0 = {
4, 81,
(char *)_vq_lengthlist__8c1_s_p7_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__8c1_s_p7_0,
0
};
 
static const long _vq_quantlist__8c1_s_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__8c1_s_p7_1[] = {
2, 3, 3, 5, 5, 7, 7, 7, 7, 7, 7,10,10, 9, 7, 7,
7, 7, 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8,
8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
8, 8,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,
8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
8, 8, 8,10,10,10,10,10, 8, 8, 8, 8, 8, 8,10,10,
10,10,10, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _8c1_s_p7_1 = {
2, 121,
(char *)_vq_lengthlist__8c1_s_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__8c1_s_p7_1,
0
};
 
static const long _vq_quantlist__8c1_s_p8_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__8c1_s_p8_0[] = {
1, 4, 4, 6, 6, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 5,
7, 7, 8, 8, 8, 8, 9,10,11,11, 7, 5, 5, 7, 7, 8,
8, 9, 9,10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
9,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
11, 0,12,12, 9, 9, 9, 9,10, 9,10,11,11,11, 0,13,
12, 9, 8, 9, 9,10,10,11,11,12,11, 0, 0, 0, 9, 9,
9, 9,10,10,11,11,12,12, 0, 0, 0,10,10, 9, 9,10,
10,11,11,12,12, 0, 0, 0,13,13,10,10,11,11,12,11,
13,12, 0, 0, 0,14,14,10,10,11,10,11,11,12,12, 0,
0, 0, 0, 0,12,12,11,11,12,12,13,13, 0, 0, 0, 0,
0,12,12,11,10,12,11,13,12,
};
 
static const static_codebook _8c1_s_p8_0 = {
2, 169,
(char *)_vq_lengthlist__8c1_s_p8_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__8c1_s_p8_0,
0
};
 
static const long _vq_quantlist__8c1_s_p8_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__8c1_s_p8_1[] = {
2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
6, 6, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _8c1_s_p8_1 = {
2, 25,
(char *)_vq_lengthlist__8c1_s_p8_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__8c1_s_p8_1,
0
};
 
static const long _vq_quantlist__8c1_s_p9_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__8c1_s_p9_0[] = {
1, 3, 3,10,10,10,10,10,10,10,10,10,10, 5, 6, 6,
10,10,10,10,10,10,10,10,10,10, 6, 7, 8,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10, 9, 9, 9, 9,
};
 
static const static_codebook _8c1_s_p9_0 = {
2, 169,
(char *)_vq_lengthlist__8c1_s_p9_0,
1, -513964032, 1628680192, 4, 0,
(long *)_vq_quantlist__8c1_s_p9_0,
0
};
 
static const long _vq_quantlist__8c1_s_p9_1[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__8c1_s_p9_1[] = {
1, 4, 4, 5, 5, 7, 7, 9, 9,11,11,12,12,13,13, 6,
5, 5, 6, 6, 9, 9,10,10,12,12,12,13,15,14, 6, 5,
5, 7, 7, 9, 9,10,10,12,12,12,13,14,13,17, 7, 7,
8, 8,10,10,11,11,12,13,13,13,13,13,17, 7, 7, 8,
8,10,10,11,11,13,13,13,13,14,14,17,11,11, 9, 9,
11,11,12,12,12,13,13,14,15,13,17,12,12, 9, 9,11,
11,12,12,13,13,13,13,14,16,17,17,17,11,12,12,12,
13,13,13,14,15,14,15,15,17,17,17,12,12,11,11,13,
13,14,14,15,14,15,15,17,17,17,15,15,13,13,14,14,
15,14,15,15,16,15,17,17,17,15,15,13,13,13,14,14,
15,15,15,15,16,17,17,17,17,16,14,15,14,14,15,14,
14,15,15,15,17,17,17,17,17,14,14,16,14,15,15,15,
15,15,15,17,17,17,17,17,17,16,16,15,17,15,15,14,
17,15,17,16,17,17,17,17,16,15,14,15,15,15,15,15,
15,
};
 
static const static_codebook _8c1_s_p9_1 = {
2, 225,
(char *)_vq_lengthlist__8c1_s_p9_1,
1, -520986624, 1620377600, 4, 0,
(long *)_vq_quantlist__8c1_s_p9_1,
0
};
 
static const long _vq_quantlist__8c1_s_p9_2[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__8c1_s_p9_2[] = {
2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9,
9, 9, 9, 9, 9,11,11,12, 7, 7, 7, 7, 8, 8, 9, 9,
9, 9,10,10,10,10,10,10,10,10,11,11,11, 7, 7, 7,
7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,11,
11,12, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10,
10,10,10,10,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9, 9,
9,10,10,10,10,10,10,10,10,11,11,11, 8, 8, 8, 8,
9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,11,11,
11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,10,
10,10,10,11,12,11, 9, 9, 8, 9, 9, 9, 9, 9,10,10,
10,10,10,10,10,10,10,10,11,11,11,11,11, 8, 8, 9,
9, 9, 9,10,10,10,10,10,10,10,10,10,10,11,12,11,
12,11, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
10,10,11,11,11,11,11, 9, 9, 9, 9,10,10,10,10,10,
10,10,10,10,10,10,10,12,11,12,11,11, 9, 9, 9,10,
10,10,10,10,10,10,10,10,10,10,10,10,12,11,11,11,
11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,
11,11,11,12,11,11,12,11,10,10,10,10,10,10,10,10,
10,10,10,10,11,10,11,11,11,11,11,11,11,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,11,11,12,11,12,
11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
11,11,12,11,12,11,11,11,11,10,10,10,10,10,10,10,
10,10,10,10,10,11,11,12,11,11,12,11,11,12,10,10,
11,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,12,
12,11,12,11,11,12,12,12,11,11,10,10,10,10,10,10,
10,10,10,11,12,12,11,12,12,11,12,11,11,11,11,10,
10,10,10,10,10,10,10,10,10,
};
 
static const static_codebook _8c1_s_p9_2 = {
2, 441,
(char *)_vq_lengthlist__8c1_s_p9_2,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__8c1_s_p9_2,
0
};
 
static const char _huff_lengthlist__8c1_s_single[] = {
4, 6,18, 8,11, 8, 8, 9, 9,10, 4, 4,18, 5, 9, 5,
6, 7, 8,10,18,18,18,18,17,17,17,17,17,17, 7, 5,
17, 6,11, 6, 7, 8, 9,12,12, 9,17,12, 8, 8, 9,10,
10,13, 7, 5,17, 6, 8, 4, 5, 6, 8,10, 6, 5,17, 6,
8, 5, 4, 5, 7, 9, 7, 7,17, 8, 9, 6, 5, 5, 6, 8,
8, 8,17, 9,11, 8, 6, 6, 6, 7, 9,10,17,12,12,10,
9, 7, 7, 8,
};
 
static const static_codebook _huff_book__8c1_s_single = {
2, 100,
(char *)_huff_lengthlist__8c1_s_single,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44c2_s_long[] = {
6, 6,12,10,10,10, 9,10,12,12, 6, 1,10, 5, 6, 6,
7, 9,11,14,12, 9, 8,11, 7, 8, 9,11,13,15,10, 5,
12, 7, 8, 7, 9,12,14,15,10, 6, 7, 8, 5, 6, 7, 9,
12,14, 9, 6, 8, 7, 6, 6, 7, 9,12,12, 9, 7, 9, 9,
7, 6, 6, 7,10,10,10, 9,10,11, 8, 7, 6, 6, 8,10,
12,11,13,13,11,10, 8, 8, 8,10,11,13,15,15,14,13,
10, 8, 8, 9,
};
 
static const static_codebook _huff_book__44c2_s_long = {
2, 100,
(char *)_huff_lengthlist__44c2_s_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44c2_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c2_s_p1_0[] = {
2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0,
0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
0, 0, 0, 6, 8, 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, 5, 7, 7, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0,
0, 0, 0, 0, 7, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 7, 7, 0, 0, 0, 0,
0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 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, 7, 8, 8, 0, 0, 0,
0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 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, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9, 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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
0, 0, 0, 0, 7, 8, 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, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
0, 0, 0, 0, 0, 8, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
0, 0, 0, 0, 0, 0, 8, 9, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c2_s_p1_0 = {
8, 6561,
(char *)_vq_lengthlist__44c2_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44c2_s_p1_0,
0
};
 
static const long _vq_quantlist__44c2_s_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c2_s_p2_0[] = {
1, 4, 4, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0,
8, 8, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 8,
8, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0,
0, 0, 4, 6, 6, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0,
0, 0, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,11,11, 0, 0,
0,11,11, 0, 0, 0,12,11, 0, 0, 0, 0, 0, 0, 0, 7,
8, 8, 0, 0, 0,10,11, 0, 0, 0,11,11, 0, 0, 0,11,
12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 8, 0, 0, 0,11,11, 0, 0, 0,11,11,
0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0,
0, 0,10,11, 0, 0, 0,10,11, 0, 0, 0,11,11, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 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, 9, 9, 0, 0, 0,11,12, 0, 0, 0,11,12, 0, 0, 0,
12,11, 0, 0, 0, 0, 0, 0, 0, 8,10, 9, 0, 0, 0,12,
11, 0, 0, 0,12,11, 0, 0, 0,11,12, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c2_s_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44c2_s_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c2_s_p2_0,
0
};
 
static const long _vq_quantlist__44c2_s_p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c2_s_p3_0[] = {
2, 4, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 6, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c2_s_p3_0 = {
4, 625,
(char *)_vq_lengthlist__44c2_s_p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c2_s_p3_0,
0
};
 
static const long _vq_quantlist__44c2_s_p4_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c2_s_p4_0[] = {
1, 3, 3, 6, 6, 0, 0, 0, 0, 0, 6, 6, 6, 6, 0, 0,
0, 0, 0, 6, 6, 6, 6, 0, 0, 0, 0, 0, 7, 7, 6, 6,
0, 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 0,
7, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _44c2_s_p4_0 = {
2, 81,
(char *)_vq_lengthlist__44c2_s_p4_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c2_s_p4_0,
0
};
 
static const long _vq_quantlist__44c2_s_p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c2_s_p5_0[] = {
1, 3, 3, 6, 6, 7, 7, 9, 9, 0, 7, 7, 7, 7, 7, 7,
9, 9, 0, 7, 7, 7, 7, 7, 7, 9, 9, 0, 8, 8, 7, 7,
8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
9, 9, 8, 8,10,10, 0, 0, 0, 9, 9, 8, 8,10,10, 0,
0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
11,
};
 
static const static_codebook _44c2_s_p5_0 = {
2, 81,
(char *)_vq_lengthlist__44c2_s_p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c2_s_p5_0,
0
};
 
static const long _vq_quantlist__44c2_s_p6_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c2_s_p6_0[] = {
1, 4, 3, 6, 6, 8, 8, 9, 9, 9, 9, 9, 9,10,10,11,
11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
12,11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
11,11,12, 0, 8, 8, 7, 7, 9, 9,10,10, 9, 9,10,10,
11,11,12,12, 0, 0, 0, 7, 7, 9, 9,10,10,10, 9,10,
10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
11,11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
10,11,11,12,12,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
10,10,11,11,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
9,10,10,11,11,11,11,12,12,13,13, 0, 0, 0, 0, 0,
10,10,10,10,11,11,12,12,13,12,13,13, 0, 0, 0, 0,
0, 0, 0,10,10,11,11,12,12,13,13,13,13, 0, 0, 0,
0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0, 0,
0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0,
0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,13,13,14,
14,
};
 
static const static_codebook _44c2_s_p6_0 = {
2, 289,
(char *)_vq_lengthlist__44c2_s_p6_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c2_s_p6_0,
0
};
 
static const long _vq_quantlist__44c2_s_p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c2_s_p7_0[] = {
1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
9, 9, 4, 7, 7,10, 9, 9,10, 9, 9, 7,10,10,11,10,
11,11,10,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
11,10,11,11,10,10, 7,11,10,11,11,11,12,11,11, 6,
9, 9,11,10,10,11,11,10, 6, 9, 9,11,10,10,12,10,
11,
};
 
static const static_codebook _44c2_s_p7_0 = {
4, 81,
(char *)_vq_lengthlist__44c2_s_p7_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44c2_s_p7_0,
0
};
 
static const long _vq_quantlist__44c2_s_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c2_s_p7_1[] = {
2, 3, 4, 6, 6, 7, 7, 7, 7, 7, 7, 9, 7, 7, 6, 6,
7, 7, 8, 8, 8, 8, 9, 6, 6, 6, 6, 7, 7, 8, 8, 8,
8,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
8, 8,10,10,10, 7, 8, 8, 8, 8, 8, 8, 8,10,10,10,
8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
10,10,10, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _44c2_s_p7_1 = {
2, 121,
(char *)_vq_lengthlist__44c2_s_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c2_s_p7_1,
0
};
 
static const long _vq_quantlist__44c2_s_p8_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c2_s_p8_0[] = {
1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 6, 5, 5,
7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 6, 5, 7, 7, 8,
8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
11, 0,12,12, 9, 9,10,10,10,10,11,11,11,11, 0,13,
13, 9, 9,10,10,10,10,11,11,12,12, 0, 0, 0,10,10,
10,10,11,11,12,12,12,13, 0, 0, 0,10,10,10,10,11,
11,12,12,12,12, 0, 0, 0,14,14,10,11,11,11,12,12,
13,13, 0, 0, 0,14,14,11,10,11,11,13,12,13,13, 0,
0, 0, 0, 0,12,12,11,12,13,12,14,14, 0, 0, 0, 0,
0,12,12,12,12,13,12,14,14,
};
 
static const static_codebook _44c2_s_p8_0 = {
2, 169,
(char *)_vq_lengthlist__44c2_s_p8_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44c2_s_p8_0,
0
};
 
static const long _vq_quantlist__44c2_s_p8_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c2_s_p8_1[] = {
2, 4, 4, 5, 4, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
5, 5, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _44c2_s_p8_1 = {
2, 25,
(char *)_vq_lengthlist__44c2_s_p8_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c2_s_p8_1,
0
};
 
static const long _vq_quantlist__44c2_s_p9_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c2_s_p9_0[] = {
1, 5, 4,12,12,12,12,12,12,12,12,12,12, 4, 9, 8,
11,11,11,11,11,11,11,11,11,11, 2, 8, 7,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,
};
 
static const static_codebook _44c2_s_p9_0 = {
2, 169,
(char *)_vq_lengthlist__44c2_s_p9_0,
1, -514541568, 1627103232, 4, 0,
(long *)_vq_quantlist__44c2_s_p9_0,
0
};
 
static const long _vq_quantlist__44c2_s_p9_1[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c2_s_p9_1[] = {
1, 4, 4, 6, 6, 7, 6, 8, 8,10, 9,10,10, 6, 5, 5,
7, 7, 8, 7,10, 9,11,11,12,13, 6, 5, 5, 7, 7, 8,
8,10,10,11,11,13,13,18, 8, 8, 8, 8, 9, 9,10,10,
12,12,12,13,18, 8, 8, 8, 8, 9, 9,10,10,12,12,13,
13,18,11,11, 8, 8,10,10,11,11,12,11,13,12,18,11,
11, 9, 7,10,10,11,11,11,12,12,13,17,17,17,10,10,
11,11,12,12,12,10,12,12,17,17,17,11,10,11,10,13,
12,11,12,12,12,17,17,17,15,14,11,11,12,11,13,10,
13,12,17,17,17,14,14,12,10,11,11,13,13,13,13,17,
17,16,17,16,13,13,12,10,13,10,14,13,17,16,17,16,
17,13,12,12,10,13,11,14,14,
};
 
static const static_codebook _44c2_s_p9_1 = {
2, 169,
(char *)_vq_lengthlist__44c2_s_p9_1,
1, -522616832, 1620115456, 4, 0,
(long *)_vq_quantlist__44c2_s_p9_1,
0
};
 
static const long _vq_quantlist__44c2_s_p9_2[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c2_s_p9_2[] = {
2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,
8,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
9, 9,10, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
9, 9, 9,10, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
9, 9, 9, 9,10,10,10, 8, 7, 8, 8, 8, 8, 9, 9, 9,
9, 9, 9, 9, 9,10,11,11, 8, 8, 8, 8, 9, 9, 9, 9,
9, 9,10, 9, 9, 9,10,11,10, 8, 8, 8, 8, 9, 9, 9,
9, 9, 9, 9,10,10,10,10,11,10, 8, 8, 9, 9, 9, 9,
9, 9,10, 9, 9,10, 9,10,11,10,11,11,11, 8, 8, 9,
9, 9, 9, 9, 9, 9, 9,10,10,11,11,11,11,11, 9, 9,
9, 9, 9, 9,10, 9, 9, 9,10,10,11,11,11,11,11, 9,
9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,11,11,11,11,11,
9, 9, 9, 9,10,10, 9, 9, 9,10,10,10,11,11,11,11,
11,11,11, 9, 9, 9,10, 9, 9,10,10,10,10,11,11,10,
11,11,11,11,10, 9,10,10, 9, 9, 9, 9,10,10,11,10,
11,11,11,11,11, 9, 9, 9, 9,10, 9,10,10,10,10,11,
10,11,11,11,11,11,10,10, 9, 9,10, 9,10,10,10,10,
10,10,10,11,11,11,11,11,11, 9, 9,10, 9,10, 9,10,
10,
};
 
static const static_codebook _44c2_s_p9_2 = {
2, 289,
(char *)_vq_lengthlist__44c2_s_p9_2,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c2_s_p9_2,
0
};
 
static const char _huff_lengthlist__44c2_s_short[] = {
11, 9,13,12,12,11,12,12,13,15, 8, 2,11, 4, 8, 5,
7,10,12,15,13, 7,10, 9, 8, 8,10,13,17,17,11, 4,
12, 5, 9, 5, 8,11,14,16,12, 6, 8, 7, 6, 6, 8,11,
13,16,11, 4, 9, 5, 6, 4, 6,10,13,16,11, 6,11, 7,
7, 6, 7,10,13,15,13, 9,12, 9, 8, 6, 8,10,12,14,
14,10,10, 8, 6, 5, 6, 9,11,13,15,11,11, 9, 6, 5,
6, 8, 9,12,
};
 
static const static_codebook _huff_book__44c2_s_short = {
2, 100,
(char *)_huff_lengthlist__44c2_s_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44c3_s_long[] = {
5, 6,11,11,11,11,10,10,12,11, 5, 2,11, 5, 6, 6,
7, 9,11,13,13,10, 7,11, 6, 7, 8, 9,10,12,11, 5,
11, 6, 8, 7, 9,11,14,15,11, 6, 6, 8, 4, 5, 7, 8,
10,13,10, 5, 7, 7, 5, 5, 6, 8,10,11,10, 7, 7, 8,
6, 5, 5, 7, 9, 9,11, 8, 8,11, 8, 7, 6, 6, 7, 9,
12,11,10,13, 9, 9, 7, 7, 7, 9,11,13,12,15,12,11,
9, 8, 8, 8,
};
 
static const static_codebook _huff_book__44c3_s_long = {
2, 100,
(char *)_huff_lengthlist__44c3_s_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44c3_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c3_s_p1_0[] = {
2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0,
0, 0, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
0, 0, 0, 6, 7, 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, 5, 7, 7, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0,
0, 0, 0, 0, 7, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 7, 7, 0, 0, 0, 0,
0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 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, 7, 8, 8, 0, 0, 0,
0, 0, 0, 8, 8, 9, 0, 0, 0, 0, 0, 0, 8, 9, 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, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
0, 0, 0, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9, 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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
0, 0, 0, 0, 7, 8, 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, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
0, 0, 0, 0, 0, 7, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
0, 0, 0, 0, 0, 0, 8, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c3_s_p1_0 = {
8, 6561,
(char *)_vq_lengthlist__44c3_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44c3_s_p1_0,
0
};
 
static const long _vq_quantlist__44c3_s_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c3_s_p2_0[] = {
2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0,
7, 8, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 7,
7, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
0, 0, 5, 6, 6, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0,
0, 0,10,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 7, 0, 0, 0, 7, 7, 0, 0,
0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5,
7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9,
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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7,
0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0,
0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 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,10, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, 0, 0,
10,10, 0, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0, 0, 9,
9, 0, 0, 0, 9, 9, 0, 0, 0,10,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, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c3_s_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44c3_s_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c3_s_p2_0,
0
};
 
static const long _vq_quantlist__44c3_s_p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c3_s_p3_0[] = {
2, 4, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 6, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c3_s_p3_0 = {
4, 625,
(char *)_vq_lengthlist__44c3_s_p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c3_s_p3_0,
0
};
 
static const long _vq_quantlist__44c3_s_p4_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c3_s_p4_0[] = {
2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
7, 8, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0,
0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _44c3_s_p4_0 = {
2, 81,
(char *)_vq_lengthlist__44c3_s_p4_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c3_s_p4_0,
0
};
 
static const long _vq_quantlist__44c3_s_p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c3_s_p5_0[] = {
1, 3, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 7, 7, 7, 8,
9, 9, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8,
8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
9, 9, 9, 9,10,10, 0, 0, 0, 9, 9, 9, 9,10,10, 0,
0, 0,10,10,10,10,11,11, 0, 0, 0, 0, 0,10,10,11,
11,
};
 
static const static_codebook _44c3_s_p5_0 = {
2, 81,
(char *)_vq_lengthlist__44c3_s_p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c3_s_p5_0,
0
};
 
static const long _vq_quantlist__44c3_s_p6_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c3_s_p6_0[] = {
2, 3, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
10, 0, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10,
11,11, 0, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
10,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
10,11,11,11,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,
10,10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9,
9,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
10,10,11,10,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,10,
10,10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 8,
9, 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8,
8, 9, 9,10,10,11,11,12,11,12,12, 0, 0, 0, 0, 0,
9,10,10,10,11,11,11,11,12,12,13,13, 0, 0, 0, 0,
0, 0, 0,10,10,10,10,11,11,12,12,13,13, 0, 0, 0,
0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0, 0,
0, 0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0,
0, 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,13,
0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,
13,
};
 
static const static_codebook _44c3_s_p6_0 = {
2, 289,
(char *)_vq_lengthlist__44c3_s_p6_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c3_s_p6_0,
0
};
 
static const long _vq_quantlist__44c3_s_p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c3_s_p7_0[] = {
1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11,
10,12,11,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
11,10,10,11,10,10, 7,11,11,11,11,11,12,11,11, 6,
9, 9,11,10,10,11,10,10, 6, 9, 9,11,10,10,11,10,
10,
};
 
static const static_codebook _44c3_s_p7_0 = {
4, 81,
(char *)_vq_lengthlist__44c3_s_p7_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44c3_s_p7_0,
0
};
 
static const long _vq_quantlist__44c3_s_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c3_s_p7_1[] = {
2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6,
7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
7, 8, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
8, 8,10,10,10, 7, 8, 8, 8, 8, 8, 8, 8,10,10,10,
8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 9, 8,10,10,
10,10,10, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _44c3_s_p7_1 = {
2, 121,
(char *)_vq_lengthlist__44c3_s_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c3_s_p7_1,
0
};
 
static const long _vq_quantlist__44c3_s_p8_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c3_s_p8_0[] = {
1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 5, 7, 7, 8,
8, 8, 8, 9, 9,11,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
11, 0,12,12, 9, 9,10,10,10,10,11,11,11,12, 0,13,
13, 9, 9,10,10,10,10,11,11,12,12, 0, 0, 0,10,10,
10,10,11,11,12,12,12,12, 0, 0, 0,10,10,10,10,11,
11,12,12,12,12, 0, 0, 0,14,14,11,11,11,11,12,12,
13,13, 0, 0, 0,14,14,11,11,11,11,12,12,13,13, 0,
0, 0, 0, 0,12,12,12,12,13,13,14,13, 0, 0, 0, 0,
0,13,13,12,12,13,12,14,13,
};
 
static const static_codebook _44c3_s_p8_0 = {
2, 169,
(char *)_vq_lengthlist__44c3_s_p8_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44c3_s_p8_0,
0
};
 
static const long _vq_quantlist__44c3_s_p8_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c3_s_p8_1[] = {
2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 4, 5, 5, 5, 6,
5, 5, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _44c3_s_p8_1 = {
2, 25,
(char *)_vq_lengthlist__44c3_s_p8_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c3_s_p8_1,
0
};
 
static const long _vq_quantlist__44c3_s_p9_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c3_s_p9_0[] = {
1, 4, 4,12,12,12,12,12,12,12,12,12,12, 4, 9, 8,
12,12,12,12,12,12,12,12,12,12, 2, 9, 7,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,
};
 
static const static_codebook _44c3_s_p9_0 = {
2, 169,
(char *)_vq_lengthlist__44c3_s_p9_0,
1, -514332672, 1627381760, 4, 0,
(long *)_vq_quantlist__44c3_s_p9_0,
0
};
 
static const long _vq_quantlist__44c3_s_p9_1[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__44c3_s_p9_1[] = {
1, 4, 4, 6, 6, 7, 7, 8, 7, 9, 9,10,10,10,10, 6,
5, 5, 7, 7, 8, 8,10, 8,11,10,12,12,13,13, 6, 5,
5, 7, 7, 8, 8,10, 9,11,11,12,12,13,12,18, 8, 8,
8, 8, 9, 9,10, 9,11,10,12,12,13,13,18, 8, 8, 8,
8, 9, 9,10,10,11,11,13,12,14,13,18,11,11, 9, 9,
10,10,11,11,11,12,13,12,13,14,18,11,11, 9, 8,11,
10,11,11,11,11,12,12,14,13,18,18,18,10,11,10,11,
12,12,12,12,13,12,14,13,18,18,18,10,11,11, 9,12,
11,12,12,12,13,13,13,18,18,17,14,14,11,11,12,12,
13,12,14,12,14,13,18,18,18,14,14,11,10,12, 9,12,
13,13,13,13,13,18,18,17,16,18,13,13,12,12,13,11,
14,12,14,14,17,18,18,17,18,13,12,13,10,12,11,14,
14,14,14,17,18,18,18,18,15,16,12,12,13,10,14,12,
14,15,18,18,18,16,17,16,14,12,11,13,10,13,13,14,
15,
};
 
static const static_codebook _44c3_s_p9_1 = {
2, 225,
(char *)_vq_lengthlist__44c3_s_p9_1,
1, -522338304, 1620115456, 4, 0,
(long *)_vq_quantlist__44c3_s_p9_1,
0
};
 
static const long _vq_quantlist__44c3_s_p9_2[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c3_s_p9_2[] = {
2, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,
8,10, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 8, 9, 9, 9,
9, 9,10, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 9, 9, 9, 9,
9, 9, 9, 9, 9,11,11,11, 8, 8, 8, 8, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9,10, 9,10,10,10,11,11, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9,11,10,11,11,11, 9, 9,
9, 9, 9, 9,10,10, 9, 9,10, 9,11,10,11,11,11, 9,
9, 9, 9, 9, 9, 9, 9,10,10,10, 9,11,11,11,11,11,
9, 9, 9, 9,10,10, 9, 9, 9, 9,10, 9,11,11,11,11,
11,11,11, 9, 9, 9, 9, 9, 9,10,10,10,10,11,11,11,
11,11,11,11,10, 9,10,10, 9,10, 9, 9,10, 9,11,10,
10,11,11,11,11, 9,10, 9, 9, 9, 9,10,10,10,10,11,
11,11,11,11,11,10,10,10, 9, 9,10, 9,10, 9,10,10,
10,10,11,11,11,11,11,11,11, 9, 9, 9, 9, 9,10,10,
10,
};
 
static const static_codebook _44c3_s_p9_2 = {
2, 289,
(char *)_vq_lengthlist__44c3_s_p9_2,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c3_s_p9_2,
0
};
 
static const char _huff_lengthlist__44c3_s_short[] = {
10, 9,13,11,14,10,12,13,13,14, 7, 2,12, 5,10, 5,
7,10,12,14,12, 6, 9, 8, 7, 7, 9,11,13,16,10, 4,
12, 5,10, 6, 8,12,14,16,12, 6, 8, 7, 6, 5, 7,11,
12,16,10, 4, 8, 5, 6, 4, 6, 9,13,16,10, 6,10, 7,
7, 6, 7, 9,13,15,12, 9,11, 9, 8, 6, 7,10,12,14,
14,11,10, 9, 6, 5, 6, 9,11,13,15,13,11,10, 6, 5,
6, 8, 9,11,
};
 
static const static_codebook _huff_book__44c3_s_short = {
2, 100,
(char *)_huff_lengthlist__44c3_s_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44c4_s_long[] = {
4, 7,11,11,11,11,10,11,12,11, 5, 2,11, 5, 6, 6,
7, 9,11,12,11, 9, 6,10, 6, 7, 8, 9,10,11,11, 5,
11, 7, 8, 8, 9,11,13,14,11, 6, 5, 8, 4, 5, 7, 8,
10,11,10, 6, 7, 7, 5, 5, 6, 8, 9,11,10, 7, 8, 9,
6, 6, 6, 7, 8, 9,11, 9, 9,11, 7, 7, 6, 6, 7, 9,
12,12,10,13, 9, 8, 7, 7, 7, 8,11,13,11,14,11,10,
9, 8, 7, 7,
};
 
static const static_codebook _huff_book__44c4_s_long = {
2, 100,
(char *)_huff_lengthlist__44c4_s_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44c4_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c4_s_p1_0[] = {
2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0,
0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
0, 0, 0, 6, 8, 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, 5, 7, 7, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0,
0, 0, 0, 0, 7, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 7, 7, 0, 0, 0, 0,
0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 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, 7, 8, 8, 0, 0, 0,
0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 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, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9, 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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
0, 0, 0, 0, 7, 8, 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, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
0, 0, 0, 0, 0, 8, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
0, 0, 0, 0, 0, 0, 8, 9, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c4_s_p1_0 = {
8, 6561,
(char *)_vq_lengthlist__44c4_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44c4_s_p1_0,
0
};
 
static const long _vq_quantlist__44c4_s_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c4_s_p2_0[] = {
2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0,
7, 7, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 7,
7, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
0, 0, 5, 6, 6, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0,
0, 0,10,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 7, 0, 0, 0, 7, 7, 0, 0,
0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5,
7, 8, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9,
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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7,
0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0,
0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7,10,10, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, 0, 0,
10,10, 0, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0, 0, 9,
9, 0, 0, 0, 9, 9, 0, 0, 0,10,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, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c4_s_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44c4_s_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c4_s_p2_0,
0
};
 
static const long _vq_quantlist__44c4_s_p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c4_s_p3_0[] = {
2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 4, 6, 6, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 4, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 6, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c4_s_p3_0 = {
4, 625,
(char *)_vq_lengthlist__44c4_s_p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c4_s_p3_0,
0
};
 
static const long _vq_quantlist__44c4_s_p4_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c4_s_p4_0[] = {
2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
7, 8, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0,
0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _44c4_s_p4_0 = {
2, 81,
(char *)_vq_lengthlist__44c4_s_p4_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c4_s_p4_0,
0
};
 
static const long _vq_quantlist__44c4_s_p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c4_s_p5_0[] = {
2, 3, 3, 6, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
9, 9, 0, 4, 5, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7,
8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10, 9, 0, 0, 0,
9, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,10,
10,
};
 
static const static_codebook _44c4_s_p5_0 = {
2, 81,
(char *)_vq_lengthlist__44c4_s_p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c4_s_p5_0,
0
};
 
static const long _vq_quantlist__44c4_s_p6_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c4_s_p6_0[] = {
2, 4, 4, 6, 6, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,
11, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,
11,11, 0, 4, 4, 7, 6, 8, 8, 9, 9, 9, 9,10,10,11,
11,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
11,11,11,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,
10,10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9,
9,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,10,
10,10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,
9,10,10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9,
9, 9, 9,10,10,11,11,11,12,12,12, 0, 0, 0, 0, 0,
10,10,10,10,11,11,11,11,12,12,13,12, 0, 0, 0, 0,
0, 0, 0,10,10,11,11,11,11,12,12,12,12, 0, 0, 0,
0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0, 0,
0, 0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0,
0, 0, 0, 0, 0, 0,12,12,12,12,12,12,13,13,13,13,
0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,12,13,13,
13,
};
 
static const static_codebook _44c4_s_p6_0 = {
2, 289,
(char *)_vq_lengthlist__44c4_s_p6_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c4_s_p6_0,
0
};
 
static const long _vq_quantlist__44c4_s_p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c4_s_p7_0[] = {
1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11,
10,11,11,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
11,10,10,11,10,10, 7,11,11,12,11,11,12,11,11, 6,
9, 9,11,10,10,11,10,10, 6, 9, 9,11,10,10,11,10,
10,
};
 
static const static_codebook _44c4_s_p7_0 = {
4, 81,
(char *)_vq_lengthlist__44c4_s_p7_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44c4_s_p7_0,
0
};
 
static const long _vq_quantlist__44c4_s_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c4_s_p7_1[] = {
2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6,
7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
7, 8, 8, 8, 8, 8, 8,10,10,10, 8, 7, 8, 8, 8, 8,
8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 9, 8,10,10,
10,10,10, 8, 8, 8, 8, 9, 9,
};
 
static const static_codebook _44c4_s_p7_1 = {
2, 121,
(char *)_vq_lengthlist__44c4_s_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c4_s_p7_1,
0
};
 
static const long _vq_quantlist__44c4_s_p8_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c4_s_p8_0[] = {
1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
7, 7, 8, 8, 8, 8, 9,10,11,11, 7, 5, 5, 7, 7, 8,
8, 9, 9,10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
11, 0,12,12, 9, 9, 9, 9,10,10,10,10,11,11, 0,13,
13, 9, 9,10, 9,10,10,11,11,11,12, 0, 0, 0,10,10,
10,10,10,10,11,11,12,12, 0, 0, 0,10,10,10,10,10,
10,11,11,12,12, 0, 0, 0,14,14,11,11,11,11,12,12,
12,12, 0, 0, 0,14,14,11,11,11,11,12,12,12,13, 0,
0, 0, 0, 0,12,12,12,12,12,12,13,13, 0, 0, 0, 0,
0,13,12,12,12,12,12,13,13,
};
 
static const static_codebook _44c4_s_p8_0 = {
2, 169,
(char *)_vq_lengthlist__44c4_s_p8_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44c4_s_p8_0,
0
};
 
static const long _vq_quantlist__44c4_s_p8_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c4_s_p8_1[] = {
2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 5, 4, 5, 5, 6,
5, 5, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _44c4_s_p8_1 = {
2, 25,
(char *)_vq_lengthlist__44c4_s_p8_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c4_s_p8_1,
0
};
 
static const long _vq_quantlist__44c4_s_p9_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c4_s_p9_0[] = {
1, 3, 3,12,12,12,12,12,12,12,12,12,12, 4, 7, 7,
12,12,12,12,12,12,12,12,12,12, 3, 8, 8,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,
};
 
static const static_codebook _44c4_s_p9_0 = {
2, 169,
(char *)_vq_lengthlist__44c4_s_p9_0,
1, -513964032, 1628680192, 4, 0,
(long *)_vq_quantlist__44c4_s_p9_0,
0
};
 
static const long _vq_quantlist__44c4_s_p9_1[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__44c4_s_p9_1[] = {
1, 4, 4, 5, 5, 7, 7, 9, 8,10, 9,10,10,10,10, 6,
5, 5, 7, 7, 9, 8,10, 9,11,10,12,12,13,13, 6, 5,
5, 7, 7, 9, 9,10,10,11,11,12,12,12,13,19, 8, 8,
8, 8, 9, 9,10,10,12,11,12,12,13,13,19, 8, 8, 8,
8, 9, 9,11,11,12,12,13,13,13,13,19,12,12, 9, 9,
11,11,11,11,12,11,13,12,13,13,18,12,12, 9, 9,11,
10,11,11,12,12,12,13,13,14,19,18,18,11,11,11,11,
12,12,13,12,13,13,14,14,16,18,18,11,11,11,10,12,
11,13,13,13,13,13,14,17,18,18,14,15,11,12,12,13,
13,13,13,14,14,14,18,18,18,15,15,12,10,13,10,13,
13,13,13,13,14,18,17,18,17,18,12,13,12,13,13,13,
14,14,16,14,18,17,18,18,17,13,12,13,10,12,12,14,
14,14,14,17,18,18,18,18,14,15,12,12,13,12,14,14,
15,15,18,18,18,17,18,15,14,12,11,12,12,14,14,14,
15,
};
 
static const static_codebook _44c4_s_p9_1 = {
2, 225,
(char *)_vq_lengthlist__44c4_s_p9_1,
1, -520986624, 1620377600, 4, 0,
(long *)_vq_quantlist__44c4_s_p9_1,
0
};
 
static const long _vq_quantlist__44c4_s_p9_2[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__44c4_s_p9_2[] = {
2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
8, 9, 9, 9, 9,11, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
9, 9, 9, 9, 9, 9,10,10,10,10,11, 6, 6, 7, 7, 8,
8, 8, 8, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,11,
7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9,10,10,10,
10,10,10,10,12,11,11, 7, 7, 8, 8, 9, 9, 9, 9, 9,
9,10,10,10,10,10,10,10,10,12,11,12, 8, 8, 8, 8,
9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,11,11,
11, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10,10,10,10,
10,10,10,11,11,12, 9, 9, 9, 9, 9, 9,10, 9,10,10,
10,10,10,10,10,10,10,10,11,11,11,11,11, 9, 9, 9,
9,10,10,10,10,10,10,10,10,10,10,10,10,11,12,11,
11,11, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
10,10,11,11,11,11,11, 9, 9, 9, 9,10,10,10,10,10,
10,10,10,10,10,10,10,11,11,11,12,12,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,11,12,11,12,
11,11,11, 9,10,10,10,10,10,10,10,10,10,10,10,10,
10,11,12,11,11,11,11,11,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,11,11,11,12,11,11,11,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,12,11,11,12,11,
11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,
10,10,10,10,10,11,11,11,11,12,12,11,11,11,11,11,
11,11,10,10,10,10,10,10,10,10,12,12,12,11,11,11,
12,11,11,11,10,10,10,10,10,10,10,10,10,10,10,12,
11,12,12,12,12,12,11,12,11,11,10,10,10,10,10,10,
10,10,10,10,12,12,12,12,11,11,11,11,11,11,11,10,
10,10,10,10,10,10,10,10,10,
};
 
static const static_codebook _44c4_s_p9_2 = {
2, 441,
(char *)_vq_lengthlist__44c4_s_p9_2,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__44c4_s_p9_2,
0
};
 
static const char _huff_lengthlist__44c4_s_short[] = {
4, 7,14,10,15,10,12,15,16,15, 4, 2,11, 5,10, 6,
8,11,14,14,14,10, 7,11, 6, 8,10,11,13,15, 9, 4,
11, 5, 9, 6, 9,12,14,15,14, 9, 6, 9, 4, 5, 7,10,
12,13, 9, 5, 7, 6, 5, 5, 7,10,13,13,10, 8, 9, 8,
7, 6, 8,10,14,14,13,11,10,10, 7, 7, 8,11,14,15,
13,12, 9, 9, 6, 5, 7,10,14,17,15,13,11,10, 6, 6,
7, 9,12,17,
};
 
static const static_codebook _huff_book__44c4_s_short = {
2, 100,
(char *)_huff_lengthlist__44c4_s_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44c5_s_long[] = {
3, 8, 9,13,10,12,12,12,12,12, 6, 4, 6, 8, 6, 8,
10,10,11,12, 8, 5, 4,10, 4, 7, 8, 9,10,11,13, 8,
10, 8, 9, 9,11,12,13,14,10, 6, 4, 9, 3, 5, 6, 8,
10,11,11, 8, 6, 9, 5, 5, 6, 7, 9,11,12, 9, 7,11,
6, 6, 6, 7, 8,10,12,11, 9,12, 7, 7, 6, 6, 7, 9,
13,12,10,13, 9, 8, 7, 7, 7, 8,11,15,11,15,11,10,
9, 8, 7, 7,
};
 
static const static_codebook _huff_book__44c5_s_long = {
2, 100,
(char *)_huff_lengthlist__44c5_s_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44c5_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c5_s_p1_0[] = {
2, 4, 4, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
0, 0, 4, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
0, 0, 0, 7, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
0, 0, 0, 0, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 7, 7, 0, 0, 0, 0,
0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 7, 9, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
0, 0, 0, 9,10,11, 0, 0, 0, 0, 0, 0, 9,10,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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
0, 0, 0, 0, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
0, 0, 0, 0, 0, 8, 9,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
0, 0, 0, 0, 0, 0, 9,11,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c5_s_p1_0 = {
8, 6561,
(char *)_vq_lengthlist__44c5_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44c5_s_p1_0,
0
};
 
static const long _vq_quantlist__44c5_s_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c5_s_p2_0[] = {
2, 4, 4, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0,
8, 7, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 8,
8, 0, 0, 0, 8, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
0, 0, 4, 6, 6, 0, 0, 0, 8, 8, 0, 0, 0, 7, 8, 0,
0, 0,10,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 7, 0, 0, 0, 8, 8, 0, 0,
0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5,
7, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,
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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8,
0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0,
0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,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, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 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,10, 0, 0, 0,10,10, 0, 0, 0, 9,10, 0, 0, 0,
11,10, 0, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0, 0,10,
10, 0, 0, 0,10,10, 0, 0, 0,10,11, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c5_s_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44c5_s_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c5_s_p2_0,
0
};
 
static const long _vq_quantlist__44c5_s_p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c5_s_p3_0[] = {
2, 4, 3, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 6, 6, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 3, 5, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 8, 8,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 5, 6, 6, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c5_s_p3_0 = {
4, 625,
(char *)_vq_lengthlist__44c5_s_p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c5_s_p3_0,
0
};
 
static const long _vq_quantlist__44c5_s_p4_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c5_s_p4_0[] = {
2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
7, 7, 0, 0, 0, 0, 0, 0, 0, 8, 7, 0, 0, 0, 0, 0,
0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _44c5_s_p4_0 = {
2, 81,
(char *)_vq_lengthlist__44c5_s_p4_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c5_s_p4_0,
0
};
 
static const long _vq_quantlist__44c5_s_p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c5_s_p5_0[] = {
2, 4, 3, 6, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7,
7, 7, 9, 9, 0, 0, 0, 7, 6, 7, 7, 9, 9, 0, 0, 0,
8, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
0, 0, 9, 9, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
10,
};
 
static const static_codebook _44c5_s_p5_0 = {
2, 81,
(char *)_vq_lengthlist__44c5_s_p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c5_s_p5_0,
0
};
 
static const long _vq_quantlist__44c5_s_p6_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c5_s_p6_0[] = {
2, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,10,11,
11, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,
12,12, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,
11,12,12, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
10,11,11,12,12, 0, 0, 0, 7, 7, 9, 9,10,10,10,10,
11,11,11,11,12,12, 0, 0, 0, 7, 7, 8, 9,10,10,10,
10,11,11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,
10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,
10,10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9,
9, 9,10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0,
10,10,10,10,11,11,11,12,12,12,13,13, 0, 0, 0, 0,
0, 0, 0,10,10,11,11,11,11,12,12,13,13, 0, 0, 0,
0, 0, 0, 0,11,11,11,11,12,12,12,13,13,13, 0, 0,
0, 0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0,
0, 0, 0, 0, 0, 0,12,12,12,12,13,12,13,13,13,13,
0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,
13,
};
 
static const static_codebook _44c5_s_p6_0 = {
2, 289,
(char *)_vq_lengthlist__44c5_s_p6_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c5_s_p6_0,
0
};
 
static const long _vq_quantlist__44c5_s_p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c5_s_p7_0[] = {
1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11,
10,11,11,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
11,10,10,11,10,10, 7,11,11,12,11,11,12,11,11, 6,
9, 9,11,10,10,11,10,10, 6, 9, 9,11,10,10,11,10,
10,
};
 
static const static_codebook _44c5_s_p7_0 = {
4, 81,
(char *)_vq_lengthlist__44c5_s_p7_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44c5_s_p7_0,
0
};
 
static const long _vq_quantlist__44c5_s_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c5_s_p7_1[] = {
2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6,
7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
7, 8, 8, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
8, 8, 8, 8, 8, 8, 8, 9,10,10,10,10,10, 8, 8, 8,
8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
10,10,10, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _44c5_s_p7_1 = {
2, 121,
(char *)_vq_lengthlist__44c5_s_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c5_s_p7_1,
0
};
 
static const long _vq_quantlist__44c5_s_p8_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c5_s_p8_0[] = {
1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
7, 7, 8, 8, 8, 9,10,10,10,10, 7, 5, 5, 7, 7, 8,
8, 9, 9,10,10,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
11, 0,12,12, 9, 9, 9,10,10,10,10,10,11,11, 0,13,
13, 9, 9, 9, 9,10,10,11,11,11,11, 0, 0, 0,10,10,
10,10,10,10,11,11,11,11, 0, 0, 0,10,10,10,10,10,
10,11,11,12,12, 0, 0, 0,14,14,11,11,11,11,12,12,
12,12, 0, 0, 0,14,14,11,11,11,11,12,12,12,12, 0,
0, 0, 0, 0,12,12,12,12,12,12,13,13, 0, 0, 0, 0,
0,12,12,12,12,12,12,13,13,
};
 
static const static_codebook _44c5_s_p8_0 = {
2, 169,
(char *)_vq_lengthlist__44c5_s_p8_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44c5_s_p8_0,
0
};
 
static const long _vq_quantlist__44c5_s_p8_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c5_s_p8_1[] = {
2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 4, 5, 5, 5, 6,
5, 5, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _44c5_s_p8_1 = {
2, 25,
(char *)_vq_lengthlist__44c5_s_p8_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c5_s_p8_1,
0
};
 
static const long _vq_quantlist__44c5_s_p9_0[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__44c5_s_p9_0[] = {
1, 3, 3,13,13,13,13,13,13,13,13,13,13,13,13, 4,
7, 7,13,13,13,13,13,13,13,13,13,13,13,13, 3, 8,
6,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,
12,
};
 
static const static_codebook _44c5_s_p9_0 = {
2, 225,
(char *)_vq_lengthlist__44c5_s_p9_0,
1, -512522752, 1628852224, 4, 0,
(long *)_vq_quantlist__44c5_s_p9_0,
0
};
 
static const long _vq_quantlist__44c5_s_p9_1[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c5_s_p9_1[] = {
1, 4, 4, 5, 5, 7, 7, 9, 8,10, 9,10,10,11,10,11,
11, 6, 5, 5, 7, 7, 8, 9,10,10,11,10,12,11,12,11,
13,12, 6, 5, 5, 7, 7, 9, 9,10,10,11,11,12,12,13,
12,13,13,18, 8, 8, 8, 8, 9, 9,10,11,11,11,12,11,
13,11,13,12,18, 8, 8, 8, 8,10,10,11,11,12,12,13,
13,13,13,13,14,18,12,12, 9, 9,11,11,11,11,12,12,
13,12,13,12,13,13,20,13,12, 9, 9,11,11,11,11,12,
12,13,13,13,14,14,13,20,18,19,11,12,11,11,12,12,
13,13,13,13,13,13,14,13,18,19,19,12,11,11,11,12,
12,13,12,13,13,13,14,14,13,18,17,19,14,15,12,12,
12,13,13,13,14,14,14,14,14,14,19,19,19,16,15,12,
11,13,12,14,14,14,13,13,14,14,14,19,18,19,18,19,
13,13,13,13,14,14,14,13,14,14,14,14,18,17,19,19,
19,13,13,13,11,13,11,13,14,14,14,14,14,19,17,17,
18,18,16,16,13,13,13,13,14,13,15,15,14,14,19,19,
17,17,18,16,16,13,11,14,10,13,12,14,14,14,14,19,
19,19,19,19,18,17,13,14,13,11,14,13,14,14,15,15,
19,19,19,17,19,18,18,14,13,12,11,14,11,15,15,15,
15,
};
 
static const static_codebook _44c5_s_p9_1 = {
2, 289,
(char *)_vq_lengthlist__44c5_s_p9_1,
1, -520814592, 1620377600, 5, 0,
(long *)_vq_quantlist__44c5_s_p9_1,
0
};
 
static const long _vq_quantlist__44c5_s_p9_2[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__44c5_s_p9_2[] = {
3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 9,11, 5, 6, 7, 7, 8, 7, 8, 8, 8, 8,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11, 5, 5, 7, 7, 7,
7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
9,10, 9,10,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9, 9,
9, 9, 9,10,10,10,10,10,10,11,11,11, 8, 8, 8, 8,
9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,11,11,
11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,10,
10,10,10,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
10,10,10,10,10,10,10,10,11,11,11,11,11, 9, 9, 9,
9, 9, 9,10, 9,10,10,10,10,10,10,10,10,11,11,11,
11,11, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,
10,10,11,11,11,11,11, 9, 9, 9, 9, 9, 9,10,10,10,
10,10,10,10,10,10,10,11,11,11,11,11, 9, 9,10, 9,
10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,
11,11,11, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,11,11,11,11,11,11,11,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,
11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,
10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,
10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,
11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,
10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,10,
10,10,10,10,10,10,10,10,10,
};
 
static const static_codebook _44c5_s_p9_2 = {
2, 441,
(char *)_vq_lengthlist__44c5_s_p9_2,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__44c5_s_p9_2,
0
};
 
static const char _huff_lengthlist__44c5_s_short[] = {
5, 8,10,14,11,11,12,16,15,17, 5, 5, 7, 9, 7, 8,
10,13,17,17, 7, 5, 5,10, 5, 7, 8,11,13,15,10, 8,
10, 8, 8, 8,11,15,18,18, 8, 5, 5, 8, 3, 4, 6,10,
14,16, 9, 7, 6, 7, 4, 3, 5, 9,14,18,10, 9, 8,10,
6, 5, 6, 9,14,18,12,12,11,12, 8, 7, 8,11,14,18,
14,13,12,10, 7, 5, 6, 9,14,18,14,14,13,10, 6, 5,
6, 8,11,16,
};
 
static const static_codebook _huff_book__44c5_s_short = {
2, 100,
(char *)_huff_lengthlist__44c5_s_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44c6_s_long[] = {
3, 8,11,13,14,14,13,13,16,14, 6, 3, 4, 7, 9, 9,
10,11,14,13,10, 4, 3, 5, 7, 7, 9,10,13,15,12, 7,
4, 4, 6, 6, 8,10,13,15,12, 8, 6, 6, 6, 6, 8,10,
13,14,11, 9, 7, 6, 6, 6, 7, 8,12,11,13,10, 9, 8,
7, 6, 6, 7,11,11,13,11,10, 9, 9, 7, 7, 6,10,11,
13,13,13,13,13,11, 9, 8,10,12,12,15,15,16,15,12,
11,10,10,12,
};
 
static const static_codebook _huff_book__44c6_s_long = {
2, 100,
(char *)_huff_lengthlist__44c6_s_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44c6_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c6_s_p1_0[] = {
1, 5, 5, 0, 5, 5, 0, 5, 5, 5, 8, 7, 0, 9, 9, 0,
9, 8, 5, 7, 8, 0, 9, 9, 0, 8, 9, 0, 0, 0, 0, 0,
0, 0, 0, 0, 5, 9, 8, 0, 8, 8, 0, 8, 8, 5, 8, 9,
0, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
9, 9, 0, 8, 8, 0, 8, 8, 5, 9, 9, 0, 8, 8, 0, 8,
8,
};
static const static_codebook _44c6_s_p1_0 = {
4, 81,
(char *)_vq_lengthlist__44c6_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44c6_s_p1_0,
0
};
 
static const long _vq_quantlist__44c6_s_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c6_s_p2_0[] = {
3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0,
7, 7, 9, 9, 0, 0, 0, 9, 9, 5, 7, 7, 9, 9, 0, 8,
8,10,10, 0, 8, 7,10, 9, 0,10,10,11,11, 0, 0, 0,
11,11, 5, 7, 7, 9, 9, 0, 8, 8,10,10, 0, 7, 8, 9,
10, 0,10,10,11,11, 0, 0, 0,11,11, 8, 9, 9,11,11,
0,11,11,12,12, 0,11,10,12,12, 0,13,14,14,14, 0,
0, 0,14,13, 8, 9, 9,11,11, 0,11,11,12,12, 0,10,
11,12,12, 0,14,13,14,14, 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, 5, 8, 7,11,10, 0, 7, 7,10,10,
0, 7, 7,10,10, 0, 9, 9,11,10, 0, 0, 0,11,11, 5,
7, 8,10,11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9,
9,10,11, 0, 0, 0,11,11, 8,10, 9,12,12, 0,10,10,
12,12, 0,10,10,12,12, 0,12,12,13,13, 0, 0, 0,13,
13, 8, 9,10,12,12, 0,10,10,11,12, 0,10,10,12,12,
0,12,12,13,13, 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, 5, 8, 8,11,11, 0, 7, 7,10,10, 0, 7, 7,
10,10, 0, 9, 9,10,11, 0, 0, 0,11,10, 5, 8, 8,11,
11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9, 9,11,11,
0, 0, 0,10,11, 8,10,10,12,12, 0,10,10,12,12, 0,
10,10,12,12, 0,12,13,13,13, 0, 0, 0,14,13, 8,10,
10,12,12, 0,10,10,12,12, 0,10,10,12,12, 0,13,12,
13,13, 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,
7,10,10,14,13, 0, 9, 9,13,12, 0, 9, 9,12,12, 0,
10,10,12,12, 0, 0, 0,12,12, 7,10,10,13,14, 0, 9,
9,12,13, 0, 9, 9,12,12, 0,10,10,12,12, 0, 0, 0,
12,12, 9,11,11,14,13, 0,11,10,14,13, 0,11,11,13,
13, 0,12,12,13,13, 0, 0, 0,13,13, 9,11,11,13,14,
0,10,11,13,14, 0,11,11,13,13, 0,12,12,13,13, 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, 9,
11,11,14,14, 0,11,11,13,13, 0,11,10,13,13, 0,12,
12,13,13, 0, 0, 0,13,13, 9,11,11,14,14, 0,11,11,
13,13, 0,10,11,13,13, 0,12,12,14,13, 0, 0, 0,13,
13,
};
 
static const static_codebook _44c6_s_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44c6_s_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c6_s_p2_0,
0
};
 
static const long _vq_quantlist__44c6_s_p3_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c6_s_p3_0[] = {
2, 3, 4, 6, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
9,10, 0, 4, 4, 6, 6, 7, 7,10, 9, 0, 5, 5, 7, 7,
8, 8,10,10, 0, 0, 0, 7, 6, 8, 8,10,10, 0, 0, 0,
7, 7, 9, 9,11,11, 0, 0, 0, 7, 7, 9, 9,11,11, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _44c6_s_p3_0 = {
2, 81,
(char *)_vq_lengthlist__44c6_s_p3_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c6_s_p3_0,
0
};
 
static const long _vq_quantlist__44c6_s_p4_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c6_s_p4_0[] = {
2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9,10,10,
10, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,10,
11,11, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,
10,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
10,11,11,11,11, 0, 0, 0, 7, 7, 9, 9,10,10,10,10,
11,11,11,11,12,12, 0, 0, 0, 7, 7, 9, 9,10,10,10,
10,11,11,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8, 8, 9,
9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c6_s_p4_0 = {
2, 289,
(char *)_vq_lengthlist__44c6_s_p4_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c6_s_p4_0,
0
};
 
static const long _vq_quantlist__44c6_s_p5_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c6_s_p5_0[] = {
1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 6, 9, 9,10,10,
10, 9, 4, 6, 6, 9,10, 9,10, 9,10, 6, 9, 9,10,12,
11,10,11,11, 7,10, 9,11,12,12,12,12,12, 7,10,10,
11,12,12,12,12,12, 6,10,10,10,12,12,11,12,12, 7,
9,10,11,12,12,12,12,12, 7,10, 9,12,12,12,12,12,
12,
};
 
static const static_codebook _44c6_s_p5_0 = {
4, 81,
(char *)_vq_lengthlist__44c6_s_p5_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44c6_s_p5_0,
0
};
 
static const long _vq_quantlist__44c6_s_p5_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c6_s_p5_1[] = {
3, 5, 4, 6, 6, 7, 7, 8, 8, 8, 8,11, 4, 4, 6, 6,
7, 7, 8, 8, 8, 8,11, 4, 4, 6, 6, 7, 7, 8, 8, 8,
8,11, 6, 6, 6, 6, 8, 8, 8, 8, 9, 9,11,11,11, 6,
6, 7, 8, 8, 8, 8, 9,11,11,11, 7, 7, 8, 8, 8, 8,
8, 8,11,11,11, 7, 7, 8, 8, 8, 8, 8, 8,11,11,11,
8, 8, 8, 8, 8, 8, 8, 8,11,11,11,10,10, 8, 8, 8,
8, 8, 8,11,11,11,10,10, 8, 8, 8, 8, 8, 8,11,11,
11,10,10, 7, 7, 8, 8, 8, 8,
};
 
static const static_codebook _44c6_s_p5_1 = {
2, 121,
(char *)_vq_lengthlist__44c6_s_p5_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c6_s_p5_1,
0
};
 
static const long _vq_quantlist__44c6_s_p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c6_s_p6_0[] = {
1, 4, 4, 6, 6, 8, 8, 8, 8,10, 9,10,10, 6, 5, 5,
7, 7, 9, 9, 9, 9,10,10,11,11, 6, 5, 5, 7, 7, 9,
9,10, 9,11,10,11,11, 0, 6, 6, 7, 7, 9, 9,10,10,
11,11,12,12, 0, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
12, 0,11,11, 8, 8,10,10,11,11,12,12,12,12, 0,11,
12, 9, 8,10,10,11,11,12,12,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, 0, 0, 0,
};
 
static const static_codebook _44c6_s_p6_0 = {
2, 169,
(char *)_vq_lengthlist__44c6_s_p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44c6_s_p6_0,
0
};
 
static const long _vq_quantlist__44c6_s_p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c6_s_p6_1[] = {
3, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 6,
5, 5, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _44c6_s_p6_1 = {
2, 25,
(char *)_vq_lengthlist__44c6_s_p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c6_s_p6_1,
0
};
 
static const long _vq_quantlist__44c6_s_p7_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c6_s_p7_0[] = {
1, 4, 4, 6, 6, 8, 8, 8, 8,10,10,11,10, 6, 5, 5,
7, 7, 8, 8, 9, 9,10,10,12,11, 6, 5, 5, 7, 7, 8,
8, 9, 9,10,10,12,11,21, 7, 7, 7, 7, 9, 9,10,10,
11,11,12,12,21, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
12,21,12,12, 9, 9,10,10,11,11,11,11,12,12,21,12,
12, 9, 9,10,10,11,11,12,12,12,12,21,21,21,11,11,
10,10,11,12,12,12,13,13,21,21,21,11,11,10,10,12,
12,12,12,13,13,21,21,21,15,15,11,11,12,12,13,13,
13,13,21,21,21,15,16,11,11,12,12,13,13,14,14,21,
21,21,21,20,13,13,13,13,13,13,14,14,20,20,20,20,
20,13,13,13,13,13,13,14,14,
};
 
static const static_codebook _44c6_s_p7_0 = {
2, 169,
(char *)_vq_lengthlist__44c6_s_p7_0,
1, -523206656, 1618345984, 4, 0,
(long *)_vq_quantlist__44c6_s_p7_0,
0
};
 
static const long _vq_quantlist__44c6_s_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c6_s_p7_1[] = {
3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 9, 5, 5, 6, 6,
7, 7, 7, 7, 8, 7, 8, 5, 5, 6, 6, 7, 7, 7, 7, 7,
7, 9, 6, 6, 7, 7, 7, 7, 8, 7, 7, 8, 9, 9, 9, 7,
7, 7, 7, 7, 7, 7, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8,
8, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9,
8, 8, 8, 8, 7, 7, 8, 8, 9, 9, 9, 9, 8, 8, 8, 7,
7, 8, 8, 9, 9, 9, 8, 8, 8, 8, 7, 7, 8, 8, 9, 9,
9, 8, 8, 7, 7, 7, 7, 8, 8,
};
 
static const static_codebook _44c6_s_p7_1 = {
2, 121,
(char *)_vq_lengthlist__44c6_s_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c6_s_p7_1,
0
};
 
static const long _vq_quantlist__44c6_s_p8_0[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__44c6_s_p8_0[] = {
1, 4, 4, 7, 7, 8, 8, 7, 7, 8, 7, 9, 8,10, 9, 6,
5, 5, 8, 8, 9, 9, 8, 8, 9, 9,11,10,11,10, 6, 5,
5, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,11,18, 8, 8,
9, 8,10,10, 9, 9,10,10,10,10,11,10,18, 8, 8, 9,
9,10,10, 9, 9,10,10,11,11,12,12,18,12,13, 9,10,
10,10, 9,10,10,10,11,11,12,11,18,13,13, 9, 9,10,
10,10,10,10,10,11,11,12,12,18,18,18,10,10, 9, 9,
11,11,11,11,11,12,12,12,18,18,18,10, 9,10, 9,11,
10,11,11,11,11,13,12,18,18,18,14,13,10,10,11,11,
12,12,12,12,12,12,18,18,18,14,13,10,10,11,10,12,
12,12,12,12,12,18,18,18,18,18,12,12,11,11,12,12,
13,13,13,14,18,18,18,18,18,12,12,11,11,12,11,13,
13,14,13,18,18,18,18,18,16,16,11,12,12,13,13,13,
14,13,18,18,18,18,18,16,15,12,11,12,11,13,11,15,
14,
};
 
static const static_codebook _44c6_s_p8_0 = {
2, 225,
(char *)_vq_lengthlist__44c6_s_p8_0,
1, -520986624, 1620377600, 4, 0,
(long *)_vq_quantlist__44c6_s_p8_0,
0
};
 
static const long _vq_quantlist__44c6_s_p8_1[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__44c6_s_p8_1[] = {
3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
8, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9,10,
7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9,10,11,11, 8, 7, 8, 8, 8, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,11, 8, 8, 8, 8,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,
11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9,11,11,11,11,11, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,11,11,11,
11,11, 9, 9, 9, 9, 9, 9,10, 9, 9,10, 9,10, 9, 9,
10, 9,11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9,10,10,
10,10, 9,10,10, 9,10,11,11,11,11,11, 9, 9, 9, 9,
10,10,10, 9,10,10,10,10, 9,10,10, 9,11,11,11,11,
11,11,11, 9, 9, 9, 9,10,10,10,10, 9,10,10,10,10,
10,11,11,11,11,11,11,11,10, 9,10,10,10,10,10,10,
10, 9,10, 9,10,10,11,11,11,11,11,11,11,10, 9,10,
9,10,10, 9,10,10,10,10,10,10,10,11,11,11,11,11,
11,11,10,10,10,10,10,10,10, 9,10,10,10,10,10, 9,
11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,
10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,
10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
11,11,11,10,10,10,10,10,10,10,10,10, 9,10,10,11,
11,11,11,11,11,11,11,11,10,10,10, 9,10,10,10,10,
10,10,10,10,10,11,11,11,11,11,11,11,11,10,11, 9,
10,10,10,10,10,10,10,10,10,
};
 
static const static_codebook _44c6_s_p8_1 = {
2, 441,
(char *)_vq_lengthlist__44c6_s_p8_1,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__44c6_s_p8_1,
0
};
 
static const long _vq_quantlist__44c6_s_p9_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c6_s_p9_0[] = {
1, 3, 3,11,11,11,11,11,11,11,11,11,11, 4, 7, 7,
11,11,11,11,11,11,11,11,11,11, 5, 8, 9,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,
};
 
static const static_codebook _44c6_s_p9_0 = {
2, 169,
(char *)_vq_lengthlist__44c6_s_p9_0,
1, -511845376, 1630791680, 4, 0,
(long *)_vq_quantlist__44c6_s_p9_0,
0
};
 
static const long _vq_quantlist__44c6_s_p9_1[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c6_s_p9_1[] = {
1, 4, 4, 7, 7, 7, 7, 7, 6, 8, 8, 8, 8, 6, 6, 6,
8, 8, 8, 8, 8, 7, 9, 8,10,10, 5, 6, 6, 8, 8, 9,
9, 8, 8,10,10,10,10,16, 9, 9, 9, 9, 9, 9, 9, 8,
10, 9,11,11,16, 8, 9, 9, 9, 9, 9, 9, 9,10,10,11,
11,16,13,13, 9, 9,10, 9, 9,10,11,11,11,12,16,13,
14, 9, 8,10, 8, 9, 9,10,10,12,11,16,14,16, 9, 9,
9, 9,11,11,12,11,12,11,16,16,16, 9, 7, 9, 6,11,
11,11,10,11,11,16,16,16,11,12, 9,10,11,11,12,11,
13,13,16,16,16,12,11,10, 7,12,10,12,12,12,12,16,
16,15,16,16,10,11,10,11,13,13,14,12,16,16,16,15,
15,12,10,11,11,13,11,12,13,
};
 
static const static_codebook _44c6_s_p9_1 = {
2, 169,
(char *)_vq_lengthlist__44c6_s_p9_1,
1, -518889472, 1622704128, 4, 0,
(long *)_vq_quantlist__44c6_s_p9_1,
0
};
 
static const long _vq_quantlist__44c6_s_p9_2[] = {
24,
23,
25,
22,
26,
21,
27,
20,
28,
19,
29,
18,
30,
17,
31,
16,
32,
15,
33,
14,
34,
13,
35,
12,
36,
11,
37,
10,
38,
9,
39,
8,
40,
7,
41,
6,
42,
5,
43,
4,
44,
3,
45,
2,
46,
1,
47,
0,
48,
};
 
static const char _vq_lengthlist__44c6_s_p9_2[] = {
2, 4, 3, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7,
};
 
static const static_codebook _44c6_s_p9_2 = {
1, 49,
(char *)_vq_lengthlist__44c6_s_p9_2,
1, -526909440, 1611661312, 6, 0,
(long *)_vq_quantlist__44c6_s_p9_2,
0
};
 
static const char _huff_lengthlist__44c6_s_short[] = {
3, 9,11,11,13,14,19,17,17,19, 5, 4, 5, 8,10,10,
13,16,18,19, 7, 4, 4, 5, 8, 9,12,14,17,19, 8, 6,
5, 5, 7, 7,10,13,16,18,10, 8, 7, 6, 5, 5, 8,11,
17,19,11, 9, 7, 7, 5, 4, 5, 8,17,19,13,11, 8, 7,
7, 5, 5, 7,16,18,14,13, 8, 6, 6, 5, 5, 7,16,18,
18,16,10, 8, 8, 7, 7, 9,16,18,18,18,12,10,10, 9,
9,10,17,18,
};
 
static const static_codebook _huff_book__44c6_s_short = {
2, 100,
(char *)_huff_lengthlist__44c6_s_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44c7_s_long[] = {
3, 8,11,13,15,14,14,13,15,14, 6, 4, 5, 7, 9,10,
11,11,14,13,10, 4, 3, 5, 7, 8, 9,10,13,13,12, 7,
4, 4, 5, 6, 8, 9,12,14,13, 9, 6, 5, 5, 6, 8, 9,
12,14,12, 9, 7, 6, 5, 5, 6, 8,11,11,12,11, 9, 8,
7, 6, 6, 7,10,11,13,11,10, 9, 8, 7, 6, 6, 9,11,
13,13,12,12,12,10, 9, 8, 9,11,12,14,15,15,14,12,
11,10,10,12,
};
 
static const static_codebook _huff_book__44c7_s_long = {
2, 100,
(char *)_huff_lengthlist__44c7_s_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44c7_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c7_s_p1_0[] = {
1, 5, 5, 0, 5, 5, 0, 5, 5, 5, 8, 7, 0, 9, 9, 0,
9, 8, 5, 7, 8, 0, 9, 9, 0, 8, 9, 0, 0, 0, 0, 0,
0, 0, 0, 0, 5, 9, 9, 0, 8, 8, 0, 8, 8, 5, 8, 9,
0, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
9, 9, 0, 8, 8, 0, 8, 8, 5, 8, 9, 0, 8, 8, 0, 8,
8,
};
 
static const static_codebook _44c7_s_p1_0 = {
4, 81,
(char *)_vq_lengthlist__44c7_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44c7_s_p1_0,
0
};
 
static const long _vq_quantlist__44c7_s_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c7_s_p2_0[] = {
3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0,
7, 7, 9, 9, 0, 0, 0, 9, 9, 5, 7, 7, 9, 9, 0, 8,
8,10,10, 0, 8, 7,10, 9, 0,10,10,11,11, 0, 0, 0,
11,11, 5, 7, 7, 9, 9, 0, 8, 8,10,10, 0, 7, 8, 9,
10, 0,10,10,11,11, 0, 0, 0,11,11, 8, 9, 9,11,10,
0,11,11,12,12, 0,11,10,12,12, 0,13,14,14,14, 0,
0, 0,14,13, 8, 9, 9,10,11, 0,11,11,12,12, 0,10,
11,12,12, 0,13,13,14,14, 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, 5, 8, 7,11,10, 0, 7, 7,10,10,
0, 7, 7,10,10, 0, 9, 9,11,10, 0, 0, 0,11,11, 5,
7, 8,10,11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9,
9,10,11, 0, 0, 0,11,11, 8,10, 9,12,12, 0,10,10,
12,12, 0,10,10,12,12, 0,12,12,13,13, 0, 0, 0,13,
13, 8, 9,10,12,12, 0,10,10,12,12, 0,10,10,11,12,
0,12,12,13,13, 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, 5, 8, 8,11,11, 0, 7, 7,10,10, 0, 7, 7,
10,10, 0, 9, 9,10,11, 0, 0, 0,11,10, 5, 8, 8,10,
11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9, 9,11,10,
0, 0, 0,10,11, 9,10,10,12,12, 0,10,10,12,12, 0,
10,10,12,12, 0,12,13,13,13, 0, 0, 0,13,12, 9,10,
10,12,12, 0,10,10,12,12, 0,10,10,12,12, 0,13,12,
13,13, 0, 0, 0,12,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,
7,10,10,14,13, 0, 9, 9,12,12, 0, 9, 9,12,12, 0,
10,10,12,12, 0, 0, 0,12,12, 7,10,10,13,14, 0, 9,
9,12,13, 0, 9, 9,12,12, 0,10,10,12,12, 0, 0, 0,
12,12, 9,11,11,14,13, 0,11,10,13,12, 0,11,11,13,
13, 0,12,12,13,13, 0, 0, 0,13,13, 9,11,11,13,14,
0,10,11,12,13, 0,11,11,13,13, 0,12,12,13,13, 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, 9,
11,11,14,14, 0,10,11,13,13, 0,11,10,13,13, 0,12,
12,13,13, 0, 0, 0,13,12, 9,11,11,14,14, 0,11,10,
13,13, 0,10,11,13,13, 0,12,12,14,13, 0, 0, 0,13,
13,
};
 
static const static_codebook _44c7_s_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44c7_s_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c7_s_p2_0,
0
};
 
static const long _vq_quantlist__44c7_s_p3_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c7_s_p3_0[] = {
2, 4, 4, 5, 5, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 6, 6,
8, 8,10,10, 0, 0, 0, 6, 6, 8, 8,10,10, 0, 0, 0,
7, 7, 9, 9,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _44c7_s_p3_0 = {
2, 81,
(char *)_vq_lengthlist__44c7_s_p3_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c7_s_p3_0,
0
};
 
static const long _vq_quantlist__44c7_s_p4_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c7_s_p4_0[] = {
3, 4, 4, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,
12,12, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
11,12,12, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,
11,12,12,12, 0, 0, 0, 6, 6, 8, 7, 9, 9, 9, 9,10,
10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,
11,11,12,12,13,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,
10,11,11,12,12,12,13, 0, 0, 0, 7, 7, 8, 8, 9, 9,
10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8, 9,
9,10,10,11,11,12,12,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c7_s_p4_0 = {
2, 289,
(char *)_vq_lengthlist__44c7_s_p4_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c7_s_p4_0,
0
};
 
static const long _vq_quantlist__44c7_s_p5_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c7_s_p5_0[] = {
1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 7,10,10,10,10,
10, 9, 4, 6, 6,10,10,10,10, 9,10, 5,10,10, 9,11,
12,10,11,12, 7,10,10,11,12,12,12,12,12, 7,10,10,
11,12,12,12,12,12, 6,10,10,10,12,12,11,12,12, 7,
10,10,12,12,12,12,11,12, 7,10,10,11,12,12,12,12,
12,
};
 
static const static_codebook _44c7_s_p5_0 = {
4, 81,
(char *)_vq_lengthlist__44c7_s_p5_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44c7_s_p5_0,
0
};
 
static const long _vq_quantlist__44c7_s_p5_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c7_s_p5_1[] = {
3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11, 4, 4, 6, 6,
7, 7, 8, 8, 9, 9,11, 4, 4, 6, 6, 7, 7, 8, 8, 9,
9,12, 5, 5, 6, 6, 7, 7, 9, 9, 9, 9,12,12,12, 6,
6, 7, 7, 9, 9, 9, 9,11,11,11, 7, 7, 7, 7, 8, 8,
9, 9,11,11,11, 7, 7, 7, 7, 8, 8, 9, 9,11,11,11,
7, 7, 8, 8, 8, 8, 9, 9,11,11,11,11,11, 8, 8, 8,
8, 8, 9,11,11,11,11,11, 8, 8, 8, 8, 8, 8,11,11,
11,11,11, 7, 7, 8, 8, 8, 8,
};
 
static const static_codebook _44c7_s_p5_1 = {
2, 121,
(char *)_vq_lengthlist__44c7_s_p5_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c7_s_p5_1,
0
};
 
static const long _vq_quantlist__44c7_s_p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c7_s_p6_0[] = {
1, 4, 4, 6, 6, 7, 7, 8, 7, 9, 8,10,10, 6, 5, 5,
7, 7, 8, 8, 9, 9, 9,10,11,11, 7, 5, 5, 7, 7, 8,
8, 9, 9,10,10,11,11, 0, 7, 7, 7, 7, 9, 8, 9, 9,
10,10,11,11, 0, 8, 8, 7, 7, 8, 9, 9, 9,10,10,11,
11, 0,11,11, 9, 9,10,10,11,10,11,11,12,12, 0,12,
12, 9, 9,10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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 const static_codebook _44c7_s_p6_0 = {
2, 169,
(char *)_vq_lengthlist__44c7_s_p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44c7_s_p6_0,
0
};
 
static const long _vq_quantlist__44c7_s_p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c7_s_p6_1[] = {
3, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 6,
5, 5, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _44c7_s_p6_1 = {
2, 25,
(char *)_vq_lengthlist__44c7_s_p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c7_s_p6_1,
0
};
 
static const long _vq_quantlist__44c7_s_p7_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c7_s_p7_0[] = {
1, 4, 4, 6, 6, 7, 8, 9, 9,10,10,12,11, 6, 5, 5,
7, 7, 8, 8, 9,10,11,11,12,12, 7, 5, 5, 7, 7, 8,
8,10,10,11,11,12,12,20, 7, 7, 7, 7, 8, 9,10,10,
11,11,12,13,20, 7, 7, 7, 7, 9, 9,10,10,11,12,13,
13,20,11,11, 8, 8, 9, 9,11,11,12,12,13,13,20,11,
11, 8, 8, 9, 9,11,11,12,12,13,13,20,20,20,10,10,
10,10,12,12,13,13,13,13,20,20,20,10,10,10,10,12,
12,13,13,13,14,20,20,20,14,14,11,11,12,12,13,13,
14,14,20,20,20,14,14,11,11,12,12,13,13,14,14,20,
20,20,20,19,13,13,13,13,14,14,15,14,19,19,19,19,
19,13,13,13,13,14,14,15,15,
};
 
static const static_codebook _44c7_s_p7_0 = {
2, 169,
(char *)_vq_lengthlist__44c7_s_p7_0,
1, -523206656, 1618345984, 4, 0,
(long *)_vq_quantlist__44c7_s_p7_0,
0
};
 
static const long _vq_quantlist__44c7_s_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c7_s_p7_1[] = {
4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, 7, 7,
7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 7, 7, 7, 7, 7, 7,
7, 8, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7,
7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7,
7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 8, 8,
8, 8, 8, 7, 7, 7, 7, 7, 7,
};
 
static const static_codebook _44c7_s_p7_1 = {
2, 121,
(char *)_vq_lengthlist__44c7_s_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c7_s_p7_1,
0
};
 
static const long _vq_quantlist__44c7_s_p8_0[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__44c7_s_p8_0[] = {
1, 4, 4, 7, 7, 8, 8, 8, 7, 9, 8, 9, 9,10,10, 6,
5, 5, 7, 7, 9, 9, 8, 8,10, 9,11,10,12,11, 6, 5,
5, 8, 7, 9, 9, 8, 8,10,10,11,11,12,11,19, 8, 8,
8, 8,10,10, 9, 9,10,10,11,11,12,11,19, 8, 8, 8,
8,10,10, 9, 9,10,10,11,11,12,12,19,12,12, 9, 9,
10,10, 9,10,10,10,11,11,12,12,19,12,12, 9, 9,10,
10,10,10,10,10,12,12,12,12,19,19,19, 9, 9, 9, 9,
11,10,11,11,12,11,13,13,19,19,19, 9, 9, 9, 9,11,
10,11,11,11,12,13,13,19,19,19,13,13,10,10,11,11,
12,12,12,12,13,12,19,19,19,14,13,10,10,11,11,12,
12,12,13,13,13,19,19,19,19,19,12,12,12,11,12,13,
14,13,13,13,19,19,19,19,19,12,12,12,11,12,12,13,
14,13,14,19,19,19,19,19,16,16,12,13,12,13,13,14,
15,14,19,18,18,18,18,16,15,12,11,12,11,14,12,14,
14,
};
 
static const static_codebook _44c7_s_p8_0 = {
2, 225,
(char *)_vq_lengthlist__44c7_s_p8_0,
1, -520986624, 1620377600, 4, 0,
(long *)_vq_quantlist__44c7_s_p8_0,
0
};
 
static const long _vq_quantlist__44c7_s_p8_1[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__44c7_s_p8_1[] = {
3, 5, 5, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
10, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9,10,11,10,10,10, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9,10, 9, 9,10, 9, 9,10,11,10,
11,10, 9, 9, 9, 9, 9, 9, 9,10,10,10, 9,10, 9, 9,
9, 9,11,10,11,10,10, 9, 9, 9, 9, 9, 9,10, 9, 9,
10, 9, 9,10, 9, 9,10,11,10,10,11,10, 9, 9, 9, 9,
9,10,10, 9,10,10,10,10, 9,10,10,10,10,10,10,11,
11,11,10, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,
10,10,10,11,11,10,10,10,10,10,10,10,10,10,10,10,
10, 9,10,10, 9,10,11,11,10,11,10,11,10, 9,10,10,
9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,10,
11,11,10,10,10,10,10,10, 9,10, 9,10,10, 9,10, 9,
10,10,10,11,10,11,10,11,11,10,10,10,10,10,10, 9,
10,10,10,10,10,10,10,11,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,11,10,11,
11,10,10,10,10, 9, 9,10,10, 9, 9,10, 9,10,10,10,
10,11,11,10,10,10,10,10,10,10, 9, 9,10,10,10, 9,
9,10,10,10,10,10,11,10,11,10,10,10,10,10,10, 9,
10,10,10,10,10,10,10,10,10,
};
 
static const static_codebook _44c7_s_p8_1 = {
2, 441,
(char *)_vq_lengthlist__44c7_s_p8_1,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__44c7_s_p8_1,
0
};
 
static const long _vq_quantlist__44c7_s_p9_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c7_s_p9_0[] = {
1, 3, 3,11,11,11,11,11,11,11,11,11,11, 4, 6, 6,
11,11,11,11,11,11,11,11,11,11, 4, 7, 7,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,
};
 
static const static_codebook _44c7_s_p9_0 = {
2, 169,
(char *)_vq_lengthlist__44c7_s_p9_0,
1, -511845376, 1630791680, 4, 0,
(long *)_vq_quantlist__44c7_s_p9_0,
0
};
 
static const long _vq_quantlist__44c7_s_p9_1[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c7_s_p9_1[] = {
1, 4, 4, 7, 7, 7, 7, 7, 6, 8, 8, 8, 8, 6, 6, 6,
8, 8, 9, 8, 8, 7, 9, 8,11,10, 5, 6, 6, 8, 8, 9,
8, 8, 8,10, 9,11,11,16, 8, 8, 9, 8, 9, 9, 9, 8,
10, 9,11,10,16, 8, 8, 9, 9,10,10, 9, 9,10,10,11,
11,16,13,13, 9, 9,10,10, 9,10,11,11,12,11,16,13,
13, 9, 8,10, 9,10,10,10,10,11,11,16,14,16, 8, 9,
9, 9,11,10,11,11,12,11,16,16,16, 9, 7,10, 7,11,
10,11,11,12,11,16,16,16,12,12, 9,10,11,11,12,11,
12,12,16,16,16,12,10,10, 7,11, 8,12,11,12,12,16,
16,15,16,16,11,12,10,10,12,11,12,12,16,16,16,15,
15,11,11,10,10,12,12,12,12,
};
 
static const static_codebook _44c7_s_p9_1 = {
2, 169,
(char *)_vq_lengthlist__44c7_s_p9_1,
1, -518889472, 1622704128, 4, 0,
(long *)_vq_quantlist__44c7_s_p9_1,
0
};
 
static const long _vq_quantlist__44c7_s_p9_2[] = {
24,
23,
25,
22,
26,
21,
27,
20,
28,
19,
29,
18,
30,
17,
31,
16,
32,
15,
33,
14,
34,
13,
35,
12,
36,
11,
37,
10,
38,
9,
39,
8,
40,
7,
41,
6,
42,
5,
43,
4,
44,
3,
45,
2,
46,
1,
47,
0,
48,
};
 
static const char _vq_lengthlist__44c7_s_p9_2[] = {
2, 4, 3, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7,
};
 
static const static_codebook _44c7_s_p9_2 = {
1, 49,
(char *)_vq_lengthlist__44c7_s_p9_2,
1, -526909440, 1611661312, 6, 0,
(long *)_vq_quantlist__44c7_s_p9_2,
0
};
 
static const char _huff_lengthlist__44c7_s_short[] = {
4,11,12,14,15,15,17,17,18,18, 5, 6, 6, 8, 9,10,
13,17,18,19, 7, 5, 4, 6, 8, 9,11,15,19,19, 8, 6,
5, 5, 6, 7,11,14,16,17, 9, 7, 7, 6, 7, 7,10,13,
15,19,10, 8, 7, 6, 7, 6, 7, 9,14,16,12,10, 9, 7,
7, 6, 4, 5,10,15,14,13,11, 7, 6, 6, 4, 2, 7,13,
16,16,15, 9, 8, 8, 8, 6, 9,13,19,19,17,12,11,10,
10, 9,11,14,
};
 
static const static_codebook _huff_book__44c7_s_short = {
2, 100,
(char *)_huff_lengthlist__44c7_s_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44c8_s_long[] = {
3, 8,12,13,14,14,14,13,14,14, 6, 4, 5, 8,10,10,
11,11,14,13, 9, 5, 4, 5, 7, 8, 9,10,13,13,12, 7,
5, 4, 5, 6, 8, 9,12,13,13, 9, 6, 5, 5, 5, 7, 9,
11,14,12,10, 7, 6, 5, 4, 6, 7,10,11,12,11, 9, 8,
7, 5, 5, 6,10,10,13,12,10, 9, 8, 6, 6, 5, 8,10,
14,13,12,12,11,10, 9, 7, 8,10,12,13,14,14,13,12,
11, 9, 9,10,
};
 
static const static_codebook _huff_book__44c8_s_long = {
2, 100,
(char *)_huff_lengthlist__44c8_s_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44c8_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c8_s_p1_0[] = {
1, 5, 5, 0, 5, 5, 0, 5, 5, 5, 7, 7, 0, 9, 8, 0,
9, 8, 6, 7, 7, 0, 8, 9, 0, 8, 9, 0, 0, 0, 0, 0,
0, 0, 0, 0, 5, 9, 8, 0, 8, 8, 0, 8, 8, 5, 8, 9,
0, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
9, 8, 0, 8, 8, 0, 8, 8, 5, 8, 9, 0, 8, 8, 0, 8,
8,
};
 
static const static_codebook _44c8_s_p1_0 = {
4, 81,
(char *)_vq_lengthlist__44c8_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44c8_s_p1_0,
0
};
 
static const long _vq_quantlist__44c8_s_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c8_s_p2_0[] = {
3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0,
7, 7, 9, 9, 0, 0, 0, 9, 9, 5, 7, 7, 9, 9, 0, 8,
7,10, 9, 0, 8, 7,10, 9, 0,10,10,11,11, 0, 0, 0,
11,11, 5, 7, 7, 9, 9, 0, 7, 8, 9,10, 0, 7, 8, 9,
10, 0,10,10,11,11, 0, 0, 0,11,11, 8, 9, 9,11,10,
0,11,10,12,11, 0,11,10,12,12, 0,13,13,14,14, 0,
0, 0,14,13, 8, 9, 9,10,11, 0,10,11,12,12, 0,10,
11,12,12, 0,13,13,14,14, 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, 5, 8, 7,11,10, 0, 7, 7,10,10,
0, 7, 7,10,10, 0, 9, 9,10,10, 0, 0, 0,11,10, 5,
7, 8,10,11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9,
9,10,10, 0, 0, 0,10,10, 8,10, 9,12,12, 0,10,10,
12,11, 0,10,10,12,12, 0,12,12,13,12, 0, 0, 0,13,
12, 8, 9,10,12,12, 0,10,10,11,12, 0,10,10,11,12,
0,12,12,13,13, 0, 0, 0,12,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, 6, 8, 7,11,10, 0, 7, 7,10,10, 0, 7, 7,
10,10, 0, 9, 9,10,11, 0, 0, 0,10,10, 6, 7, 8,10,
11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9, 9,10,10,
0, 0, 0,10,10, 9,10, 9,12,12, 0,10,10,12,12, 0,
10,10,12,11, 0,12,12,13,13, 0, 0, 0,13,12, 8, 9,
10,12,12, 0,10,10,12,12, 0,10,10,11,12, 0,12,12,
13,13, 0, 0, 0,12,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,
7,10,10,13,13, 0, 9, 9,12,12, 0, 9, 9,12,12, 0,
10,10,12,12, 0, 0, 0,12,12, 7,10,10,13,13, 0, 9,
9,12,12, 0, 9, 9,12,12, 0,10,10,12,12, 0, 0, 0,
12,12, 9,11,11,14,13, 0,10,10,13,12, 0,11,10,13,
12, 0,12,12,13,12, 0, 0, 0,13,13, 9,11,11,13,14,
0,10,11,12,13, 0,10,11,13,13, 0,12,12,12,13, 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, 9,
11,11,14,14, 0,10,11,13,13, 0,11,10,13,13, 0,11,
12,13,13, 0, 0, 0,13,12, 9,11,11,14,14, 0,11,10,
13,13, 0,10,11,13,13, 0,12,12,13,13, 0, 0, 0,12,
13,
};
 
static const static_codebook _44c8_s_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44c8_s_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c8_s_p2_0,
0
};
 
static const long _vq_quantlist__44c8_s_p3_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c8_s_p3_0[] = {
2, 4, 4, 5, 5, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 6, 6,
8, 8,10,10, 0, 0, 0, 6, 6, 8, 8,10,10, 0, 0, 0,
7, 7, 9, 9,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _44c8_s_p3_0 = {
2, 81,
(char *)_vq_lengthlist__44c8_s_p3_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c8_s_p3_0,
0
};
 
static const long _vq_quantlist__44c8_s_p4_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c8_s_p4_0[] = {
3, 4, 4, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 8,10,10,11,11,
11,11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
11,11,11, 0, 6, 5, 6, 6, 7, 7, 9, 9, 9, 9,10,10,
11,11,12,12, 0, 0, 0, 6, 6, 7, 7, 9, 9, 9, 9,10,
10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,
11,11,11,12,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,
10,11,11,11,12,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8, 9,
9,10,10,11,11,12,12,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c8_s_p4_0 = {
2, 289,
(char *)_vq_lengthlist__44c8_s_p4_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c8_s_p4_0,
0
};
 
static const long _vq_quantlist__44c8_s_p5_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c8_s_p5_0[] = {
1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 7, 6,10,10,10,10,
10,10, 4, 6, 6,10,10,10,10, 9,10, 5,10,10, 9,11,
11,10,11,11, 7,10,10,11,12,12,12,12,12, 7,10,10,
11,12,12,12,12,12, 6,10,10,10,12,12,10,12,12, 7,
10,10,11,12,12,12,12,12, 7,10,10,11,12,12,12,12,
12,
};
 
static const static_codebook _44c8_s_p5_0 = {
4, 81,
(char *)_vq_lengthlist__44c8_s_p5_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44c8_s_p5_0,
0
};
 
static const long _vq_quantlist__44c8_s_p5_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c8_s_p5_1[] = {
3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11, 4, 5, 6, 6,
7, 7, 8, 8, 8, 8,11, 5, 5, 6, 6, 7, 7, 8, 8, 8,
9,12, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,12,12,12, 6,
6, 7, 7, 8, 8, 9, 9,11,11,11, 6, 6, 7, 7, 8, 8,
8, 8,11,11,11, 6, 6, 7, 7, 8, 8, 8, 8,11,11,11,
7, 7, 7, 8, 8, 8, 8, 8,11,11,11,11,11, 7, 7, 8,
8, 8, 8,11,11,11,11,11, 7, 7, 7, 7, 8, 8,11,11,
11,11,11, 7, 7, 7, 7, 8, 8,
};
 
static const static_codebook _44c8_s_p5_1 = {
2, 121,
(char *)_vq_lengthlist__44c8_s_p5_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c8_s_p5_1,
0
};
 
static const long _vq_quantlist__44c8_s_p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c8_s_p6_0[] = {
1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
7, 7, 8, 8, 9, 9,10,10,11,11, 6, 5, 5, 7, 7, 8,
8, 9, 9,10,10,11,11, 0, 7, 7, 7, 7, 9, 9,10,10,
10,10,11,11, 0, 7, 7, 7, 7, 9, 9,10,10,10,10,11,
11, 0,11,11, 9, 9,10,10,11,11,11,11,12,12, 0,12,
12, 9, 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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 const static_codebook _44c8_s_p6_0 = {
2, 169,
(char *)_vq_lengthlist__44c8_s_p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44c8_s_p6_0,
0
};
 
static const long _vq_quantlist__44c8_s_p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c8_s_p6_1[] = {
3, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 6,
5, 5, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _44c8_s_p6_1 = {
2, 25,
(char *)_vq_lengthlist__44c8_s_p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c8_s_p6_1,
0
};
 
static const long _vq_quantlist__44c8_s_p7_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c8_s_p7_0[] = {
1, 4, 4, 6, 6, 8, 7, 9, 9,10,10,12,12, 6, 5, 5,
7, 7, 8, 8,10,10,11,11,12,12, 7, 5, 5, 7, 7, 8,
8,10,10,11,11,12,12,21, 7, 7, 7, 7, 8, 9,10,10,
11,11,12,12,21, 7, 7, 7, 7, 9, 9,10,10,12,12,13,
13,21,11,11, 8, 8, 9, 9,11,11,12,12,13,13,21,11,
11, 8, 8, 9, 9,11,11,12,12,13,13,21,21,21,10,10,
10,10,11,11,12,13,13,13,21,21,21,10,10,10,10,11,
11,13,13,14,13,21,21,21,13,13,11,11,12,12,13,13,
14,14,21,21,21,14,14,11,11,12,12,13,13,14,14,21,
21,21,21,20,13,13,13,12,14,14,16,15,20,20,20,20,
20,13,13,13,13,14,13,15,15,
};
 
static const static_codebook _44c8_s_p7_0 = {
2, 169,
(char *)_vq_lengthlist__44c8_s_p7_0,
1, -523206656, 1618345984, 4, 0,
(long *)_vq_quantlist__44c8_s_p7_0,
0
};
 
static const long _vq_quantlist__44c8_s_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c8_s_p7_1[] = {
4, 5, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 7,
7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 6, 7, 7, 7, 7, 7,
7, 8, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7,
7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7,
7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 8, 8,
8, 8, 8, 7, 7, 7, 7, 7, 7,
};
 
static const static_codebook _44c8_s_p7_1 = {
2, 121,
(char *)_vq_lengthlist__44c8_s_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c8_s_p7_1,
0
};
 
static const long _vq_quantlist__44c8_s_p8_0[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__44c8_s_p8_0[] = {
1, 4, 4, 7, 6, 8, 8, 8, 7, 9, 8,10,10,11,10, 6,
5, 5, 7, 7, 9, 9, 8, 8,10,10,11,11,12,11, 6, 5,
5, 7, 7, 9, 9, 9, 9,10,10,11,11,12,12,20, 8, 8,
8, 8, 9, 9, 9, 9,10,10,11,11,12,12,20, 8, 8, 8,
8,10, 9, 9, 9,10,10,11,11,12,12,20,12,12, 9, 9,
10,10,10,10,10,11,12,12,12,12,20,12,12, 9, 9,10,
10,10,10,11,11,12,12,13,13,20,20,20, 9, 9, 9, 9,
11,10,11,11,12,12,12,13,20,19,19, 9, 9, 9, 9,11,
11,11,12,12,12,13,13,19,19,19,13,13,10,10,11,11,
12,12,13,13,13,13,19,19,19,14,13,11,10,11,11,12,
12,12,13,13,13,19,19,19,19,19,12,12,12,12,13,13,
13,13,14,13,19,19,19,19,19,12,12,12,11,12,12,13,
14,14,14,19,19,19,19,19,16,15,13,12,13,13,13,14,
14,14,19,19,19,19,19,17,17,13,12,13,11,14,13,15,
15,
};
 
static const static_codebook _44c8_s_p8_0 = {
2, 225,
(char *)_vq_lengthlist__44c8_s_p8_0,
1, -520986624, 1620377600, 4, 0,
(long *)_vq_quantlist__44c8_s_p8_0,
0
};
 
static const long _vq_quantlist__44c8_s_p8_1[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__44c8_s_p8_1[] = {
4, 5, 5, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
10, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
10,10, 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9, 9,
9, 9,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9, 9,
9, 9, 9, 9,10,10,10, 9, 9, 9, 9, 9,10,10,10,10,
10,10,10, 9, 9, 9, 9, 9,10,10,10, 9, 9, 9, 9, 9,
9,10,10,10,10,10,10,10, 9,10,10, 9,10,10,10,10,
9,10, 9,10,10, 9,10,10,10,10,10,10,10, 9,10,10,
10,10,10,10, 9, 9,10,10, 9,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10, 9, 9, 9,10, 9, 9, 9, 9,
10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9,
10, 9,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10, 9, 9,10, 9, 9, 9,10,10,10,10,10,10,
10,10,10,10,10, 9, 9, 9, 9, 9, 9,10, 9, 9,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10, 9,10, 9,
9,10, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
10, 9, 9,10,10, 9,10, 9, 9,
};
 
static const static_codebook _44c8_s_p8_1 = {
2, 441,
(char *)_vq_lengthlist__44c8_s_p8_1,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__44c8_s_p8_1,
0
};
 
static const long _vq_quantlist__44c8_s_p9_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c8_s_p9_0[] = {
1, 4, 3,11,11,11,11,11,11,11,11,11,11,11,11,11,
11, 4, 7, 7,11,11,11,11,11,11,11,11,11,11,11,11,
11,11, 4, 8,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,
};
 
static const static_codebook _44c8_s_p9_0 = {
2, 289,
(char *)_vq_lengthlist__44c8_s_p9_0,
1, -509798400, 1631393792, 5, 0,
(long *)_vq_quantlist__44c8_s_p9_0,
0
};
 
static const long _vq_quantlist__44c8_s_p9_1[] = {
9,
8,
10,
7,
11,
6,
12,
5,
13,
4,
14,
3,
15,
2,
16,
1,
17,
0,
18,
};
 
static const char _vq_lengthlist__44c8_s_p9_1[] = {
1, 4, 4, 7, 6, 7, 7, 7, 7, 8, 8, 9, 9,10,10,10,
10,11,11, 6, 6, 6, 8, 8, 9, 8, 8, 7,10, 8,11,10,
12,11,12,12,13,13, 5, 5, 6, 8, 8, 9, 9, 8, 8,10,
9,11,11,12,12,13,13,13,13,17, 8, 8, 9, 9, 9, 9,
9, 9,10, 9,12,10,12,12,13,12,13,13,17, 9, 8, 9,
9, 9, 9, 9, 9,10,10,12,12,12,12,13,13,13,13,17,
13,13, 9, 9,10,10,10,10,11,11,12,11,13,12,13,13,
14,15,17,13,13, 9, 8,10, 9,10,10,11,11,12,12,14,
13,15,13,14,15,17,17,17, 9,10, 9,10,11,11,12,12,
12,12,13,13,14,14,15,15,17,17,17, 9, 8, 9, 8,11,
11,12,12,12,12,14,13,14,14,14,15,17,17,17,12,14,
9,10,11,11,12,12,14,13,13,14,15,13,15,15,17,17,
17,13,11,10, 8,11, 9,13,12,13,13,13,13,13,14,14,
14,17,17,17,17,17,11,12,11,11,13,13,14,13,15,14,
13,15,16,15,17,17,17,17,17,11,11,12, 8,13,12,14,
13,17,14,15,14,15,14,17,17,17,17,17,15,15,12,12,
12,12,13,14,14,14,15,14,17,14,17,17,17,17,17,16,
17,12,12,13,12,13,13,14,14,14,14,14,14,17,17,17,
17,17,17,17,14,14,13,12,13,13,15,15,14,13,15,17,
17,17,17,17,17,17,17,13,14,13,13,13,13,14,15,15,
15,14,15,17,17,17,17,17,17,17,16,15,13,14,13,13,
14,14,15,14,14,16,17,17,17,17,17,17,17,16,16,13,
14,13,13,14,14,15,14,15,14,
};
 
static const static_codebook _44c8_s_p9_1 = {
2, 361,
(char *)_vq_lengthlist__44c8_s_p9_1,
1, -518287360, 1622704128, 5, 0,
(long *)_vq_quantlist__44c8_s_p9_1,
0
};
 
static const long _vq_quantlist__44c8_s_p9_2[] = {
24,
23,
25,
22,
26,
21,
27,
20,
28,
19,
29,
18,
30,
17,
31,
16,
32,
15,
33,
14,
34,
13,
35,
12,
36,
11,
37,
10,
38,
9,
39,
8,
40,
7,
41,
6,
42,
5,
43,
4,
44,
3,
45,
2,
46,
1,
47,
0,
48,
};
 
static const char _vq_lengthlist__44c8_s_p9_2[] = {
2, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7,
};
 
static const static_codebook _44c8_s_p9_2 = {
1, 49,
(char *)_vq_lengthlist__44c8_s_p9_2,
1, -526909440, 1611661312, 6, 0,
(long *)_vq_quantlist__44c8_s_p9_2,
0
};
 
static const char _huff_lengthlist__44c8_s_short[] = {
4,11,13,14,15,15,18,17,19,17, 5, 6, 8, 9,10,10,
12,15,19,19, 6, 6, 6, 6, 8, 8,11,14,18,19, 8, 6,
5, 4, 6, 7,10,13,16,17, 9, 7, 6, 5, 6, 7, 9,12,
15,19,10, 8, 7, 6, 6, 6, 7, 9,13,15,12,10, 9, 8,
7, 6, 4, 5,10,15,13,13,11, 8, 6, 6, 4, 2, 7,12,
17,15,16,10, 8, 8, 7, 6, 9,12,19,18,17,13,11,10,
10, 9,11,14,
};
 
static const static_codebook _huff_book__44c8_s_short = {
2, 100,
(char *)_huff_lengthlist__44c8_s_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44c9_s_long[] = {
3, 8,12,14,15,15,15,13,15,15, 6, 5, 8,10,12,12,
13,12,14,13,10, 6, 5, 6, 8, 9,11,11,13,13,13, 8,
5, 4, 5, 6, 8,10,11,13,14,10, 7, 5, 4, 5, 7, 9,
11,12,13,11, 8, 6, 5, 4, 5, 7, 9,11,12,11,10, 8,
7, 5, 4, 5, 9,10,13,13,11,10, 8, 6, 5, 4, 7, 9,
15,14,13,12,10, 9, 8, 7, 8, 9,12,12,14,13,12,11,
10, 9, 8, 9,
};
 
static const static_codebook _huff_book__44c9_s_long = {
2, 100,
(char *)_huff_lengthlist__44c9_s_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44c9_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c9_s_p1_0[] = {
1, 5, 5, 0, 5, 5, 0, 5, 5, 6, 8, 8, 0, 9, 8, 0,
9, 8, 6, 8, 8, 0, 8, 9, 0, 8, 9, 0, 0, 0, 0, 0,
0, 0, 0, 0, 5, 8, 8, 0, 7, 7, 0, 8, 8, 5, 8, 8,
0, 7, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
9, 8, 0, 8, 8, 0, 7, 7, 5, 8, 9, 0, 8, 8, 0, 7,
7,
};
 
static const static_codebook _44c9_s_p1_0 = {
4, 81,
(char *)_vq_lengthlist__44c9_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44c9_s_p1_0,
0
};
 
static const long _vq_quantlist__44c9_s_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c9_s_p2_0[] = {
3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0,
7, 7, 9, 9, 0, 0, 0, 9, 9, 6, 7, 7, 9, 8, 0, 8,
8, 9, 9, 0, 8, 7, 9, 9, 0, 9,10,10,10, 0, 0, 0,
11,10, 6, 7, 7, 8, 9, 0, 8, 8, 9, 9, 0, 7, 8, 9,
9, 0,10, 9,11,10, 0, 0, 0,10,10, 8, 9, 8,10,10,
0,10,10,12,11, 0,10,10,11,11, 0,12,13,13,13, 0,
0, 0,13,12, 8, 8, 9,10,10, 0,10,10,11,12, 0,10,
10,11,11, 0,13,12,13,13, 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, 6, 8, 7,10,10, 0, 7, 7,10, 9,
0, 7, 7,10,10, 0, 9, 9,10,10, 0, 0, 0,10,10, 6,
7, 8,10,10, 0, 7, 7, 9,10, 0, 7, 7,10,10, 0, 9,
9,10,10, 0, 0, 0,10,10, 8, 9, 9,11,11, 0,10,10,
11,11, 0,10,10,11,11, 0,12,12,12,12, 0, 0, 0,12,
12, 8, 9,10,11,11, 0, 9,10,11,11, 0,10,10,11,11,
0,12,12,12,12, 0, 0, 0,12,12, 0, 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, 8, 7,10,10, 0, 7, 7,10,10, 0, 7, 7,
10, 9, 0, 9, 9,10,10, 0, 0, 0,10,10, 6, 7, 8,10,
10, 0, 7, 7,10,10, 0, 7, 7, 9,10, 0, 9, 9,10,10,
0, 0, 0,10,10, 8,10, 9,12,11, 0,10,10,12,11, 0,
10, 9,11,11, 0,11,12,12,12, 0, 0, 0,12,12, 8, 9,
10,11,12, 0,10,10,11,11, 0, 9,10,11,11, 0,12,11,
12,12, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7,10, 9,12,12, 0, 9, 9,12,11, 0, 9, 9,11,11, 0,
10,10,12,11, 0, 0, 0,11,12, 7, 9,10,12,12, 0, 9,
9,11,12, 0, 9, 9,11,11, 0,10,10,11,12, 0, 0, 0,
11,11, 9,11,10,13,12, 0,10,10,12,12, 0,10,10,12,
12, 0,11,11,12,12, 0, 0, 0,13,12, 9,10,11,12,13,
0,10,10,12,12, 0,10,10,12,12, 0,11,12,12,12, 0,
0, 0,12,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, 9,
11,10,13,13, 0,10,10,12,12, 0,10,10,12,12, 0,11,
12,12,12, 0, 0, 0,12,12, 9,10,11,13,13, 0,10,10,
12,12, 0,10,10,12,12, 0,12,11,13,12, 0, 0, 0,12,
12,
};
 
static const static_codebook _44c9_s_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44c9_s_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c9_s_p2_0,
0
};
 
static const long _vq_quantlist__44c9_s_p3_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c9_s_p3_0[] = {
3, 4, 4, 5, 5, 6, 6, 8, 8, 0, 4, 4, 5, 5, 6, 7,
8, 8, 0, 4, 4, 5, 5, 7, 7, 8, 8, 0, 5, 5, 6, 6,
7, 7, 9, 9, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0,
7, 7, 8, 8, 9, 9, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _44c9_s_p3_0 = {
2, 81,
(char *)_vq_lengthlist__44c9_s_p3_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c9_s_p3_0,
0
};
 
static const long _vq_quantlist__44c9_s_p4_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c9_s_p4_0[] = {
3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,10,
10, 0, 5, 4, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10,
11,11, 0, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,
10,11,11, 0, 6, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,
11,11,11,12, 0, 0, 0, 6, 6, 7, 7, 8, 8, 9, 9,10,
10,11,11,12,12, 0, 0, 0, 7, 7, 7, 7, 9, 9, 9, 9,
10,10,11,11,12,12, 0, 0, 0, 7, 7, 7, 8, 9, 9, 9,
9,10,10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8, 9,
9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c9_s_p4_0 = {
2, 289,
(char *)_vq_lengthlist__44c9_s_p4_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c9_s_p4_0,
0
};
 
static const long _vq_quantlist__44c9_s_p5_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c9_s_p5_0[] = {
1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 7, 6, 9,10,10,10,
10, 9, 4, 6, 7, 9,10,10,10, 9,10, 5, 9, 9, 9,11,
11,10,11,11, 7,10, 9,11,12,11,12,12,12, 7, 9,10,
11,11,12,12,12,12, 6,10,10,10,12,12,10,12,11, 7,
10,10,11,12,12,11,12,12, 7,10,10,11,12,12,12,12,
12,
};
 
static const static_codebook _44c9_s_p5_0 = {
4, 81,
(char *)_vq_lengthlist__44c9_s_p5_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44c9_s_p5_0,
0
};
 
static const long _vq_quantlist__44c9_s_p5_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c9_s_p5_1[] = {
4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7,11, 5, 5, 6, 6,
7, 7, 7, 7, 8, 8,11, 5, 5, 6, 6, 7, 7, 7, 7, 8,
8,11, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11,11,11, 6,
6, 7, 7, 7, 8, 8, 8,11,11,11, 6, 6, 7, 7, 7, 8,
8, 8,11,11,11, 6, 6, 7, 7, 7, 7, 8, 8,11,11,11,
7, 7, 7, 7, 7, 7, 8, 8,11,11,11,10,10, 7, 7, 7,
7, 8, 8,11,11,11,11,11, 7, 7, 7, 7, 7, 7,11,11,
11,11,11, 7, 7, 7, 7, 7, 7,
};
 
static const static_codebook _44c9_s_p5_1 = {
2, 121,
(char *)_vq_lengthlist__44c9_s_p5_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c9_s_p5_1,
0
};
 
static const long _vq_quantlist__44c9_s_p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c9_s_p6_0[] = {
2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 5, 4, 4,
6, 6, 8, 8, 9, 9, 9, 9,10,10, 6, 4, 4, 6, 6, 8,
8, 9, 9, 9, 9,10,10, 0, 6, 6, 7, 7, 8, 8, 9, 9,
10,10,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
11, 0,10,10, 8, 8, 9, 9,10,10,11,11,12,12, 0,11,
11, 8, 8, 9, 9,10,10,11,11,12,12, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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 const static_codebook _44c9_s_p6_0 = {
2, 169,
(char *)_vq_lengthlist__44c9_s_p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44c9_s_p6_0,
0
};
 
static const long _vq_quantlist__44c9_s_p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c9_s_p6_1[] = {
4, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44c9_s_p6_1 = {
2, 25,
(char *)_vq_lengthlist__44c9_s_p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c9_s_p6_1,
0
};
 
static const long _vq_quantlist__44c9_s_p7_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c9_s_p7_0[] = {
2, 4, 4, 6, 6, 7, 7, 8, 8,10,10,11,11, 6, 4, 4,
6, 6, 8, 8, 9, 9,10,10,12,12, 6, 4, 5, 6, 6, 8,
8, 9, 9,10,10,12,12,20, 6, 6, 6, 6, 8, 8, 9,10,
11,11,12,12,20, 6, 6, 6, 6, 8, 8,10,10,11,11,12,
12,20,10,10, 7, 7, 9, 9,10,10,11,11,12,12,20,11,
11, 7, 7, 9, 9,10,10,11,11,12,12,20,20,20, 9, 9,
9, 9,11,11,12,12,13,13,20,20,20, 9, 9, 9, 9,11,
11,12,12,13,13,20,20,20,13,13,10,10,11,11,12,13,
13,13,20,20,20,13,13,10,10,11,11,12,13,13,13,20,
20,20,20,19,12,12,12,12,13,13,14,15,19,19,19,19,
19,12,12,12,12,13,13,14,14,
};
 
static const static_codebook _44c9_s_p7_0 = {
2, 169,
(char *)_vq_lengthlist__44c9_s_p7_0,
1, -523206656, 1618345984, 4, 0,
(long *)_vq_quantlist__44c9_s_p7_0,
0
};
 
static const long _vq_quantlist__44c9_s_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c9_s_p7_1[] = {
5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6,
7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 7, 7, 7, 7, 7,
7, 8, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 6,
6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7,
7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 8, 8,
8, 8, 8, 7, 7, 7, 7, 7, 7,
};
 
static const static_codebook _44c9_s_p7_1 = {
2, 121,
(char *)_vq_lengthlist__44c9_s_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c9_s_p7_1,
0
};
 
static const long _vq_quantlist__44c9_s_p8_0[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__44c9_s_p8_0[] = {
1, 4, 4, 7, 6, 8, 8, 8, 8, 9, 9,10,10,11,10, 6,
5, 5, 7, 7, 9, 9, 8, 9,10,10,11,11,12,12, 6, 5,
5, 7, 7, 9, 9, 9, 9,10,10,11,11,12,12,21, 7, 8,
8, 8, 9, 9, 9, 9,10,10,11,11,12,12,21, 8, 8, 8,
8, 9, 9, 9, 9,10,10,11,11,12,12,21,11,12, 9, 9,
10,10,10,10,10,11,11,12,12,12,21,12,12, 9, 8,10,
10,10,10,11,11,12,12,13,13,21,21,21, 9, 9, 9, 9,
11,11,11,11,12,12,12,13,21,20,20, 9, 9, 9, 9,10,
11,11,11,12,12,13,13,20,20,20,13,13,10,10,11,11,
12,12,13,13,13,13,20,20,20,13,13,10,10,11,11,12,
12,13,13,13,13,20,20,20,20,20,12,12,12,12,12,12,
13,13,14,14,20,20,20,20,20,12,12,12,11,13,12,13,
13,14,14,20,20,20,20,20,15,16,13,12,13,13,14,13,
14,14,20,20,20,20,20,16,15,12,12,13,12,14,13,14,
14,
};
 
static const static_codebook _44c9_s_p8_0 = {
2, 225,
(char *)_vq_lengthlist__44c9_s_p8_0,
1, -520986624, 1620377600, 4, 0,
(long *)_vq_quantlist__44c9_s_p8_0,
0
};
 
static const long _vq_quantlist__44c9_s_p8_1[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__44c9_s_p8_1[] = {
4, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
10, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,10,10,10,10,
10,10,10, 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9, 9, 9,
9,10,10,10,10,10,10,10, 9, 9, 9,10,10,10,10,10,
9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10, 9, 9,10,
9,10, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,
10,10,10,10, 9, 9,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
10,10, 9, 9,10, 9, 9, 9, 9, 9,10,10,10,10,10,10,
10,10,10,10,10, 9, 9,10,10, 9, 9,10, 9, 9, 9,10,
10,10,10,10,10,10,10,10,10,10, 9, 9,10, 9, 9, 9,
9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10, 9,
9, 9, 9,10, 9, 9, 9, 9, 9,
};
 
static const static_codebook _44c9_s_p8_1 = {
2, 441,
(char *)_vq_lengthlist__44c9_s_p8_1,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__44c9_s_p8_1,
0
};
 
static const long _vq_quantlist__44c9_s_p9_0[] = {
9,
8,
10,
7,
11,
6,
12,
5,
13,
4,
14,
3,
15,
2,
16,
1,
17,
0,
18,
};
 
static const char _vq_lengthlist__44c9_s_p9_0[] = {
1, 4, 3,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12, 4, 5, 6,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12, 4, 6, 6,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,
};
 
static const static_codebook _44c9_s_p9_0 = {
2, 361,
(char *)_vq_lengthlist__44c9_s_p9_0,
1, -508535424, 1631393792, 5, 0,
(long *)_vq_quantlist__44c9_s_p9_0,
0
};
 
static const long _vq_quantlist__44c9_s_p9_1[] = {
9,
8,
10,
7,
11,
6,
12,
5,
13,
4,
14,
3,
15,
2,
16,
1,
17,
0,
18,
};
 
static const char _vq_lengthlist__44c9_s_p9_1[] = {
1, 4, 4, 7, 7, 7, 7, 8, 7, 9, 8, 9, 9,10,10,11,
11,11,11, 6, 5, 5, 8, 8, 9, 9, 9, 8,10, 9,11,10,
12,12,13,12,13,13, 5, 5, 5, 8, 8, 9, 9, 9, 9,10,
10,11,11,12,12,13,12,13,13,17, 8, 8, 9, 9, 9, 9,
9, 9,10,10,12,11,13,12,13,13,13,13,18, 8, 8, 9,
9, 9, 9, 9, 9,11,11,12,12,13,13,13,13,13,13,17,
13,12, 9, 9,10,10,10,10,11,11,12,12,12,13,13,13,
14,14,18,13,12, 9, 9,10,10,10,10,11,11,12,12,13,
13,13,14,14,14,17,18,18,10,10,10,10,11,11,11,12,
12,12,14,13,14,13,13,14,18,18,18,10, 9,10, 9,11,
11,12,12,12,12,13,13,15,14,14,14,18,18,16,13,14,
10,11,11,11,12,13,13,13,13,14,13,13,14,14,18,18,
18,14,12,11, 9,11,10,13,12,13,13,13,14,14,14,13,
14,18,18,17,18,18,11,12,12,12,13,13,14,13,14,14,
13,14,14,14,18,18,18,18,17,12,10,12, 9,13,11,13,
14,14,14,14,14,15,14,18,18,17,17,18,14,15,12,13,
13,13,14,13,14,14,15,14,15,14,18,17,18,18,18,15,
15,12,10,14,10,14,14,13,13,14,14,14,14,18,16,18,
18,18,18,17,14,14,13,14,14,13,13,14,14,14,15,15,
18,18,18,18,17,17,17,14,14,14,12,14,13,14,14,15,
14,15,14,18,18,18,18,18,18,18,17,16,13,13,13,14,
14,14,14,15,16,15,18,18,18,18,18,18,18,17,17,13,
13,13,13,14,13,14,15,15,15,
};
 
static const static_codebook _44c9_s_p9_1 = {
2, 361,
(char *)_vq_lengthlist__44c9_s_p9_1,
1, -518287360, 1622704128, 5, 0,
(long *)_vq_quantlist__44c9_s_p9_1,
0
};
 
static const long _vq_quantlist__44c9_s_p9_2[] = {
24,
23,
25,
22,
26,
21,
27,
20,
28,
19,
29,
18,
30,
17,
31,
16,
32,
15,
33,
14,
34,
13,
35,
12,
36,
11,
37,
10,
38,
9,
39,
8,
40,
7,
41,
6,
42,
5,
43,
4,
44,
3,
45,
2,
46,
1,
47,
0,
48,
};
 
static const char _vq_lengthlist__44c9_s_p9_2[] = {
2, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7,
};
 
static const static_codebook _44c9_s_p9_2 = {
1, 49,
(char *)_vq_lengthlist__44c9_s_p9_2,
1, -526909440, 1611661312, 6, 0,
(long *)_vq_quantlist__44c9_s_p9_2,
0
};
 
static const char _huff_lengthlist__44c9_s_short[] = {
5,13,18,16,17,17,19,18,19,19, 5, 7,10,11,12,12,
13,16,17,18, 6, 6, 7, 7, 9, 9,10,14,17,19, 8, 7,
6, 5, 6, 7, 9,12,19,17, 8, 7, 7, 6, 5, 6, 8,11,
15,19, 9, 8, 7, 6, 5, 5, 6, 8,13,15,11,10, 8, 8,
7, 5, 4, 4,10,14,12,13,11, 9, 7, 6, 4, 2, 6,12,
18,16,16,13, 8, 7, 7, 5, 8,13,16,17,18,15,11, 9,
9, 8,10,13,
};
 
static const static_codebook _huff_book__44c9_s_short = {
2, 100,
(char *)_huff_lengthlist__44c9_s_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44c0_s_long[] = {
5, 4, 8, 9, 8, 9,10,12,15, 4, 1, 5, 5, 6, 8,11,
12,12, 8, 5, 8, 9, 9,11,13,12,12, 9, 5, 8, 5, 7,
9,12,13,13, 8, 6, 8, 7, 7, 9,11,11,11, 9, 7, 9,
7, 7, 7, 7,10,12,10,10,11, 9, 8, 7, 7, 9,11,11,
12,13,12,11, 9, 8, 9,11,13,16,16,15,15,12,10,11,
12,
};
 
static const static_codebook _huff_book__44c0_s_long = {
2, 81,
(char *)_huff_lengthlist__44c0_s_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44c0_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c0_s_p1_0[] = {
1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
0, 0, 0, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
0, 0, 0, 0, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 7, 7, 0, 0, 0, 0,
0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 7, 9, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
0, 0, 0, 9,10,11, 0, 0, 0, 0, 0, 0, 9,11,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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
0, 0, 0, 0, 9,11, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
0, 0, 0, 0, 8, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
0, 0, 0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 9,10,11,
0, 0, 0, 0, 0, 0, 9,11,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c0_s_p1_0 = {
8, 6561,
(char *)_vq_lengthlist__44c0_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44c0_s_p1_0,
0
};
 
static const long _vq_quantlist__44c0_s_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c0_s_p2_0[] = {
1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 6, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 5, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 9, 9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 7, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c0_s_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44c0_s_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c0_s_p2_0,
0
};
 
static const long _vq_quantlist__44c0_s_p3_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c0_s_p3_0[] = {
1, 3, 2, 8, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _44c0_s_p3_0 = {
2, 81,
(char *)_vq_lengthlist__44c0_s_p3_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c0_s_p3_0,
0
};
 
static const long _vq_quantlist__44c0_s_p4_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c0_s_p4_0[] = {
1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 7, 7,
7, 8, 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0,
9, 9, 8, 8,10,10, 0, 0, 0, 8, 9, 8, 8,10,10, 0,
0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
10,
};
 
static const static_codebook _44c0_s_p4_0 = {
2, 81,
(char *)_vq_lengthlist__44c0_s_p4_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c0_s_p4_0,
0
};
 
static const long _vq_quantlist__44c0_s_p5_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c0_s_p5_0[] = {
1, 4, 3, 6, 6, 8, 7, 8, 8, 8, 8, 9, 9,10,10,11,
11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9, 9,10,10,10,
11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
10,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
10,11,11,11,11, 0, 0, 0, 8, 8, 9, 9, 9, 9,10,10,
10,10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9, 9,10,
10,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
10,10,11,11,11,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
10,10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,
10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
9,10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
10,10,11,11,11,11,11,12,12,12,13,13, 0, 0, 0, 0,
0, 0, 0,11,10,11,11,11,11,12,12,13,13, 0, 0, 0,
0, 0, 0, 0,11,11,12,11,12,12,12,12,13,13, 0, 0,
0, 0, 0, 0, 0,11,11,11,12,12,12,12,13,13,13, 0,
0, 0, 0, 0, 0, 0,12,12,12,12,12,13,13,13,14,14,
0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
14,
};
 
static const static_codebook _44c0_s_p5_0 = {
2, 289,
(char *)_vq_lengthlist__44c0_s_p5_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c0_s_p5_0,
0
};
 
static const long _vq_quantlist__44c0_s_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c0_s_p6_0[] = {
1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
9, 9, 4, 6, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11,
11,12,10,11, 6, 9, 9,11,10,11,11,10,10, 6, 9, 9,
11,10,11,11,10,10, 7,11,10,12,11,11,11,11,11, 7,
9, 9,10,10,10,11,11,10, 6, 9, 9,11,10,10,11,10,
10,
};
 
static const static_codebook _44c0_s_p6_0 = {
4, 81,
(char *)_vq_lengthlist__44c0_s_p6_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44c0_s_p6_0,
0
};
 
static const long _vq_quantlist__44c0_s_p6_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c0_s_p6_1[] = {
2, 3, 3, 6, 6, 7, 7, 7, 7, 7, 8,10,10,10, 6, 6,
7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8,
8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 7, 8, 8, 8, 8,
8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
10,10,10, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _44c0_s_p6_1 = {
2, 121,
(char *)_vq_lengthlist__44c0_s_p6_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c0_s_p6_1,
0
};
 
static const long _vq_quantlist__44c0_s_p7_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c0_s_p7_0[] = {
1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 5, 5,
7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 6, 7, 7, 8,
8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
11, 0,12,12, 9, 9,10,10,10,10,11,11,11,11, 0,13,
13, 9, 9, 9, 9,10,10,11,11,11,12, 0, 0, 0,10,10,
10,10,11,11,11,11,12,12, 0, 0, 0,10,10, 9, 9,11,
11,11,12,12,12, 0, 0, 0,13,13,10,10,11,11,12,12,
13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
0, 0, 0, 0,11,11,11,11,13,12,13,13, 0, 0, 0, 0,
0,12,12,11,11,12,12,13,13,
};
 
static const static_codebook _44c0_s_p7_0 = {
2, 169,
(char *)_vq_lengthlist__44c0_s_p7_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44c0_s_p7_0,
0
};
 
static const long _vq_quantlist__44c0_s_p7_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c0_s_p7_1[] = {
2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
6, 6, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _44c0_s_p7_1 = {
2, 25,
(char *)_vq_lengthlist__44c0_s_p7_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c0_s_p7_1,
0
};
 
static const long _vq_quantlist__44c0_s_p8_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c0_s_p8_0[] = {
1, 5, 5,10,10, 6, 9, 8,10,10, 6,10, 9,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10, 8,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,
};
 
static const static_codebook _44c0_s_p8_0 = {
4, 625,
(char *)_vq_lengthlist__44c0_s_p8_0,
1, -518283264, 1627103232, 3, 0,
(long *)_vq_quantlist__44c0_s_p8_0,
0
};
 
static const long _vq_quantlist__44c0_s_p8_1[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c0_s_p8_1[] = {
1, 4, 4, 6, 6, 7, 7, 9, 9,11,12,13,12, 6, 5, 5,
7, 7, 8, 8,10, 9,12,12,12,12, 6, 5, 5, 7, 7, 8,
8,10, 9,12,11,11,13,16, 7, 7, 8, 8, 9, 9,10,10,
12,12,13,12,16, 7, 7, 8, 7, 9, 9,10,10,11,12,12,
13,16,10,10, 8, 8,10,10,11,12,12,12,13,13,16,11,
10, 8, 7,11,10,11,11,12,11,13,13,16,16,16,10,10,
10,10,11,11,13,12,13,13,16,16,16,11, 9,11, 9,15,
13,12,13,13,13,16,16,16,15,13,11,11,12,13,12,12,
14,13,16,16,16,14,13,11,11,13,12,14,13,13,13,16,
16,16,16,16,13,13,13,12,14,13,14,14,16,16,16,16,
16,13,13,12,12,14,14,15,13,
};
 
static const static_codebook _44c0_s_p8_1 = {
2, 169,
(char *)_vq_lengthlist__44c0_s_p8_1,
1, -522616832, 1620115456, 4, 0,
(long *)_vq_quantlist__44c0_s_p8_1,
0
};
 
static const long _vq_quantlist__44c0_s_p8_2[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c0_s_p8_2[] = {
2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
8,10,10,10, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9,
9, 9,10,10,10, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
9,10, 9, 9,10,10,10, 7, 7, 8, 8, 9, 8, 9, 9, 9,
9,10, 9, 9,10,10,10,10, 8, 8, 8, 8, 9, 8, 9, 9,
9, 9, 9,10, 9,10,10,10,10, 7, 7, 8, 8, 9, 9, 9,
9, 9, 9,10, 9,10,10,10,10,10, 8, 8, 8, 9, 9, 9,
9, 9, 9, 9,10,10,10, 9,11,10,10,10,10, 8, 8, 9,
9, 9, 9, 9,10, 9, 9, 9,10,10,10,10,11,11, 9, 9,
9, 9, 9, 9, 9, 9,10, 9, 9,10,11,10,10,11,11, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,11,11,10,11,11,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,11,10,10,11,
11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
11,11,11,11, 9,10, 9,10, 9, 9, 9, 9,10, 9,10,11,
10,11,10,10,10,10,10, 9, 9, 9,10, 9, 9, 9,10,11,
11,10,11,11,10,11,10,10,10, 9, 9, 9, 9,10, 9, 9,
10,11,10,11,11,11,11,10,11,10,10, 9,10, 9, 9, 9,
10,
};
 
static const static_codebook _44c0_s_p8_2 = {
2, 289,
(char *)_vq_lengthlist__44c0_s_p8_2,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c0_s_p8_2,
0
};
 
static const char _huff_lengthlist__44c0_s_short[] = {
9, 8,12,11,12,13,14,14,16, 6, 1, 5, 6, 6, 9,12,
14,17, 9, 4, 5, 9, 7, 9,13,15,16, 8, 5, 8, 6, 8,
10,13,17,17, 9, 6, 7, 7, 8, 9,13,15,17,11, 8, 9,
9, 9,10,12,16,16,13, 7, 8, 7, 7, 9,12,14,15,13,
6, 7, 5, 5, 7,10,13,13,14, 7, 8, 5, 6, 7, 9,10,
12,
};
 
static const static_codebook _huff_book__44c0_s_short = {
2, 81,
(char *)_huff_lengthlist__44c0_s_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44c0_sm_long[] = {
5, 4, 9,10, 9,10,11,12,13, 4, 1, 5, 7, 7, 9,11,
12,14, 8, 5, 7, 9, 8,10,13,13,13,10, 7, 9, 4, 6,
7,10,12,14, 9, 6, 7, 6, 6, 7,10,12,12, 9, 8, 9,
7, 6, 7, 8,11,12,11,11,11, 9, 8, 7, 8,10,12,12,
13,14,12,11, 9, 9, 9,12,12,17,17,15,16,12,10,11,
13,
};
 
static const static_codebook _huff_book__44c0_sm_long = {
2, 81,
(char *)_huff_lengthlist__44c0_sm_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44c0_sm_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c0_sm_p1_0[] = {
1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
0, 0, 0, 7, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
0, 0, 0, 0, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 8, 7, 0, 0, 0, 0,
0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
0, 0, 0, 9,10,10, 0, 0, 0, 0, 0, 0, 9,10,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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,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, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
0, 0, 0, 0, 8, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
0, 0, 0, 0, 0, 9, 9,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
0, 0, 0, 0, 0, 0, 9,10,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c0_sm_p1_0 = {
8, 6561,
(char *)_vq_lengthlist__44c0_sm_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44c0_sm_p1_0,
0
};
 
static const long _vq_quantlist__44c0_sm_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c0_sm_p2_0[] = {
1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 9, 9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7, 7, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c0_sm_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44c0_sm_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c0_sm_p2_0,
0
};
 
static const long _vq_quantlist__44c0_sm_p3_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c0_sm_p3_0[] = {
1, 3, 3, 7, 7, 0, 0, 0, 0, 0, 5, 4, 7, 7, 0, 0,
0, 0, 0, 5, 5, 7, 7, 0, 0, 0, 0, 0, 6, 7, 8, 8,
0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0,
9,10, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0,
0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _44c0_sm_p3_0 = {
2, 81,
(char *)_vq_lengthlist__44c0_sm_p3_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c0_sm_p3_0,
0
};
 
static const long _vq_quantlist__44c0_sm_p4_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c0_sm_p4_0[] = {
1, 4, 3, 6, 6, 7, 7, 9, 9, 0, 5, 5, 7, 7, 8, 7,
9, 9, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8,
8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
9, 9, 9, 9,11,11, 0, 0, 0, 9, 9, 9, 9,11,11, 0,
0, 0,10,10,10,10,11,11, 0, 0, 0, 0, 0, 9, 9,11,
11,
};
 
static const static_codebook _44c0_sm_p4_0 = {
2, 81,
(char *)_vq_lengthlist__44c0_sm_p4_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c0_sm_p4_0,
0
};
 
static const long _vq_quantlist__44c0_sm_p5_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c0_sm_p5_0[] = {
1, 4, 4, 6, 6, 8, 8, 8, 8, 8, 8, 9, 9,10,10,11,
11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,11,
11,11, 0, 5, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
11,11,11, 0, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,
11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,
10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
11,11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
10,11,11,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
10,10,11,11,12,12,12,13, 0, 0, 0, 0, 0, 9, 9,10,
10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
10,10,11,11,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
9,10,10,11,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
10,10,10,10,11,11,12,12,12,13,13,13, 0, 0, 0, 0,
0, 0, 0,10,10,11,11,12,12,12,13,13,13, 0, 0, 0,
0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14, 0, 0,
0, 0, 0, 0, 0,11,11,12,11,12,12,13,13,13,13, 0,
0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
14,
};
 
static const static_codebook _44c0_sm_p5_0 = {
2, 289,
(char *)_vq_lengthlist__44c0_sm_p5_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c0_sm_p5_0,
0
};
 
static const long _vq_quantlist__44c0_sm_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c0_sm_p6_0[] = {
1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,10,11,
11,11,10,10, 6, 9, 9,11,11,10,11,10,10, 6, 9, 9,
11,10,11,11,10,10, 7,11,10,11,11,11,11,11,11, 6,
9, 9,11,10,10,11,11,10, 6, 9, 9,11,10,10,11,10,
11,
};
 
static const static_codebook _44c0_sm_p6_0 = {
4, 81,
(char *)_vq_lengthlist__44c0_sm_p6_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44c0_sm_p6_0,
0
};
 
static const long _vq_quantlist__44c0_sm_p6_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c0_sm_p6_1[] = {
2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 8, 9, 5, 5, 6, 6,
7, 7, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, 7, 8, 8, 8,
8,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
8, 8,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,
8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
10,10,10, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _44c0_sm_p6_1 = {
2, 121,
(char *)_vq_lengthlist__44c0_sm_p6_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c0_sm_p6_1,
0
};
 
static const long _vq_quantlist__44c0_sm_p7_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c0_sm_p7_0[] = {
1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 5, 5,
7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 6, 5, 7, 7, 8,
8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
11, 0,12,12, 9, 9,10,10,10,10,11,11,11,11, 0,13,
13, 9, 9, 9, 9,10,10,11,11,11,12, 0, 0, 0, 9,10,
10,10,11,11,12,11,12,12, 0, 0, 0,10,10, 9, 9,11,
11,12,12,12,12, 0, 0, 0,13,13,10,10,11,11,12,12,
13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
0, 0, 0, 0,11,12,11,11,13,12,13,13, 0, 0, 0, 0,
0,12,12,11,11,13,12,14,14,
};
 
static const static_codebook _44c0_sm_p7_0 = {
2, 169,
(char *)_vq_lengthlist__44c0_sm_p7_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44c0_sm_p7_0,
0
};
 
static const long _vq_quantlist__44c0_sm_p7_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c0_sm_p7_1[] = {
2, 4, 4, 4, 4, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
6, 6, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _44c0_sm_p7_1 = {
2, 25,
(char *)_vq_lengthlist__44c0_sm_p7_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c0_sm_p7_1,
0
};
 
static const long _vq_quantlist__44c0_sm_p8_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c0_sm_p8_0[] = {
1, 3, 3,11,11,11,11,11,11, 3, 7, 6,11,11,11,11,
11,11, 4, 8, 7,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,
};
 
static const static_codebook _44c0_sm_p8_0 = {
2, 81,
(char *)_vq_lengthlist__44c0_sm_p8_0,
1, -516186112, 1627103232, 4, 0,
(long *)_vq_quantlist__44c0_sm_p8_0,
0
};
 
static const long _vq_quantlist__44c0_sm_p8_1[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c0_sm_p8_1[] = {
1, 4, 4, 6, 6, 7, 7, 9, 9,10,11,12,12, 6, 5, 5,
7, 7, 8, 8,10,10,12,11,12,12, 6, 5, 5, 7, 7, 8,
8,10,10,12,11,12,12,17, 7, 7, 8, 8, 9, 9,10,10,
12,12,13,13,18, 7, 7, 8, 7, 9, 9,10,10,12,12,12,
13,19,10,10, 8, 8,10,10,11,11,12,12,13,14,19,11,
10, 8, 7,10,10,11,11,12,12,13,12,19,19,19,10,10,
10,10,11,11,12,12,13,13,19,19,19,11, 9,11, 9,14,
12,13,12,13,13,19,20,18,13,14,11,11,12,12,13,13,
14,13,20,20,20,15,13,11,10,13,11,13,13,14,13,20,
20,20,20,20,13,14,12,12,13,13,13,13,20,20,20,20,
20,13,13,12,12,16,13,15,13,
};
 
static const static_codebook _44c0_sm_p8_1 = {
2, 169,
(char *)_vq_lengthlist__44c0_sm_p8_1,
1, -522616832, 1620115456, 4, 0,
(long *)_vq_quantlist__44c0_sm_p8_1,
0
};
 
static const long _vq_quantlist__44c0_sm_p8_2[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c0_sm_p8_2[] = {
2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
8,10, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9,
9, 9,10, 6, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 9, 8, 9, 9, 9,
9,10, 9, 9,10,10,10,11, 8, 8, 8, 8, 9, 9, 9, 9,
9, 9, 9,10, 9,10,10,10,10, 8, 8, 8, 8, 9, 9, 9,
9, 9, 9, 9, 9,10,10,11,10,10, 8, 8, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9,10,10,10,10,10,11,11, 8, 8, 9,
9, 9, 9, 9, 9, 9, 9, 9,10,11,11,11,11,11, 9, 9,
9, 9, 9, 9, 9, 9,10, 9,10, 9,11,11,10,11,11, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,11,11,10,11,11,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,11,10,11,11,
11,11,11, 9, 9,10, 9, 9, 9, 9, 9, 9, 9,10,11,10,
11,11,11,11,10,10,10,10, 9, 9, 9, 9, 9, 9,10,11,
11,11,11,11,11, 9,10, 9, 9, 9, 9, 9, 9, 9, 9,11,
11,10,11,11,11,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
10,11,10,11,11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9,
9,
};
 
static const static_codebook _44c0_sm_p8_2 = {
2, 289,
(char *)_vq_lengthlist__44c0_sm_p8_2,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c0_sm_p8_2,
0
};
 
static const char _huff_lengthlist__44c0_sm_short[] = {
6, 6,12,13,13,14,16,17,17, 4, 2, 5, 8, 7, 9,12,
15,15, 9, 4, 5, 9, 7, 9,12,16,18,11, 6, 7, 4, 6,
8,11,14,18,10, 5, 6, 5, 5, 7,10,14,17,10, 5, 7,
7, 6, 7,10,13,16,11, 5, 7, 7, 7, 8,10,12,15,13,
6, 7, 5, 5, 7, 9,12,13,16, 8, 9, 6, 6, 7, 9,10,
12,
};
 
static const static_codebook _huff_book__44c0_sm_short = {
2, 81,
(char *)_huff_lengthlist__44c0_sm_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44c1_s_long[] = {
5, 5, 9,10, 9, 9,10,11,12, 5, 1, 5, 6, 6, 7,10,
12,14, 9, 5, 6, 8, 8,10,12,14,14,10, 5, 8, 5, 6,
8,11,13,14, 9, 5, 7, 6, 6, 8,10,12,11, 9, 7, 9,
7, 6, 6, 7,10,10,10, 9,12, 9, 8, 7, 7,10,12,11,
11,13,12,10, 9, 8, 9,11,11,14,15,15,13,11, 9, 9,
11,
};
 
static const static_codebook _huff_book__44c1_s_long = {
2, 81,
(char *)_huff_lengthlist__44c1_s_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44c1_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c1_s_p1_0[] = {
2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 0,
0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
0, 0, 0, 7, 8, 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, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
0, 0, 0, 0, 7, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 7, 7, 0, 0, 0, 0,
0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 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, 7, 8, 8, 0, 0, 0,
0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 8, 9, 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, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9, 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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
0, 0, 0, 0, 7, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8,10, 9, 0,
0, 0, 0, 0, 0, 8, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
0, 0, 0, 0, 0, 0, 8, 9, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c1_s_p1_0 = {
8, 6561,
(char *)_vq_lengthlist__44c1_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44c1_s_p1_0,
0
};
 
static const long _vq_quantlist__44c1_s_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c1_s_p2_0[] = {
2, 3, 4, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 4, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 8, 8,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 6, 6, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c1_s_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44c1_s_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c1_s_p2_0,
0
};
 
static const long _vq_quantlist__44c1_s_p3_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c1_s_p3_0[] = {
1, 3, 2, 7, 7, 0, 0, 0, 0, 0,13,13, 6, 6, 0, 0,
0, 0, 0,12, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
8, 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
0, 0,11,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _44c1_s_p3_0 = {
2, 81,
(char *)_vq_lengthlist__44c1_s_p3_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c1_s_p3_0,
0
};
 
static const long _vq_quantlist__44c1_s_p4_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c1_s_p4_0[] = {
1, 3, 3, 6, 5, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 7, 7,
8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
9, 9, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
11,
};
 
static const static_codebook _44c1_s_p4_0 = {
2, 81,
(char *)_vq_lengthlist__44c1_s_p4_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c1_s_p4_0,
0
};
 
static const long _vq_quantlist__44c1_s_p5_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c1_s_p5_0[] = {
1, 4, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10,
11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
10,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
10,11,11,12,11, 0, 0, 0, 8, 8, 9, 9, 9,10,10,10,
10,10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10, 9,10,
10,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,
10,10,10,11,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
9,10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
10,10,10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0,
0, 0, 0,10,10,11,11,12,12,12,12,13,13, 0, 0, 0,
0, 0, 0, 0,11,11,12,12,12,12,13,13,13,13, 0, 0,
0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,13,13, 0,
0, 0, 0, 0, 0, 0,12,12,12,12,12,12,13,13,14,14,
0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
14,
};
 
static const static_codebook _44c1_s_p5_0 = {
2, 289,
(char *)_vq_lengthlist__44c1_s_p5_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c1_s_p5_0,
0
};
 
static const long _vq_quantlist__44c1_s_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c1_s_p6_0[] = {
1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 6,10,10,11,11,
11,11,10,10, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
11,10,11,11,10,10, 7,11,10,11,11,11,12,11,11, 7,
9, 9,11,10,10,11,11,10, 6, 9, 9,10,10,10,12,10,
11,
};
 
static const static_codebook _44c1_s_p6_0 = {
4, 81,
(char *)_vq_lengthlist__44c1_s_p6_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44c1_s_p6_0,
0
};
 
static const long _vq_quantlist__44c1_s_p6_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c1_s_p6_1[] = {
2, 3, 3, 6, 6, 7, 7, 7, 7, 8, 8,10,10,10, 6, 6,
7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8,
8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
10,10,10, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _44c1_s_p6_1 = {
2, 121,
(char *)_vq_lengthlist__44c1_s_p6_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c1_s_p6_1,
0
};
 
static const long _vq_quantlist__44c1_s_p7_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c1_s_p7_0[] = {
1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 9, 7, 5, 6,
7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 5, 7, 7, 8,
8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
10,10,11,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
11, 0,12,12, 9, 9, 9,10,10,10,11,11,11,11, 0,13,
13, 9, 9, 9, 9,10,10,11,11,11,11, 0, 0, 0,10,10,
10,10,11,11,12,11,12,12, 0, 0, 0,10,10,10, 9,11,
11,12,11,13,12, 0, 0, 0,13,13,10,10,11,11,12,12,
13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
0, 0, 0, 0,11,12,11,11,12,12,14,13, 0, 0, 0, 0,
0,12,11,11,11,13,10,14,13,
};
 
static const static_codebook _44c1_s_p7_0 = {
2, 169,
(char *)_vq_lengthlist__44c1_s_p7_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44c1_s_p7_0,
0
};
 
static const long _vq_quantlist__44c1_s_p7_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c1_s_p7_1[] = {
2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
6, 6, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _44c1_s_p7_1 = {
2, 25,
(char *)_vq_lengthlist__44c1_s_p7_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c1_s_p7_1,
0
};
 
static const long _vq_quantlist__44c1_s_p8_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c1_s_p8_0[] = {
1, 4, 3,10,10,10,10,10,10,10,10,10,10, 4, 8, 6,
10,10,10,10,10,10,10,10,10,10, 4, 8, 7,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,
};
 
static const static_codebook _44c1_s_p8_0 = {
2, 169,
(char *)_vq_lengthlist__44c1_s_p8_0,
1, -514541568, 1627103232, 4, 0,
(long *)_vq_quantlist__44c1_s_p8_0,
0
};
 
static const long _vq_quantlist__44c1_s_p8_1[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c1_s_p8_1[] = {
1, 4, 4, 6, 5, 7, 7, 9, 9,10,10,12,12, 6, 5, 5,
7, 7, 8, 8,10,10,12,11,12,12, 6, 5, 5, 7, 7, 8,
8,10,10,11,11,12,12,15, 7, 7, 8, 8, 9, 9,11,11,
12,12,13,12,15, 8, 8, 8, 7, 9, 9,10,10,12,12,13,
13,16,11,10, 8, 8,10,10,11,11,12,12,13,13,16,11,
11, 9, 8,11,10,11,11,12,12,13,12,16,16,16,10,11,
10,11,12,12,12,12,13,13,16,16,16,11, 9,11, 9,14,
12,12,12,13,13,16,16,16,12,14,11,12,12,12,13,13,
14,13,16,16,16,15,13,12,10,13,10,13,14,13,13,16,
16,16,16,16,13,14,12,13,13,12,13,13,16,16,16,16,
16,13,12,12,11,14,12,15,13,
};
 
static const static_codebook _44c1_s_p8_1 = {
2, 169,
(char *)_vq_lengthlist__44c1_s_p8_1,
1, -522616832, 1620115456, 4, 0,
(long *)_vq_quantlist__44c1_s_p8_1,
0
};
 
static const long _vq_quantlist__44c1_s_p8_2[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c1_s_p8_2[] = {
2, 4, 4, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8,
8,10,10,10, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9,
9, 9,10,10,10, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
9,10, 9, 9,10,10,10, 7, 7, 8, 8, 9, 8, 9, 9, 9,
9,10, 9, 9,10,10,11,11, 8, 8, 8, 8, 9, 9, 9, 9,
9, 9,10, 9, 9,10,10,10,10, 8, 8, 8, 8, 9, 9, 9,
9, 9, 9, 9, 9,10,10,11,11,11, 8, 8, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9,10,10,10,10,11,11,11, 8, 8, 9,
9, 9, 9,10, 9, 9, 9, 9, 9,11,11,11,11,11, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,10,10,11,11, 9,
9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,11,10,11,11,
9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,10,10,11,11,
11,11,11, 9, 9, 9,10, 9, 9, 9, 9, 9, 9,10,11,11,
11,11,11,11,10,10,10,10, 9, 9, 9, 9, 9, 9,10,11,
11,11,11,11,11, 9,10, 9, 9, 9, 9,10, 9, 9, 9,11,
11,11,11,11,11,11,10,10, 9, 9, 9, 9, 9, 9,10, 9,
11,11,10,11,11,11,11,10,11, 9, 9, 9, 9, 9, 9, 9,
9,
};
 
static const static_codebook _44c1_s_p8_2 = {
2, 289,
(char *)_vq_lengthlist__44c1_s_p8_2,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c1_s_p8_2,
0
};
 
static const char _huff_lengthlist__44c1_s_short[] = {
6, 8,13,12,13,14,15,16,16, 4, 2, 4, 7, 6, 8,11,
13,15,10, 4, 4, 8, 6, 8,11,14,17,11, 5, 6, 5, 6,
8,12,14,17,11, 5, 5, 6, 5, 7,10,13,16,12, 6, 7,
8, 7, 8,10,13,15,13, 8, 8, 7, 7, 8,10,12,15,15,
7, 7, 5, 5, 7, 9,12,14,15, 8, 8, 6, 6, 7, 8,10,
11,
};
 
static const static_codebook _huff_book__44c1_s_short = {
2, 81,
(char *)_huff_lengthlist__44c1_s_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44c1_sm_long[] = {
5, 4, 8,10, 9, 9,10,11,12, 4, 2, 5, 6, 6, 8,10,
11,13, 8, 4, 6, 8, 7, 9,12,12,14,10, 6, 8, 4, 5,
6, 9,11,12, 9, 5, 6, 5, 5, 6, 9,11,11, 9, 7, 9,
6, 5, 5, 7,10,10,10, 9,11, 8, 7, 6, 7, 9,11,11,
12,13,10,10, 9, 8, 9,11,11,15,15,12,13,11, 9,10,
11,
};
 
static const static_codebook _huff_book__44c1_sm_long = {
2, 81,
(char *)_huff_lengthlist__44c1_sm_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44c1_sm_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c1_sm_p1_0[] = {
1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
0, 0, 0, 7, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
0, 0, 0, 0, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 8, 7, 0, 0, 0, 0,
0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
0, 0, 0, 9, 9,10, 0, 0, 0, 0, 0, 0, 9,10,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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,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, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
0, 0, 0, 0, 8, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
0, 0, 0, 0, 0, 8, 9,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
0, 0, 0, 0, 0, 0, 9,10, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c1_sm_p1_0 = {
8, 6561,
(char *)_vq_lengthlist__44c1_sm_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44c1_sm_p1_0,
0
};
 
static const long _vq_quantlist__44c1_sm_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c1_sm_p2_0[] = {
2, 3, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 6, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44c1_sm_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44c1_sm_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c1_sm_p2_0,
0
};
 
static const long _vq_quantlist__44c1_sm_p3_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c1_sm_p3_0[] = {
1, 3, 3, 7, 7, 0, 0, 0, 0, 0, 5, 5, 6, 6, 0, 0,
0, 0, 0, 5, 5, 7, 7, 0, 0, 0, 0, 0, 7, 7, 7, 7,
0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
8, 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _44c1_sm_p3_0 = {
2, 81,
(char *)_vq_lengthlist__44c1_sm_p3_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c1_sm_p3_0,
0
};
 
static const long _vq_quantlist__44c1_sm_p4_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44c1_sm_p4_0[] = {
1, 3, 3, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7, 8, 8,
9, 9, 0, 6, 6, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8,
8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
8, 8, 9, 9,11,11, 0, 0, 0, 9, 9, 9, 9,11,11, 0,
0, 0,10,10,10,10,11,11, 0, 0, 0, 0, 0, 9, 9,11,
11,
};
 
static const static_codebook _44c1_sm_p4_0 = {
2, 81,
(char *)_vq_lengthlist__44c1_sm_p4_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44c1_sm_p4_0,
0
};
 
static const long _vq_quantlist__44c1_sm_p5_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c1_sm_p5_0[] = {
2, 3, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,10,
11,11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,
10,11,11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9,10,10,
10,11,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9,10,
10,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
9, 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
9, 9,10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0,
0, 0, 0,10,10,11,11,12,12,12,12,13,13, 0, 0, 0,
0, 0, 0, 0,11,11,11,11,12,12,13,13,13,13, 0, 0,
0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,13,13, 0,
0, 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14,
0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
14,
};
 
static const static_codebook _44c1_sm_p5_0 = {
2, 289,
(char *)_vq_lengthlist__44c1_sm_p5_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c1_sm_p5_0,
0
};
 
static const long _vq_quantlist__44c1_sm_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44c1_sm_p6_0[] = {
1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,10,11,
11,11,10,10, 6, 9, 9,11,11,10,11,10,10, 6, 9, 9,
11,10,11,11,10,10, 7,11,11,11,11,11,11,11,11, 6,
9, 9,11,10,10,11,11,10, 6, 9, 9,10,10,10,11,10,
11,
};
 
static const static_codebook _44c1_sm_p6_0 = {
4, 81,
(char *)_vq_lengthlist__44c1_sm_p6_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44c1_sm_p6_0,
0
};
 
static const long _vq_quantlist__44c1_sm_p6_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44c1_sm_p6_1[] = {
2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6,
7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
8,10, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
8, 8, 8, 8, 8, 8, 9, 8,10,10,10,10,10, 8, 8, 8,
8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
10,10,10, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _44c1_sm_p6_1 = {
2, 121,
(char *)_vq_lengthlist__44c1_sm_p6_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44c1_sm_p6_1,
0
};
 
static const long _vq_quantlist__44c1_sm_p7_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c1_sm_p7_0[] = {
1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 5, 5,
7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 6, 7, 7, 8,
8, 8, 8, 9, 9,11,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
11, 0,12,12, 9, 9,10,10,10,10,11,11,11,11, 0,13,
13, 9, 9, 9, 9,10,10,11,11,12,12, 0, 0, 0, 9,10,
9,10,11,11,12,11,13,12, 0, 0, 0,10,10, 9, 9,11,
11,12,12,13,12, 0, 0, 0,13,13,10,10,11,11,12,12,
13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
0, 0, 0, 0,11,12,11,11,12,13,14,13, 0, 0, 0, 0,
0,12,12,11,11,13,12,14,13,
};
 
static const static_codebook _44c1_sm_p7_0 = {
2, 169,
(char *)_vq_lengthlist__44c1_sm_p7_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44c1_sm_p7_0,
0
};
 
static const long _vq_quantlist__44c1_sm_p7_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44c1_sm_p7_1[] = {
2, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
5, 5, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _44c1_sm_p7_1 = {
2, 25,
(char *)_vq_lengthlist__44c1_sm_p7_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44c1_sm_p7_1,
0
};
 
static const long _vq_quantlist__44c1_sm_p8_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c1_sm_p8_0[] = {
1, 3, 3,13,13,13,13,13,13,13,13,13,13, 3, 6, 6,
13,13,13,13,13,13,13,13,13,13, 4, 8, 7,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,
};
 
static const static_codebook _44c1_sm_p8_0 = {
2, 169,
(char *)_vq_lengthlist__44c1_sm_p8_0,
1, -514541568, 1627103232, 4, 0,
(long *)_vq_quantlist__44c1_sm_p8_0,
0
};
 
static const long _vq_quantlist__44c1_sm_p8_1[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44c1_sm_p8_1[] = {
1, 4, 4, 6, 6, 7, 7, 9, 9,10,11,12,12, 6, 5, 5,
7, 7, 8, 7,10,10,11,11,12,12, 6, 5, 5, 7, 7, 8,
8,10,10,11,11,12,12,16, 7, 7, 8, 8, 9, 9,11,11,
12,12,13,13,17, 7, 7, 8, 7, 9, 9,11,10,12,12,13,
13,19,11,10, 8, 8,10,10,11,11,12,12,13,13,19,11,
11, 9, 7,11,10,11,11,12,12,13,12,19,19,19,10,10,
10,10,11,12,12,12,13,14,18,19,19,11, 9,11, 9,13,
12,12,12,13,13,19,20,19,13,15,11,11,12,12,13,13,
14,13,18,19,20,15,13,12,10,13,10,13,13,13,14,20,
20,20,20,20,13,14,12,12,13,12,13,13,20,20,20,20,
20,13,12,12,12,14,12,14,13,
};
 
static const static_codebook _44c1_sm_p8_1 = {
2, 169,
(char *)_vq_lengthlist__44c1_sm_p8_1,
1, -522616832, 1620115456, 4, 0,
(long *)_vq_quantlist__44c1_sm_p8_1,
0
};
 
static const long _vq_quantlist__44c1_sm_p8_2[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44c1_sm_p8_2[] = {
2, 5, 5, 6, 6, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8,
8,10, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9,
9, 9,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9,10,11,11, 8, 8, 8, 8, 9, 9, 9, 9,
9, 9,10,10, 9,10,10,10,10, 8, 8, 8, 8, 9, 9, 9,
9, 9, 9, 9, 9,10,10,11,10,10, 8, 8, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9,10, 9,10,10,10,11,11, 8, 8, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,11,11,11, 9, 9,
9, 9, 9, 9, 9, 9,10, 9,10, 9,11,11,11,11,11, 9,
8, 9, 9, 9, 9, 9, 9, 9,10,10, 9,11,11,10,11,11,
9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,11,11,11,11,
11,11,11, 9, 9,10, 9, 9, 9, 9,10, 9,10,10,11,10,
11,11,11,11, 9,10,10,10, 9, 9, 9, 9, 9, 9,10,11,
11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,11,
11,10,11,11,11,11,10,10, 9, 9, 9, 9, 9, 9,10, 9,
10,11,10,11,11,11,11,11,11, 9, 9,10, 9, 9, 9, 9,
9,
};
 
static const static_codebook _44c1_sm_p8_2 = {
2, 289,
(char *)_vq_lengthlist__44c1_sm_p8_2,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44c1_sm_p8_2,
0
};
 
static const char _huff_lengthlist__44c1_sm_short[] = {
4, 7,13,14,14,15,16,18,18, 4, 2, 5, 8, 7, 9,12,
15,15,10, 4, 5,10, 6, 8,11,15,17,12, 5, 7, 5, 6,
8,11,14,17,11, 5, 6, 6, 5, 6, 9,13,17,12, 6, 7,
6, 5, 6, 8,12,14,14, 7, 8, 6, 6, 7, 9,11,14,14,
8, 9, 6, 5, 6, 9,11,13,16,10,10, 7, 6, 7, 8,10,
11,
};
 
static const static_codebook _huff_book__44c1_sm_short = {
2, 81,
(char *)_huff_lengthlist__44c1_sm_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44cn1_s_long[] = {
4, 4, 7, 8, 7, 8,10,12,17, 3, 1, 6, 6, 7, 8,10,
12,15, 7, 6, 9, 9, 9,11,12,14,17, 8, 6, 9, 6, 7,
9,11,13,17, 7, 6, 9, 7, 7, 8, 9,12,15, 8, 8,10,
8, 7, 7, 7,10,14, 9,10,12,10, 8, 8, 8,10,14,11,
13,15,13,12,11,11,12,16,17,18,18,19,20,18,16,16,
20,
};
 
static const static_codebook _huff_book__44cn1_s_long = {
2, 81,
(char *)_huff_lengthlist__44cn1_s_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44cn1_s_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44cn1_s_p1_0[] = {
1, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0, 0,
0, 0, 0, 7, 9,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7,10, 9, 0, 0,
0, 0, 0, 0, 8,10, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 8, 8, 0, 0, 0, 0,
0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 8, 9,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, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0, 0,
0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0,10,11,11, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0,
0, 0, 0, 0, 9,11, 9, 0, 0, 0, 0, 0, 0,10,11,11,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 8, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0,
0, 0, 0, 0, 8,10,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,11,11, 0,
0, 0, 0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,11,11,
0, 0, 0, 0, 0, 0, 9,11, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44cn1_s_p1_0 = {
8, 6561,
(char *)_vq_lengthlist__44cn1_s_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44cn1_s_p1_0,
0
};
 
static const long _vq_quantlist__44cn1_s_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44cn1_s_p2_0[] = {
1, 4, 4, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 9, 9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 7, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44cn1_s_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44cn1_s_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44cn1_s_p2_0,
0
};
 
static const long _vq_quantlist__44cn1_s_p3_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44cn1_s_p3_0[] = {
1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
9, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _44cn1_s_p3_0 = {
2, 81,
(char *)_vq_lengthlist__44cn1_s_p3_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44cn1_s_p3_0,
0
};
 
static const long _vq_quantlist__44cn1_s_p4_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44cn1_s_p4_0[] = {
1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 6, 6, 7, 7,
9, 9, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0, 7, 7,
8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
9, 9, 9, 9,10,10, 0, 0, 0, 9, 9, 9, 9,10,10, 0,
0, 0,10,10,10,10,11,11, 0, 0, 0, 0, 0,10,10,11,
11,
};
 
static const static_codebook _44cn1_s_p4_0 = {
2, 81,
(char *)_vq_lengthlist__44cn1_s_p4_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44cn1_s_p4_0,
0
};
 
static const long _vq_quantlist__44cn1_s_p5_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44cn1_s_p5_0[] = {
1, 4, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,10,
10, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10,
11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
10,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
11,11,11,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
10,11,11,11,11, 0, 0, 0, 8, 8, 9, 9, 9, 9,10,10,
10,10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9, 9,10,
10,10,11,11,11,12,12, 0, 0, 0, 9, 9,10, 9,10,10,
10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,10,
10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,
10,10,10,11,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
9,10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
10,10,11,10,11,11,11,12,13,12,13,13, 0, 0, 0, 0,
0, 0, 0,11,10,11,11,12,12,12,12,13,13, 0, 0, 0,
0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0, 0,
0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0,
0, 0, 0, 0, 0, 0,12,12,12,13,13,13,13,13,14,14,
0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,12,13,13,14,
14,
};
 
static const static_codebook _44cn1_s_p5_0 = {
2, 289,
(char *)_vq_lengthlist__44cn1_s_p5_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44cn1_s_p5_0,
0
};
 
static const long _vq_quantlist__44cn1_s_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44cn1_s_p6_0[] = {
1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 6, 6,10, 9, 9,11,
9, 9, 4, 6, 6,10, 9, 9,10, 9, 9, 7,10,10,11,11,
11,12,11,11, 7, 9, 9,11,11,10,11,10,10, 7, 9, 9,
11,10,11,11,10,10, 7,10,10,11,11,11,12,11,11, 7,
9, 9,11,10,10,11,10,10, 7, 9, 9,11,10,10,11,10,
10,
};
 
static const static_codebook _44cn1_s_p6_0 = {
4, 81,
(char *)_vq_lengthlist__44cn1_s_p6_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44cn1_s_p6_0,
0
};
 
static const long _vq_quantlist__44cn1_s_p6_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44cn1_s_p6_1[] = {
1, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 6,
8, 8, 8, 8, 8, 8,10,10,10, 7, 6, 7, 7, 8, 8, 8,
8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
7, 8, 8, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 9, 9,
9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,
9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9,
9, 9, 9,10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,10,
10,10,10, 9, 9, 9, 9, 9, 9,
};
 
static const static_codebook _44cn1_s_p6_1 = {
2, 121,
(char *)_vq_lengthlist__44cn1_s_p6_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44cn1_s_p6_1,
0
};
 
static const long _vq_quantlist__44cn1_s_p7_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44cn1_s_p7_0[] = {
1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
7, 7, 8, 8, 8, 8, 9, 9,11,11, 7, 5, 5, 7, 7, 8,
8, 8, 8, 9,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
11, 0,12,12, 9, 9, 9,10,10,10,11,11,11,12, 0,13,
13, 9, 9, 9, 9,10,10,11,11,11,12, 0, 0, 0,10,10,
10,10,11,11,12,12,12,13, 0, 0, 0,10,10,10,10,11,
11,12,12,13,12, 0, 0, 0,14,14,11,10,11,12,12,13,
13,14, 0, 0, 0,15,15,11,11,12,11,12,12,14,13, 0,
0, 0, 0, 0,12,12,12,12,13,13,14,14, 0, 0, 0, 0,
0,13,13,12,12,13,13,13,14,
};
 
static const static_codebook _44cn1_s_p7_0 = {
2, 169,
(char *)_vq_lengthlist__44cn1_s_p7_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44cn1_s_p7_0,
0
};
 
static const long _vq_quantlist__44cn1_s_p7_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44cn1_s_p7_1[] = {
2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
6, 6, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _44cn1_s_p7_1 = {
2, 25,
(char *)_vq_lengthlist__44cn1_s_p7_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44cn1_s_p7_1,
0
};
 
static const long _vq_quantlist__44cn1_s_p8_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44cn1_s_p8_0[] = {
1, 7, 7,11,11, 8,11,11,11,11, 4,11, 3,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11, 7,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11, 8,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,
};
 
static const static_codebook _44cn1_s_p8_0 = {
4, 625,
(char *)_vq_lengthlist__44cn1_s_p8_0,
1, -518283264, 1627103232, 3, 0,
(long *)_vq_quantlist__44cn1_s_p8_0,
0
};
 
static const long _vq_quantlist__44cn1_s_p8_1[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44cn1_s_p8_1[] = {
1, 4, 4, 6, 6, 8, 8, 9,10,10,11,11,11, 6, 5, 5,
7, 7, 8, 8, 9,10, 9,11,11,12, 5, 5, 5, 7, 7, 8,
9,10,10,12,12,14,13,15, 7, 7, 8, 8, 9,10,11,11,
10,12,10,11,15, 7, 8, 8, 8, 9, 9,11,11,13,12,12,
13,15,10,10, 8, 8,10,10,12,12,11,14,10,10,15,11,
11, 8, 8,10,10,12,13,13,14,15,13,15,15,15,10,10,
10,10,12,12,13,12,13,10,15,15,15,10,10,11,10,13,
11,13,13,15,13,15,15,15,13,13,10,11,11,11,12,10,
14,11,15,15,14,14,13,10,10,12,11,13,13,14,14,15,
15,15,15,15,11,11,11,11,12,11,15,12,15,15,15,15,
15,12,12,11,11,14,12,13,14,
};
 
static const static_codebook _44cn1_s_p8_1 = {
2, 169,
(char *)_vq_lengthlist__44cn1_s_p8_1,
1, -522616832, 1620115456, 4, 0,
(long *)_vq_quantlist__44cn1_s_p8_1,
0
};
 
static const long _vq_quantlist__44cn1_s_p8_2[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44cn1_s_p8_2[] = {
3, 4, 3, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9,
9,10,11,11, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9,
9, 9,10,10,10, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9,10,10,10, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9,
9, 9,10, 9,10,11,10, 7, 6, 7, 7, 8, 8, 9, 9, 9,
9, 9, 9, 9,10,10,10,11, 7, 7, 8, 8, 8, 8, 9, 9,
9, 9, 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9,
9, 9, 9, 9, 9, 9,10,11,11,11, 8, 8, 8, 8, 8, 8,
9, 9, 9, 9, 9, 9, 9, 9,11,10,10,11,11, 8, 8, 8,
9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,11,11, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,10,11,11, 9,
9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,11,10,11,11,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,10,10,11,
11,11,11, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,11,11,
10,11,11,11, 9,10,10, 9, 9, 9, 9, 9, 9, 9,10,11,
11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
11,11,11,11,11,11,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
11,11,11,10,11,11,11,11,11, 9, 9, 9,10, 9, 9, 9,
9,
};
 
static const static_codebook _44cn1_s_p8_2 = {
2, 289,
(char *)_vq_lengthlist__44cn1_s_p8_2,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44cn1_s_p8_2,
0
};
 
static const char _huff_lengthlist__44cn1_s_short[] = {
10, 9,12,15,12,13,16,14,16, 7, 1, 5,14, 7,10,13,
16,16, 9, 4, 6,16, 8,11,16,16,16,14, 4, 7,16, 9,
12,14,16,16,10, 5, 7,14, 9,12,14,15,15,13, 8, 9,
14,10,12,13,14,15,13, 9, 9, 7, 6, 8,11,12,12,14,
8, 8, 5, 4, 5, 8,11,12,16,10,10, 6, 5, 6, 8, 9,
10,
};
 
static const static_codebook _huff_book__44cn1_s_short = {
2, 81,
(char *)_huff_lengthlist__44cn1_s_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44cn1_sm_long[] = {
3, 3, 8, 8, 8, 8,10,12,14, 3, 2, 6, 7, 7, 8,10,
12,16, 7, 6, 7, 9, 8,10,12,14,16, 8, 6, 8, 4, 5,
7, 9,11,13, 7, 6, 8, 5, 6, 7, 9,11,14, 8, 8,10,
7, 7, 6, 8,10,13, 9,11,12, 9, 9, 7, 8,10,12,10,
13,15,11,11,10, 9,10,13,13,16,17,14,15,14,13,14,
17,
};
 
static const static_codebook _huff_book__44cn1_sm_long = {
2, 81,
(char *)_huff_lengthlist__44cn1_sm_long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44cn1_sm_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44cn1_sm_p1_0[] = {
1, 4, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0, 0,
0, 0, 0, 7, 8, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
0, 0, 0, 0, 8, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 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, 8, 8, 0, 0, 0, 0,
0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 8, 9, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10, 9, 0, 0, 0,
0, 0, 0, 9, 9,10, 0, 0, 0, 0, 0, 0, 9,10,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, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,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, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
0, 0, 0, 0, 8, 9,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
0, 0, 0, 0, 0, 8, 9,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 9,10,10,
0, 0, 0, 0, 0, 0, 9,10, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44cn1_sm_p1_0 = {
8, 6561,
(char *)_vq_lengthlist__44cn1_sm_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44cn1_sm_p1_0,
0
};
 
static const long _vq_quantlist__44cn1_sm_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44cn1_sm_p2_0[] = {
1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 9, 9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7, 7, 7, 9, 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, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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 const static_codebook _44cn1_sm_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44cn1_sm_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44cn1_sm_p2_0,
0
};
 
static const long _vq_quantlist__44cn1_sm_p3_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44cn1_sm_p3_0[] = {
1, 3, 4, 7, 7, 0, 0, 0, 0, 0, 4, 4, 7, 7, 0, 0,
0, 0, 0, 4, 5, 7, 7, 0, 0, 0, 0, 0, 6, 7, 8, 8,
0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0,
9, 9, 0, 0, 0, 0, 0, 0, 0,10, 9, 0, 0, 0, 0, 0,
0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,
};
 
static const static_codebook _44cn1_sm_p3_0 = {
2, 81,
(char *)_vq_lengthlist__44cn1_sm_p3_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44cn1_sm_p3_0,
0
};
 
static const long _vq_quantlist__44cn1_sm_p4_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44cn1_sm_p4_0[] = {
1, 4, 3, 6, 6, 7, 7, 9, 9, 0, 5, 5, 7, 7, 8, 7,
9, 9, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8,
8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
9, 9, 9, 9,10,10, 0, 0, 0, 9, 9, 9, 9,10,10, 0,
0, 0,10,10,10,10,11,11, 0, 0, 0, 0, 0,10,10,11,
11,
};
 
static const static_codebook _44cn1_sm_p4_0 = {
2, 81,
(char *)_vq_lengthlist__44cn1_sm_p4_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44cn1_sm_p4_0,
0
};
 
static const long _vq_quantlist__44cn1_sm_p5_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44cn1_sm_p5_0[] = {
1, 4, 4, 6, 6, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,
11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
12,12, 0, 6, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
11,12,12, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,11,
11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
11,11,12,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
10,11,11,12,12,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,10,
10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
10,10,11,11,12,12,13,13,13,13, 0, 0, 0, 0, 0, 9,
9,10,10,11,11,12,12,12,13,13,13, 0, 0, 0, 0, 0,
10,10,11,11,11,11,12,12,13,13,14,14, 0, 0, 0, 0,
0, 0, 0,11,11,11,11,12,12,13,13,14,14, 0, 0, 0,
0, 0, 0, 0,11,11,12,12,13,13,13,13,14,14, 0, 0,
0, 0, 0, 0, 0,11,11,12,12,13,13,13,13,14,14, 0,
0, 0, 0, 0, 0, 0,12,12,12,13,13,13,14,14,14,14,
0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,14,14,14,
14,
};
 
static const static_codebook _44cn1_sm_p5_0 = {
2, 289,
(char *)_vq_lengthlist__44cn1_sm_p5_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44cn1_sm_p5_0,
0
};
 
static const long _vq_quantlist__44cn1_sm_p6_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44cn1_sm_p6_0[] = {
1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 6,10, 9, 9,11,
9, 9, 4, 6, 7,10, 9, 9,11, 9, 9, 7,10,10,10,11,
11,11,11,10, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
11,10,11,11,10,10, 7,11,11,11,11,11,12,11,11, 7,
9, 9,11,10,10,12,10,10, 7, 9, 9,11,10,10,11,10,
10,
};
 
static const static_codebook _44cn1_sm_p6_0 = {
4, 81,
(char *)_vq_lengthlist__44cn1_sm_p6_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44cn1_sm_p6_0,
0
};
 
static const long _vq_quantlist__44cn1_sm_p6_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44cn1_sm_p6_1[] = {
2, 4, 4, 5, 5, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6,
7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
8,10, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
8, 8,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,
8, 8, 8, 8, 8, 8, 9, 9,10,10,10,10,10, 8, 8, 8,
8, 9, 9,10,10,10,10,10, 9, 9, 9, 9, 8, 9,10,10,
10,10,10, 8, 9, 8, 8, 9, 8,
};
 
static const static_codebook _44cn1_sm_p6_1 = {
2, 121,
(char *)_vq_lengthlist__44cn1_sm_p6_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44cn1_sm_p6_1,
0
};
 
static const long _vq_quantlist__44cn1_sm_p7_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44cn1_sm_p7_0[] = {
1, 4, 4, 6, 6, 7, 7, 7, 7, 9, 9,10,10, 7, 5, 5,
7, 7, 8, 8, 8, 8,10, 9,11,10, 7, 5, 5, 7, 7, 8,
8, 8, 8, 9,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
11, 0,12,12, 9, 9, 9,10,10,10,11,11,12,12, 0,13,
13, 9, 9, 9, 9,10,10,11,11,12,12, 0, 0, 0,10,10,
10,10,11,11,12,12,12,13, 0, 0, 0,10,10,10,10,11,
11,12,12,12,12, 0, 0, 0,14,14,11,11,11,11,12,13,
13,13, 0, 0, 0,14,14,11,10,11,11,12,12,13,13, 0,
0, 0, 0, 0,12,12,12,12,13,13,13,14, 0, 0, 0, 0,
0,13,12,12,12,13,13,13,14,
};
 
static const static_codebook _44cn1_sm_p7_0 = {
2, 169,
(char *)_vq_lengthlist__44cn1_sm_p7_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44cn1_sm_p7_0,
0
};
 
static const long _vq_quantlist__44cn1_sm_p7_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44cn1_sm_p7_1[] = {
2, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
5, 5, 5, 5, 6, 6, 6, 5, 5,
};
 
static const static_codebook _44cn1_sm_p7_1 = {
2, 25,
(char *)_vq_lengthlist__44cn1_sm_p7_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44cn1_sm_p7_1,
0
};
 
static const long _vq_quantlist__44cn1_sm_p8_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44cn1_sm_p8_0[] = {
1, 4, 4,12,11,13,13,14,14, 4, 7, 7,11,13,14,14,
14,14, 3, 8, 3,14,14,14,14,14,14,14,10,12,14,14,
14,14,14,14,14,14, 5,14, 8,14,14,14,14,14,12,14,
13,14,14,14,14,14,14,14,13,14,10,14,14,14,14,14,
14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
14,
};
 
static const static_codebook _44cn1_sm_p8_0 = {
2, 81,
(char *)_vq_lengthlist__44cn1_sm_p8_0,
1, -516186112, 1627103232, 4, 0,
(long *)_vq_quantlist__44cn1_sm_p8_0,
0
};
 
static const long _vq_quantlist__44cn1_sm_p8_1[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44cn1_sm_p8_1[] = {
1, 4, 4, 6, 6, 8, 8, 9, 9,10,11,11,11, 6, 5, 5,
7, 7, 8, 8,10,10,10,11,11,11, 6, 5, 5, 7, 7, 8,
8,10,10,11,12,12,12,14, 7, 7, 7, 8, 9, 9,11,11,
11,12,11,12,17, 7, 7, 8, 7, 9, 9,11,11,12,12,12,
12,14,11,11, 8, 8,10,10,11,12,12,13,11,12,14,11,
11, 8, 8,10,10,11,12,12,13,13,12,14,15,14,10,10,
10,10,11,12,12,12,12,11,14,13,16,10,10,10, 9,12,
11,12,12,13,14,14,15,14,14,13,10,10,11,11,12,11,
13,11,14,12,15,13,14,11,10,12,10,12,12,13,13,13,
13,14,15,15,12,12,11,11,12,11,13,12,14,14,14,14,
17,12,12,11,10,13,11,13,13,
};
 
static const static_codebook _44cn1_sm_p8_1 = {
2, 169,
(char *)_vq_lengthlist__44cn1_sm_p8_1,
1, -522616832, 1620115456, 4, 0,
(long *)_vq_quantlist__44cn1_sm_p8_1,
0
};
 
static const long _vq_quantlist__44cn1_sm_p8_2[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44cn1_sm_p8_2[] = {
3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
9,10, 6, 6, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9,10, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9,
9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
9, 9, 9, 9,10,10,10, 7, 7, 7, 8, 8, 8, 9, 9, 9,
9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 8, 8, 9, 9,
9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 8, 8, 9,
9, 9, 9, 9, 9, 9, 9,11,10,11, 8, 8, 8, 8, 8, 8,
9, 9, 9, 9, 9, 9, 9, 9,10,10,10,11,11, 8, 8, 8,
8, 9, 9, 9, 9, 9, 9, 9, 9,11,10,11,11,11, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,11,10,11,11, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,11,11,10,11,11,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,10,11,11,
11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,11,11,
11,11,11,11, 9,10,10,10, 9, 9, 9, 9, 9, 9,11,10,
11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
11,11,11,11,11,11,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
10,11,11,11,11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9,
9,
};
 
static const static_codebook _44cn1_sm_p8_2 = {
2, 289,
(char *)_vq_lengthlist__44cn1_sm_p8_2,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44cn1_sm_p8_2,
0
};
 
static const char _huff_lengthlist__44cn1_sm_short[] = {
5, 6,12,14,12,14,16,17,18, 4, 2, 5,11, 7,10,12,
14,15, 9, 4, 5,11, 7,10,13,15,18,15, 6, 7, 5, 6,
8,11,13,16,11, 5, 6, 5, 5, 6, 9,13,15,12, 5, 7,
6, 5, 6, 9,12,14,12, 6, 7, 8, 6, 7, 9,12,13,14,
8, 8, 7, 5, 5, 8,10,12,16, 9, 9, 8, 6, 6, 7, 9,
9,
};
 
static const static_codebook _huff_book__44cn1_sm_short = {
2, 81,
(char *)_huff_lengthlist__44cn1_sm_short,
0, 0, 0, 0, 0,
NULL,
0
};
 
/contrib/sdk/sources/libvorbis-1.3.7/lib/books/floor/floor_books.h
0,0 → 1,1546
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: static codebooks autogenerated by huff/huffbuld
 
********************************************************************/
 
#include "codebook.h"
 
static const char _huff_lengthlist_line_256x7_0sub1[] = {
0, 2, 3, 3, 3, 3, 4, 3, 4,
};
 
static const static_codebook _huff_book_line_256x7_0sub1 = {
1, 9,
(char *)_huff_lengthlist_line_256x7_0sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x7_0sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 3, 4, 3, 5, 3,
6, 3, 6, 4, 6, 4, 7, 5, 7,
};
 
static const static_codebook _huff_book_line_256x7_0sub2 = {
1, 25,
(char *)_huff_lengthlist_line_256x7_0sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x7_0sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 2, 5, 3, 5, 3,
6, 3, 6, 4, 7, 6, 7, 8, 7, 9, 8, 9, 9, 9,10, 9,
11,13,11,13,10,10,13,13,13,13,13,13,12,12,12,12,
};
 
static const static_codebook _huff_book_line_256x7_0sub3 = {
1, 64,
(char *)_huff_lengthlist_line_256x7_0sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x7_1sub1[] = {
0, 3, 3, 3, 3, 2, 4, 3, 4,
};
 
static const static_codebook _huff_book_line_256x7_1sub1 = {
1, 9,
(char *)_huff_lengthlist_line_256x7_1sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x7_1sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 4, 3, 4, 4,
5, 4, 6, 5, 6, 7, 6, 8, 8,
};
 
static const static_codebook _huff_book_line_256x7_1sub2 = {
1, 25,
(char *)_huff_lengthlist_line_256x7_1sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x7_1sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 4, 3, 6, 3, 7,
3, 8, 5, 8, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7,
};
 
static const static_codebook _huff_book_line_256x7_1sub3 = {
1, 64,
(char *)_huff_lengthlist_line_256x7_1sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x7_class0[] = {
7, 5, 5, 9, 9, 6, 6, 9,12, 8, 7, 8,11, 8, 9,15,
6, 3, 3, 7, 7, 4, 3, 6, 9, 6, 5, 6, 8, 6, 8,15,
8, 5, 5, 9, 8, 5, 4, 6,10, 7, 5, 5,11, 8, 7,15,
14,15,13,13,13,13, 8,11,15,10, 7, 6,11, 9,10,15,
};
 
static const static_codebook _huff_book_line_256x7_class0 = {
1, 64,
(char *)_huff_lengthlist_line_256x7_class0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x7_class1[] = {
5, 6, 8,15, 6, 9,10,15,10,11,12,15,15,15,15,15,
4, 6, 7,15, 6, 7, 8,15, 9, 8, 9,15,15,15,15,15,
6, 8, 9,15, 7, 7, 8,15,10, 9,10,15,15,15,15,15,
15,13,15,15,15,10,11,15,15,13,13,15,15,15,15,15,
4, 6, 7,15, 6, 8, 9,15,10,10,12,15,15,15,15,15,
2, 5, 6,15, 5, 6, 7,15, 8, 6, 7,15,15,15,15,15,
5, 6, 8,15, 5, 6, 7,15, 9, 6, 7,15,15,15,15,15,
14,12,13,15,12,10,11,15,15,15,15,15,15,15,15,15,
7, 8, 9,15, 9,10,10,15,15,14,14,15,15,15,15,15,
5, 6, 7,15, 7, 8, 9,15,12, 9,10,15,15,15,15,15,
7, 7, 9,15, 7, 7, 8,15,12, 8, 9,15,15,15,15,15,
13,13,14,15,12,11,12,15,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,13,15,15,15,15,15,15,15,15,15,15,15,15,15,
15,12,13,15,15,12,13,15,15,14,15,15,15,15,15,15,
15,15,15,15,15,15,13,15,15,15,15,15,15,15,15,15,
};
 
static const static_codebook _huff_book_line_256x7_class1 = {
1, 256,
(char *)_huff_lengthlist_line_256x7_class1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_512x17_0sub0[] = {
4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 6, 5, 6, 6, 6, 6, 5, 6, 6, 7, 6, 7, 6, 7, 6,
7, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 9, 7, 9, 7,
9, 7, 9, 8, 9, 8,10, 8,10, 8,10, 7,10, 6,10, 8,
10, 8,11, 7,10, 7,11, 8,11,11,12,12,11,11,12,11,
13,11,13,11,13,12,15,12,13,13,14,14,14,14,14,15,
15,15,16,14,17,19,19,18,18,18,18,18,18,18,18,18,
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
};
 
static const static_codebook _huff_book_line_512x17_0sub0 = {
1, 128,
(char *)_huff_lengthlist_line_512x17_0sub0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_512x17_1sub0[] = {
2, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 6, 5,
6, 5, 6, 6, 7, 6, 7, 6, 8, 7, 8, 7, 8, 7, 8, 7,
};
 
static const static_codebook _huff_book_line_512x17_1sub0 = {
1, 32,
(char *)_huff_lengthlist_line_512x17_1sub0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_512x17_1sub1[] = {
0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 5, 3, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 6, 5,
6, 5, 7, 5, 8, 6, 8, 6, 8, 6, 8, 6, 8, 7, 9, 7,
9, 7,11, 9,11,11,12,11,14,12,14,16,14,16,13,16,
14,16,12,15,13,16,14,16,13,14,12,15,13,15,13,13,
13,15,12,14,14,15,13,15,12,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
};
 
static const static_codebook _huff_book_line_512x17_1sub1 = {
1, 128,
(char *)_huff_lengthlist_line_512x17_1sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_512x17_2sub1[] = {
0, 4, 5, 4, 4, 4, 5, 4, 4, 4, 5, 4, 5, 4, 5, 3,
5, 3,
};
 
static const static_codebook _huff_book_line_512x17_2sub1 = {
1, 18,
(char *)_huff_lengthlist_line_512x17_2sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_512x17_2sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 3, 4, 3, 4, 4, 5, 4, 5, 4, 6, 4, 6, 5,
6, 5, 7, 5, 7, 6, 8, 6, 8, 6, 8, 7, 8, 7, 9, 7,
9, 8,
};
 
static const static_codebook _huff_book_line_512x17_2sub2 = {
1, 50,
(char *)_huff_lengthlist_line_512x17_2sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_512x17_2sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 3, 3, 3, 3, 4, 3, 4, 4, 5, 5, 6, 6, 7, 7,
7, 8, 8,11, 8, 9, 9, 9,10,11,11,11, 9,10,10,11,
11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
};
 
static const static_codebook _huff_book_line_512x17_2sub3 = {
1, 128,
(char *)_huff_lengthlist_line_512x17_2sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_512x17_3sub1[] = {
0, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 5, 4, 5,
5, 5,
};
 
static const static_codebook _huff_book_line_512x17_3sub1 = {
1, 18,
(char *)_huff_lengthlist_line_512x17_3sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_512x17_3sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 2, 3, 3, 4, 3, 5, 4, 6, 4, 6, 5, 7, 6, 7,
6, 8, 6, 8, 7, 9, 8,10, 8,12, 9,13,10,15,10,15,
11,14,
};
 
static const static_codebook _huff_book_line_512x17_3sub2 = {
1, 50,
(char *)_huff_lengthlist_line_512x17_3sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_512x17_3sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 4, 8, 4, 8, 4, 8, 5, 8, 5, 8, 6, 8,
4, 8, 4, 8, 5, 8, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
};
 
static const static_codebook _huff_book_line_512x17_3sub3 = {
1, 128,
(char *)_huff_lengthlist_line_512x17_3sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_512x17_class1[] = {
1, 2, 3, 6, 5, 4, 7, 7,
};
 
static const static_codebook _huff_book_line_512x17_class1 = {
1, 8,
(char *)_huff_lengthlist_line_512x17_class1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_512x17_class2[] = {
3, 3, 3,14, 5, 4, 4,11, 8, 6, 6,10,17,12,11,17,
6, 5, 5,15, 5, 3, 4,11, 8, 5, 5, 8,16, 9,10,14,
10, 8, 9,17, 8, 6, 6,13,10, 7, 7,10,16,11,13,14,
17,17,17,17,17,16,16,16,16,15,16,16,16,16,16,16,
};
 
static const static_codebook _huff_book_line_512x17_class2 = {
1, 64,
(char *)_huff_lengthlist_line_512x17_class2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_512x17_class3[] = {
2, 4, 6,17, 4, 5, 7,17, 8, 7,10,17,17,17,17,17,
3, 4, 6,15, 3, 3, 6,15, 7, 6, 9,17,17,17,17,17,
6, 8,10,17, 6, 6, 8,16, 9, 8,10,17,17,15,16,17,
17,17,17,17,12,15,15,16,12,15,15,16,16,16,16,16,
};
 
static const static_codebook _huff_book_line_512x17_class3 = {
1, 64,
(char *)_huff_lengthlist_line_512x17_class3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x4_class0[] = {
7, 7, 7,11, 6, 6, 7,11, 7, 6, 6,10,12,10,10,13,
7, 7, 8,11, 7, 7, 7,11, 7, 6, 7,10,11,10,10,13,
10,10, 9,12, 9, 9, 9,11, 8, 8, 8,11,13,11,10,14,
15,15,14,15,15,14,13,14,15,12,12,17,17,17,17,17,
7, 7, 6, 9, 6, 6, 6, 9, 7, 6, 6, 8,11,11,10,12,
7, 7, 7, 9, 7, 6, 6, 9, 7, 6, 6, 9,13,10,10,11,
10, 9, 8,10, 9, 8, 8,10, 8, 8, 7, 9,13,12,10,11,
17,14,14,13,15,14,12,13,17,13,12,15,17,17,14,17,
7, 6, 6, 7, 6, 6, 5, 7, 6, 6, 6, 6,11, 9, 9, 9,
7, 7, 6, 7, 7, 6, 6, 7, 6, 6, 6, 6,10, 9, 8, 9,
10, 9, 8, 8, 9, 8, 7, 8, 8, 7, 6, 8,11,10, 9,10,
17,17,12,15,15,15,12,14,14,14,10,12,15,13,12,13,
11,10, 8,10,11,10, 8, 8,10, 9, 7, 7,10, 9, 9,11,
11,11, 9,10,11,10, 8, 9,10, 8, 6, 8,10, 9, 9,11,
14,13,10,12,12,11,10,10, 8, 7, 8,10,10,11,11,12,
17,17,15,17,17,17,17,17,17,13,12,17,17,17,14,17,
};
 
static const static_codebook _huff_book_line_128x4_class0 = {
1, 256,
(char *)_huff_lengthlist_line_128x4_class0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x4_0sub0[] = {
2, 2, 2, 2,
};
 
static const static_codebook _huff_book_line_128x4_0sub0 = {
1, 4,
(char *)_huff_lengthlist_line_128x4_0sub0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x4_0sub1[] = {
0, 0, 0, 0, 3, 2, 3, 2, 3, 3,
};
 
static const static_codebook _huff_book_line_128x4_0sub1 = {
1, 10,
(char *)_huff_lengthlist_line_128x4_0sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x4_0sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 3, 4, 3,
4, 4, 5, 4, 5, 4, 6, 5, 6,
};
 
static const static_codebook _huff_book_line_128x4_0sub2 = {
1, 25,
(char *)_huff_lengthlist_line_128x4_0sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x4_0sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 3, 5, 3, 5, 3,
5, 4, 6, 5, 6, 5, 7, 6, 6, 7, 7, 9, 9,11,11,16,
11,14,10,11,11,13,16,15,15,15,15,15,15,15,15,15,
};
 
static const static_codebook _huff_book_line_128x4_0sub3 = {
1, 64,
(char *)_huff_lengthlist_line_128x4_0sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x4_class0[] = {
6, 7, 7,12, 6, 6, 7,12, 7, 6, 6,10,15,12,11,13,
7, 7, 8,13, 7, 7, 8,12, 7, 7, 7,11,12,12,11,13,
10, 9, 9,11, 9, 9, 9,10,10, 8, 8,12,14,12,12,14,
11,11,12,14,11,12,11,15,15,12,13,15,15,15,15,15,
6, 6, 7,10, 6, 6, 6,11, 7, 6, 6, 9,14,12,11,13,
7, 7, 7,10, 6, 6, 7, 9, 7, 7, 6,10,13,12,10,12,
9, 9, 9,11, 9, 9, 8, 9, 9, 8, 8,10,13,12,10,12,
12,12,11,13,12,12,11,12,15,13,12,15,15,15,14,14,
6, 6, 6, 8, 6, 6, 5, 6, 7, 7, 6, 5,11,10, 9, 8,
7, 6, 6, 7, 6, 6, 5, 6, 7, 7, 6, 6,11,10, 9, 8,
8, 8, 8, 9, 8, 8, 7, 8, 8, 8, 6, 7,11,10, 9, 9,
14,11,10,14,14,11,10,15,13,11, 9,11,15,12,12,11,
11, 9, 8, 8,10, 9, 8, 9,11,10, 9, 8,12,11,12,11,
13,10, 8, 9,11,10, 8, 9,10, 9, 8, 9,10, 8,12,12,
15,11,10,10,13,11,10,10, 8, 8, 7,12,10, 9,11,12,
15,12,11,15,13,11,11,15,12,14,11,13,15,15,13,13,
};
 
static const static_codebook _huff_book_line_256x4_class0 = {
1, 256,
(char *)_huff_lengthlist_line_256x4_class0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x4_0sub0[] = {
2, 2, 2, 2,
};
 
static const static_codebook _huff_book_line_256x4_0sub0 = {
1, 4,
(char *)_huff_lengthlist_line_256x4_0sub0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x4_0sub1[] = {
0, 0, 0, 0, 2, 2, 3, 3, 3, 3,
};
 
static const static_codebook _huff_book_line_256x4_0sub1 = {
1, 10,
(char *)_huff_lengthlist_line_256x4_0sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x4_0sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 3, 4, 3,
5, 3, 5, 4, 5, 4, 6, 4, 6,
};
 
static const static_codebook _huff_book_line_256x4_0sub2 = {
1, 25,
(char *)_huff_lengthlist_line_256x4_0sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x4_0sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 3, 5, 3, 5, 3,
6, 4, 7, 4, 7, 5, 7, 6, 7, 6, 7, 8,10,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,
};
 
static const static_codebook _huff_book_line_256x4_0sub3 = {
1, 64,
(char *)_huff_lengthlist_line_256x4_0sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x7_class0[] = {
10, 7, 8,13, 9, 6, 7,11,10, 8, 8,12,17,17,17,17,
7, 5, 5, 9, 6, 4, 4, 8, 8, 5, 5, 8,16,14,13,16,
7, 5, 5, 7, 6, 3, 3, 5, 8, 5, 4, 7,14,12,12,15,
10, 7, 8, 9, 7, 5, 5, 6, 9, 6, 5, 5,15,12, 9,10,
};
 
static const static_codebook _huff_book_line_128x7_class0 = {
1, 64,
(char *)_huff_lengthlist_line_128x7_class0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x7_class1[] = {
8,13,17,17, 8,11,17,17,11,13,17,17,17,17,17,17,
6,10,16,17, 6,10,15,17, 8,10,16,17,17,17,17,17,
9,13,15,17, 8,11,17,17,10,12,17,17,17,17,17,17,
17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
6,11,15,17, 7,10,15,17, 8,10,17,17,17,15,17,17,
4, 8,13,17, 4, 7,13,17, 6, 8,15,17,16,15,17,17,
6,11,15,17, 6, 9,13,17, 8,10,17,17,15,17,17,17,
16,17,17,17,12,14,15,17,13,14,15,17,17,17,17,17,
5,10,14,17, 5, 9,14,17, 7, 9,15,17,15,15,17,17,
3, 7,12,17, 3, 6,11,17, 5, 7,13,17,12,12,17,17,
5, 9,14,17, 3, 7,11,17, 5, 8,13,17,13,11,16,17,
12,17,17,17, 9,14,15,17,10,11,14,17,16,14,17,17,
8,12,17,17, 8,12,17,17,10,12,17,17,17,17,17,17,
5,10,17,17, 5, 9,15,17, 7, 9,17,17,13,13,17,17,
7,11,17,17, 6,10,15,17, 7, 9,15,17,12,11,17,17,
12,15,17,17,11,14,17,17,11,10,15,17,17,16,17,17,
};
 
static const static_codebook _huff_book_line_128x7_class1 = {
1, 256,
(char *)_huff_lengthlist_line_128x7_class1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x7_0sub1[] = {
0, 3, 3, 3, 3, 3, 3, 3, 3,
};
 
static const static_codebook _huff_book_line_128x7_0sub1 = {
1, 9,
(char *)_huff_lengthlist_line_128x7_0sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x7_0sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 4, 4, 4,
5, 4, 5, 4, 5, 4, 6, 4, 6,
};
 
static const static_codebook _huff_book_line_128x7_0sub2 = {
1, 25,
(char *)_huff_lengthlist_line_128x7_0sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x7_0sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 3, 5, 3, 5, 4,
5, 4, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
7, 8, 9,11,13,13,13,13,13,13,13,13,13,13,13,13,
};
 
static const static_codebook _huff_book_line_128x7_0sub3 = {
1, 64,
(char *)_huff_lengthlist_line_128x7_0sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x7_1sub1[] = {
0, 3, 3, 2, 3, 3, 4, 3, 4,
};
 
static const static_codebook _huff_book_line_128x7_1sub1 = {
1, 9,
(char *)_huff_lengthlist_line_128x7_1sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x7_1sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 3, 6, 3, 6, 3,
6, 3, 7, 3, 8, 4, 9, 4, 9,
};
 
static const static_codebook _huff_book_line_128x7_1sub2 = {
1, 25,
(char *)_huff_lengthlist_line_128x7_1sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x7_1sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 2, 7, 3, 8, 4,
9, 5, 9, 8,10,11,11,12,14,14,14,14,14,14,14,14,
14,14,14,14,14,14,14,14,14,14,14,14,13,13,13,13,
};
 
static const static_codebook _huff_book_line_128x7_1sub3 = {
1, 64,
(char *)_huff_lengthlist_line_128x7_1sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x11_class1[] = {
1, 6, 3, 7, 2, 4, 5, 7,
};
 
static const static_codebook _huff_book_line_128x11_class1 = {
1, 8,
(char *)_huff_lengthlist_line_128x11_class1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x11_class2[] = {
1, 6,12,16, 4,12,15,16, 9,15,16,16,16,16,16,16,
2, 5,11,16, 5,11,13,16, 9,13,16,16,16,16,16,16,
4, 8,12,16, 5, 9,12,16, 9,13,15,16,16,16,16,16,
15,16,16,16,11,14,13,16,12,15,16,16,16,16,16,15,
};
 
static const static_codebook _huff_book_line_128x11_class2 = {
1, 64,
(char *)_huff_lengthlist_line_128x11_class2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x11_class3[] = {
7, 6, 9,17, 7, 6, 8,17,12, 9,11,16,16,16,16,16,
5, 4, 7,16, 5, 3, 6,14, 9, 6, 8,15,16,16,16,16,
5, 4, 6,13, 3, 2, 4,11, 7, 4, 6,13,16,11,10,14,
12,12,12,16, 9, 7,10,15,12, 9,11,16,16,15,15,16,
};
 
static const static_codebook _huff_book_line_128x11_class3 = {
1, 64,
(char *)_huff_lengthlist_line_128x11_class3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x11_0sub0[] = {
5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 6, 6, 7, 6,
7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 8, 6, 8, 6, 8, 7,
8, 7, 8, 7, 8, 7, 9, 7, 9, 8, 9, 8, 9, 8,10, 8,
10, 9,10, 9,10, 9,11, 9,11, 9,10,10,11,10,11,10,
11,11,11,11,11,11,12,13,14,14,14,15,15,16,16,16,
17,15,16,15,16,16,17,17,16,17,17,17,17,17,17,17,
17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
};
 
static const static_codebook _huff_book_line_128x11_0sub0 = {
1, 128,
(char *)_huff_lengthlist_line_128x11_0sub0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x11_1sub0[] = {
2, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5,
6, 5, 6, 5, 6, 5, 7, 6, 7, 6, 7, 6, 8, 6, 8, 6,
};
 
static const static_codebook _huff_book_line_128x11_1sub0 = {
1, 32,
(char *)_huff_lengthlist_line_128x11_1sub0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x11_1sub1[] = {
0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 5, 3, 6, 4, 6, 4, 7, 4, 7, 4, 7, 4, 8, 4,
8, 4, 9, 5, 9, 5, 9, 5, 9, 6,10, 6,10, 6,11, 7,
10, 7,10, 8,11, 9,11, 9,11,10,11,11,12,11,11,12,
15,15,12,14,11,14,12,14,11,14,13,14,12,14,11,14,
11,14,12,14,11,14,11,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,
};
 
static const static_codebook _huff_book_line_128x11_1sub1 = {
1, 128,
(char *)_huff_lengthlist_line_128x11_1sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x11_2sub1[] = {
0, 4, 5, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4, 4, 4,
5, 5,
};
 
static const static_codebook _huff_book_line_128x11_2sub1 = {
1, 18,
(char *)_huff_lengthlist_line_128x11_2sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x11_2sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 3, 3, 3, 4, 4, 4, 4, 5, 4, 5, 4, 6, 5, 7,
5, 7, 6, 8, 6, 8, 6, 9, 7, 9, 7,10, 7, 9, 8,11,
8,11,
};
 
static const static_codebook _huff_book_line_128x11_2sub2 = {
1, 50,
(char *)_huff_lengthlist_line_128x11_2sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x11_2sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 3, 8, 4, 8, 4, 8, 6, 8, 5, 8, 4, 8,
4, 8, 6, 8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
};
 
static const static_codebook _huff_book_line_128x11_2sub3 = {
1, 128,
(char *)_huff_lengthlist_line_128x11_2sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x11_3sub1[] = {
0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4,
5, 4,
};
 
static const static_codebook _huff_book_line_128x11_3sub1 = {
1, 18,
(char *)_huff_lengthlist_line_128x11_3sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x11_3sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 3, 5, 4, 6, 4, 6, 4, 7, 4, 7, 4, 8, 4,
8, 4, 9, 4, 9, 4,10, 4,10, 5,10, 5,11, 5,12, 6,
12, 6,
};
 
static const static_codebook _huff_book_line_128x11_3sub2 = {
1, 50,
(char *)_huff_lengthlist_line_128x11_3sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x11_3sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 7, 1, 6, 3, 7, 3, 8, 4, 8, 5, 8, 8, 8, 9,
7, 8, 8, 7, 7, 7, 8, 9,10, 9, 9,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9,
};
 
static const static_codebook _huff_book_line_128x11_3sub3 = {
1, 128,
(char *)_huff_lengthlist_line_128x11_3sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x17_class1[] = {
1, 3, 4, 7, 2, 5, 6, 7,
};
 
static const static_codebook _huff_book_line_128x17_class1 = {
1, 8,
(char *)_huff_lengthlist_line_128x17_class1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x17_class2[] = {
1, 4,10,19, 3, 8,13,19, 7,12,19,19,19,19,19,19,
2, 6,11,19, 8,13,19,19, 9,11,19,19,19,19,19,19,
6, 7,13,19, 9,13,19,19,10,13,18,18,18,18,18,18,
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
};
 
static const static_codebook _huff_book_line_128x17_class2 = {
1, 64,
(char *)_huff_lengthlist_line_128x17_class2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x17_class3[] = {
3, 6,10,17, 4, 8,11,20, 8,10,11,20,20,20,20,20,
2, 4, 8,18, 4, 6, 8,17, 7, 8,10,20,20,17,20,20,
3, 5, 8,17, 3, 4, 6,17, 8, 8,10,17,17,12,16,20,
13,13,15,20,10,10,12,20,15,14,15,20,20,20,19,19,
};
 
static const static_codebook _huff_book_line_128x17_class3 = {
1, 64,
(char *)_huff_lengthlist_line_128x17_class3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x17_0sub0[] = {
5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 8, 5, 8, 5,
8, 5, 8, 5, 8, 6, 8, 6, 8, 6, 9, 6, 9, 6, 9, 6,
9, 6, 9, 7, 9, 7, 9, 7, 9, 7,10, 7,10, 8,10, 8,
10, 8,10, 8,10, 8,11, 8,11, 8,11, 8,11, 8,11, 9,
12, 9,12, 9,12, 9,12, 9,12,10,12,10,13,11,13,11,
14,12,14,13,15,14,16,14,17,15,18,16,20,20,20,20,
20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
};
 
static const static_codebook _huff_book_line_128x17_0sub0 = {
1, 128,
(char *)_huff_lengthlist_line_128x17_0sub0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x17_1sub0[] = {
2, 5, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 6, 5,
6, 5, 6, 5, 7, 6, 7, 6, 7, 6, 8, 6, 9, 7, 9, 7,
};
 
static const static_codebook _huff_book_line_128x17_1sub0 = {
1, 32,
(char *)_huff_lengthlist_line_128x17_1sub0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x17_1sub1[] = {
0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 5, 3, 5, 3, 6, 3, 6, 4, 6, 4, 7, 4, 7, 5,
8, 5, 8, 6, 9, 7, 9, 7, 9, 8,10, 9,10, 9,11,10,
11,11,11,11,11,11,12,12,12,13,12,13,12,14,12,15,
12,14,12,16,13,17,13,17,14,17,14,16,13,17,14,17,
14,17,15,17,15,15,16,17,17,17,17,17,17,17,17,17,
17,17,17,17,17,17,16,16,16,16,16,16,16,16,16,16,
};
 
static const static_codebook _huff_book_line_128x17_1sub1 = {
1, 128,
(char *)_huff_lengthlist_line_128x17_1sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x17_2sub1[] = {
0, 4, 5, 4, 6, 4, 8, 3, 9, 3, 9, 2, 9, 3, 8, 4,
9, 4,
};
 
static const static_codebook _huff_book_line_128x17_2sub1 = {
1, 18,
(char *)_huff_lengthlist_line_128x17_2sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x17_2sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 1, 5, 3, 5, 3, 5, 4, 7, 5,10, 7,10, 7,
12,10,14,10,14, 9,14,11,14,14,14,13,13,13,13,13,
13,13,
};
 
static const static_codebook _huff_book_line_128x17_2sub2 = {
1, 50,
(char *)_huff_lengthlist_line_128x17_2sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x17_2sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
};
 
static const static_codebook _huff_book_line_128x17_2sub3 = {
1, 128,
(char *)_huff_lengthlist_line_128x17_2sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x17_3sub1[] = {
0, 4, 4, 4, 4, 4, 4, 4, 5, 3, 5, 3, 5, 4, 6, 4,
6, 4,
};
 
static const static_codebook _huff_book_line_128x17_3sub1 = {
1, 18,
(char *)_huff_lengthlist_line_128x17_3sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x17_3sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 5, 3, 6, 3, 6, 4, 7, 4, 7, 4, 7, 4, 8, 4,
8, 4, 8, 4, 8, 4, 9, 4, 9, 5,10, 5,10, 7,10, 8,
10, 8,
};
 
static const static_codebook _huff_book_line_128x17_3sub2 = {
1, 50,
(char *)_huff_lengthlist_line_128x17_3sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_128x17_3sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 3, 2, 4, 3, 4, 4, 4, 5, 4, 7, 5, 8, 5,11,
6,10, 6,12, 7,12, 7,12, 8,12, 8,12,10,12,12,12,
12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
};
 
static const static_codebook _huff_book_line_128x17_3sub3 = {
1, 128,
(char *)_huff_lengthlist_line_128x17_3sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_1024x27_class1[] = {
2,10, 8,14, 7,12,11,14, 1, 5, 3, 7, 4, 9, 7,13,
};
 
static const static_codebook _huff_book_line_1024x27_class1 = {
1, 16,
(char *)_huff_lengthlist_line_1024x27_class1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_1024x27_class2[] = {
1, 4, 2, 6, 3, 7, 5, 7,
};
 
static const static_codebook _huff_book_line_1024x27_class2 = {
1, 8,
(char *)_huff_lengthlist_line_1024x27_class2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_1024x27_class3[] = {
1, 5, 7,21, 5, 8, 9,21,10, 9,12,20,20,16,20,20,
4, 8, 9,20, 6, 8, 9,20,11,11,13,20,20,15,17,20,
9,11,14,20, 8,10,15,20,11,13,15,20,20,20,20,20,
20,20,20,20,13,20,20,20,18,18,20,20,20,20,20,20,
3, 6, 8,20, 6, 7, 9,20,10, 9,12,20,20,20,20,20,
5, 7, 9,20, 6, 6, 9,20,10, 9,12,20,20,20,20,20,
8,10,13,20, 8, 9,12,20,11,10,12,20,20,20,20,20,
18,20,20,20,15,17,18,20,18,17,18,20,20,20,20,20,
7,10,12,20, 8, 9,11,20,14,13,14,20,20,20,20,20,
6, 9,12,20, 7, 8,11,20,12,11,13,20,20,20,20,20,
9,11,15,20, 8,10,14,20,12,11,14,20,20,20,20,20,
20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
11,16,18,20,15,15,17,20,20,17,20,20,20,20,20,20,
9,14,16,20,12,12,15,20,17,15,18,20,20,20,20,20,
16,19,18,20,15,16,20,20,17,17,20,20,20,20,20,20,
20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
};
 
static const static_codebook _huff_book_line_1024x27_class3 = {
1, 256,
(char *)_huff_lengthlist_line_1024x27_class3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_1024x27_class4[] = {
2, 3, 7,13, 4, 4, 7,15, 8, 6, 9,17,21,16,15,21,
2, 5, 7,11, 5, 5, 7,14, 9, 7,10,16,17,15,16,21,
4, 7,10,17, 7, 7, 9,15,11, 9,11,16,21,18,15,21,
18,21,21,21,15,17,17,19,21,19,18,20,21,21,21,20,
};
 
static const static_codebook _huff_book_line_1024x27_class4 = {
1, 64,
(char *)_huff_lengthlist_line_1024x27_class4,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_1024x27_0sub0[] = {
5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 7, 5, 7, 5, 7, 5,
8, 6, 8, 6, 8, 6, 9, 6, 9, 6,10, 6,10, 6,11, 6,
11, 7,11, 7,12, 7,12, 7,12, 7,12, 7,12, 7,12, 7,
12, 7,12, 8,13, 8,12, 8,12, 8,13, 8,13, 9,13, 9,
13, 9,13, 9,12,10,12,10,13,10,14,11,14,12,14,13,
14,13,14,14,15,16,15,15,15,14,15,17,21,22,22,21,
22,22,22,22,22,22,21,21,21,21,21,21,21,21,21,21,
};
 
static const static_codebook _huff_book_line_1024x27_0sub0 = {
1, 128,
(char *)_huff_lengthlist_line_1024x27_0sub0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_1024x27_1sub0[] = {
2, 5, 5, 4, 5, 4, 5, 4, 5, 4, 6, 5, 6, 5, 6, 5,
6, 5, 7, 5, 7, 6, 8, 6, 8, 6, 8, 6, 9, 6, 9, 6,
};
 
static const static_codebook _huff_book_line_1024x27_1sub0 = {
1, 32,
(char *)_huff_lengthlist_line_1024x27_1sub0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_1024x27_1sub1[] = {
0, 0, 0, 0, 0, 0, 0, 0, 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, 5, 8, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 4,
9, 4, 9, 4, 9, 4, 8, 4, 8, 4, 9, 5, 9, 5, 9, 5,
9, 5, 9, 6,10, 6,10, 7,10, 8,11, 9,11,11,12,13,
12,14,13,15,13,15,14,16,14,17,15,17,15,15,16,16,
15,16,16,16,15,18,16,15,17,17,19,19,19,19,19,19,
19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,
};
 
static const static_codebook _huff_book_line_1024x27_1sub1 = {
1, 128,
(char *)_huff_lengthlist_line_1024x27_1sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_1024x27_2sub0[] = {
1, 5, 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5,
6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 9, 8,10, 9,10, 9,
};
 
static const static_codebook _huff_book_line_1024x27_2sub0 = {
1, 32,
(char *)_huff_lengthlist_line_1024x27_2sub0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_1024x27_2sub1[] = {
0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 4, 3, 4, 4, 5, 4, 5, 4, 5, 5, 6, 5, 6, 5,
7, 5, 7, 6, 7, 6, 8, 7, 8, 7, 8, 7, 9, 8, 9, 9,
9, 9,10,10,10,11, 9,12, 9,12, 9,15,10,14, 9,13,
10,13,10,12,10,12,10,13,10,12,11,13,11,14,12,13,
13,14,14,13,14,15,14,16,13,13,14,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,15,
};
 
static const static_codebook _huff_book_line_1024x27_2sub1 = {
1, 128,
(char *)_huff_lengthlist_line_1024x27_2sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_1024x27_3sub1[] = {
0, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4, 4, 4, 4, 5,
5, 5,
};
 
static const static_codebook _huff_book_line_1024x27_3sub1 = {
1, 18,
(char *)_huff_lengthlist_line_1024x27_3sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_1024x27_3sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 3, 3, 4, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6,
5, 7, 5, 8, 6, 8, 6, 9, 7,10, 7,10, 8,10, 8,11,
9,11,
};
 
static const static_codebook _huff_book_line_1024x27_3sub2 = {
1, 50,
(char *)_huff_lengthlist_line_1024x27_3sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_1024x27_3sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 3, 7, 3, 8, 3,10, 3, 8, 3, 9, 3, 8, 4, 9,
4, 9, 5, 9, 6,10, 6, 9, 7,11, 7,12, 9,13,10,13,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
};
 
static const static_codebook _huff_book_line_1024x27_3sub3 = {
1, 128,
(char *)_huff_lengthlist_line_1024x27_3sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_1024x27_4sub1[] = {
0, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4,
5, 4,
};
 
static const static_codebook _huff_book_line_1024x27_4sub1 = {
1, 18,
(char *)_huff_lengthlist_line_1024x27_4sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_1024x27_4sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 2, 4, 2, 5, 3, 5, 4, 6, 6, 6, 7, 7, 8,
7, 8, 7, 8, 7, 9, 8, 9, 8, 9, 8,10, 8,11, 9,12,
9,12,
};
 
static const static_codebook _huff_book_line_1024x27_4sub2 = {
1, 50,
(char *)_huff_lengthlist_line_1024x27_4sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_1024x27_4sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 2, 5, 2, 6, 3, 6, 4, 7, 4, 7, 5, 9, 5,11,
6,11, 6,11, 7,11, 6,11, 6,11, 9,11, 8,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,
};
 
static const static_codebook _huff_book_line_1024x27_4sub3 = {
1, 128,
(char *)_huff_lengthlist_line_1024x27_4sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_2048x27_class1[] = {
2, 6, 8, 9, 7,11,13,13, 1, 3, 5, 5, 6, 6,12,10,
};
 
static const static_codebook _huff_book_line_2048x27_class1 = {
1, 16,
(char *)_huff_lengthlist_line_2048x27_class1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_2048x27_class2[] = {
1, 2, 3, 6, 4, 7, 5, 7,
};
 
static const static_codebook _huff_book_line_2048x27_class2 = {
1, 8,
(char *)_huff_lengthlist_line_2048x27_class2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_2048x27_class3[] = {
3, 3, 6,16, 5, 5, 7,16, 9, 8,11,16,16,16,16,16,
5, 5, 8,16, 5, 5, 7,16, 8, 7, 9,16,16,16,16,16,
9, 9,12,16, 6, 8,11,16, 9,10,11,16,16,16,16,16,
16,16,16,16,13,16,16,16,15,16,16,16,16,16,16,16,
5, 4, 7,16, 6, 5, 8,16, 9, 8,10,16,16,16,16,16,
5, 5, 7,15, 5, 4, 6,15, 7, 6, 8,16,16,16,16,16,
9, 9,11,15, 7, 7, 9,16, 8, 8, 9,16,16,16,16,16,
16,16,16,16,15,15,15,16,15,15,14,16,16,16,16,16,
8, 8,11,16, 8, 9,10,16,11,10,14,16,16,16,16,16,
6, 8,10,16, 6, 7,10,16, 8, 8,11,16,14,16,16,16,
10,11,14,16, 9, 9,11,16,10,10,11,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,
12,16,15,16,12,14,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
};
 
static const static_codebook _huff_book_line_2048x27_class3 = {
1, 256,
(char *)_huff_lengthlist_line_2048x27_class3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_2048x27_class4[] = {
2, 4, 7,13, 4, 5, 7,15, 8, 7,10,16,16,14,16,16,
2, 4, 7,16, 3, 4, 7,14, 8, 8,10,16,16,16,15,16,
6, 8,11,16, 7, 7, 9,16,11, 9,13,16,16,16,15,16,
16,16,16,16,14,16,16,16,16,16,16,16,16,16,16,16,
};
 
static const static_codebook _huff_book_line_2048x27_class4 = {
1, 64,
(char *)_huff_lengthlist_line_2048x27_class4,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_2048x27_0sub0[] = {
5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
6, 5, 7, 5, 7, 5, 7, 5, 8, 5, 8, 5, 8, 5, 9, 5,
9, 6,10, 6,10, 6,11, 6,11, 6,11, 6,11, 6,11, 6,
11, 6,11, 6,12, 7,11, 7,11, 7,11, 7,11, 7,10, 7,
11, 7,11, 7,12, 7,11, 8,11, 8,11, 8,11, 8,13, 8,
12, 9,11, 9,11, 9,11,10,12,10,12, 9,12,10,12,11,
14,12,16,12,12,11,14,16,17,17,17,17,17,17,17,17,
17,17,17,17,17,17,17,17,17,17,17,17,16,16,16,16,
};
 
static const static_codebook _huff_book_line_2048x27_0sub0 = {
1, 128,
(char *)_huff_lengthlist_line_2048x27_0sub0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_2048x27_1sub0[] = {
4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 6, 6, 6, 6, 6, 6, 7, 6, 7, 6, 7, 6, 7, 6,
};
 
static const static_codebook _huff_book_line_2048x27_1sub0 = {
1, 32,
(char *)_huff_lengthlist_line_2048x27_1sub0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_2048x27_1sub1[] = {
0, 0, 0, 0, 0, 0, 0, 0, 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, 5, 7, 5, 7, 4, 7, 4, 8, 4, 8, 4, 8, 4, 8, 3,
8, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 5, 9, 5, 9, 6,
9, 7, 9, 8, 9, 9, 9,10, 9,11, 9,14, 9,15,10,15,
10,15,10,15,10,15,11,15,10,14,12,14,11,14,13,14,
13,15,15,15,12,15,15,15,13,15,13,15,13,15,15,15,
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,14,
};
 
static const static_codebook _huff_book_line_2048x27_1sub1 = {
1, 128,
(char *)_huff_lengthlist_line_2048x27_1sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_2048x27_2sub0[] = {
2, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 6, 5,
6, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,
};
 
static const static_codebook _huff_book_line_2048x27_2sub0 = {
1, 32,
(char *)_huff_lengthlist_line_2048x27_2sub0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_2048x27_2sub1[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3, 4, 3, 4, 3, 4, 4, 5, 4, 5, 5, 5, 6, 6, 6, 7,
6, 8, 6, 8, 6, 9, 7,10, 7,10, 7,10, 7,12, 7,12,
7,12, 9,12,11,12,10,12,10,12,11,12,12,12,10,12,
10,12,10,12, 9,12,11,12,12,12,12,12,11,12,11,12,
12,12,12,12,12,12,12,12,10,10,12,12,12,12,12,10,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
};
 
static const static_codebook _huff_book_line_2048x27_2sub1 = {
1, 128,
(char *)_huff_lengthlist_line_2048x27_2sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_2048x27_3sub1[] = {
0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
5, 5,
};
 
static const static_codebook _huff_book_line_2048x27_3sub1 = {
1, 18,
(char *)_huff_lengthlist_line_2048x27_3sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_2048x27_3sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6,
6, 7, 6, 7, 6, 8, 6, 9, 7, 9, 7, 9, 9,11, 9,12,
10,12,
};
 
static const static_codebook _huff_book_line_2048x27_3sub2 = {
1, 50,
(char *)_huff_lengthlist_line_2048x27_3sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_2048x27_3sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 3, 6, 3, 7, 3, 7, 5, 7, 7, 7, 7, 7, 6, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
};
 
static const static_codebook _huff_book_line_2048x27_3sub3 = {
1, 128,
(char *)_huff_lengthlist_line_2048x27_3sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_2048x27_4sub1[] = {
0, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 5, 4, 5, 4,
4, 5,
};
 
static const static_codebook _huff_book_line_2048x27_4sub1 = {
1, 18,
(char *)_huff_lengthlist_line_2048x27_4sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_2048x27_4sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 3, 2, 4, 3, 4, 4, 4, 5, 5, 6, 5, 6, 5, 7,
6, 6, 6, 7, 7, 7, 8, 9, 9, 9,12,10,11,10,10,12,
10,10,
};
 
static const static_codebook _huff_book_line_2048x27_4sub2 = {
1, 50,
(char *)_huff_lengthlist_line_2048x27_4sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_2048x27_4sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 3, 6, 5, 7, 5, 7, 7, 7, 7, 7, 5, 7, 5, 7,
5, 7, 5, 7, 7, 7, 7, 7, 4, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6,
};
 
static const static_codebook _huff_book_line_2048x27_4sub3 = {
1, 128,
(char *)_huff_lengthlist_line_2048x27_4sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x4low_class0[] = {
4, 5, 6,11, 5, 5, 6,10, 7, 7, 6, 6,14,13, 9, 9,
6, 6, 6,10, 6, 6, 6, 9, 8, 7, 7, 9,14,12, 8,11,
8, 7, 7,11, 8, 8, 7,11, 9, 9, 7, 9,13,11, 9,13,
19,19,18,19,15,16,16,19,11,11,10,13,10,10, 9,15,
5, 5, 6,13, 6, 6, 6,11, 8, 7, 6, 7,14,11,10,11,
6, 6, 6,12, 7, 6, 6,11, 8, 7, 7,11,13,11, 9,11,
9, 7, 6,12, 8, 7, 6,12, 9, 8, 8,11,13,10, 7,13,
19,19,17,19,17,14,14,19,12,10, 8,12,13,10, 9,16,
7, 8, 7,12, 7, 7, 7,11, 8, 7, 7, 8,12,12,11,11,
8, 8, 7,12, 8, 7, 6,11, 8, 7, 7,10,10,11,10,11,
9, 8, 8,13, 9, 8, 7,12,10, 9, 7,11, 9, 8, 7,11,
18,18,15,18,18,16,17,18,15,11,10,18,11, 9, 9,18,
16,16,13,16,12,11,10,16,12,11, 9, 6,15,12,11,13,
16,16,14,14,13,11,12,16,12, 9, 9,13,13,10,10,12,
17,18,17,17,14,15,14,16,14,12,14,15,12,10,11,12,
18,18,18,18,18,18,18,18,18,12,13,18,16,11, 9,18,
};
 
static const static_codebook _huff_book_line_256x4low_class0 = {
1, 256,
(char *)_huff_lengthlist_line_256x4low_class0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x4low_0sub0[] = {
1, 3, 2, 3,
};
 
static const static_codebook _huff_book_line_256x4low_0sub0 = {
1, 4,
(char *)_huff_lengthlist_line_256x4low_0sub0,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x4low_0sub1[] = {
0, 0, 0, 0, 2, 3, 2, 3, 3, 3,
};
 
static const static_codebook _huff_book_line_256x4low_0sub1 = {
1, 10,
(char *)_huff_lengthlist_line_256x4low_0sub1,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x4low_0sub2[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 3, 4,
4, 4, 4, 4, 5, 5, 5, 6, 6,
};
 
static const static_codebook _huff_book_line_256x4low_0sub2 = {
1, 25,
(char *)_huff_lengthlist_line_256x4low_0sub2,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist_line_256x4low_0sub3[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 2, 4, 3, 5, 4,
5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 8, 6, 9,
7,12,11,16,13,16,12,15,13,15,12,14,12,15,15,15,
};
 
static const static_codebook _huff_book_line_256x4low_0sub3 = {
1, 64,
(char *)_huff_lengthlist_line_256x4low_0sub3,
0, 0, 0, 0, 0,
NULL,
0
};
 
/contrib/sdk/sources/libvorbis-1.3.7/lib/books/uncoupled/res_books_uncoupled.h
0,0 → 1,7757
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: static codebooks autogenerated by huff/huffbuld
 
********************************************************************/
 
#include "codebook.h"
 
static const long _vq_quantlist__16u0__p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__16u0__p1_0[] = {
1, 4, 4, 5, 7, 7, 5, 7, 8, 5, 8, 8, 8,10,10, 8,
10,11, 5, 8, 8, 8,10,10, 8,10,10, 4, 9, 9, 9,12,
11, 8,11,11, 8,12,11,10,12,14,10,13,13, 7,11,11,
10,14,12,11,14,14, 4, 9, 9, 8,11,11, 9,11,12, 7,
11,11,10,13,14,10,12,14, 8,11,12,10,14,14,10,13,
12,
};
 
static const static_codebook _16u0__p1_0 = {
4, 81,
(char *)_vq_lengthlist__16u0__p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__16u0__p1_0,
0
};
 
static const long _vq_quantlist__16u0__p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__16u0__p2_0[] = {
2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 9, 7,
8, 9, 5, 7, 7, 7, 9, 8, 7, 9, 7, 4, 7, 7, 7, 9,
9, 7, 8, 8, 6, 9, 8, 7, 8,11, 9,11,10, 6, 8, 9,
8,11, 8, 9,10,11, 4, 7, 7, 7, 8, 8, 7, 9, 9, 6,
9, 8, 9,11,10, 8, 8,11, 6, 8, 9, 9,10,11, 8,11,
8,
};
 
static const static_codebook _16u0__p2_0 = {
4, 81,
(char *)_vq_lengthlist__16u0__p2_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__16u0__p2_0,
0
};
 
static const long _vq_quantlist__16u0__p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__16u0__p3_0[] = {
1, 5, 5, 7, 7, 6, 7, 7, 8, 8, 6, 7, 8, 8, 8, 8,
9, 9,11,11, 8, 9, 9,11,11, 6, 9, 8,10,10, 8,10,
10,11,11, 8,10,10,11,11,10,11,10,13,12, 9,11,10,
13,13, 6, 8, 9,10,10, 8,10,10,11,11, 8,10,10,11,
11, 9,10,11,13,12,10,10,11,12,12, 8,11,11,14,13,
10,12,11,15,13, 9,12,11,15,14,12,14,13,16,14,12,
13,13,17,14, 8,11,11,13,14, 9,11,12,14,15,10,11,
12,13,15,11,13,13,14,16,12,13,14,14,16, 5, 9, 9,
11,11, 9,11,11,12,12, 8,11,11,12,12,11,12,12,15,
14,10,12,12,15,15, 8,11,11,13,12,10,12,12,13,13,
10,12,12,14,13,12,12,13,14,15,11,13,13,17,16, 7,
11,11,13,13,10,12,12,14,13,10,12,12,13,14,12,13,
12,15,14,11,13,13,15,14, 9,12,12,16,15,11,13,13,
17,16,10,13,13,16,16,13,14,15,15,16,13,15,14,19,
17, 9,12,12,14,16,11,13,13,15,16,10,13,13,17,16,
13,14,13,17,15,12,15,15,16,17, 5, 9, 9,11,11, 8,
11,11,13,12, 9,11,11,12,12,10,12,12,14,15,11,12,
12,14,14, 7,11,10,13,12,10,12,12,14,13,10,11,12,
13,13,11,13,13,15,16,12,12,13,15,15, 7,11,11,13,
13,10,13,13,14,14,10,12,12,13,13,11,13,13,16,15,
12,13,13,15,14, 9,12,12,15,15,10,13,13,17,16,11,
12,13,15,15,12,15,14,18,18,13,14,14,16,17, 9,12,
12,15,16,10,13,13,15,16,11,13,13,15,16,13,15,15,
17,17,13,15,14,16,15, 7,11,11,15,16,10,13,12,16,
17,10,12,13,15,17,15,16,16,18,17,13,15,15,17,18,
8,12,12,16,16,11,13,14,17,18,11,13,13,18,16,15,
17,16,17,19,14,15,15,17,16, 8,12,12,16,15,11,14,
13,18,17,11,13,14,18,17,15,16,16,18,17,13,16,16,
18,18,11,15,14,18,17,13,14,15,18, 0,12,15,15, 0,
17,17,16,17,17,18,14,16,18,18, 0,11,14,14,17, 0,
12,15,14,17,19,12,15,14,18, 0,15,18,16, 0,17,14,
18,16,18, 0, 7,11,11,16,15,10,12,12,18,16,10,13,
13,16,15,13,15,14,17,17,14,16,16,19,18, 8,12,12,
16,16,11,13,13,18,16,11,13,14,17,16,14,15,15,19,
18,15,16,16, 0,19, 8,12,12,16,17,11,13,13,17,17,
11,14,13,17,17,13,15,15,17,19,15,17,17,19, 0,11,
14,15,19,17,12,15,16,18,18,12,14,15,19,17,14,16,
17, 0,18,16,16,19,17, 0,11,14,14,18,19,12,15,14,
17,17,13,16,14,17,16,14,17,16,18,18,15,18,15, 0,
18,
};
 
static const static_codebook _16u0__p3_0 = {
4, 625,
(char *)_vq_lengthlist__16u0__p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__16u0__p3_0,
0
};
 
static const long _vq_quantlist__16u0__p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__16u0__p4_0[] = {
3, 5, 5, 8, 8, 6, 6, 6, 9, 9, 6, 6, 6, 9, 9, 9,
10, 9,11,11, 9, 9, 9,11,11, 6, 7, 7,10,10, 7, 7,
8,10,10, 7, 7, 8,10,10,10,10,10,11,12, 9,10,10,
11,12, 6, 7, 7,10,10, 7, 8, 7,10,10, 7, 8, 7,10,
10,10,11,10,12,11,10,10,10,13,10, 9,10,10,12,12,
10,11,10,14,12, 9,11,11,13,13,11,12,13,13,13,11,
12,12,15,13, 9,10,10,12,13, 9,11,10,12,13,10,10,
11,12,13,11,12,12,12,13,11,12,12,13,13, 5, 7, 7,
10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,10,12,
13,10,10,11,12,12, 6, 8, 8,11,10, 7, 8, 9,10,12,
8, 9, 9,11,11,11,10,11,11,12,10,11,11,13,12, 7,
8, 8,10,11, 8, 9, 8,11,10, 8, 9, 9,11,11,10,12,
10,13,11,10,11,11,13,13,10,11,10,14,13,10,10,11,
13,13,10,12,11,14,13,12,11,13,12,13,13,12,13,14,
14,10,11,11,13,13,10,11,10,12,13,10,12,12,12,14,
12,12,12,14,12,12,13,12,17,15, 5, 7, 7,10,10, 7,
8, 8,10,10, 7, 8, 8,11,10,10,10,11,12,12,10,11,
11,12,13, 6, 8, 8,11,10, 8, 9, 9,11,11, 7, 8, 9,
10,11,11,11,11,12,12,10,10,11,12,13, 6, 8, 8,10,
11, 8, 9, 9,11,11, 7, 9, 7,11,10,10,12,12,13,13,
11,11,10,13,11, 9,11,10,14,13,11,11,11,15,13,10,
10,11,13,13,12,13,13,14,14,12,11,12,12,13,10,11,
11,12,13,10,11,12,13,13,10,11,10,13,12,12,12,13,
14, 0,12,13,11,13,11, 8,10,10,13,13,10,11,11,14,
13,10,11,11,13,12,13,14,14,14,15,12,12,12,15,14,
9,11,10,13,12,10,10,11,13,14,11,11,11,15,12,13,
12,14,15,16,13,13,13,14,13, 9,11,11,12,12,10,12,
11,13,13,10,11,11,13,14,13,13,13,15,15,13,13,14,
17,15,11,12,12,14,14,10,11,12,13,15,12,13,13, 0,
15,13,11,14,12,16,14,16,14, 0,15,11,12,12,14,16,
11,13,12,16,15,12,13,13,14,15,12,14,12,15,13,15,
14,14,16,16, 8,10,10,13,13,10,11,10,13,14,10,11,
11,13,13,13,13,12,14,14,14,13,13,16,17, 9,10,10,
12,14,10,12,11,14,13,10,11,12,13,14,12,12,12,15,
15,13,13,13,14,14, 9,10,10,13,13,10,11,12,12,14,
10,11,10,13,13,13,13,13,14,16,13,13,13,14,14,11,
12,13,15,13,12,14,13,14,16,12,12,13,13,14,13,14,
14,17,15,13,12,17,13,16,11,12,13,14,15,12,13,14,
14,17,11,12,11,14,14,13,16,14,16, 0,14,15,11,15,
11,
};
 
static const static_codebook _16u0__p4_0 = {
4, 625,
(char *)_vq_lengthlist__16u0__p4_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__16u0__p4_0,
0
};
 
static const long _vq_quantlist__16u0__p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__16u0__p5_0[] = {
1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 7, 8, 8, 9, 9,
9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,11, 7, 8, 8,
9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
9, 9,10,10,11,11,12,12, 9, 9, 9,10,10,11,11,12,
12,
};
 
static const static_codebook _16u0__p5_0 = {
2, 81,
(char *)_vq_lengthlist__16u0__p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__16u0__p5_0,
0
};
 
static const long _vq_quantlist__16u0__p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__16u0__p6_0[] = {
1, 4, 4, 7, 7,10,10,12,12,13,13,18,17, 3, 6, 6,
9, 9,11,11,13,13,14,14,18,17, 3, 6, 6, 9, 9,11,
11,13,13,14,14,17,18, 7, 9, 9,11,11,13,13,14,14,
15,15, 0, 0, 7, 9, 9,11,11,13,13,14,14,15,16,19,
18,10,11,11,13,13,14,14,16,15,17,18, 0, 0,10,11,
11,13,13,14,14,15,15,16,18, 0, 0,11,13,13,14,14,
15,15,17,17, 0,19, 0, 0,11,13,13,14,14,14,15,16,
18, 0,19, 0, 0,13,14,14,15,15,18,17,18,18, 0,19,
0, 0,13,14,14,15,16,16,16,18,18,19, 0, 0, 0,16,
17,17, 0,17,19,19, 0,19, 0, 0, 0, 0,16,19,16,17,
18, 0,19, 0, 0, 0, 0, 0, 0,
};
 
static const static_codebook _16u0__p6_0 = {
2, 169,
(char *)_vq_lengthlist__16u0__p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__16u0__p6_0,
0
};
 
static const long _vq_quantlist__16u0__p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__16u0__p6_1[] = {
1, 4, 5, 6, 6, 4, 6, 6, 6, 6, 4, 6, 6, 6, 6, 6,
6, 6, 7, 7, 6, 6, 6, 7, 7,
};
 
static const static_codebook _16u0__p6_1 = {
2, 25,
(char *)_vq_lengthlist__16u0__p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__16u0__p6_1,
0
};
 
static const long _vq_quantlist__16u0__p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__16u0__p7_0[] = {
1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7,
};
 
static const static_codebook _16u0__p7_0 = {
4, 81,
(char *)_vq_lengthlist__16u0__p7_0,
1, -518803456, 1628680192, 2, 0,
(long *)_vq_quantlist__16u0__p7_0,
0
};
 
static const long _vq_quantlist__16u0__p7_1[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__16u0__p7_1[] = {
1, 5, 5, 6, 5, 9,10,11,11,10,10,10,10,10,10, 5,
8, 8, 8,10,10,10,10,10,10,10,10,10,10,10, 5, 8,
9, 9, 9,10,10,10,10,10,10,10,10,10,10, 5,10, 8,
10,10,10,10,10,10,10,10,10,10,10,10, 4, 8, 9,10,
10,10,10,10,10,10,10,10,10,10,10, 9,10,10,10,10,
10,10,10,10,10,10,10,10,10,10, 9,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,
};
 
static const static_codebook _16u0__p7_1 = {
2, 225,
(char *)_vq_lengthlist__16u0__p7_1,
1, -520986624, 1620377600, 4, 0,
(long *)_vq_quantlist__16u0__p7_1,
0
};
 
static const long _vq_quantlist__16u0__p7_2[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__16u0__p7_2[] = {
1, 6, 6, 7, 8, 7, 7,10, 9,10, 9,11,10, 9,11,10,
9, 9, 9, 9,10, 6, 8, 7, 9, 9, 8, 8,10,10, 9,11,
11,12,12,10, 9,11, 9,12,10, 9, 6, 9, 8, 9,12, 8,
8,11, 9,11,11,12,11,12,12,10,11,11,10,10,11, 7,
10, 9, 9, 9, 9, 9,10, 9,10, 9,10,10,12,10,10,10,
11,12,10,10, 7, 9, 9, 9,10, 9, 9,10,10, 9, 9, 9,
11,11,10,10,10,10, 9, 9,12, 7, 9,10, 9,11, 9,10,
9,10,11,11,11,10,11,12, 9,12,11,10,10,10, 7, 9,
9, 9, 9,10,12,10, 9,11,12,10,11,12,12,11, 9,10,
11,10,11, 7, 9,10,10,11,10, 9,10,11,11,11,10,12,
12,12,11,11,10,11,11,12, 8, 9,10,12,11,10,10,12,
12,12,12,12,10,11,11, 9,11,10,12,11,11, 8, 9,10,
10,11,12,11,11,10,10,10,12,12,12, 9,10,12,12,12,
12,12, 8,10,11,10,10,12, 9,11,12,12,11,12,12,12,
12,10,12,10,10,10,10, 8,12,11,11,11,10,10,11,12,
12,12,12,11,12,12,12,11,11,11,12,10, 9,10,10,12,
10,12,10,12,12,10,10,10,11,12,12,12,11,12,12,12,
11,10,11,12,12,12,11,12,12,11,12,12,11,12,12,12,
12,11,12,12,10,10,10,10,11,11,12,11,12,12,12,12,
12,12,12,11,12,11,10,11,11,12,11,11, 9,10,10,10,
12,10,10,11, 9,11,12,11,12,11,12,12,10,11,10,12,
9, 9, 9,12,11,10,11,10,12,10,12,10,12,12,12,11,
11,11,11,11,10, 9,10,10,11,10,11,11,12,11,10,11,
12,12,12,11,11, 9,12,10,12, 9,10,12,10,10,11,10,
11,11,12,11,10,11,10,11,11,11,11,12,11,11,10, 9,
10,10,10, 9,11,11,10, 9,12,10,11,12,11,12,12,11,
12,11,12,11,10,11,10,12,11,12,11,12,11,12,10,11,
10,10,12,11,10,11,11,11,10,
};
 
static const static_codebook _16u0__p7_2 = {
2, 441,
(char *)_vq_lengthlist__16u0__p7_2,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__16u0__p7_2,
0
};
 
static const char _huff_lengthlist__16u0__single[] = {
3, 5, 8, 7,14, 8, 9,19, 5, 2, 5, 5, 9, 6, 9,19,
8, 4, 5, 7, 8, 9,13,19, 7, 4, 6, 5, 9, 6, 9,19,
12, 8, 7, 9,10,11,13,19, 8, 5, 8, 6, 9, 6, 7,19,
8, 8,10, 7, 7, 4, 5,19,12,17,19,15,18,13,11,18,
};
 
static const static_codebook _huff_book__16u0__single = {
2, 64,
(char *)_huff_lengthlist__16u0__single,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__16u1__long[] = {
3, 6,10, 8,12, 8,14, 8,14,19, 5, 3, 5, 5, 7, 6,
11, 7,16,19, 7, 5, 6, 7, 7, 9,11,12,19,19, 6, 4,
7, 5, 7, 6,10, 7,18,18, 8, 6, 7, 7, 7, 7, 8, 9,
18,18, 7, 5, 8, 5, 7, 5, 8, 6,18,18,12, 9,10, 9,
9, 9, 8, 9,18,18, 8, 7,10, 6, 8, 5, 6, 4,11,18,
11,15,16,12,11, 8, 8, 6, 9,18,14,18,18,18,16,16,
16,13,16,18,
};
 
static const static_codebook _huff_book__16u1__long = {
2, 100,
(char *)_huff_lengthlist__16u1__long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__16u1__p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__16u1__p1_0[] = {
1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 7, 7,10,10, 7,
9,10, 5, 7, 8, 7,10, 9, 7,10,10, 5, 8, 8, 8,10,
10, 8,10,10, 7,10,10,10,11,12,10,12,13, 7,10,10,
9,13,11,10,12,13, 5, 8, 8, 8,10,10, 8,10,10, 7,
10,10,10,12,12, 9,11,12, 7,10,11,10,12,12,10,13,
11,
};
 
static const static_codebook _16u1__p1_0 = {
4, 81,
(char *)_vq_lengthlist__16u1__p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__16u1__p1_0,
0
};
 
static const long _vq_quantlist__16u1__p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__16u1__p2_0[] = {
3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 7, 8, 6,
7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 7, 5, 6, 6, 6, 8,
8, 6, 8, 8, 6, 8, 8, 7, 7,10, 8, 9, 9, 6, 8, 8,
7, 9, 8, 8, 9,10, 5, 6, 6, 6, 8, 8, 7, 8, 8, 6,
8, 8, 8,10, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 7,10,
8,
};
 
static const static_codebook _16u1__p2_0 = {
4, 81,
(char *)_vq_lengthlist__16u1__p2_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__16u1__p2_0,
0
};
 
static const long _vq_quantlist__16u1__p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__16u1__p3_0[] = {
1, 5, 5, 8, 8, 6, 7, 7, 9, 9, 5, 7, 7, 9, 9, 9,
10, 9,11,11, 9, 9,10,11,11, 6, 8, 8,10,10, 8, 9,
10,11,11, 8, 9,10,11,11,10,11,11,12,13,10,11,11,
13,13, 6, 8, 8,10,10, 8,10, 9,11,11, 8,10, 9,11,
11,10,11,11,13,13,10,11,11,13,12, 9,11,11,14,13,
10,12,12,15,14,10,12,11,14,13,12,13,13,15,15,12,
13,13,16,14, 9,11,11,13,14,10,11,12,14,14,10,12,
12,14,15,12,13,13,14,15,12,13,14,15,16, 5, 8, 8,
11,11, 8,10,10,12,12, 8,10,10,12,12,11,12,12,14,
14,11,12,12,14,14, 8,10,10,12,12, 9,11,12,12,13,
10,12,12,13,13,12,12,13,14,15,11,13,13,15,15, 7,
10,10,12,12, 9,12,11,13,12,10,11,12,13,13,12,13,
12,15,14,11,12,13,15,15,10,12,12,15,14,11,13,13,
16,15,11,13,13,16,15,14,13,14,15,16,13,15,15,17,
17,10,12,12,14,15,11,12,12,15,15,11,13,13,15,16,
13,15,13,16,15,13,15,15,16,17, 5, 8, 8,11,11, 8,
10,10,12,12, 8,10,10,12,12,11,12,12,14,14,11,12,
12,14,14, 7,10,10,12,12,10,12,12,14,13, 9,11,12,
12,13,12,13,13,15,15,12,12,13,13,15, 7,10,10,12,
13,10,11,12,13,13,10,12,11,13,13,11,13,13,15,15,
12,13,12,15,14, 9,12,12,15,14,11,13,13,15,15,11,
12,13,15,15,13,14,14,17,19,13,13,14,16,16,10,12,
12,14,15,11,13,13,15,16,11,13,12,16,15,13,15,15,
17,18,14,15,13,16,15, 8,11,11,15,14,10,12,12,16,
15,10,12,12,16,16,14,15,15,18,17,13,14,15,16,18,
9,12,12,15,15,11,12,14,16,17,11,13,13,16,15,15,
15,15,17,18,14,15,16,17,17, 9,12,12,15,15,11,14,
13,16,16,11,13,13,16,16,15,16,15,17,18,14,16,15,
17,16,12,14,14,17,16,12,14,15,18,17,13,15,15,17,
17,15,15,18,16,20,15,16,17,18,18,11,14,14,16,17,
13,15,14,18,17,13,15,15,17,17,15,17,15,18,17,15,
17,16,19,18, 8,11,11,14,15,10,12,12,15,15,10,12,
12,16,16,13,14,14,17,16,14,15,15,17,17, 9,12,12,
15,16,11,13,13,16,16,11,12,13,16,16,14,16,15,20,
17,14,16,16,17,17, 9,12,12,15,16,11,13,13,16,17,
11,13,13,17,16,14,15,15,17,18,15,15,15,18,18,11,
14,14,17,16,13,15,15,17,17,13,14,14,18,17,15,16,
16,18,19,15,15,17,17,19,11,14,14,16,17,13,15,14,
17,19,13,15,14,18,17,15,17,16,18,18,15,17,15,18,
16,
};
 
static const static_codebook _16u1__p3_0 = {
4, 625,
(char *)_vq_lengthlist__16u1__p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__16u1__p3_0,
0
};
 
static const long _vq_quantlist__16u1__p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__16u1__p4_0[] = {
4, 5, 5, 8, 8, 6, 6, 7, 9, 9, 6, 6, 6, 9, 9, 9,
10, 9,11,11, 9, 9,10,11,11, 6, 7, 7,10, 9, 7, 7,
8, 9,10, 7, 7, 8,10,10,10,10,10,10,12, 9, 9,10,
11,12, 6, 7, 7, 9, 9, 7, 8, 7,10,10, 7, 8, 7,10,
10, 9,10, 9,12,11,10,10, 9,12,10, 9,10,10,12,11,
10,10,10,12,12, 9,10,10,12,12,12,11,12,13,13,11,
11,12,12,13, 9,10,10,11,12, 9,10,10,12,12,10,10,
10,12,12,11,12,11,14,13,11,12,12,14,13, 5, 7, 7,
10,10, 7, 8, 8,10,10, 7, 8, 7,10,10,10,10,10,12,
12,10,10,10,12,12, 6, 8, 7,10,10, 7, 7, 9,10,11,
8, 9, 9,11,10,10,10,11,11,13,10,10,11,12,13, 6,
8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,10,11,10,11,
10,13,11,10,11,10,12,12,10,11,10,12,11,10,10,10,
12,13,10,11,11,13,12,11,11,13,11,14,12,12,13,14,
14, 9,10,10,12,13,10,11,10,13,12,10,11,11,12,13,
11,12,11,14,12,12,13,13,15,14, 5, 7, 7,10,10, 7,
7, 8,10,10, 7, 8, 8,10,10,10,10,10,11,12,10,10,
10,12,12, 7, 8, 8,10,10, 8, 9, 8,11,10, 7, 8, 9,
10,11,10,11,11,12,12,10,10,11,11,13, 7, 7, 8,10,
10, 8, 8, 9,10,11, 7, 9, 7,11,10,10,11,11,13,12,
11,11,10,13,11, 9,10,10,12,12,10,11,11,13,12,10,
10,11,12,12,12,13,13,14,14,11,11,12,12,14,10,10,
11,12,12,10,11,11,12,13,10,10,10,13,12,12,13,13,
15,14,12,13,10,14,11, 8,10,10,12,12,10,11,10,13,
13, 9,10,10,12,12,12,13,13,15,14,11,12,12,13,13,
9,10,10,13,12,10,10,11,13,13,10,11,10,13,12,12,
12,13,14,15,12,13,12,15,13, 9,10,10,12,13,10,11,
10,13,12,10,10,11,12,13,12,14,12,15,13,12,12,13,
14,15,11,12,11,14,13,11,11,12,14,15,12,13,12,15,
14,13,11,15,11,16,13,14,14,16,15,11,12,12,14,14,
11,12,11,14,13,12,12,13,14,15,13,14,12,16,12,14,
14,14,15,15, 8,10,10,12,12, 9,10,10,12,12,10,10,
11,13,13,11,12,12,13,13,12,13,13,14,15, 9,10,10,
13,12,10,11,11,13,12,10,10,11,13,13,12,13,12,15,
14,12,12,13,13,16, 9, 9,10,12,13,10,10,11,12,13,
10,11,10,13,13,12,12,13,13,15,13,13,12,15,13,11,
12,12,14,14,12,13,12,15,14,11,11,12,13,14,14,14,
14,16,15,13,12,15,12,16,11,11,12,13,14,12,13,13,
14,15,10,12,11,14,13,14,15,14,16,16,13,14,11,15,
11,
};
 
static const static_codebook _16u1__p4_0 = {
4, 625,
(char *)_vq_lengthlist__16u1__p4_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__16u1__p4_0,
0
};
 
static const long _vq_quantlist__16u1__p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__16u1__p5_0[] = {
1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
10,10, 4, 5, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9,
9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8,
10, 9,11,11,12,11, 7, 8, 8, 9, 9,11,11,12,12, 9,
10,10,11,11,12,12,13,12, 9,10,10,11,11,12,12,12,
13,
};
 
static const static_codebook _16u1__p5_0 = {
2, 81,
(char *)_vq_lengthlist__16u1__p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__16u1__p5_0,
0
};
 
static const long _vq_quantlist__16u1__p6_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__16u1__p6_0[] = {
3, 4, 4, 6, 6, 7, 7, 9, 9, 4, 4, 4, 6, 6, 8, 8,
9, 9, 4, 4, 4, 6, 6, 7, 7, 9, 9, 6, 6, 6, 7, 7,
8, 8,10, 9, 6, 6, 6, 7, 7, 8, 8, 9,10, 7, 8, 7,
8, 8, 9, 9,10,10, 7, 8, 8, 8, 8, 9, 9,10,10, 9,
9, 9,10,10,10,10,11,11, 9, 9, 9,10,10,10,10,11,
11,
};
 
static const static_codebook _16u1__p6_0 = {
2, 81,
(char *)_vq_lengthlist__16u1__p6_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__16u1__p6_0,
0
};
 
static const long _vq_quantlist__16u1__p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__16u1__p7_0[] = {
1, 4, 4, 4, 8, 8, 4, 8, 8, 5,11, 9, 8,12,11, 8,
12,11, 5,10,11, 8,11,12, 8,11,12, 4,11,11,11,14,
13,10,13,13, 8,14,13,12,14,16,12,16,15, 8,14,14,
13,16,14,12,15,16, 4,11,11,10,14,13,11,14,14, 8,
15,14,12,15,15,12,14,16, 8,14,14,11,16,15,12,15,
13,
};
 
static const static_codebook _16u1__p7_0 = {
4, 81,
(char *)_vq_lengthlist__16u1__p7_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__16u1__p7_0,
0
};
 
static const long _vq_quantlist__16u1__p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__16u1__p7_1[] = {
2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 6, 5, 7, 7,
8, 8, 8, 8, 8, 8, 4, 5, 6, 7, 7, 8, 8, 8, 8, 8,
8, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8,
8, 8, 8, 9, 9, 9, 9, 7, 8, 8, 8, 8, 9, 9, 9,10,
9,10, 7, 8, 8, 8, 8, 9, 9, 9, 9,10, 9, 8, 8, 8,
9, 9,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9,10,
10,10,10, 8, 8, 8, 9, 9, 9,10,10,10,10,10, 8, 8,
8, 9, 9,10,10,10,10,10,10,
};
 
static const static_codebook _16u1__p7_1 = {
2, 121,
(char *)_vq_lengthlist__16u1__p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__16u1__p7_1,
0
};
 
static const long _vq_quantlist__16u1__p8_0[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__16u1__p8_0[] = {
1, 4, 4, 5, 5, 8, 8,10,10,12,12, 4, 7, 7, 8, 8,
9, 9,12,11,14,13, 4, 7, 7, 7, 8, 9,10,11,11,13,
12, 5, 8, 8, 9, 9,11,11,12,13,15,14, 5, 7, 8, 9,
9,11,11,13,13,17,15, 8, 9,10,11,11,12,13,17,14,
17,16, 8,10, 9,11,11,12,12,13,15,15,17,10,11,11,
12,13,14,15,15,16,16,17, 9,11,11,12,12,14,15,17,
15,15,16,11,14,12,14,15,16,15,16,16,16,15,11,13,
13,14,14,15,15,16,16,15,16,
};
 
static const static_codebook _16u1__p8_0 = {
2, 121,
(char *)_vq_lengthlist__16u1__p8_0,
1, -524582912, 1618345984, 4, 0,
(long *)_vq_quantlist__16u1__p8_0,
0
};
 
static const long _vq_quantlist__16u1__p8_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__16u1__p8_1[] = {
2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 4, 6, 6, 7, 7,
8, 7, 8, 8, 8, 8, 4, 6, 6, 7, 7, 7, 7, 8, 8, 8,
8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 6, 7, 7, 7,
7, 8, 8, 8, 8, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9,
9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8,
8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9,
9, 9, 9, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 8, 8,
8, 9, 9, 9, 9, 9, 9, 9, 9,
};
 
static const static_codebook _16u1__p8_1 = {
2, 121,
(char *)_vq_lengthlist__16u1__p8_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__16u1__p8_1,
0
};
 
static const long _vq_quantlist__16u1__p9_0[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__16u1__p9_0[] = {
1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8,
};
 
static const static_codebook _16u1__p9_0 = {
2, 225,
(char *)_vq_lengthlist__16u1__p9_0,
1, -514071552, 1627381760, 4, 0,
(long *)_vq_quantlist__16u1__p9_0,
0
};
 
static const long _vq_quantlist__16u1__p9_1[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__16u1__p9_1[] = {
1, 6, 5, 9, 9,10,10, 6, 7, 9, 9,10,10,10,10, 5,
10, 8,10, 8,10,10, 8, 8,10, 9,10,10,10,10, 5, 8,
9,10,10,10,10, 8,10,10,10,10,10,10,10, 9,10,10,
10,10,10,10, 9, 9,10,10,10,10,10,10, 9, 9, 8, 9,
10,10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10, 8,10,10,10,10,
10,10,10,10,10,10,10,10,10, 6, 8, 8,10,10,10, 8,
10,10,10,10,10,10,10,10, 5, 8, 8,10,10,10, 9, 9,
10,10,10,10,10,10,10,10, 9,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9,
};
 
static const static_codebook _16u1__p9_1 = {
2, 225,
(char *)_vq_lengthlist__16u1__p9_1,
1, -522338304, 1620115456, 4, 0,
(long *)_vq_quantlist__16u1__p9_1,
0
};
 
static const long _vq_quantlist__16u1__p9_2[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__16u1__p9_2[] = {
1, 6, 6, 7, 8, 8,11,10, 9, 9,11, 9,10, 9,11,11,
9, 6, 7, 6,11, 8,11, 9,10,10,11, 9,11,10,10,10,
11, 9, 5, 7, 7, 8, 8,10,11, 8, 8,11, 9, 9,10,11,
9,10,11, 8, 9, 6, 8, 8, 9, 9,10,10,11,11,11, 9,
11,10, 9,11, 8, 8, 8, 9, 8, 9,10,11, 9, 9,11,11,
10, 9, 9,11,10, 8,11, 8, 9, 8,11, 9,10, 9,10,11,
11,10,10, 9,10,10, 8, 8, 9,10,10,10, 9,11, 9,10,
11,11,11,11,10, 9,11, 9, 9,11,11,10, 8,11,11,11,
9,10,10,11,10,11,11, 9,11,10, 9,11,10,10,10,10,
9,11,10,11,10, 9, 9,10,11, 9, 8,10,11,11,10,10,
11, 9,11,10,11,11,10,11, 9, 9, 8,10, 8, 9,11, 9,
8,10,10, 9,11,10,11,10,11, 9,11, 8,10,11,11,11,
11,10,10,11,11,11,11,10,11,11,10, 9, 8,10,10, 9,
11,10,11,11,11, 9, 9, 9,11,11,11,10,10, 9, 9,10,
9,11,11,11,11, 8,10,11,10,11,11,10,11,11, 9, 9,
9,10, 9,11, 9,11,11,11,11,11,10,11,11,10,11,10,
11,11, 9,11,10,11,10, 9,10, 9,10,10,11,11,11,11,
9,10, 9,10,11,11,10,11,11,11,11,11,11,10,11,11,
10,
};
 
static const static_codebook _16u1__p9_2 = {
2, 289,
(char *)_vq_lengthlist__16u1__p9_2,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__16u1__p9_2,
0
};
 
static const char _huff_lengthlist__16u1__short[] = {
5, 7,10, 9,11,10,15,11,13,16, 6, 4, 6, 6, 7, 7,
10, 9,12,16,10, 6, 5, 6, 6, 7,10,11,16,16, 9, 6,
7, 6, 7, 7,10, 8,14,16,11, 6, 5, 4, 5, 6, 8, 9,
15,16, 9, 6, 6, 5, 6, 6, 9, 8,14,16,12, 7, 6, 6,
5, 6, 6, 7,13,16, 8, 6, 7, 6, 5, 5, 4, 4,11,16,
9, 8, 9, 9, 7, 7, 6, 5,13,16,14,14,16,15,16,15,
16,16,16,16,
};
 
static const static_codebook _huff_book__16u1__short = {
2, 100,
(char *)_huff_lengthlist__16u1__short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__16u2__long[] = {
5, 8,10,10,10,11,11,12,14,18, 7, 5, 5, 6, 8, 9,
10,12,14,17, 9, 5, 4, 5, 6, 8,10,11,13,19, 9, 5,
4, 4, 5, 6, 9,10,12,17, 8, 6, 5, 4, 4, 5, 7,10,
11,15, 8, 7, 7, 6, 5, 5, 6, 9,11,14, 8, 9, 8, 7,
6, 5, 6, 7,11,14, 9,11,11, 9, 7, 6, 6, 6, 9,14,
11,14,15,13, 9, 8, 7, 7, 9,14,13,15,19,17,12,11,
10, 9,10,14,
};
 
static const static_codebook _huff_book__16u2__long = {
2, 100,
(char *)_huff_lengthlist__16u2__long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__16u2_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__16u2_p1_0[] = {
1, 5, 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, 8, 9,
9, 7, 9, 9, 7, 9, 9, 9,10,11, 9,10,10, 7, 9, 9,
9,10, 9, 9,10,11, 5, 8, 7, 7, 9, 9, 8, 9, 9, 7,
9, 9, 9,11,10, 9, 9,10, 7, 9, 9, 9,10,10, 9,11,
10,
};
 
static const static_codebook _16u2_p1_0 = {
4, 81,
(char *)_vq_lengthlist__16u2_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__16u2_p1_0,
0
};
 
static const long _vq_quantlist__16u2_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__16u2_p2_0[] = {
3, 5, 5, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 9,
10, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
8,10,10, 7, 8, 8,10,10,10,10,10,12,12, 9,10,10,
11,12, 5, 7, 7, 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,
10, 9,10,10,12,11,10,10,10,12,12, 9,10,10,12,12,
10,10,10,12,12, 9,10,10,12,12,12,12,12,14,14,11,
12,12,13,14, 9,10,10,12,12, 9,10,10,12,12,10,10,
10,12,12,11,12,12,14,13,12,12,12,14,13, 5, 7, 7,
9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,
12,10,10,10,12,12, 7, 8, 8,11,10, 8, 9, 9,11,11,
8, 9, 9,11,11,10,11,11,12,13,10,11,11,12,13, 7,
8, 8,10,10, 8, 9, 8,11,10, 8, 9, 9,11,11,10,11,
10,13,12,10,11,11,13,13,10,11,10,13,12,10,11,11,
13,13,10,11,11,13,13,12,12,13,13,14,12,13,13,14,
14, 9,10,10,12,12,10,11,10,13,12,10,11,11,13,13,
12,13,12,14,13,12,13,13,14,15, 5, 7, 7, 9,10, 7,
8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,12,10,10,
11,12,12, 7, 8, 8,10,10, 8, 9, 9,11,11, 8, 8, 9,
10,11,10,11,11,13,13,10,10,11,12,13, 7, 8, 8,10,
10, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,11,13,12,
10,11,11,13,12, 9,10,10,12,12,10,11,11,13,13,10,
10,11,12,13,12,13,13,15,14,12,12,13,12,14, 9,10,
11,12,13,10,11,11,13,13,10,11,11,13,13,12,13,13,
14,14,12,13,12,14,13, 8,10,10,12,12, 9,11,10,13,
12, 9,10,10,12,13,12,13,13,14,14,12,12,12,14,14,
9,10,10,13,13,10,11,11,13,13,10,11,11,13,13,13,
13,13,14,15,12,13,13,14,15, 9,10,10,12,13,10,11,
10,13,13,10,11,11,12,13,12,13,12,15,14,12,13,13,
14,15,11,12,12,15,14,12,12,13,14,15,12,13,13,15,
14,13,13,15,14,16,14,14,14,16,15,11,12,12,14,14,
11,12,12,14,14,12,13,13,14,15,13,14,13,15,13,14,
14,14,15,16, 8, 9,10,12,12, 9,10,10,13,12, 9,10,
11,12,13,12,12,12,14,14,12,13,13,14,14, 9,10,10,
13,12,10,11,11,13,13,10,10,11,13,13,12,13,13,15,
14,12,12,13,14,15, 9,10,10,13,13,10,11,11,13,13,
10,11,11,13,13,12,13,13,14,14,13,13,13,15,15,11,
12,12,14,13,12,13,13,15,14,11,12,12,14,14,14,14,
14,16,15,13,13,14,13,16,11,12,12,14,14,12,13,13,
14,15,12,13,12,14,14,14,14,14,16,16,14,15,13,16,
14,
};
 
static const static_codebook _16u2_p2_0 = {
4, 625,
(char *)_vq_lengthlist__16u2_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__16u2_p2_0,
0
};
 
static const long _vq_quantlist__16u2_p3_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__16u2_p3_0[] = {
2, 4, 4, 6, 6, 7, 7, 9, 9, 4, 5, 5, 6, 6, 8, 7,
9, 9, 4, 5, 5, 6, 6, 7, 8, 9, 9, 6, 6, 6, 7, 7,
8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 8, 7,
8, 8, 9, 9,11,10, 7, 7, 8, 8, 8, 9, 9,10,11, 9,
9, 9,10,10,11,10,11,11, 9, 9, 9,10,10,10,11,11,
11,
};
 
static const static_codebook _16u2_p3_0 = {
2, 81,
(char *)_vq_lengthlist__16u2_p3_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__16u2_p3_0,
0
};
 
static const long _vq_quantlist__16u2_p4_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__16u2_p4_0[] = {
2, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,11,
11, 5, 5, 5, 7, 6, 8, 7, 9, 9, 9, 9,10,10,11,11,
12,12, 5, 5, 5, 6, 6, 7, 8, 8, 9, 9, 9,10,10,11,
11,12,12, 6, 7, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
11,11,12,12, 6, 6, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,
10,11,11,12,12, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,
11,11,11,11,12,12, 7, 7, 8, 8, 8, 9, 9, 9, 9,10,
10,11,11,11,11,12,12, 8, 9, 9, 9, 9, 9, 9,10,10,
10,10,11,11,12,12,12,12, 8, 9, 9, 9, 9, 9, 9,10,
10,10,10,11,11,12,12,12,12, 9, 9, 9, 9, 9,10,10,
10,10,10,11,11,11,12,12,13,13, 9, 9, 9, 9, 9,10,
10,10,10,11,10,11,11,12,12,13,13,10,10,10,10,10,
11,11,11,11,11,11,11,12,12,12,13,13,10,10,10,10,
10,11,11,11,11,11,11,12,11,12,12,13,13,11,11,11,
11,11,11,11,12,12,12,12,12,12,13,13,13,13,11,11,
11,11,11,11,11,12,12,12,12,13,12,13,13,13,13,11,
12,12,12,12,12,12,12,12,13,13,13,13,13,13,14,14,
11,12,12,12,12,12,12,12,13,13,13,13,13,13,13,14,
14,
};
 
static const static_codebook _16u2_p4_0 = {
2, 289,
(char *)_vq_lengthlist__16u2_p4_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__16u2_p4_0,
0
};
 
static const long _vq_quantlist__16u2_p5_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__16u2_p5_0[] = {
1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 7, 9, 9, 7,
9,10, 5, 8, 8, 7,10, 9, 7,10, 9, 5, 8, 8, 8,11,
10, 8,10,10, 7,10,10, 9, 9,12,10,12,12, 7,10,10,
9,12,10,10,11,12, 5, 8, 8, 8,10,10, 8,11,11, 7,
11,10,10,12,11, 9,10,12, 7,10,11,10,12,12, 9,12,
9,
};
 
static const static_codebook _16u2_p5_0 = {
4, 81,
(char *)_vq_lengthlist__16u2_p5_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__16u2_p5_0,
0
};
 
static const long _vq_quantlist__16u2_p5_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__16u2_p5_1[] = {
2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 5, 6, 6, 7, 7,
7, 7, 8, 8, 8, 8, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8,
8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7,
7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8,
8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8,
8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8,
8, 8, 8, 8, 8, 9, 9, 9, 9,
};
 
static const static_codebook _16u2_p5_1 = {
2, 121,
(char *)_vq_lengthlist__16u2_p5_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__16u2_p5_1,
0
};
 
static const long _vq_quantlist__16u2_p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__16u2_p6_0[] = {
1, 5, 4, 7, 7, 8, 8, 8, 8,10,10,11,11, 4, 6, 6,
7, 7, 9, 9, 9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9,
9, 9, 9,10,10,11,11, 7, 8, 8, 9, 9, 9, 9,10,10,
11,11,12,12, 7, 7, 7, 9, 8,10, 9,10,10,11,11,12,
12, 8, 9, 9, 9,10,10,10,11,11,12,12,13,13, 8, 9,
9,10, 9,10,10,11,11,12,12,13,13, 8, 9, 9,10,10,
11,11,11,11,12,12,13,13, 8, 9, 9,10,10,11,11,12,
11,12,12,13,13,10,10,10,11,11,12,12,12,12,13,13,
14,14,10,10,10,11,11,12,12,12,12,13,13,14,14,11,
11,11,12,12,13,13,13,13,14,14,14,14,11,11,11,12,
12,13,13,13,13,14,14,14,14,
};
 
static const static_codebook _16u2_p6_0 = {
2, 169,
(char *)_vq_lengthlist__16u2_p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__16u2_p6_0,
0
};
 
static const long _vq_quantlist__16u2_p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__16u2_p6_1[] = {
2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _16u2_p6_1 = {
2, 25,
(char *)_vq_lengthlist__16u2_p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__16u2_p6_1,
0
};
 
static const long _vq_quantlist__16u2_p7_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__16u2_p7_0[] = {
1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 6, 6,
8, 8, 9, 9, 9, 9,10,10,11,10, 4, 6, 6, 8, 8, 9,
9, 9, 9,10,10,11,11, 7, 8, 8,10, 9,10,10,10,10,
11,11,12,12, 7, 8, 8,10,10,10,10,10,10,11,11,12,
12, 8, 9, 9,10,10,11,11,11,11,12,12,13,13, 8, 9,
9,10,10,11,11,11,11,12,12,13,13, 8, 9, 9,11,10,
11,11,12,12,13,13,14,13, 8, 9, 9,10,10,11,11,12,
12,13,13,13,13, 9,10,10,11,11,12,12,13,13,13,13,
14,14, 9,10,10,11,11,12,12,13,13,13,13,14,14,10,
11,11,12,12,13,13,14,13,14,14,15,14,10,11,11,12,
12,13,13,14,13,14,14,15,14,
};
 
static const static_codebook _16u2_p7_0 = {
2, 169,
(char *)_vq_lengthlist__16u2_p7_0,
1, -523206656, 1618345984, 4, 0,
(long *)_vq_quantlist__16u2_p7_0,
0
};
 
static const long _vq_quantlist__16u2_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__16u2_p7_1[] = {
2, 5, 5, 7, 7, 7, 7, 7, 7, 8, 8, 5, 6, 6, 7, 7,
7, 7, 8, 8, 8, 8, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8,
8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7,
7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8,
8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _16u2_p7_1 = {
2, 121,
(char *)_vq_lengthlist__16u2_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__16u2_p7_1,
0
};
 
static const long _vq_quantlist__16u2_p8_0[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__16u2_p8_0[] = {
1, 4, 4, 7, 7, 8, 8, 7, 7, 9, 8,10, 9,11,11, 4,
7, 6, 9, 8, 9, 9, 9, 9,10, 9,11, 9,12, 9, 4, 6,
7, 8, 8, 9, 9, 9, 9,10,10,10,11,11,12, 7, 9, 8,
10,10,11,11,10,10,11,11,12,12,13,12, 7, 8, 8,10,
10,10,11,10,10,11,11,11,12,12,13, 8, 9, 9,11,11,
11,11,11,11,12,12,13,13,13,13, 8, 9, 9,11,11,11,
11,11,11,12,12,13,13,13,14, 8, 9, 9,10,10,11,11,
12,11,13,13,14,13,14,14, 8, 9, 9,10,10,11,11,12,
12,12,12,13,13,14,14, 9,10,10,11,11,12,12,13,12,
13,13,14,14,15,15, 9,10,10,11,11,12,12,12,13,13,
13,14,14,14,15,10,11,11,12,12,13,13,14,13,14,14,
15,14,15,15,10,11,11,12,12,13,12,13,14,14,14,14,
14,15,15,11,12,12,13,13,13,13,14,14,15,14,15,15,
16,16,11,12,12,13,13,13,13,14,14,14,15,15,15,16,
16,
};
 
static const static_codebook _16u2_p8_0 = {
2, 225,
(char *)_vq_lengthlist__16u2_p8_0,
1, -520986624, 1620377600, 4, 0,
(long *)_vq_quantlist__16u2_p8_0,
0
};
 
static const long _vq_quantlist__16u2_p8_1[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__16u2_p8_1[] = {
3, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 5, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9,10,10,10,10, 5, 6, 6, 7, 7, 8,
8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7,
7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,
10,10,10,10, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9,
9,10, 9,10,10,10, 9,10, 9, 8, 8, 8, 9, 8, 9, 9,
9, 9,10, 9,10,10,10,10,10,10,10,10,10,10, 8, 8,
8, 8, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,
10,10,10, 8, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,
10,10,10,10,10,10,10,10, 8, 9, 9, 9, 9, 9, 9, 9,
10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
10,10, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,
10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10, 9, 9, 9,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10, 9, 9,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10, 9,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10, 9,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10, 9,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,
};
 
static const static_codebook _16u2_p8_1 = {
2, 441,
(char *)_vq_lengthlist__16u2_p8_1,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__16u2_p8_1,
0
};
 
static const long _vq_quantlist__16u2_p9_0[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__16u2_p9_0[] = {
1, 5, 3, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5,
7, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 7,
8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,
};
 
static const static_codebook _16u2_p9_0 = {
2, 225,
(char *)_vq_lengthlist__16u2_p9_0,
1, -510036736, 1631393792, 4, 0,
(long *)_vq_quantlist__16u2_p9_0,
0
};
 
static const long _vq_quantlist__16u2_p9_1[] = {
9,
8,
10,
7,
11,
6,
12,
5,
13,
4,
14,
3,
15,
2,
16,
1,
17,
0,
18,
};
 
static const char _vq_lengthlist__16u2_p9_1[] = {
1, 4, 4, 7, 7, 7, 7, 7, 6, 9, 7,10, 8,12,12,13,
13,14,14, 4, 7, 7, 9, 9, 9, 8, 9, 8,10, 9,11, 9,
14, 9,14,10,13,11, 4, 7, 7, 9, 9, 9, 9, 8, 9,10,
10,11,11,12,13,12,13,14,15, 7, 9, 9,10,11,10,10,
10,10,11,12,13,13,13,14,17,14,15,16, 7, 9, 9,10,
10,10,10,10,10,11,12,13,13,14,14,15,15,18,18, 8,
9, 9,11,10,11,11,11,12,13,12,14,14,16,15,15,17,
18,15, 8, 9, 9,10,10,11,11,11,11,13,13,14,14,15,
15,15,16,16,18, 7, 9, 8,10,10,11,11,12,12,14,14,
15,15,16,16,15,17,16,18, 8, 9, 9,10,10,11,12,12,
12,13,13,16,15,17,16,17,18,17,18, 9,10,10,12,11,
13,13,14,13,14,14,15,17,16,18,17,18,17,18, 9,10,
10,12,11,12,13,13,14,15,16,14,15,16,18,18,18,18,
17,11,11,11,13,13,14,14,16,15,15,15,16,15,15,18,
18,18,17,16,11,11,12,13,13,15,14,15,16,16,16,17,
16,15,18,17,18,16,18,12,13,13,15,15,15,16,18,16,
17,16,17,16,17,17,17,18,18,17,13,13,13,15,13,16,
15,17,16,16,16,18,18,18,18,16,17,17,18,13,15,14,
15,15,18,17,18,18,18,16,18,17,18,17,18,16,17,17,
14,14,14,15,16,17,16,18,18,18,17,18,17,18,18,18,
16,16,16,14,17,16,17,15,16,18,18,17,18,17,18,17,
18,18,18,17,18,17,15,16,15,18,15,18,17,16,18,18,
18,18,18,18,17,18,16,18,17,
};
 
static const static_codebook _16u2_p9_1 = {
2, 361,
(char *)_vq_lengthlist__16u2_p9_1,
1, -518287360, 1622704128, 5, 0,
(long *)_vq_quantlist__16u2_p9_1,
0
};
 
static const long _vq_quantlist__16u2_p9_2[] = {
24,
23,
25,
22,
26,
21,
27,
20,
28,
19,
29,
18,
30,
17,
31,
16,
32,
15,
33,
14,
34,
13,
35,
12,
36,
11,
37,
10,
38,
9,
39,
8,
40,
7,
41,
6,
42,
5,
43,
4,
44,
3,
45,
2,
46,
1,
47,
0,
48,
};
 
static const char _vq_lengthlist__16u2_p9_2[] = {
2, 3, 4, 4, 4, 5, 5, 6, 5, 6, 6, 6, 6, 6, 6, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 7, 8, 8, 8, 8, 8,
8,
};
 
static const static_codebook _16u2_p9_2 = {
1, 49,
(char *)_vq_lengthlist__16u2_p9_2,
1, -526909440, 1611661312, 6, 0,
(long *)_vq_quantlist__16u2_p9_2,
0
};
 
static const char _huff_lengthlist__16u2__short[] = {
8,11,13,13,15,16,19,19,19,19,11, 8, 8, 9, 9,11,
13,15,19,20,14, 8, 7, 7, 8, 9,12,13,15,20,15, 9,
6, 5, 5, 7,10,12,14,18,14, 9, 7, 5, 3, 4, 7,10,
12,16,13,10, 8, 6, 3, 3, 5, 8,11,14,11,10, 9, 7,
5, 4, 4, 6,11,14,10,10,10, 8, 6, 5, 5, 6,10,14,
10,10,10, 9, 8, 7, 7, 7,10,14,11,12,12,12,11,10,
10,10,12,16,
};
 
static const static_codebook _huff_book__16u2__short = {
2, 100,
(char *)_huff_lengthlist__16u2__short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__8u0__p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__8u0__p1_0[] = {
1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
10,10, 5, 8, 8, 7,10,10, 8,10,10, 4, 9, 8, 8,11,
11, 8,11,11, 7,11,11,10,11,13,10,13,13, 7,11,11,
10,13,12,10,13,13, 5, 9, 8, 8,11,11, 8,11,11, 7,
11,11, 9,13,13,10,12,13, 7,11,11,10,13,13,10,13,
11,
};
 
static const static_codebook _8u0__p1_0 = {
4, 81,
(char *)_vq_lengthlist__8u0__p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__8u0__p1_0,
0
};
 
static const long _vq_quantlist__8u0__p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__8u0__p2_0[] = {
2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 6, 7, 8, 6,
7, 8, 5, 7, 7, 6, 8, 8, 7, 9, 7, 5, 7, 7, 7, 9,
9, 7, 8, 8, 6, 9, 8, 7, 7,10, 8,10,10, 6, 8, 8,
8,10, 8, 8,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 9, 6,
8, 8, 8,10,10, 8, 8,10, 6, 8, 9, 8,10,10, 7,10,
8,
};
 
static const static_codebook _8u0__p2_0 = {
4, 81,
(char *)_vq_lengthlist__8u0__p2_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__8u0__p2_0,
0
};
 
static const long _vq_quantlist__8u0__p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__8u0__p3_0[] = {
1, 5, 5, 7, 7, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8,
10, 9,11,11, 8, 9, 9,11,11, 6, 8, 8,10,10, 8,10,
10,11,11, 8,10,10,11,11,10,11,11,12,12,10,11,11,
12,13, 6, 8, 8,10,10, 8,10,10,11,11, 8,10,10,11,
11, 9,10,11,12,12,10,11,11,12,12, 8,11,11,14,13,
10,12,11,15,13,10,12,11,14,14,12,13,12,16,14,12,
14,12,16,15, 8,11,11,13,14,10,11,12,13,15,10,11,
12,13,15,11,12,13,14,15,12,12,14,14,16, 5, 8, 8,
11,11, 9,11,11,12,12, 8,10,11,12,12,11,12,12,15,
14,11,12,12,14,14, 7,11,10,13,12,10,11,12,13,14,
10,12,12,14,13,12,13,13,14,15,12,13,13,15,15, 7,
10,11,12,13,10,12,11,14,13,10,12,13,13,15,12,13,
12,14,14,11,13,13,15,16, 9,12,12,15,14,11,13,13,
15,16,11,13,13,16,16,13,14,15,15,15,12,14,15,17,
16, 9,12,12,14,15,11,13,13,15,16,11,13,13,16,18,
13,14,14,17,16,13,15,15,17,18, 5, 8, 9,11,11, 8,
11,11,12,12, 8,10,11,12,12,11,12,12,14,14,11,12,
12,14,15, 7,11,10,12,13,10,12,12,14,13,10,11,12,
13,14,11,13,13,15,14,12,13,13,14,15, 7,10,11,13,
13,10,12,12,13,14,10,12,12,13,13,11,13,13,16,16,
12,13,13,15,14, 9,12,12,16,15,10,13,13,15,15,11,
13,13,17,15,12,15,15,18,17,13,14,14,15,16, 9,12,
12,15,15,11,13,13,15,16,11,13,13,15,15,12,15,15,
16,16,13,15,14,17,15, 7,11,11,15,15,10,13,13,16,
15,10,13,13,15,16,14,15,15,17,19,13,15,14,15,18,
9,12,12,16,16,11,13,14,17,16,11,13,13,17,16,15,
15,16,17,19,13,15,16, 0,18, 9,12,12,16,15,11,14,
13,17,17,11,13,14,16,16,15,16,16,19,18,13,15,15,
17,19,11,14,14,19,16,12,14,15, 0,18,12,16,15,18,
17,15,15,18,16,19,14,15,17,19,19,11,14,14,18,19,
13,15,14,19,19,12,16,15,18,17,15,17,15, 0,16,14,
17,16,19, 0, 7,11,11,14,14,10,12,12,15,15,10,13,
13,16,15,13,15,15,17, 0,14,15,15,16,19, 9,12,12,
16,16,11,14,14,16,16,11,13,13,16,16,14,17,16,19,
0,14,18,17,17,19, 9,12,12,15,16,11,13,13,15,17,
12,14,13,19,16,13,15,15,17,19,15,17,16,17,19,11,
14,14,19,16,12,15,15,19,17,13,14,15,17,19,14,16,
17,19,19,16,15,16,17,19,11,15,14,16,16,12,15,15,
19, 0,12,14,15,19,19,14,16,16, 0,18,15,19,14,18,
16,
};
 
static const static_codebook _8u0__p3_0 = {
4, 625,
(char *)_vq_lengthlist__8u0__p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__8u0__p3_0,
0
};
 
static const long _vq_quantlist__8u0__p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__8u0__p4_0[] = {
3, 5, 5, 8, 8, 5, 6, 7, 9, 9, 6, 7, 6, 9, 9, 9,
9, 9,10,11, 9, 9, 9,11,10, 6, 7, 7,10,10, 7, 7,
8,10,10, 7, 8, 8,10,10,10,10,10,10,11, 9,10,10,
11,12, 6, 7, 7,10,10, 7, 8, 8,10,10, 7, 8, 7,10,
10, 9,10,10,12,11,10,10,10,11,10, 9,10,10,12,11,
10,10,10,13,11, 9,10,10,12,12,11,11,12,12,13,11,
11,11,12,13, 9,10,10,12,12,10,10,11,12,12,10,10,
11,12,12,11,11,11,13,13,11,12,12,13,13, 5, 7, 7,
10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,11,12,
12,10,11,10,12,12, 7, 8, 8,11,11, 7, 8, 9,10,11,
8, 9, 9,11,11,11,10,11,10,12,10,11,11,12,13, 7,
8, 8,10,11, 8, 9, 8,12,10, 8, 9, 9,11,12,10,11,
10,13,11,10,11,11,13,12, 9,11,10,13,12,10,10,11,
12,12,10,11,11,13,13,12,10,13,11,14,11,12,12,15,
13, 9,11,11,13,13,10,11,11,13,12,10,11,11,12,14,
12,13,11,14,12,12,12,12,14,14, 5, 7, 7,10,10, 7,
8, 8,10,10, 7, 8, 8,11,10,10,11,11,12,12,10,11,
10,12,12, 7, 8, 8,10,11, 8, 9, 9,12,11, 8, 8, 9,
10,11,10,11,11,12,13,11,10,11,11,13, 6, 8, 8,10,
11, 8, 9, 9,11,11, 7, 9, 7,11,10,10,11,11,12,12,
10,11,10,13,10, 9,11,10,13,12,10,12,11,13,13,10,
10,11,12,13,11,12,13,15,14,11,11,13,12,13, 9,10,
11,12,13,10,11,11,12,13,10,11,10,13,12,12,13,13,
13,14,12,12,11,14,11, 8,10,10,12,13,10,11,11,13,
13,10,11,10,13,13,12,13,14,15,14,12,12,12,14,13,
9,10,10,13,12,10,10,12,13,13,10,11,11,15,12,12,
12,13,15,14,12,13,13,15,13, 9,10,11,12,13,10,12,
10,13,12,10,11,11,12,13,12,14,12,15,13,12,12,12,
15,14,11,12,11,14,13,11,11,12,14,14,12,13,13,14,
13,13,11,15,11,15,14,14,14,16,15,11,12,12,13,14,
11,13,11,14,14,12,12,13,14,15,12,14,12,15,12,13,
15,14,16,15, 8,10,10,12,12,10,10,10,12,13,10,11,
11,13,13,12,12,12,13,14,13,13,13,15,15, 9,10,10,
12,12,10,11,11,13,12,10,10,11,13,13,12,12,12,14,
14,12,12,13,15,14, 9,10,10,13,12,10,10,12,12,13,
10,11,10,13,13,12,13,13,14,14,12,13,12,14,13,11,
12,12,14,13,12,13,12,14,14,10,12,12,14,14,14,14,
14,16,14,13,12,14,12,15,10,12,12,14,15,12,13,13,
14,16,11,12,11,15,14,13,14,14,14,15,13,14,11,14,
12,
};
 
static const static_codebook _8u0__p4_0 = {
4, 625,
(char *)_vq_lengthlist__8u0__p4_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__8u0__p4_0,
0
};
 
static const long _vq_quantlist__8u0__p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__8u0__p5_0[] = {
1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 7, 8, 8,
10,10, 4, 6, 6, 8, 8, 8, 8,10,10, 6, 8, 8, 9, 9,
9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8,
9, 9,10,10,12,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
10,10,11,11,11,12,12,12, 9,10,10,11,11,12,12,12,
12,
};
 
static const static_codebook _8u0__p5_0 = {
2, 81,
(char *)_vq_lengthlist__8u0__p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__8u0__p5_0,
0
};
 
static const long _vq_quantlist__8u0__p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__8u0__p6_0[] = {
1, 4, 4, 7, 7, 9, 9,11,11,12,12,16,16, 3, 6, 6,
9, 9,11,11,12,12,13,14,18,16, 3, 6, 7, 9, 9,11,
11,13,12,14,14,17,16, 7, 9, 9,11,11,12,12,14,14,
14,14,17,16, 7, 9, 9,11,11,13,12,13,13,14,14,17,
0, 9,11,11,12,13,14,14,14,13,15,14,17,17, 9,11,
11,12,12,14,14,13,14,14,15, 0, 0,11,12,12,15,14,
15,14,15,14,15,16,17, 0,11,12,13,13,13,14,14,15,
14,15,15, 0, 0,12,14,14,15,15,14,16,15,15,17,16,
0,18,13,14,14,15,14,15,14,15,16,17,16, 0, 0,17,
17,18, 0,16,18,16, 0, 0, 0,17, 0, 0,16, 0, 0,16,
16, 0,15, 0,17, 0, 0, 0, 0,
};
 
static const static_codebook _8u0__p6_0 = {
2, 169,
(char *)_vq_lengthlist__8u0__p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__8u0__p6_0,
0
};
 
static const long _vq_quantlist__8u0__p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__8u0__p6_1[] = {
1, 4, 4, 6, 6, 4, 6, 5, 7, 7, 4, 5, 6, 7, 7, 6,
7, 7, 7, 7, 6, 7, 7, 7, 7,
};
 
static const static_codebook _8u0__p6_1 = {
2, 25,
(char *)_vq_lengthlist__8u0__p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__8u0__p6_1,
0
};
 
static const long _vq_quantlist__8u0__p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__8u0__p7_0[] = {
1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7,
};
 
static const static_codebook _8u0__p7_0 = {
4, 81,
(char *)_vq_lengthlist__8u0__p7_0,
1, -518803456, 1628680192, 2, 0,
(long *)_vq_quantlist__8u0__p7_0,
0
};
 
static const long _vq_quantlist__8u0__p7_1[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__8u0__p7_1[] = {
1, 5, 5, 5, 5,10,10,11,11,11,11,11,11,11,11, 5,
7, 6, 8, 8, 9,10,11,11,11,11,11,11,11,11, 6, 6,
7, 9, 7,11,10,11,11,11,11,11,11,11,11, 5, 6, 6,
11, 8,11,11,11,11,11,11,11,11,11,11, 5, 6, 6, 9,
10,11,10,11,11,11,11,11,11,11,11, 7,10,10,11,11,
11,11,11,11,11,11,11,11,11,11, 7,11, 8,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,
};
 
static const static_codebook _8u0__p7_1 = {
2, 225,
(char *)_vq_lengthlist__8u0__p7_1,
1, -520986624, 1620377600, 4, 0,
(long *)_vq_quantlist__8u0__p7_1,
0
};
 
static const long _vq_quantlist__8u0__p7_2[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__8u0__p7_2[] = {
1, 6, 5, 7, 7, 9, 9, 9, 9,10,12,12,10,11,11,10,
11,11,11,10,11, 6, 8, 8, 9, 9,10,10, 9,10,11,11,
10,11,11,11,11,10,11,11,11,11, 6, 7, 8, 9, 9, 9,
10,11,10,11,12,11,10,11,11,11,11,11,11,12,10, 8,
9, 9,10, 9,10,10, 9,10,10,10,10,10, 9,10,10,10,
10, 9,10,10, 9, 9, 9, 9,10,10, 9, 9,10,10,11,10,
9,12,10,11,10, 9,10,10,10, 8, 9, 9,10, 9,10, 9,
9,10,10, 9,10, 9,11,10,10,10,10,10, 9,10, 8, 8,
9, 9,10, 9,11, 9, 8, 9, 9,10,11,10,10,10,11,12,
9, 9,11, 8, 9, 8,11,10,11,10,10, 9,11,10,10,10,
10,10,10,10,11,11,11,11, 8, 9, 9, 9,10,10,10,11,
11,12,11,12,11,10,10,10,12,11,11,11,10, 8,10, 9,
11,10,10,11,12,10,11,12,11,11,12,11,12,12,10,11,
11,10, 9, 9,10,11,12,10,10,10,11,10,11,11,10,12,
12,10,11,10,11,12,10, 9,10,10,11,10,11,11,11,11,
11,12,11,11,11, 9,11,10,11,10,11,10, 9, 9,10,11,
11,11,10,10,11,12,12,11,12,11,11,11,12,12,12,12,
11, 9,11,11,12,10,11,11,11,11,11,11,12,11,11,12,
11,11,11,10,11,11, 9,11,10,11,11,11,10,10,10,11,
11,11,12,10,11,10,11,11,11,11,12, 9,11,10,11,11,
10,10,11,11, 9,11,11,12,10,10,10,10,10,11,11,10,
9,10,11,11,12,11,10,10,12,11,11,12,11,12,11,11,
10,10,11,11,10,12,11,10,11,10,11,10,10,10,11,11,
10,10,11,11,11,11,10,10,10,12,11,11,11,11,10, 9,
10,11,11,11,12,11,11,11,12,10,11,11,11, 9,10,11,
11,11,11,11,11,10,10,11,11,12,11,10,11,12,11,10,
10,11, 9,10,11,11,11,11,11,10,11,11,10,12,11,11,
11,12,11,11,11,10,10,11,11,
};
 
static const static_codebook _8u0__p7_2 = {
2, 441,
(char *)_vq_lengthlist__8u0__p7_2,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__8u0__p7_2,
0
};
 
static const char _huff_lengthlist__8u0__single[] = {
4, 7,11, 9,12, 8, 7,10, 6, 4, 5, 5, 7, 5, 6,16,
9, 5, 5, 6, 7, 7, 9,16, 7, 4, 6, 5, 7, 5, 7,17,
10, 7, 7, 8, 7, 7, 8,18, 7, 5, 6, 4, 5, 4, 5,15,
7, 6, 7, 5, 6, 4, 5,15,12,13,18,12,17,11, 9,17,
};
 
static const static_codebook _huff_book__8u0__single = {
2, 64,
(char *)_huff_lengthlist__8u0__single,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__8u1__p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__8u1__p1_0[] = {
1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 7, 9,10, 7,
9, 9, 5, 8, 8, 7,10, 9, 7, 9, 9, 5, 8, 8, 8,10,
10, 8,10,10, 7,10,10, 9,10,12,10,12,12, 7,10,10,
9,12,11,10,12,12, 5, 8, 8, 8,10,10, 8,10,10, 7,
10,10,10,12,12, 9,11,12, 7,10,10,10,12,12, 9,12,
10,
};
 
static const static_codebook _8u1__p1_0 = {
4, 81,
(char *)_vq_lengthlist__8u1__p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__8u1__p1_0,
0
};
 
static const long _vq_quantlist__8u1__p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__8u1__p2_0[] = {
3, 4, 5, 5, 6, 6, 5, 6, 6, 5, 7, 6, 6, 7, 8, 6,
7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 7, 5, 6, 6, 7, 8,
8, 6, 7, 7, 6, 8, 7, 7, 7, 9, 8, 9, 9, 6, 7, 8,
7, 9, 7, 8, 9, 9, 5, 6, 6, 6, 7, 7, 7, 8, 8, 6,
8, 7, 8, 9, 9, 7, 7, 9, 6, 7, 8, 8, 9, 9, 7, 9,
7,
};
 
static const static_codebook _8u1__p2_0 = {
4, 81,
(char *)_vq_lengthlist__8u1__p2_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__8u1__p2_0,
0
};
 
static const long _vq_quantlist__8u1__p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__8u1__p3_0[] = {
1, 5, 5, 7, 7, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8,
10, 9,11,11, 9, 9, 9,11,11, 6, 8, 8,10,10, 8,10,
10,11,11, 8, 9,10,11,11,10,11,11,12,12,10,11,11,
12,13, 6, 8, 8,10,10, 8,10, 9,11,11, 8,10, 9,11,
11,10,11,11,12,12,10,11,11,12,12, 9,11,11,14,13,
10,12,11,14,14,10,12,11,14,13,12,13,13,15,14,12,
13,13,15,14, 8,11,11,13,14,10,11,12,13,15,10,11,
12,14,14,12,13,13,14,15,12,13,13,14,15, 5, 8, 8,
11,11, 8,10,10,12,12, 8,10,10,12,12,11,12,12,14,
13,11,12,12,13,14, 8,10,10,12,12, 9,11,12,13,14,
10,12,12,13,13,12,12,13,14,14,11,13,13,15,15, 7,
10,10,12,12, 9,12,11,14,12,10,11,12,13,14,12,13,
12,14,14,12,13,13,15,16,10,12,12,15,14,11,12,13,
15,15,11,13,13,15,16,14,14,15,15,16,13,14,15,17,
15, 9,12,12,14,15,11,13,12,15,15,11,13,13,15,15,
13,14,13,15,14,13,14,14,17, 0, 5, 8, 8,11,11, 8,
10,10,12,12, 8,10,10,12,12,11,12,12,14,14,11,12,
12,14,14, 7,10,10,12,12,10,12,12,13,13, 9,11,12,
12,13,11,12,13,15,15,11,12,13,14,15, 8,10,10,12,
12,10,12,11,13,13,10,12,11,13,13,11,13,13,15,14,
12,13,12,15,13, 9,12,12,14,14,11,13,13,16,15,11,
12,13,16,15,13,14,15,16,16,13,13,15,15,16,10,12,
12,15,14,11,13,13,14,16,11,13,13,15,16,13,15,15,
16,17,13,15,14,16,15, 8,11,11,14,15,10,12,12,15,
15,10,12,12,15,16,14,15,15,16,17,13,14,14,16,16,
9,12,12,15,15,11,13,14,15,17,11,13,13,15,16,14,
15,16,19,17,13,15,15, 0,17, 9,12,12,15,15,11,14,
13,16,15,11,13,13,15,16,15,15,15,18,17,13,15,15,
17,17,11,15,14,18,16,12,14,15,17,17,12,15,15,18,
18,15,15,16,15,19,14,16,16, 0, 0,11,14,14,16,17,
12,15,14,18,17,12,15,15,18,18,15,17,15,18,16,14,
16,16,18,18, 7,11,11,14,14,10,12,12,15,15,10,12,
13,15,15,13,14,15,16,16,14,15,15,18,18, 9,12,12,
15,15,11,13,13,16,15,11,12,13,16,16,14,15,15,17,
16,15,16,16,17,17, 9,12,12,15,15,11,13,13,15,17,
11,14,13,16,15,13,15,15,17,17,15,15,15,18,17,11,
14,14,17,15,12,14,15,17,18,13,13,15,17,17,14,16,
16,19,18,16,15,17,17, 0,11,14,14,17,17,12,15,15,
18, 0,12,15,14,18,16,14,17,17,19, 0,16,18,15, 0,
16,
};
 
static const static_codebook _8u1__p3_0 = {
4, 625,
(char *)_vq_lengthlist__8u1__p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__8u1__p3_0,
0
};
 
static const long _vq_quantlist__8u1__p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__8u1__p4_0[] = {
4, 5, 5, 9, 9, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 9,
9, 9,11,11, 9, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 7,
8, 9,10, 7, 7, 8, 9,10, 9, 9,10,10,11, 9, 9,10,
10,12, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 7,10,
9, 9,10, 9,12,11,10,10, 9,12,10, 9,10,10,12,11,
9,10,10,12,11, 9,10,10,12,12,11,11,12,12,13,11,
11,12,12,13, 9, 9,10,12,11, 9,10,10,12,12,10,10,
10,12,12,11,12,11,13,12,11,12,11,13,12, 6, 7, 7,
9, 9, 7, 8, 8,10,10, 7, 8, 7,10, 9,10,10,10,12,
12,10,10,10,12,11, 7, 8, 7,10,10, 7, 7, 9,10,11,
8, 9, 9,11,10,10,10,11,10,12,10,10,11,12,12, 7,
8, 8,10,10, 7, 9, 8,11,10, 8, 8, 9,11,11,10,11,
10,12,11,10,11,11,12,12, 9,10,10,12,12, 9,10,10,
12,12,10,11,11,13,12,11,10,12,10,14,12,12,12,13,
14, 9,10,10,12,12, 9,11,10,12,12,10,11,11,12,12,
11,12,11,14,12,12,12,12,14,14, 5, 7, 7, 9, 9, 7,
7, 7, 9,10, 7, 8, 8,10,10,10,10,10,11,11,10,10,
10,12,12, 7, 8, 8,10,10, 8, 9, 8,11,10, 7, 8, 9,
10,11,10,10,10,11,12,10,10,11,11,13, 6, 7, 8,10,
10, 8, 9, 9,10,10, 7, 9, 7,11,10,10,11,10,12,12,
10,11,10,12,10, 9,10,10,12,12,10,11,11,13,12, 9,
10,10,12,12,12,12,12,14,13,11,11,12,11,14, 9,10,
10,11,12,10,11,11,12,13, 9,10,10,12,12,12,12,12,
14,13,11,12,10,14,11, 9, 9,10,11,12, 9,10,10,12,
12, 9,10,10,12,12,12,12,12,14,14,11,12,12,13,12,
9,10, 9,12,12, 9,10,11,12,13,10,11,10,13,11,12,
12,13,13,14,12,12,12,13,13, 9,10,10,12,12,10,11,
10,13,12,10,10,11,12,13,12,13,12,14,13,12,12,12,
13,14,11,12,11,14,13,10,10,11,13,13,12,12,12,14,
13,12,10,14,10,15,13,14,14,14,14,11,11,12,13,14,
10,12,11,13,13,12,12,12,13,15,12,13,11,15,12,13,
13,14,14,14, 9,10, 9,12,12, 9,10,10,12,12,10,10,
10,12,12,11,11,12,12,13,12,12,12,14,14, 9,10,10,
12,12,10,11,10,13,12,10,10,11,12,13,12,12,12,14,
13,12,12,13,13,14, 9,10,10,12,13,10,10,11,11,12,
9,11,10,13,12,12,12,12,13,14,12,13,12,14,13,11,
12,11,13,13,12,13,12,14,13,10,11,12,13,13,13,13,
13,14,15,12,11,14,12,14,11,11,12,12,13,12,12,12,
13,14,10,12,10,14,13,13,13,13,14,15,12,14,11,15,
10,
};
 
static const static_codebook _8u1__p4_0 = {
4, 625,
(char *)_vq_lengthlist__8u1__p4_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__8u1__p4_0,
0
};
 
static const long _vq_quantlist__8u1__p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__8u1__p5_0[] = {
1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 5, 8, 7, 8, 8,
10,10, 4, 6, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9,
9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 8, 8, 8,
9, 9,10,10,12,11, 8, 8, 8, 9, 9,10,10,11,11, 9,
10,10,11,11,11,11,13,12, 9,10,10,11,11,12,12,12,
13,
};
 
static const static_codebook _8u1__p5_0 = {
2, 81,
(char *)_vq_lengthlist__8u1__p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__8u1__p5_0,
0
};
 
static const long _vq_quantlist__8u1__p6_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__8u1__p6_0[] = {
3, 4, 4, 6, 6, 7, 7, 9, 9, 4, 4, 5, 6, 6, 7, 7,
9, 9, 4, 4, 4, 6, 6, 7, 7, 9, 9, 6, 6, 6, 7, 7,
8, 8, 9, 9, 6, 6, 6, 7, 7, 8, 8, 9, 9, 7, 7, 7,
8, 8, 8, 9,10,10, 7, 7, 7, 8, 8, 9, 8,10,10, 9,
9, 9, 9, 9,10,10,10,10, 9, 9, 9, 9, 9,10,10,10,
10,
};
 
static const static_codebook _8u1__p6_0 = {
2, 81,
(char *)_vq_lengthlist__8u1__p6_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__8u1__p6_0,
0
};
 
static const long _vq_quantlist__8u1__p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__8u1__p7_0[] = {
1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 9, 8,10,10, 8,
10,10, 5, 9, 9, 7,10,10, 8,10,10, 4,10,10, 9,12,
12, 9,11,11, 7,12,11,10,11,13,10,13,13, 7,12,12,
10,13,12,10,13,13, 4,10,10, 9,12,12, 9,12,12, 7,
12,12,10,13,13,10,12,13, 7,11,12,10,13,13,10,13,
11,
};
 
static const static_codebook _8u1__p7_0 = {
4, 81,
(char *)_vq_lengthlist__8u1__p7_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__8u1__p7_0,
0
};
 
static const long _vq_quantlist__8u1__p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__8u1__p7_1[] = {
2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 7,
8, 8, 9, 9, 9, 9, 4, 5, 5, 7, 7, 8, 8, 9, 9, 9,
9, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8,
8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9,
9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 9, 9,
9, 9, 9, 9,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,10,
10,10,10, 8, 9, 9, 9, 9, 9, 9,10,10,10,10, 8, 9,
9, 9, 9, 9, 9,10,10,10,10,
};
 
static const static_codebook _8u1__p7_1 = {
2, 121,
(char *)_vq_lengthlist__8u1__p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__8u1__p7_1,
0
};
 
static const long _vq_quantlist__8u1__p8_0[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__8u1__p8_0[] = {
1, 4, 4, 6, 6, 8, 8,10,10,11,11, 4, 6, 6, 7, 7,
9, 9,11,11,13,12, 4, 6, 6, 7, 7, 9, 9,11,11,12,
12, 6, 7, 7, 9, 9,11,11,12,12,13,13, 6, 7, 7, 9,
9,11,11,12,12,13,13, 8, 9, 9,11,11,12,12,13,13,
14,14, 8, 9, 9,11,11,12,12,13,13,14,14, 9,11,11,
12,12,13,13,14,14,15,15, 9,11,11,12,12,13,13,14,
14,15,14,11,12,12,13,13,14,14,15,15,16,16,11,12,
12,13,13,14,14,15,15,15,15,
};
 
static const static_codebook _8u1__p8_0 = {
2, 121,
(char *)_vq_lengthlist__8u1__p8_0,
1, -524582912, 1618345984, 4, 0,
(long *)_vq_quantlist__8u1__p8_0,
0
};
 
static const long _vq_quantlist__8u1__p8_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__8u1__p8_1[] = {
2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 6, 6, 7, 7,
7, 7, 8, 8, 8, 8, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8,
8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7,
7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8,
8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 9,
8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8,
8, 8, 8, 8, 8, 9, 9, 9, 9,
};
 
static const static_codebook _8u1__p8_1 = {
2, 121,
(char *)_vq_lengthlist__8u1__p8_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__8u1__p8_1,
0
};
 
static const long _vq_quantlist__8u1__p9_0[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__8u1__p9_0[] = {
1, 4, 4,11,11,11,11,11,11,11,11,11,11,11,11, 3,
11, 8,11,11,11,11,11,11,11,11,11,11,11,11, 3, 9,
9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,
};
 
static const static_codebook _8u1__p9_0 = {
2, 225,
(char *)_vq_lengthlist__8u1__p9_0,
1, -514071552, 1627381760, 4, 0,
(long *)_vq_quantlist__8u1__p9_0,
0
};
 
static const long _vq_quantlist__8u1__p9_1[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__8u1__p9_1[] = {
1, 4, 4, 7, 7, 9, 9, 7, 7, 8, 8,10,10,11,11, 4,
7, 7, 9, 9,10,10, 8, 8,10,10,10,11,10,11, 4, 7,
7, 9, 9,10,10, 8, 8,10, 9,11,11,11,11, 7, 9, 9,
12,12,11,12,10,10,11,10,12,11,11,11, 7, 9, 9,11,
11,13,12, 9, 9,11,10,11,11,12,11, 9,10,10,12,12,
14,14,10,10,11,12,12,11,11,11, 9,10,11,11,13,14,
13,10,11,11,11,12,11,12,12, 7, 8, 8,10, 9,11,10,
11,12,12,11,12,14,12,13, 7, 8, 8, 9,10,10,11,12,
12,12,11,12,12,12,13, 9, 9, 9,11,11,13,12,12,12,
12,11,12,12,13,12, 8,10,10,11,10,11,12,12,12,12,
12,12,14,12,12, 9,11,11,11,12,12,12,12,13,13,12,
12,13,13,12,10,11,11,12,11,12,12,12,11,12,13,12,
12,12,13,11,11,12,12,12,13,12,12,11,12,13,13,12,
12,13,12,11,12,12,13,13,12,13,12,13,13,13,13,14,
13,
};
 
static const static_codebook _8u1__p9_1 = {
2, 225,
(char *)_vq_lengthlist__8u1__p9_1,
1, -522338304, 1620115456, 4, 0,
(long *)_vq_quantlist__8u1__p9_1,
0
};
 
static const long _vq_quantlist__8u1__p9_2[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__8u1__p9_2[] = {
2, 5, 4, 6, 6, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
9, 5, 6, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,
9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9,
9, 9, 9, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
9,10,10, 9, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,10,10, 8, 8, 8, 9, 9, 9, 9,10,10,10, 9,
10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,
10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,10,10,
10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,
10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,
10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,10,
10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
9,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,10,
9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10, 9,
10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,
};
 
static const static_codebook _8u1__p9_2 = {
2, 289,
(char *)_vq_lengthlist__8u1__p9_2,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__8u1__p9_2,
0
};
 
static const char _huff_lengthlist__8u1__single[] = {
4, 7,13, 9,15, 9,16, 8,10,13, 7, 5, 8, 6, 9, 7,
10, 7,10,11,11, 6, 7, 8, 8, 9, 9, 9,12,16, 8, 5,
8, 6, 8, 6, 9, 7,10,12,11, 7, 7, 7, 6, 7, 7, 7,
11,15, 7, 5, 8, 6, 7, 5, 7, 6, 9,13,13, 9, 9, 8,
6, 6, 5, 5, 9,14, 8, 6, 8, 6, 6, 4, 5, 3, 5,13,
9, 9,11, 8,10, 7, 8, 4, 5,12,11,16,17,15,17,12,
13, 8, 8,15,
};
 
static const static_codebook _huff_book__8u1__single = {
2, 100,
(char *)_huff_lengthlist__8u1__single,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44u0__long[] = {
5, 8,13,10,17,11,11,15, 7, 2, 4, 5, 8, 7, 9,16,
13, 4, 3, 5, 6, 8,11,20,10, 4, 5, 5, 7, 6, 8,18,
15, 7, 6, 7, 8,10,14,20,10, 6, 7, 6, 9, 7, 8,17,
9, 8,10, 8,10, 5, 4,11,12,17,19,14,16,10, 7,12,
};
 
static const static_codebook _huff_book__44u0__long = {
2, 64,
(char *)_huff_lengthlist__44u0__long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44u0__p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u0__p1_0[] = {
1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
10,10, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
11, 8,11,11, 8,12,11,11,13,13,11,13,14, 7,11,11,
10,13,12,11,13,14, 4, 8, 8, 8,11,11, 8,11,12, 8,
11,11,11,13,13,10,12,13, 8,11,11,11,14,13,11,14,
13,
};
 
static const static_codebook _44u0__p1_0 = {
4, 81,
(char *)_vq_lengthlist__44u0__p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u0__p1_0,
0
};
 
static const long _vq_quantlist__44u0__p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u0__p2_0[] = {
2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 8, 6,
8, 8, 5, 7, 7, 6, 8, 8, 7, 8, 8, 4, 7, 7, 7, 8,
8, 7, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
8,10, 8, 8,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 8, 6,
8, 8, 8,10,10, 8, 8,10, 6, 8, 8, 8,10,10, 8,10,
9,
};
 
static const static_codebook _44u0__p2_0 = {
4, 81,
(char *)_vq_lengthlist__44u0__p2_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u0__p2_0,
0
};
 
static const long _vq_quantlist__44u0__p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u0__p3_0[] = {
1, 5, 5, 8, 8, 5, 8, 7, 9, 9, 5, 7, 8, 9, 9, 9,
10, 9,12,12, 9, 9,10,12,12, 6, 8, 8,11,10, 8,10,
10,11,11, 8, 9,10,11,11,10,11,11,14,13,10,11,11,
13,13, 5, 8, 8,10,10, 8,10,10,11,11, 8,10,10,11,
11,10,11,11,13,13,10,11,11,13,13, 9,11,11,15,14,
10,12,12,15,14,10,12,11,15,14,13,14,14,16,16,12,
14,13,17,15, 9,11,11,14,15,10,11,12,14,16,10,11,
12,14,16,12,13,14,16,16,13,13,15,15,18, 5, 8, 8,
11,11, 8,10,10,12,12, 8,10,10,12,13,11,12,12,14,
14,11,12,12,15,15, 8,10,10,13,13,10,12,12,13,13,
10,12,12,14,14,12,13,13,15,15,12,13,13,16,16, 7,
10,10,12,12,10,12,11,13,13,10,12,12,13,14,12,13,
12,15,14,12,13,13,16,16,10,12,12,17,16,12,13,13,
16,15,11,13,13,17,17,15,15,15,16,17,14,15,15,19,
19,10,12,12,15,16,11,13,12,15,18,11,13,13,16,16,
14,15,15,17,17,14,15,15,17,19, 5, 8, 8,11,11, 8,
10,10,12,12, 8,10,10,12,12,11,12,12,16,15,11,12,
12,14,15, 7,10,10,13,13,10,12,12,14,13,10,11,12,
13,13,12,13,13,16,16,12,12,13,15,15, 8,10,10,13,
13,10,12,12,14,14,10,12,12,13,13,12,13,13,16,16,
12,13,13,15,15,10,12,12,16,15,11,13,13,17,16,11,
12,13,16,15,13,15,15,19,17,14,15,14,17,16,10,12,
12,16,16,11,13,13,16,17,12,13,13,15,17,14,15,15,
17,19,14,15,15,17,17, 8,11,11,16,16,10,13,12,17,
17,10,12,13,16,16,15,17,16,20,19,14,15,17,18,19,
9,12,12,16,17,11,13,14,17,18,11,13,13,19,18,16,
17,18,19,19,15,16,16,19,19, 9,12,12,16,17,11,14,
13,18,17,11,13,13,17,17,16,17,16,20,19,14,16,16,
18,18,12,15,15,19,17,14,15,16, 0,20,13,15,16,20,
17,18,16,20, 0, 0,15,16,19,20, 0,12,15,14,18,19,
13,16,15,20,19,13,16,15,20,18,17,18,17, 0,20,16,
17,16, 0, 0, 8,11,11,16,15,10,12,12,17,17,10,13,
13,17,16,14,16,15,18,20,15,16,16,19,19, 9,12,12,
16,16,11,13,13,17,16,11,13,14,17,18,15,15,16,20,
20,16,16,17,19,19, 9,13,12,16,17,11,14,13,17,17,
11,14,14,18,17,14,16,15,18,19,16,17,18,18,19,12,
14,15,19,18,13,15,16,18, 0,13,14,15, 0, 0,16,16,
17,20, 0,17,17,20,20, 0,12,15,15,19,20,13,15,15,
0, 0,14,16,15, 0, 0,15,18,16, 0, 0,17,18,16, 0,
19,
};
 
static const static_codebook _44u0__p3_0 = {
4, 625,
(char *)_vq_lengthlist__44u0__p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u0__p3_0,
0
};
 
static const long _vq_quantlist__44u0__p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u0__p4_0[] = {
4, 5, 5, 9, 9, 5, 6, 6, 9, 9, 5, 6, 6, 9, 9, 9,
10, 9,12,12, 9, 9,10,12,12, 5, 7, 7,10,10, 7, 7,
8,10,10, 6, 7, 8,10,10,10,10,10,11,13,10, 9,10,
12,13, 5, 7, 7,10,10, 6, 8, 7,10,10, 7, 8, 7,10,
10, 9,10,10,12,12,10,10,10,13,11, 9,10,10,13,13,
10,11,10,13,13,10,10,10,13,13,12,12,13,14,14,12,
12,13,14,14, 9,10,10,13,13,10,10,10,13,13,10,10,
10,13,13,12,13,12,15,14,12,13,12,15,15, 5, 7, 6,
10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,10,13,
13,10,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,10,11,
8, 9, 9,11,11,11,10,11,11,14,11,11,11,13,13, 6,
8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
10,14,11,10,11,11,13,13,10,11,11,14,13,10,10,11,
14,13,10,11,11,14,14,12,11,13,12,16,13,14,14,15,
15,10,10,11,13,14,10,11,10,14,13,10,11,11,14,14,
12,13,12,15,13,13,13,14,15,16, 5, 7, 7,10,10, 7,
8, 8,10,10, 7, 8, 8,10,10,10,10,10,13,13,10,10,
11,12,13, 6, 8, 8,11,10, 8, 9, 9,11,11, 7, 8, 9,
10,11,10,11,11,13,13,10,10,11,11,13, 6, 8, 8,10,
11, 8, 9, 9,11,11, 8, 9, 8,12,10,10,11,11,13,13,
10,11,10,14,11,10,10,10,14,13,10,11,11,14,13,10,
10,11,13,13,12,14,14,16,16,12,12,13,13,15,10,11,
11,13,14,10,11,11,14,15,10,11,10,13,13,13,14,13,
16,16,12,13,11,15,12, 9,10,10,13,13,10,11,11,14,
13,10,10,11,13,14,13,14,13,16,16,13,13,13,15,16,
9,10,10,13,13,10,10,11,13,14,10,11,11,15,13,13,
13,14,14,18,13,13,14,16,15, 9,10,10,13,14,10,11,
10,14,13,10,11,11,13,14,13,14,13,16,15,13,13,14,
15,16,12,13,12,16,14,11,11,13,15,15,13,14,13,16,
15,15,12,16,12,17,14,15,15,17,17,12,13,13,14,16,
11,13,11,16,15,12,13,14,15,16,14,15,13, 0,14,14,
16,16, 0, 0, 9,10,10,13,13,10,11,10,14,14,10,11,
11,13,13,12,13,13,14,16,13,14,14,16,16, 9,10,10,
14,14,11,11,11,14,13,10,10,11,14,14,13,13,13,16,
16,13,13,14,14,17, 9,10,10,13,14,10,11,11,13,15,
10,11,10,14,14,13,13,13,14,17,13,14,13,17,14,12,
13,13,16,14,13,14,13,16,15,12,12,13,15,16,15,15,
16,18,16,15,13,15,14, 0,12,12,13,14,16,13,13,14,
15,16,11,12,11,16,14,15,16,16,17,17,14,15,12,17,
12,
};
 
static const static_codebook _44u0__p4_0 = {
4, 625,
(char *)_vq_lengthlist__44u0__p4_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u0__p4_0,
0
};
 
static const long _vq_quantlist__44u0__p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u0__p5_0[] = {
1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 7, 8, 8, 9, 9,
9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,10, 7, 8, 8,
9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
9, 9,10,10,11,11,12,12, 9, 9, 9,10,11,11,11,12,
12,
};
 
static const static_codebook _44u0__p5_0 = {
2, 81,
(char *)_vq_lengthlist__44u0__p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44u0__p5_0,
0
};
 
static const long _vq_quantlist__44u0__p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u0__p6_0[] = {
1, 4, 4, 6, 6, 8, 8,10, 9,11,10,14,13, 4, 6, 5,
8, 8, 9, 9,11,10,11,11,14,14, 4, 5, 6, 8, 8, 9,
9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11,
12,12,16,15, 7, 8, 8, 9, 9,10,10,11,11,12,12,15,
15, 9,10,10,10,10,11,11,12,12,12,12,15,15, 9,10,
9,10,11,11,11,12,12,12,13,15,15,10,10,11,11,11,
12,12,13,12,13,13,16,15,10,11,11,11,11,12,12,13,
12,13,13,16,17,11,11,12,12,12,13,13,13,14,14,15,
17,17,11,11,12,12,12,13,13,13,14,14,14,16,18,14,
15,15,15,15,16,16,16,16,17,18, 0, 0,14,15,15,15,
15,17,16,17,18,17,17,18, 0,
};
 
static const static_codebook _44u0__p6_0 = {
2, 169,
(char *)_vq_lengthlist__44u0__p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44u0__p6_0,
0
};
 
static const long _vq_quantlist__44u0__p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u0__p6_1[] = {
2, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5,
6, 6, 6, 6, 5, 6, 6, 6, 6,
};
 
static const static_codebook _44u0__p6_1 = {
2, 25,
(char *)_vq_lengthlist__44u0__p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u0__p6_1,
0
};
 
static const long _vq_quantlist__44u0__p7_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u0__p7_0[] = {
1, 4, 4,11,11, 9,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11, 9,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,
};
 
static const static_codebook _44u0__p7_0 = {
4, 625,
(char *)_vq_lengthlist__44u0__p7_0,
1, -518709248, 1626677248, 3, 0,
(long *)_vq_quantlist__44u0__p7_0,
0
};
 
static const long _vq_quantlist__44u0__p7_1[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u0__p7_1[] = {
1, 4, 4, 6, 6, 6, 6, 7, 7, 8, 8, 9, 9, 5, 7, 7,
8, 7, 7, 7, 9, 8,10, 9,10,11, 5, 7, 7, 8, 8, 7,
7, 8, 9,10,10,11,11, 6, 8, 8, 9, 9, 9, 9,11,10,
12,12,15,12, 6, 8, 8, 9, 9, 9, 9,11,11,12,11,14,
12, 7, 8, 8,10,10,12,12,13,13,13,15,13,13, 7, 8,
8,10,10,11,11,13,12,14,15,15,15, 9,10,10,11,12,
13,13,14,15,14,15,14,15, 8,10,10,12,12,14,14,15,
14,14,15,15,14,10,12,12,14,14,15,14,15,15,15,14,
15,15,10,12,12,13,14,15,14,15,15,14,15,15,15,12,
15,13,15,14,15,15,15,15,15,15,15,15,13,13,15,15,
15,15,15,15,15,15,15,15,15,
};
 
static const static_codebook _44u0__p7_1 = {
2, 169,
(char *)_vq_lengthlist__44u0__p7_1,
1, -523010048, 1618608128, 4, 0,
(long *)_vq_quantlist__44u0__p7_1,
0
};
 
static const long _vq_quantlist__44u0__p7_2[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u0__p7_2[] = {
2, 5, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 5, 5, 6,
7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 5, 6, 5, 7, 7, 8,
8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8, 8, 8, 8, 9, 8,
9, 9, 9, 9, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
9, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 7, 8,
8, 9, 8, 9, 8, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9,
9, 9, 9, 9, 9, 9,10,10, 8, 8, 9, 9, 9, 9, 9, 9,
9, 9,10, 9,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 9, 9, 9, 9, 9,
9, 9, 9,10, 9, 9,10,10, 9,
};
 
static const static_codebook _44u0__p7_2 = {
2, 169,
(char *)_vq_lengthlist__44u0__p7_2,
1, -531103744, 1611661312, 4, 0,
(long *)_vq_quantlist__44u0__p7_2,
0
};
 
static const char _huff_lengthlist__44u0__short[] = {
12,13,14,13,17,12,15,17, 5, 5, 6,10,10,11,15,16,
4, 3, 3, 7, 5, 7,10,16, 7, 7, 7,10, 9,11,12,16,
6, 5, 5, 9, 5, 6,10,16, 8, 7, 7, 9, 6, 7, 9,16,
11, 7, 3, 6, 4, 5, 8,16,12, 9, 4, 8, 5, 7, 9,16,
};
 
static const static_codebook _huff_book__44u0__short = {
2, 64,
(char *)_huff_lengthlist__44u0__short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44u1__long[] = {
5, 8,13,10,17,11,11,15, 7, 2, 4, 5, 8, 7, 9,16,
13, 4, 3, 5, 6, 8,11,20,10, 4, 5, 5, 7, 6, 8,18,
15, 7, 6, 7, 8,10,14,20,10, 6, 7, 6, 9, 7, 8,17,
9, 8,10, 8,10, 5, 4,11,12,17,19,14,16,10, 7,12,
};
 
static const static_codebook _huff_book__44u1__long = {
2, 64,
(char *)_huff_lengthlist__44u1__long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44u1__p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u1__p1_0[] = {
1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
10,10, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
11, 8,11,11, 8,12,11,11,13,13,11,13,14, 7,11,11,
10,13,12,11,13,14, 4, 8, 8, 8,11,11, 8,11,12, 8,
11,11,11,13,13,10,12,13, 8,11,11,11,14,13,11,14,
13,
};
 
static const static_codebook _44u1__p1_0 = {
4, 81,
(char *)_vq_lengthlist__44u1__p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u1__p1_0,
0
};
 
static const long _vq_quantlist__44u1__p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u1__p2_0[] = {
2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 8, 6,
8, 8, 5, 7, 7, 6, 8, 8, 7, 8, 8, 4, 7, 7, 7, 8,
8, 7, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
8,10, 8, 8,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 8, 6,
8, 8, 8,10,10, 8, 8,10, 6, 8, 8, 8,10,10, 8,10,
9,
};
 
static const static_codebook _44u1__p2_0 = {
4, 81,
(char *)_vq_lengthlist__44u1__p2_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u1__p2_0,
0
};
 
static const long _vq_quantlist__44u1__p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u1__p3_0[] = {
1, 5, 5, 8, 8, 5, 8, 7, 9, 9, 5, 7, 8, 9, 9, 9,
10, 9,12,12, 9, 9,10,12,12, 6, 8, 8,11,10, 8,10,
10,11,11, 8, 9,10,11,11,10,11,11,14,13,10,11,11,
13,13, 5, 8, 8,10,10, 8,10,10,11,11, 8,10,10,11,
11,10,11,11,13,13,10,11,11,13,13, 9,11,11,15,14,
10,12,12,15,14,10,12,11,15,14,13,14,14,16,16,12,
14,13,17,15, 9,11,11,14,15,10,11,12,14,16,10,11,
12,14,16,12,13,14,16,16,13,13,15,15,18, 5, 8, 8,
11,11, 8,10,10,12,12, 8,10,10,12,13,11,12,12,14,
14,11,12,12,15,15, 8,10,10,13,13,10,12,12,13,13,
10,12,12,14,14,12,13,13,15,15,12,13,13,16,16, 7,
10,10,12,12,10,12,11,13,13,10,12,12,13,14,12,13,
12,15,14,12,13,13,16,16,10,12,12,17,16,12,13,13,
16,15,11,13,13,17,17,15,15,15,16,17,14,15,15,19,
19,10,12,12,15,16,11,13,12,15,18,11,13,13,16,16,
14,15,15,17,17,14,15,15,17,19, 5, 8, 8,11,11, 8,
10,10,12,12, 8,10,10,12,12,11,12,12,16,15,11,12,
12,14,15, 7,10,10,13,13,10,12,12,14,13,10,11,12,
13,13,12,13,13,16,16,12,12,13,15,15, 8,10,10,13,
13,10,12,12,14,14,10,12,12,13,13,12,13,13,16,16,
12,13,13,15,15,10,12,12,16,15,11,13,13,17,16,11,
12,13,16,15,13,15,15,19,17,14,15,14,17,16,10,12,
12,16,16,11,13,13,16,17,12,13,13,15,17,14,15,15,
17,19,14,15,15,17,17, 8,11,11,16,16,10,13,12,17,
17,10,12,13,16,16,15,17,16,20,19,14,15,17,18,19,
9,12,12,16,17,11,13,14,17,18,11,13,13,19,18,16,
17,18,19,19,15,16,16,19,19, 9,12,12,16,17,11,14,
13,18,17,11,13,13,17,17,16,17,16,20,19,14,16,16,
18,18,12,15,15,19,17,14,15,16, 0,20,13,15,16,20,
17,18,16,20, 0, 0,15,16,19,20, 0,12,15,14,18,19,
13,16,15,20,19,13,16,15,20,18,17,18,17, 0,20,16,
17,16, 0, 0, 8,11,11,16,15,10,12,12,17,17,10,13,
13,17,16,14,16,15,18,20,15,16,16,19,19, 9,12,12,
16,16,11,13,13,17,16,11,13,14,17,18,15,15,16,20,
20,16,16,17,19,19, 9,13,12,16,17,11,14,13,17,17,
11,14,14,18,17,14,16,15,18,19,16,17,18,18,19,12,
14,15,19,18,13,15,16,18, 0,13,14,15, 0, 0,16,16,
17,20, 0,17,17,20,20, 0,12,15,15,19,20,13,15,15,
0, 0,14,16,15, 0, 0,15,18,16, 0, 0,17,18,16, 0,
19,
};
 
static const static_codebook _44u1__p3_0 = {
4, 625,
(char *)_vq_lengthlist__44u1__p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u1__p3_0,
0
};
 
static const long _vq_quantlist__44u1__p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u1__p4_0[] = {
4, 5, 5, 9, 9, 5, 6, 6, 9, 9, 5, 6, 6, 9, 9, 9,
10, 9,12,12, 9, 9,10,12,12, 5, 7, 7,10,10, 7, 7,
8,10,10, 6, 7, 8,10,10,10,10,10,11,13,10, 9,10,
12,13, 5, 7, 7,10,10, 6, 8, 7,10,10, 7, 8, 7,10,
10, 9,10,10,12,12,10,10,10,13,11, 9,10,10,13,13,
10,11,10,13,13,10,10,10,13,13,12,12,13,14,14,12,
12,13,14,14, 9,10,10,13,13,10,10,10,13,13,10,10,
10,13,13,12,13,12,15,14,12,13,12,15,15, 5, 7, 6,
10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,10,13,
13,10,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,10,11,
8, 9, 9,11,11,11,10,11,11,14,11,11,11,13,13, 6,
8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
10,14,11,10,11,11,13,13,10,11,11,14,13,10,10,11,
14,13,10,11,11,14,14,12,11,13,12,16,13,14,14,15,
15,10,10,11,13,14,10,11,10,14,13,10,11,11,14,14,
12,13,12,15,13,13,13,14,15,16, 5, 7, 7,10,10, 7,
8, 8,10,10, 7, 8, 8,10,10,10,10,10,13,13,10,10,
11,12,13, 6, 8, 8,11,10, 8, 9, 9,11,11, 7, 8, 9,
10,11,10,11,11,13,13,10,10,11,11,13, 6, 8, 8,10,
11, 8, 9, 9,11,11, 8, 9, 8,12,10,10,11,11,13,13,
10,11,10,14,11,10,10,10,14,13,10,11,11,14,13,10,
10,11,13,13,12,14,14,16,16,12,12,13,13,15,10,11,
11,13,14,10,11,11,14,15,10,11,10,13,13,13,14,13,
16,16,12,13,11,15,12, 9,10,10,13,13,10,11,11,14,
13,10,10,11,13,14,13,14,13,16,16,13,13,13,15,16,
9,10,10,13,13,10,10,11,13,14,10,11,11,15,13,13,
13,14,14,18,13,13,14,16,15, 9,10,10,13,14,10,11,
10,14,13,10,11,11,13,14,13,14,13,16,15,13,13,14,
15,16,12,13,12,16,14,11,11,13,15,15,13,14,13,16,
15,15,12,16,12,17,14,15,15,17,17,12,13,13,14,16,
11,13,11,16,15,12,13,14,15,16,14,15,13, 0,14,14,
16,16, 0, 0, 9,10,10,13,13,10,11,10,14,14,10,11,
11,13,13,12,13,13,14,16,13,14,14,16,16, 9,10,10,
14,14,11,11,11,14,13,10,10,11,14,14,13,13,13,16,
16,13,13,14,14,17, 9,10,10,13,14,10,11,11,13,15,
10,11,10,14,14,13,13,13,14,17,13,14,13,17,14,12,
13,13,16,14,13,14,13,16,15,12,12,13,15,16,15,15,
16,18,16,15,13,15,14, 0,12,12,13,14,16,13,13,14,
15,16,11,12,11,16,14,15,16,16,17,17,14,15,12,17,
12,
};
 
static const static_codebook _44u1__p4_0 = {
4, 625,
(char *)_vq_lengthlist__44u1__p4_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u1__p4_0,
0
};
 
static const long _vq_quantlist__44u1__p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u1__p5_0[] = {
1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 7, 8, 8, 9, 9,
9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,10, 7, 8, 8,
9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
9, 9,10,10,11,11,12,12, 9, 9, 9,10,11,11,11,12,
12,
};
 
static const static_codebook _44u1__p5_0 = {
2, 81,
(char *)_vq_lengthlist__44u1__p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44u1__p5_0,
0
};
 
static const long _vq_quantlist__44u1__p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u1__p6_0[] = {
1, 4, 4, 6, 6, 8, 8,10, 9,11,10,14,13, 4, 6, 5,
8, 8, 9, 9,11,10,11,11,14,14, 4, 5, 6, 8, 8, 9,
9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11,
12,12,16,15, 7, 8, 8, 9, 9,10,10,11,11,12,12,15,
15, 9,10,10,10,10,11,11,12,12,12,12,15,15, 9,10,
9,10,11,11,11,12,12,12,13,15,15,10,10,11,11,11,
12,12,13,12,13,13,16,15,10,11,11,11,11,12,12,13,
12,13,13,16,17,11,11,12,12,12,13,13,13,14,14,15,
17,17,11,11,12,12,12,13,13,13,14,14,14,16,18,14,
15,15,15,15,16,16,16,16,17,18, 0, 0,14,15,15,15,
15,17,16,17,18,17,17,18, 0,
};
 
static const static_codebook _44u1__p6_0 = {
2, 169,
(char *)_vq_lengthlist__44u1__p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44u1__p6_0,
0
};
 
static const long _vq_quantlist__44u1__p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u1__p6_1[] = {
2, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5,
6, 6, 6, 6, 5, 6, 6, 6, 6,
};
 
static const static_codebook _44u1__p6_1 = {
2, 25,
(char *)_vq_lengthlist__44u1__p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u1__p6_1,
0
};
 
static const long _vq_quantlist__44u1__p7_0[] = {
3,
2,
4,
1,
5,
0,
6,
};
 
static const char _vq_lengthlist__44u1__p7_0[] = {
1, 3, 2, 9, 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8,
};
 
static const static_codebook _44u1__p7_0 = {
2, 49,
(char *)_vq_lengthlist__44u1__p7_0,
1, -518017024, 1626677248, 3, 0,
(long *)_vq_quantlist__44u1__p7_0,
0
};
 
static const long _vq_quantlist__44u1__p7_1[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u1__p7_1[] = {
1, 4, 4, 6, 6, 6, 6, 7, 7, 8, 8, 9, 9, 5, 7, 7,
8, 7, 7, 7, 9, 8,10, 9,10,11, 5, 7, 7, 8, 8, 7,
7, 8, 9,10,10,11,11, 6, 8, 8, 9, 9, 9, 9,11,10,
12,12,15,12, 6, 8, 8, 9, 9, 9, 9,11,11,12,11,14,
12, 7, 8, 8,10,10,12,12,13,13,13,15,13,13, 7, 8,
8,10,10,11,11,13,12,14,15,15,15, 9,10,10,11,12,
13,13,14,15,14,15,14,15, 8,10,10,12,12,14,14,15,
14,14,15,15,14,10,12,12,14,14,15,14,15,15,15,14,
15,15,10,12,12,13,14,15,14,15,15,14,15,15,15,12,
15,13,15,14,15,15,15,15,15,15,15,15,13,13,15,15,
15,15,15,15,15,15,15,15,15,
};
 
static const static_codebook _44u1__p7_1 = {
2, 169,
(char *)_vq_lengthlist__44u1__p7_1,
1, -523010048, 1618608128, 4, 0,
(long *)_vq_quantlist__44u1__p7_1,
0
};
 
static const long _vq_quantlist__44u1__p7_2[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u1__p7_2[] = {
2, 5, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 5, 5, 6,
7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 5, 6, 5, 7, 7, 8,
8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8, 8, 8, 8, 9, 8,
9, 9, 9, 9, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
9, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 7, 8,
8, 9, 8, 9, 8, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9,
9, 9, 9, 9, 9, 9,10,10, 8, 8, 9, 9, 9, 9, 9, 9,
9, 9,10, 9,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 9, 9, 9, 9, 9,
9, 9, 9,10, 9, 9,10,10, 9,
};
 
static const static_codebook _44u1__p7_2 = {
2, 169,
(char *)_vq_lengthlist__44u1__p7_2,
1, -531103744, 1611661312, 4, 0,
(long *)_vq_quantlist__44u1__p7_2,
0
};
 
static const char _huff_lengthlist__44u1__short[] = {
12,13,14,13,17,12,15,17, 5, 5, 6,10,10,11,15,16,
4, 3, 3, 7, 5, 7,10,16, 7, 7, 7,10, 9,11,12,16,
6, 5, 5, 9, 5, 6,10,16, 8, 7, 7, 9, 6, 7, 9,16,
11, 7, 3, 6, 4, 5, 8,16,12, 9, 4, 8, 5, 7, 9,16,
};
 
static const static_codebook _huff_book__44u1__short = {
2, 64,
(char *)_huff_lengthlist__44u1__short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44u2__long[] = {
5, 9,14,12,15,13,10,13, 7, 4, 5, 6, 8, 7, 8,12,
13, 4, 3, 5, 5, 6, 9,15,12, 6, 5, 6, 6, 6, 7,14,
14, 7, 4, 6, 4, 6, 8,15,12, 6, 6, 5, 5, 5, 6,14,
9, 7, 8, 6, 7, 5, 4,10,10,13,14,14,15,10, 6, 8,
};
 
static const static_codebook _huff_book__44u2__long = {
2, 64,
(char *)_huff_lengthlist__44u2__long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44u2__p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u2__p1_0[] = {
1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
11, 8,11,11, 8,11,11,11,13,14,11,13,13, 7,11,11,
10,13,12,11,14,14, 4, 8, 8, 8,11,11, 8,11,11, 8,
11,11,11,14,13,10,12,13, 8,11,11,11,13,13,11,13,
13,
};
 
static const static_codebook _44u2__p1_0 = {
4, 81,
(char *)_vq_lengthlist__44u2__p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u2__p1_0,
0
};
 
static const long _vq_quantlist__44u2__p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u2__p2_0[] = {
2, 5, 5, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6,
8, 8, 5, 6, 6, 6, 8, 7, 7, 8, 8, 5, 6, 6, 7, 8,
8, 6, 8, 8, 6, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
7,10, 8, 8,10,10, 5, 6, 6, 6, 8, 8, 7, 8, 8, 6,
8, 8, 8,10,10, 8, 8,10, 6, 8, 8, 8,10,10, 8,10,
9,
};
 
static const static_codebook _44u2__p2_0 = {
4, 81,
(char *)_vq_lengthlist__44u2__p2_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u2__p2_0,
0
};
 
static const long _vq_quantlist__44u2__p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u2__p3_0[] = {
2, 4, 4, 7, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8,
9, 9,12,11, 8, 9, 9,11,12, 5, 7, 7,10,10, 7, 9,
9,11,11, 7, 9, 9,10,11,10,11,11,13,13, 9,10,11,
12,13, 5, 7, 7,10,10, 7, 9, 9,11,10, 7, 9, 9,11,
11, 9,11,10,13,13,10,11,11,13,13, 8,10,10,14,13,
10,11,11,15,14, 9,11,11,15,14,13,14,13,16,14,12,
13,13,15,16, 8,10,10,13,14, 9,11,11,14,15,10,11,
11,14,15,12,13,13,15,15,12,13,14,15,16, 5, 7, 7,
10,10, 7, 9, 9,11,11, 7, 9, 9,11,12,10,11,11,14,
13,10,11,11,14,14, 7, 9, 9,12,12, 9,11,11,13,13,
9,11,11,13,13,12,13,12,14,14,11,12,13,15,15, 7,
9, 9,12,12, 8,11,10,13,12, 9,11,11,13,13,11,13,
12,15,13,11,13,13,15,16, 9,12,11,15,15,11,12,12,
16,15,11,12,13,16,16,13,14,15,16,15,13,15,15,17,
17, 9,11,11,14,15,10,12,12,15,15,11,13,12,15,16,
13,15,14,16,16,13,15,15,17,19, 5, 7, 7,10,10, 7,
9, 9,12,11, 7, 9, 9,11,11,10,11,11,14,14,10,11,
11,13,14, 7, 9, 9,12,12, 9,11,11,13,13, 9,10,11,
12,13,11,13,12,16,15,11,12,12,14,15, 7, 9, 9,12,
12, 9,11,11,13,13, 9,11,11,13,12,11,13,12,15,16,
12,13,13,15,14, 9,11,11,15,14,11,13,12,16,15,10,
11,12,15,15,13,14,14,18,17,13,14,14,15,17,10,11,
11,14,15,11,13,12,15,17,11,13,12,15,16,13,15,14,
18,17,14,15,15,16,18, 7,10,10,14,14,10,12,12,15,
15,10,12,12,15,15,14,15,15,18,17,13,15,15,16,16,
9,11,11,16,15,11,13,13,16,18,11,13,13,16,16,15,
16,16, 0, 0,14,15,16,18,17, 9,11,11,15,15,10,13,
12,17,16,11,12,13,16,17,14,15,16,19,19,14,15,15,
0,20,12,14,14, 0, 0,13,14,16,19,18,13,15,16,20,
17,16,18, 0, 0, 0,15,16,17,18,19,11,14,14, 0,19,
12,15,14,17,17,13,15,15, 0, 0,16,17,15,20,19,15,
17,16,19, 0, 8,10,10,14,15,10,12,11,15,15,10,11,
12,16,15,13,14,14,19,17,14,15,15, 0, 0, 9,11,11,
16,15,11,13,13,17,16,10,12,13,16,17,14,15,15,18,
18,14,15,16,20,19, 9,12,12, 0,15,11,13,13,16,17,
11,13,13,19,17,14,16,16,18,17,15,16,16,17,19,11,
14,14,18,18,13,14,15, 0, 0,12,14,15,19,18,15,16,
19, 0,19,15,16,19,19,17,12,14,14,16,19,13,15,15,
0,17,13,15,14,18,18,15,16,15, 0,18,16,17,17, 0,
0,
};
 
static const static_codebook _44u2__p3_0 = {
4, 625,
(char *)_vq_lengthlist__44u2__p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u2__p3_0,
0
};
 
static const long _vq_quantlist__44u2__p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u2__p4_0[] = {
4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 9,
9, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
8,10,10, 7, 7, 8,10,10,10,10,10,11,12, 9,10,10,
11,12, 5, 7, 7, 9, 9, 6, 8, 7,10,10, 7, 8, 8,10,
10, 9,10,10,12,11, 9,10,10,12,11, 9,10,10,12,12,
10,10,10,13,12, 9,10,10,12,13,12,12,12,14,14,11,
12,12,13,14, 9,10,10,12,12, 9,10,10,12,13,10,10,
10,12,13,11,12,12,14,13,12,12,12,14,13, 5, 7, 7,
10, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,
12,10,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,11,11,
8, 9, 9,11,11,10,11,11,12,13,10,11,11,13,13, 6,
8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
10,13,11,10,11,11,13,13, 9,10,10,13,13,10,11,11,
13,13,10,11,11,14,13,12,11,13,12,15,12,13,13,15,
15, 9,10,10,12,13,10,11,10,13,13,10,11,11,13,13,
12,13,11,15,13,12,13,13,15,15, 5, 7, 7, 9,10, 7,
8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,12,10,10,
11,12,12, 6, 8, 8,10,10, 8, 9, 9,11,11, 7, 8, 9,
10,11,10,11,11,13,13,10,10,11,11,13, 7, 8, 8,10,
11, 8, 9, 9,11,11, 8, 9, 8,11,11,10,11,11,13,13,
10,11,11,13,12, 9,10,10,13,12,10,11,11,14,13,10,
10,11,13,13,12,13,13,15,15,12,11,13,12,14, 9,10,
10,12,13,10,11,11,13,14,10,11,11,13,13,12,13,13,
15,15,12,13,12,15,12, 8, 9, 9,12,12, 9,11,10,13,
13, 9,10,10,13,13,12,13,13,15,15,12,12,12,14,14,
9,10,10,13,13,10,11,11,13,14,10,11,11,14,12,13,
13,14,14,16,12,13,13,15,14, 9,10,10,13,13,10,11,
10,14,13,10,11,11,13,14,12,14,13,16,14,13,13,13,
14,15,11,13,12,15,14,11,12,13,14,15,12,13,13,16,
15,14,12,15,12,16,14,15,15,17,16,11,12,12,14,15,
11,13,11,15,14,12,13,13,15,16,13,15,12,17,13,14,
15,15,16,16, 8, 9, 9,12,12, 9,10,10,13,13, 9,10,
10,13,13,12,13,12,14,14,12,13,13,15,15, 9,10,10,
13,13,10,11,11,14,13,10,10,11,13,14,12,13,13,15,
14,12,12,14,14,16, 9,10,10,13,13,10,11,11,13,14,
10,11,11,14,13,13,13,13,15,15,13,14,13,16,14,11,
12,12,14,14,12,13,13,16,15,11,12,13,14,15,14,15,
15,16,16,14,13,15,13,17,11,12,12,14,15,12,13,13,
15,16,11,13,12,15,15,14,15,14,16,16,14,15,12,17,
13,
};
 
static const static_codebook _44u2__p4_0 = {
4, 625,
(char *)_vq_lengthlist__44u2__p4_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u2__p4_0,
0
};
 
static const long _vq_quantlist__44u2__p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u2__p5_0[] = {
1, 4, 4, 7, 7, 8, 8, 9, 9, 4, 6, 5, 8, 8, 8, 8,
10,10, 4, 5, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9,
9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 8, 8, 8,
9, 9,10,11,12,12, 8, 8, 8, 9, 9,10,10,12,12,10,
10,10,11,11,12,12,13,13,10,10,10,11,11,12,12,13,
13,
};
 
static const static_codebook _44u2__p5_0 = {
2, 81,
(char *)_vq_lengthlist__44u2__p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44u2__p5_0,
0
};
 
static const long _vq_quantlist__44u2__p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u2__p6_0[] = {
1, 4, 4, 6, 6, 8, 8,10,10,11,11,14,13, 4, 6, 5,
8, 8, 9, 9,11,10,12,11,15,14, 4, 5, 6, 8, 8, 9,
9,11,11,11,11,14,14, 6, 8, 8,10, 9,11,11,11,11,
12,12,15,15, 6, 8, 8, 9, 9,11,11,11,12,12,12,15,
15, 8,10,10,11,11,11,11,12,12,13,13,15,16, 8,10,
10,11,11,11,11,12,12,13,13,16,16,10,11,11,12,12,
12,12,13,13,13,13,17,16,10,11,11,12,12,12,12,13,
13,13,14,16,17,11,12,12,13,13,13,13,14,14,15,14,
18,17,11,12,12,13,13,13,13,14,14,14,15,19,18,14,
15,15,15,15,16,16,18,19,18,18, 0, 0,14,15,15,16,
15,17,17,16,18,17,18, 0, 0,
};
 
static const static_codebook _44u2__p6_0 = {
2, 169,
(char *)_vq_lengthlist__44u2__p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44u2__p6_0,
0
};
 
static const long _vq_quantlist__44u2__p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u2__p6_1[] = {
2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
6, 5, 6, 6, 5, 5, 6, 6, 6,
};
 
static const static_codebook _44u2__p6_1 = {
2, 25,
(char *)_vq_lengthlist__44u2__p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u2__p6_1,
0
};
 
static const long _vq_quantlist__44u2__p7_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u2__p7_0[] = {
1, 3, 2,12,12,12,12,12,12, 4,12,12,12,12,12,12,
12,12, 5,12,12,12,12,12,12,12,12,12,12,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,
};
 
static const static_codebook _44u2__p7_0 = {
2, 81,
(char *)_vq_lengthlist__44u2__p7_0,
1, -516612096, 1626677248, 4, 0,
(long *)_vq_quantlist__44u2__p7_0,
0
};
 
static const long _vq_quantlist__44u2__p7_1[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u2__p7_1[] = {
1, 4, 4, 7, 6, 7, 6, 8, 7, 9, 7, 9, 8, 4, 7, 6,
8, 8, 9, 8,10, 9,10,10,11,11, 4, 7, 7, 8, 8, 8,
8, 9,10,11,11,11,11, 6, 8, 8,10,10,10,10,11,11,
12,12,12,12, 7, 8, 8,10,10,10,10,11,11,12,12,13,
13, 7, 9, 9,11,10,12,12,13,13,14,13,14,14, 7, 9,
9,10,11,11,12,13,13,13,13,16,14, 9,10,10,12,12,
13,13,14,14,15,16,15,16, 9,10,10,12,12,12,13,14,
14,14,15,16,15,10,12,12,13,13,15,13,16,16,15,17,
17,17,10,11,11,12,14,14,14,15,15,17,17,15,17,11,
12,12,14,14,14,15,15,15,17,16,17,17,10,12,12,13,
14,14,14,17,15,17,17,17,17,
};
 
static const static_codebook _44u2__p7_1 = {
2, 169,
(char *)_vq_lengthlist__44u2__p7_1,
1, -523010048, 1618608128, 4, 0,
(long *)_vq_quantlist__44u2__p7_1,
0
};
 
static const long _vq_quantlist__44u2__p7_2[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u2__p7_2[] = {
2, 5, 5, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 5, 6, 6,
7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 5, 6, 6, 7, 7, 8,
7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7, 8, 8, 8, 8, 8,
9, 9, 9, 9, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
9, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 7, 8,
8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 9,
9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9,
};
 
static const static_codebook _44u2__p7_2 = {
2, 169,
(char *)_vq_lengthlist__44u2__p7_2,
1, -531103744, 1611661312, 4, 0,
(long *)_vq_quantlist__44u2__p7_2,
0
};
 
static const char _huff_lengthlist__44u2__short[] = {
13,15,17,17,15,15,12,17,11, 9, 7,10,10, 9,12,17,
10, 6, 3, 6, 5, 7,10,17,15,10, 6, 9, 8, 9,11,17,
15, 8, 4, 7, 3, 5, 9,16,16,10, 5, 8, 4, 5, 8,16,
13,11, 5, 8, 3, 3, 5,14,13,12, 7,10, 5, 5, 7,14,
};
 
static const static_codebook _huff_book__44u2__short = {
2, 64,
(char *)_huff_lengthlist__44u2__short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44u3__long[] = {
6, 9,13,12,14,11,10,13, 8, 4, 5, 7, 8, 7, 8,12,
11, 4, 3, 5, 5, 7, 9,14,11, 6, 5, 6, 6, 6, 7,13,
13, 7, 5, 6, 4, 5, 7,14,11, 7, 6, 6, 5, 5, 6,13,
9, 7, 8, 6, 7, 5, 3, 9, 9,12,13,12,14,10, 6, 7,
};
 
static const static_codebook _huff_book__44u3__long = {
2, 64,
(char *)_huff_lengthlist__44u3__long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44u3__p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u3__p1_0[] = {
1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,10,11, 8,
10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
11, 8,11,11, 8,11,11,11,13,14,11,14,14, 8,11,11,
10,14,12,11,14,14, 4, 8, 8, 8,11,11, 8,11,11, 7,
11,11,11,14,14,10,12,14, 8,11,11,11,14,14,11,14,
13,
};
 
static const static_codebook _44u3__p1_0 = {
4, 81,
(char *)_vq_lengthlist__44u3__p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u3__p1_0,
0
};
 
static const long _vq_quantlist__44u3__p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u3__p2_0[] = {
2, 5, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6,
8, 8, 5, 6, 6, 6, 8, 8, 7, 8, 8, 5, 7, 6, 7, 8,
8, 6, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
8,10, 8, 8,10,10, 5, 6, 6, 6, 8, 8, 7, 8, 8, 6,
8, 8, 8,10,10, 8, 8,10, 7, 8, 8, 8,10,10, 8,10,
9,
};
 
static const static_codebook _44u3__p2_0 = {
4, 81,
(char *)_vq_lengthlist__44u3__p2_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u3__p2_0,
0
};
 
static const long _vq_quantlist__44u3__p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u3__p3_0[] = {
2, 4, 4, 7, 7, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8,
9, 9,12,12, 8, 9, 9,11,12, 5, 7, 7,10,10, 7, 9,
9,11,11, 7, 9, 9,10,11,10,11,11,13,13, 9,10,11,
13,13, 5, 7, 7,10,10, 7, 9, 9,11,10, 7, 9, 9,11,
11, 9,11,10,13,13,10,11,11,14,13, 8,10,10,14,13,
10,11,11,15,14, 9,11,11,14,14,13,14,13,16,16,12,
13,13,15,15, 8,10,10,13,14, 9,11,11,14,14,10,11,
11,14,15,12,13,13,15,15,13,14,14,15,16, 5, 7, 7,
10,10, 7, 9, 9,11,11, 7, 9, 9,11,12,10,11,11,14,
14,10,11,11,14,14, 7, 9, 9,12,12, 9,11,11,13,13,
9,11,11,13,13,12,12,13,15,15,11,12,13,15,16, 7,
9, 9,11,11, 8,11,10,13,12, 9,11,11,13,13,11,13,
12,15,13,11,13,13,15,16, 9,12,11,15,14,11,12,13,
16,15,11,13,13,15,16,14,14,15,17,16,13,15,16, 0,
17, 9,11,11,15,15,10,13,12,15,15,11,13,13,15,16,
13,15,13,16,15,14,16,15, 0,19, 5, 7, 7,10,10, 7,
9, 9,11,11, 7, 9, 9,11,11,10,12,11,14,14,10,11,
12,14,14, 7, 9, 9,12,12, 9,11,11,14,13, 9,10,11,
12,13,11,13,13,16,16,11,12,13,13,16, 7, 9, 9,12,
12, 9,11,11,13,13, 9,11,11,13,13,11,13,13,15,15,
12,13,12,15,14, 9,11,11,15,14,11,13,12,16,16,10,
12,12,15,15,13,15,15,17,19,13,14,15,16,17,10,12,
12,15,15,11,13,13,16,16,11,13,13,15,16,13,15,15,
0, 0,14,15,15,16,16, 8,10,10,14,14,10,12,12,15,
15,10,12,11,15,16,14,15,15,19,20,13,14,14,18,16,
9,11,11,15,15,11,13,13,17,16,11,13,13,16,16,15,
17,17,20,20,14,15,16,17,20, 9,11,11,15,15,10,13,
12,16,15,11,13,13,15,17,14,16,15,18, 0,14,16,15,
18,20,12,14,14, 0, 0,14,14,16, 0, 0,13,16,15, 0,
0,17,17,18, 0, 0,16,17,19,19, 0,12,14,14,18, 0,
12,16,14, 0,17,13,15,15,18, 0,16,18,17, 0,17,16,
18,17, 0, 0, 7,10,10,14,14,10,12,11,15,15,10,12,
12,16,15,13,15,15,18, 0,14,15,15,17, 0, 9,11,11,
15,15,11,13,13,16,16,11,12,13,16,16,14,15,16,17,
17,14,16,16,16,18, 9,11,12,16,16,11,13,13,17,17,
11,14,13,20,17,15,16,16,19, 0,15,16,17, 0,19,11,
13,14,17,16,14,15,15,20,18,13,14,15,17,19,16,18,
18, 0,20,16,16,19,17, 0,12,15,14,17, 0,14,15,15,
18,19,13,16,15,19,20,15,18,18, 0,20,17, 0,16, 0,
0,
};
 
static const static_codebook _44u3__p3_0 = {
4, 625,
(char *)_vq_lengthlist__44u3__p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u3__p3_0,
0
};
 
static const long _vq_quantlist__44u3__p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u3__p4_0[] = {
4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 9,
9, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
8,10,10, 7, 7, 8,10,10, 9,10,10,11,12, 9,10,10,
11,12, 5, 7, 7, 9, 9, 7, 8, 7,10,10, 7, 8, 8,10,
10, 9,10, 9,12,11, 9,10,10,12,11, 9,10, 9,12,12,
9,10,10,13,12, 9,10,10,12,13,12,12,12,14,14,11,
12,12,13,14, 9, 9,10,12,12, 9,10,10,12,12, 9,10,
10,12,13,11,12,11,14,13,12,12,12,14,13, 5, 7, 7,
9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,
12, 9,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,11,11,
8, 9, 9,11,11,11,11,11,12,13,10,11,11,13,13, 6,
8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
10,13,11,10,11,11,13,13, 9,11,10,13,12,10,11,11,
13,13,10,11,11,13,13,12,12,13,12,15,12,13,13,15,
15, 9,10,10,12,13,10,11,10,13,12,10,11,11,13,14,
12,13,11,15,13,12,13,13,15,15, 5, 7, 7, 9, 9, 7,
8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12,10,10,
11,12,12, 6, 8, 8,10,10, 8, 9, 9,11,11, 7, 8, 9,
10,11,10,11,11,13,13,10,10,11,11,13, 7, 8, 8,10,
10, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,11,13,13,
11,11,11,13,12, 9,10,10,13,12,10,11,11,14,13,10,
10,11,12,13,12,13,13,15,15,12,11,13,13,14, 9,10,
11,12,13,10,11,11,13,13,10,11,11,13,13,12,13,13,
15,15,12,13,12,15,12, 8, 9, 9,12,12, 9,11,10,13,
13, 9,10,10,13,13,12,13,13,15,14,12,12,12,14,13,
9,10,10,13,12,10,11,11,13,13,10,11,11,14,12,13,
13,14,14,16,12,13,13,15,15, 9,10,10,13,13,10,11,
10,14,13,10,11,11,13,14,12,14,13,15,14,13,13,13,
15,15,11,13,12,15,14,11,12,13,14,15,12,13,13,16,
14,14,12,15,12,16,14,15,15,17,15,11,12,12,14,14,
11,13,11,15,14,12,13,13,15,15,13,15,12,17,13,14,
15,15,16,16, 8, 9, 9,12,12, 9,10,10,12,13, 9,10,
10,13,13,12,12,12,14,14,12,13,13,15,15, 9,10,10,
13,12,10,11,11,14,13,10,10,11,13,14,12,13,13,15,
15,12,12,13,14,16, 9,10,10,13,13,10,11,11,13,14,
10,11,11,14,13,12,13,13,14,15,13,14,13,16,14,11,
12,12,14,14,12,13,13,15,14,11,12,13,14,15,14,15,
15,16,16,13,13,15,13,16,11,12,12,14,15,12,13,13,
14,15,11,13,12,15,14,14,15,15,16,16,14,15,12,16,
13,
};
 
static const static_codebook _44u3__p4_0 = {
4, 625,
(char *)_vq_lengthlist__44u3__p4_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u3__p4_0,
0
};
 
static const long _vq_quantlist__44u3__p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u3__p5_0[] = {
2, 3, 3, 6, 6, 7, 7, 9, 9, 4, 5, 5, 7, 7, 8, 8,
10,10, 4, 5, 5, 7, 7, 8, 8,10,10, 6, 7, 7, 8, 8,
9, 9,11,10, 6, 7, 7, 8, 8, 9, 9,10,10, 7, 8, 8,
9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
10,10,11,10,11,11,12,12, 9,10,10,10,10,11,11,12,
12,
};
 
static const static_codebook _44u3__p5_0 = {
2, 81,
(char *)_vq_lengthlist__44u3__p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44u3__p5_0,
0
};
 
static const long _vq_quantlist__44u3__p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u3__p6_0[] = {
1, 4, 4, 6, 6, 8, 8, 9, 9,10,11,13,14, 4, 6, 5,
8, 8, 9, 9,10,10,11,11,14,14, 4, 6, 6, 8, 8, 9,
9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11,
12,12,15,15, 6, 8, 8, 9, 9,10,11,11,11,12,12,15,
15, 8, 9, 9,11,10,11,11,12,12,13,13,15,16, 8, 9,
9,10,11,11,11,12,12,13,13,16,16,10,10,11,11,11,
12,12,13,13,13,14,17,16, 9,10,11,12,11,12,12,13,
13,13,13,16,18,11,12,11,12,12,13,13,13,14,15,14,
17,17,11,11,12,12,12,13,13,13,14,14,15,18,17,14,
15,15,15,15,16,16,17,17,19,18, 0,20,14,15,14,15,
15,16,16,16,17,18,16,20,18,
};
 
static const static_codebook _44u3__p6_0 = {
2, 169,
(char *)_vq_lengthlist__44u3__p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44u3__p6_0,
0
};
 
static const long _vq_quantlist__44u3__p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u3__p6_1[] = {
2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
6, 5, 6, 6, 5, 5, 6, 6, 6,
};
 
static const static_codebook _44u3__p6_1 = {
2, 25,
(char *)_vq_lengthlist__44u3__p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u3__p6_1,
0
};
 
static const long _vq_quantlist__44u3__p7_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u3__p7_0[] = {
1, 3, 3,10,10,10,10,10,10, 4,10,10,10,10,10,10,
10,10, 4,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9,
};
 
static const static_codebook _44u3__p7_0 = {
2, 81,
(char *)_vq_lengthlist__44u3__p7_0,
1, -515907584, 1627381760, 4, 0,
(long *)_vq_quantlist__44u3__p7_0,
0
};
 
static const long _vq_quantlist__44u3__p7_1[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__44u3__p7_1[] = {
1, 4, 4, 6, 6, 7, 6, 8, 7, 9, 8,10, 9,11,11, 4,
7, 7, 8, 7, 9, 9,10,10,11,11,11,11,12,12, 4, 7,
7, 7, 7, 9, 9,10,10,11,11,12,12,12,11, 6, 8, 8,
9, 9,10,10,11,11,12,12,13,12,13,13, 6, 8, 8, 9,
9,10,11,11,11,12,12,13,14,13,13, 8, 9, 9,11,11,
12,12,12,13,14,13,14,14,14,15, 8, 9, 9,11,11,11,
12,13,14,13,14,15,17,14,15, 9,10,10,12,12,13,13,
13,14,15,15,15,16,16,16, 9,11,11,12,12,13,13,14,
14,14,15,16,16,16,16,10,12,12,13,13,14,14,15,15,
15,16,17,17,17,17,10,12,11,13,13,15,14,15,14,16,
17,16,16,16,16,11,13,12,14,14,14,14,15,16,17,16,
17,17,17,17,11,13,12,14,14,14,15,17,16,17,17,17,
17,17,17,12,13,13,15,16,15,16,17,17,16,16,17,17,
17,17,12,13,13,15,15,15,16,17,17,17,16,17,16,17,
17,
};
 
static const static_codebook _44u3__p7_1 = {
2, 225,
(char *)_vq_lengthlist__44u3__p7_1,
1, -522338304, 1620115456, 4, 0,
(long *)_vq_quantlist__44u3__p7_1,
0
};
 
static const long _vq_quantlist__44u3__p7_2[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44u3__p7_2[] = {
2, 5, 5, 7, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
10,10, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9,
9,10, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
10,10,10,10, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,
9,10,10,10,10, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
10,10,10,10,10,10, 7, 8, 8, 9, 8, 9, 9, 9, 9,10,
9,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9, 9,
9,10,10,10,10,10,10,10, 8, 9, 8, 9, 9, 9, 9,10,
9,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,
9,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,
9,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,10, 9,
10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,10,
10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
10,10,10,10,10,10,10,10,10,10,10,10,10,11, 9,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,11, 9,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
9,10,10,10,10,10,10,10,10,10,10,10,11,11,11,10,
11,
};
 
static const static_codebook _44u3__p7_2 = {
2, 289,
(char *)_vq_lengthlist__44u3__p7_2,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44u3__p7_2,
0
};
 
static const char _huff_lengthlist__44u3__short[] = {
14,14,14,15,13,15,12,16,10, 8, 7, 9, 9, 8,12,16,
10, 5, 4, 6, 5, 6, 9,16,14, 8, 6, 8, 7, 8,10,16,
14, 7, 4, 6, 3, 5, 8,16,15, 9, 5, 7, 4, 4, 7,16,
13,10, 6, 7, 4, 3, 4,13,13,12, 7, 9, 5, 5, 6,12,
};
 
static const static_codebook _huff_book__44u3__short = {
2, 64,
(char *)_huff_lengthlist__44u3__short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44u4__long[] = {
3, 8,12,12,13,12,11,13, 5, 4, 6, 7, 8, 8, 9,13,
9, 5, 4, 5, 5, 7, 9,13, 9, 6, 5, 6, 6, 7, 8,12,
12, 7, 5, 6, 4, 5, 8,13,11, 7, 6, 6, 5, 5, 6,12,
10, 8, 8, 7, 7, 5, 3, 8,10,12,13,12,12, 9, 6, 7,
};
 
static const static_codebook _huff_book__44u4__long = {
2, 64,
(char *)_huff_lengthlist__44u4__long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44u4__p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u4__p1_0[] = {
1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,10,11, 8,
10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
11, 8,11,11, 8,11,11,11,13,14,11,15,14, 8,11,11,
10,13,12,11,14,14, 4, 8, 8, 8,11,11, 8,11,11, 7,
11,11,11,15,14,10,12,14, 8,11,11,11,14,14,11,14,
13,
};
 
static const static_codebook _44u4__p1_0 = {
4, 81,
(char *)_vq_lengthlist__44u4__p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u4__p1_0,
0
};
 
static const long _vq_quantlist__44u4__p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u4__p2_0[] = {
2, 5, 5, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6,
8, 8, 5, 6, 6, 6, 8, 8, 7, 8, 8, 5, 7, 6, 6, 8,
8, 6, 8, 8, 6, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
8,10, 8, 8,10,10, 5, 6, 6, 6, 8, 8, 6, 8, 8, 6,
8, 8, 8,10,10, 8, 8,10, 6, 8, 8, 8,10,10, 8,10,
9,
};
 
static const static_codebook _44u4__p2_0 = {
4, 81,
(char *)_vq_lengthlist__44u4__p2_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u4__p2_0,
0
};
 
static const long _vq_quantlist__44u4__p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u4__p3_0[] = {
2, 4, 4, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8,
10, 9,12,12, 8, 9,10,12,12, 5, 7, 7,10,10, 7, 9,
9,11,11, 7, 9, 9,11,11,10,12,11,14,14, 9,10,11,
13,14, 5, 7, 7,10,10, 7, 9, 9,11,11, 7, 9, 9,11,
11, 9,11,10,14,13,10,11,11,14,14, 8,10,10,14,13,
10,12,12,15,14, 9,11,11,15,14,13,14,14,17,17,12,
14,14,16,16, 8,10,10,14,14, 9,11,11,14,15,10,12,
12,14,15,12,14,13,16,16,13,14,15,15,18, 4, 7, 7,
10,10, 7, 9, 9,12,11, 7, 9, 9,11,12,10,12,11,15,
14,10,11,12,14,15, 7, 9, 9,12,12, 9,11,12,13,13,
9,11,12,13,13,12,13,13,15,16,11,13,13,15,16, 7,
9, 9,12,12, 9,11,10,13,12, 9,11,12,13,14,11,13,
12,16,14,12,13,13,15,16,10,12,12,16,15,11,13,13,
17,16,11,13,13,17,16,14,15,15,17,17,14,16,16,18,
20, 9,11,11,15,16,11,13,12,16,16,11,13,13,16,17,
14,15,14,18,16,14,16,16,17,20, 5, 7, 7,10,10, 7,
9, 9,12,11, 7, 9,10,11,12,10,12,11,15,15,10,12,
12,14,14, 7, 9, 9,12,12, 9,12,11,14,13, 9,10,11,
12,13,12,13,14,16,16,11,12,13,14,16, 7, 9, 9,12,
12, 9,12,11,13,13, 9,12,11,13,13,11,13,13,16,16,
12,13,13,16,15, 9,11,11,16,14,11,13,13,16,16,11,
12,13,16,16,14,16,16,17,17,13,14,15,16,17,10,12,
12,15,15,11,13,13,16,17,11,13,13,16,16,14,16,15,
19,19,14,15,15,17,18, 8,10,10,14,14,10,12,12,15,
15,10,12,12,16,16,14,16,15,20,19,13,15,15,17,16,
9,12,12,16,16,11,13,13,16,18,11,14,13,16,17,16,
17,16,20, 0,15,16,18,18,20, 9,11,11,15,15,11,14,
12,17,16,11,13,13,17,17,15,17,15,20,20,14,16,16,
17, 0,13,15,14,18,16,14,15,16, 0,18,14,16,16, 0,
0,18,16, 0, 0,20,16,18,18, 0, 0,12,14,14,17,18,
13,15,14,20,18,14,16,15,19,19,16,20,16, 0,18,16,
19,17,19, 0, 8,10,10,14,14,10,12,12,16,15,10,12,
12,16,16,13,15,15,18,17,14,16,16,19, 0, 9,11,11,
16,15,11,14,13,18,17,11,12,13,17,18,14,17,16,18,
18,15,16,17,18,18, 9,12,12,16,16,11,13,13,16,18,
11,14,13,17,17,15,16,16,18,20,16,17,17,20,20,12,
14,14,18,17,14,16,16, 0,19,13,14,15,18, 0,16, 0,
0, 0, 0,16,16, 0,19,20,13,15,14, 0, 0,14,16,16,
18,19,14,16,15, 0,20,16,20,18, 0,20,17,20,17, 0,
0,
};
 
static const static_codebook _44u4__p3_0 = {
4, 625,
(char *)_vq_lengthlist__44u4__p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u4__p3_0,
0
};
 
static const long _vq_quantlist__44u4__p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u4__p4_0[] = {
4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 9,
9, 9,11,11, 8, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
8,10,10, 7, 7, 8,10,10, 9,10,10,11,12, 9,10,10,
11,12, 5, 7, 7, 9, 9, 7, 8, 7,10,10, 7, 8, 8,10,
10, 9,10,10,12,11, 9,10,10,12,11, 9,10, 9,12,12,
9,10,10,13,12, 9,10,10,12,12,12,12,12,14,14,11,
12,12,13,14, 9, 9,10,12,12, 9,10,10,13,13, 9,10,
10,12,13,11,12,12,14,13,11,12,12,14,14, 5, 7, 7,
9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,
12, 9,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,11,11,
8, 9, 9,11,11,11,11,11,12,13,10,11,11,13,13, 6,
8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
10,13,11,10,11,11,13,13, 9,11,10,13,12,10,11,11,
13,14,10,11,11,14,13,12,12,13,12,15,12,13,13,15,
15, 9,10,10,12,13,10,11,10,13,12,10,11,11,13,14,
12,13,11,15,13,13,13,13,15,15, 5, 7, 7, 9, 9, 7,
8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12,10,10,
11,12,13, 6, 8, 8,10,10, 8, 9, 9,11,11, 7, 8, 9,
10,11,10,11,11,13,13,10,10,11,11,13, 7, 8, 8,10,
11, 8, 9, 9,11,11, 8, 9, 8,11,11,10,11,11,13,13,
11,12,11,13,12, 9,10,10,13,12,10,11,11,14,13,10,
10,11,12,13,12,13,13,15,15,12,11,13,13,14, 9,10,
11,12,13,10,11,11,13,14,10,11,11,13,13,12,13,13,
15,15,12,13,12,15,12, 8, 9, 9,12,12, 9,11,10,13,
13, 9,10,10,13,13,12,13,13,15,15,12,12,12,14,14,
9,10,10,13,13,10,11,11,13,14,10,11,11,14,13,13,
13,14,14,16,13,13,13,15,15, 9,10,10,13,13,10,11,
10,14,13,10,11,11,13,14,12,14,13,16,14,12,13,13,
14,15,11,12,12,15,14,11,12,13,14,15,12,13,13,16,
15,14,12,15,12,16,14,15,15,16,16,11,12,12,14,14,
11,13,12,15,14,12,13,13,15,16,13,15,13,17,13,14,
15,15,16,17, 8, 9, 9,12,12, 9,10,10,12,13, 9,10,
10,13,13,12,12,12,14,14,12,13,13,15,15, 9,10,10,
13,12,10,11,11,14,13,10,10,11,13,14,13,13,13,15,
15,12,13,14,14,16, 9,10,10,13,13,10,11,11,13,14,
10,11,11,14,14,13,13,13,15,15,13,14,13,16,14,11,
12,12,15,14,12,13,13,16,15,11,12,13,14,15,14,15,
15,17,16,13,13,15,13,16,11,12,13,14,15,13,13,13,
15,16,11,13,12,15,14,14,15,15,16,16,14,15,12,17,
13,
};
 
static const static_codebook _44u4__p4_0 = {
4, 625,
(char *)_vq_lengthlist__44u4__p4_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u4__p4_0,
0
};
 
static const long _vq_quantlist__44u4__p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u4__p5_0[] = {
2, 3, 3, 6, 6, 7, 7, 9, 9, 4, 5, 5, 7, 7, 8, 8,
10, 9, 4, 5, 5, 7, 7, 8, 8,10,10, 6, 7, 7, 8, 8,
9, 9,11,10, 6, 7, 7, 8, 8, 9, 9,10,11, 7, 8, 8,
9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
10,10,11,10,11,11,12,12, 9,10,10,10,11,11,11,12,
12,
};
 
static const static_codebook _44u4__p5_0 = {
2, 81,
(char *)_vq_lengthlist__44u4__p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44u4__p5_0,
0
};
 
static const long _vq_quantlist__44u4__p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u4__p6_0[] = {
1, 4, 4, 6, 6, 8, 8, 9, 9,11,10,13,13, 4, 6, 5,
8, 8, 9, 9,10,10,11,11,14,14, 4, 6, 6, 8, 8, 9,
9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11,
12,12,15,15, 6, 8, 8, 9, 9,10,11,11,11,12,12,15,
15, 8, 9, 9,11,10,11,11,12,12,13,13,16,16, 8, 9,
9,10,10,11,11,12,12,13,13,16,16,10,10,10,12,11,
12,12,13,13,14,14,16,16,10,10,10,11,12,12,12,13,
13,13,14,16,17,11,12,11,12,12,13,13,14,14,15,14,
18,17,11,11,12,12,12,13,13,14,14,14,15,19,18,14,
15,14,15,15,17,16,17,17,17,17,21, 0,14,15,15,16,
16,16,16,17,17,18,17,20,21,
};
 
static const static_codebook _44u4__p6_0 = {
2, 169,
(char *)_vq_lengthlist__44u4__p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44u4__p6_0,
0
};
 
static const long _vq_quantlist__44u4__p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u4__p6_1[] = {
2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
6, 5, 6, 6, 5, 5, 6, 6, 6,
};
 
static const static_codebook _44u4__p6_1 = {
2, 25,
(char *)_vq_lengthlist__44u4__p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u4__p6_1,
0
};
 
static const long _vq_quantlist__44u4__p7_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u4__p7_0[] = {
1, 3, 3,12,12,12,12,12,12,12,12,12,12, 3,12,11,
12,12,12,12,12,12,12,12,12,12, 4,11,10,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,
};
 
static const static_codebook _44u4__p7_0 = {
2, 169,
(char *)_vq_lengthlist__44u4__p7_0,
1, -514332672, 1627381760, 4, 0,
(long *)_vq_quantlist__44u4__p7_0,
0
};
 
static const long _vq_quantlist__44u4__p7_1[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__44u4__p7_1[] = {
1, 4, 4, 6, 6, 7, 7, 9, 8,10, 8,10, 9,11,11, 4,
7, 6, 8, 7, 9, 9,10,10,11,10,11,10,12,10, 4, 6,
7, 8, 8, 9, 9,10,10,11,11,11,11,12,12, 6, 8, 8,
10, 9,11,10,12,11,12,12,12,12,13,13, 6, 8, 8,10,
10,10,11,11,11,12,12,13,12,13,13, 8, 9, 9,11,11,
12,11,12,12,13,13,13,13,13,13, 8, 9, 9,11,11,11,
12,12,12,13,13,13,13,13,13, 9,10,10,12,11,13,13,
13,13,14,13,13,14,14,14, 9,10,11,11,12,12,13,13,
13,13,13,14,15,14,14,10,11,11,12,12,13,13,14,14,
14,14,14,15,16,16,10,11,11,12,13,13,13,13,15,14,
14,15,16,15,16,10,12,12,13,13,14,14,14,15,15,15,
15,15,15,16,11,12,12,13,13,14,14,14,15,15,15,16,
15,17,16,11,12,12,13,13,13,15,15,14,16,16,16,16,
16,17,11,12,12,13,13,14,14,15,14,15,15,17,17,16,
16,
};
 
static const static_codebook _44u4__p7_1 = {
2, 225,
(char *)_vq_lengthlist__44u4__p7_1,
1, -522338304, 1620115456, 4, 0,
(long *)_vq_quantlist__44u4__p7_1,
0
};
 
static const long _vq_quantlist__44u4__p7_2[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44u4__p7_2[] = {
2, 5, 5, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
10,10,10,10, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,
9,10, 9,10,10, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
10,10,10,10,10,10, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
9,10,10,10,10,10,10, 8, 9, 8, 9, 9, 9, 9, 9, 9,
10,10,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9,
10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,10,
10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,
10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,10,
10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
10,10,10,10,10,10,10,10,10,11,10,10,10, 9, 9, 9,
10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9,
9,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
9,10, 9,10,10,10,10,10,10,10,10,10,10,11,10,10,
10,
};
 
static const static_codebook _44u4__p7_2 = {
2, 289,
(char *)_vq_lengthlist__44u4__p7_2,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44u4__p7_2,
0
};
 
static const char _huff_lengthlist__44u4__short[] = {
14,17,15,17,16,14,13,16,10, 7, 7,10,13,10,15,16,
9, 4, 4, 6, 5, 7, 9,16,12, 8, 7, 8, 8, 8,11,16,
14, 7, 4, 6, 3, 5, 8,15,13, 8, 5, 7, 4, 5, 7,16,
12, 9, 6, 8, 3, 3, 5,16,14,13, 7,10, 5, 5, 7,15,
};
 
static const static_codebook _huff_book__44u4__short = {
2, 64,
(char *)_huff_lengthlist__44u4__short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44u5__long[] = {
3, 8,13,12,14,12,16,11,13,14, 5, 4, 5, 6, 7, 8,
10, 9,12,15,10, 5, 5, 5, 6, 8, 9, 9,13,15,10, 5,
5, 6, 6, 7, 8, 8,11,13,12, 7, 5, 6, 4, 6, 7, 7,
11,14,11, 7, 7, 6, 6, 6, 7, 6,10,14,14, 9, 8, 8,
6, 7, 7, 7,11,16,11, 8, 8, 7, 6, 6, 7, 4, 7,12,
10,10,12,10,10, 9,10, 5, 6, 9,10,12,15,13,14,14,
14, 8, 7, 8,
};
 
static const static_codebook _huff_book__44u5__long = {
2, 100,
(char *)_huff_lengthlist__44u5__long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44u5__p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u5__p1_0[] = {
1, 4, 4, 5, 8, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
9,10, 5, 8, 8, 7,10, 9, 8,10,10, 5, 8, 8, 8,10,
10, 8,10,10, 8,10,10,10,12,13,10,13,13, 7,10,10,
10,13,11,10,13,13, 4, 8, 8, 8,11,10, 8,10,10, 7,
10,10,10,13,13,10,11,13, 8,10,11,10,13,13,10,13,
12,
};
 
static const static_codebook _44u5__p1_0 = {
4, 81,
(char *)_vq_lengthlist__44u5__p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u5__p1_0,
0
};
 
static const long _vq_quantlist__44u5__p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u5__p2_0[] = {
3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6,
7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8,
8, 6, 8, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 8, 7,
7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 7, 6, 8, 8, 6,
8, 7, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
9,
};
 
static const static_codebook _44u5__p2_0 = {
4, 81,
(char *)_vq_lengthlist__44u5__p2_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u5__p2_0,
0
};
 
static const long _vq_quantlist__44u5__p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u5__p3_0[] = {
2, 4, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
10, 9,13,12, 8, 9,10,12,12, 5, 7, 7,10,10, 7, 9,
9,11,11, 6, 8, 9,11,11,10,11,11,14,14, 9,10,11,
13,14, 5, 7, 7, 9,10, 7, 9, 8,11,11, 7, 9, 9,11,
11, 9,11,10,14,13,10,11,11,14,14, 8,10,10,13,13,
10,11,11,15,14, 9,11,11,14,14,13,14,14,17,16,12,
13,13,15,16, 8,10,10,13,13, 9,11,11,14,15,10,11,
11,14,15,12,14,13,16,16,13,15,14,15,17, 5, 7, 7,
10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,11,11,14,
14,10,11,12,14,14, 7, 9, 9,12,11, 9,11,11,13,13,
9,11,11,13,13,12,13,13,15,16,11,12,13,15,16, 6,
9, 9,11,11, 8,11,10,13,12, 9,11,11,13,14,11,13,
12,16,14,11,13,13,16,17,10,12,11,15,15,11,13,13,
16,16,11,13,13,17,16,14,15,15,17,17,14,16,16,17,
18, 9,11,11,14,15,10,12,12,15,15,11,13,13,16,17,
13,15,13,17,15,14,15,16,18, 0, 5, 7, 7,10,10, 7,
9, 9,11,11, 7, 9, 9,11,11,10,11,11,14,14,10,11,
12,14,15, 6, 9, 9,12,11, 9,11,11,13,13, 8,10,11,
12,13,11,13,13,16,15,11,12,13,14,15, 7, 9, 9,11,
12, 9,11,11,13,13, 9,11,11,13,13,11,13,13,15,16,
11,13,13,15,14, 9,11,11,15,14,11,13,13,17,15,10,
12,12,15,15,14,16,16,17,17,13,13,15,15,17,10,11,
12,15,15,11,13,13,16,16,11,13,13,15,15,14,15,15,
18,18,14,15,15,17,17, 8,10,10,13,13,10,12,11,15,
15,10,11,12,15,15,14,15,15,18,18,13,14,14,18,18,
9,11,11,15,16,11,13,13,17,17,11,13,13,16,16,15,
15,16,17, 0,14,15,17, 0, 0, 9,11,11,15,15,10,13,
12,18,16,11,13,13,15,16,14,16,15,20,20,14,15,16,
17, 0,13,14,14,20,16,14,15,16,19,18,14,15,15,19,
0,18,16, 0,20,20,16,18,18, 0, 0,12,14,14,18,18,
13,15,14,18,16,14,15,16,18,20,16,19,16, 0,17,17,
18,18,19, 0, 8,10,10,14,14,10,11,11,14,15,10,11,
12,15,15,13,15,14,19,17,13,15,15,17, 0, 9,11,11,
16,15,11,13,13,16,16,10,12,13,15,17,14,16,16,18,
18,14,15,15,18, 0, 9,11,11,15,15,11,13,13,16,17,
11,13,13,18,17,14,18,16,18,18,15,17,17,18, 0,12,
14,14,18,18,14,15,15,20, 0,13,14,15,17, 0,16,18,
17, 0, 0,16,16, 0,17,20,12,14,14,18,18,14,16,15,
0,18,14,16,15,18, 0,16,19,17, 0, 0,17,18,16, 0,
0,
};
 
static const static_codebook _44u5__p3_0 = {
4, 625,
(char *)_vq_lengthlist__44u5__p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u5__p3_0,
0
};
 
static const long _vq_quantlist__44u5__p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u5__p4_0[] = {
4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8,
9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
8,10,10, 6, 7, 8, 9,10, 9,10,10,11,12, 9, 9,10,
11,12, 6, 7, 7, 9, 9, 6, 8, 7,10, 9, 7, 8, 8,10,
10, 9,10, 9,12,11, 9,10,10,12,11, 8, 9, 9,12,11,
9,10,10,12,12, 9,10,10,12,12,11,12,12,13,14,11,
11,12,13,14, 8, 9, 9,11,12, 9,10,10,12,12, 9,10,
10,12,12,11,12,11,14,13,11,12,12,13,13, 5, 7, 7,
9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,
12, 9,10,10,12,12, 7, 8, 8,10,10, 8, 8, 9,10,11,
8, 9, 9,11,11,10,10,11,11,13,10,11,11,12,13, 6,
7, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
10,13,11,10,11,11,12,12, 9,10,10,12,12,10,10,11,
12,13,10,11,11,13,13,12,11,13,12,15,12,13,13,14,
15, 9,10,10,12,12, 9,11,10,13,12,10,11,11,13,13,
11,13,11,14,12,12,13,13,14,15, 5, 7, 7, 9, 9, 7,
8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12, 9,10,
10,12,12, 6, 8, 7,10,10, 8, 9, 9,11,11, 7, 8, 9,
10,11,10,11,11,12,12,10,10,11,11,13, 7, 8, 8,10,
10, 8, 9, 9,11,11, 8, 9, 8,11,10,10,11,11,13,12,
10,11,10,13,11, 9,10,10,12,12,10,11,11,13,12, 9,
10,10,12,13,12,13,13,14,15,11,11,13,12,14, 9,10,
10,12,12,10,11,11,13,13,10,11,10,13,12,12,13,13,
14,14,12,13,11,14,12, 8, 9, 9,12,12, 9,10,10,12,
12, 9,10,10,12,12,12,12,12,14,14,11,12,12,14,13,
9,10,10,12,12,10,11,11,13,13,10,11,11,13,12,12,
12,13,14,15,12,13,13,15,14, 9,10,10,12,12,10,11,
10,13,12,10,11,11,12,13,12,13,12,15,13,12,13,13,
14,15,11,12,12,14,13,11,12,12,14,15,12,13,13,15,
14,13,12,14,12,16,13,14,14,15,15,11,11,12,14,14,
11,12,11,14,13,12,13,13,14,15,13,14,12,16,12,14,
14,15,16,16, 8, 9, 9,11,12, 9,10,10,12,12, 9,10,
10,12,13,11,12,12,13,13,12,12,13,14,14, 9,10,10,
12,12,10,11,10,13,12,10,10,11,12,13,12,13,13,15,
14,12,12,13,13,15, 9,10,10,12,13,10,11,11,12,13,
10,11,11,13,13,12,13,13,14,15,12,13,12,15,14,11,
12,11,14,13,12,13,13,15,14,11,11,12,13,14,14,15,
14,16,15,13,12,14,13,16,11,12,12,13,14,12,13,13,
14,15,11,12,11,14,14,14,14,14,15,16,13,15,12,16,
12,
};
 
static const static_codebook _44u5__p4_0 = {
4, 625,
(char *)_vq_lengthlist__44u5__p4_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u5__p4_0,
0
};
 
static const long _vq_quantlist__44u5__p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u5__p5_0[] = {
2, 3, 3, 6, 6, 8, 8,10,10, 4, 5, 5, 8, 7, 8, 8,
11,10, 3, 5, 5, 7, 8, 8, 8,10,11, 6, 8, 7,10, 9,
10,10,11,11, 6, 7, 8, 9, 9, 9,10,11,12, 8, 8, 8,
10,10,11,11,13,12, 8, 8, 9, 9,10,11,11,12,13,10,
11,10,12,11,13,12,14,14,10,10,11,11,12,12,13,14,
14,
};
 
static const static_codebook _44u5__p5_0 = {
2, 81,
(char *)_vq_lengthlist__44u5__p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44u5__p5_0,
0
};
 
static const long _vq_quantlist__44u5__p6_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u5__p6_0[] = {
3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7,
9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 7, 7,
8, 8, 9, 9,11,10, 7, 7, 7, 8, 8, 9, 9,10,11, 9,
9, 9,10,10,11,10,11,11, 9, 9, 9,10,10,11,10,11,
11,
};
 
static const static_codebook _44u5__p6_0 = {
2, 81,
(char *)_vq_lengthlist__44u5__p6_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44u5__p6_0,
0
};
 
static const long _vq_quantlist__44u5__p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u5__p7_0[] = {
1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 9, 8,11,10, 7,
11,10, 5, 9, 9, 7,10,10, 8,10,11, 4, 9, 9, 9,12,
12, 9,12,12, 8,12,12,11,12,12,10,12,13, 7,12,12,
11,12,12,10,12,13, 4, 9, 9, 9,12,12, 9,12,12, 7,
12,11,10,13,13,11,12,12, 7,12,12,10,13,13,11,12,
12,
};
 
static const static_codebook _44u5__p7_0 = {
4, 81,
(char *)_vq_lengthlist__44u5__p7_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44u5__p7_0,
0
};
 
static const long _vq_quantlist__44u5__p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44u5__p7_1[] = {
2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 7,
8, 8, 9, 8, 8, 9, 4, 5, 5, 7, 7, 8, 8, 9, 9, 8,
9, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 6, 7, 7, 8,
8, 9, 9, 9, 9, 9, 9, 7, 8, 8, 9, 9, 9, 9, 9, 9,
9, 9, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9,
9, 9, 9, 9,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,10,
10,10,10, 8, 9, 9, 9, 9, 9, 9,10,10,10,10, 8, 9,
9, 9, 9, 9, 9,10,10,10,10,
};
 
static const static_codebook _44u5__p7_1 = {
2, 121,
(char *)_vq_lengthlist__44u5__p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44u5__p7_1,
0
};
 
static const long _vq_quantlist__44u5__p8_0[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44u5__p8_0[] = {
1, 4, 4, 6, 6, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7,
9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,10,10,11,
11, 6, 8, 7, 9, 9,10,10,11,11,13,12, 6, 8, 8, 9,
9,10,10,11,11,12,13, 8, 9, 9,10,10,12,12,13,12,
14,13, 8, 9, 9,10,10,12,12,13,13,14,14, 9,11,11,
12,12,13,13,14,14,15,14, 9,11,11,12,12,13,13,14,
14,15,14,11,12,12,13,13,14,14,15,14,15,14,11,11,
12,13,13,14,14,14,14,15,15,
};
 
static const static_codebook _44u5__p8_0 = {
2, 121,
(char *)_vq_lengthlist__44u5__p8_0,
1, -524582912, 1618345984, 4, 0,
(long *)_vq_quantlist__44u5__p8_0,
0
};
 
static const long _vq_quantlist__44u5__p8_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44u5__p8_1[] = {
3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 5, 7, 6,
7, 7, 8, 8, 8, 8, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8,
8, 6, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7,
7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8,
8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _44u5__p8_1 = {
2, 121,
(char *)_vq_lengthlist__44u5__p8_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44u5__p8_1,
0
};
 
static const long _vq_quantlist__44u5__p9_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u5__p9_0[] = {
1, 3, 2,12,10,13,13,13,13,13,13,13,13, 4, 9, 9,
13,13,13,13,13,13,13,13,13,13, 5,10, 9,13,13,13,
13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,
13,13,13,13,11,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,
};
 
static const static_codebook _44u5__p9_0 = {
2, 169,
(char *)_vq_lengthlist__44u5__p9_0,
1, -514332672, 1627381760, 4, 0,
(long *)_vq_quantlist__44u5__p9_0,
0
};
 
static const long _vq_quantlist__44u5__p9_1[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__44u5__p9_1[] = {
1, 4, 4, 7, 7, 8, 8, 8, 7, 8, 7, 9, 8, 9, 9, 4,
7, 6, 9, 8,10,10, 9, 8, 9, 9, 9, 9, 9, 8, 5, 6,
6, 8, 9,10,10, 9, 9, 9,10,10,10,10,11, 7, 8, 8,
10,10,11,11,10,10,11,11,11,12,11,11, 7, 8, 8,10,
10,11,11,10,10,11,11,12,11,11,11, 8, 9, 9,11,11,
12,12,11,11,12,11,12,12,12,12, 8, 9,10,11,11,12,
12,11,11,12,12,12,12,12,12, 8, 9, 9,10,10,12,11,
12,12,12,12,12,12,12,13, 8, 9, 9,11,11,11,11,12,
12,12,12,13,12,13,13, 9,10,10,11,11,12,12,12,13,
12,13,13,13,14,13, 9,10,10,11,11,12,12,12,13,13,
12,13,13,14,13, 9,11,10,12,11,13,12,12,13,13,13,
13,13,13,14, 9,10,10,12,12,12,12,12,13,13,13,13,
13,14,14,10,11,11,12,12,12,13,13,13,14,14,13,14,
14,14,10,11,11,12,12,12,12,13,12,13,14,13,14,14,
14,
};
 
static const static_codebook _44u5__p9_1 = {
2, 225,
(char *)_vq_lengthlist__44u5__p9_1,
1, -522338304, 1620115456, 4, 0,
(long *)_vq_quantlist__44u5__p9_1,
0
};
 
static const long _vq_quantlist__44u5__p9_2[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44u5__p9_2[] = {
2, 5, 5, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,
9, 5, 6, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,
9, 9, 5, 6, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9,
9, 9, 9, 7, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 7, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
9,10, 9,10,10,10, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9,
9, 9,10, 9,10, 9,10, 8, 9, 9, 9, 9, 9, 9, 9, 9,
9,10, 9,10,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,10,
9,10, 9,10,10,10,10,10,10, 9, 9, 9, 9, 9,10, 9,
10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,
9,10, 9,10, 9,10,10,10,10,10,10, 9, 9, 9, 9, 9,
10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
9, 9,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
9,10,10, 9,10,10,10,10,10,10,10,10,10,10, 9, 9,
9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10, 9,
9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
9, 9, 9,10, 9,10,10,10,10,10,10,10,10,10,10,10,
10,
};
 
static const static_codebook _44u5__p9_2 = {
2, 289,
(char *)_vq_lengthlist__44u5__p9_2,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44u5__p9_2,
0
};
 
static const char _huff_lengthlist__44u5__short[] = {
4,10,17,13,17,13,17,17,17,17, 3, 6, 8, 9,11, 9,
15,12,16,17, 6, 5, 5, 7, 7, 8,10,11,17,17, 7, 8,
7, 9, 9,10,13,13,17,17, 8, 6, 5, 7, 4, 7, 5, 8,
14,17, 9, 9, 8, 9, 7, 9, 8,10,16,17,12,10, 7, 8,
4, 7, 4, 7,16,17,12,11, 9,10, 6, 9, 5, 7,14,17,
14,13,10,15, 4, 8, 3, 5,14,17,17,14,11,15, 6,10,
6, 8,15,17,
};
 
static const static_codebook _huff_book__44u5__short = {
2, 100,
(char *)_huff_lengthlist__44u5__short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44u6__long[] = {
3, 9,14,13,14,13,16,12,13,14, 5, 4, 6, 6, 8, 9,
11,10,12,15,10, 5, 5, 6, 6, 8,10,10,13,16,10, 6,
6, 6, 6, 8, 9, 9,12,14,13, 7, 6, 6, 4, 6, 6, 7,
11,14,10, 7, 7, 7, 6, 6, 6, 7,10,13,15,10, 9, 8,
5, 6, 5, 6,10,14,10, 9, 8, 8, 6, 6, 5, 4, 6,11,
11,11,12,11,10, 9, 9, 5, 5, 9,10,12,15,13,13,13,
13, 8, 7, 7,
};
 
static const static_codebook _huff_book__44u6__long = {
2, 100,
(char *)_huff_lengthlist__44u6__long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44u6__p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u6__p1_0[] = {
1, 4, 4, 4, 8, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
9,10, 5, 8, 8, 7,10, 9, 8,10,10, 5, 8, 8, 8,10,
10, 8,10,10, 8,10,10,10,12,13,10,13,13, 7,10,10,
10,13,11,10,13,13, 5, 8, 8, 8,11,10, 8,10,10, 7,
10,10,10,13,13,10,11,13, 8,10,11,10,13,13,10,13,
12,
};
 
static const static_codebook _44u6__p1_0 = {
4, 81,
(char *)_vq_lengthlist__44u6__p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u6__p1_0,
0
};
 
static const long _vq_quantlist__44u6__p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u6__p2_0[] = {
3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6,
7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8,
8, 6, 8, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 7, 7,
7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 7, 6, 8, 8, 6,
8, 8, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
9,
};
 
static const static_codebook _44u6__p2_0 = {
4, 81,
(char *)_vq_lengthlist__44u6__p2_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u6__p2_0,
0
};
 
static const long _vq_quantlist__44u6__p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u6__p3_0[] = {
2, 5, 4, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
9, 9,13,12, 8, 9,10,12,13, 5, 7, 7,10, 9, 7, 9,
9,11,11, 7, 8, 9,11,11,10,11,11,14,14, 9,10,11,
13,14, 5, 7, 7, 9,10, 6, 9, 8,11,11, 7, 9, 9,11,
11, 9,11,10,14,13,10,11,11,14,13, 8,10,10,13,13,
10,11,11,15,15, 9,11,11,14,14,13,14,14,17,16,12,
13,14,16,16, 8,10,10,13,14, 9,11,11,14,15,10,11,
12,14,15,12,14,13,16,15,13,14,14,15,17, 5, 7, 7,
10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,12,11,14,
14,10,11,11,14,14, 7, 9, 9,12,11, 9,11,11,13,13,
9,11,11,13,13,11,13,13,14,15,11,12,13,15,16, 6,
9, 9,11,12, 8,11,10,13,12, 9,11,11,13,14,11,13,
12,16,14,11,13,13,15,16,10,12,11,14,15,11,13,13,
15,17,11,13,13,17,16,15,15,16,17,16,14,15,16,18,
0, 9,11,11,14,15,10,12,12,16,15,11,13,13,16,16,
13,15,14,18,15,14,16,16, 0, 0, 5, 7, 7,10,10, 7,
9, 9,11,11, 7, 9, 9,11,11,10,11,11,14,14,10,11,
12,14,14, 6, 9, 9,11,11, 9,11,11,13,13, 8,10,11,
12,13,11,13,13,16,15,11,12,13,14,16, 7, 9, 9,11,
12, 9,11,11,13,13, 9,11,11,13,13,11,13,13,16,15,
11,13,12,15,15, 9,11,11,15,14,11,13,13,17,16,10,
12,13,15,16,14,16,16, 0,18,14,14,15,15,17,10,11,
12,15,15,11,13,13,16,16,11,13,13,16,16,14,16,16,
19,17,14,15,15,17,17, 8,10,10,14,14,10,12,11,15,
15,10,11,12,16,15,14,15,15,18,20,13,14,16,17,18,
9,11,11,15,16,11,13,13,17,17,11,13,13,17,16,15,
16,16, 0, 0,15,16,16, 0, 0, 9,11,11,15,15,10,13,
12,17,15,11,13,13,17,16,15,17,15,20,19,15,16,16,
19, 0,13,15,14, 0,17,14,15,16, 0,20,15,16,16, 0,
19,17,18, 0, 0, 0,16,17,18, 0, 0,12,14,14,19,18,
13,15,14, 0,17,14,15,16,19,19,16,18,16, 0,19,19,
20,17,20, 0, 8,10,10,13,14,10,11,11,15,15,10,12,
12,15,16,14,15,14,19,16,14,15,15, 0,18, 9,11,11,
16,15,11,13,13, 0,16,11,12,13,16,17,14,16,17, 0,
19,15,16,16,18, 0, 9,11,11,15,16,11,13,13,16,16,
11,14,13,18,17,15,16,16,18,20,15,17,19, 0, 0,12,
14,14,17,17,14,16,15, 0, 0,13,14,15,19, 0,16,18,
20, 0, 0,16,16,18,18, 0,12,14,14,17,20,14,16,16,
19, 0,14,16,14, 0,20,16,20,17, 0, 0,17, 0,15, 0,
19,
};
 
static const static_codebook _44u6__p3_0 = {
4, 625,
(char *)_vq_lengthlist__44u6__p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u6__p3_0,
0
};
 
static const long _vq_quantlist__44u6__p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u6__p4_0[] = {
4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8,
9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
8,10,10, 7, 7, 8, 9,10, 9,10,10,11,11, 9, 9,10,
11,12, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 8,10,
10, 9,10, 9,12,11, 9,10,10,12,11, 8, 9, 9,11,11,
9,10,10,12,12, 9,10,10,12,12,11,12,12,14,13,11,
11,12,13,13, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
10,12,12,11,12,11,13,12,11,12,12,13,13, 5, 7, 7,
9, 9, 7, 8, 7,10,10, 7, 7, 8,10,10, 9,10,10,12,
11, 9,10,10,11,12, 7, 8, 8,10,10, 8, 8, 9,11,11,
8, 9, 9,11,11,10,10,11,12,13,10,10,11,12,12, 6,
7, 7,10,10, 7, 9, 8,11,10, 8, 8, 9,10,11,10,11,
10,13,11,10,11,11,12,12, 9,10,10,12,12,10,10,11,
13,13,10,11,11,12,13,12,12,12,13,14,12,12,13,14,
14, 9,10,10,12,12, 9,10,10,13,12,10,11,11,13,13,
11,12,11,14,12,12,13,13,14,14, 6, 7, 7, 9, 9, 7,
8, 7,10,10, 7, 8, 8,10,10, 9,10,10,12,11, 9,10,
10,11,12, 6, 7, 7,10,10, 8, 9, 8,11,10, 7, 8, 9,
10,11,10,11,11,12,12,10,10,11,11,13, 7, 8, 8,10,
10, 8, 9, 9,11,11, 8, 9, 8,11,11,10,11,10,13,12,
10,11,11,13,12, 9,10,10,12,12,10,11,11,13,12, 9,
10,10,12,13,12,13,12,14,14,11,11,12,12,14, 9,10,
10,12,12,10,11,11,13,13,10,11,10,13,12,12,12,12,
14,14,12,13,12,14,13, 8, 9, 9,11,11, 9,10,10,12,
12, 9,10,10,12,12,11,12,12,14,13,11,12,12,13,14,
9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,
12,13,14,15,12,12,13,14,14, 9,10,10,12,12, 9,11,
10,13,12,10,10,11,12,13,12,13,12,14,13,12,12,13,
14,15,11,12,12,14,13,11,12,12,14,14,12,13,13,14,
14,13,13,14,14,16,13,14,14,15,15,11,12,11,13,13,
11,12,11,14,13,12,12,13,14,15,12,14,12,15,12,13,
14,15,15,16, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
10,12,12,11,12,12,14,13,11,12,12,13,13, 9,10,10,
12,12,10,11,10,13,12, 9,10,11,12,13,12,13,12,14,
14,12,12,13,13,14, 9,10,10,12,12,10,11,11,13,13,
10,11,11,13,13,12,13,12,14,14,12,13,13,14,14,11,
11,11,13,13,12,13,12,14,14,11,11,12,13,14,14,14,
14,16,15,12,12,14,12,15,11,12,12,13,14,12,13,13,
14,15,11,12,12,14,14,13,14,14,16,16,13,14,13,16,
13,
};
 
static const static_codebook _44u6__p4_0 = {
4, 625,
(char *)_vq_lengthlist__44u6__p4_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u6__p4_0,
0
};
 
static const long _vq_quantlist__44u6__p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u6__p5_0[] = {
2, 3, 3, 6, 6, 8, 8,10,10, 4, 5, 5, 8, 7, 8, 8,
11,11, 3, 5, 5, 7, 8, 8, 8,11,11, 6, 8, 7, 9, 9,
10, 9,12,11, 6, 7, 8, 9, 9, 9,10,11,12, 8, 8, 8,
10, 9,12,11,13,13, 8, 8, 9, 9,10,11,12,13,13,10,
11,11,12,12,13,13,14,14,10,10,11,11,12,13,13,14,
14,
};
 
static const static_codebook _44u6__p5_0 = {
2, 81,
(char *)_vq_lengthlist__44u6__p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44u6__p5_0,
0
};
 
static const long _vq_quantlist__44u6__p6_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u6__p6_0[] = {
3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7,
9, 9, 4, 4, 5, 6, 6, 7, 8, 9, 9, 5, 6, 6, 7, 7,
8, 8,10,10, 5, 6, 6, 7, 7, 8, 8,10,10, 7, 8, 7,
8, 8,10, 9,11,11, 7, 7, 8, 8, 8, 9,10,10,11, 9,
9, 9,10,10,11,11,12,11, 9, 9, 9,10,10,11,11,11,
12,
};
 
static const static_codebook _44u6__p6_0 = {
2, 81,
(char *)_vq_lengthlist__44u6__p6_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44u6__p6_0,
0
};
 
static const long _vq_quantlist__44u6__p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u6__p7_0[] = {
1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 7,10,10, 8,
10,10, 5, 8, 9, 7,10,10, 7,10, 9, 4, 8, 8, 9,11,
11, 8,11,11, 7,11,11,10,10,13,10,13,13, 7,11,11,
10,13,12,10,13,13, 5, 9, 8, 8,11,11, 9,11,11, 7,
11,11,10,13,13,10,12,13, 7,11,11,10,13,13, 9,13,
10,
};
 
static const static_codebook _44u6__p7_0 = {
4, 81,
(char *)_vq_lengthlist__44u6__p7_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44u6__p7_0,
0
};
 
static const long _vq_quantlist__44u6__p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44u6__p7_1[] = {
3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 6,
8, 8, 8, 8, 8, 8, 4, 5, 5, 6, 7, 8, 8, 8, 8, 8,
8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7,
7, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 9, 9,
9, 9, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8,
8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9,
9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8,
8, 8, 8, 9, 9, 9, 9, 9, 9,
};
 
static const static_codebook _44u6__p7_1 = {
2, 121,
(char *)_vq_lengthlist__44u6__p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44u6__p7_1,
0
};
 
static const long _vq_quantlist__44u6__p8_0[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44u6__p8_0[] = {
1, 4, 4, 6, 6, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7,
9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,10,10,11,
11, 6, 8, 8, 9, 9,10,10,11,11,12,12, 6, 8, 8, 9,
9,10,10,11,11,12,12, 8, 9, 9,10,10,11,11,12,12,
13,13, 8, 9, 9,10,10,11,11,12,12,13,13,10,10,10,
11,11,13,13,13,13,15,14, 9,10,10,12,11,12,13,13,
13,14,15,11,12,12,13,13,13,13,15,14,15,15,11,11,
12,13,13,14,14,14,15,15,15,
};
 
static const static_codebook _44u6__p8_0 = {
2, 121,
(char *)_vq_lengthlist__44u6__p8_0,
1, -524582912, 1618345984, 4, 0,
(long *)_vq_quantlist__44u6__p8_0,
0
};
 
static const long _vq_quantlist__44u6__p8_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44u6__p8_1[] = {
3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 5, 7, 7,
7, 7, 8, 7, 8, 8, 5, 5, 6, 6, 7, 7, 7, 7, 7, 8,
8, 6, 7, 7, 7, 7, 8, 7, 8, 8, 8, 8, 6, 6, 7, 7,
7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8,
8, 8, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7,
8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _44u6__p8_1 = {
2, 121,
(char *)_vq_lengthlist__44u6__p8_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44u6__p8_1,
0
};
 
static const long _vq_quantlist__44u6__p9_0[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__44u6__p9_0[] = {
1, 3, 2, 9, 8,15,15,15,15,15,15,15,15,15,15, 4,
8, 9,13,14,14,14,14,14,14,14,14,14,14,14, 5, 8,
9,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,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,
14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
14,
};
 
static const static_codebook _44u6__p9_0 = {
2, 225,
(char *)_vq_lengthlist__44u6__p9_0,
1, -514071552, 1627381760, 4, 0,
(long *)_vq_quantlist__44u6__p9_0,
0
};
 
static const long _vq_quantlist__44u6__p9_1[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__44u6__p9_1[] = {
1, 4, 4, 7, 7, 8, 9, 8, 8, 9, 8, 9, 8, 9, 9, 4,
7, 6, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 7,
6, 9, 9,10,10, 9, 9,10,10,10,10,11,11, 7, 9, 8,
10,10,11,11,10,10,11,11,11,11,11,11, 7, 8, 9,10,
10,11,11,10,10,11,11,11,11,11,12, 8,10,10,11,11,
12,12,11,11,12,12,12,12,13,12, 8,10,10,11,11,12,
11,11,11,11,12,12,12,12,13, 8, 9, 9,11,10,11,11,
12,12,12,12,13,12,13,12, 8, 9, 9,11,11,11,11,12,
12,12,12,12,13,13,13, 9,10,10,11,12,12,12,12,12,
13,13,13,13,13,13, 9,10,10,11,11,12,12,12,12,13,
13,13,13,14,13,10,10,10,12,11,12,12,13,13,13,13,
13,13,13,13,10,10,11,11,11,12,12,13,13,13,13,13,
13,13,13,10,11,11,12,12,13,12,12,13,13,13,13,13,
13,14,10,11,11,12,12,13,12,13,13,13,14,13,13,14,
13,
};
 
static const static_codebook _44u6__p9_1 = {
2, 225,
(char *)_vq_lengthlist__44u6__p9_1,
1, -522338304, 1620115456, 4, 0,
(long *)_vq_quantlist__44u6__p9_1,
0
};
 
static const long _vq_quantlist__44u6__p9_2[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44u6__p9_2[] = {
3, 5, 5, 7, 7, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 9,
9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9,10, 9, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,10, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,10, 9, 9,10, 9,
9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 9,10, 9,10,10,
9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,10,10, 9, 9,
10,
};
 
static const static_codebook _44u6__p9_2 = {
2, 289,
(char *)_vq_lengthlist__44u6__p9_2,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44u6__p9_2,
0
};
 
static const char _huff_lengthlist__44u6__short[] = {
4,11,16,13,17,13,17,16,17,17, 4, 7, 9, 9,13,10,
16,12,16,17, 7, 6, 5, 7, 8, 9,12,12,16,17, 6, 9,
7, 9,10,10,15,15,17,17, 6, 7, 5, 7, 5, 7, 7,10,
16,17, 7, 9, 8, 9, 8,10,11,11,15,17, 7, 7, 7, 8,
5, 8, 8, 9,15,17, 8, 7, 9, 9, 7, 8, 7, 2, 7,15,
14,13,13,15, 5,10, 4, 3, 6,17,17,15,13,17, 7,11,
7, 6, 9,16,
};
 
static const static_codebook _huff_book__44u6__short = {
2, 100,
(char *)_huff_lengthlist__44u6__short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44u7__long[] = {
3, 9,14,13,15,14,16,13,13,14, 5, 5, 7, 7, 8, 9,
11,10,12,15,10, 6, 5, 6, 6, 9,10,10,13,16,10, 6,
6, 6, 6, 8, 9, 9,12,15,14, 7, 6, 6, 5, 6, 6, 8,
12,15,10, 8, 7, 7, 6, 7, 7, 7,11,13,14,10, 9, 8,
5, 6, 4, 5, 9,12,10, 9, 9, 8, 6, 6, 5, 3, 6,11,
12,11,12,12,10, 9, 8, 5, 5, 8,10,11,15,13,13,13,
12, 8, 6, 7,
};
 
static const static_codebook _huff_book__44u7__long = {
2, 100,
(char *)_huff_lengthlist__44u7__long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44u7__p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u7__p1_0[] = {
1, 4, 4, 4, 7, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
10,10, 5, 8, 8, 7,10,10, 8,10,10, 5, 8, 8, 8,11,
10, 8,10,10, 8,10,10,10,12,13,10,13,13, 7,10,10,
10,13,12,10,13,13, 5, 8, 8, 8,11,10, 8,10,11, 7,
10,10,10,13,13,10,12,13, 8,11,11,10,13,13,10,13,
12,
};
 
static const static_codebook _44u7__p1_0 = {
4, 81,
(char *)_vq_lengthlist__44u7__p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u7__p1_0,
0
};
 
static const long _vq_quantlist__44u7__p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u7__p2_0[] = {
3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6,
7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8,
7, 6, 8, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 8, 7,
7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 7, 6, 8, 8, 6,
8, 8, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
9,
};
 
static const static_codebook _44u7__p2_0 = {
4, 81,
(char *)_vq_lengthlist__44u7__p2_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u7__p2_0,
0
};
 
static const long _vq_quantlist__44u7__p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u7__p3_0[] = {
2, 5, 4, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
9, 9,13,12, 8, 9,10,12,13, 5, 7, 7,10, 9, 7, 9,
9,11,11, 6, 8, 9,11,11,10,11,11,14,14, 9,10,11,
13,14, 5, 7, 7, 9, 9, 7, 9, 8,11,11, 7, 9, 9,11,
11, 9,11,10,14,13,10,11,11,14,14, 8,10,10,14,13,
10,11,12,15,14, 9,11,11,15,14,13,14,14,16,16,12,
13,14,17,16, 8,10,10,13,13, 9,11,11,14,15,10,11,
12,14,15,12,14,13,16,16,13,14,15,15,17, 5, 7, 7,
10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,12,11,15,
14,10,11,12,14,14, 7, 9, 9,12,12, 9,11,11,13,13,
9,11,11,13,13,11,13,13,14,17,11,13,13,15,16, 6,
9, 9,11,11, 8,11,10,13,12, 9,11,11,13,13,11,13,
12,16,14,11,13,13,16,16,10,12,12,15,15,11,13,13,
16,16,11,13,13,16,15,14,16,17,17,19,14,16,16,18,
0, 9,11,11,14,15,10,13,12,16,15,11,13,13,16,16,
14,15,14, 0,16,14,16,16,18, 0, 5, 7, 7,10,10, 7,
9, 9,12,11, 7, 9, 9,11,12,10,11,11,15,14,10,11,
12,14,14, 6, 9, 9,11,11, 9,11,11,13,13, 8,10,11,
12,13,11,13,13,17,15,11,12,13,14,15, 7, 9, 9,11,
12, 9,11,11,13,13, 9,11,11,13,13,11,13,12,16,16,
11,13,13,15,14, 9,11,11,14,15,11,13,13,16,15,10,
12,13,16,16,15,16,16, 0, 0,14,13,15,16,18,10,11,
11,15,15,11,13,14,16,18,11,13,13,16,15,15,16,16,
19, 0,14,15,15,16,16, 8,10,10,13,13,10,12,11,16,
15,10,11,11,16,15,13,15,16,18, 0,13,14,15,17,17,
9,11,11,15,15,11,13,13,16,18,11,13,13,16,17,15,
16,16, 0, 0,15,18,16, 0,17, 9,11,11,15,15,11,13,
12,17,15,11,13,14,16,17,15,18,15, 0,17,15,16,16,
18,19,13,15,14, 0,18,14,16,16,19,18,14,16,15,19,
19,16,18,19, 0, 0,16,17, 0, 0, 0,12,14,14,17,17,
13,16,14, 0,18,14,16,15,18, 0,16,18,16,19,17,18,
19,17, 0, 0, 8,10,10,14,14, 9,12,11,15,15,10,11,
12,15,17,13,15,15,18,16,14,16,15,18,17, 9,11,11,
16,15,11,13,13, 0,16,11,12,13,16,15,15,16,16, 0,
17,15,15,16,18,17, 9,12,11,15,17,11,13,13,16,16,
11,14,13,16,16,15,15,16,18,19,16,18,16, 0, 0,12,
14,14, 0,16,14,16,16, 0,18,13,14,15,16, 0,17,16,
18, 0, 0,16,16,17,19, 0,13,14,14,17, 0,14,17,16,
0,19,14,15,15,18,19,17,16,18, 0, 0,15,19,16, 0,
0,
};
 
static const static_codebook _44u7__p3_0 = {
4, 625,
(char *)_vq_lengthlist__44u7__p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u7__p3_0,
0
};
 
static const long _vq_quantlist__44u7__p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u7__p4_0[] = {
4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8,
9, 9,11,11, 8, 9, 9,10,11, 6, 7, 7, 9, 9, 7, 8,
8,10,10, 6, 7, 8, 9,10, 9,10,10,12,12, 9, 9,10,
11,12, 6, 7, 7, 9, 9, 6, 8, 7,10, 9, 7, 8, 8,10,
10, 9,10, 9,12,11, 9,10,10,12,11, 8, 9, 9,11,11,
9,10,10,12,12, 9,10,10,12,12,11,12,12,13,14,11,
11,12,13,13, 8, 9, 9,11,11, 9,10,10,12,11, 9,10,
10,12,12,11,12,11,13,13,11,12,12,13,13, 6, 7, 7,
9, 9, 7, 8, 7,10,10, 7, 7, 8,10,10, 9,10,10,12,
11, 9,10,10,12,12, 7, 8, 8,10,10, 8, 8, 9,11,11,
8, 9, 9,11,11,10,11,11,12,12,10,10,11,12,13, 6,
7, 7,10,10, 7, 9, 8,11,10, 8, 8, 9,10,11,10,11,
10,13,11,10,11,11,12,12, 9,10,10,12,12,10,10,11,
13,13,10,11,11,13,12,12,12,13,13,14,12,12,13,14,
14, 9,10,10,12,12, 9,10,10,12,12,10,11,11,13,13,
11,12,11,14,12,12,13,13,14,14, 6, 7, 7, 9, 9, 7,
8, 7,10,10, 7, 7, 8,10,10, 9,10,10,12,11, 9,10,
10,11,12, 6, 7, 7,10,10, 8, 9, 8,11,10, 7, 8, 9,
10,11,10,11,11,13,12,10,10,11,11,13, 7, 8, 8,10,
10, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,10,13,12,
10,11,11,12,12, 9,10,10,12,12,10,11,11,13,12, 9,
10,10,12,13,12,13,12,14,14,11,11,12,12,14, 9,10,
10,12,12,10,11,11,13,13,10,11,11,13,13,12,13,12,
14,14,12,13,12,14,13, 8, 9, 9,11,11, 9,10,10,12,
12, 9,10,10,12,12,11,12,12,14,13,11,12,12,13,13,
9,10,10,12,12,10,11,11,13,13,10,11,11,13,12,12,
13,13,14,14,12,12,13,14,14, 9,10,10,12,12, 9,11,
10,13,12,10,10,11,12,13,11,13,12,14,13,12,12,13,
14,14,11,12,12,13,13,11,12,13,14,14,12,13,13,14,
14,13,13,14,14,16,13,14,14,16,16,11,11,11,13,13,
11,12,11,14,13,12,12,13,14,15,13,14,12,16,13,14,
14,14,15,16, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
10,12,12,11,12,12,14,13,11,12,12,13,14, 9,10,10,
12,12,10,11,10,13,12, 9,10,11,12,13,12,13,12,14,
14,12,12,13,13,14, 9,10,10,12,12,10,11,11,12,13,
10,11,11,13,13,12,13,12,14,14,12,13,13,14,14,11,
12,12,13,13,12,13,12,14,14,11,11,12,13,14,13,15,
14,16,15,13,12,14,13,16,11,12,12,13,13,12,13,13,
14,14,12,12,12,14,14,13,14,14,15,15,13,14,13,16,
14,
};
 
static const static_codebook _44u7__p4_0 = {
4, 625,
(char *)_vq_lengthlist__44u7__p4_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u7__p4_0,
0
};
 
static const long _vq_quantlist__44u7__p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u7__p5_0[] = {
2, 3, 3, 6, 6, 7, 8,10,10, 4, 5, 5, 8, 7, 8, 8,
11,11, 3, 5, 5, 7, 7, 8, 9,11,11, 6, 8, 7, 9, 9,
10,10,12,12, 6, 7, 8, 9,10,10,10,12,12, 8, 8, 8,
10,10,12,11,13,13, 8, 8, 9,10,10,11,11,13,13,10,
11,11,12,12,13,13,14,14,10,11,11,12,12,13,13,14,
14,
};
 
static const static_codebook _44u7__p5_0 = {
2, 81,
(char *)_vq_lengthlist__44u7__p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44u7__p5_0,
0
};
 
static const long _vq_quantlist__44u7__p6_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u7__p6_0[] = {
3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 8, 7,
9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
8, 8,10,10, 5, 6, 6, 7, 7, 8, 8,10,10, 7, 8, 7,
8, 8,10, 9,11,11, 7, 7, 8, 8, 8, 9,10,11,11, 9,
9, 9,10,10,11,10,12,11, 9, 9, 9,10,10,11,11,11,
12,
};
 
static const static_codebook _44u7__p6_0 = {
2, 81,
(char *)_vq_lengthlist__44u7__p6_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44u7__p6_0,
0
};
 
static const long _vq_quantlist__44u7__p7_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u7__p7_0[] = {
1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 8, 9, 9, 7,
10,10, 5, 8, 9, 7, 9,10, 8, 9, 9, 4, 9, 9, 9,11,
10, 8,10,10, 7,11,10,10,10,12,10,12,12, 7,10,10,
10,12,11,10,12,12, 5, 9, 9, 8,10,10, 9,11,11, 7,
11,10,10,12,12,10,11,12, 7,10,11,10,12,12,10,12,
10,
};
 
static const static_codebook _44u7__p7_0 = {
4, 81,
(char *)_vq_lengthlist__44u7__p7_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44u7__p7_0,
0
};
 
static const long _vq_quantlist__44u7__p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44u7__p7_1[] = {
3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 6, 6,
8, 7, 8, 8, 8, 8, 4, 5, 5, 6, 6, 7, 8, 8, 8, 8,
8, 6, 7, 6, 7, 7, 8, 8, 9, 9, 9, 9, 6, 6, 7, 7,
7, 8, 8, 9, 9, 9, 9, 7, 8, 7, 8, 8, 9, 9, 9, 9,
9, 9, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8,
9, 9, 9, 9,10, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9,10, 8, 8, 8, 9, 9, 9, 9,10, 9,10,10, 8, 8,
8, 9, 9, 9, 9, 9,10,10,10,
};
 
static const static_codebook _44u7__p7_1 = {
2, 121,
(char *)_vq_lengthlist__44u7__p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44u7__p7_1,
0
};
 
static const long _vq_quantlist__44u7__p8_0[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44u7__p8_0[] = {
1, 4, 4, 6, 6, 8, 8,10,10,11,11, 4, 6, 6, 7, 7,
9, 9,11,10,12,12, 5, 6, 5, 7, 7, 9, 9,10,11,12,
12, 6, 7, 7, 8, 8,10,10,11,11,13,13, 6, 7, 7, 8,
8,10,10,11,12,13,13, 8, 9, 9,10,10,11,11,12,12,
14,14, 8, 9, 9,10,10,11,11,12,12,14,14,10,10,10,
11,11,13,12,14,14,15,15,10,10,10,12,12,13,13,14,
14,15,15,11,12,12,13,13,14,14,15,14,16,15,11,12,
12,13,13,14,14,15,15,15,16,
};
 
static const static_codebook _44u7__p8_0 = {
2, 121,
(char *)_vq_lengthlist__44u7__p8_0,
1, -524582912, 1618345984, 4, 0,
(long *)_vq_quantlist__44u7__p8_0,
0
};
 
static const long _vq_quantlist__44u7__p8_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44u7__p8_1[] = {
4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7,
7, 7, 7, 7, 7, 7, 5, 6, 6, 6, 7, 7, 7, 7, 7, 7,
7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 6, 7, 7, 7,
7, 7, 7, 7, 7, 8, 8, 7, 7, 7, 7, 7, 8, 7, 8, 8,
8, 8, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8,
8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7,
7, 8, 8, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _44u7__p8_1 = {
2, 121,
(char *)_vq_lengthlist__44u7__p8_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44u7__p8_1,
0
};
 
static const long _vq_quantlist__44u7__p9_0[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44u7__p9_0[] = {
1, 3, 3,10,10,10,10,10,10,10,10, 4,10,10,10,10,
10,10,10,10,10,10, 4,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9,
};
 
static const static_codebook _44u7__p9_0 = {
2, 121,
(char *)_vq_lengthlist__44u7__p9_0,
1, -512171520, 1630791680, 4, 0,
(long *)_vq_quantlist__44u7__p9_0,
0
};
 
static const long _vq_quantlist__44u7__p9_1[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u7__p9_1[] = {
1, 4, 4, 6, 5, 8, 6, 9, 8,10, 9,11,10, 4, 6, 6,
8, 8, 9, 9,11,10,11,11,11,11, 4, 6, 6, 8, 8,10,
9,11,11,11,11,11,12, 6, 8, 8,10,10,11,11,12,12,
13,12,13,13, 6, 8, 8,10,10,11,11,12,12,12,13,14,
13, 8,10,10,11,11,12,13,14,14,14,14,15,15, 8,10,
10,11,12,12,13,13,14,14,14,14,15, 9,11,11,13,13,
14,14,15,14,16,15,17,15, 9,11,11,12,13,14,14,15,
14,15,15,15,16,10,12,12,13,14,15,15,15,15,16,17,
16,17,10,13,12,13,14,14,16,16,16,16,15,16,17,11,
13,13,14,15,14,17,15,16,17,17,17,17,11,13,13,14,
15,15,15,15,17,17,16,17,16,
};
 
static const static_codebook _44u7__p9_1 = {
2, 169,
(char *)_vq_lengthlist__44u7__p9_1,
1, -518889472, 1622704128, 4, 0,
(long *)_vq_quantlist__44u7__p9_1,
0
};
 
static const long _vq_quantlist__44u7__p9_2[] = {
24,
23,
25,
22,
26,
21,
27,
20,
28,
19,
29,
18,
30,
17,
31,
16,
32,
15,
33,
14,
34,
13,
35,
12,
36,
11,
37,
10,
38,
9,
39,
8,
40,
7,
41,
6,
42,
5,
43,
4,
44,
3,
45,
2,
46,
1,
47,
0,
48,
};
 
static const char _vq_lengthlist__44u7__p9_2[] = {
2, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
8,
};
 
static const static_codebook _44u7__p9_2 = {
1, 49,
(char *)_vq_lengthlist__44u7__p9_2,
1, -526909440, 1611661312, 6, 0,
(long *)_vq_quantlist__44u7__p9_2,
0
};
 
static const char _huff_lengthlist__44u7__short[] = {
5,12,17,16,16,17,17,17,17,17, 4, 7,11,11,12, 9,
17,10,17,17, 7, 7, 8, 9, 7, 9,11,10,15,17, 7, 9,
10,11,10,12,14,12,16,17, 7, 8, 5, 7, 4, 7, 7, 8,
16,16, 6,10, 9,10, 7,10,11,11,16,17, 6, 8, 8, 9,
5, 7, 5, 8,16,17, 5, 5, 8, 7, 6, 7, 7, 6, 6,14,
12,10,12,11, 7,11, 4, 4, 2, 7,17,15,15,15, 8,15,
6, 8, 5, 9,
};
 
static const static_codebook _huff_book__44u7__short = {
2, 100,
(char *)_huff_lengthlist__44u7__short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44u8__long[] = {
3, 9,13,14,14,15,14,14,15,15, 5, 4, 6, 8,10,12,
12,14,15,15, 9, 5, 4, 5, 8,10,11,13,16,16,10, 7,
4, 3, 5, 7, 9,11,13,13,10, 9, 7, 4, 4, 6, 8,10,
12,14,13,11, 9, 6, 5, 5, 6, 8,12,14,13,11,10, 8,
7, 6, 6, 7,10,14,13,11,12,10, 8, 7, 6, 6, 9,13,
12,11,14,12,11, 9, 8, 7, 9,11,11,12,14,13,14,11,
10, 8, 8, 9,
};
 
static const static_codebook _huff_book__44u8__long = {
2, 100,
(char *)_huff_lengthlist__44u8__long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44u8__short[] = {
6,14,18,18,17,17,17,17,17,17, 4, 7, 9, 9,10,13,
15,17,17,17, 6, 7, 5, 6, 8,11,16,17,16,17, 5, 7,
5, 4, 6,10,14,17,17,17, 6, 6, 6, 5, 7,10,13,16,
17,17, 7, 6, 7, 7, 7, 8, 7,10,15,16,12, 9, 9, 6,
6, 5, 3, 5,11,15,14,14,13, 5, 5, 7, 3, 4, 8,15,
17,17,13, 7, 7,10, 6, 6,10,15,17,17,16,10,11,14,
10,10,15,17,
};
 
static const static_codebook _huff_book__44u8__short = {
2, 100,
(char *)_huff_lengthlist__44u8__short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44u8_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u8_p1_0[] = {
1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 8, 9, 9, 7,
9, 9, 5, 7, 7, 7, 9, 9, 8, 9, 9, 5, 7, 7, 7, 9,
9, 7, 9, 9, 7, 9, 9, 9,10,11, 9,11,10, 7, 9, 9,
9,11,10, 9,10,11, 5, 7, 7, 7, 9, 9, 7, 9, 9, 7,
9, 9, 9,11,10, 9,10,10, 8, 9, 9, 9,11,11, 9,11,
10,
};
 
static const static_codebook _44u8_p1_0 = {
4, 81,
(char *)_vq_lengthlist__44u8_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u8_p1_0,
0
};
 
static const long _vq_quantlist__44u8_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u8_p2_0[] = {
4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
9, 9,11,11, 8, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
8,10,10, 7, 8, 8,10,10, 9,10,10,12,12, 9,10,10,
11,12, 5, 7, 7, 9, 9, 7, 8, 7,10,10, 7, 8, 8,10,
10, 9,10, 9,12,11, 9,10,10,12,12, 8, 9, 9,12,11,
9,10,10,12,12, 9,10,10,12,12,11,12,12,14,14,11,
11,12,13,14, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
10,12,12,11,12,11,13,13,11,12,12,14,14, 5, 7, 7,
9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,
12, 9,10,10,11,12, 7, 8, 8,10,10, 8, 9, 9,11,11,
8, 9, 9,11,11,10,11,11,12,13,10,11,11,12,13, 6,
8, 8,10,10, 8, 9, 8,11,10, 8, 9, 9,11,11,10,11,
10,13,12,10,11,11,13,13, 9,10,10,12,12,10,11,11,
13,13,10,11,11,13,13,12,12,13,13,14,12,13,13,14,
14, 9,10,10,12,12,10,11,10,13,12,10,11,11,13,13,
11,13,12,14,13,12,13,13,14,14, 5, 7, 7, 9, 9, 7,
8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12, 9,10,
10,12,12, 7, 8, 8,10,10, 8, 9, 9,11,11, 8, 8, 9,
10,11,10,11,11,13,13,10,10,11,12,13, 7, 8, 8,10,
10, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,11,13,13,
10,11,11,13,12, 9,10,10,12,12,10,11,11,13,13,10,
10,11,12,13,12,13,13,14,14,12,12,13,13,14, 9,10,
10,12,12,10,11,11,13,13,10,11,11,13,13,12,13,13,
15,14,12,13,13,14,13, 8, 9, 9,11,11, 9,10,10,12,
12, 9,10,10,12,12,12,12,12,14,13,11,12,12,14,14,
9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,
13,13,14,15,12,13,13,14,15, 9,10,10,12,12,10,11,
10,13,12,10,11,11,13,13,12,13,12,15,14,12,13,13,
14,15,11,12,12,14,14,12,13,13,14,14,12,13,13,15,
14,14,14,14,14,16,14,14,15,16,16,11,12,12,14,14,
11,12,12,14,14,12,13,13,14,15,13,14,13,16,14,14,
14,14,16,16, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
10,12,12,11,12,12,14,13,11,12,12,14,14, 9,10,10,
12,12,10,11,11,13,13,10,10,11,12,13,12,13,13,15,
14,12,12,13,13,14, 9,10,10,12,12,10,11,11,13,13,
10,11,11,13,13,12,13,13,14,14,12,13,13,15,14,11,
12,12,14,13,12,13,13,15,14,11,12,12,13,14,14,15,
14,16,15,13,13,14,13,16,11,12,12,14,14,12,13,13,
14,15,12,13,12,15,14,14,14,14,16,15,14,15,13,16,
14,
};
 
static const static_codebook _44u8_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44u8_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u8_p2_0,
0
};
 
static const long _vq_quantlist__44u8_p3_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u8_p3_0[] = {
3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7,
9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 7, 7,
8, 8, 9, 9,11,10, 7, 7, 7, 8, 8, 9, 9,10,11, 9,
9, 9,10,10,11,10,12,11, 9, 9, 9, 9,10,11,11,11,
12,
};
 
static const static_codebook _44u8_p3_0 = {
2, 81,
(char *)_vq_lengthlist__44u8_p3_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44u8_p3_0,
0
};
 
static const long _vq_quantlist__44u8_p4_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44u8_p4_0[] = {
4, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,11,11,11,
11, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,
12,12, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
11,12,12, 6, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
11,11,12,12, 6, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,
10,11,11,12,12, 7, 7, 7, 8, 8, 9, 8,10, 9,10, 9,
11,10,12,11,13,12, 7, 7, 7, 8, 8, 8, 9, 9,10, 9,
10,10,11,11,12,12,13, 8, 8, 8, 9, 9, 9, 9,10,10,
11,10,11,11,12,12,13,13, 8, 8, 8, 9, 9, 9,10,10,
10,10,11,11,11,12,12,12,13, 8, 9, 9, 9, 9,10, 9,
11,10,11,11,12,11,13,12,13,13, 8, 9, 9, 9, 9, 9,
10,10,11,11,11,11,12,12,13,13,13,10,10,10,10,10,
11,10,11,11,12,11,13,12,13,13,14,13,10,10,10,10,
10,10,11,11,11,11,12,12,13,13,13,13,14,11,11,11,
11,11,12,11,12,12,13,12,13,13,14,13,14,14,11,11,
11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,11,
12,12,12,12,13,12,13,12,13,13,14,13,14,14,14,14,
11,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,
14,
};
 
static const static_codebook _44u8_p4_0 = {
2, 289,
(char *)_vq_lengthlist__44u8_p4_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44u8_p4_0,
0
};
 
static const long _vq_quantlist__44u8_p5_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u8_p5_0[] = {
1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 8, 9, 9, 7,
9, 9, 5, 8, 8, 7, 9, 9, 8, 9, 9, 5, 8, 8, 8,10,
10, 8,10,10, 7,10,10, 9,10,12, 9,12,11, 7,10,10,
9,11,10, 9,11,12, 5, 8, 8, 8,10,10, 8,10,10, 7,
10,10, 9,11,11, 9,10,11, 7,10,10, 9,11,11,10,12,
10,
};
 
static const static_codebook _44u8_p5_0 = {
4, 81,
(char *)_vq_lengthlist__44u8_p5_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44u8_p5_0,
0
};
 
static const long _vq_quantlist__44u8_p5_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44u8_p5_1[] = {
4, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 5, 5, 6, 6,
7, 7, 8, 8, 8, 8, 5, 5, 5, 6, 6, 7, 7, 7, 8, 8,
8, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 6, 6, 6, 7,
7, 7, 7, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8,
8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 7, 8, 7,
8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 8, 8,
8, 8, 8, 8, 8, 8, 8, 9, 9,
};
 
static const static_codebook _44u8_p5_1 = {
2, 121,
(char *)_vq_lengthlist__44u8_p5_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44u8_p5_1,
0
};
 
static const long _vq_quantlist__44u8_p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u8_p6_0[] = {
2, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 4, 6, 5,
7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7, 8,
8, 8, 8, 9, 9,10,10, 6, 7, 7, 7, 8, 8, 8, 8, 9,
9,10,10,10, 6, 7, 7, 8, 8, 8, 8, 9, 8,10, 9,11,
10, 7, 8, 8, 8, 8, 8, 9, 9, 9,10,10,11,11, 7, 8,
8, 8, 8, 9, 8, 9, 9,10,10,11,11, 8, 8, 8, 9, 9,
9, 9, 9,10,10,10,11,11, 8, 8, 8, 9, 9, 9, 9,10,
9,10,10,11,11, 9, 9, 9, 9,10,10,10,10,10,10,11,
11,12, 9, 9, 9,10, 9,10,10,10,10,11,10,12,11,10,
10,10,10,10,11,11,11,11,11,12,12,12,10,10,10,10,
11,11,11,11,11,12,11,12,12,
};
 
static const static_codebook _44u8_p6_0 = {
2, 169,
(char *)_vq_lengthlist__44u8_p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44u8_p6_0,
0
};
 
static const long _vq_quantlist__44u8_p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u8_p6_1[] = {
3, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44u8_p6_1 = {
2, 25,
(char *)_vq_lengthlist__44u8_p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u8_p6_1,
0
};
 
static const long _vq_quantlist__44u8_p7_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u8_p7_0[] = {
1, 4, 5, 6, 6, 7, 7, 8, 8,10,10,11,11, 5, 6, 6,
7, 7, 8, 8, 9, 9,11,10,12,11, 5, 6, 6, 7, 7, 8,
8, 9, 9,10,11,11,12, 6, 7, 7, 8, 8, 9, 9,10,10,
11,11,12,12, 6, 7, 7, 8, 8, 9, 9,10,10,11,12,13,
12, 7, 8, 8, 9, 9,10,10,11,11,12,12,13,13, 8, 8,
8, 9, 9,10,10,11,11,12,12,13,13, 9, 9, 9,10,10,
11,11,12,12,13,13,14,14, 9, 9, 9,10,10,11,11,12,
12,13,13,14,14,10,11,11,12,11,13,12,13,13,14,14,
15,15,10,11,11,11,12,12,13,13,14,14,14,15,15,11,
12,12,13,13,14,13,15,14,15,15,16,15,11,11,12,13,
13,13,14,14,14,15,15,15,16,
};
 
static const static_codebook _44u8_p7_0 = {
2, 169,
(char *)_vq_lengthlist__44u8_p7_0,
1, -523206656, 1618345984, 4, 0,
(long *)_vq_quantlist__44u8_p7_0,
0
};
 
static const long _vq_quantlist__44u8_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44u8_p7_1[] = {
4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7,
7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7, 7, 7, 7, 7, 7,
7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 6, 7, 7, 7,
7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 8, 8,
8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 7, 7, 7,
8, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8,
8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7,
7, 8, 8, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _44u8_p7_1 = {
2, 121,
(char *)_vq_lengthlist__44u8_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44u8_p7_1,
0
};
 
static const long _vq_quantlist__44u8_p8_0[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__44u8_p8_0[] = {
1, 4, 4, 7, 7, 8, 8, 8, 7, 9, 8,10, 9,11,10, 4,
6, 6, 8, 8,10, 9, 9, 9,10,10,11,10,12,10, 4, 6,
6, 8, 8,10,10, 9, 9,10,10,11,11,11,12, 7, 8, 8,
10,10,11,11,11,10,12,11,12,12,13,11, 7, 8, 8,10,
10,11,11,10,10,11,11,12,12,13,13, 8,10,10,11,11,
12,11,12,11,13,12,13,12,14,13, 8,10, 9,11,11,12,
12,12,12,12,12,13,13,14,13, 8, 9, 9,11,10,12,11,
13,12,13,13,14,13,14,13, 8, 9, 9,10,11,12,12,12,
12,13,13,14,15,14,14, 9,10,10,12,11,13,12,13,13,
14,13,14,14,14,14, 9,10,10,12,12,12,12,13,13,14,
14,14,15,14,14,10,11,11,13,12,13,12,14,14,14,14,
14,14,15,15,10,11,11,12,12,13,13,14,14,14,15,15,
14,16,15,11,12,12,13,12,14,14,14,13,15,14,15,15,
15,17,11,12,12,13,13,14,14,14,15,15,14,15,15,14,
17,
};
 
static const static_codebook _44u8_p8_0 = {
2, 225,
(char *)_vq_lengthlist__44u8_p8_0,
1, -520986624, 1620377600, 4, 0,
(long *)_vq_quantlist__44u8_p8_0,
0
};
 
static const long _vq_quantlist__44u8_p8_1[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__44u8_p8_1[] = {
4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 6, 6, 7, 7, 8,
8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7,
7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,10, 8, 8,
8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,
10, 9,10, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,
10,10,10,10,10,10,10,10, 8, 9, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9,10,10,10,10, 9,10,10, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,10,10,
10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,
10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9,10, 9,
10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,
10, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9,10,10,10,
10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,
9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10, 9, 9, 9,10, 9,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,
9,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10, 9, 9, 9,10, 9,10, 9,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,
};
 
static const static_codebook _44u8_p8_1 = {
2, 441,
(char *)_vq_lengthlist__44u8_p8_1,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__44u8_p8_1,
0
};
 
static const long _vq_quantlist__44u8_p9_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u8_p9_0[] = {
1, 3, 3, 9, 9, 9, 9, 9, 9, 4, 9, 9, 9, 9, 9, 9,
9, 9, 5, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8,
8,
};
 
static const static_codebook _44u8_p9_0 = {
2, 81,
(char *)_vq_lengthlist__44u8_p9_0,
1, -511895552, 1631393792, 4, 0,
(long *)_vq_quantlist__44u8_p9_0,
0
};
 
static const long _vq_quantlist__44u8_p9_1[] = {
9,
8,
10,
7,
11,
6,
12,
5,
13,
4,
14,
3,
15,
2,
16,
1,
17,
0,
18,
};
 
static const char _vq_lengthlist__44u8_p9_1[] = {
1, 4, 4, 7, 7, 8, 7, 8, 6, 9, 7,10, 8,11,10,11,
11,11,11, 4, 7, 6, 9, 9,10, 9, 9, 9,10,10,11,10,
11,10,11,11,13,11, 4, 7, 7, 9, 9, 9, 9, 9, 9,10,
10,11,10,11,11,11,12,11,12, 7, 9, 8,11,11,11,11,
10,10,11,11,12,12,12,12,12,12,14,13, 7, 8, 9,10,
11,11,11,10,10,11,11,11,11,12,12,14,12,13,14, 8,
9, 9,11,11,11,11,11,11,12,12,14,12,15,14,14,14,
15,14, 8, 9, 9,11,11,11,11,12,11,12,12,13,13,13,
13,13,13,14,14, 8, 9, 9,11,10,12,11,12,12,13,13,
13,13,15,14,14,14,16,16, 8, 9, 9,10,11,11,12,12,
12,13,13,13,14,14,14,15,16,15,15, 9,10,10,11,12,
12,13,13,13,14,14,16,14,14,16,16,16,16,15, 9,10,
10,11,11,12,13,13,14,15,14,16,14,15,16,16,16,16,
15,10,11,11,12,13,13,14,15,15,15,15,15,16,15,16,
15,16,15,15,10,11,11,13,13,14,13,13,15,14,15,15,
16,15,15,15,16,15,16,10,12,12,14,14,14,14,14,16,
16,15,15,15,16,16,16,16,16,16,11,12,12,14,14,14,
14,15,15,16,15,16,15,16,15,16,16,16,16,12,12,13,
14,14,15,16,16,16,16,16,16,15,16,16,16,16,16,16,
12,13,13,14,14,14,14,15,16,15,16,16,16,16,16,16,
16,16,16,12,13,14,14,14,16,15,16,15,16,16,16,16,
16,16,16,16,16,16,12,14,13,14,15,15,15,16,15,16,
16,15,16,16,16,16,16,16,16,
};
 
static const static_codebook _44u8_p9_1 = {
2, 361,
(char *)_vq_lengthlist__44u8_p9_1,
1, -518287360, 1622704128, 5, 0,
(long *)_vq_quantlist__44u8_p9_1,
0
};
 
static const long _vq_quantlist__44u8_p9_2[] = {
24,
23,
25,
22,
26,
21,
27,
20,
28,
19,
29,
18,
30,
17,
31,
16,
32,
15,
33,
14,
34,
13,
35,
12,
36,
11,
37,
10,
38,
9,
39,
8,
40,
7,
41,
6,
42,
5,
43,
4,
44,
3,
45,
2,
46,
1,
47,
0,
48,
};
 
static const char _vq_lengthlist__44u8_p9_2[] = {
2, 3, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7,
};
 
static const static_codebook _44u8_p9_2 = {
1, 49,
(char *)_vq_lengthlist__44u8_p9_2,
1, -526909440, 1611661312, 6, 0,
(long *)_vq_quantlist__44u8_p9_2,
0
};
 
static const char _huff_lengthlist__44u9__long[] = {
3, 9,13,13,14,15,14,14,15,15, 5, 5, 9,10,12,12,
13,14,16,15,10, 6, 6, 6, 8,11,12,13,16,15,11, 7,
5, 3, 5, 8,10,12,15,15,10,10, 7, 4, 3, 5, 8,10,
12,12,12,12, 9, 7, 5, 4, 6, 8,10,13,13,12,11, 9,
7, 5, 5, 6, 9,12,14,12,12,10, 8, 6, 6, 6, 7,11,
13,12,14,13,10, 8, 7, 7, 7,10,11,11,12,13,12,11,
10, 8, 8, 9,
};
 
static const static_codebook _huff_book__44u9__long = {
2, 100,
(char *)_huff_lengthlist__44u9__long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const char _huff_lengthlist__44u9__short[] = {
9,16,18,18,17,17,17,17,17,17, 5, 8,11,12,11,12,
17,17,16,16, 6, 6, 8, 8, 9,10,14,15,16,16, 6, 7,
7, 4, 6, 9,13,16,16,16, 6, 6, 7, 4, 5, 8,11,15,
17,16, 7, 6, 7, 6, 6, 8, 9,10,14,16,11, 8, 8, 7,
6, 6, 3, 4,10,15,14,12,12,10, 5, 6, 3, 3, 8,13,
15,17,15,11, 6, 8, 6, 6, 9,14,17,15,15,12, 8,10,
9, 9,12,15,
};
 
static const static_codebook _huff_book__44u9__short = {
2, 100,
(char *)_huff_lengthlist__44u9__short,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44u9_p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u9_p1_0[] = {
1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 9, 9, 7,
9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 9, 5, 7, 7, 7, 9,
9, 7, 9, 9, 8, 9, 9, 9,10,11, 9,11,11, 7, 9, 9,
9,11,10, 9,11,11, 5, 7, 7, 7, 9, 9, 8, 9,10, 7,
9, 9, 9,11,11, 9,10,11, 7, 9,10, 9,11,11, 9,11,
10,
};
 
static const static_codebook _44u9_p1_0 = {
4, 81,
(char *)_vq_lengthlist__44u9_p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44u9_p1_0,
0
};
 
static const long _vq_quantlist__44u9_p2_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u9_p2_0[] = {
3, 5, 5, 8, 8, 5, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8,
9, 9,11,10, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
8,10,10, 7, 8, 8, 9,10, 9,10,10,11,11, 9, 9,10,
11,11, 6, 7, 7, 9, 9, 7, 8, 8,10, 9, 7, 8, 8,10,
10, 9,10, 9,11,11, 9,10,10,11,11, 8, 9, 9,11,11,
9,10,10,12,11, 9,10,10,11,12,11,11,11,13,13,11,
11,11,12,13, 8, 9, 9,11,11, 9,10,10,11,11, 9,10,
10,12,11,11,12,11,13,12,11,11,12,13,13, 6, 7, 7,
9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,
11, 9,10,10,11,12, 7, 8, 8,10,10, 8, 9, 9,11,11,
8, 9, 9,10,10,10,11,11,12,12,10,10,11,12,12, 7,
8, 8,10,10, 8, 9, 8,10,10, 8, 9, 9,10,10,10,11,
10,12,11,10,10,11,12,12, 9,10,10,11,12,10,11,11,
12,12,10,11,10,12,12,12,12,12,13,13,11,12,12,13,
13, 9,10,10,11,11, 9,10,10,12,12,10,11,11,12,13,
11,12,11,13,12,12,12,12,13,14, 6, 7, 7, 9, 9, 7,
8, 8,10,10, 7, 8, 8,10,10, 9,10,10,11,11, 9,10,
10,11,12, 7, 8, 8,10,10, 8, 9, 9,11,10, 8, 8, 9,
10,10,10,11,10,12,12,10,10,11,11,12, 7, 8, 8,10,
10, 8, 9, 9,10,10, 8, 9, 9,10,10,10,11,10,12,12,
10,11,10,12,12, 9,10,10,12,11,10,11,11,12,12, 9,
10,10,12,12,12,12,12,13,13,11,11,12,12,14, 9,10,
10,11,12,10,11,11,12,12,10,11,11,12,12,11,12,12,
14,14,12,12,12,13,13, 8, 9, 9,11,11, 9,10,10,12,
11, 9,10,10,12,12,11,12,11,13,13,11,11,12,13,13,
9,10,10,12,12,10,11,11,12,12,10,11,11,12,12,12,
12,12,14,14,12,12,12,13,13, 9,10,10,12,11,10,11,
10,12,12,10,11,11,12,12,11,12,12,14,13,12,12,12,
13,14,11,12,11,13,13,11,12,12,13,13,12,12,12,14,
14,13,13,13,13,15,13,13,14,15,15,11,11,11,13,13,
11,12,11,13,13,11,12,12,13,13,12,13,12,15,13,13,
13,14,14,15, 8, 9, 9,11,11, 9,10,10,11,12, 9,10,
10,11,12,11,12,11,13,13,11,12,12,13,13, 9,10,10,
11,12,10,11,10,12,12,10,10,11,12,13,12,12,12,14,
13,11,12,12,13,14, 9,10,10,12,12,10,11,11,12,12,
10,11,11,12,12,12,12,12,14,13,12,12,12,14,13,11,
11,11,13,13,11,12,12,14,13,11,11,12,13,13,13,13,
13,15,14,12,12,13,13,15,11,12,12,13,13,12,12,12,
13,14,11,12,12,13,13,13,13,14,14,15,13,13,13,14,
14,
};
 
static const static_codebook _44u9_p2_0 = {
4, 625,
(char *)_vq_lengthlist__44u9_p2_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u9_p2_0,
0
};
 
static const long _vq_quantlist__44u9_p3_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44u9_p3_0[] = {
3, 4, 4, 5, 5, 7, 7, 8, 8, 4, 5, 5, 6, 6, 7, 7,
9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
8, 8, 9, 9, 5, 6, 6, 7, 7, 8, 8, 9, 9, 7, 7, 7,
8, 8, 9, 9,10,10, 7, 7, 7, 8, 8, 9, 9,10,10, 8,
9, 9,10, 9,10,10,11,11, 8, 9, 9, 9,10,10,10,11,
11,
};
 
static const static_codebook _44u9_p3_0 = {
2, 81,
(char *)_vq_lengthlist__44u9_p3_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44u9_p3_0,
0
};
 
static const long _vq_quantlist__44u9_p4_0[] = {
8,
7,
9,
6,
10,
5,
11,
4,
12,
3,
13,
2,
14,
1,
15,
0,
16,
};
 
static const char _vq_lengthlist__44u9_p4_0[] = {
4, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
11, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,
11,11, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,
10,11,11, 6, 6, 6, 7, 6, 7, 7, 8, 8, 9, 9,10,10,
11,11,12,11, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9,10,
10,11,11,11,12, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,
10,10,11,11,12,12, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9,
9,10,10,11,11,12,12, 8, 8, 8, 8, 8, 9, 8,10, 9,
10,10,11,10,12,11,13,12, 8, 8, 8, 8, 8, 9, 9, 9,
10,10,10,10,11,11,12,12,12, 8, 8, 8, 9, 9, 9, 9,
10,10,11,10,12,11,12,12,13,12, 8, 8, 8, 9, 9, 9,
9,10,10,10,11,11,11,12,12,12,13, 9, 9, 9,10,10,
10,10,11,10,11,11,12,11,13,12,13,13, 9, 9,10,10,
10,10,10,10,11,11,11,11,12,12,13,13,13,10,11,10,
11,11,11,11,12,11,12,12,13,12,13,13,14,13,10,10,
10,11,11,11,11,11,12,12,12,12,13,13,13,13,14,11,
11,11,12,11,12,12,12,12,13,13,13,13,14,13,14,14,
11,11,11,11,12,12,12,12,12,12,13,13,13,13,14,14,
14,
};
 
static const static_codebook _44u9_p4_0 = {
2, 289,
(char *)_vq_lengthlist__44u9_p4_0,
1, -529530880, 1611661312, 5, 0,
(long *)_vq_quantlist__44u9_p4_0,
0
};
 
static const long _vq_quantlist__44u9_p5_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44u9_p5_0[] = {
1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 8, 9, 9, 7,
9, 9, 5, 8, 8, 7, 9, 9, 8, 9, 9, 5, 8, 8, 8,10,
10, 8,10,10, 7,10,10, 9,10,12, 9,11,11, 7,10,10,
9,11,10, 9,11,12, 5, 8, 8, 8,10,10, 8,10,10, 7,
10,10, 9,12,11, 9,10,11, 7,10,10, 9,11,11,10,12,
10,
};
 
static const static_codebook _44u9_p5_0 = {
4, 81,
(char *)_vq_lengthlist__44u9_p5_0,
1, -529137664, 1618345984, 2, 0,
(long *)_vq_quantlist__44u9_p5_0,
0
};
 
static const long _vq_quantlist__44u9_p5_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44u9_p5_1[] = {
5, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 6, 6,
7, 7, 7, 7, 8, 7, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7,
7, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 6, 6, 6, 7,
7, 7, 7, 7, 7, 8, 8, 7, 7, 7, 7, 7, 8, 7, 8, 8,
8, 8, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
8, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 8, 8, 8, 8,
8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8,
};
 
static const static_codebook _44u9_p5_1 = {
2, 121,
(char *)_vq_lengthlist__44u9_p5_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44u9_p5_1,
0
};
 
static const long _vq_quantlist__44u9_p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u9_p6_0[] = {
2, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 4, 6, 5,
7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 5, 6, 7, 7, 8,
8, 8, 8, 9, 9,10,10, 6, 7, 7, 8, 8, 8, 8, 9, 9,
10,10,10,10, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,10,
10, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,11, 7, 8,
8, 8, 8, 9, 9, 9, 9,10,10,11,11, 8, 8, 8, 9, 9,
9, 9, 9,10,10,10,11,11, 8, 8, 8, 9, 9, 9, 9,10,
9,10,10,11,11, 9, 9, 9,10,10,10,10,10,11,11,11,
11,12, 9, 9, 9,10,10,10,10,10,10,11,10,12,11,10,
10,10,10,10,11,11,11,11,11,12,12,12,10,10,10,10,
10,11,11,11,11,12,11,12,12,
};
 
static const static_codebook _44u9_p6_0 = {
2, 169,
(char *)_vq_lengthlist__44u9_p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44u9_p6_0,
0
};
 
static const long _vq_quantlist__44u9_p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44u9_p6_1[] = {
4, 4, 4, 5, 5, 4, 5, 4, 5, 5, 4, 4, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5,
};
 
static const static_codebook _44u9_p6_1 = {
2, 25,
(char *)_vq_lengthlist__44u9_p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44u9_p6_1,
0
};
 
static const long _vq_quantlist__44u9_p7_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44u9_p7_0[] = {
1, 4, 5, 6, 6, 7, 7, 8, 9,10,10,11,11, 5, 6, 6,
7, 7, 8, 8, 9, 9,10,10,11,11, 5, 6, 6, 7, 7, 8,
8, 9, 9,10,10,11,11, 6, 7, 7, 8, 8, 9, 9,10,10,
11,11,12,12, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
12, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13, 8, 8,
8, 9, 9,10,10,11,11,12,12,13,13, 9, 9, 9,10,10,
11,11,12,12,13,13,13,13, 9, 9, 9,10,10,11,11,12,
12,13,13,14,14,10,10,10,11,11,12,12,13,13,14,13,
15,14,10,10,10,11,11,12,12,13,13,14,14,14,14,11,
11,12,12,12,13,13,14,14,14,14,15,15,11,11,12,12,
12,13,13,14,14,14,15,15,15,
};
 
static const static_codebook _44u9_p7_0 = {
2, 169,
(char *)_vq_lengthlist__44u9_p7_0,
1, -523206656, 1618345984, 4, 0,
(long *)_vq_quantlist__44u9_p7_0,
0
};
 
static const long _vq_quantlist__44u9_p7_1[] = {
5,
4,
6,
3,
7,
2,
8,
1,
9,
0,
10,
};
 
static const char _vq_lengthlist__44u9_p7_1[] = {
5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 7, 7,
7, 7, 7, 7, 7, 7, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 8, 7, 7,
7, 7, 7, 7, 7, 8, 8, 8, 8,
};
 
static const static_codebook _44u9_p7_1 = {
2, 121,
(char *)_vq_lengthlist__44u9_p7_1,
1, -531365888, 1611661312, 4, 0,
(long *)_vq_quantlist__44u9_p7_1,
0
};
 
static const long _vq_quantlist__44u9_p8_0[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__44u9_p8_0[] = {
1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10, 9,11,10, 4,
6, 6, 8, 8, 9, 9, 9, 9,10,10,11,10,12,10, 4, 6,
6, 8, 8, 9,10, 9, 9,10,10,11,11,12,12, 7, 8, 8,
10,10,11,11,10,10,11,11,12,12,13,12, 7, 8, 8,10,
10,11,11,10,10,11,11,12,12,12,13, 8,10, 9,11,11,
12,12,11,11,12,12,13,13,14,13, 8, 9, 9,11,11,12,
12,11,12,12,12,13,13,14,13, 8, 9, 9,10,10,12,11,
13,12,13,13,14,13,15,14, 8, 9, 9,10,10,11,12,12,
12,13,13,13,14,14,14, 9,10,10,12,11,13,12,13,13,
14,13,14,14,14,15, 9,10,10,11,12,12,12,13,13,14,
14,14,15,15,15,10,11,11,12,12,13,13,14,14,14,14,
15,14,16,15,10,11,11,12,12,13,13,13,14,14,14,14,
14,15,16,11,12,12,13,13,14,13,14,14,15,14,15,16,
16,16,11,12,12,13,13,14,13,14,14,15,15,15,16,15,
15,
};
 
static const static_codebook _44u9_p8_0 = {
2, 225,
(char *)_vq_lengthlist__44u9_p8_0,
1, -520986624, 1620377600, 4, 0,
(long *)_vq_quantlist__44u9_p8_0,
0
};
 
static const long _vq_quantlist__44u9_p8_1[] = {
10,
9,
11,
8,
12,
7,
13,
6,
14,
5,
15,
4,
16,
3,
17,
2,
18,
1,
19,
0,
20,
};
 
static const char _vq_lengthlist__44u9_p8_1[] = {
4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 6, 6, 7, 7, 8,
8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7,
7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10, 8, 8,
8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9,10,10, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
10, 9,10, 9,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9,10,10, 9,10,10,10,10,10, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,10,10,
10,10, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
10, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,10,10,
10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
9, 9, 9, 9,10, 9, 9,10,10,10,10,10,10,10,10,10,
10,10,10,10,10, 9, 9, 9,10, 9,10, 9,10,10,10,10,
10,10,10,10,10,10,10,10,10,10, 9, 9, 9,10, 9,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10, 9, 9, 9,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,
};
 
static const static_codebook _44u9_p8_1 = {
2, 441,
(char *)_vq_lengthlist__44u9_p8_1,
1, -529268736, 1611661312, 5, 0,
(long *)_vq_quantlist__44u9_p8_1,
0
};
 
static const long _vq_quantlist__44u9_p9_0[] = {
7,
6,
8,
5,
9,
4,
10,
3,
11,
2,
12,
1,
13,
0,
14,
};
 
static const char _vq_lengthlist__44u9_p9_0[] = {
1, 3, 3,11,11,11,11,11,11,11,11,11,11,11,11, 4,
10,11,11,11,11,11,11,11,11,11,11,11,11,11, 4,10,
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,
};
 
static const static_codebook _44u9_p9_0 = {
2, 225,
(char *)_vq_lengthlist__44u9_p9_0,
1, -510036736, 1631393792, 4, 0,
(long *)_vq_quantlist__44u9_p9_0,
0
};
 
static const long _vq_quantlist__44u9_p9_1[] = {
9,
8,
10,
7,
11,
6,
12,
5,
13,
4,
14,
3,
15,
2,
16,
1,
17,
0,
18,
};
 
static const char _vq_lengthlist__44u9_p9_1[] = {
1, 4, 4, 7, 7, 8, 7, 8, 7, 9, 8,10, 9,10,10,11,
11,12,12, 4, 7, 6, 9, 9,10, 9, 9, 8,10,10,11,10,
12,10,13,12,13,12, 4, 6, 6, 9, 9, 9, 9, 9, 9,10,
10,11,11,11,12,12,12,12,12, 7, 9, 8,11,10,10,10,
11,10,11,11,12,12,13,12,13,13,13,13, 7, 8, 9,10,
10,11,11,10,10,11,11,11,12,13,13,13,13,14,14, 8,
9, 9,11,11,12,11,12,12,13,12,12,13,13,14,15,14,
14,14, 8, 9, 9,10,11,11,11,12,12,13,12,13,13,14,
14,14,15,14,16, 8, 9, 9,11,10,12,12,12,12,15,13,
13,13,17,14,15,15,15,14, 8, 9, 9,10,11,11,12,13,
12,13,13,13,14,15,14,14,14,16,15, 9,11,10,12,12,
13,13,13,13,14,14,16,15,14,14,14,15,15,17, 9,10,
10,11,11,13,13,13,14,14,13,15,14,15,14,15,16,15,
16,10,11,11,12,12,13,14,15,14,15,14,14,15,17,16,
15,15,17,17,10,12,11,13,12,14,14,13,14,15,15,15,
15,16,17,17,15,17,16,11,12,12,14,13,15,14,15,16,
17,15,17,15,17,15,15,16,17,15,11,11,12,14,14,14,
14,14,15,15,16,15,17,17,17,16,17,16,15,12,12,13,
14,14,14,15,14,15,15,16,16,17,16,17,15,17,17,16,
12,14,12,14,14,15,15,15,14,14,16,16,16,15,16,16,
15,17,15,12,13,13,14,15,14,15,17,15,17,16,17,17,
17,16,17,16,17,17,12,13,13,14,16,15,15,15,16,15,
17,17,15,17,15,17,16,16,17,
};
 
static const static_codebook _44u9_p9_1 = {
2, 361,
(char *)_vq_lengthlist__44u9_p9_1,
1, -518287360, 1622704128, 5, 0,
(long *)_vq_quantlist__44u9_p9_1,
0
};
 
static const long _vq_quantlist__44u9_p9_2[] = {
24,
23,
25,
22,
26,
21,
27,
20,
28,
19,
29,
18,
30,
17,
31,
16,
32,
15,
33,
14,
34,
13,
35,
12,
36,
11,
37,
10,
38,
9,
39,
8,
40,
7,
41,
6,
42,
5,
43,
4,
44,
3,
45,
2,
46,
1,
47,
0,
48,
};
 
static const char _vq_lengthlist__44u9_p9_2[] = {
2, 4, 4, 5, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 7, 6, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7,
};
 
static const static_codebook _44u9_p9_2 = {
1, 49,
(char *)_vq_lengthlist__44u9_p9_2,
1, -526909440, 1611661312, 6, 0,
(long *)_vq_quantlist__44u9_p9_2,
0
};
 
static const char _huff_lengthlist__44un1__long[] = {
5, 6,12, 9,14, 9, 9,19, 6, 1, 5, 5, 8, 7, 9,19,
12, 4, 4, 7, 7, 9,11,18, 9, 5, 6, 6, 8, 7, 8,17,
14, 8, 7, 8, 8,10,12,18, 9, 6, 8, 6, 8, 6, 8,18,
9, 8,11, 8,11, 7, 5,15,16,18,18,18,17,15,11,18,
};
 
static const static_codebook _huff_book__44un1__long = {
2, 64,
(char *)_huff_lengthlist__44un1__long,
0, 0, 0, 0, 0,
NULL,
0
};
 
static const long _vq_quantlist__44un1__p1_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44un1__p1_0[] = {
1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,10,11, 8,
10,11, 5, 8, 8, 8,11,10, 8,11,10, 4, 9, 9, 8,11,
11, 8,11,11, 8,12,11,10,12,14,11,13,13, 7,11,11,
10,13,11,11,13,14, 4, 8, 9, 8,11,11, 8,11,12, 7,
11,11,11,14,13,10,11,13, 8,11,12,11,13,13,10,14,
12,
};
 
static const static_codebook _44un1__p1_0 = {
4, 81,
(char *)_vq_lengthlist__44un1__p1_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44un1__p1_0,
0
};
 
static const long _vq_quantlist__44un1__p2_0[] = {
1,
0,
2,
};
 
static const char _vq_lengthlist__44un1__p2_0[] = {
2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 8, 6,
7, 9, 5, 7, 7, 6, 8, 7, 7, 9, 8, 4, 7, 7, 7, 9,
8, 7, 8, 8, 7, 9, 8, 8, 8,10, 9,10,10, 6, 8, 8,
7,10, 8, 9,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 9, 6,
8, 8, 9,10,10, 7, 8,10, 6, 8, 9, 9,10,10, 8,10,
8,
};
 
static const static_codebook _44un1__p2_0 = {
4, 81,
(char *)_vq_lengthlist__44un1__p2_0,
1, -535822336, 1611661312, 2, 0,
(long *)_vq_quantlist__44un1__p2_0,
0
};
 
static const long _vq_quantlist__44un1__p3_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44un1__p3_0[] = {
1, 5, 5, 8, 8, 5, 8, 7, 9, 9, 5, 7, 8, 9, 9, 9,
10, 9,12,12, 9, 9,10,11,12, 6, 8, 8,10,10, 8,10,
10,11,11, 8, 9,10,11,11,10,11,11,13,13,10,11,11,
12,13, 6, 8, 8,10,10, 8,10, 9,11,11, 8,10,10,11,
11,10,11,11,13,12,10,11,11,13,12, 9,11,11,15,13,
10,12,11,15,13,10,11,11,15,14,12,14,13,16,15,12,
13,13,17,16, 9,11,11,13,15,10,11,12,14,15,10,11,
12,14,15,12,13,13,15,16,12,13,13,16,16, 5, 8, 8,
11,11, 8,10,10,12,12, 8,10,10,12,12,11,12,12,14,
14,11,12,12,14,14, 8,11,10,13,12,10,11,12,12,13,
10,12,12,13,13,12,12,13,13,15,11,12,13,15,14, 7,
10,10,12,12, 9,12,11,13,12,10,12,12,13,14,12,13,
12,15,13,11,13,12,14,15,10,12,12,16,14,11,12,12,
16,15,11,13,12,17,16,13,13,15,15,17,13,15,15,20,
17,10,12,12,14,16,11,12,12,15,15,11,13,13,15,18,
13,14,13,15,15,13,15,14,16,16, 5, 8, 8,11,11, 8,
10,10,12,12, 8,10,10,12,12,11,12,12,14,14,11,12,
12,14,15, 7,10,10,13,12,10,12,12,14,13, 9,10,12,
12,13,11,13,13,15,15,11,12,13,13,15, 8,10,10,12,
13,10,12,12,13,13,10,12,11,13,13,11,13,12,15,15,
12,13,12,15,13,10,12,12,16,14,11,12,12,16,15,10,
12,12,16,14,14,15,14,18,16,13,13,14,15,16,10,12,
12,14,16,11,13,13,16,16,11,13,12,14,16,13,15,15,
18,18,13,15,13,16,14, 8,11,11,16,16,10,13,13,17,
16,10,12,12,16,15,14,16,15,20,17,13,14,14,17,17,
9,12,12,16,16,11,13,14,16,17,11,13,13,16,16,15,
15,19,18, 0,14,15,15,18,18, 9,12,12,17,16,11,13,
12,17,16,11,12,13,15,17,15,16,15, 0,19,14,15,14,
19,18,12,14,14, 0,16,13,14,14,19,18,13,15,16,17,
16,15,15,17,18, 0,14,16,16,19, 0,12,14,14,16,18,
13,15,13,17,18,13,15,14,17,18,15,18,14,18,18,16,
17,16, 0,17, 8,11,11,15,15,10,12,12,16,16,10,13,
13,16,16,13,15,14,17,17,14,15,17,17,18, 9,12,12,
16,15,11,13,13,16,16,11,12,13,17,17,14,14,15,17,
17,14,15,16, 0,18, 9,12,12,16,17,11,13,13,16,17,
11,14,13,18,17,14,16,14,17,17,15,17,17,18,18,12,
14,14, 0,16,13,15,15,19, 0,12,13,15, 0, 0,14,17,
16,19, 0,16,15,18,18, 0,12,14,14,17, 0,13,14,14,
17, 0,13,15,14, 0,18,15,16,16, 0,18,15,18,15, 0,
17,
};
 
static const static_codebook _44un1__p3_0 = {
4, 625,
(char *)_vq_lengthlist__44un1__p3_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44un1__p3_0,
0
};
 
static const long _vq_quantlist__44un1__p4_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44un1__p4_0[] = {
3, 5, 5, 9, 9, 5, 6, 6,10, 9, 5, 6, 6, 9,10,10,
10,10,12,11, 9,10,10,12,12, 5, 7, 7,10,10, 7, 7,
8,10,11, 7, 7, 8,10,11,10,10,11,11,13,10,10,11,
11,13, 6, 7, 7,10,10, 7, 8, 7,11,10, 7, 8, 7,10,
10,10,11, 9,13,11,10,11,10,13,11,10,10,10,14,13,
10,11,11,14,13,10,10,11,13,14,12,12,13,15,15,12,
12,13,13,14,10,10,10,12,13,10,11,10,13,13,10,11,
11,13,13,12,13,12,14,13,12,13,13,14,13, 5, 7, 7,
10,10, 7, 8, 8,11,10, 7, 8, 8,10,10,11,11,11,13,
13,10,11,11,12,12, 7, 8, 8,11,11, 7, 8, 9,10,12,
8, 9, 9,11,11,11,10,12,11,14,11,11,12,13,13, 6,
8, 8,10,11, 7, 9, 7,12,10, 8, 9,10,11,12,10,12,
10,14,11,11,12,11,13,13,10,11,11,14,14,10,10,11,
13,14,11,12,12,15,13,12,11,14,12,16,12,13,14,15,
16,10,10,11,13,14,10,11,10,14,12,11,12,12,13,14,
12,13,11,15,12,14,14,14,15,15, 5, 7, 7,10,10, 7,
8, 8,10,10, 7, 8, 8,10,11,10,11,10,12,12,10,11,
11,12,13, 6, 8, 8,11,11, 8, 9, 9,12,11, 7, 7, 9,
10,12,11,11,11,12,13,11,10,12,11,15, 7, 8, 8,11,
11, 8, 9, 9,11,11, 7, 9, 8,12,10,11,12,11,13,12,
11,12,10,15,11,10,11,10,14,12,11,12,11,14,13,10,
10,11,13,14,13,13,13,17,15,12,11,14,12,15,10,10,
11,13,14,11,12,12,14,14,10,11,10,14,13,13,14,13,
16,17,12,14,11,16,12, 9,10,10,14,13,10,11,10,14,
14,10,11,11,13,13,13,14,14,16,15,12,13,13,14,14,
9,11,10,14,13,10,10,12,13,14,11,12,11,14,13,13,
14,14,14,15,13,14,14,15,15, 9,10,11,13,14,10,11,
10,15,13,11,11,12,12,15,13,14,12,15,14,13,13,14,
14,15,12,13,12,16,14,11,11,12,15,14,13,15,13,16,
14,13,12,15,12,17,15,16,15,16,16,12,12,13,13,15,
11,13,11,15,14,13,13,14,15,17,13,14,12, 0,13,14,
15,14,15, 0, 9,10,10,13,13,10,11,11,13,13,10,11,
11,13,13,12,13,12,14,14,13,14,14,15,17, 9,10,10,
13,13,11,12,11,15,12,10,10,11,13,16,13,14,13,15,
14,13,13,14,15,16,10,10,11,13,14,11,11,12,13,14,
10,12,11,14,14,13,13,13,14,15,13,15,13,16,15,12,
13,12,15,13,12,15,13,15,15,11,11,13,14,15,15,15,
15,15,17,13,12,14,13,17,12,12,14,14,15,13,13,14,
14,16,11,13,11,16,15,14,16,16,17, 0,14,13,11,16,
12,
};
 
static const static_codebook _44un1__p4_0 = {
4, 625,
(char *)_vq_lengthlist__44un1__p4_0,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44un1__p4_0,
0
};
 
static const long _vq_quantlist__44un1__p5_0[] = {
4,
3,
5,
2,
6,
1,
7,
0,
8,
};
 
static const char _vq_lengthlist__44un1__p5_0[] = {
1, 4, 4, 7, 7, 8, 8, 9, 9, 4, 6, 5, 8, 7, 8, 8,
10, 9, 4, 6, 6, 8, 8, 8, 8,10,10, 7, 8, 7, 9, 9,
9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,11, 8, 8, 8,
9, 9,10,10,11,11, 8, 8, 8, 9, 9,10,10,11,11, 9,
10,10,11,10,11,11,12,12, 9,10,10,10,11,11,11,12,
12,
};
 
static const static_codebook _44un1__p5_0 = {
2, 81,
(char *)_vq_lengthlist__44un1__p5_0,
1, -531628032, 1611661312, 4, 0,
(long *)_vq_quantlist__44un1__p5_0,
0
};
 
static const long _vq_quantlist__44un1__p6_0[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44un1__p6_0[] = {
1, 4, 4, 6, 6, 8, 8,10,10,11,11,15,15, 4, 5, 5,
8, 8, 9, 9,11,11,12,12,16,16, 4, 5, 6, 8, 8, 9,
9,11,11,12,12,14,14, 7, 8, 8, 9, 9,10,10,11,12,
13,13,16,17, 7, 8, 8, 9, 9,10,10,12,12,12,13,15,
15, 9,10,10,10,10,11,11,12,12,13,13,15,16, 9, 9,
9,10,10,11,11,13,12,13,13,17,17,10,11,11,11,12,
12,12,13,13,14,15, 0,18,10,11,11,12,12,12,13,14,
13,14,14,17,16,11,12,12,13,13,14,14,14,14,15,16,
17,16,11,12,12,13,13,14,14,14,14,15,15,17,17,14,
15,15,16,16,16,17,17,16, 0,17, 0,18,14,15,15,16,
16, 0,15,18,18, 0,16, 0, 0,
};
 
static const static_codebook _44un1__p6_0 = {
2, 169,
(char *)_vq_lengthlist__44un1__p6_0,
1, -526516224, 1616117760, 4, 0,
(long *)_vq_quantlist__44un1__p6_0,
0
};
 
static const long _vq_quantlist__44un1__p6_1[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44un1__p6_1[] = {
2, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 6, 5, 5,
6, 5, 6, 6, 5, 6, 6, 6, 6,
};
 
static const static_codebook _44un1__p6_1 = {
2, 25,
(char *)_vq_lengthlist__44un1__p6_1,
1, -533725184, 1611661312, 3, 0,
(long *)_vq_quantlist__44un1__p6_1,
0
};
 
static const long _vq_quantlist__44un1__p7_0[] = {
2,
1,
3,
0,
4,
};
 
static const char _vq_lengthlist__44un1__p7_0[] = {
1, 5, 3,11,11,11,11,11,11,11, 8,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11, 8,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11, 7,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
10,
};
 
static const static_codebook _44un1__p7_0 = {
4, 625,
(char *)_vq_lengthlist__44un1__p7_0,
1, -518709248, 1626677248, 3, 0,
(long *)_vq_quantlist__44un1__p7_0,
0
};
 
static const long _vq_quantlist__44un1__p7_1[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44un1__p7_1[] = {
1, 4, 4, 6, 6, 6, 6, 9, 8, 9, 8, 8, 8, 5, 7, 7,
7, 7, 8, 8, 8,10, 8,10, 8, 9, 5, 7, 7, 8, 7, 7,
8,10,10,11,10,12,11, 7, 8, 8, 9, 9, 9,10,11,11,
11,11,11,11, 7, 8, 8, 8, 9, 9, 9,10,10,10,11,11,
12, 7, 8, 8, 9, 9,10,11,11,12,11,12,11,11, 7, 8,
8, 9, 9,10,10,11,11,11,12,12,11, 8,10,10,10,10,
11,11,14,11,12,12,12,13, 9,10,10,10,10,12,11,14,
11,14,11,12,13,10,11,11,11,11,13,11,14,14,13,13,
13,14,11,11,11,12,11,12,12,12,13,14,14,13,14,12,
11,12,12,12,12,13,13,13,14,13,14,14,11,12,12,14,
12,13,13,12,13,13,14,14,14,
};
 
static const static_codebook _44un1__p7_1 = {
2, 169,
(char *)_vq_lengthlist__44un1__p7_1,
1, -523010048, 1618608128, 4, 0,
(long *)_vq_quantlist__44un1__p7_1,
0
};
 
static const long _vq_quantlist__44un1__p7_2[] = {
6,
5,
7,
4,
8,
3,
9,
2,
10,
1,
11,
0,
12,
};
 
static const char _vq_lengthlist__44un1__p7_2[] = {
3, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9, 9, 8, 4, 5, 5,
6, 6, 8, 8, 9, 8, 9, 9, 9, 9, 4, 5, 5, 7, 6, 8,
8, 8, 8, 9, 8, 9, 8, 6, 7, 7, 7, 8, 8, 8, 9, 9,
9, 9, 9, 9, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9,
9, 7, 8, 8, 8, 8, 9, 8, 9, 9,10, 9, 9,10, 7, 8,
8, 8, 8, 9, 9, 9, 9, 9, 9,10,10, 8, 9, 9, 9, 9,
9, 9, 9, 9,10,10, 9,10, 8, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9,10,10, 9, 9, 9,10, 9, 9,10, 9, 9,10,10,
10,10, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10, 9,
9, 9,10, 9, 9,10,10, 9,10,10,10,10, 9, 9, 9,10,
9, 9, 9,10,10,10,10,10,10,
};
 
static const static_codebook _44un1__p7_2 = {
2, 169,
(char *)_vq_lengthlist__44un1__p7_2,
1, -531103744, 1611661312, 4, 0,
(long *)_vq_quantlist__44un1__p7_2,
0
};
 
static const char _huff_lengthlist__44un1__short[] = {
12,12,14,12,14,14,14,14,12, 6, 6, 8, 9, 9,11,14,
12, 4, 2, 6, 6, 7,11,14,13, 6, 5, 7, 8, 9,11,14,
13, 8, 5, 8, 6, 8,12,14,12, 7, 7, 8, 8, 8,10,14,
12, 6, 3, 4, 4, 4, 7,14,11, 7, 4, 6, 6, 6, 8,14,
};
 
static const static_codebook _huff_book__44un1__short = {
2, 64,
(char *)_huff_lengthlist__44un1__short,
0, 0, 0, 0, 0,
NULL,
0
};
 
/contrib/sdk/sources/libvorbis-1.3.7/lib/codebook.c
0,0 → 1,461
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: basic codebook pack/unpack/code/decode operations
 
********************************************************************/
 
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ogg/ogg.h>
#include "vorbis/codec.h"
#include "codebook.h"
#include "scales.h"
#include "misc.h"
#include "os.h"
 
/* packs the given codebook into the bitstream **************************/
 
int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *opb){
long i,j;
int ordered=0;
 
/* first the basic parameters */
oggpack_write(opb,0x564342,24);
oggpack_write(opb,c->dim,16);
oggpack_write(opb,c->entries,24);
 
/* pack the codewords. There are two packings; length ordered and
length random. Decide between the two now. */
 
for(i=1;i<c->entries;i++)
if(c->lengthlist[i-1]==0 || c->lengthlist[i]<c->lengthlist[i-1])break;
if(i==c->entries)ordered=1;
 
if(ordered){
/* length ordered. We only need to say how many codewords of
each length. The actual codewords are generated
deterministically */
 
long count=0;
oggpack_write(opb,1,1); /* ordered */
oggpack_write(opb,c->lengthlist[0]-1,5); /* 1 to 32 */
 
for(i=1;i<c->entries;i++){
char this=c->lengthlist[i];
char last=c->lengthlist[i-1];
if(this>last){
for(j=last;j<this;j++){
oggpack_write(opb,i-count,ov_ilog(c->entries-count));
count=i;
}
}
}
oggpack_write(opb,i-count,ov_ilog(c->entries-count));
 
}else{
/* length random. Again, we don't code the codeword itself, just
the length. This time, though, we have to encode each length */
oggpack_write(opb,0,1); /* unordered */
 
/* algortihmic mapping has use for 'unused entries', which we tag
here. The algorithmic mapping happens as usual, but the unused
entry has no codeword. */
for(i=0;i<c->entries;i++)
if(c->lengthlist[i]==0)break;
 
if(i==c->entries){
oggpack_write(opb,0,1); /* no unused entries */
for(i=0;i<c->entries;i++)
oggpack_write(opb,c->lengthlist[i]-1,5);
}else{
oggpack_write(opb,1,1); /* we have unused entries; thus we tag */
for(i=0;i<c->entries;i++){
if(c->lengthlist[i]==0){
oggpack_write(opb,0,1);
}else{
oggpack_write(opb,1,1);
oggpack_write(opb,c->lengthlist[i]-1,5);
}
}
}
}
 
/* is the entry number the desired return value, or do we have a
mapping? If we have a mapping, what type? */
oggpack_write(opb,c->maptype,4);
switch(c->maptype){
case 0:
/* no mapping */
break;
case 1:case 2:
/* implicitly populated value mapping */
/* explicitly populated value mapping */
 
if(!c->quantlist){
/* no quantlist? error */
return(-1);
}
 
/* values that define the dequantization */
oggpack_write(opb,c->q_min,32);
oggpack_write(opb,c->q_delta,32);
oggpack_write(opb,c->q_quant-1,4);
oggpack_write(opb,c->q_sequencep,1);
 
{
int quantvals;
switch(c->maptype){
case 1:
/* a single column of (c->entries/c->dim) quantized values for
building a full value list algorithmically (square lattice) */
quantvals=_book_maptype1_quantvals(c);
break;
case 2:
/* every value (c->entries*c->dim total) specified explicitly */
quantvals=c->entries*c->dim;
break;
default: /* NOT_REACHABLE */
quantvals=-1;
}
 
/* quantized values */
for(i=0;i<quantvals;i++)
oggpack_write(opb,labs(c->quantlist[i]),c->q_quant);
 
}
break;
default:
/* error case; we don't have any other map types now */
return(-1);
}
 
return(0);
}
 
/* unpacks a codebook from the packet buffer into the codebook struct,
readies the codebook auxiliary structures for decode *************/
static_codebook *vorbis_staticbook_unpack(oggpack_buffer *opb){
long i,j;
static_codebook *s=_ogg_calloc(1,sizeof(*s));
s->allocedp=1;
 
/* make sure alignment is correct */
if(oggpack_read(opb,24)!=0x564342)goto _eofout;
 
/* first the basic parameters */
s->dim=oggpack_read(opb,16);
s->entries=oggpack_read(opb,24);
if(s->entries==-1)goto _eofout;
 
if(ov_ilog(s->dim)+ov_ilog(s->entries)>24)goto _eofout;
 
/* codeword ordering.... length ordered or unordered? */
switch((int)oggpack_read(opb,1)){
case 0:{
long unused;
/* allocated but unused entries? */
unused=oggpack_read(opb,1);
if((s->entries*(unused?1:5)+7)>>3>opb->storage-oggpack_bytes(opb))
goto _eofout;
/* unordered */
s->lengthlist=_ogg_malloc(sizeof(*s->lengthlist)*s->entries);
 
/* allocated but unused entries? */
if(unused){
/* yes, unused entries */
 
for(i=0;i<s->entries;i++){
if(oggpack_read(opb,1)){
long num=oggpack_read(opb,5);
if(num==-1)goto _eofout;
s->lengthlist[i]=num+1;
}else
s->lengthlist[i]=0;
}
}else{
/* all entries used; no tagging */
for(i=0;i<s->entries;i++){
long num=oggpack_read(opb,5);
if(num==-1)goto _eofout;
s->lengthlist[i]=num+1;
}
}
 
break;
}
case 1:
/* ordered */
{
long length=oggpack_read(opb,5)+1;
if(length==0)goto _eofout;
s->lengthlist=_ogg_malloc(sizeof(*s->lengthlist)*s->entries);
 
for(i=0;i<s->entries;){
long num=oggpack_read(opb,ov_ilog(s->entries-i));
if(num==-1)goto _eofout;
if(length>32 || num>s->entries-i ||
(num>0 && (num-1)>>(length-1)>1)){
goto _errout;
}
if(length>32)goto _errout;
for(j=0;j<num;j++,i++)
s->lengthlist[i]=length;
length++;
}
}
break;
default:
/* EOF */
goto _eofout;
}
 
/* Do we have a mapping to unpack? */
switch((s->maptype=oggpack_read(opb,4))){
case 0:
/* no mapping */
break;
case 1: case 2:
/* implicitly populated value mapping */
/* explicitly populated value mapping */
 
s->q_min=oggpack_read(opb,32);
s->q_delta=oggpack_read(opb,32);
s->q_quant=oggpack_read(opb,4)+1;
s->q_sequencep=oggpack_read(opb,1);
if(s->q_sequencep==-1)goto _eofout;
 
{
int quantvals=0;
switch(s->maptype){
case 1:
quantvals=(s->dim==0?0:_book_maptype1_quantvals(s));
break;
case 2:
quantvals=s->entries*s->dim;
break;
}
 
/* quantized values */
if(((quantvals*s->q_quant+7)>>3)>opb->storage-oggpack_bytes(opb))
goto _eofout;
s->quantlist=_ogg_malloc(sizeof(*s->quantlist)*quantvals);
for(i=0;i<quantvals;i++)
s->quantlist[i]=oggpack_read(opb,s->q_quant);
 
if(quantvals&&s->quantlist[quantvals-1]==-1)goto _eofout;
}
break;
default:
goto _errout;
}
 
/* all set */
return(s);
 
_errout:
_eofout:
vorbis_staticbook_destroy(s);
return(NULL);
}
 
/* returns the number of bits ************************************************/
int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b){
if(a<0 || a>=book->c->entries)return(0);
oggpack_write(b,book->codelist[a],book->c->lengthlist[a]);
return(book->c->lengthlist[a]);
}
 
/* the 'eliminate the decode tree' optimization actually requires the
codewords to be MSb first, not LSb. This is an annoying inelegancy
(and one of the first places where carefully thought out design
turned out to be wrong; Vorbis II and future Ogg codecs should go
to an MSb bitpacker), but not actually the huge hit it appears to
be. The first-stage decode table catches most words so that
bitreverse is not in the main execution path. */
 
static ogg_uint32_t bitreverse(ogg_uint32_t x){
x= ((x>>16)&0x0000ffff) | ((x<<16)&0xffff0000);
x= ((x>> 8)&0x00ff00ff) | ((x<< 8)&0xff00ff00);
x= ((x>> 4)&0x0f0f0f0f) | ((x<< 4)&0xf0f0f0f0);
x= ((x>> 2)&0x33333333) | ((x<< 2)&0xcccccccc);
return((x>> 1)&0x55555555) | ((x<< 1)&0xaaaaaaaa);
}
 
STIN long decode_packed_entry_number(codebook *book, oggpack_buffer *b){
int read=book->dec_maxlength;
long lo,hi;
long lok = oggpack_look(b,book->dec_firsttablen);
 
if (lok >= 0) {
long entry = book->dec_firsttable[lok];
if(entry&0x80000000UL){
lo=(entry>>15)&0x7fff;
hi=book->used_entries-(entry&0x7fff);
}else{
oggpack_adv(b, book->dec_codelengths[entry-1]);
return(entry-1);
}
}else{
lo=0;
hi=book->used_entries;
}
 
/* Single entry codebooks use a firsttablen of 1 and a
dec_maxlength of 1. If a single-entry codebook gets here (due to
failure to read one bit above), the next look attempt will also
fail and we'll correctly kick out instead of trying to walk the
underformed tree */
 
lok = oggpack_look(b, read);
 
while(lok<0 && read>1)
lok = oggpack_look(b, --read);
if(lok<0)return -1;
 
/* bisect search for the codeword in the ordered list */
{
ogg_uint32_t testword=bitreverse((ogg_uint32_t)lok);
 
while(hi-lo>1){
long p=(hi-lo)>>1;
long test=book->codelist[lo+p]>testword;
lo+=p&(test-1);
hi-=p&(-test);
}
 
if(book->dec_codelengths[lo]<=read){
oggpack_adv(b, book->dec_codelengths[lo]);
return(lo);
}
}
 
oggpack_adv(b, read);
 
return(-1);
}
 
/* Decode side is specced and easier, because we don't need to find
matches using different criteria; we simply read and map. There are
two things we need to do 'depending':
 
We may need to support interleave. We don't really, but it's
convenient to do it here rather than rebuild the vector later.
 
Cascades may be additive or multiplicitive; this is not inherent in
the codebook, but set in the code using the codebook. Like
interleaving, it's easiest to do it here.
addmul==0 -> declarative (set the value)
addmul==1 -> additive
addmul==2 -> multiplicitive */
 
/* returns the [original, not compacted] entry number or -1 on eof *********/
long vorbis_book_decode(codebook *book, oggpack_buffer *b){
if(book->used_entries>0){
long packed_entry=decode_packed_entry_number(book,b);
if(packed_entry>=0)
return(book->dec_index[packed_entry]);
}
 
/* if there's no dec_index, the codebook unpacking isn't collapsed */
return(-1);
}
 
/* returns 0 on OK or -1 on eof *************************************/
/* decode vector / dim granularity gaurding is done in the upper layer */
long vorbis_book_decodevs_add(codebook *book,float *a,oggpack_buffer *b,int n){
if(book->used_entries>0){
int step=n/book->dim;
long *entry = alloca(sizeof(*entry)*step);
float **t = alloca(sizeof(*t)*step);
int i,j,o;
 
for (i = 0; i < step; i++) {
entry[i]=decode_packed_entry_number(book,b);
if(entry[i]==-1)return(-1);
t[i] = book->valuelist+entry[i]*book->dim;
}
for(i=0,o=0;i<book->dim;i++,o+=step)
for (j=0;o+j<n && j<step;j++)
a[o+j]+=t[j][i];
}
return(0);
}
 
/* decode vector / dim granularity gaurding is done in the upper layer */
long vorbis_book_decodev_add(codebook *book,float *a,oggpack_buffer *b,int n){
if(book->used_entries>0){
int i,j,entry;
float *t;
 
for(i=0;i<n;){
entry = decode_packed_entry_number(book,b);
if(entry==-1)return(-1);
t = book->valuelist+entry*book->dim;
for(j=0;i<n && j<book->dim;)
a[i++]+=t[j++];
}
}
return(0);
}
 
/* unlike the others, we guard against n not being an integer number
of <dim> internally rather than in the upper layer (called only by
floor0) */
long vorbis_book_decodev_set(codebook *book,float *a,oggpack_buffer *b,int n){
if(book->used_entries>0){
int i,j,entry;
float *t;
 
for(i=0;i<n;){
entry = decode_packed_entry_number(book,b);
if(entry==-1)return(-1);
t = book->valuelist+entry*book->dim;
for (j=0;i<n && j<book->dim;){
a[i++]=t[j++];
}
}
}else{
int i;
 
for(i=0;i<n;){
a[i++]=0.f;
}
}
return(0);
}
 
long vorbis_book_decodevv_add(codebook *book,float **a,long offset,int ch,
oggpack_buffer *b,int n){
 
long i,j,entry;
int chptr=0;
if(book->used_entries>0){
int m=(offset+n)/ch;
for(i=offset/ch;i<m;){
entry = decode_packed_entry_number(book,b);
if(entry==-1)return(-1);
{
const float *t = book->valuelist+entry*book->dim;
for (j=0;i<m && j<book->dim;j++){
a[chptr++][i]+=t[j];
if(chptr==ch){
chptr=0;
i++;
}
}
}
}
}
return(0);
}
/contrib/sdk/sources/libvorbis-1.3.7/lib/codebook.h
0,0 → 1,117
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: basic shared codebook operations
 
********************************************************************/
 
#ifndef _V_CODEBOOK_H_
#define _V_CODEBOOK_H_
 
#include <ogg/ogg.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 */
char *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
*/
int allocedp;
} static_codebook;
 
typedef struct codebook{
long dim; /* codebook dimensions (elements per vector) */
long entries; /* codebook entries */
long used_entries; /* populated codebook entries */
const static_codebook *c;
 
/* for encode, the below are entry-ordered, fully populated */
/* for decode, the below are ordered by bitreversed codeword and only
used entries are populated */
float *valuelist; /* list of dim*entries actual entry values */
ogg_uint32_t *codelist; /* list of bitstream codewords for each entry */
 
int *dec_index; /* only used if sparseness collapsed */
char *dec_codelengths;
ogg_uint32_t *dec_firsttable;
int dec_firsttablen;
int dec_maxlength;
 
/* The current encoder uses only centered, integer-only lattice books. */
int quantvals;
int minval;
int delta;
} codebook;
 
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,int n,int *map);
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 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 static_codebook *vorbis_staticbook_unpack(oggpack_buffer *b);
 
extern int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b);
 
extern long vorbis_book_decode(codebook *book, oggpack_buffer *b);
extern long vorbis_book_decodevs_add(codebook *book, float *a,
oggpack_buffer *b,int n);
extern long vorbis_book_decodev_set(codebook *book, float *a,
oggpack_buffer *b,int n);
extern long vorbis_book_decodev_add(codebook *book, float *a,
oggpack_buffer *b,int n);
extern long vorbis_book_decodevv_add(codebook *book, float **a,
long off,int ch,
oggpack_buffer *b,int n);
 
 
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/codec_internal.h
0,0 → 1,166
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: libvorbis codec headers
 
********************************************************************/
 
#ifndef _V_CODECI_H_
#define _V_CODECI_H_
 
#include "envelope.h"
#include "codebook.h"
 
#define BLOCKTYPE_IMPULSE 0
#define BLOCKTYPE_PADDING 1
#define BLOCKTYPE_TRANSITION 0
#define BLOCKTYPE_LONG 1
 
#define PACKETBLOBS 15
 
typedef struct vorbis_block_internal{
float **pcmdelay; /* this is a pointer into local storage */
float ampmax;
int blocktype;
 
oggpack_buffer *packetblob[PACKETBLOBS]; /* initialized, must be freed;
blob [PACKETBLOBS/2] points to
the oggpack_buffer in the
main vorbis_block */
} vorbis_block_internal;
 
typedef void vorbis_look_floor;
typedef void vorbis_look_residue;
typedef void vorbis_look_transform;
 
/* mode ************************************************************/
typedef struct {
int blockflag;
int windowtype;
int transformtype;
int mapping;
} vorbis_info_mode;
 
typedef void vorbis_info_floor;
typedef void vorbis_info_residue;
typedef void vorbis_info_mapping;
 
#include "psy.h"
#include "bitrate.h"
 
typedef struct private_state {
/* local lookup storage */
envelope_lookup *ve; /* envelope lookup */
int window[2];
vorbis_look_transform **transform[2]; /* block, type */
drft_lookup fft_look[2];
 
int modebits;
vorbis_look_floor **flr;
vorbis_look_residue **residue;
vorbis_look_psy *psy;
vorbis_look_psy_global *psy_g_look;
 
/* 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;
 
bitrate_manager_state bms;
 
ogg_int64_t sample_count;
} private_state;
 
/* codec_setup_info contains all the setup information specific to the
specific compression/decompression mode in progress (eg,
psychoacoustic settings, channel setup, options, codebook
etc).
*********************************************************************/
 
#include "highlevel.h"
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 M/A),
different residue backends, etc. Each mode consists of a
blocksize flag and a mapping (along with the mapping setup */
 
int modes;
int maps;
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 floor_type[64];
vorbis_info_floor *floor_param[64];
int residue_type[64];
vorbis_info_residue *residue_param[64];
static_codebook *book_param[256];
codebook *fullbooks;
 
vorbis_info_psy *psy_param[4]; /* encode only */
vorbis_info_psy_global psy_g_param;
 
bitrate_manager_info bi;
highlevel_encode_setup hi; /* used only by vorbisenc.c. It's a
highly redundant structure, but
improves clarity of program flow. */
int halfrate_flag; /* painless downsample for decode */
} codec_setup_info;
 
extern vorbis_look_psy_global *_vp_global_look(vorbis_info *vi);
extern void _vp_global_free(vorbis_look_psy_global *look);
 
 
 
typedef struct {
int sorted_index[VIF_POSIT+2];
int forward_index[VIF_POSIT+2];
int reverse_index[VIF_POSIT+2];
 
int hineighbor[VIF_POSIT];
int loneighbor[VIF_POSIT];
int posts;
 
int n;
int quant_q;
vorbis_info_floor1 *vi;
 
long phrasebits;
long postbits;
long frames;
} vorbis_look_floor1;
 
 
 
extern int *floor1_fit(vorbis_block *vb,vorbis_look_floor1 *look,
const float *logmdct, /* in */
const float *logmask);
extern int *floor1_interpolate_fit(vorbis_block *vb,vorbis_look_floor1 *look,
int *A,int *B,
int del);
extern int floor1_encode(oggpack_buffer *opb,vorbis_block *vb,
vorbis_look_floor1 *look,
int *post,int *ilogmask);
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/envelope.c
0,0 → 1,374
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: PCM data envelope analysis
 
********************************************************************/
 
#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 "mdct.h"
#include "misc.h"
 
void _ve_envelope_init(envelope_lookup *e,vorbis_info *vi){
codec_setup_info *ci=vi->codec_setup;
vorbis_info_psy_global *gi=&ci->psy_g_param;
int ch=vi->channels;
int i,j;
int n=e->winlength=128;
e->searchstep=64; /* not random */
 
e->minenergy=gi->preecho_minenergy;
e->ch=ch;
e->storage=128;
e->cursor=ci->blocksizes[1]/2;
e->mdct_win=_ogg_calloc(n,sizeof(*e->mdct_win));
mdct_init(&e->mdct,n);
 
for(i=0;i<n;i++){
e->mdct_win[i]=sin(i/(n-1.)*M_PI);
e->mdct_win[i]*=e->mdct_win[i];
}
 
/* magic follows */
e->band[0].begin=2; e->band[0].end=4;
e->band[1].begin=4; e->band[1].end=5;
e->band[2].begin=6; e->band[2].end=6;
e->band[3].begin=9; e->band[3].end=8;
e->band[4].begin=13; e->band[4].end=8;
e->band[5].begin=17; e->band[5].end=8;
e->band[6].begin=22; e->band[6].end=8;
 
for(j=0;j<VE_BANDS;j++){
n=e->band[j].end;
e->band[j].window=_ogg_malloc(n*sizeof(*e->band[0].window));
for(i=0;i<n;i++){
e->band[j].window[i]=sin((i+.5)/n*M_PI);
e->band[j].total+=e->band[j].window[i];
}
e->band[j].total=1./e->band[j].total;
}
 
e->filter=_ogg_calloc(VE_BANDS*ch,sizeof(*e->filter));
e->mark=_ogg_calloc(e->storage,sizeof(*e->mark));
 
}
 
void _ve_envelope_clear(envelope_lookup *e){
int i;
mdct_clear(&e->mdct);
for(i=0;i<VE_BANDS;i++)
_ogg_free(e->band[i].window);
_ogg_free(e->mdct_win);
_ogg_free(e->filter);
_ogg_free(e->mark);
memset(e,0,sizeof(*e));
}
 
/* fairly straight threshhold-by-band based until we find something
that works better and isn't patented. */
 
static int _ve_amp(envelope_lookup *ve,
vorbis_info_psy_global *gi,
float *data,
envelope_band *bands,
envelope_filter_state *filters){
long n=ve->winlength;
int ret=0;
long i,j;
float decay;
 
/* 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 minV=ve->minenergy;
float *vec=alloca(n*sizeof(*vec));
 
/* stretch is used to gradually lengthen the number of windows
considered prevoius-to-potential-trigger */
int stretch=max(VE_MINSTRETCH,ve->stretch/2);
float penalty=gi->stretch_penalty-(ve->stretch/2-VE_MINSTRETCH);
if(penalty<0.f)penalty=0.f;
if(penalty>gi->stretch_penalty)penalty=gi->stretch_penalty;
 
/*_analysis_output_always("lpcm",seq2,data,n,0,0,
totalshift+pos*ve->searchstep);*/
 
/* window and transform */
for(i=0;i<n;i++)
vec[i]=data[i]*ve->mdct_win[i];
mdct_forward(&ve->mdct,vec,vec);
 
/*_analysis_output_always("mdct",seq2,vec,n/2,0,1,0); */
 
/* near-DC spreading function; this has nothing to do with
psychoacoustics, just sidelobe leakage and window size */
{
float temp=vec[0]*vec[0]+.7*vec[1]*vec[1]+.2*vec[2]*vec[2];
int ptr=filters->nearptr;
 
/* the accumulation is regularly refreshed from scratch to avoid
floating point creep */
if(ptr==0){
decay=filters->nearDC_acc=filters->nearDC_partialacc+temp;
filters->nearDC_partialacc=temp;
}else{
decay=filters->nearDC_acc+=temp;
filters->nearDC_partialacc+=temp;
}
filters->nearDC_acc-=filters->nearDC[ptr];
filters->nearDC[ptr]=temp;
 
decay*=(1./(VE_NEARDC+1));
filters->nearptr++;
if(filters->nearptr>=VE_NEARDC)filters->nearptr=0;
decay=todB(&decay)*.5-15.f;
}
 
/* perform spreading and limiting, also smooth the spectrum. yes,
the MDCT results in all real coefficients, but it still *behaves*
like real/imaginary pairs */
for(i=0;i<n/2;i+=2){
float val=vec[i]*vec[i]+vec[i+1]*vec[i+1];
val=todB(&val)*.5f;
if(val<decay)val=decay;
if(val<minV)val=minV;
vec[i>>1]=val;
decay-=8.;
}
 
/*_analysis_output_always("spread",seq2++,vec,n/4,0,0,0);*/
 
/* perform preecho/postecho triggering by band */
for(j=0;j<VE_BANDS;j++){
float acc=0.;
float valmax,valmin;
 
/* accumulate amplitude */
for(i=0;i<bands[j].end;i++)
acc+=vec[i+bands[j].begin]*bands[j].window[i];
 
acc*=bands[j].total;
 
/* convert amplitude to delta */
{
int p,this=filters[j].ampptr;
float postmax,postmin,premax=-99999.f,premin=99999.f;
 
p=this;
p--;
if(p<0)p+=VE_AMP;
postmax=max(acc,filters[j].ampbuf[p]);
postmin=min(acc,filters[j].ampbuf[p]);
 
for(i=0;i<stretch;i++){
p--;
if(p<0)p+=VE_AMP;
premax=max(premax,filters[j].ampbuf[p]);
premin=min(premin,filters[j].ampbuf[p]);
}
 
valmin=postmin-premin;
valmax=postmax-premax;
 
/*filters[j].markers[pos]=valmax;*/
filters[j].ampbuf[this]=acc;
filters[j].ampptr++;
if(filters[j].ampptr>=VE_AMP)filters[j].ampptr=0;
}
 
/* look at min/max, decide trigger */
if(valmax>gi->preecho_thresh[j]+penalty){
ret|=1;
ret|=4;
}
if(valmin<gi->postecho_thresh[j]-penalty)ret|=2;
}
 
return(ret);
}
 
#if 0
static int seq=0;
static ogg_int64_t totalshift=-1024;
#endif
 
long _ve_envelope_search(vorbis_dsp_state *v){
vorbis_info *vi=v->vi;
codec_setup_info *ci=vi->codec_setup;
vorbis_info_psy_global *gi=&ci->psy_g_param;
envelope_lookup *ve=((private_state *)(v->backend_state))->ve;
long i,j;
 
int first=ve->current/ve->searchstep;
int last=v->pcm_current/ve->searchstep-VE_WIN;
if(first<0)first=0;
 
/* make sure we have enough storage to match the PCM */
if(last+VE_WIN+VE_POST>ve->storage){
ve->storage=last+VE_WIN+VE_POST; /* be sure */
ve->mark=_ogg_realloc(ve->mark,ve->storage*sizeof(*ve->mark));
}
 
for(j=first;j<last;j++){
int ret=0;
 
ve->stretch++;
if(ve->stretch>VE_MAXSTRETCH*2)
ve->stretch=VE_MAXSTRETCH*2;
 
for(i=0;i<ve->ch;i++){
float *pcm=v->pcm[i]+ve->searchstep*(j);
ret|=_ve_amp(ve,gi,pcm,ve->band,ve->filter+i*VE_BANDS);
}
 
ve->mark[j+VE_POST]=0;
if(ret&1){
ve->mark[j]=1;
ve->mark[j+1]=1;
}
 
if(ret&2){
ve->mark[j]=1;
if(j>0)ve->mark[j-1]=1;
}
 
if(ret&4)ve->stretch=-1;
}
 
ve->current=last*ve->searchstep;
 
{
long centerW=v->centerW;
long testW=
centerW+
ci->blocksizes[v->W]/4+
ci->blocksizes[1]/2+
ci->blocksizes[0]/4;
 
j=ve->cursor;
 
while(j<ve->current-(ve->searchstep)){/* account for postecho
working back one window */
if(j>=testW)return(1);
 
ve->cursor=j;
 
if(ve->mark[j/ve->searchstep]){
if(j>centerW){
 
#if 0
if(j>ve->curmark){
float *marker=alloca(v->pcm_current*sizeof(*marker));
int l,m;
memset(marker,0,sizeof(*marker)*v->pcm_current);
fprintf(stderr,"mark! seq=%d, cursor:%fs time:%fs\n",
seq,
(totalshift+ve->cursor)/44100.,
(totalshift+j)/44100.);
_analysis_output_always("pcmL",seq,v->pcm[0],v->pcm_current,0,0,totalshift);
_analysis_output_always("pcmR",seq,v->pcm[1],v->pcm_current,0,0,totalshift);
 
_analysis_output_always("markL",seq,v->pcm[0],j,0,0,totalshift);
_analysis_output_always("markR",seq,v->pcm[1],j,0,0,totalshift);
 
for(m=0;m<VE_BANDS;m++){
char buf[80];
sprintf(buf,"delL%d",m);
for(l=0;l<last;l++)marker[l*ve->searchstep]=ve->filter[m].markers[l]*.1;
_analysis_output_always(buf,seq,marker,v->pcm_current,0,0,totalshift);
}
 
for(m=0;m<VE_BANDS;m++){
char buf[80];
sprintf(buf,"delR%d",m);
for(l=0;l<last;l++)marker[l*ve->searchstep]=ve->filter[m+VE_BANDS].markers[l]*.1;
_analysis_output_always(buf,seq,marker,v->pcm_current,0,0,totalshift);
}
 
for(l=0;l<last;l++)marker[l*ve->searchstep]=ve->mark[l]*.4;
_analysis_output_always("mark",seq,marker,v->pcm_current,0,0,totalshift);
 
 
seq++;
 
}
#endif
 
ve->curmark=j;
if(j>=testW)return(1);
return(0);
}
}
j+=ve->searchstep;
}
}
 
return(-1);
}
 
int _ve_envelope_mark(vorbis_dsp_state *v){
envelope_lookup *ve=((private_state *)(v->backend_state))->ve;
vorbis_info *vi=v->vi;
codec_setup_info *ci=vi->codec_setup;
long centerW=v->centerW;
long beginW=centerW-ci->blocksizes[v->W]/4;
long endW=centerW+ci->blocksizes[v->W]/4;
if(v->W){
beginW-=ci->blocksizes[v->lW]/4;
endW+=ci->blocksizes[v->nW]/4;
}else{
beginW-=ci->blocksizes[0]/4;
endW+=ci->blocksizes[0]/4;
}
 
if(ve->curmark>=beginW && ve->curmark<endW)return(1);
{
long first=beginW/ve->searchstep;
long last=endW/ve->searchstep;
long i;
for(i=first;i<last;i++)
if(ve->mark[i])return(1);
}
return(0);
}
 
void _ve_envelope_shift(envelope_lookup *e,long shift){
int smallsize=e->current/e->searchstep+VE_POST; /* adjust for placing marks
ahead of ve->current */
int smallshift=shift/e->searchstep;
 
memmove(e->mark,e->mark+smallshift,(smallsize-smallshift)*sizeof(*e->mark));
 
#if 0
for(i=0;i<VE_BANDS*e->ch;i++)
memmove(e->filter[i].markers,
e->filter[i].markers+smallshift,
(1024-smallshift)*sizeof(*(*e->filter).markers));
totalshift+=shift;
#endif
 
e->current-=shift;
if(e->curmark>=0)
e->curmark-=shift;
e->cursor-=shift;
}
/contrib/sdk/sources/libvorbis-1.3.7/lib/envelope.h
0,0 → 1,79
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: PCM data envelope analysis and manipulation
 
********************************************************************/
 
#ifndef _V_ENVELOPE_
#define _V_ENVELOPE_
 
#include "mdct.h"
 
#define VE_PRE 16
#define VE_WIN 4
#define VE_POST 2
#define VE_AMP (VE_PRE+VE_POST-1)
 
#define VE_BANDS 7
#define VE_NEARDC 15
 
#define VE_MINSTRETCH 2 /* a bit less than short block */
#define VE_MAXSTRETCH 12 /* one-third full block */
 
typedef struct {
float ampbuf[VE_AMP];
int ampptr;
 
float nearDC[VE_NEARDC];
float nearDC_acc;
float nearDC_partialacc;
int nearptr;
 
} envelope_filter_state;
 
typedef struct {
int begin;
int end;
float *window;
float total;
} envelope_band;
 
typedef struct {
int ch;
int winlength;
int searchstep;
float minenergy;
 
mdct_lookup mdct;
float *mdct_win;
 
envelope_band band[VE_BANDS];
envelope_filter_state *filter;
int stretch;
 
int *mark;
 
long storage;
long current;
long curmark;
long cursor;
} envelope_lookup;
 
extern void _ve_envelope_init(envelope_lookup *e,vorbis_info *vi);
extern void _ve_envelope_clear(envelope_lookup *e);
extern long _ve_envelope_search(vorbis_dsp_state *v);
extern void _ve_envelope_shift(envelope_lookup *e,long shift);
extern int _ve_envelope_mark(vorbis_dsp_state *v);
 
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/floor0.c
0,0 → 1,223
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: floor backend 0 implementation
 
********************************************************************/
 
#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 {
int ln;
int m;
int **linearmap;
int n[2];
 
vorbis_info_floor0 *vi;
 
long bits;
long frames;
} vorbis_look_floor0;
 
 
/***********************************************/
 
static void floor0_free_info(vorbis_info_floor *i){
vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
if(info){
memset(info,0,sizeof(*info));
_ogg_free(info);
}
}
 
static void floor0_free_look(vorbis_look_floor *i){
vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
if(look){
 
if(look->linearmap){
 
if(look->linearmap[0])_ogg_free(look->linearmap[0]);
if(look->linearmap[1])_ogg_free(look->linearmap[1]);
 
_ogg_free(look->linearmap);
}
memset(look,0,sizeof(*look));
_ogg_free(look);
}
}
 
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=_ogg_malloc(sizeof(*info));
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;
if(ci->book_param[info->books[j]]->maptype==0)goto err_out;
if(ci->book_param[info->books[j]]->dim<1)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 void floor0_map_lazy_init(vorbis_block *vb,
vorbis_info_floor *infoX,
vorbis_look_floor0 *look){
if(!look->linearmap[vb->W]){
vorbis_dsp_state *vd=vb->vd;
vorbis_info *vi=vd->vi;
codec_setup_info *ci=vi->codec_setup;
vorbis_info_floor0 *info=(vorbis_info_floor0 *)infoX;
int W=vb->W;
int n=ci->blocksizes[W]/2,j;
 
/* we choose a scaling constant so that:
floor(bark(rate/2-1)*C)=mapped-1
floor(bark(rate/2)*C)=mapped */
float scale=look->ln/toBARK(info->rate/2.f);
 
/* 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[W]=_ogg_malloc((n+1)*sizeof(**look->linearmap));
for(j=0;j<n;j++){
int val=floor( toBARK((info->rate/2.f)/n*j)
*scale); /* bark numbers represent band edges */
if(val>=look->ln)val=look->ln-1; /* guard against the approximation */
look->linearmap[W][j]=val;
}
look->linearmap[W][j]=-1;
look->n[W]=n;
}
}
 
static vorbis_look_floor *floor0_look(vorbis_dsp_state *vd,
vorbis_info_floor *i){
vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
vorbis_look_floor0 *look=_ogg_calloc(1,sizeof(*look));
 
(void)vd;
 
look->m=info->order;
look->ln=info->barkmap;
look->vi=info;
 
look->linearmap=_ogg_calloc(2,sizeof(*look->linearmap));
 
return look;
}
 
static void *floor0_inverse1(vorbis_block *vb,vorbis_look_floor *i){
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,ov_ilog(info->numbooks));
 
if(booknum!=-1 && booknum<info->numbooks){ /* be paranoid */
codec_setup_info *ci=vb->vd->vi->codec_setup;
codebook *b=ci->fullbooks+info->books[booknum];
float last=0.f;
 
/* the additional b->dim is a guard against any possible stack
smash; b->dim is provably more than we can overflow the
vector */
float *lsp=_vorbis_block_alloc(vb,sizeof(*lsp)*(look->m+b->dim+1));
 
if(vorbis_book_decodev_set(b,lsp,&vb->opb,look->m)==-1)goto eop;
for(j=0;j<look->m;){
for(k=0;j<look->m && k<b->dim;k++,j++)lsp[j]+=last;
last=lsp[j-1];
}
 
lsp[look->m]=amp;
return(lsp);
}
}
eop:
return(NULL);
}
 
static int floor0_inverse2(vorbis_block *vb,vorbis_look_floor *i,
void *memo,float *out){
vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
vorbis_info_floor0 *info=look->vi;
 
floor0_map_lazy_init(vb,info,look);
 
if(memo){
float *lsp=(float *)memo;
float amp=lsp[look->m];
 
/* take the coefficients back to a spectral envelope curve */
vorbis_lsp_to_curve(out,
look->linearmap[vb->W],
look->n[vb->W],
look->ln,
lsp,look->m,amp,(float)info->ampdB);
return(1);
}
memset(out,0,sizeof(*out)*look->n[vb->W]);
return(0);
}
 
/* export hooks */
const vorbis_func_floor floor0_exportbundle={
NULL,&floor0_unpack,&floor0_look,&floor0_free_info,
&floor0_free_look,&floor0_inverse1,&floor0_inverse2
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/floor1.c
0,0 → 1,1086
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: floor backend 1 implementation
 
********************************************************************/
 
#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 "codebook.h"
#include "misc.h"
#include "scales.h"
 
#include <stdio.h>
 
#define floor1_rangedB 140 /* floor 1 fixed at -140dB to 0dB range */
 
typedef struct lsfit_acc{
int x0;
int x1;
 
int xa;
int ya;
int x2a;
int y2a;
int xya;
int an;
 
int xb;
int yb;
int x2b;
int y2b;
int xyb;
int bn;
} lsfit_acc;
 
/***********************************************/
 
static void floor1_free_info(vorbis_info_floor *i){
vorbis_info_floor1 *info=(vorbis_info_floor1 *)i;
if(info){
memset(info,0,sizeof(*info));
_ogg_free(info);
}
}
 
static void floor1_free_look(vorbis_look_floor *i){
vorbis_look_floor1 *look=(vorbis_look_floor1 *)i;
if(look){
/*fprintf(stderr,"floor 1 bit usage %f:%f (%f total)\n",
(float)look->phrasebits/look->frames,
(float)look->postbits/look->frames,
(float)(look->postbits+look->phrasebits)/look->frames);*/
 
memset(look,0,sizeof(*look));
_ogg_free(look);
}
}
 
static void floor1_pack (vorbis_info_floor *i,oggpack_buffer *opb){
vorbis_info_floor1 *info=(vorbis_info_floor1 *)i;
int j,k;
int count=0;
int rangebits;
int maxposit=info->postlist[1];
int maxclass=-1;
 
/* save out partitions */
oggpack_write(opb,info->partitions,5); /* only 0 to 31 legal */
for(j=0;j<info->partitions;j++){
oggpack_write(opb,info->partitionclass[j],4); /* only 0 to 15 legal */
if(maxclass<info->partitionclass[j])maxclass=info->partitionclass[j];
}
 
/* save out partition classes */
for(j=0;j<maxclass+1;j++){
oggpack_write(opb,info->class_dim[j]-1,3); /* 1 to 8 */
oggpack_write(opb,info->class_subs[j],2); /* 0 to 3 */
if(info->class_subs[j])oggpack_write(opb,info->class_book[j],8);
for(k=0;k<(1<<info->class_subs[j]);k++)
oggpack_write(opb,info->class_subbook[j][k]+1,8);
}
 
/* save out the post list */
oggpack_write(opb,info->mult-1,2); /* only 1,2,3,4 legal now */
/* maxposit cannot legally be less than 1; this is encode-side, we
can assume our setup is OK */
oggpack_write(opb,ov_ilog(maxposit-1),4);
rangebits=ov_ilog(maxposit-1);
 
for(j=0,k=0;j<info->partitions;j++){
count+=info->class_dim[info->partitionclass[j]];
for(;k<count;k++)
oggpack_write(opb,info->postlist[k+2],rangebits);
}
}
 
static int icomp(const void *a,const void *b){
return(**(int **)a-**(int **)b);
}
 
static vorbis_info_floor *floor1_unpack (vorbis_info *vi,oggpack_buffer *opb){
codec_setup_info *ci=vi->codec_setup;
int j,k,count=0,maxclass=-1,rangebits;
 
vorbis_info_floor1 *info=_ogg_calloc(1,sizeof(*info));
/* read partitions */
info->partitions=oggpack_read(opb,5); /* only 0 to 31 legal */
for(j=0;j<info->partitions;j++){
info->partitionclass[j]=oggpack_read(opb,4); /* only 0 to 15 legal */
if(info->partitionclass[j]<0)goto err_out;
if(maxclass<info->partitionclass[j])maxclass=info->partitionclass[j];
}
 
/* read partition classes */
for(j=0;j<maxclass+1;j++){
info->class_dim[j]=oggpack_read(opb,3)+1; /* 1 to 8 */
info->class_subs[j]=oggpack_read(opb,2); /* 0,1,2,3 bits */
if(info->class_subs[j]<0)
goto err_out;
if(info->class_subs[j])info->class_book[j]=oggpack_read(opb,8);
if(info->class_book[j]<0 || info->class_book[j]>=ci->books)
goto err_out;
for(k=0;k<(1<<info->class_subs[j]);k++){
info->class_subbook[j][k]=oggpack_read(opb,8)-1;
if(info->class_subbook[j][k]<-1 || info->class_subbook[j][k]>=ci->books)
goto err_out;
}
}
 
/* read the post list */
info->mult=oggpack_read(opb,2)+1; /* only 1,2,3,4 legal now */
rangebits=oggpack_read(opb,4);
if(rangebits<0)goto err_out;
 
for(j=0,k=0;j<info->partitions;j++){
count+=info->class_dim[info->partitionclass[j]];
if(count>VIF_POSIT) goto err_out;
for(;k<count;k++){
int t=info->postlist[k+2]=oggpack_read(opb,rangebits);
if(t<0 || t>=(1<<rangebits))
goto err_out;
}
}
info->postlist[0]=0;
info->postlist[1]=1<<rangebits;
 
/* don't allow repeated values in post list as they'd result in
zero-length segments */
{
int *sortpointer[VIF_POSIT+2];
for(j=0;j<count+2;j++)sortpointer[j]=info->postlist+j;
qsort(sortpointer,count+2,sizeof(*sortpointer),icomp);
 
for(j=1;j<count+2;j++)
if(*sortpointer[j-1]==*sortpointer[j])goto err_out;
}
 
return(info);
 
err_out:
floor1_free_info(info);
return(NULL);
}
 
static vorbis_look_floor *floor1_look(vorbis_dsp_state *vd,
vorbis_info_floor *in){
 
int *sortpointer[VIF_POSIT+2];
vorbis_info_floor1 *info=(vorbis_info_floor1 *)in;
vorbis_look_floor1 *look=_ogg_calloc(1,sizeof(*look));
int i,j,n=0;
 
(void)vd;
 
look->vi=info;
look->n=info->postlist[1];
 
/* we drop each position value in-between already decoded values,
and use linear interpolation to predict each new value past the
edges. The positions are read in the order of the position
list... we precompute the bounding positions in the lookup. Of
course, the neighbors can change (if a position is declined), but
this is an initial mapping */
 
for(i=0;i<info->partitions;i++)n+=info->class_dim[info->partitionclass[i]];
n+=2;
look->posts=n;
 
/* also store a sorted position index */
for(i=0;i<n;i++)sortpointer[i]=info->postlist+i;
qsort(sortpointer,n,sizeof(*sortpointer),icomp);
 
/* points from sort order back to range number */
for(i=0;i<n;i++)look->forward_index[i]=sortpointer[i]-info->postlist;
/* points from range order to sorted position */
for(i=0;i<n;i++)look->reverse_index[look->forward_index[i]]=i;
/* we actually need the post values too */
for(i=0;i<n;i++)look->sorted_index[i]=info->postlist[look->forward_index[i]];
 
/* quantize values to multiplier spec */
switch(info->mult){
case 1: /* 1024 -> 256 */
look->quant_q=256;
break;
case 2: /* 1024 -> 128 */
look->quant_q=128;
break;
case 3: /* 1024 -> 86 */
look->quant_q=86;
break;
case 4: /* 1024 -> 64 */
look->quant_q=64;
break;
}
 
/* discover our neighbors for decode where we don't use fit flags
(that would push the neighbors outward) */
for(i=0;i<n-2;i++){
int lo=0;
int hi=1;
int lx=0;
int hx=look->n;
int currentx=info->postlist[i+2];
for(j=0;j<i+2;j++){
int x=info->postlist[j];
if(x>lx && x<currentx){
lo=j;
lx=x;
}
if(x<hx && x>currentx){
hi=j;
hx=x;
}
}
look->loneighbor[i]=lo;
look->hineighbor[i]=hi;
}
 
return(look);
}
 
static int render_point(int x0,int x1,int y0,int y1,int x){
y0&=0x7fff; /* mask off flag */
y1&=0x7fff;
 
{
int dy=y1-y0;
int adx=x1-x0;
int ady=abs(dy);
int err=ady*(x-x0);
 
int off=err/adx;
if(dy<0)return(y0-off);
return(y0+off);
}
}
 
static int vorbis_dBquant(const float *x){
int i= *x*7.3142857f+1023.5f;
if(i>1023)return(1023);
if(i<0)return(0);
return i;
}
 
static const float FLOOR1_fromdB_LOOKUP[256]={
1.0649863e-07F, 1.1341951e-07F, 1.2079015e-07F, 1.2863978e-07F,
1.3699951e-07F, 1.4590251e-07F, 1.5538408e-07F, 1.6548181e-07F,
1.7623575e-07F, 1.8768855e-07F, 1.9988561e-07F, 2.128753e-07F,
2.2670913e-07F, 2.4144197e-07F, 2.5713223e-07F, 2.7384213e-07F,
2.9163793e-07F, 3.1059021e-07F, 3.3077411e-07F, 3.5226968e-07F,
3.7516214e-07F, 3.9954229e-07F, 4.2550680e-07F, 4.5315863e-07F,
4.8260743e-07F, 5.1396998e-07F, 5.4737065e-07F, 5.8294187e-07F,
6.2082472e-07F, 6.6116941e-07F, 7.0413592e-07F, 7.4989464e-07F,
7.9862701e-07F, 8.5052630e-07F, 9.0579828e-07F, 9.6466216e-07F,
1.0273513e-06F, 1.0941144e-06F, 1.1652161e-06F, 1.2409384e-06F,
1.3215816e-06F, 1.4074654e-06F, 1.4989305e-06F, 1.5963394e-06F,
1.7000785e-06F, 1.8105592e-06F, 1.9282195e-06F, 2.0535261e-06F,
2.1869758e-06F, 2.3290978e-06F, 2.4804557e-06F, 2.6416497e-06F,
2.8133190e-06F, 2.9961443e-06F, 3.1908506e-06F, 3.3982101e-06F,
3.6190449e-06F, 3.8542308e-06F, 4.1047004e-06F, 4.3714470e-06F,
4.6555282e-06F, 4.9580707e-06F, 5.2802740e-06F, 5.6234160e-06F,
5.9888572e-06F, 6.3780469e-06F, 6.7925283e-06F, 7.2339451e-06F,
7.7040476e-06F, 8.2047000e-06F, 8.7378876e-06F, 9.3057248e-06F,
9.9104632e-06F, 1.0554501e-05F, 1.1240392e-05F, 1.1970856e-05F,
1.2748789e-05F, 1.3577278e-05F, 1.4459606e-05F, 1.5399272e-05F,
1.6400004e-05F, 1.7465768e-05F, 1.8600792e-05F, 1.9809576e-05F,
2.1096914e-05F, 2.2467911e-05F, 2.3928002e-05F, 2.5482978e-05F,
2.7139006e-05F, 2.8902651e-05F, 3.0780908e-05F, 3.2781225e-05F,
3.4911534e-05F, 3.7180282e-05F, 3.9596466e-05F, 4.2169667e-05F,
4.4910090e-05F, 4.7828601e-05F, 5.0936773e-05F, 5.4246931e-05F,
5.7772202e-05F, 6.1526565e-05F, 6.5524908e-05F, 6.9783085e-05F,
7.4317983e-05F, 7.9147585e-05F, 8.4291040e-05F, 8.9768747e-05F,
9.5602426e-05F, 0.00010181521F, 0.00010843174F, 0.00011547824F,
0.00012298267F, 0.00013097477F, 0.00013948625F, 0.00014855085F,
0.00015820453F, 0.00016848555F, 0.00017943469F, 0.00019109536F,
0.00020351382F, 0.00021673929F, 0.00023082423F, 0.00024582449F,
0.00026179955F, 0.00027881276F, 0.00029693158F, 0.00031622787F,
0.00033677814F, 0.00035866388F, 0.00038197188F, 0.00040679456F,
0.00043323036F, 0.00046138411F, 0.00049136745F, 0.00052329927F,
0.00055730621F, 0.00059352311F, 0.00063209358F, 0.00067317058F,
0.00071691700F, 0.00076350630F, 0.00081312324F, 0.00086596457F,
0.00092223983F, 0.00098217216F, 0.0010459992F, 0.0011139742F,
0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F,
0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F,
0.0019632195F, 0.0020908006F, 0.0022266726F, 0.0023713743F,
0.0025254795F, 0.0026895994F, 0.0028643847F, 0.0030505286F,
0.0032487691F, 0.0034598925F, 0.0036847358F, 0.0039241906F,
0.0041792066F, 0.0044507950F, 0.0047400328F, 0.0050480668F,
0.0053761186F, 0.0057254891F, 0.0060975636F, 0.0064938176F,
0.0069158225F, 0.0073652516F, 0.0078438871F, 0.0083536271F,
0.0088964928F, 0.009474637F, 0.010090352F, 0.010746080F,
0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F,
0.014722068F, 0.015678791F, 0.016697687F, 0.017782797F,
0.018938423F, 0.020169149F, 0.021479854F, 0.022875735F,
0.024362330F, 0.025945531F, 0.027631618F, 0.029427276F,
0.031339626F, 0.033376252F, 0.035545228F, 0.037855157F,
0.040315199F, 0.042935108F, 0.045725273F, 0.048696758F,
0.051861348F, 0.055231591F, 0.058820850F, 0.062643361F,
0.066714279F, 0.071049749F, 0.075666962F, 0.080584227F,
0.085821044F, 0.091398179F, 0.097337747F, 0.10366330F,
0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F,
0.14201813F, 0.15124727F, 0.16107617F, 0.17154380F,
0.18269168F, 0.19456402F, 0.20720788F, 0.22067342F,
0.23501402F, 0.25028656F, 0.26655159F, 0.28387361F,
0.30232132F, 0.32196786F, 0.34289114F, 0.36517414F,
0.38890521F, 0.41417847F, 0.44109412F, 0.46975890F,
0.50028648F, 0.53279791F, 0.56742212F, 0.60429640F,
0.64356699F, 0.68538959F, 0.72993007F, 0.77736504F,
0.82788260F, 0.88168307F, 0.9389798F, 1.F,
};
 
static void render_line(int n, int x0,int x1,int y0,int y1,float *d){
int dy=y1-y0;
int adx=x1-x0;
int ady=abs(dy);
int base=dy/adx;
int sy=(dy<0?base-1:base+1);
int x=x0;
int y=y0;
int err=0;
 
ady-=abs(base*adx);
 
if(n>x1)n=x1;
 
if(x<n)
d[x]*=FLOOR1_fromdB_LOOKUP[y];
 
while(++x<n){
err=err+ady;
if(err>=adx){
err-=adx;
y+=sy;
}else{
y+=base;
}
d[x]*=FLOOR1_fromdB_LOOKUP[y];
}
}
 
static void render_line0(int n, int x0,int x1,int y0,int y1,int *d){
int dy=y1-y0;
int adx=x1-x0;
int ady=abs(dy);
int base=dy/adx;
int sy=(dy<0?base-1:base+1);
int x=x0;
int y=y0;
int err=0;
 
ady-=abs(base*adx);
 
if(n>x1)n=x1;
 
if(x<n)
d[x]=y;
 
while(++x<n){
err=err+ady;
if(err>=adx){
err-=adx;
y+=sy;
}else{
y+=base;
}
d[x]=y;
}
}
 
/* the floor has already been filtered to only include relevant sections */
static int accumulate_fit(const float *flr,const float *mdct,
int x0, int x1,lsfit_acc *a,
int n,vorbis_info_floor1 *info){
long i;
 
int xa=0,ya=0,x2a=0,y2a=0,xya=0,na=0, xb=0,yb=0,x2b=0,y2b=0,xyb=0,nb=0;
 
memset(a,0,sizeof(*a));
a->x0=x0;
a->x1=x1;
if(x1>=n)x1=n-1;
 
for(i=x0;i<=x1;i++){
int quantized=vorbis_dBquant(flr+i);
if(quantized){
if(mdct[i]+info->twofitatten>=flr[i]){
xa += i;
ya += quantized;
x2a += i*i;
y2a += quantized*quantized;
xya += i*quantized;
na++;
}else{
xb += i;
yb += quantized;
x2b += i*i;
y2b += quantized*quantized;
xyb += i*quantized;
nb++;
}
}
}
 
a->xa=xa;
a->ya=ya;
a->x2a=x2a;
a->y2a=y2a;
a->xya=xya;
a->an=na;
 
a->xb=xb;
a->yb=yb;
a->x2b=x2b;
a->y2b=y2b;
a->xyb=xyb;
a->bn=nb;
 
return(na);
}
 
static int fit_line(lsfit_acc *a,int fits,int *y0,int *y1,
vorbis_info_floor1 *info){
double xb=0,yb=0,x2b=0,y2b=0,xyb=0,bn=0;
int i;
int x0=a[0].x0;
int x1=a[fits-1].x1;
 
for(i=0;i<fits;i++){
double weight = (a[i].bn+a[i].an)*info->twofitweight/(a[i].an+1)+1.;
 
xb+=a[i].xb + a[i].xa * weight;
yb+=a[i].yb + a[i].ya * weight;
x2b+=a[i].x2b + a[i].x2a * weight;
y2b+=a[i].y2b + a[i].y2a * weight;
xyb+=a[i].xyb + a[i].xya * weight;
bn+=a[i].bn + a[i].an * weight;
}
 
if(*y0>=0){
xb+= x0;
yb+= *y0;
x2b+= x0 * x0;
y2b+= *y0 * *y0;
xyb+= *y0 * x0;
bn++;
}
 
if(*y1>=0){
xb+= x1;
yb+= *y1;
x2b+= x1 * x1;
y2b+= *y1 * *y1;
xyb+= *y1 * x1;
bn++;
}
 
{
double denom=(bn*x2b-xb*xb);
 
if(denom>0.){
double a=(yb*x2b-xyb*xb)/denom;
double b=(bn*xyb-xb*yb)/denom;
*y0=rint(a+b*x0);
*y1=rint(a+b*x1);
 
/* limit to our range! */
if(*y0>1023)*y0=1023;
if(*y1>1023)*y1=1023;
if(*y0<0)*y0=0;
if(*y1<0)*y1=0;
 
return 0;
}else{
*y0=0;
*y1=0;
return 1;
}
}
}
 
static int inspect_error(int x0,int x1,int y0,int y1,const float *mask,
const float *mdct,
vorbis_info_floor1 *info){
int dy=y1-y0;
int adx=x1-x0;
int ady=abs(dy);
int base=dy/adx;
int sy=(dy<0?base-1:base+1);
int x=x0;
int y=y0;
int err=0;
int val=vorbis_dBquant(mask+x);
int mse=0;
int n=0;
 
ady-=abs(base*adx);
 
mse=(y-val);
mse*=mse;
n++;
if(mdct[x]+info->twofitatten>=mask[x]){
if(y+info->maxover<val)return(1);
if(y-info->maxunder>val)return(1);
}
 
while(++x<x1){
err=err+ady;
if(err>=adx){
err-=adx;
y+=sy;
}else{
y+=base;
}
 
val=vorbis_dBquant(mask+x);
mse+=((y-val)*(y-val));
n++;
if(mdct[x]+info->twofitatten>=mask[x]){
if(val){
if(y+info->maxover<val)return(1);
if(y-info->maxunder>val)return(1);
}
}
}
 
if(info->maxover*info->maxover/n>info->maxerr)return(0);
if(info->maxunder*info->maxunder/n>info->maxerr)return(0);
if(mse/n>info->maxerr)return(1);
return(0);
}
 
static int post_Y(int *A,int *B,int pos){
if(A[pos]<0)
return B[pos];
if(B[pos]<0)
return A[pos];
 
return (A[pos]+B[pos])>>1;
}
 
int *floor1_fit(vorbis_block *vb,vorbis_look_floor1 *look,
const float *logmdct, /* in */
const float *logmask){
long i,j;
vorbis_info_floor1 *info=look->vi;
long n=look->n;
long posts=look->posts;
long nonzero=0;
lsfit_acc fits[VIF_POSIT+1];
int fit_valueA[VIF_POSIT+2]; /* index by range list position */
int fit_valueB[VIF_POSIT+2]; /* index by range list position */
 
int loneighbor[VIF_POSIT+2]; /* sorted index of range list position (+2) */
int hineighbor[VIF_POSIT+2];
int *output=NULL;
int memo[VIF_POSIT+2];
 
for(i=0;i<posts;i++)fit_valueA[i]=-200; /* mark all unused */
for(i=0;i<posts;i++)fit_valueB[i]=-200; /* mark all unused */
for(i=0;i<posts;i++)loneighbor[i]=0; /* 0 for the implicit 0 post */
for(i=0;i<posts;i++)hineighbor[i]=1; /* 1 for the implicit post at n */
for(i=0;i<posts;i++)memo[i]=-1; /* no neighbor yet */
 
/* quantize the relevant floor points and collect them into line fit
structures (one per minimal division) at the same time */
if(posts==0){
nonzero+=accumulate_fit(logmask,logmdct,0,n,fits,n,info);
}else{
for(i=0;i<posts-1;i++)
nonzero+=accumulate_fit(logmask,logmdct,look->sorted_index[i],
look->sorted_index[i+1],fits+i,
n,info);
}
 
if(nonzero){
/* start by fitting the implicit base case.... */
int y0=-200;
int y1=-200;
fit_line(fits,posts-1,&y0,&y1,info);
 
fit_valueA[0]=y0;
fit_valueB[0]=y0;
fit_valueB[1]=y1;
fit_valueA[1]=y1;
 
/* Non degenerate case */
/* start progressive splitting. This is a greedy, non-optimal
algorithm, but simple and close enough to the best
answer. */
for(i=2;i<posts;i++){
int sortpos=look->reverse_index[i];
int ln=loneighbor[sortpos];
int hn=hineighbor[sortpos];
 
/* eliminate repeat searches of a particular range with a memo */
if(memo[ln]!=hn){
/* haven't performed this error search yet */
int lsortpos=look->reverse_index[ln];
int hsortpos=look->reverse_index[hn];
memo[ln]=hn;
 
{
/* A note: we want to bound/minimize *local*, not global, error */
int lx=info->postlist[ln];
int hx=info->postlist[hn];
int ly=post_Y(fit_valueA,fit_valueB,ln);
int hy=post_Y(fit_valueA,fit_valueB,hn);
 
if(ly==-1 || hy==-1){
exit(1);
}
 
if(inspect_error(lx,hx,ly,hy,logmask,logmdct,info)){
/* outside error bounds/begin search area. Split it. */
int ly0=-200;
int ly1=-200;
int hy0=-200;
int hy1=-200;
int ret0=fit_line(fits+lsortpos,sortpos-lsortpos,&ly0,&ly1,info);
int ret1=fit_line(fits+sortpos,hsortpos-sortpos,&hy0,&hy1,info);
 
if(ret0){
ly0=ly;
ly1=hy0;
}
if(ret1){
hy0=ly1;
hy1=hy;
}
 
if(ret0 && ret1){
fit_valueA[i]=-200;
fit_valueB[i]=-200;
}else{
/* store new edge values */
fit_valueB[ln]=ly0;
if(ln==0)fit_valueA[ln]=ly0;
fit_valueA[i]=ly1;
fit_valueB[i]=hy0;
fit_valueA[hn]=hy1;
if(hn==1)fit_valueB[hn]=hy1;
 
if(ly1>=0 || hy0>=0){
/* store new neighbor values */
for(j=sortpos-1;j>=0;j--)
if(hineighbor[j]==hn)
hineighbor[j]=i;
else
break;
for(j=sortpos+1;j<posts;j++)
if(loneighbor[j]==ln)
loneighbor[j]=i;
else
break;
}
}
}else{
fit_valueA[i]=-200;
fit_valueB[i]=-200;
}
}
}
}
 
output=_vorbis_block_alloc(vb,sizeof(*output)*posts);
 
output[0]=post_Y(fit_valueA,fit_valueB,0);
output[1]=post_Y(fit_valueA,fit_valueB,1);
 
/* fill in posts marked as not using a fit; we will zero
back out to 'unused' when encoding them so long as curve
interpolation doesn't force them into use */
for(i=2;i<posts;i++){
int ln=look->loneighbor[i-2];
int hn=look->hineighbor[i-2];
int x0=info->postlist[ln];
int x1=info->postlist[hn];
int y0=output[ln];
int y1=output[hn];
 
int predicted=render_point(x0,x1,y0,y1,info->postlist[i]);
int vx=post_Y(fit_valueA,fit_valueB,i);
 
if(vx>=0 && predicted!=vx){
output[i]=vx;
}else{
output[i]= predicted|0x8000;
}
}
}
 
return(output);
 
}
 
int *floor1_interpolate_fit(vorbis_block *vb,vorbis_look_floor1 *look,
int *A,int *B,
int del){
 
long i;
long posts=look->posts;
int *output=NULL;
 
if(A && B){
output=_vorbis_block_alloc(vb,sizeof(*output)*posts);
 
/* overly simpleminded--- look again post 1.2 */
for(i=0;i<posts;i++){
output[i]=((65536-del)*(A[i]&0x7fff)+del*(B[i]&0x7fff)+32768)>>16;
if(A[i]&0x8000 && B[i]&0x8000)output[i]|=0x8000;
}
}
 
return(output);
}
 
 
int floor1_encode(oggpack_buffer *opb,vorbis_block *vb,
vorbis_look_floor1 *look,
int *post,int *ilogmask){
 
long i,j;
vorbis_info_floor1 *info=look->vi;
long posts=look->posts;
codec_setup_info *ci=vb->vd->vi->codec_setup;
int out[VIF_POSIT+2];
static_codebook **sbooks=ci->book_param;
codebook *books=ci->fullbooks;
 
/* quantize values to multiplier spec */
if(post){
for(i=0;i<posts;i++){
int val=post[i]&0x7fff;
switch(info->mult){
case 1: /* 1024 -> 256 */
val>>=2;
break;
case 2: /* 1024 -> 128 */
val>>=3;
break;
case 3: /* 1024 -> 86 */
val/=12;
break;
case 4: /* 1024 -> 64 */
val>>=4;
break;
}
post[i]=val | (post[i]&0x8000);
}
 
out[0]=post[0];
out[1]=post[1];
 
/* find prediction values for each post and subtract them */
for(i=2;i<posts;i++){
int ln=look->loneighbor[i-2];
int hn=look->hineighbor[i-2];
int x0=info->postlist[ln];
int x1=info->postlist[hn];
int y0=post[ln];
int y1=post[hn];
 
int predicted=render_point(x0,x1,y0,y1,info->postlist[i]);
 
if((post[i]&0x8000) || (predicted==post[i])){
post[i]=predicted|0x8000; /* in case there was roundoff jitter
in interpolation */
out[i]=0;
}else{
int headroom=(look->quant_q-predicted<predicted?
look->quant_q-predicted:predicted);
 
int val=post[i]-predicted;
 
/* at this point the 'deviation' value is in the range +/- max
range, but the real, unique range can always be mapped to
only [0-maxrange). So we want to wrap the deviation into
this limited range, but do it in the way that least screws
an essentially gaussian probability distribution. */
 
if(val<0)
if(val<-headroom)
val=headroom-val-1;
else
val=-1-(val<<1);
else
if(val>=headroom)
val= val+headroom;
else
val<<=1;
 
out[i]=val;
post[ln]&=0x7fff;
post[hn]&=0x7fff;
}
}
 
/* we have everything we need. pack it out */
/* mark nontrivial floor */
oggpack_write(opb,1,1);
 
/* beginning/end post */
look->frames++;
look->postbits+=ov_ilog(look->quant_q-1)*2;
oggpack_write(opb,out[0],ov_ilog(look->quant_q-1));
oggpack_write(opb,out[1],ov_ilog(look->quant_q-1));
 
 
/* partition by partition */
for(i=0,j=2;i<info->partitions;i++){
int class=info->partitionclass[i];
int cdim=info->class_dim[class];
int csubbits=info->class_subs[class];
int csub=1<<csubbits;
int bookas[8]={0,0,0,0,0,0,0,0};
int cval=0;
int cshift=0;
int k,l;
 
/* generate the partition's first stage cascade value */
if(csubbits){
int maxval[8]={0,0,0,0,0,0,0,0}; /* gcc's static analysis
issues a warning without
initialization */
for(k=0;k<csub;k++){
int booknum=info->class_subbook[class][k];
if(booknum<0){
maxval[k]=1;
}else{
maxval[k]=sbooks[info->class_subbook[class][k]]->entries;
}
}
for(k=0;k<cdim;k++){
for(l=0;l<csub;l++){
int val=out[j+k];
if(val<maxval[l]){
bookas[k]=l;
break;
}
}
cval|= bookas[k]<<cshift;
cshift+=csubbits;
}
/* write it */
look->phrasebits+=
vorbis_book_encode(books+info->class_book[class],cval,opb);
 
#ifdef TRAIN_FLOOR1
{
FILE *of;
char buffer[80];
sprintf(buffer,"line_%dx%ld_class%d.vqd",
vb->pcmend/2,posts-2,class);
of=fopen(buffer,"a");
fprintf(of,"%d\n",cval);
fclose(of);
}
#endif
}
 
/* write post values */
for(k=0;k<cdim;k++){
int book=info->class_subbook[class][bookas[k]];
if(book>=0){
/* hack to allow training with 'bad' books */
if(out[j+k]<(books+book)->entries)
look->postbits+=vorbis_book_encode(books+book,
out[j+k],opb);
/*else
fprintf(stderr,"+!");*/
 
#ifdef TRAIN_FLOOR1
{
FILE *of;
char buffer[80];
sprintf(buffer,"line_%dx%ld_%dsub%d.vqd",
vb->pcmend/2,posts-2,class,bookas[k]);
of=fopen(buffer,"a");
fprintf(of,"%d\n",out[j+k]);
fclose(of);
}
#endif
}
}
j+=cdim;
}
 
{
/* generate quantized floor equivalent to what we'd unpack in decode */
/* render the lines */
int hx=0;
int lx=0;
int ly=post[0]*info->mult;
int n=ci->blocksizes[vb->W]/2;
 
for(j=1;j<look->posts;j++){
int current=look->forward_index[j];
int hy=post[current]&0x7fff;
if(hy==post[current]){
 
hy*=info->mult;
hx=info->postlist[current];
 
render_line0(n,lx,hx,ly,hy,ilogmask);
 
lx=hx;
ly=hy;
}
}
for(j=hx;j<vb->pcmend/2;j++)ilogmask[j]=ly; /* be certain */
return(1);
}
}else{
oggpack_write(opb,0,1);
memset(ilogmask,0,vb->pcmend/2*sizeof(*ilogmask));
return(0);
}
}
 
static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in){
vorbis_look_floor1 *look=(vorbis_look_floor1 *)in;
vorbis_info_floor1 *info=look->vi;
codec_setup_info *ci=vb->vd->vi->codec_setup;
 
int i,j,k;
codebook *books=ci->fullbooks;
 
/* unpack wrapped/predicted values from stream */
if(oggpack_read(&vb->opb,1)==1){
int *fit_value=_vorbis_block_alloc(vb,(look->posts)*sizeof(*fit_value));
 
fit_value[0]=oggpack_read(&vb->opb,ov_ilog(look->quant_q-1));
fit_value[1]=oggpack_read(&vb->opb,ov_ilog(look->quant_q-1));
 
/* partition by partition */
for(i=0,j=2;i<info->partitions;i++){
int class=info->partitionclass[i];
int cdim=info->class_dim[class];
int csubbits=info->class_subs[class];
int csub=1<<csubbits;
int cval=0;
 
/* decode the partition's first stage cascade value */
if(csubbits){
cval=vorbis_book_decode(books+info->class_book[class],&vb->opb);
 
if(cval==-1)goto eop;
}
 
for(k=0;k<cdim;k++){
int book=info->class_subbook[class][cval&(csub-1)];
cval>>=csubbits;
if(book>=0){
if((fit_value[j+k]=vorbis_book_decode(books+book,&vb->opb))==-1)
goto eop;
}else{
fit_value[j+k]=0;
}
}
j+=cdim;
}
 
/* unwrap positive values and reconsitute via linear interpolation */
for(i=2;i<look->posts;i++){
int predicted=render_point(info->postlist[look->loneighbor[i-2]],
info->postlist[look->hineighbor[i-2]],
fit_value[look->loneighbor[i-2]],
fit_value[look->hineighbor[i-2]],
info->postlist[i]);
int hiroom=look->quant_q-predicted;
int loroom=predicted;
int room=(hiroom<loroom?hiroom:loroom)<<1;
int val=fit_value[i];
 
if(val){
if(val>=room){
if(hiroom>loroom){
val = val-loroom;
}else{
val = -1-(val-hiroom);
}
}else{
if(val&1){
val= -((val+1)>>1);
}else{
val>>=1;
}
}
 
fit_value[i]=(val+predicted)&0x7fff;
fit_value[look->loneighbor[i-2]]&=0x7fff;
fit_value[look->hineighbor[i-2]]&=0x7fff;
 
}else{
fit_value[i]=predicted|0x8000;
}
 
}
 
return(fit_value);
}
eop:
return(NULL);
}
 
static int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo,
float *out){
vorbis_look_floor1 *look=(vorbis_look_floor1 *)in;
vorbis_info_floor1 *info=look->vi;
 
codec_setup_info *ci=vb->vd->vi->codec_setup;
int n=ci->blocksizes[vb->W]/2;
int j;
 
if(memo){
/* render the lines */
int *fit_value=(int *)memo;
int hx=0;
int lx=0;
int ly=fit_value[0]*info->mult;
/* guard lookup against out-of-range values */
ly=(ly<0?0:ly>255?255:ly);
 
for(j=1;j<look->posts;j++){
int current=look->forward_index[j];
int hy=fit_value[current]&0x7fff;
if(hy==fit_value[current]){
 
hx=info->postlist[current];
hy*=info->mult;
/* guard lookup against out-of-range values */
hy=(hy<0?0:hy>255?255:hy);
 
render_line(n,lx,hx,ly,hy,out);
 
lx=hx;
ly=hy;
}
}
for(j=hx;j<n;j++)out[j]*=FLOOR1_fromdB_LOOKUP[ly]; /* be certain */
return(1);
}
memset(out,0,sizeof(*out)*n);
return(0);
}
 
/* export hooks */
const vorbis_func_floor floor1_exportbundle={
&floor1_pack,&floor1_unpack,&floor1_look,&floor1_free_info,
&floor1_free_look,&floor1_inverse1,&floor1_inverse2
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/highlevel.h
0,0 → 1,57
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: highlevel encoder setup struct separated out for vorbisenc clarity
 
********************************************************************/
 
typedef struct highlevel_byblocktype {
double tone_mask_setting;
double tone_peaklimit_setting;
double noise_bias_setting;
double noise_compand_setting;
} highlevel_byblocktype;
 
typedef struct highlevel_encode_setup {
int set_in_stone;
const void *setup;
double base_setting;
 
double impulse_noisetune;
 
/* bitrate management below all settable */
float req;
int managed;
long bitrate_min;
long bitrate_av;
double bitrate_av_damp;
long bitrate_max;
long bitrate_reservoir;
double bitrate_reservoir_bias;
 
int impulse_block_p;
int noise_normalize_p;
int coupling_p;
 
double stereo_point_setting;
double lowpass_kHz;
int lowpass_altered;
 
double ath_floating_dB;
double ath_absolute_dB;
 
double amplitude_track_dBpersec;
double trigger_setting;
 
highlevel_byblocktype block[4]; /* padding, impulse, transition, long */
 
} highlevel_encode_setup;
/contrib/sdk/sources/libvorbis-1.3.7/lib/info.c
0,0 → 1,687
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: maintain the info structure, info <-> header packets
 
********************************************************************/
 
/* general handling of the header and the vorbis_info structure (and
substructures) */
 
#include <stdlib.h>
#include <string.h>
#include <ogg/ogg.h>
#include "vorbis/codec.h"
#include "codec_internal.h"
#include "codebook.h"
#include "registry.h"
#include "window.h"
#include "psy.h"
#include "misc.h"
#include "os.h"
 
#define GENERAL_VENDOR_STRING "Xiph.Org libVorbis 1.3.7"
#define ENCODE_VENDOR_STRING "Xiph.Org libVorbis I 20200704 (Reducing Environment)"
 
/* helpers */
static void _v_writestring(oggpack_buffer *o,const char *s, int bytes){
 
while(bytes--){
oggpack_write(o,*s++,8);
}
}
 
static void _v_readstring(oggpack_buffer *o,char *buf,int bytes){
while(bytes--){
*buf++=oggpack_read(o,8);
}
}
 
static int _v_toupper(int c) {
return (c >= 'a' && c <= 'z') ? (c & ~('a' - 'A')) : c;
}
 
void vorbis_comment_init(vorbis_comment *vc){
memset(vc,0,sizeof(*vc));
}
 
void vorbis_comment_add(vorbis_comment *vc,const char *comment){
vc->user_comments=_ogg_realloc(vc->user_comments,
(vc->comments+2)*sizeof(*vc->user_comments));
vc->comment_lengths=_ogg_realloc(vc->comment_lengths,
(vc->comments+2)*sizeof(*vc->comment_lengths));
vc->comment_lengths[vc->comments]=strlen(comment);
vc->user_comments[vc->comments]=_ogg_malloc(vc->comment_lengths[vc->comments]+1);
strcpy(vc->user_comments[vc->comments], comment);
vc->comments++;
vc->user_comments[vc->comments]=NULL;
}
 
void vorbis_comment_add_tag(vorbis_comment *vc, const char *tag, const char *contents){
/* Length for key and value +2 for = and \0 */
char *comment=_ogg_malloc(strlen(tag)+strlen(contents)+2);
strcpy(comment, tag);
strcat(comment, "=");
strcat(comment, contents);
vorbis_comment_add(vc, comment);
_ogg_free(comment);
}
 
/* This is more or less the same as strncasecmp - but that doesn't exist
* everywhere, and this is a fairly trivial function, so we include it */
static int tagcompare(const char *s1, const char *s2, int n){
int c=0;
while(c < n){
if(_v_toupper(s1[c]) != _v_toupper(s2[c]))
return !0;
c++;
}
return 0;
}
 
char *vorbis_comment_query(vorbis_comment *vc, const char *tag, int count){
long i;
int found = 0;
int taglen = strlen(tag)+1; /* +1 for the = we append */
char *fulltag = _ogg_malloc(taglen+1);
 
strcpy(fulltag, tag);
strcat(fulltag, "=");
 
for(i=0;i<vc->comments;i++){
if(!tagcompare(vc->user_comments[i], fulltag, taglen)){
if(count == found) {
/* We return a pointer to the data, not a copy */
_ogg_free(fulltag);
return vc->user_comments[i] + taglen;
} else {
found++;
}
}
}
_ogg_free(fulltag);
return NULL; /* didn't find anything */
}
 
int vorbis_comment_query_count(vorbis_comment *vc, const char *tag){
int i,count=0;
int taglen = strlen(tag)+1; /* +1 for the = we append */
char *fulltag = _ogg_malloc(taglen+1);
strcpy(fulltag,tag);
strcat(fulltag, "=");
 
for(i=0;i<vc->comments;i++){
if(!tagcompare(vc->user_comments[i], fulltag, taglen))
count++;
}
 
_ogg_free(fulltag);
return count;
}
 
void vorbis_comment_clear(vorbis_comment *vc){
if(vc){
long i;
if(vc->user_comments){
for(i=0;i<vc->comments;i++)
if(vc->user_comments[i])_ogg_free(vc->user_comments[i]);
_ogg_free(vc->user_comments);
}
if(vc->comment_lengths)_ogg_free(vc->comment_lengths);
if(vc->vendor)_ogg_free(vc->vendor);
memset(vc,0,sizeof(*vc));
}
}
 
/* blocksize 0 is guaranteed to be short, 1 is guaranteed to be long.
They may be equal, but short will never ge greater than long */
int vorbis_info_blocksize(vorbis_info *vi,int zo){
codec_setup_info *ci = vi->codec_setup;
return ci ? ci->blocksizes[zo] : -1;
}
 
/* used by synthesis, which has a full, alloced vi */
void vorbis_info_init(vorbis_info *vi){
memset(vi,0,sizeof(*vi));
vi->codec_setup=_ogg_calloc(1,sizeof(codec_setup_info));
}
 
void vorbis_info_clear(vorbis_info *vi){
codec_setup_info *ci=vi->codec_setup;
int i;
 
if(ci){
 
for(i=0;i<ci->modes;i++)
if(ci->mode_param[i])_ogg_free(ci->mode_param[i]);
 
for(i=0;i<ci->maps;i++) /* unpack does the range checking */
if(ci->map_param[i]) /* this may be cleaning up an aborted
unpack, in which case the below type
cannot be trusted */
_mapping_P[ci->map_type[i]]->free_info(ci->map_param[i]);
 
for(i=0;i<ci->floors;i++) /* unpack does the range checking */
if(ci->floor_param[i]) /* this may be cleaning up an aborted
unpack, in which case the below type
cannot be trusted */
_floor_P[ci->floor_type[i]]->free_info(ci->floor_param[i]);
 
for(i=0;i<ci->residues;i++) /* unpack does the range checking */
if(ci->residue_param[i]) /* this may be cleaning up an aborted
unpack, in which case the below type
cannot be trusted */
_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]);
}
if(ci->fullbooks)
vorbis_book_clear(ci->fullbooks+i);
}
if(ci->fullbooks)
_ogg_free(ci->fullbooks);
 
for(i=0;i<ci->psys;i++)
_vi_psy_free(ci->psy_param[i]);
 
_ogg_free(ci);
}
 
memset(vi,0,sizeof(*vi));
}
 
/* Header packing/unpacking ********************************************/
 
static int _vorbis_unpack_info(vorbis_info *vi,oggpack_buffer *opb){
codec_setup_info *ci=vi->codec_setup;
int bs;
if(!ci)return(OV_EFAULT);
 
vi->version=oggpack_read(opb,32);
if(vi->version!=0)return(OV_EVERSION);
 
vi->channels=oggpack_read(opb,8);
vi->rate=oggpack_read(opb,32);
 
vi->bitrate_upper=(ogg_int32_t)oggpack_read(opb,32);
vi->bitrate_nominal=(ogg_int32_t)oggpack_read(opb,32);
vi->bitrate_lower=(ogg_int32_t)oggpack_read(opb,32);
 
bs = oggpack_read(opb,4);
if(bs<0)goto err_out;
ci->blocksizes[0]=1<<bs;
bs = oggpack_read(opb,4);
if(bs<0)goto err_out;
ci->blocksizes[1]=1<<bs;
 
if(vi->rate<1)goto err_out;
if(vi->channels<1)goto err_out;
if(ci->blocksizes[0]<64)goto err_out;
if(ci->blocksizes[1]<ci->blocksizes[0])goto err_out;
if(ci->blocksizes[1]>8192)goto err_out;
 
if(oggpack_read(opb,1)!=1)goto err_out; /* EOP check */
 
return(0);
err_out:
vorbis_info_clear(vi);
return(OV_EBADHEADER);
}
 
static int _vorbis_unpack_comment(vorbis_comment *vc,oggpack_buffer *opb){
int i;
int vendorlen=oggpack_read(opb,32);
if(vendorlen<0)goto err_out;
if(vendorlen>opb->storage-8)goto err_out;
vc->vendor=_ogg_calloc(vendorlen+1,1);
_v_readstring(opb,vc->vendor,vendorlen);
i=oggpack_read(opb,32);
if(i<0)goto err_out;
if(i>((opb->storage-oggpack_bytes(opb))>>2))goto err_out;
vc->comments=i;
vc->user_comments=_ogg_calloc(vc->comments+1,sizeof(*vc->user_comments));
vc->comment_lengths=_ogg_calloc(vc->comments+1, sizeof(*vc->comment_lengths));
 
for(i=0;i<vc->comments;i++){
int len=oggpack_read(opb,32);
if(len<0)goto err_out;
if(len>opb->storage-oggpack_bytes(opb))goto err_out;
vc->comment_lengths[i]=len;
vc->user_comments[i]=_ogg_calloc(len+1,1);
_v_readstring(opb,vc->user_comments[i],len);
}
if(oggpack_read(opb,1)!=1)goto err_out; /* EOP check */
 
return(0);
err_out:
vorbis_comment_clear(vc);
return(OV_EBADHEADER);
}
 
/* 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;
 
/* codebooks */
ci->books=oggpack_read(opb,8)+1;
if(ci->books<=0)goto err_out;
for(i=0;i<ci->books;i++){
ci->book_param[i]=vorbis_staticbook_unpack(opb);
if(!ci->book_param[i])goto err_out;
}
 
/* time backend settings; hooks are unused */
{
int times=oggpack_read(opb,6)+1;
if(times<=0)goto err_out;
for(i=0;i<times;i++){
int test=oggpack_read(opb,16);
if(test<0 || test>=VI_TIMEB)goto err_out;
}
}
 
/* floor backend settings */
ci->floors=oggpack_read(opb,6)+1;
if(ci->floors<=0)goto err_out;
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 */
ci->residues=oggpack_read(opb,6)+1;
if(ci->residues<=0)goto err_out;
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 */
ci->maps=oggpack_read(opb,6)+1;
if(ci->maps<=0)goto err_out;
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 */
ci->modes=oggpack_read(opb,6)+1;
if(ci->modes<=0)goto err_out;
for(i=0;i<ci->modes;i++){
ci->mode_param[i]=_ogg_calloc(1,sizeof(*ci->mode_param[i]));
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(ci->mode_param[i]->mapping<0)goto err_out;
}
 
if(oggpack_read(opb,1)!=1)goto err_out; /* top level EOP check */
 
return(0);
err_out:
vorbis_info_clear(vi);
return(OV_EBADHEADER);
}
 
/* Is this packet a vorbis ID header? */
int vorbis_synthesis_idheader(ogg_packet *op){
oggpack_buffer opb;
char buffer[6];
 
if(op){
oggpack_readinit(&opb,op->packet,op->bytes);
 
if(!op->b_o_s)
return(0); /* Not the initial packet */
 
if(oggpack_read(&opb,8) != 1)
return 0; /* not an ID header */
 
memset(buffer,0,6);
_v_readstring(&opb,buffer,6);
if(memcmp(buffer,"vorbis",6))
return 0; /* not vorbis */
 
return 1;
}
 
return 0;
}
 
/* The Vorbis header is in three packets; the initial small packet in
the first page that identifies basic parameters, a second packet
with bitstream comments and a third packet that holds the
codebook. */
 
int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,ogg_packet *op){
oggpack_buffer opb;
 
if(op){
oggpack_readinit(&opb,op->packet,op->bytes);
 
/* Which of the three types of header is this? */
/* Also verify header-ness, vorbis */
{
char buffer[6];
int packtype=oggpack_read(&opb,8);
memset(buffer,0,6);
_v_readstring(&opb,buffer,6);
if(memcmp(buffer,"vorbis",6)){
/* not a vorbis header */
return(OV_ENOTVORBIS);
}
switch(packtype){
case 0x01: /* least significant *bit* is read first */
if(!op->b_o_s){
/* Not the initial packet */
return(OV_EBADHEADER);
}
if(vi->rate!=0){
/* previously initialized info header */
return(OV_EBADHEADER);
}
 
return(_vorbis_unpack_info(vi,&opb));
 
case 0x03: /* least significant *bit* is read first */
if(vi->rate==0){
/* um... we didn't get the initial header */
return(OV_EBADHEADER);
}
if(vc->vendor!=NULL){
/* previously initialized comment header */
return(OV_EBADHEADER);
}
 
return(_vorbis_unpack_comment(vc,&opb));
 
case 0x05: /* least significant *bit* is read first */
if(vi->rate==0 || vc->vendor==NULL){
/* um... we didn;t get the initial header or comments yet */
return(OV_EBADHEADER);
}
if(vi->codec_setup==NULL){
/* improperly initialized vorbis_info */
return(OV_EFAULT);
}
if(((codec_setup_info *)vi->codec_setup)->books>0){
/* previously initialized setup header */
return(OV_EBADHEADER);
}
 
return(_vorbis_unpack_books(vi,&opb));
 
default:
/* Not a valid vorbis header type */
return(OV_EBADHEADER);
break;
}
}
}
return(OV_EBADHEADER);
}
 
/* pack side **********************************************************/
 
static int _vorbis_pack_info(oggpack_buffer *opb,vorbis_info *vi){
codec_setup_info *ci=vi->codec_setup;
if(!ci||
ci->blocksizes[0]<64||
ci->blocksizes[1]<ci->blocksizes[0]){
return(OV_EFAULT);
}
 
/* preamble */
oggpack_write(opb,0x01,8);
_v_writestring(opb,"vorbis", 6);
 
/* basic information about the stream */
oggpack_write(opb,0x00,32);
oggpack_write(opb,vi->channels,8);
oggpack_write(opb,vi->rate,32);
 
oggpack_write(opb,vi->bitrate_upper,32);
oggpack_write(opb,vi->bitrate_nominal,32);
oggpack_write(opb,vi->bitrate_lower,32);
 
oggpack_write(opb,ov_ilog(ci->blocksizes[0]-1),4);
oggpack_write(opb,ov_ilog(ci->blocksizes[1]-1),4);
oggpack_write(opb,1,1);
 
return(0);
}
 
static int _vorbis_pack_comment(oggpack_buffer *opb,vorbis_comment *vc){
int bytes = strlen(ENCODE_VENDOR_STRING);
 
/* preamble */
oggpack_write(opb,0x03,8);
_v_writestring(opb,"vorbis", 6);
 
/* vendor */
oggpack_write(opb,bytes,32);
_v_writestring(opb,ENCODE_VENDOR_STRING, bytes);
 
/* comments */
 
oggpack_write(opb,vc->comments,32);
if(vc->comments){
int i;
for(i=0;i<vc->comments;i++){
if(vc->user_comments[i]){
oggpack_write(opb,vc->comment_lengths[i],32);
_v_writestring(opb,vc->user_comments[i], vc->comment_lengths[i]);
}else{
oggpack_write(opb,0,32);
}
}
}
oggpack_write(opb,1,1);
 
return(0);
}
 
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", 6);
 
/* books */
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; hook placeholders */
oggpack_write(opb,0,6);
oggpack_write(opb,0,16);
 
/* floors */
oggpack_write(opb,ci->floors-1,6);
for(i=0;i<ci->floors;i++){
oggpack_write(opb,ci->floor_type[i],16);
if(_floor_P[ci->floor_type[i]]->pack)
_floor_P[ci->floor_type[i]]->pack(ci->floor_param[i],opb);
else
goto err_out;
}
 
/* residues */
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,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,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);
 
return(0);
err_out:
return(-1);
}
 
int vorbis_commentheader_out(vorbis_comment *vc,
ogg_packet *op){
 
oggpack_buffer opb;
 
oggpack_writeinit(&opb);
if(_vorbis_pack_comment(&opb,vc)){
oggpack_writeclear(&opb);
return OV_EIMPL;
}
 
op->packet = _ogg_malloc(oggpack_bytes(&opb));
memcpy(op->packet, opb.buffer, oggpack_bytes(&opb));
 
op->bytes=oggpack_bytes(&opb);
op->b_o_s=0;
op->e_o_s=0;
op->granulepos=0;
op->packetno=1;
 
oggpack_writeclear(&opb);
return 0;
}
 
int vorbis_analysis_headerout(vorbis_dsp_state *v,
vorbis_comment *vc,
ogg_packet *op,
ogg_packet *op_comm,
ogg_packet *op_code){
int ret=OV_EIMPL;
vorbis_info *vi=v->vi;
oggpack_buffer opb;
private_state *b=v->backend_state;
 
if(!b||vi->channels<=0||vi->channels>256){
b = NULL;
ret=OV_EFAULT;
goto err_out;
}
 
/* first header packet **********************************************/
 
oggpack_writeinit(&opb);
if(_vorbis_pack_info(&opb,vi))goto err_out;
 
/* build the packet */
if(b->header)_ogg_free(b->header);
b->header=_ogg_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;
op->granulepos=0;
op->packetno=0;
 
/* second header packet (comments) **********************************/
 
oggpack_reset(&opb);
if(_vorbis_pack_comment(&opb,vc))goto err_out;
 
if(b->header1)_ogg_free(b->header1);
b->header1=_ogg_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;
op_comm->granulepos=0;
op_comm->packetno=1;
 
/* third header packet (modes/codebooks) ****************************/
 
oggpack_reset(&opb);
if(_vorbis_pack_books(&opb,vi))goto err_out;
 
if(b->header2)_ogg_free(b->header2);
b->header2=_ogg_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;
op_code->granulepos=0;
op_code->packetno=2;
 
oggpack_writeclear(&opb);
return(0);
err_out:
memset(op,0,sizeof(*op));
memset(op_comm,0,sizeof(*op_comm));
memset(op_code,0,sizeof(*op_code));
 
if(b){
if(vi->channels>0)oggpack_writeclear(&opb);
if(b->header)_ogg_free(b->header);
if(b->header1)_ogg_free(b->header1);
if(b->header2)_ogg_free(b->header2);
b->header=NULL;
b->header1=NULL;
b->header2=NULL;
}
return(ret);
}
 
double vorbis_granule_time(vorbis_dsp_state *v,ogg_int64_t granulepos){
if(granulepos == -1) return -1;
 
/* We're not guaranteed a 64 bit unsigned type everywhere, so we
have to put the unsigned granpo in a signed type. */
if(granulepos>=0){
return((double)granulepos/v->vi->rate);
}else{
ogg_int64_t granuleoff=0xffffffff;
granuleoff<<=31;
granuleoff|=0x7ffffffff;
return(((double)granulepos+2+granuleoff+granuleoff)/v->vi->rate);
}
}
 
const char *vorbis_version_string(void){
return GENERAL_VENDOR_STRING;
}
/contrib/sdk/sources/libvorbis-1.3.7/lib/lookup.c
0,0 → 1,93
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: lookup based functions
 
********************************************************************/
 
#include <math.h>
#include "lookup.h"
#include "lookup_data.h"
#include "os.h"
#include "misc.h"
 
#ifdef FLOAT_LOOKUP
 
/* interpolated lookup based cos function, domain 0 to PI only */
float vorbis_coslook(float a){
double d=a*(.31830989*(float)COS_LOOKUP_SZ);
int i=vorbis_ftoi(d-.5);
 
return COS_LOOKUP[i]+ (d-i)*(COS_LOOKUP[i+1]-COS_LOOKUP[i]);
}
 
/* interpolated 1./sqrt(p) where .5 <= p < 1. */
float vorbis_invsqlook(float a){
double d=a*(2.f*(float)INVSQ_LOOKUP_SZ)-(float)INVSQ_LOOKUP_SZ;
int i=vorbis_ftoi(d-.5f);
return INVSQ_LOOKUP[i]+ (d-i)*(INVSQ_LOOKUP[i+1]-INVSQ_LOOKUP[i]);
}
 
/* interpolated 1./sqrt(p) where .5 <= p < 1. */
float vorbis_invsq2explook(int a){
return INVSQ2EXP_LOOKUP[a-INVSQ2EXP_LOOKUP_MIN];
}
 
#include <stdio.h>
/* interpolated lookup based fromdB function, domain -140dB to 0dB only */
float vorbis_fromdBlook(float a){
int i=vorbis_ftoi(a*((float)(-(1<<FROMdB2_SHIFT)))-.5f);
return (i<0)?1.f:
((i>=(FROMdB_LOOKUP_SZ<<FROMdB_SHIFT))?0.f:
FROMdB_LOOKUP[i>>FROMdB_SHIFT]*FROMdB2_LOOKUP[i&FROMdB2_MASK]);
}
 
#endif
 
#ifdef INT_LOOKUP
/* interpolated 1./sqrt(p) where .5 <= a < 1. (.100000... to .111111...) in
16.16 format
 
returns in m.8 format */
long vorbis_invsqlook_i(long a,long e){
long i=(a&0x7fff)>>(INVSQ_LOOKUP_I_SHIFT-1);
long d=(a&INVSQ_LOOKUP_I_MASK)<<(16-INVSQ_LOOKUP_I_SHIFT); /* 0.16 */
long val=INVSQ_LOOKUP_I[i]- /* 1.16 */
(((INVSQ_LOOKUP_I[i]-INVSQ_LOOKUP_I[i+1])* /* 0.16 */
d)>>16); /* result 1.16 */
 
e+=32;
if(e&1)val=(val*5792)>>13; /* multiply val by 1/sqrt(2) */
e=(e>>1)-8;
 
return(val>>e);
}
 
/* interpolated lookup based fromdB function, domain -140dB to 0dB only */
/* a is in n.12 format */
float vorbis_fromdBlook_i(long a){
int i=(-a)>>(12-FROMdB2_SHIFT);
return (i<0)?1.f:
((i>=(FROMdB_LOOKUP_SZ<<FROMdB_SHIFT))?0.f:
FROMdB_LOOKUP[i>>FROMdB_SHIFT]*FROMdB2_LOOKUP[i&FROMdB2_MASK]);
}
 
/* interpolated lookup based cos function, domain 0 to PI only */
/* a is in 0.16 format, where 0==0, 2^^16-1==PI, return 0.14 */
long vorbis_coslook_i(long a){
int i=a>>COS_LOOKUP_I_SHIFT;
int d=a&COS_LOOKUP_I_MASK;
return COS_LOOKUP_I[i]- ((d*(COS_LOOKUP_I[i]-COS_LOOKUP_I[i+1]))>>
COS_LOOKUP_I_SHIFT);
}
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/lookup.h
0,0 → 1,31
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: lookup based functions
 
********************************************************************/
 
#ifndef _V_LOOKUP_H_
 
#ifdef FLOAT_LOOKUP
extern float vorbis_coslook(float a);
extern float vorbis_invsqlook(float a);
extern float vorbis_invsq2explook(int a);
extern float vorbis_fromdBlook(float a);
#endif
#ifdef INT_LOOKUP
extern long vorbis_invsqlook_i(long a,long e);
extern long vorbis_coslook_i(long a);
extern float vorbis_fromdBlook_i(long a);
#endif
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/lookup_data.h
0,0 → 1,191
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: lookup data; generated by lookups.pl; edit there
 
********************************************************************/
 
#ifndef _V_LOOKUP_DATA_H_
 
#ifdef FLOAT_LOOKUP
#define COS_LOOKUP_SZ 128
static const float COS_LOOKUP[COS_LOOKUP_SZ+1]={
+1.0000000000000f,+0.9996988186962f,+0.9987954562052f,+0.9972904566787f,
+0.9951847266722f,+0.9924795345987f,+0.9891765099648f,+0.9852776423889f,
+0.9807852804032f,+0.9757021300385f,+0.9700312531945f,+0.9637760657954f,
+0.9569403357322f,+0.9495281805930f,+0.9415440651830f,+0.9329927988347f,
+0.9238795325113f,+0.9142097557035f,+0.9039892931234f,+0.8932243011955f,
+0.8819212643484f,+0.8700869911087f,+0.8577286100003f,+0.8448535652497f,
+0.8314696123025f,+0.8175848131516f,+0.8032075314806f,+0.7883464276266f,
+0.7730104533627f,+0.7572088465065f,+0.7409511253550f,+0.7242470829515f,
+0.7071067811865f,+0.6895405447371f,+0.6715589548470f,+0.6531728429538f,
+0.6343932841636f,+0.6152315905806f,+0.5956993044924f,+0.5758081914178f,
+0.5555702330196f,+0.5349976198871f,+0.5141027441932f,+0.4928981922298f,
+0.4713967368260f,+0.4496113296546f,+0.4275550934303f,+0.4052413140050f,
+0.3826834323651f,+0.3598950365350f,+0.3368898533922f,+0.3136817403989f,
+0.2902846772545f,+0.2667127574749f,+0.2429801799033f,+0.2191012401569f,
+0.1950903220161f,+0.1709618887603f,+0.1467304744554f,+0.1224106751992f,
+0.0980171403296f,+0.0735645635997f,+0.0490676743274f,+0.0245412285229f,
+0.0000000000000f,-0.0245412285229f,-0.0490676743274f,-0.0735645635997f,
-0.0980171403296f,-0.1224106751992f,-0.1467304744554f,-0.1709618887603f,
-0.1950903220161f,-0.2191012401569f,-0.2429801799033f,-0.2667127574749f,
-0.2902846772545f,-0.3136817403989f,-0.3368898533922f,-0.3598950365350f,
-0.3826834323651f,-0.4052413140050f,-0.4275550934303f,-0.4496113296546f,
-0.4713967368260f,-0.4928981922298f,-0.5141027441932f,-0.5349976198871f,
-0.5555702330196f,-0.5758081914178f,-0.5956993044924f,-0.6152315905806f,
-0.6343932841636f,-0.6531728429538f,-0.6715589548470f,-0.6895405447371f,
-0.7071067811865f,-0.7242470829515f,-0.7409511253550f,-0.7572088465065f,
-0.7730104533627f,-0.7883464276266f,-0.8032075314806f,-0.8175848131516f,
-0.8314696123025f,-0.8448535652497f,-0.8577286100003f,-0.8700869911087f,
-0.8819212643484f,-0.8932243011955f,-0.9039892931234f,-0.9142097557035f,
-0.9238795325113f,-0.9329927988347f,-0.9415440651830f,-0.9495281805930f,
-0.9569403357322f,-0.9637760657954f,-0.9700312531945f,-0.9757021300385f,
-0.9807852804032f,-0.9852776423889f,-0.9891765099648f,-0.9924795345987f,
-0.9951847266722f,-0.9972904566787f,-0.9987954562052f,-0.9996988186962f,
-1.0000000000000f,
};
 
#define INVSQ_LOOKUP_SZ 32
static const float INVSQ_LOOKUP[INVSQ_LOOKUP_SZ+1]={
1.414213562373f,1.392621247646f,1.371988681140f,1.352246807566f,
1.333333333333f,1.315191898443f,1.297771369046f,1.281025230441f,
1.264911064067f,1.249390095109f,1.234426799697f,1.219988562661f,
1.206045378311f,1.192569588000f,1.179535649239f,1.166919931983f,
1.154700538379f,1.142857142857f,1.131370849898f,1.120224067222f,
1.109400392450f,1.098884511590f,1.088662107904f,1.078719779941f,
1.069044967650f,1.059625885652f,1.050451462878f,1.041511287847f,
1.032795558989f,1.024295039463f,1.016001016002f,1.007905261358f,
1.000000000000f,
};
 
#define INVSQ2EXP_LOOKUP_MIN (-32)
#define INVSQ2EXP_LOOKUP_MAX 32
static const float INVSQ2EXP_LOOKUP[INVSQ2EXP_LOOKUP_MAX-\
INVSQ2EXP_LOOKUP_MIN+1]={
65536.f, 46340.95001f, 32768.f, 23170.47501f,
16384.f, 11585.2375f, 8192.f, 5792.618751f,
4096.f, 2896.309376f, 2048.f, 1448.154688f,
1024.f, 724.0773439f, 512.f, 362.038672f,
256.f, 181.019336f, 128.f, 90.50966799f,
64.f, 45.254834f, 32.f, 22.627417f,
16.f, 11.3137085f, 8.f, 5.656854249f,
4.f, 2.828427125f, 2.f, 1.414213562f,
1.f, 0.7071067812f, 0.5f, 0.3535533906f,
0.25f, 0.1767766953f, 0.125f, 0.08838834765f,
0.0625f, 0.04419417382f, 0.03125f, 0.02209708691f,
0.015625f, 0.01104854346f, 0.0078125f, 0.005524271728f,
0.00390625f, 0.002762135864f, 0.001953125f, 0.001381067932f,
0.0009765625f, 0.000690533966f, 0.00048828125f, 0.000345266983f,
0.000244140625f,0.0001726334915f,0.0001220703125f,8.631674575e-05f,
6.103515625e-05f,4.315837288e-05f,3.051757812e-05f,2.157918644e-05f,
1.525878906e-05f,
};
 
#endif
 
#define FROMdB_LOOKUP_SZ 35
#define FROMdB2_LOOKUP_SZ 32
#define FROMdB_SHIFT 5
#define FROMdB2_SHIFT 3
#define FROMdB2_MASK 31
 
#ifdef FLOAT_LOOKUP
static const float FROMdB_LOOKUP[FROMdB_LOOKUP_SZ]={
1.f, 0.6309573445f, 0.3981071706f, 0.2511886432f,
0.1584893192f, 0.1f, 0.06309573445f, 0.03981071706f,
0.02511886432f, 0.01584893192f, 0.01f, 0.006309573445f,
0.003981071706f, 0.002511886432f, 0.001584893192f, 0.001f,
0.0006309573445f,0.0003981071706f,0.0002511886432f,0.0001584893192f,
0.0001f,6.309573445e-05f,3.981071706e-05f,2.511886432e-05f,
1.584893192e-05f, 1e-05f,6.309573445e-06f,3.981071706e-06f,
2.511886432e-06f,1.584893192e-06f, 1e-06f,6.309573445e-07f,
3.981071706e-07f,2.511886432e-07f,1.584893192e-07f,
};
 
static const float FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ]={
0.9928302478f, 0.9786445908f, 0.9646616199f, 0.9508784391f,
0.9372921937f, 0.92390007f, 0.9106992942f, 0.8976871324f,
0.8848608897f, 0.8722179097f, 0.8597555737f, 0.8474713009f,
0.835362547f, 0.8234268041f, 0.8116616003f, 0.8000644989f,
0.7886330981f, 0.7773650302f, 0.7662579617f, 0.755309592f,
0.7445176537f, 0.7338799116f, 0.7233941627f, 0.7130582353f,
0.7028699885f, 0.6928273125f, 0.6829281272f, 0.6731703824f,
0.6635520573f, 0.6540711597f, 0.6447257262f, 0.6355138211f,
};
#endif
 
#ifdef INT_LOOKUP
 
#define INVSQ_LOOKUP_I_SHIFT 10
#define INVSQ_LOOKUP_I_MASK 1023
static const long INVSQ_LOOKUP_I[64+1]={
92682l, 91966l, 91267l, 90583l,
89915l, 89261l, 88621l, 87995l,
87381l, 86781l, 86192l, 85616l,
85051l, 84497l, 83953l, 83420l,
82897l, 82384l, 81880l, 81385l,
80899l, 80422l, 79953l, 79492l,
79039l, 78594l, 78156l, 77726l,
77302l, 76885l, 76475l, 76072l,
75674l, 75283l, 74898l, 74519l,
74146l, 73778l, 73415l, 73058l,
72706l, 72359l, 72016l, 71679l,
71347l, 71019l, 70695l, 70376l,
70061l, 69750l, 69444l, 69141l,
68842l, 68548l, 68256l, 67969l,
67685l, 67405l, 67128l, 66855l,
66585l, 66318l, 66054l, 65794l,
65536l,
};
 
#define COS_LOOKUP_I_SHIFT 9
#define COS_LOOKUP_I_MASK 511
#define COS_LOOKUP_I_SZ 128
static const long COS_LOOKUP_I[COS_LOOKUP_I_SZ+1]={
16384l, 16379l, 16364l, 16340l,
16305l, 16261l, 16207l, 16143l,
16069l, 15986l, 15893l, 15791l,
15679l, 15557l, 15426l, 15286l,
15137l, 14978l, 14811l, 14635l,
14449l, 14256l, 14053l, 13842l,
13623l, 13395l, 13160l, 12916l,
12665l, 12406l, 12140l, 11866l,
11585l, 11297l, 11003l, 10702l,
10394l, 10080l, 9760l, 9434l,
9102l, 8765l, 8423l, 8076l,
7723l, 7366l, 7005l, 6639l,
6270l, 5897l, 5520l, 5139l,
4756l, 4370l, 3981l, 3590l,
3196l, 2801l, 2404l, 2006l,
1606l, 1205l, 804l, 402l,
0l, -401l, -803l, -1204l,
-1605l, -2005l, -2403l, -2800l,
-3195l, -3589l, -3980l, -4369l,
-4755l, -5138l, -5519l, -5896l,
-6269l, -6638l, -7004l, -7365l,
-7722l, -8075l, -8422l, -8764l,
-9101l, -9433l, -9759l, -10079l,
-10393l, -10701l, -11002l, -11296l,
-11584l, -11865l, -12139l, -12405l,
-12664l, -12915l, -13159l, -13394l,
-13622l, -13841l, -14052l, -14255l,
-14448l, -14634l, -14810l, -14977l,
-15136l, -15285l, -15425l, -15556l,
-15678l, -15790l, -15892l, -15985l,
-16068l, -16142l, -16206l, -16260l,
-16304l, -16339l, -16363l, -16378l,
-16383l,
};
 
#endif
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/lpc.c
0,0 → 1,159
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: LPC low level routines
 
********************************************************************/
 
/* Some of these routines (autocorrelator, LPC coefficient estimator)
are derived from code written by Jutta Degener and Carsten Bormann;
thus we include their copyright below. The entirety of this file
is freely redistributable on the condition that both of these
copyright notices are preserved without modification. */
 
/* Preserved Copyright: *********************************************/
 
/* Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann,
Technische Universita"t Berlin
 
Any use of this software is permitted provided that this notice is not
removed and that neither the authors nor the Technische Universita"t
Berlin are deemed to have made any representations as to the
suitability of this software for any purpose nor are held responsible
for any defects of this software. THERE IS ABSOLUTELY NO WARRANTY FOR
THIS SOFTWARE.
 
As a matter of courtesy, the authors request to be informed about uses
this software has found, about bugs in this software, and about any
improvements that may be of general interest.
 
Berlin, 28.11.1994
Jutta Degener
Carsten Bormann
 
*********************************************************************/
 
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "os.h"
#include "smallft.h"
#include "lpc.h"
#include "scales.h"
#include "misc.h"
 
/* Autocorrelation LPC coeff generation algorithm invented by
N. Levinson in 1947, modified by J. Durbin in 1959. */
 
/* Input : n elements of time doamin data
Output: m lpc coefficients, excitation energy */
 
float vorbis_lpc_from_data(float *data,float *lpci,int n,int m){
double *aut=alloca(sizeof(*aut)*(m+1));
double *lpc=alloca(sizeof(*lpc)*(m));
double error;
double epsilon;
int i,j;
 
/* autocorrelation, p+1 lag coefficients */
j=m+1;
while(j--){
double d=0; /* double needed for accumulator depth */
for(i=j;i<n;i++)d+=(double)data[i]*data[i-j];
aut[j]=d;
}
 
/* Generate lpc coefficients from autocorr values */
 
/* set our noise floor to about -100dB */
error=aut[0] * (1. + 1e-10);
epsilon=1e-9*aut[0]+1e-10;
 
for(i=0;i<m;i++){
double r= -aut[i+1];
 
if(error<epsilon){
memset(lpc+i,0,(m-i)*sizeof(*lpc));
goto done;
}
 
/* Sum up this iteration's reflection coefficient; note that in
Vorbis we don't save it. If anyone wants to recycle this code
and needs reflection coefficients, save the results of 'r' from
each iteration. */
 
for(j=0;j<i;j++)r-=lpc[j]*aut[i-j];
r/=error;
 
/* Update LPC coefficients and total error */
 
lpc[i]=r;
for(j=0;j<i/2;j++){
double tmp=lpc[j];
 
lpc[j]+=r*lpc[i-1-j];
lpc[i-1-j]+=r*tmp;
}
if(i&1)lpc[j]+=lpc[j]*r;
 
error*=1.-r*r;
 
}
 
done:
 
/* slightly damp the filter */
{
double g = .99;
double damp = g;
for(j=0;j<m;j++){
lpc[j]*=damp;
damp*=g;
}
}
 
for(j=0;j<m;j++)lpci[j]=(float)lpc[j];
 
/* we need the error value to know how big an impulse to hit the
filter with later */
 
return error;
}
 
void vorbis_lpc_predict(float *coeff,float *prime,int m,
float *data,long n){
 
/* in: coeff[0...m-1] LPC coefficients
prime[0...m-1] initial values (allocated size of n+m-1)
out: data[0...n-1] data samples */
 
long i,j,o,p;
float y;
float *work=alloca(sizeof(*work)*(m+n));
 
if(!prime)
for(i=0;i<m;i++)
work[i]=0.f;
else
for(i=0;i<m;i++)
work[i]=prime[i];
 
for(i=0;i<n;i++){
y=0;
o=i;
p=m;
for(j=0;j<m;j++)
y-=work[o++]*coeff[--p];
 
data[i]=work[o]=y;
}
}
/contrib/sdk/sources/libvorbis-1.3.7/lib/lpc.h
0,0 → 1,28
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: LPC low level routines
 
********************************************************************/
 
#ifndef _V_LPC_H_
#define _V_LPC_H_
 
#include "vorbis/codec.h"
 
/* simple linear scale LPC code */
extern float vorbis_lpc_from_data(float *data,float *lpc,int n,int m);
 
extern void vorbis_lpc_predict(float *coeff,float *prime,int m,
float *data,long n);
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/lsp.c
0,0 → 1,454
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: LSP (also called LSF) conversion routines
 
The LSP generation code is taken (with minimal modification and a
few bugfixes) from "On the Computation of the LSP Frequencies" by
Joseph Rothweiler (see http://www.rothweiler.us for contact info).
 
The paper is available at:
 
https://web.archive.org/web/20110810174000/http://home.myfairpoint.net/vzenxj75/myown1/joe/lsf/index.html
 
********************************************************************/
 
/* Note that the lpc-lsp conversion finds the roots of polynomial with
an iterative root polisher (CACM algorithm 283). It *is* possible
to confuse this algorithm into not converging; that should only
happen with absurdly closely spaced roots (very sharp peaks in the
LPC f response) which in turn should be impossible in our use of
the code. If this *does* happen anyway, it's a bug in the floor
finder; find the cause of the confusion (probably a single bin
spike or accidental near-float-limit resolution problems) and
correct it. */
 
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include "lsp.h"
#include "os.h"
#include "misc.h"
#include "lookup.h"
#include "scales.h"
 
/* three possible LSP to f curve functions; the exact computation
(float), a lookup based float implementation, and an integer
implementation. The float lookup is likely the optimal choice on
any machine with an FPU. The integer implementation is *not* fixed
point (due to the need for a large dynamic range and thus a
separately tracked exponent) and thus much more complex than the
relatively simple float implementations. It's mostly for future
work on a fully fixed point implementation for processors like the
ARM family. */
 
/* define either of these (preferably FLOAT_LOOKUP) to have faster
but less precise implementation. */
#undef FLOAT_LOOKUP
#undef INT_LOOKUP
 
#ifdef FLOAT_LOOKUP
#include "lookup.c" /* catch this in the build system; we #include for
compilers (like gcc) that can't inline across
modules */
 
/* side effect: changes *lsp to cosines of lsp */
void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m,
float amp,float ampoffset){
int i;
float wdel=M_PI/ln;
vorbis_fpu_control fpu;
 
vorbis_fpu_setround(&fpu);
for(i=0;i<m;i++)lsp[i]=vorbis_coslook(lsp[i]);
 
i=0;
while(i<n){
int k=map[i];
int qexp;
float p=.7071067812f;
float q=.7071067812f;
float w=vorbis_coslook(wdel*k);
float *ftmp=lsp;
int c=m>>1;
 
while(c--){
q*=ftmp[0]-w;
p*=ftmp[1]-w;
ftmp+=2;
}
 
if(m&1){
/* odd order filter; slightly assymetric */
/* the last coefficient */
q*=ftmp[0]-w;
q*=q;
p*=p*(1.f-w*w);
}else{
/* even order filter; still symmetric */
q*=q*(1.f+w);
p*=p*(1.f-w);
}
 
q=frexp(p+q,&qexp);
q=vorbis_fromdBlook(amp*
vorbis_invsqlook(q)*
vorbis_invsq2explook(qexp+m)-
ampoffset);
 
do{
curve[i++]*=q;
}while(map[i]==k);
}
vorbis_fpu_restore(fpu);
}
 
#else
 
#ifdef INT_LOOKUP
#include "lookup.c" /* catch this in the build system; we #include for
compilers (like gcc) that can't inline across
modules */
 
static const int MLOOP_1[64]={
0,10,11,11, 12,12,12,12, 13,13,13,13, 13,13,13,13,
14,14,14,14, 14,14,14,14, 14,14,14,14, 14,14,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,
};
 
static const int MLOOP_2[64]={
0,4,5,5, 6,6,6,6, 7,7,7,7, 7,7,7,7,
8,8,8,8, 8,8,8,8, 8,8,8,8, 8,8,8,8,
9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9,
9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9,
};
 
static const int MLOOP_3[8]={0,1,2,2,3,3,3,3};
 
 
/* side effect: changes *lsp to cosines of lsp */
void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m,
float amp,float ampoffset){
 
/* 0 <= m < 256 */
 
/* set up for using all int later */
int i;
int ampoffseti=rint(ampoffset*4096.f);
int ampi=rint(amp*16.f);
long *ilsp=alloca(m*sizeof(*ilsp));
for(i=0;i<m;i++)ilsp[i]=vorbis_coslook_i(lsp[i]/M_PI*65536.f+.5f);
 
i=0;
while(i<n){
int j,k=map[i];
unsigned long pi=46341; /* 2**-.5 in 0.16 */
unsigned long qi=46341;
int qexp=0,shift;
long wi=vorbis_coslook_i(k*65536/ln);
 
qi*=labs(ilsp[0]-wi);
pi*=labs(ilsp[1]-wi);
 
for(j=3;j<m;j+=2){
if(!(shift=MLOOP_1[(pi|qi)>>25]))
if(!(shift=MLOOP_2[(pi|qi)>>19]))
shift=MLOOP_3[(pi|qi)>>16];
qi=(qi>>shift)*labs(ilsp[j-1]-wi);
pi=(pi>>shift)*labs(ilsp[j]-wi);
qexp+=shift;
}
if(!(shift=MLOOP_1[(pi|qi)>>25]))
if(!(shift=MLOOP_2[(pi|qi)>>19]))
shift=MLOOP_3[(pi|qi)>>16];
 
/* pi,qi normalized collectively, both tracked using qexp */
 
if(m&1){
/* odd order filter; slightly assymetric */
/* the last coefficient */
qi=(qi>>shift)*labs(ilsp[j-1]-wi);
pi=(pi>>shift)<<14;
qexp+=shift;
 
if(!(shift=MLOOP_1[(pi|qi)>>25]))
if(!(shift=MLOOP_2[(pi|qi)>>19]))
shift=MLOOP_3[(pi|qi)>>16];
 
pi>>=shift;
qi>>=shift;
qexp+=shift-14*((m+1)>>1);
 
pi=((pi*pi)>>16);
qi=((qi*qi)>>16);
qexp=qexp*2+m;
 
pi*=(1<<14)-((wi*wi)>>14);
qi+=pi>>14;
 
}else{
/* even order filter; still symmetric */
 
/* p*=p(1-w), q*=q(1+w), let normalization drift because it isn't
worth tracking step by step */
 
pi>>=shift;
qi>>=shift;
qexp+=shift-7*m;
 
pi=((pi*pi)>>16);
qi=((qi*qi)>>16);
qexp=qexp*2+m;
 
pi*=(1<<14)-wi;
qi*=(1<<14)+wi;
qi=(qi+pi)>>14;
 
}
 
 
/* we've let the normalization drift because it wasn't important;
however, for the lookup, things must be normalized again. We
need at most one right shift or a number of left shifts */
 
if(qi&0xffff0000){ /* checks for 1.xxxxxxxxxxxxxxxx */
qi>>=1; qexp++;
}else
while(qi && !(qi&0x8000)){ /* checks for 0.0xxxxxxxxxxxxxxx or less*/
qi<<=1; qexp--;
}
 
amp=vorbis_fromdBlook_i(ampi* /* n.4 */
vorbis_invsqlook_i(qi,qexp)-
/* m.8, m+n<=8 */
ampoffseti); /* 8.12[0] */
 
curve[i]*=amp;
while(map[++i]==k)curve[i]*=amp;
}
}
 
#else
 
/* old, nonoptimized but simple version for any poor sap who needs to
figure out what the hell this code does, or wants the other
fraction of a dB precision */
 
/* side effect: changes *lsp to cosines of lsp */
void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m,
float amp,float ampoffset){
int i;
float wdel=M_PI/ln;
for(i=0;i<m;i++)lsp[i]=2.f*cos(lsp[i]);
 
i=0;
while(i<n){
int j,k=map[i];
float p=.5f;
float q=.5f;
float w=2.f*cos(wdel*k);
for(j=1;j<m;j+=2){
q *= w-lsp[j-1];
p *= w-lsp[j];
}
if(j==m){
/* odd order filter; slightly assymetric */
/* the last coefficient */
q*=w-lsp[j-1];
p*=p*(4.f-w*w);
q*=q;
}else{
/* even order filter; still symmetric */
p*=p*(2.f-w);
q*=q*(2.f+w);
}
 
q=fromdB(amp/sqrt(p+q)-ampoffset);
 
curve[i]*=q;
while(map[++i]==k)curve[i]*=q;
}
}
 
#endif
#endif
 
static void cheby(float *g, int ord) {
int i, j;
 
g[0] *= .5f;
for(i=2; i<= ord; i++) {
for(j=ord; j >= i; j--) {
g[j-2] -= g[j];
g[j] += g[j];
}
}
}
 
static int comp(const void *a,const void *b){
return (*(float *)a<*(float *)b)-(*(float *)a>*(float *)b);
}
 
/* Newton-Raphson-Maehly actually functioned as a decent root finder,
but there are root sets for which it gets into limit cycles
(exacerbated by zero suppression) and fails. We can't afford to
fail, even if the failure is 1 in 100,000,000, so we now use
Laguerre and later polish with Newton-Raphson (which can then
afford to fail) */
 
#define EPSILON 10e-7
static int Laguerre_With_Deflation(float *a,int ord,float *r){
int i,m;
double *defl=alloca(sizeof(*defl)*(ord+1));
for(i=0;i<=ord;i++)defl[i]=a[i];
 
for(m=ord;m>0;m--){
double new=0.f,delta;
 
/* iterate a root */
while(1){
double p=defl[m],pp=0.f,ppp=0.f,denom;
 
/* eval the polynomial and its first two derivatives */
for(i=m;i>0;i--){
ppp = new*ppp + pp;
pp = new*pp + p;
p = new*p + defl[i-1];
}
 
/* Laguerre's method */
denom=(m-1) * ((m-1)*pp*pp - m*p*ppp);
if(denom<0)
return(-1); /* complex root! The LPC generator handed us a bad filter */
 
if(pp>0){
denom = pp + sqrt(denom);
if(denom<EPSILON)denom=EPSILON;
}else{
denom = pp - sqrt(denom);
if(denom>-(EPSILON))denom=-(EPSILON);
}
 
delta = m*p/denom;
new -= delta;
 
if(delta<0.f)delta*=-1;
 
if(fabs(delta/new)<10e-12)break;
}
 
r[m-1]=new;
 
/* forward deflation */
 
for(i=m;i>0;i--)
defl[i-1]+=new*defl[i];
defl++;
 
}
return(0);
}
 
 
/* for spit-and-polish only */
static int Newton_Raphson(float *a,int ord,float *r){
int i, k, count=0;
double error=1.f;
double *root=alloca(ord*sizeof(*root));
 
for(i=0; i<ord;i++) root[i] = r[i];
 
while(error>1e-20){
error=0;
 
for(i=0; i<ord; i++) { /* Update each point. */
double pp=0.,delta;
double rooti=root[i];
double p=a[ord];
for(k=ord-1; k>= 0; k--) {
 
pp= pp* rooti + p;
p = p * rooti + a[k];
}
 
delta = p/pp;
root[i] -= delta;
error+= delta*delta;
}
 
if(count>40)return(-1);
 
count++;
}
 
/* Replaced the original bubble sort with a real sort. With your
help, we can eliminate the bubble sort in our lifetime. --Monty */
 
for(i=0; i<ord;i++) r[i] = root[i];
return(0);
}
 
 
/* Convert lpc coefficients to lsp coefficients */
int vorbis_lpc_to_lsp(float *lpc,float *lsp,int m){
int order2=(m+1)>>1;
int g1_order,g2_order;
float *g1=alloca(sizeof(*g1)*(order2+1));
float *g2=alloca(sizeof(*g2)*(order2+1));
float *g1r=alloca(sizeof(*g1r)*(order2+1));
float *g2r=alloca(sizeof(*g2r)*(order2+1));
int i;
 
/* even and odd are slightly different base cases */
g1_order=(m+1)>>1;
g2_order=(m) >>1;
 
/* Compute the lengths of the x polynomials. */
/* Compute the first half of K & R F1 & F2 polynomials. */
/* Compute half of the symmetric and antisymmetric polynomials. */
/* Remove the roots at +1 and -1. */
 
g1[g1_order] = 1.f;
for(i=1;i<=g1_order;i++) g1[g1_order-i] = lpc[i-1]+lpc[m-i];
g2[g2_order] = 1.f;
for(i=1;i<=g2_order;i++) g2[g2_order-i] = lpc[i-1]-lpc[m-i];
 
if(g1_order>g2_order){
for(i=2; i<=g2_order;i++) g2[g2_order-i] += g2[g2_order-i+2];
}else{
for(i=1; i<=g1_order;i++) g1[g1_order-i] -= g1[g1_order-i+1];
for(i=1; i<=g2_order;i++) g2[g2_order-i] += g2[g2_order-i+1];
}
 
/* Convert into polynomials in cos(alpha) */
cheby(g1,g1_order);
cheby(g2,g2_order);
 
/* Find the roots of the 2 even polynomials.*/
if(Laguerre_With_Deflation(g1,g1_order,g1r) ||
Laguerre_With_Deflation(g2,g2_order,g2r))
return(-1);
 
Newton_Raphson(g1,g1_order,g1r); /* if it fails, it leaves g1r alone */
Newton_Raphson(g2,g2_order,g2r); /* if it fails, it leaves g2r alone */
 
qsort(g1r,g1_order,sizeof(*g1r),comp);
qsort(g2r,g2_order,sizeof(*g2r),comp);
 
for(i=0;i<g1_order;i++)
lsp[i*2] = acos(g1r[i]);
 
for(i=0;i<g2_order;i++)
lsp[i*2+1] = acos(g2r[i]);
return(0);
}
/contrib/sdk/sources/libvorbis-1.3.7/lib/lsp.h
0,0 → 1,27
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: LSP (also called LSF) conversion routines
 
********************************************************************/
 
 
#ifndef _V_LSP_H_
#define _V_LSP_H_
 
extern int vorbis_lpc_to_lsp(float *lpc,float *lsp,int m);
 
extern void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,
float *lsp,int m,
float amp,float ampoffset);
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/mapping0.c
0,0 → 1,808
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: channel mapping 0 implementation
 
********************************************************************/
 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <ogg/ogg.h>
#include "vorbis/codec.h"
#include "codec_internal.h"
#include "codebook.h"
#include "window.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 */
 
static void mapping0_free_info(vorbis_info_mapping *i){
vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)i;
if(info){
memset(info,0,sizeof(*info));
_ogg_free(info);
}
}
 
static void mapping0_pack(vorbis_info *vi,vorbis_info_mapping *vm,
oggpack_buffer *opb){
int i;
vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)vm;
 
/* another 'we meant to do it this way' hack... up to beta 4, we
packed 4 binary zeros here to signify one submapping in use. We
now redefine that to mean four bitflags that indicate use of
deeper features; bit0:submappings, bit1:coupling,
bit2,3:reserved. This is backward compatable with all actual uses
of the beta code. */
 
if(info->submaps>1){
oggpack_write(opb,1,1);
oggpack_write(opb,info->submaps-1,4);
}else
oggpack_write(opb,0,1);
 
if(info->coupling_steps>0){
oggpack_write(opb,1,1);
oggpack_write(opb,info->coupling_steps-1,8);
 
for(i=0;i<info->coupling_steps;i++){
oggpack_write(opb,info->coupling_mag[i],ov_ilog(vi->channels-1));
oggpack_write(opb,info->coupling_ang[i],ov_ilog(vi->channels-1));
}
}else
oggpack_write(opb,0,1);
 
oggpack_write(opb,0,2); /* 2,3:reserved */
 
/* 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,0,8); /* time submap unused */
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,b;
vorbis_info_mapping0 *info=_ogg_calloc(1,sizeof(*info));
codec_setup_info *ci=vi->codec_setup;
if(vi->channels<=0)goto err_out;
 
b=oggpack_read(opb,1);
if(b<0)goto err_out;
if(b){
info->submaps=oggpack_read(opb,4)+1;
if(info->submaps<=0)goto err_out;
}else
info->submaps=1;
 
b=oggpack_read(opb,1);
if(b<0)goto err_out;
if(b){
info->coupling_steps=oggpack_read(opb,8)+1;
if(info->coupling_steps<=0)goto err_out;
for(i=0;i<info->coupling_steps;i++){
/* vi->channels > 0 is enforced in the caller */
int testM=info->coupling_mag[i]=
oggpack_read(opb,ov_ilog(vi->channels-1));
int testA=info->coupling_ang[i]=
oggpack_read(opb,ov_ilog(vi->channels-1));
 
if(testM<0 ||
testA<0 ||
testM==testA ||
testM>=vi->channels ||
testA>=vi->channels) goto err_out;
}
 
}
 
if(oggpack_read(opb,2)!=0)goto err_out; /* 2,3:reserved */
 
if(info->submaps>1){
for(i=0;i<vi->channels;i++){
info->chmuxlist[i]=oggpack_read(opb,4);
if(info->chmuxlist[i]>=info->submaps || info->chmuxlist[i]<0)goto err_out;
}
}
for(i=0;i<info->submaps;i++){
oggpack_read(opb,8); /* time submap unused */
info->floorsubmap[i]=oggpack_read(opb,8);
if(info->floorsubmap[i]>=ci->floors || info->floorsubmap[i]<0)goto err_out;
info->residuesubmap[i]=oggpack_read(opb,8);
if(info->residuesubmap[i]>=ci->residues || info->residuesubmap[i]<0)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"
 
#if 0
static long seq=0;
static ogg_int64_t total=0;
static float FLOOR1_fromdB_LOOKUP[256]={
1.0649863e-07F, 1.1341951e-07F, 1.2079015e-07F, 1.2863978e-07F,
1.3699951e-07F, 1.4590251e-07F, 1.5538408e-07F, 1.6548181e-07F,
1.7623575e-07F, 1.8768855e-07F, 1.9988561e-07F, 2.128753e-07F,
2.2670913e-07F, 2.4144197e-07F, 2.5713223e-07F, 2.7384213e-07F,
2.9163793e-07F, 3.1059021e-07F, 3.3077411e-07F, 3.5226968e-07F,
3.7516214e-07F, 3.9954229e-07F, 4.2550680e-07F, 4.5315863e-07F,
4.8260743e-07F, 5.1396998e-07F, 5.4737065e-07F, 5.8294187e-07F,
6.2082472e-07F, 6.6116941e-07F, 7.0413592e-07F, 7.4989464e-07F,
7.9862701e-07F, 8.5052630e-07F, 9.0579828e-07F, 9.6466216e-07F,
1.0273513e-06F, 1.0941144e-06F, 1.1652161e-06F, 1.2409384e-06F,
1.3215816e-06F, 1.4074654e-06F, 1.4989305e-06F, 1.5963394e-06F,
1.7000785e-06F, 1.8105592e-06F, 1.9282195e-06F, 2.0535261e-06F,
2.1869758e-06F, 2.3290978e-06F, 2.4804557e-06F, 2.6416497e-06F,
2.8133190e-06F, 2.9961443e-06F, 3.1908506e-06F, 3.3982101e-06F,
3.6190449e-06F, 3.8542308e-06F, 4.1047004e-06F, 4.3714470e-06F,
4.6555282e-06F, 4.9580707e-06F, 5.2802740e-06F, 5.6234160e-06F,
5.9888572e-06F, 6.3780469e-06F, 6.7925283e-06F, 7.2339451e-06F,
7.7040476e-06F, 8.2047000e-06F, 8.7378876e-06F, 9.3057248e-06F,
9.9104632e-06F, 1.0554501e-05F, 1.1240392e-05F, 1.1970856e-05F,
1.2748789e-05F, 1.3577278e-05F, 1.4459606e-05F, 1.5399272e-05F,
1.6400004e-05F, 1.7465768e-05F, 1.8600792e-05F, 1.9809576e-05F,
2.1096914e-05F, 2.2467911e-05F, 2.3928002e-05F, 2.5482978e-05F,
2.7139006e-05F, 2.8902651e-05F, 3.0780908e-05F, 3.2781225e-05F,
3.4911534e-05F, 3.7180282e-05F, 3.9596466e-05F, 4.2169667e-05F,
4.4910090e-05F, 4.7828601e-05F, 5.0936773e-05F, 5.4246931e-05F,
5.7772202e-05F, 6.1526565e-05F, 6.5524908e-05F, 6.9783085e-05F,
7.4317983e-05F, 7.9147585e-05F, 8.4291040e-05F, 8.9768747e-05F,
9.5602426e-05F, 0.00010181521F, 0.00010843174F, 0.00011547824F,
0.00012298267F, 0.00013097477F, 0.00013948625F, 0.00014855085F,
0.00015820453F, 0.00016848555F, 0.00017943469F, 0.00019109536F,
0.00020351382F, 0.00021673929F, 0.00023082423F, 0.00024582449F,
0.00026179955F, 0.00027881276F, 0.00029693158F, 0.00031622787F,
0.00033677814F, 0.00035866388F, 0.00038197188F, 0.00040679456F,
0.00043323036F, 0.00046138411F, 0.00049136745F, 0.00052329927F,
0.00055730621F, 0.00059352311F, 0.00063209358F, 0.00067317058F,
0.00071691700F, 0.00076350630F, 0.00081312324F, 0.00086596457F,
0.00092223983F, 0.00098217216F, 0.0010459992F, 0.0011139742F,
0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F,
0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F,
0.0019632195F, 0.0020908006F, 0.0022266726F, 0.0023713743F,
0.0025254795F, 0.0026895994F, 0.0028643847F, 0.0030505286F,
0.0032487691F, 0.0034598925F, 0.0036847358F, 0.0039241906F,
0.0041792066F, 0.0044507950F, 0.0047400328F, 0.0050480668F,
0.0053761186F, 0.0057254891F, 0.0060975636F, 0.0064938176F,
0.0069158225F, 0.0073652516F, 0.0078438871F, 0.0083536271F,
0.0088964928F, 0.009474637F, 0.010090352F, 0.010746080F,
0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F,
0.014722068F, 0.015678791F, 0.016697687F, 0.017782797F,
0.018938423F, 0.020169149F, 0.021479854F, 0.022875735F,
0.024362330F, 0.025945531F, 0.027631618F, 0.029427276F,
0.031339626F, 0.033376252F, 0.035545228F, 0.037855157F,
0.040315199F, 0.042935108F, 0.045725273F, 0.048696758F,
0.051861348F, 0.055231591F, 0.058820850F, 0.062643361F,
0.066714279F, 0.071049749F, 0.075666962F, 0.080584227F,
0.085821044F, 0.091398179F, 0.097337747F, 0.10366330F,
0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F,
0.14201813F, 0.15124727F, 0.16107617F, 0.17154380F,
0.18269168F, 0.19456402F, 0.20720788F, 0.22067342F,
0.23501402F, 0.25028656F, 0.26655159F, 0.28387361F,
0.30232132F, 0.32196786F, 0.34289114F, 0.36517414F,
0.38890521F, 0.41417847F, 0.44109412F, 0.46975890F,
0.50028648F, 0.53279791F, 0.56742212F, 0.60429640F,
0.64356699F, 0.68538959F, 0.72993007F, 0.77736504F,
0.82788260F, 0.88168307F, 0.9389798F, 1.F,
};
 
#endif
 
 
static int mapping0_forward(vorbis_block *vb){
vorbis_dsp_state *vd=vb->vd;
vorbis_info *vi=vd->vi;
codec_setup_info *ci=vi->codec_setup;
private_state *b=vb->vd->backend_state;
vorbis_block_internal *vbi=(vorbis_block_internal *)vb->internal;
int n=vb->pcmend;
int i,j,k;
 
int *nonzero = alloca(sizeof(*nonzero)*vi->channels);
float **gmdct = _vorbis_block_alloc(vb,vi->channels*sizeof(*gmdct));
int **iwork = _vorbis_block_alloc(vb,vi->channels*sizeof(*iwork));
int ***floor_posts = _vorbis_block_alloc(vb,vi->channels*sizeof(*floor_posts));
 
float global_ampmax=vbi->ampmax;
float *local_ampmax=alloca(sizeof(*local_ampmax)*vi->channels);
int blocktype=vbi->blocktype;
 
int modenumber=vb->W;
vorbis_info_mapping0 *info=ci->map_param[modenumber];
vorbis_look_psy *psy_look=b->psy+blocktype+(vb->W?2:0);
 
vb->mode=modenumber;
 
for(i=0;i<vi->channels;i++){
float scale=4.f/n;
float scale_dB;
 
float *pcm =vb->pcm[i];
float *logfft =pcm;
 
iwork[i]=_vorbis_block_alloc(vb,n/2*sizeof(**iwork));
gmdct[i]=_vorbis_block_alloc(vb,n/2*sizeof(**gmdct));
 
scale_dB=todB(&scale) + .345; /* + .345 is a hack; the original
todB estimation used on IEEE 754
compliant machines had a bug that
returned dB values about a third
of a decibel too high. The bug
was harmless because tunings
implicitly took that into
account. However, fixing the bug
in the estimator requires
changing all the tunings as well.
For now, it's easier to sync
things back up here, and
recalibrate the tunings in the
next major model upgrade. */
 
#if 0
if(vi->channels==2){
if(i==0)
_analysis_output("pcmL",seq,pcm,n,0,0,total-n/2);
else
_analysis_output("pcmR",seq,pcm,n,0,0,total-n/2);
}else{
_analysis_output("pcm",seq,pcm,n,0,0,total-n/2);
}
#endif
 
/* window the PCM data */
_vorbis_apply_window(pcm,b->window,ci->blocksizes,vb->lW,vb->W,vb->nW);
 
#if 0
if(vi->channels==2){
if(i==0)
_analysis_output("windowedL",seq,pcm,n,0,0,total-n/2);
else
_analysis_output("windowedR",seq,pcm,n,0,0,total-n/2);
}else{
_analysis_output("windowed",seq,pcm,n,0,0,total-n/2);
}
#endif
 
/* transform the PCM data */
/* only MDCT right now.... */
mdct_forward(b->transform[vb->W][0],pcm,gmdct[i]);
 
/* FFT yields more accurate tonal estimation (not phase sensitive) */
drft_forward(&b->fft_look[vb->W],pcm);
logfft[0]=scale_dB+todB(pcm) + .345; /* + .345 is a hack; the
original todB estimation used on
IEEE 754 compliant machines had a
bug that returned dB values about
a third of a decibel too high.
The bug was harmless because
tunings implicitly took that into
account. However, fixing the bug
in the estimator requires
changing all the tunings as well.
For now, it's easier to sync
things back up here, and
recalibrate the tunings in the
next major model upgrade. */
local_ampmax[i]=logfft[0];
for(j=1;j<n-1;j+=2){
float temp=pcm[j]*pcm[j]+pcm[j+1]*pcm[j+1];
temp=logfft[(j+1)>>1]=scale_dB+.5f*todB(&temp) + .345; /* +
.345 is a hack; the original todB
estimation used on IEEE 754
compliant machines had a bug that
returned dB values about a third
of a decibel too high. The bug
was harmless because tunings
implicitly took that into
account. However, fixing the bug
in the estimator requires
changing all the tunings as well.
For now, it's easier to sync
things back up here, and
recalibrate the tunings in the
next major model upgrade. */
if(temp>local_ampmax[i])local_ampmax[i]=temp;
}
 
if(local_ampmax[i]>0.f)local_ampmax[i]=0.f;
if(local_ampmax[i]>global_ampmax)global_ampmax=local_ampmax[i];
 
#if 0
if(vi->channels==2){
if(i==0){
_analysis_output("fftL",seq,logfft,n/2,1,0,0);
}else{
_analysis_output("fftR",seq,logfft,n/2,1,0,0);
}
}else{
_analysis_output("fft",seq,logfft,n/2,1,0,0);
}
#endif
 
}
 
{
float *noise = _vorbis_block_alloc(vb,n/2*sizeof(*noise));
float *tone = _vorbis_block_alloc(vb,n/2*sizeof(*tone));
 
for(i=0;i<vi->channels;i++){
/* the encoder setup assumes that all the modes used by any
specific bitrate tweaking use the same floor */
 
int submap=info->chmuxlist[i];
 
/* the following makes things clearer to *me* anyway */
float *mdct =gmdct[i];
float *logfft =vb->pcm[i];
 
float *logmdct =logfft+n/2;
float *logmask =logfft;
 
vb->mode=modenumber;
 
floor_posts[i]=_vorbis_block_alloc(vb,PACKETBLOBS*sizeof(**floor_posts));
memset(floor_posts[i],0,sizeof(**floor_posts)*PACKETBLOBS);
 
for(j=0;j<n/2;j++)
logmdct[j]=todB(mdct+j) + .345; /* + .345 is a hack; the original
todB estimation used on IEEE 754
compliant machines had a bug that
returned dB values about a third
of a decibel too high. The bug
was harmless because tunings
implicitly took that into
account. However, fixing the bug
in the estimator requires
changing all the tunings as well.
For now, it's easier to sync
things back up here, and
recalibrate the tunings in the
next major model upgrade. */
 
#if 0
if(vi->channels==2){
if(i==0)
_analysis_output("mdctL",seq,logmdct,n/2,1,0,0);
else
_analysis_output("mdctR",seq,logmdct,n/2,1,0,0);
}else{
_analysis_output("mdct",seq,logmdct,n/2,1,0,0);
}
#endif
 
/* first step; noise masking. Not only does 'noise masking'
give us curves from which we can decide how much resolution
to give noise parts of the spectrum, it also implicitly hands
us a tonality estimate (the larger the value in the
'noise_depth' vector, the more tonal that area is) */
 
_vp_noisemask(psy_look,
logmdct,
noise); /* noise does not have by-frequency offset
bias applied yet */
#if 0
if(vi->channels==2){
if(i==0)
_analysis_output("noiseL",seq,noise,n/2,1,0,0);
else
_analysis_output("noiseR",seq,noise,n/2,1,0,0);
}else{
_analysis_output("noise",seq,noise,n/2,1,0,0);
}
#endif
 
/* second step: 'all the other crap'; all the stuff that isn't
computed/fit for bitrate management goes in the second psy
vector. This includes tone masking, peak limiting and ATH */
 
_vp_tonemask(psy_look,
logfft,
tone,
global_ampmax,
local_ampmax[i]);
 
#if 0
if(vi->channels==2){
if(i==0)
_analysis_output("toneL",seq,tone,n/2,1,0,0);
else
_analysis_output("toneR",seq,tone,n/2,1,0,0);
}else{
_analysis_output("tone",seq,tone,n/2,1,0,0);
}
#endif
 
/* third step; we offset the noise vectors, overlay tone
masking. We then do a floor1-specific line fit. If we're
performing bitrate management, the line fit is performed
multiple times for up/down tweakage on demand. */
 
#if 0
{
float aotuv[psy_look->n];
#endif
 
_vp_offset_and_mix(psy_look,
noise,
tone,
1,
logmask,
mdct,
logmdct);
 
#if 0
if(vi->channels==2){
if(i==0)
_analysis_output("aotuvM1_L",seq,aotuv,psy_look->n,1,1,0);
else
_analysis_output("aotuvM1_R",seq,aotuv,psy_look->n,1,1,0);
}else{
_analysis_output("aotuvM1",seq,aotuv,psy_look->n,1,1,0);
}
}
#endif
 
 
#if 0
if(vi->channels==2){
if(i==0)
_analysis_output("mask1L",seq,logmask,n/2,1,0,0);
else
_analysis_output("mask1R",seq,logmask,n/2,1,0,0);
}else{
_analysis_output("mask1",seq,logmask,n/2,1,0,0);
}
#endif
 
/* this algorithm is hardwired to floor 1 for now; abort out if
we're *not* floor1. This won't happen unless someone has
broken the encode setup lib. Guard it anyway. */
if(ci->floor_type[info->floorsubmap[submap]]!=1)return(-1);
 
floor_posts[i][PACKETBLOBS/2]=
floor1_fit(vb,b->flr[info->floorsubmap[submap]],
logmdct,
logmask);
 
/* are we managing bitrate? If so, perform two more fits for
later rate tweaking (fits represent hi/lo) */
if(vorbis_bitrate_managed(vb) && floor_posts[i][PACKETBLOBS/2]){
/* higher rate by way of lower noise curve */
 
_vp_offset_and_mix(psy_look,
noise,
tone,
2,
logmask,
mdct,
logmdct);
 
#if 0
if(vi->channels==2){
if(i==0)
_analysis_output("mask2L",seq,logmask,n/2,1,0,0);
else
_analysis_output("mask2R",seq,logmask,n/2,1,0,0);
}else{
_analysis_output("mask2",seq,logmask,n/2,1,0,0);
}
#endif
 
floor_posts[i][PACKETBLOBS-1]=
floor1_fit(vb,b->flr[info->floorsubmap[submap]],
logmdct,
logmask);
 
/* lower rate by way of higher noise curve */
_vp_offset_and_mix(psy_look,
noise,
tone,
0,
logmask,
mdct,
logmdct);
 
#if 0
if(vi->channels==2){
if(i==0)
_analysis_output("mask0L",seq,logmask,n/2,1,0,0);
else
_analysis_output("mask0R",seq,logmask,n/2,1,0,0);
}else{
_analysis_output("mask0",seq,logmask,n/2,1,0,0);
}
#endif
 
floor_posts[i][0]=
floor1_fit(vb,b->flr[info->floorsubmap[submap]],
logmdct,
logmask);
 
/* we also interpolate a range of intermediate curves for
intermediate rates */
for(k=1;k<PACKETBLOBS/2;k++)
floor_posts[i][k]=
floor1_interpolate_fit(vb,b->flr[info->floorsubmap[submap]],
floor_posts[i][0],
floor_posts[i][PACKETBLOBS/2],
k*65536/(PACKETBLOBS/2));
for(k=PACKETBLOBS/2+1;k<PACKETBLOBS-1;k++)
floor_posts[i][k]=
floor1_interpolate_fit(vb,b->flr[info->floorsubmap[submap]],
floor_posts[i][PACKETBLOBS/2],
floor_posts[i][PACKETBLOBS-1],
(k-PACKETBLOBS/2)*65536/(PACKETBLOBS/2));
}
}
}
vbi->ampmax=global_ampmax;
 
/*
the next phases are performed once for vbr-only and PACKETBLOB
times for bitrate managed modes.
 
1) encode actual mode being used
2) encode the floor for each channel, compute coded mask curve/res
3) normalize and couple.
4) encode residue
5) save packet bytes to the packetblob vector
 
*/
 
/* iterate over the many masking curve fits we've created */
 
{
int **couple_bundle=alloca(sizeof(*couple_bundle)*vi->channels);
int *zerobundle=alloca(sizeof(*zerobundle)*vi->channels);
 
for(k=(vorbis_bitrate_managed(vb)?0:PACKETBLOBS/2);
k<=(vorbis_bitrate_managed(vb)?PACKETBLOBS-1:PACKETBLOBS/2);
k++){
oggpack_buffer *opb=vbi->packetblob[k];
 
/* start out our new packet blob with packet type and mode */
/* Encode the packet type */
oggpack_write(opb,0,1);
/* Encode the modenumber */
/* Encode frame mode, pre,post windowsize, then dispatch */
oggpack_write(opb,modenumber,b->modebits);
if(vb->W){
oggpack_write(opb,vb->lW,1);
oggpack_write(opb,vb->nW,1);
}
 
/* encode floor, compute masking curve, sep out residue */
for(i=0;i<vi->channels;i++){
int submap=info->chmuxlist[i];
int *ilogmask=iwork[i];
 
nonzero[i]=floor1_encode(opb,vb,b->flr[info->floorsubmap[submap]],
floor_posts[i][k],
ilogmask);
#if 0
{
char buf[80];
sprintf(buf,"maskI%c%d",i?'R':'L',k);
float work[n/2];
for(j=0;j<n/2;j++)
work[j]=FLOOR1_fromdB_LOOKUP[iwork[i][j]];
_analysis_output(buf,seq,work,n/2,1,1,0);
}
#endif
}
 
/* our iteration is now based on masking curve, not prequant and
coupling. Only one prequant/coupling step */
 
/* quantize/couple */
/* incomplete implementation that assumes the tree is all depth
one, or no tree at all */
_vp_couple_quantize_normalize(k,
&ci->psy_g_param,
psy_look,
info,
gmdct,
iwork,
nonzero,
ci->psy_g_param.sliding_lowpass[vb->W][k],
vi->channels);
 
#if 0
for(i=0;i<vi->channels;i++){
char buf[80];
sprintf(buf,"res%c%d",i?'R':'L',k);
float work[n/2];
for(j=0;j<n/2;j++)
work[j]=iwork[i][j];
_analysis_output(buf,seq,work,n/2,1,0,0);
}
#endif
 
/* classify and encode by submap */
for(i=0;i<info->submaps;i++){
int ch_in_bundle=0;
long **classifications;
int resnum=info->residuesubmap[i];
 
for(j=0;j<vi->channels;j++){
if(info->chmuxlist[j]==i){
zerobundle[ch_in_bundle]=0;
if(nonzero[j])zerobundle[ch_in_bundle]=1;
couple_bundle[ch_in_bundle++]=iwork[j];
}
}
 
classifications=_residue_P[ci->residue_type[resnum]]->
class(vb,b->residue[resnum],couple_bundle,zerobundle,ch_in_bundle);
 
ch_in_bundle=0;
for(j=0;j<vi->channels;j++)
if(info->chmuxlist[j]==i)
couple_bundle[ch_in_bundle++]=iwork[j];
 
_residue_P[ci->residue_type[resnum]]->
forward(opb,vb,b->residue[resnum],
couple_bundle,zerobundle,ch_in_bundle,classifications,i);
}
 
/* ok, done encoding. Next protopacket. */
}
 
}
 
#if 0
seq++;
total+=ci->blocksizes[vb->W]/4+ci->blocksizes[vb->nW]/4;
#endif
return(0);
}
 
static int mapping0_inverse(vorbis_block *vb,vorbis_info_mapping *l){
vorbis_dsp_state *vd=vb->vd;
vorbis_info *vi=vd->vi;
codec_setup_info *ci=vi->codec_setup;
private_state *b=vd->backend_state;
vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)l;
 
int i,j;
long n=vb->pcmend=ci->blocksizes[vb->W];
 
float **pcmbundle=alloca(sizeof(*pcmbundle)*vi->channels);
int *zerobundle=alloca(sizeof(*zerobundle)*vi->channels);
 
int *nonzero =alloca(sizeof(*nonzero)*vi->channels);
void **floormemo=alloca(sizeof(*floormemo)*vi->channels);
 
/* recover the spectral envelope; store it in the PCM vector for now */
for(i=0;i<vi->channels;i++){
int submap=info->chmuxlist[i];
floormemo[i]=_floor_P[ci->floor_type[info->floorsubmap[submap]]]->
inverse1(vb,b->flr[info->floorsubmap[submap]]);
if(floormemo[i])
nonzero[i]=1;
else
nonzero[i]=0;
memset(vb->pcm[i],0,sizeof(*vb->pcm[i])*n/2);
}
 
/* channel coupling can 'dirty' the nonzero listing */
for(i=0;i<info->coupling_steps;i++){
if(nonzero[info->coupling_mag[i]] ||
nonzero[info->coupling_ang[i]]){
nonzero[info->coupling_mag[i]]=1;
nonzero[info->coupling_ang[i]]=1;
}
}
 
/* recover the residue into our working vectors */
for(i=0;i<info->submaps;i++){
int ch_in_bundle=0;
for(j=0;j<vi->channels;j++){
if(info->chmuxlist[j]==i){
if(nonzero[j])
zerobundle[ch_in_bundle]=1;
else
zerobundle[ch_in_bundle]=0;
pcmbundle[ch_in_bundle++]=vb->pcm[j];
}
}
 
_residue_P[ci->residue_type[info->residuesubmap[i]]]->
inverse(vb,b->residue[info->residuesubmap[i]],
pcmbundle,zerobundle,ch_in_bundle);
}
 
/* channel coupling */
for(i=info->coupling_steps-1;i>=0;i--){
float *pcmM=vb->pcm[info->coupling_mag[i]];
float *pcmA=vb->pcm[info->coupling_ang[i]];
 
for(j=0;j<n/2;j++){
float mag=pcmM[j];
float ang=pcmA[j];
 
if(mag>0)
if(ang>0){
pcmM[j]=mag;
pcmA[j]=mag-ang;
}else{
pcmA[j]=mag;
pcmM[j]=mag+ang;
}
else
if(ang>0){
pcmM[j]=mag;
pcmA[j]=mag+ang;
}else{
pcmA[j]=mag;
pcmM[j]=mag-ang;
}
}
}
 
/* compute and apply spectral envelope */
for(i=0;i<vi->channels;i++){
float *pcm=vb->pcm[i];
int submap=info->chmuxlist[i];
_floor_P[ci->floor_type[info->floorsubmap[submap]]]->
inverse2(vb,b->flr[info->floorsubmap[submap]],
floormemo[i],pcm);
}
 
/* 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_backward(b->transform[vb->W][0],pcm,pcm);
}
 
/* all done! */
return(0);
}
 
/* export hooks */
const vorbis_func_mapping mapping0_exportbundle={
&mapping0_pack,
&mapping0_unpack,
&mapping0_free_info,
&mapping0_forward,
&mapping0_inverse
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/masking.h
0,0 → 1,784
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: masking curve data for psychoacoustics
 
********************************************************************/
 
#ifndef _V_MASKING_H_
#define _V_MASKING_H_
 
/* more detailed ATH; the bass if flat to save stressing the floor
overly for only a bin or two of savings. */
 
#define MAX_ATH 88
static const float ATH[]={
/*15*/ -51, -52, -53, -54, -55, -56, -57, -58,
/*31*/ -59, -60, -61, -62, -63, -64, -65, -66,
/*63*/ -67, -68, -69, -70, -71, -72, -73, -74,
/*125*/ -75, -76, -77, -78, -80, -81, -82, -83,
/*250*/ -84, -85, -86, -87, -88, -88, -89, -89,
/*500*/ -90, -91, -91, -92, -93, -94, -95, -96,
/*1k*/ -96, -97, -98, -98, -99, -99,-100,-100,
/*2k*/ -101,-102,-103,-104,-106,-107,-107,-107,
/*4k*/ -107,-105,-103,-102,-101, -99, -98, -96,
/*8k*/ -95, -95, -96, -97, -96, -95, -93, -90,
/*16k*/ -80, -70, -50, -40, -30, -30, -30, -30
};
 
/* The tone masking curves from Ehmer's and Fielder's papers have been
replaced by an empirically collected data set. The previously
published values were, far too often, simply on crack. */
 
#define EHMER_OFFSET 16
#define EHMER_MAX 56
 
/* masking tones from -50 to 0dB, 62.5 through 16kHz at half octaves
test tones from -2 octaves to +5 octaves sampled at eighth octaves */
/* (Vorbis 0dB, the loudest possible tone, is assumed to be ~100dB SPL
for collection of these curves) */
 
static const float tonemasks[P_BANDS][6][EHMER_MAX]={
/* 62.5 Hz */
{{ -60, -60, -60, -60, -60, -60, -60, -60,
-60, -60, -60, -60, -62, -62, -65, -73,
-69, -68, -68, -67, -70, -70, -72, -74,
-75, -79, -79, -80, -83, -88, -93, -100,
-110, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -48, -48, -48, -48, -48, -48, -48, -48,
-48, -48, -48, -48, -48, -53, -61, -66,
-66, -68, -67, -70, -76, -76, -72, -73,
-75, -76, -78, -79, -83, -88, -93, -100,
-110, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -37, -37, -37, -37, -37, -37, -37, -37,
-38, -40, -42, -46, -48, -53, -55, -62,
-65, -58, -56, -56, -61, -60, -65, -67,
-69, -71, -77, -77, -78, -80, -82, -84,
-88, -93, -98, -106, -112, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -25, -25, -25, -25, -25, -25, -25, -25,
-25, -26, -27, -29, -32, -38, -48, -52,
-52, -50, -48, -48, -51, -52, -54, -60,
-67, -67, -66, -68, -69, -73, -73, -76,
-80, -81, -81, -85, -85, -86, -88, -93,
-100, -110, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -16, -16, -16, -16, -16, -16, -16, -16,
-17, -19, -20, -22, -26, -28, -31, -40,
-47, -39, -39, -40, -42, -43, -47, -51,
-57, -52, -55, -55, -60, -58, -62, -63,
-70, -67, -69, -72, -73, -77, -80, -82,
-83, -87, -90, -94, -98, -104, -115, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -8, -8, -8, -8, -8, -8, -8, -8,
-8, -8, -10, -11, -15, -19, -25, -30,
-34, -31, -30, -31, -29, -32, -35, -42,
-48, -42, -44, -46, -50, -50, -51, -52,
-59, -54, -55, -55, -58, -62, -63, -66,
-72, -73, -76, -75, -78, -80, -80, -81,
-84, -88, -90, -94, -98, -101, -106, -110}},
/* 88Hz */
{{ -66, -66, -66, -66, -66, -66, -66, -66,
-66, -66, -66, -66, -66, -67, -67, -67,
-76, -72, -71, -74, -76, -76, -75, -78,
-79, -79, -81, -83, -86, -89, -93, -97,
-100, -105, -110, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -47, -47, -47, -47, -47, -47, -47, -47,
-47, -47, -47, -48, -51, -55, -59, -66,
-66, -66, -67, -66, -68, -69, -70, -74,
-79, -77, -77, -78, -80, -81, -82, -84,
-86, -88, -91, -95, -100, -108, -116, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -36, -36, -36, -36, -36, -36, -36, -36,
-36, -37, -37, -41, -44, -48, -51, -58,
-62, -60, -57, -59, -59, -60, -63, -65,
-72, -71, -70, -72, -74, -77, -76, -78,
-81, -81, -80, -83, -86, -91, -96, -100,
-105, -110, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -28, -28, -28, -28, -28, -28, -28, -28,
-28, -30, -32, -32, -33, -35, -41, -49,
-50, -49, -47, -48, -48, -52, -51, -57,
-65, -61, -59, -61, -64, -69, -70, -74,
-77, -77, -78, -81, -84, -85, -87, -90,
-92, -96, -100, -107, -112, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -19, -19, -19, -19, -19, -19, -19, -19,
-20, -21, -23, -27, -30, -35, -36, -41,
-46, -44, -42, -40, -41, -41, -43, -48,
-55, -53, -52, -53, -56, -59, -58, -60,
-67, -66, -69, -71, -72, -75, -79, -81,
-84, -87, -90, -93, -97, -101, -107, -114,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -9, -9, -9, -9, -9, -9, -9, -9,
-11, -12, -12, -15, -16, -20, -23, -30,
-37, -34, -33, -34, -31, -32, -32, -38,
-47, -44, -41, -40, -47, -49, -46, -46,
-58, -50, -50, -54, -58, -62, -64, -67,
-67, -70, -72, -76, -79, -83, -87, -91,
-96, -100, -104, -110, -999, -999, -999, -999}},
/* 125 Hz */
{{ -62, -62, -62, -62, -62, -62, -62, -62,
-62, -62, -63, -64, -66, -67, -66, -68,
-75, -72, -76, -75, -76, -78, -79, -82,
-84, -85, -90, -94, -101, -110, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -59, -59, -59, -59, -59, -59, -59, -59,
-59, -59, -59, -60, -60, -61, -63, -66,
-71, -68, -70, -70, -71, -72, -72, -75,
-81, -78, -79, -82, -83, -86, -90, -97,
-103, -113, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -53, -53, -53, -53, -53, -53, -53, -53,
-53, -54, -55, -57, -56, -57, -55, -61,
-65, -60, -60, -62, -63, -63, -66, -68,
-74, -73, -75, -75, -78, -80, -80, -82,
-85, -90, -96, -101, -108, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -46, -46, -46, -46, -46, -46, -46, -46,
-46, -46, -47, -47, -47, -47, -48, -51,
-57, -51, -49, -50, -51, -53, -54, -59,
-66, -60, -62, -67, -67, -70, -72, -75,
-76, -78, -81, -85, -88, -94, -97, -104,
-112, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -36, -36, -36, -36, -36, -36, -36, -36,
-39, -41, -42, -42, -39, -38, -41, -43,
-52, -44, -40, -39, -37, -37, -40, -47,
-54, -50, -48, -50, -55, -61, -59, -62,
-66, -66, -66, -69, -69, -73, -74, -74,
-75, -77, -79, -82, -87, -91, -95, -100,
-108, -115, -999, -999, -999, -999, -999, -999},
{ -28, -26, -24, -22, -20, -20, -23, -29,
-30, -31, -28, -27, -28, -28, -28, -35,
-40, -33, -32, -29, -30, -30, -30, -37,
-45, -41, -37, -38, -45, -47, -47, -48,
-53, -49, -48, -50, -49, -49, -51, -52,
-58, -56, -57, -56, -60, -61, -62, -70,
-72, -74, -78, -83, -88, -93, -100, -106}},
/* 177 Hz */
{{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -110, -105, -100, -95, -91, -87, -83,
-80, -78, -76, -78, -78, -81, -83, -85,
-86, -85, -86, -87, -90, -97, -107, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -110, -105, -100, -95, -90,
-85, -81, -77, -73, -70, -67, -67, -68,
-75, -73, -70, -69, -70, -72, -75, -79,
-84, -83, -84, -86, -88, -89, -89, -93,
-98, -105, -112, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-105, -100, -95, -90, -85, -80, -76, -71,
-68, -68, -65, -63, -63, -62, -62, -64,
-65, -64, -61, -62, -63, -64, -66, -68,
-73, -73, -74, -75, -76, -81, -83, -85,
-88, -89, -92, -95, -100, -108, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -80, -75, -71, -68, -65, -63, -62, -61,
-61, -61, -61, -59, -56, -57, -53, -50,
-58, -52, -50, -50, -52, -53, -54, -58,
-67, -63, -67, -68, -72, -75, -78, -80,
-81, -81, -82, -85, -89, -90, -93, -97,
-101, -107, -114, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{ -65, -61, -59, -57, -56, -55, -55, -56,
-56, -57, -55, -53, -52, -47, -44, -44,
-50, -44, -41, -39, -39, -42, -40, -46,
-51, -49, -50, -53, -54, -63, -60, -61,
-62, -66, -66, -66, -70, -73, -74, -75,
-76, -75, -79, -85, -89, -91, -96, -102,
-110, -999, -999, -999, -999, -999, -999, -999},
{ -52, -50, -49, -49, -48, -48, -48, -49,
-50, -50, -49, -46, -43, -39, -35, -33,
-38, -36, -32, -29, -32, -32, -32, -35,
-44, -39, -38, -38, -46, -50, -45, -46,
-53, -50, -50, -50, -54, -54, -53, -53,
-56, -57, -59, -66, -70, -72, -74, -79,
-83, -85, -90, -97, -114, -999, -999, -999}},
/* 250 Hz */
{{-999, -999, -999, -999, -999, -999, -110, -105,
-100, -95, -90, -86, -80, -75, -75, -79,
-80, -79, -80, -81, -82, -88, -95, -103,
-110, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -108, -103, -98, -93,
-88, -83, -79, -78, -75, -71, -67, -68,
-73, -73, -72, -73, -75, -77, -80, -82,
-88, -93, -100, -107, -114, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -110, -105, -101, -96, -90,
-86, -81, -77, -73, -69, -66, -61, -62,
-66, -64, -62, -65, -66, -70, -72, -76,
-81, -80, -84, -90, -95, -102, -110, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -107, -103, -97, -92, -88,
-83, -79, -74, -70, -66, -59, -53, -58,
-62, -55, -54, -54, -54, -58, -61, -62,
-72, -70, -72, -75, -78, -80, -81, -80,
-83, -83, -88, -93, -100, -107, -115, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -105, -100, -95, -90, -85,
-80, -75, -70, -66, -62, -56, -48, -44,
-48, -46, -46, -43, -46, -48, -48, -51,
-58, -58, -59, -60, -62, -62, -61, -61,
-65, -64, -65, -68, -70, -74, -75, -78,
-81, -86, -95, -110, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -105, -100, -95, -90, -85, -80,
-75, -70, -65, -61, -55, -49, -39, -33,
-40, -35, -32, -38, -40, -33, -35, -37,
-46, -41, -45, -44, -46, -42, -45, -46,
-52, -50, -50, -50, -54, -54, -55, -57,
-62, -64, -66, -68, -70, -76, -81, -90,
-100, -110, -999, -999, -999, -999, -999, -999}},
/* 354 hz */
{{-999, -999, -999, -999, -999, -999, -999, -999,
-105, -98, -90, -85, -82, -83, -80, -78,
-84, -79, -80, -83, -87, -89, -91, -93,
-99, -106, -117, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-105, -98, -90, -85, -80, -75, -70, -68,
-74, -72, -74, -77, -80, -82, -85, -87,
-92, -89, -91, -95, -100, -106, -112, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-105, -98, -90, -83, -75, -71, -63, -64,
-67, -62, -64, -67, -70, -73, -77, -81,
-84, -83, -85, -89, -90, -93, -98, -104,
-109, -114, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-103, -96, -88, -81, -75, -68, -58, -54,
-56, -54, -56, -56, -58, -60, -63, -66,
-74, -69, -72, -72, -75, -74, -77, -81,
-81, -82, -84, -87, -93, -96, -99, -104,
-110, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -108, -102, -96,
-91, -85, -80, -74, -68, -60, -51, -46,
-48, -46, -43, -45, -47, -47, -49, -48,
-56, -53, -55, -58, -57, -63, -58, -60,
-66, -64, -67, -70, -70, -74, -77, -84,
-86, -89, -91, -93, -94, -101, -109, -118,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -108, -103, -98, -93, -88,
-83, -78, -73, -68, -60, -53, -44, -35,
-38, -38, -34, -34, -36, -40, -41, -44,
-51, -45, -46, -47, -46, -54, -50, -49,
-50, -50, -50, -51, -54, -57, -58, -60,
-66, -66, -66, -64, -65, -68, -77, -82,
-87, -95, -110, -999, -999, -999, -999, -999}},
/* 500 Hz */
{{-999, -999, -999, -999, -999, -999, -999, -999,
-107, -102, -97, -92, -87, -83, -78, -75,
-82, -79, -83, -85, -89, -92, -95, -98,
-101, -105, -109, -113, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -106,
-100, -95, -90, -86, -81, -78, -74, -69,
-74, -74, -76, -79, -83, -84, -86, -89,
-92, -97, -93, -100, -103, -107, -110, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -106, -100,
-95, -90, -87, -83, -80, -75, -69, -60,
-66, -66, -68, -70, -74, -78, -79, -81,
-81, -83, -84, -87, -93, -96, -99, -103,
-107, -110, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -108, -103, -98,
-93, -89, -85, -82, -78, -71, -62, -55,
-58, -58, -54, -54, -55, -59, -61, -62,
-70, -66, -66, -67, -70, -72, -75, -78,
-84, -84, -84, -88, -91, -90, -95, -98,
-102, -103, -106, -110, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -108, -103, -98, -94,
-90, -87, -82, -79, -73, -67, -58, -47,
-50, -45, -41, -45, -48, -44, -44, -49,
-54, -51, -48, -47, -49, -50, -51, -57,
-58, -60, -63, -69, -70, -69, -71, -74,
-78, -82, -90, -95, -101, -105, -110, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -105, -101, -97, -93, -90,
-85, -80, -77, -72, -65, -56, -48, -37,
-40, -36, -34, -40, -50, -47, -38, -41,
-47, -38, -35, -39, -38, -43, -40, -45,
-50, -45, -44, -47, -50, -55, -48, -48,
-52, -66, -70, -76, -82, -90, -97, -105,
-110, -999, -999, -999, -999, -999, -999, -999}},
/* 707 Hz */
{{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -108, -103, -98, -93, -86, -79, -76,
-83, -81, -85, -87, -89, -93, -98, -102,
-107, -112, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -108, -103, -98, -93, -86, -79, -71,
-77, -74, -77, -79, -81, -84, -85, -90,
-92, -93, -92, -98, -101, -108, -112, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-108, -103, -98, -93, -87, -78, -68, -65,
-66, -62, -65, -67, -70, -73, -75, -78,
-82, -82, -83, -84, -91, -93, -98, -102,
-106, -110, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-105, -100, -95, -90, -82, -74, -62, -57,
-58, -56, -51, -52, -52, -54, -54, -58,
-66, -59, -60, -63, -66, -69, -73, -79,
-83, -84, -80, -81, -81, -82, -88, -92,
-98, -105, -113, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -107,
-102, -97, -92, -84, -79, -69, -57, -47,
-52, -47, -44, -45, -50, -52, -42, -42,
-53, -43, -43, -48, -51, -56, -55, -52,
-57, -59, -61, -62, -67, -71, -78, -83,
-86, -94, -98, -103, -110, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -105, -100,
-95, -90, -84, -78, -70, -61, -51, -41,
-40, -38, -40, -46, -52, -51, -41, -40,
-46, -40, -38, -38, -41, -46, -41, -46,
-47, -43, -43, -45, -41, -45, -56, -67,
-68, -83, -87, -90, -95, -102, -107, -113,
-999, -999, -999, -999, -999, -999, -999, -999}},
/* 1000 Hz */
{{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -109, -105, -101, -96, -91, -84, -77,
-82, -82, -85, -89, -94, -100, -106, -110,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -106, -103, -98, -92, -85, -80, -71,
-75, -72, -76, -80, -84, -86, -89, -93,
-100, -107, -113, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -107,
-104, -101, -97, -92, -88, -84, -80, -64,
-66, -63, -64, -66, -69, -73, -77, -83,
-83, -86, -91, -98, -104, -111, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -107,
-104, -101, -97, -92, -90, -84, -74, -57,
-58, -52, -55, -54, -50, -52, -50, -52,
-63, -62, -69, -76, -77, -78, -78, -79,
-82, -88, -94, -100, -106, -111, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -106, -102,
-98, -95, -90, -85, -83, -78, -70, -50,
-50, -41, -44, -49, -47, -50, -50, -44,
-55, -46, -47, -48, -48, -54, -49, -49,
-58, -62, -71, -81, -87, -92, -97, -102,
-108, -114, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -106, -102,
-98, -95, -90, -85, -83, -78, -70, -45,
-43, -41, -47, -50, -51, -50, -49, -45,
-47, -41, -44, -41, -39, -43, -38, -37,
-40, -41, -44, -50, -58, -65, -73, -79,
-85, -92, -97, -101, -105, -109, -113, -999,
-999, -999, -999, -999, -999, -999, -999, -999}},
/* 1414 Hz */
{{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -107, -100, -95, -87, -81,
-85, -83, -88, -93, -100, -107, -114, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -107, -101, -95, -88, -83, -76,
-73, -72, -79, -84, -90, -95, -100, -105,
-110, -115, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -104, -98, -92, -87, -81, -70,
-65, -62, -67, -71, -74, -80, -85, -91,
-95, -99, -103, -108, -111, -114, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -103, -97, -90, -85, -76, -60,
-56, -54, -60, -62, -61, -56, -63, -65,
-73, -74, -77, -75, -78, -81, -86, -87,
-88, -91, -94, -98, -103, -110, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -105,
-100, -97, -92, -86, -81, -79, -70, -57,
-51, -47, -51, -58, -60, -56, -53, -50,
-58, -52, -50, -50, -53, -55, -64, -69,
-71, -85, -82, -78, -81, -85, -95, -102,
-112, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -105,
-100, -97, -92, -85, -83, -79, -72, -49,
-40, -43, -43, -54, -56, -51, -50, -40,
-43, -38, -36, -35, -37, -38, -37, -44,
-54, -60, -57, -60, -70, -75, -84, -92,
-103, -112, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999}},
/* 2000 Hz */
{{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -110, -102, -95, -89, -82,
-83, -84, -90, -92, -99, -107, -113, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -107, -101, -95, -89, -83, -72,
-74, -78, -85, -88, -88, -90, -92, -98,
-105, -111, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -109, -103, -97, -93, -87, -81, -70,
-70, -67, -75, -73, -76, -79, -81, -83,
-88, -89, -97, -103, -110, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -107, -100, -94, -88, -83, -75, -63,
-59, -59, -63, -66, -60, -62, -67, -67,
-77, -76, -81, -88, -86, -92, -96, -102,
-109, -116, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -105, -98, -92, -86, -81, -73, -56,
-52, -47, -55, -60, -58, -52, -51, -45,
-49, -50, -53, -54, -61, -71, -70, -69,
-78, -79, -87, -90, -96, -104, -112, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -103, -96, -90, -86, -78, -70, -51,
-42, -47, -48, -55, -54, -54, -53, -42,
-35, -28, -33, -38, -37, -44, -47, -49,
-54, -63, -68, -78, -82, -89, -94, -99,
-104, -109, -114, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999}},
/* 2828 Hz */
{{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -110, -100, -90, -79,
-85, -81, -82, -82, -89, -94, -99, -103,
-109, -115, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -105, -97, -85, -72,
-74, -70, -70, -70, -76, -85, -91, -93,
-97, -103, -109, -115, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -112, -93, -81, -68,
-62, -60, -60, -57, -63, -70, -77, -82,
-90, -93, -98, -104, -109, -113, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -113, -100, -93, -84, -63,
-58, -48, -53, -54, -52, -52, -57, -64,
-66, -76, -83, -81, -85, -85, -90, -95,
-98, -101, -103, -106, -108, -111, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -105, -95, -86, -74, -53,
-50, -38, -43, -49, -43, -42, -39, -39,
-46, -52, -57, -56, -72, -69, -74, -81,
-87, -92, -94, -97, -99, -102, -105, -108,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -108, -99, -90, -76, -66, -45,
-43, -41, -44, -47, -43, -47, -40, -30,
-31, -31, -39, -33, -40, -41, -43, -53,
-59, -70, -73, -77, -79, -82, -84, -87,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999}},
/* 4000 Hz */
{{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -110, -91, -76,
-75, -85, -93, -98, -104, -110, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -110, -91, -70,
-70, -75, -86, -89, -94, -98, -101, -106,
-110, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -110, -95, -80, -60,
-65, -64, -74, -83, -88, -91, -95, -99,
-103, -107, -110, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -110, -95, -80, -58,
-55, -49, -66, -68, -71, -78, -78, -80,
-88, -85, -89, -97, -100, -105, -110, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -110, -95, -80, -53,
-52, -41, -59, -59, -49, -58, -56, -63,
-86, -79, -90, -93, -98, -103, -107, -112,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -110, -97, -91, -73, -45,
-40, -33, -53, -61, -49, -54, -50, -50,
-60, -52, -67, -74, -81, -92, -96, -100,
-105, -110, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999}},
/* 5657 Hz */
{{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -113, -106, -99, -92, -77,
-80, -88, -97, -106, -115, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -116, -109, -102, -95, -89, -74,
-72, -88, -87, -95, -102, -109, -116, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -116, -109, -102, -95, -89, -75,
-66, -74, -77, -78, -86, -87, -90, -96,
-105, -115, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -115, -108, -101, -94, -88, -66,
-56, -61, -70, -65, -78, -72, -83, -84,
-93, -98, -105, -110, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -110, -105, -95, -89, -82, -57,
-52, -52, -59, -56, -59, -58, -69, -67,
-88, -82, -82, -89, -94, -100, -108, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -110, -101, -96, -90, -83, -77, -54,
-43, -38, -50, -48, -52, -48, -42, -42,
-51, -52, -53, -59, -65, -71, -78, -85,
-95, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999}},
/* 8000 Hz */
{{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -120, -105, -86, -68,
-78, -79, -90, -100, -110, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -120, -105, -86, -66,
-73, -77, -88, -96, -105, -115, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -120, -105, -92, -80, -61,
-64, -68, -80, -87, -92, -100, -110, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -120, -104, -91, -79, -52,
-60, -54, -64, -69, -77, -80, -82, -84,
-85, -87, -88, -90, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -118, -100, -87, -77, -49,
-50, -44, -58, -61, -61, -67, -65, -62,
-62, -62, -65, -68, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -115, -98, -84, -62, -49,
-44, -38, -46, -49, -49, -46, -39, -37,
-39, -40, -42, -43, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999}},
/* 11314 Hz */
{{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -110, -88, -74,
-77, -82, -82, -85, -90, -94, -99, -104,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -110, -88, -66,
-70, -81, -80, -81, -84, -88, -91, -93,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -110, -88, -61,
-63, -70, -71, -74, -77, -80, -83, -85,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -110, -86, -62,
-63, -62, -62, -58, -52, -50, -50, -52,
-54, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -118, -108, -84, -53,
-50, -50, -50, -55, -47, -45, -40, -40,
-40, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -118, -100, -73, -43,
-37, -42, -43, -53, -38, -37, -35, -35,
-38, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999}},
/* 16000 Hz */
{{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -110, -100, -91, -84, -74,
-80, -80, -80, -80, -80, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -110, -100, -91, -84, -74,
-68, -68, -68, -68, -68, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -110, -100, -86, -78, -70,
-60, -45, -30, -21, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -110, -100, -87, -78, -67,
-48, -38, -29, -21, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -110, -100, -86, -69, -56,
-45, -35, -33, -29, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999},
{-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -110, -100, -83, -71, -48,
-27, -38, -37, -34, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999,
-999, -999, -999, -999, -999, -999, -999, -999}}
};
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/mdct.c
0,0 → 1,562
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: normalized modified discrete cosine transform
power of two length transform only [64 <= n ]
 
Original algorithm adapted long ago from _The use of multirate filter
banks for coding of high quality digital audio_, by T. Sporer,
K. Brandenburg and B. Edler, collection of the European Signal
Processing Conference (EUSIPCO), Amsterdam, June 1992, Vol.1, pp
211-214
 
The below code implements an algorithm that no longer looks much like
that presented in the paper, but the basic structure remains if you
dig deep enough to see it.
 
This module DOES NOT INCLUDE code to generate/apply the window
function. Everybody has their own weird favorite including me... I
happen to like the properties of y=sin(.5PI*sin^2(x)), but others may
vehemently disagree.
 
********************************************************************/
 
/* this can also be run as an integer transform by uncommenting a
define in mdct.h; the integerization is a first pass and although
it's likely stable for Vorbis, the dynamic range is constrained and
roundoff isn't done (so it's noisy). Consider it functional, but
only a starting point. There's no point on a machine with an FPU */
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "vorbis/codec.h"
#include "mdct.h"
#include "os.h"
#include "misc.h"
 
/* build lookups for trig functions; also pre-figure scaling and
some window function algebra. */
 
void mdct_init(mdct_lookup *lookup,int n){
int *bitrev=_ogg_malloc(sizeof(*bitrev)*(n/4));
DATA_TYPE *T=_ogg_malloc(sizeof(*T)*(n+n/4));
 
int i;
int n2=n>>1;
int log2n=lookup->log2n=rint(log((float)n)/log(2.f));
lookup->n=n;
lookup->trig=T;
lookup->bitrev=bitrev;
 
/* trig lookups... */
 
for(i=0;i<n/4;i++){
T[i*2]=FLOAT_CONV(cos((M_PI/n)*(4*i)));
T[i*2+1]=FLOAT_CONV(-sin((M_PI/n)*(4*i)));
T[n2+i*2]=FLOAT_CONV(cos((M_PI/(2*n))*(2*i+1)));
T[n2+i*2+1]=FLOAT_CONV(sin((M_PI/(2*n))*(2*i+1)));
}
for(i=0;i<n/8;i++){
T[n+i*2]=FLOAT_CONV(cos((M_PI/n)*(4*i+2))*.5);
T[n+i*2+1]=FLOAT_CONV(-sin((M_PI/n)*(4*i+2))*.5);
}
 
/* bitreverse lookup... */
 
{
int mask=(1<<(log2n-1))-1,i,j;
int msb=1<<(log2n-2);
for(i=0;i<n/8;i++){
int acc=0;
for(j=0;msb>>j;j++)
if((msb>>j)&i)acc|=1<<j;
bitrev[i*2]=((~acc)&mask)-1;
bitrev[i*2+1]=acc;
 
}
}
lookup->scale=FLOAT_CONV(4.f/n);
}
 
/* 8 point butterfly (in place, 4 register) */
STIN void mdct_butterfly_8(DATA_TYPE *x){
REG_TYPE r0 = x[6] + x[2];
REG_TYPE r1 = x[6] - x[2];
REG_TYPE r2 = x[4] + x[0];
REG_TYPE r3 = x[4] - x[0];
 
x[6] = r0 + r2;
x[4] = r0 - r2;
 
r0 = x[5] - x[1];
r2 = x[7] - x[3];
x[0] = r1 + r0;
x[2] = r1 - r0;
 
r0 = x[5] + x[1];
r1 = x[7] + x[3];
x[3] = r2 + r3;
x[1] = r2 - r3;
x[7] = r1 + r0;
x[5] = r1 - r0;
 
}
 
/* 16 point butterfly (in place, 4 register) */
STIN void mdct_butterfly_16(DATA_TYPE *x){
REG_TYPE r0 = x[1] - x[9];
REG_TYPE r1 = x[0] - x[8];
 
x[8] += x[0];
x[9] += x[1];
x[0] = MULT_NORM((r0 + r1) * cPI2_8);
x[1] = MULT_NORM((r0 - r1) * cPI2_8);
 
r0 = x[3] - x[11];
r1 = x[10] - x[2];
x[10] += x[2];
x[11] += x[3];
x[2] = r0;
x[3] = r1;
 
r0 = x[12] - x[4];
r1 = x[13] - x[5];
x[12] += x[4];
x[13] += x[5];
x[4] = MULT_NORM((r0 - r1) * cPI2_8);
x[5] = MULT_NORM((r0 + r1) * cPI2_8);
 
r0 = x[14] - x[6];
r1 = x[15] - x[7];
x[14] += x[6];
x[15] += x[7];
x[6] = r0;
x[7] = r1;
 
mdct_butterfly_8(x);
mdct_butterfly_8(x+8);
}
 
/* 32 point butterfly (in place, 4 register) */
STIN void mdct_butterfly_32(DATA_TYPE *x){
REG_TYPE r0 = x[30] - x[14];
REG_TYPE r1 = x[31] - x[15];
 
x[30] += x[14];
x[31] += x[15];
x[14] = r0;
x[15] = r1;
 
r0 = x[28] - x[12];
r1 = x[29] - x[13];
x[28] += x[12];
x[29] += x[13];
x[12] = MULT_NORM( r0 * cPI1_8 - r1 * cPI3_8 );
x[13] = MULT_NORM( r0 * cPI3_8 + r1 * cPI1_8 );
 
r0 = x[26] - x[10];
r1 = x[27] - x[11];
x[26] += x[10];
x[27] += x[11];
x[10] = MULT_NORM(( r0 - r1 ) * cPI2_8);
x[11] = MULT_NORM(( r0 + r1 ) * cPI2_8);
 
r0 = x[24] - x[8];
r1 = x[25] - x[9];
x[24] += x[8];
x[25] += x[9];
x[8] = MULT_NORM( r0 * cPI3_8 - r1 * cPI1_8 );
x[9] = MULT_NORM( r1 * cPI3_8 + r0 * cPI1_8 );
 
r0 = x[22] - x[6];
r1 = x[7] - x[23];
x[22] += x[6];
x[23] += x[7];
x[6] = r1;
x[7] = r0;
 
r0 = x[4] - x[20];
r1 = x[5] - x[21];
x[20] += x[4];
x[21] += x[5];
x[4] = MULT_NORM( r1 * cPI1_8 + r0 * cPI3_8 );
x[5] = MULT_NORM( r1 * cPI3_8 - r0 * cPI1_8 );
 
r0 = x[2] - x[18];
r1 = x[3] - x[19];
x[18] += x[2];
x[19] += x[3];
x[2] = MULT_NORM(( r1 + r0 ) * cPI2_8);
x[3] = MULT_NORM(( r1 - r0 ) * cPI2_8);
 
r0 = x[0] - x[16];
r1 = x[1] - x[17];
x[16] += x[0];
x[17] += x[1];
x[0] = MULT_NORM( r1 * cPI3_8 + r0 * cPI1_8 );
x[1] = MULT_NORM( r1 * cPI1_8 - r0 * cPI3_8 );
 
mdct_butterfly_16(x);
mdct_butterfly_16(x+16);
 
}
 
/* N point first stage butterfly (in place, 2 register) */
STIN void mdct_butterfly_first(DATA_TYPE *T,
DATA_TYPE *x,
int points){
 
DATA_TYPE *x1 = x + points - 8;
DATA_TYPE *x2 = x + (points>>1) - 8;
REG_TYPE r0;
REG_TYPE r1;
 
do{
 
r0 = x1[6] - x2[6];
r1 = x1[7] - x2[7];
x1[6] += x2[6];
x1[7] += x2[7];
x2[6] = MULT_NORM(r1 * T[1] + r0 * T[0]);
x2[7] = MULT_NORM(r1 * T[0] - r0 * T[1]);
 
r0 = x1[4] - x2[4];
r1 = x1[5] - x2[5];
x1[4] += x2[4];
x1[5] += x2[5];
x2[4] = MULT_NORM(r1 * T[5] + r0 * T[4]);
x2[5] = MULT_NORM(r1 * T[4] - r0 * T[5]);
 
r0 = x1[2] - x2[2];
r1 = x1[3] - x2[3];
x1[2] += x2[2];
x1[3] += x2[3];
x2[2] = MULT_NORM(r1 * T[9] + r0 * T[8]);
x2[3] = MULT_NORM(r1 * T[8] - r0 * T[9]);
 
r0 = x1[0] - x2[0];
r1 = x1[1] - x2[1];
x1[0] += x2[0];
x1[1] += x2[1];
x2[0] = MULT_NORM(r1 * T[13] + r0 * T[12]);
x2[1] = MULT_NORM(r1 * T[12] - r0 * T[13]);
 
x1-=8;
x2-=8;
T+=16;
 
}while(x2>=x);
}
 
/* N/stage point generic N stage butterfly (in place, 2 register) */
STIN void mdct_butterfly_generic(DATA_TYPE *T,
DATA_TYPE *x,
int points,
int trigint){
 
DATA_TYPE *x1 = x + points - 8;
DATA_TYPE *x2 = x + (points>>1) - 8;
REG_TYPE r0;
REG_TYPE r1;
 
do{
 
r0 = x1[6] - x2[6];
r1 = x1[7] - x2[7];
x1[6] += x2[6];
x1[7] += x2[7];
x2[6] = MULT_NORM(r1 * T[1] + r0 * T[0]);
x2[7] = MULT_NORM(r1 * T[0] - r0 * T[1]);
 
T+=trigint;
 
r0 = x1[4] - x2[4];
r1 = x1[5] - x2[5];
x1[4] += x2[4];
x1[5] += x2[5];
x2[4] = MULT_NORM(r1 * T[1] + r0 * T[0]);
x2[5] = MULT_NORM(r1 * T[0] - r0 * T[1]);
 
T+=trigint;
 
r0 = x1[2] - x2[2];
r1 = x1[3] - x2[3];
x1[2] += x2[2];
x1[3] += x2[3];
x2[2] = MULT_NORM(r1 * T[1] + r0 * T[0]);
x2[3] = MULT_NORM(r1 * T[0] - r0 * T[1]);
 
T+=trigint;
 
r0 = x1[0] - x2[0];
r1 = x1[1] - x2[1];
x1[0] += x2[0];
x1[1] += x2[1];
x2[0] = MULT_NORM(r1 * T[1] + r0 * T[0]);
x2[1] = MULT_NORM(r1 * T[0] - r0 * T[1]);
 
T+=trigint;
x1-=8;
x2-=8;
 
}while(x2>=x);
}
 
STIN void mdct_butterflies(mdct_lookup *init,
DATA_TYPE *x,
int points){
 
DATA_TYPE *T=init->trig;
int stages=init->log2n-5;
int i,j;
 
if(--stages>0){
mdct_butterfly_first(T,x,points);
}
 
for(i=1;--stages>0;i++){
for(j=0;j<(1<<i);j++)
mdct_butterfly_generic(T,x+(points>>i)*j,points>>i,4<<i);
}
 
for(j=0;j<points;j+=32)
mdct_butterfly_32(x+j);
 
}
 
void mdct_clear(mdct_lookup *l){
if(l){
if(l->trig)_ogg_free(l->trig);
if(l->bitrev)_ogg_free(l->bitrev);
memset(l,0,sizeof(*l));
}
}
 
STIN void mdct_bitreverse(mdct_lookup *init,
DATA_TYPE *x){
int n = init->n;
int *bit = init->bitrev;
DATA_TYPE *w0 = x;
DATA_TYPE *w1 = x = w0+(n>>1);
DATA_TYPE *T = init->trig+n;
 
do{
DATA_TYPE *x0 = x+bit[0];
DATA_TYPE *x1 = x+bit[1];
 
REG_TYPE r0 = x0[1] - x1[1];
REG_TYPE r1 = x0[0] + x1[0];
REG_TYPE r2 = MULT_NORM(r1 * T[0] + r0 * T[1]);
REG_TYPE r3 = MULT_NORM(r1 * T[1] - r0 * T[0]);
 
w1 -= 4;
 
r0 = HALVE(x0[1] + x1[1]);
r1 = HALVE(x0[0] - x1[0]);
 
w0[0] = r0 + r2;
w1[2] = r0 - r2;
w0[1] = r1 + r3;
w1[3] = r3 - r1;
 
x0 = x+bit[2];
x1 = x+bit[3];
 
r0 = x0[1] - x1[1];
r1 = x0[0] + x1[0];
r2 = MULT_NORM(r1 * T[2] + r0 * T[3]);
r3 = MULT_NORM(r1 * T[3] - r0 * T[2]);
 
r0 = HALVE(x0[1] + x1[1]);
r1 = HALVE(x0[0] - x1[0]);
 
w0[2] = r0 + r2;
w1[0] = r0 - r2;
w0[3] = r1 + r3;
w1[1] = r3 - r1;
 
T += 4;
bit += 4;
w0 += 4;
 
}while(w0<w1);
}
 
void mdct_backward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out){
int n=init->n;
int n2=n>>1;
int n4=n>>2;
 
/* rotate */
 
DATA_TYPE *iX = in+n2-7;
DATA_TYPE *oX = out+n2+n4;
DATA_TYPE *T = init->trig+n4;
 
do{
oX -= 4;
oX[0] = MULT_NORM(-iX[2] * T[3] - iX[0] * T[2]);
oX[1] = MULT_NORM (iX[0] * T[3] - iX[2] * T[2]);
oX[2] = MULT_NORM(-iX[6] * T[1] - iX[4] * T[0]);
oX[3] = MULT_NORM (iX[4] * T[1] - iX[6] * T[0]);
iX -= 8;
T += 4;
}while(iX>=in);
 
iX = in+n2-8;
oX = out+n2+n4;
T = init->trig+n4;
 
do{
T -= 4;
oX[0] = MULT_NORM (iX[4] * T[3] + iX[6] * T[2]);
oX[1] = MULT_NORM (iX[4] * T[2] - iX[6] * T[3]);
oX[2] = MULT_NORM (iX[0] * T[1] + iX[2] * T[0]);
oX[3] = MULT_NORM (iX[0] * T[0] - iX[2] * T[1]);
iX -= 8;
oX += 4;
}while(iX>=in);
 
mdct_butterflies(init,out+n2,n2);
mdct_bitreverse(init,out);
 
/* roatate + window */
 
{
DATA_TYPE *oX1=out+n2+n4;
DATA_TYPE *oX2=out+n2+n4;
DATA_TYPE *iX =out;
T =init->trig+n2;
 
do{
oX1-=4;
 
oX1[3] = MULT_NORM (iX[0] * T[1] - iX[1] * T[0]);
oX2[0] = -MULT_NORM (iX[0] * T[0] + iX[1] * T[1]);
 
oX1[2] = MULT_NORM (iX[2] * T[3] - iX[3] * T[2]);
oX2[1] = -MULT_NORM (iX[2] * T[2] + iX[3] * T[3]);
 
oX1[1] = MULT_NORM (iX[4] * T[5] - iX[5] * T[4]);
oX2[2] = -MULT_NORM (iX[4] * T[4] + iX[5] * T[5]);
 
oX1[0] = MULT_NORM (iX[6] * T[7] - iX[7] * T[6]);
oX2[3] = -MULT_NORM (iX[6] * T[6] + iX[7] * T[7]);
 
oX2+=4;
iX += 8;
T += 8;
}while(iX<oX1);
 
iX=out+n2+n4;
oX1=out+n4;
oX2=oX1;
 
do{
oX1-=4;
iX-=4;
 
oX2[0] = -(oX1[3] = iX[3]);
oX2[1] = -(oX1[2] = iX[2]);
oX2[2] = -(oX1[1] = iX[1]);
oX2[3] = -(oX1[0] = iX[0]);
 
oX2+=4;
}while(oX2<iX);
 
iX=out+n2+n4;
oX1=out+n2+n4;
oX2=out+n2;
do{
oX1-=4;
oX1[0]= iX[3];
oX1[1]= iX[2];
oX1[2]= iX[1];
oX1[3]= iX[0];
iX+=4;
}while(oX1>oX2);
}
}
 
void mdct_forward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out){
int n=init->n;
int n2=n>>1;
int n4=n>>2;
int n8=n>>3;
DATA_TYPE *w=alloca(n*sizeof(*w)); /* forward needs working space */
DATA_TYPE *w2=w+n2;
 
/* rotate */
 
/* window + rotate + step 1 */
 
REG_TYPE r0;
REG_TYPE r1;
DATA_TYPE *x0=in+n2+n4;
DATA_TYPE *x1=x0+1;
DATA_TYPE *T=init->trig+n2;
 
int i=0;
 
for(i=0;i<n8;i+=2){
x0 -=4;
T-=2;
r0= x0[2] + x1[0];
r1= x0[0] + x1[2];
w2[i]= MULT_NORM(r1*T[1] + r0*T[0]);
w2[i+1]= MULT_NORM(r1*T[0] - r0*T[1]);
x1 +=4;
}
 
x1=in+1;
 
for(;i<n2-n8;i+=2){
T-=2;
x0 -=4;
r0= x0[2] - x1[0];
r1= x0[0] - x1[2];
w2[i]= MULT_NORM(r1*T[1] + r0*T[0]);
w2[i+1]= MULT_NORM(r1*T[0] - r0*T[1]);
x1 +=4;
}
 
x0=in+n;
 
for(;i<n2;i+=2){
T-=2;
x0 -=4;
r0= -x0[2] - x1[0];
r1= -x0[0] - x1[2];
w2[i]= MULT_NORM(r1*T[1] + r0*T[0]);
w2[i+1]= MULT_NORM(r1*T[0] - r0*T[1]);
x1 +=4;
}
 
 
mdct_butterflies(init,w+n2,n2);
mdct_bitreverse(init,w);
 
/* roatate + window */
 
T=init->trig+n2;
x0=out+n2;
 
for(i=0;i<n4;i++){
x0--;
out[i] =MULT_NORM((w[0]*T[0]+w[1]*T[1])*init->scale);
x0[0] =MULT_NORM((w[0]*T[1]-w[1]*T[0])*init->scale);
w+=2;
T+=2;
}
}
/contrib/sdk/sources/libvorbis-1.3.7/lib/mdct.h
0,0 → 1,70
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: modified discrete cosine transform prototypes
 
********************************************************************/
 
#ifndef _OGG_mdct_H_
#define _OGG_mdct_H_
 
#include "vorbis/codec.h"
 
 
 
 
 
/*#define MDCT_INTEGERIZED <- be warned there could be some hurt left here*/
#ifdef MDCT_INTEGERIZED
 
#define DATA_TYPE int
#define REG_TYPE register int
#define TRIGBITS 14
#define cPI3_8 6270
#define cPI2_8 11585
#define cPI1_8 15137
 
#define FLOAT_CONV(x) ((int)((x)*(1<<TRIGBITS)+.5))
#define MULT_NORM(x) ((x)>>TRIGBITS)
#define HALVE(x) ((x)>>1)
 
#else
 
#define DATA_TYPE float
#define REG_TYPE float
#define cPI3_8 .38268343236508977175F
#define cPI2_8 .70710678118654752441F
#define cPI1_8 .92387953251128675613F
 
#define FLOAT_CONV(x) (x)
#define MULT_NORM(x) (x)
#define HALVE(x) ((x)*.5f)
 
#endif
 
 
typedef struct {
int n;
int log2n;
 
DATA_TYPE *trig;
int *bitrev;
 
DATA_TYPE scale;
} mdct_lookup;
 
extern void mdct_init(mdct_lookup *lookup,int n);
extern void mdct_clear(mdct_lookup *l);
extern void mdct_forward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out);
extern void mdct_backward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out);
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/misc.h
0,0 → 1,57
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: miscellaneous prototypes
 
********************************************************************/
 
#ifndef _V_RANDOM_H_
#define _V_RANDOM_H_
#include "vorbis/codec.h"
 
extern void *_vorbis_block_alloc(vorbis_block *vb,long bytes);
extern void _vorbis_block_ripcord(vorbis_block *vb);
extern int ov_ilog(ogg_uint32_t v);
 
#ifdef ANALYSIS
extern int analysis_noisy;
extern void _analysis_output(char *base,int i,float *v,int n,int bark,int dB,
ogg_int64_t off);
extern void _analysis_output_always(char *base,int i,float *v,int n,int bark,int dB,
ogg_int64_t off);
#endif
 
#ifdef DEBUG_MALLOC
 
#define _VDBG_GRAPHFILE "malloc.m"
#undef _VDBG_GRAPHFILE
extern void *_VDBG_malloc(void *ptr,long bytes,char *file,long line);
extern void _VDBG_free(void *ptr,char *file,long line);
 
#ifndef MISC_C
#undef _ogg_malloc
#undef _ogg_calloc
#undef _ogg_realloc
#undef _ogg_free
 
#define _ogg_malloc(x) _VDBG_malloc(NULL,(x),__FILE__,__LINE__)
#define _ogg_calloc(x,y) _VDBG_malloc(NULL,(x)*(y),__FILE__,__LINE__)
#define _ogg_realloc(x,y) _VDBG_malloc((x),(y),__FILE__,__LINE__)
#define _ogg_free(x) _VDBG_free((x),__FILE__,__LINE__)
#endif
#endif
 
#endif
 
 
 
 
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/floor_all.h
0,0 → 1,259
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: key floor settings
 
********************************************************************/
 
#include "vorbis/codec.h"
#include "backends.h"
#include "books/floor/floor_books.h"
 
static const static_codebook*const _floor_128x4_books[]={
&_huff_book_line_128x4_class0,
&_huff_book_line_128x4_0sub0,
&_huff_book_line_128x4_0sub1,
&_huff_book_line_128x4_0sub2,
&_huff_book_line_128x4_0sub3,
};
static const static_codebook*const _floor_256x4_books[]={
&_huff_book_line_256x4_class0,
&_huff_book_line_256x4_0sub0,
&_huff_book_line_256x4_0sub1,
&_huff_book_line_256x4_0sub2,
&_huff_book_line_256x4_0sub3,
};
static const static_codebook*const _floor_128x7_books[]={
&_huff_book_line_128x7_class0,
&_huff_book_line_128x7_class1,
 
&_huff_book_line_128x7_0sub1,
&_huff_book_line_128x7_0sub2,
&_huff_book_line_128x7_0sub3,
&_huff_book_line_128x7_1sub1,
&_huff_book_line_128x7_1sub2,
&_huff_book_line_128x7_1sub3,
};
static const static_codebook*const _floor_256x7_books[]={
&_huff_book_line_256x7_class0,
&_huff_book_line_256x7_class1,
 
&_huff_book_line_256x7_0sub1,
&_huff_book_line_256x7_0sub2,
&_huff_book_line_256x7_0sub3,
&_huff_book_line_256x7_1sub1,
&_huff_book_line_256x7_1sub2,
&_huff_book_line_256x7_1sub3,
};
static const static_codebook*const _floor_128x11_books[]={
&_huff_book_line_128x11_class1,
&_huff_book_line_128x11_class2,
&_huff_book_line_128x11_class3,
 
&_huff_book_line_128x11_0sub0,
&_huff_book_line_128x11_1sub0,
&_huff_book_line_128x11_1sub1,
&_huff_book_line_128x11_2sub1,
&_huff_book_line_128x11_2sub2,
&_huff_book_line_128x11_2sub3,
&_huff_book_line_128x11_3sub1,
&_huff_book_line_128x11_3sub2,
&_huff_book_line_128x11_3sub3,
};
static const static_codebook*const _floor_128x17_books[]={
&_huff_book_line_128x17_class1,
&_huff_book_line_128x17_class2,
&_huff_book_line_128x17_class3,
 
&_huff_book_line_128x17_0sub0,
&_huff_book_line_128x17_1sub0,
&_huff_book_line_128x17_1sub1,
&_huff_book_line_128x17_2sub1,
&_huff_book_line_128x17_2sub2,
&_huff_book_line_128x17_2sub3,
&_huff_book_line_128x17_3sub1,
&_huff_book_line_128x17_3sub2,
&_huff_book_line_128x17_3sub3,
};
static const static_codebook*const _floor_256x4low_books[]={
&_huff_book_line_256x4low_class0,
&_huff_book_line_256x4low_0sub0,
&_huff_book_line_256x4low_0sub1,
&_huff_book_line_256x4low_0sub2,
&_huff_book_line_256x4low_0sub3,
};
static const static_codebook*const _floor_1024x27_books[]={
&_huff_book_line_1024x27_class1,
&_huff_book_line_1024x27_class2,
&_huff_book_line_1024x27_class3,
&_huff_book_line_1024x27_class4,
 
&_huff_book_line_1024x27_0sub0,
&_huff_book_line_1024x27_1sub0,
&_huff_book_line_1024x27_1sub1,
&_huff_book_line_1024x27_2sub0,
&_huff_book_line_1024x27_2sub1,
&_huff_book_line_1024x27_3sub1,
&_huff_book_line_1024x27_3sub2,
&_huff_book_line_1024x27_3sub3,
&_huff_book_line_1024x27_4sub1,
&_huff_book_line_1024x27_4sub2,
&_huff_book_line_1024x27_4sub3,
};
static const static_codebook*const _floor_2048x27_books[]={
&_huff_book_line_2048x27_class1,
&_huff_book_line_2048x27_class2,
&_huff_book_line_2048x27_class3,
&_huff_book_line_2048x27_class4,
 
&_huff_book_line_2048x27_0sub0,
&_huff_book_line_2048x27_1sub0,
&_huff_book_line_2048x27_1sub1,
&_huff_book_line_2048x27_2sub0,
&_huff_book_line_2048x27_2sub1,
&_huff_book_line_2048x27_3sub1,
&_huff_book_line_2048x27_3sub2,
&_huff_book_line_2048x27_3sub3,
&_huff_book_line_2048x27_4sub1,
&_huff_book_line_2048x27_4sub2,
&_huff_book_line_2048x27_4sub3,
};
 
static const static_codebook*const _floor_512x17_books[]={
&_huff_book_line_512x17_class1,
&_huff_book_line_512x17_class2,
&_huff_book_line_512x17_class3,
 
&_huff_book_line_512x17_0sub0,
&_huff_book_line_512x17_1sub0,
&_huff_book_line_512x17_1sub1,
&_huff_book_line_512x17_2sub1,
&_huff_book_line_512x17_2sub2,
&_huff_book_line_512x17_2sub3,
&_huff_book_line_512x17_3sub1,
&_huff_book_line_512x17_3sub2,
&_huff_book_line_512x17_3sub3,
};
 
static const static_codebook*const _floor_Xx0_books[]={
0
};
 
static const static_codebook*const *const _floor_books[11]={
_floor_128x4_books,
_floor_256x4_books,
_floor_128x7_books,
_floor_256x7_books,
_floor_128x11_books,
_floor_128x17_books,
_floor_256x4low_books,
_floor_1024x27_books,
_floor_2048x27_books,
_floor_512x17_books,
_floor_Xx0_books,
};
 
static const vorbis_info_floor1 _floor[11]={
/* 0: 128 x 4 */
{
1,{0},{4},{2},{0},
{{1,2,3,4}},
4,{0,128, 33,8,16,70},
 
60,30,500, 1.,18., 128
},
/* 1: 256 x 4 */
{
1,{0},{4},{2},{0},
{{1,2,3,4}},
4,{0,256, 66,16,32,140},
 
60,30,500, 1.,18., 256
},
/* 2: 128 x 7 */
{
2,{0,1},{3,4},{2,2},{0,1},
{{-1,2,3,4},{-1,5,6,7}},
4,{0,128, 14,4,58, 2,8,28,90},
 
60,30,500, 1.,18., 128
},
/* 3: 256 x 7 */
{
2,{0,1},{3,4},{2,2},{0,1},
{{-1,2,3,4},{-1,5,6,7}},
4,{0,256, 28,8,116, 4,16,56,180},
 
60,30,500, 1.,18., 256
},
/* 4: 128 x 11 */
{
4,{0,1,2,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
{{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
 
2,{0,128, 8,33, 4,16,70, 2,6,12, 23,46,90},
 
60,30,500, 1,18., 128
},
/* 5: 128 x 17 */
{
6,{0,1,1,2,3,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
{{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
2,{0,128, 12,46, 4,8,16, 23,33,70, 2,6,10, 14,19,28, 39,58,90},
 
60,30,500, 1,18., 128
},
/* 6: 256 x 4 (low bitrate version) */
{
1,{0},{4},{2},{0},
{{1,2,3,4}},
4,{0,256, 66,16,32,140},
 
60,30,500, 1.,18., 256
},
/* 7: 1024 x 27 */
{
8,{0,1,2,2,3,3,4,4},{3,4,3,4,3},{0,1,1,2,2},{-1,0,1,2,3},
{{4},{5,6},{7,8},{-1,9,10,11},{-1,12,13,14}},
2,{0,1024, 93,23,372, 6,46,186,750, 14,33,65, 130,260,556,
3,10,18,28, 39,55,79,111, 158,220,312, 464,650,850},
 
60,30,500, 3,18., 1024
},
/* 8: 2048 x 27 */
{
8,{0,1,2,2,3,3,4,4},{3,4,3,4,3},{0,1,1,2,2},{-1,0,1,2,3},
{{4},{5,6},{7,8},{-1,9,10,11},{-1,12,13,14}},
2,{0,2048, 186,46,744, 12,92,372,1500, 28,66,130, 260,520,1112,
6,20,36,56, 78,110,158,222, 316,440,624, 928,1300,1700},
 
60,30,500, 3,18., 2048
},
/* 9: 512 x 17 */
{
6,{0,1,1,2,3,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
{{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
2,{0,512, 46,186, 16,33,65, 93,130,278,
7,23,39, 55,79,110, 156,232,360},
 
60,30,500, 1,18., 512
},
 
/* 10: X x 0 (LFE floor; edge posts only) */
{
0,{0}, {0},{0},{-1},
{{-1}},
2,{0,12},
60,30,500, 1.,18., 10
},
 
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/psych_11.h
0,0 → 1,50
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: 11kHz settings
 
********************************************************************/
 
static const double _psy_lowpass_11[3]={4.5,5.5,30.,};
 
static const att3 _psy_tone_masteratt_11[3]={
{{ 30, 25, 12}, 0, 0}, /* 0 */
{{ 30, 25, 12}, 0, 0}, /* 0 */
{{ 20, 0, -14}, 0, 0}, /* 0 */
};
 
static const vp_adjblock _vp_tonemask_adj_11[3]={
/* adjust for mode zero */
/* 63 125 250 500 1 2 4 8 16 */
{{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0,10, 2, 0,99,99,99}}, /* 0 */
{{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0, 5, 0, 0,99,99,99}}, /* 1 */
{{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0, 0, 0, 0,99,99,99}}, /* 2 */
};
 
 
static const noise3 _psy_noisebias_11[3]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
{{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 10, 10, 12, 12, 12, 99, 99, 99},
{-15,-15,-15,-15,-10,-10, -5, 0, 0, 4, 4, 5, 5, 10, 99, 99, 99},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
 
{{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 10, 10, 12, 12, 12, 99, 99, 99},
{-15,-15,-15,-15,-10,-10, -5, -5, -5, 0, 0, 0, 0, 0, 99, 99, 99},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
 
{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 99, 99, 99},
{-30,-30,-30,-30,-26,-22,-20,-14,-12,-12,-10,-10,-10,-10, 99, 99, 99},
{-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24, 99, 99, 99}}},
};
 
static const double _noise_thresh_11[3]={ .3,.5,.5 };
 
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/psych_16.h
0,0 → 1,132
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: 16kHz settings
 
********************************************************************/
 
/* stereo mode by base quality level */
static const adj_stereo _psy_stereo_modes_16[4]={
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
{{ 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{ 6, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
{ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 4, 4},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
{{ 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{ 6, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
{ 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 4, 4, 4, 4, 4},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
{{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{ 5, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
{{ 0, 0, 0, 0, 0, 0, 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, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
};
 
static const double _psy_lowpass_16[4]={6.5,8,30.,99.};
 
static const att3 _psy_tone_masteratt_16[4]={
{{ 30, 25, 12}, 0, 0}, /* 0 */
{{ 25, 22, 12}, 0, 0}, /* 0 */
{{ 20, 12, 0}, 0, 0}, /* 0 */
{{ 15, 0, -14}, 0, 0}, /* 0 */
};
 
static const vp_adjblock _vp_tonemask_adj_16[4]={
/* adjust for mode zero */
/* 63 125 250 500 1 2 4 8 16 */
{{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0,10, 0, 0, 0, 0, 0}}, /* 0 */
{{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0,10, 0, 0, 0, 0, 0}}, /* 1 */
{{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 2 */
{{-30,-30,-30,-30,-30,-26,-20,-10, -5, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 2 */
};
 
 
static const noise3 _psy_noisebias_16_short[4]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
{{{-15,-15,-15,-15,-15,-10,-10,-5, 4, 10, 10, 10, 10, 12, 12, 14, 20},
{-15,-15,-15,-15,-15,-10,-10, -5, 0, 0, 4, 5, 5, 6, 8, 8, 15},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
 
{{{-15,-15,-15,-15,-15,-10,-10,-5, 4, 6, 6, 6, 6, 8, 10, 12, 20},
{-15,-15,-15,-15,-15,-15,-15,-10, -5, -5, -5, 4, 5, 6, 8, 8, 15},
{-30,-30,-30,-30,-30,-24,-20,-14,-10,-10,-10,-10,-10,-10,-10,-10,-10}}},
 
{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 12},
{-20,-20,-20,-20,-16,-12,-20,-14,-10,-10, -8, 0, 0, 0, 0, 2, 5},
{-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
 
{{{-15,-15,-15,-15,-15,-12,-10, -8, -5, -5, -5, -5, -5, 0, 0, 0, 6},
{-30,-30,-30,-30,-26,-22,-20,-14,-12,-12,-10,-10,-10,-10,-10,-10, -6},
{-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
};
 
static const noise3 _psy_noisebias_16_impulse[4]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
{{{-15,-15,-15,-15,-15,-10,-10,-5, 4, 10, 10, 10, 10, 12, 12, 14, 20},
{-15,-15,-15,-15,-15,-10,-10, -5, 0, 0, 4, 5, 5, 6, 8, 8, 15},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
 
{{{-15,-15,-15,-15,-15,-10,-10,-5, 4, 4, 4, 4, 5, 5, 6, 8, 15},
{-15,-15,-15,-15,-15,-15,-15,-10, -5, -5, -5, 0, 0, 0, 0, 4, 10},
{-30,-30,-30,-30,-30,-24,-20,-14,-10,-10,-10,-10,-10,-10,-10,-10,-10}}},
 
{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 4, 10},
{-20,-20,-20,-20,-16,-12,-20,-14,-10,-10,-10,-10,-10,-10,-10, -7, -5},
{-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
 
{{{-15,-15,-15,-15,-15,-12,-10, -8, -5, -5, -5, -5, -5, 0, 0, 0, 6},
{-30,-30,-30,-30,-26,-22,-20,-18,-18,-18,-20,-20,-20,-20,-20,-20,-16},
{-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
};
 
static const noise3 _psy_noisebias_16[4]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
{{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 6, 8, 8, 10, 10, 10, 14, 20},
{-10,-10,-10,-10,-10, -5, -2, -2, 0, 0, 0, 4, 5, 6, 8, 8, 15},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
 
{{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 6, 6, 6, 6, 8, 10, 12, 20},
{-15,-15,-15,-15,-15,-10, -5, -5, 0, 0, 0, 4, 5, 6, 8, 8, 15},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
 
{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 12},
{-20,-20,-20,-20,-16,-12,-20,-10, -5, -5, 0, 0, 0, 0, 0, 2, 5},
{-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
 
{{{-15,-15,-15,-15,-15,-12,-10, -8, -5, -5, -5, -5, -5, 0, 0, 0, 6},
{-30,-30,-30,-30,-26,-22,-20,-14,-12,-12,-10,-10,-10,-10,-10,-10, -6},
{-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
};
 
static const noiseguard _psy_noiseguards_16[4]={
{10,10,-1},
{10,10,-1},
{20,20,-1},
{20,20,-1},
};
 
static const double _noise_thresh_16[4]={ .3,.5,.5,.5 };
 
static const int _noise_start_16[3]={ 256,256,9999 };
static const int _noise_part_16[4]={ 8,8,8,8 };
 
static const int _psy_ath_floater_16[4]={
-100,-100,-100,-105,
};
 
static const int _psy_ath_abs_16[4]={
-130,-130,-130,-140,
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/psych_44.h
0,0 → 1,641
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: key psychoacoustic settings for 44.1/48kHz
 
********************************************************************/
 
 
/* preecho trigger settings *****************************************/
 
static const vorbis_info_psy_global _psy_global_44[5]={
 
{8, /* lines per eighth octave */
{20.f,14.f,12.f,12.f,12.f,12.f,12.f},
{-60.f,-30.f,-40.f,-40.f,-40.f,-40.f,-40.f}, 2,-75.f,
-6.f,
{99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
},
{8, /* lines per eighth octave */
{14.f,10.f,10.f,10.f,10.f,10.f,10.f},
{-40.f,-30.f,-25.f,-25.f,-25.f,-25.f,-25.f}, 2,-80.f,
-6.f,
{99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
},
{8, /* lines per eighth octave */
{12.f,10.f,10.f,10.f,10.f,10.f,10.f},
{-20.f,-20.f,-15.f,-15.f,-15.f,-15.f,-15.f}, 0,-80.f,
-6.f,
{99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
},
{8, /* lines per eighth octave */
{10.f,8.f,8.f,8.f,8.f,8.f,8.f},
{-20.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 0,-80.f,
-6.f,
{99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
},
{8, /* lines per eighth octave */
{10.f,6.f,6.f,6.f,6.f,6.f,6.f},
{-15.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 0,-85.f,
-6.f,
{99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
},
};
 
/* noise compander lookups * low, mid, high quality ****************/
static const compandblock _psy_compand_44[6]={
/* sub-mode Z short */
{{
0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
8, 9,10,11,12,13,14, 15, /* 15dB */
16,17,18,19,20,21,22, 23, /* 23dB */
24,25,26,27,28,29,30, 31, /* 31dB */
32,33,34,35,36,37,38, 39, /* 39dB */
}},
/* mode_Z nominal short */
{{
0, 1, 2, 3, 4, 5, 6, 6, /* 7dB */
7, 7, 7, 7, 6, 6, 6, 7, /* 15dB */
7, 8, 9,10,11,12,13, 14, /* 23dB */
15,16,17,17,17,18,18, 19, /* 31dB */
19,19,20,21,22,23,24, 25, /* 39dB */
}},
/* mode A short */
{{
0, 1, 2, 3, 4, 5, 5, 5, /* 7dB */
6, 6, 6, 5, 4, 4, 4, 4, /* 15dB */
4, 4, 5, 5, 5, 6, 6, 6, /* 23dB */
7, 7, 7, 8, 8, 8, 9, 10, /* 31dB */
11,12,13,14,15,16,17, 18, /* 39dB */
}},
/* sub-mode Z long */
{{
0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
8, 9,10,11,12,13,14, 15, /* 15dB */
16,17,18,19,20,21,22, 23, /* 23dB */
24,25,26,27,28,29,30, 31, /* 31dB */
32,33,34,35,36,37,38, 39, /* 39dB */
}},
/* mode_Z nominal long */
{{
0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
8, 9,10,11,12,12,13, 13, /* 15dB */
13,14,14,14,15,15,15, 15, /* 23dB */
16,16,17,17,17,18,18, 19, /* 31dB */
19,19,20,21,22,23,24, 25, /* 39dB */
}},
/* mode A long */
{{
0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
8, 8, 7, 6, 5, 4, 4, 4, /* 15dB */
4, 4, 5, 5, 5, 6, 6, 6, /* 23dB */
7, 7, 7, 8, 8, 8, 9, 10, /* 31dB */
11,12,13,14,15,16,17, 18, /* 39dB */
}}
};
 
/* tonal masking curve level adjustments *************************/
 
static const vp_adjblock _vp_tonemask_adj_longblock[12]={
 
/* 63 125 250 500 1 2 4 8 16 */
 
{{ -3, -8,-13,-15,-10,-10,-10,-10,-10,-10,-10, 0, 0, 0, 0, 0, 0}}, /* -1 */
 
/* {{-15,-15,-15,-15,-10, -8, -4, -2, 0, 0, 0, 10, 0, 0, 0, 0, 0}}, 0 */
{{ -4,-10,-14,-16,-15,-14,-13,-12,-12,-12,-11, -1, -1, -1, -1, -1, 0}}, /* 0 */
 
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 5, 0, 0, 0, 0, 0}}, 1 */
{{ -6,-12,-14,-16,-15,-15,-14,-13,-13,-12,-12, -2, -2, -1, -1, -1, 0}}, /* 1 */
 
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 2 */
{{-12,-13,-14,-16,-16,-16,-15,-14,-13,-12,-12, -6, -3, -1, -1, -1, 0}}, /* 2 */
 
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 3 */
{{-15,-15,-15,-16,-16,-16,-16,-14,-13,-13,-13,-10, -4, -2, -1, -1, 0}}, /* 3 */
 
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, *//* 4 */
{{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7 -3, -1, -1 , 0}}, /* 4 */
 
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 5 */
{{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7 -3, -1, -1 , 0}}, /* 5 */
 
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 6 */
{{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -8, -4, -2, -2, 0}}, /* 6 */
 
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 7 */
{{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 7 */
 
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 8 */
{{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 8 */
 
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 9 */
{{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 9 */
 
/* {{-15,-15,-15,-15,-15,-12,-10, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, 10 */
{{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 10 */
};
 
static const vp_adjblock _vp_tonemask_adj_otherblock[12]={
/* 63 125 250 500 1 2 4 8 16 */
 
{{ -3, -8,-13,-15,-10,-10, -9, -9, -9, -9, -9, 1, 1, 1, 1, 1, 1}}, /* -1 */
 
/* {{-20,-20,-20,-20,-14,-12,-10, -8, -4, 0, 0, 10, 0, 0, 0, 0, 0}}, 0 */
{{ -4,-10,-14,-16,-14,-13,-12,-12,-11,-11,-10, 0, 0, 0, 0, 0, 0}}, /* 0 */
 
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 5, 0, 0, 0, 0, 0}}, 1 */
{{ -6,-12,-14,-16,-15,-15,-14,-13,-13,-12,-12, -2, -2, -1, 0, 0, 0}}, /* 1 */
 
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 2 */
{{-12,-13,-14,-16,-16,-16,-15,-14,-13,-12,-12, -5, -2, -1, 0, 0, 0}}, /* 2 */
 
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 3 */
{{-15,-15,-15,-16,-16,-16,-16,-14,-13,-13,-13,-10, -4, -2, 0, 0, 0}}, /* 3 */
 
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 4 */
{{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7 -3, -1, -1 , 0}}, /* 4 */
 
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 5 */
{{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7 -3, -1, -1 , 0}}, /* 5 */
 
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 6 */
{{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -8, -4, -2, -2, 0}}, /* 6 */
 
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 7 */
{{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 7 */
 
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 8 */
{{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 8 */
 
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 9 */
{{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 9 */
 
/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, 10 */
{{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2, 0}}, /* 10 */
};
 
/* noise bias (transition block) */
static const noise3 _psy_noisebias_trans[12]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
/* -1 */
{{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
{-30,-30,-30,-30,-26,-20,-16, -8, -6, -6, -2, 2, 2, 3, 6, 6, 15},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
/* 0
{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
{-30,-30,-30,-30,-26,-22,-20,-14, -8, -4, 0, 0, 0, 0, 2, 4, 10},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -4, -4, -4, -2}}},*/
{{{-15,-15,-15,-15,-15,-12, -6, -4, 0, 2, 4, 4, 5, 5, 5, 8, 10},
{-30,-30,-30,-30,-26,-22,-20,-14, -8, -4, 0, 0, 0, 0, 2, 3, 6},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -4, -4, -4, -2}}},
/* 1
{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 8},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},*/
{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2, 0, 1, 4},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},
/* 2
{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 6},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}}, */
{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -2, -1, 0, 3},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -7, -4}}},
/* 3
{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 2, 2, 4, 4, 4, 5, 8},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 6},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 2, 2, 4, 4, 4, 5, 8},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -2, 0, 2},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
/* 4
{{{-20,-20,-20,-20,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 5},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
{{{-20,-20,-20,-20,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -2, -1, 1},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
/* 5
{{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
{-32,-32,-32,-32,-28,-24,-22,-16,-12, -6, -4, -4, -4, -4, -2, -1, 2},
{-34,-34,-34,-34,-30,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}}, */
{{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
{-32,-32,-32,-32,-28,-24,-22,-16,-12, -6, -4, -4, -4, -4, -3, -1, 0},
{-34,-34,-34,-34,-30,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}},
/* 6
{{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
{-32,-32,-32,-32,-28,-24,-24,-18,-14, -8, -6, -6, -6, -6, -4, -2, 1},
{-34,-34,-34,-34,-30,-26,-24,-18,-17,-15,-15,-15,-15,-13,-13,-12, -8}}},*/
{{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
{-32,-32,-32,-32,-28,-24,-24,-18,-14, -8, -6, -6, -6, -6, -5, -2, 0},
{-34,-34,-34,-34,-30,-26,-26,-24,-22,-19,-19,-19,-19,-18,-17,-16,-12}}},
/* 7
{{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
{-32,-32,-32,-32,-28,-24,-24,-18,-14,-12,-10, -8, -8, -8, -6, -4, 0},
{-34,-34,-34,-34,-30,-26,-26,-24,-22,-19,-19,-19,-19,-18,-17,-16,-12}}},*/
{{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
{-32,-32,-32,-32,-28,-24,-24,-24,-18,-14,-12,-10,-10,-10, -8, -6, -2},
{-34,-34,-34,-34,-30,-26,-26,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
/* 8
{{{-24,-24,-24,-24,-22,-20,-15,-10, -8, -2, 0, 0, 0, 1, 2, 3, 7},
{-36,-36,-36,-36,-30,-30,-30,-24,-18,-14,-12,-10,-10,-10, -8, -6, -2},
{-36,-36,-36,-36,-34,-30,-28,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},*/
{{{-24,-24,-24,-24,-22,-20,-15,-10, -8, -2, 0, 0, 0, 1, 2, 3, 7},
{-36,-36,-36,-36,-30,-30,-30,-24,-20,-16,-16,-16,-16,-14,-12,-10, -7},
{-36,-36,-36,-36,-34,-30,-28,-26,-24,-30,-30,-30,-30,-30,-30,-24,-20}}},
/* 9
{{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2, 2},
{-36,-36,-36,-36,-34,-32,-32,-28,-20,-16,-16,-16,-16,-14,-12,-10, -7},
{-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},*/
{{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2, 2},
{-38,-38,-38,-38,-36,-34,-34,-30,-24,-20,-20,-20,-20,-18,-16,-12,-10},
{-40,-40,-40,-40,-40,-40,-40,-38,-35,-35,-35,-35,-35,-35,-35,-35,-30}}},
/* 10 */
{{{-30,-30,-30,-30,-30,-30,-30,-28,-20,-14,-14,-14,-14,-14,-14,-12,-10},
{-40,-40,-40,-40,-40,-40,-40,-40,-35,-30,-30,-30,-30,-30,-30,-30,-20},
{-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
};
 
/* noise bias (long block) */
static const noise3 _psy_noisebias_long[12]={
/*63 125 250 500 1k 2k 4k 8k 16k*/
/* -1 */
{{{-10,-10,-10,-10,-10, -4, 0, 0, 0, 6, 6, 6, 6, 10, 10, 12, 20},
{-20,-20,-20,-20,-20,-20,-10, -2, 0, 0, 0, 0, 0, 2, 4, 6, 15},
{-20,-20,-20,-20,-20,-20,-20,-10, -6, -6, -6, -6, -6, -4, -4, -4, -2}}},
 
/* 0 */
/* {{{-10,-10,-10,-10,-10,-10, -8, 2, 2, 2, 4, 4, 5, 5, 5, 8, 10},
{-20,-20,-20,-20,-20,-20,-20,-14, -6, 0, 0, 0, 0, 0, 2, 4, 10},
{-20,-20,-20,-20,-20,-20,-20,-14, -8, -6, -6, -6, -6, -4, -4, -4, -2}}},*/
{{{-10,-10,-10,-10,-10,-10, -8, 2, 2, 2, 4, 4, 5, 5, 5, 8, 10},
{-20,-20,-20,-20,-20,-20,-20,-14, -6, 0, 0, 0, 0, 0, 2, 3, 6},
{-20,-20,-20,-20,-20,-20,-20,-14, -8, -6, -6, -6, -6, -4, -4, -4, -2}}},
/* 1 */
/* {{{-10,-10,-10,-10,-10,-10, -8, -4, 0, 2, 4, 4, 5, 5, 5, 8, 10},
{-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 8},
{-20,-20,-20,-20,-20,-20,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},*/
{{{-10,-10,-10,-10,-10,-10, -8, -4, 0, 2, 4, 4, 5, 5, 5, 8, 10},
{-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2, 0, 1, 4},
{-20,-20,-20,-20,-20,-20,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},
/* 2 */
/* {{{-10,-10,-10,-10,-10,-10,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
{-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 6},
{-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
{{{-10,-10,-10,-10,-10,-10,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
{-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -2, -1, 0, 3},
{-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
/* 3 */
/* {{{-10,-10,-10,-10,-10,-10,-10, -8, 0, 2, 2, 2, 4, 4, 4, 5, 8},
{-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 6},
{-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
{{{-10,-10,-10,-10,-10,-10,-10, -8, 0, 2, 2, 2, 4, 4, 4, 5, 8},
{-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -2, 0, 2},
{-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -5}}},
/* 4 */
/* {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
{-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 5},
{-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
{{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
{-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -2, -1, 1},
{-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -7}}},
/* 5 */
/* {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
{-22,-22,-22,-22,-22,-22,-22,-16,-12, -6, -4, -4, -4, -4, -2, -1, 2},
{-24,-24,-24,-24,-24,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}},*/
{{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
{-22,-22,-22,-22,-22,-22,-22,-16,-12, -6, -4, -4, -4, -4, -3, -1, 0},
{-24,-24,-24,-24,-24,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -8}}},
/* 6 */
/* {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
{-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -6, -6, -6, -6, -4, -2, 1},
{-26,-26,-26,-26,-26,-26,-26,-18,-16,-15,-15,-15,-15,-13,-13,-12, -8}}},*/
{{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
{-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -6, -6, -6, -6, -5, -2, 0},
{-26,-26,-26,-26,-26,-26,-26,-18,-16,-15,-15,-15,-15,-13,-13,-12,-10}}},
/* 7 */
{{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
{-24,-24,-24,-24,-24,-24,-24,-18,-14,-10, -8, -8, -8, -8, -6, -4, 0},
{-26,-26,-26,-26,-26,-26,-26,-22,-20,-19,-19,-19,-19,-18,-17,-16,-12}}},
/* 8 */
{{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 0, 0, 0, 0, 1, 2, 3, 7},
{-26,-26,-26,-26,-26,-26,-26,-20,-16,-12,-10,-10,-10,-10, -8, -6, -2},
{-28,-28,-28,-28,-28,-28,-28,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
/* 9 */
{{{-22,-22,-22,-22,-22,-22,-22,-18,-14, -8, -4, -4, -4, -4, -4, -2, 2},
{-26,-26,-26,-26,-26,-26,-26,-22,-18,-16,-16,-16,-16,-14,-12,-10, -7},
{-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},
/* 10 */
{{{-24,-24,-24,-24,-24,-24,-24,-24,-24,-18,-14,-14,-14,-14,-14,-12,-10},
{-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-20},
{-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
};
 
/* noise bias (impulse block) */
static const noise3 _psy_noisebias_impulse[12]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
/* -1 */
{{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
{-30,-30,-30,-30,-26,-20,-16, -8, -6, -6, -2, 2, 2, 3, 6, 6, 15},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
 
/* 0 */
/* {{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 4, 8, 8, 8, 10, 12, 14, 20},
{-30,-30,-30,-30,-26,-22,-20,-14, -6, -2, 0, 0, 0, 0, 2, 4, 10},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},*/
{{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 4, 8, 8, 8, 10, 12, 14, 20},
{-30,-30,-30,-30,-26,-22,-20,-14, -6, -2, 0, 0, 0, 0, 2, 3, 6},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
/* 1 */
{{{-12,-12,-12,-12,-12, -8, -6, -4, 0, 4, 4, 4, 4, 10, 12, 14, 20},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -4, -4, -2, -2, -2, -2, 2},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -8,-10,-10, -8, -8, -8, -6, -4}}},
/* 2 */
{{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 8, 10, 10, 16},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, 0},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
/* 3 */
{{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 6, 8, 8, 14},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, 0},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
/* 4 */
{{{-16,-16,-16,-16,-16,-12,-10, -6, -2, 0, 0, 0, 0, 4, 6, 6, 12},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, 0},
{-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
/* 5 */
{{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 4, 6, 11},
{-32,-32,-32,-32,-28,-24,-22,-16,-10, -6, -8, -8, -6, -6, -6, -4, -2},
{-34,-34,-34,-34,-30,-26,-24,-18,-14,-12,-12,-12,-12,-12,-10, -9, -5}}},
/* 6
{{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 4, 6, 11},
{-34,-34,-34,-34,-30,-30,-24,-20,-12,-12,-14,-14,-10, -9, -8, -6, -4},
{-34,-34,-34,-34,-34,-30,-26,-20,-16,-15,-15,-15,-15,-15,-13,-12, -8}}},*/
{{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 4, 6, 11},
{-34,-34,-34,-34,-30,-30,-30,-24,-16,-16,-16,-16,-16,-16,-14,-14,-12},
{-36,-36,-36,-36,-36,-34,-28,-24,-20,-20,-20,-20,-20,-20,-20,-18,-16}}},
/* 7 */
/* {{{-22,-22,-22,-22,-22,-20,-14,-10, -6, 0, 0, 0, 0, 4, 4, 6, 11},
{-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-16,-16,-14,-12,-10,-10,-10},
{-34,-34,-34,-34,-32,-32,-30,-24,-20,-19,-19,-19,-19,-19,-17,-16,-12}}},*/
{{{-22,-22,-22,-22,-22,-20,-14,-10, -6, 0, 0, 0, 0, 4, 4, 6, 11},
{-34,-34,-34,-34,-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-24,-22},
{-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-30,-24}}},
/* 8 */
/* {{{-24,-24,-24,-24,-24,-22,-14,-10, -6, -1, -1, -1, -1, 3, 3, 5, 10},
{-34,-34,-34,-34,-30,-30,-30,-24,-20,-20,-20,-20,-20,-18,-16,-16,-14},
{-36,-36,-36,-36,-36,-34,-28,-24,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},*/
{{{-24,-24,-24,-24,-24,-22,-14,-10, -6, -1, -1, -1, -1, 3, 3, 5, 10},
{-34,-34,-34,-34,-34,-32,-32,-30,-26,-26,-26,-26,-26,-26,-26,-26,-24},
{-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-30,-24}}},
/* 9 */
/* {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2, 2},
{-36,-36,-36,-36,-34,-32,-32,-30,-26,-26,-26,-26,-26,-22,-20,-20,-18},
{-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},*/
{{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2, 2},
{-36,-36,-36,-36,-34,-32,-32,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26},
{-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},
/* 10 */
{{{-30,-30,-30,-30,-30,-26,-24,-24,-24,-20,-16,-16,-16,-16,-16,-14,-12},
{-40,-40,-40,-40,-40,-40,-40,-40,-35,-30,-30,-30,-30,-30,-30,-30,-26},
{-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
};
 
/* noise bias (padding block) */
static const noise3 _psy_noisebias_padding[12]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
 
/* -1 */
{{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
{-30,-30,-30,-30,-26,-20,-16, -8, -6, -6, -2, 2, 2, 3, 6, 6, 15},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
 
/* 0 */
{{{-10,-10,-10,-10,-10, -4, 0, 0, 4, 8, 8, 8, 8, 10, 12, 14, 20},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, 2, 3, 6, 6, 8, 10},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -4, -4, -2, 0, 2}}},
/* 1 */
{{{-12,-12,-12,-12,-12, -8, -6, -4, 0, 4, 4, 4, 4, 10, 12, 14, 20},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, 0, 0, 0, 2, 2, 4, 8},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -6, -4, -2, 0}}},
/* 2 */
/* {{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 8, 10, 10, 16},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, 0, 0, 0, 2, 2, 4, 8},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},*/
{{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 8, 10, 10, 16},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -1, -1, -1, 0, 0, 2, 6},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},
/* 3 */
{{{-14,-14,-14,-14,-14,-10, -8, -6, -2, 2, 2, 2, 2, 6, 8, 8, 14},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -1, -1, -1, 0, 0, 2, 6},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},
/* 4 */
{{{-16,-16,-16,-16,-16,-12,-10, -6, -2, 0, 0, 0, 0, 4, 6, 6, 12},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -1, -1, -1, -1, 0, 2, 6},
{-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},
/* 5 */
{{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 6, 6, 12},
{-32,-32,-32,-32,-28,-24,-22,-16,-12, -6, -3, -3, -3, -3, -2, 0, 4},
{-34,-34,-34,-34,-30,-26,-24,-18,-14,-10,-10,-10,-10,-10, -8, -5, -3}}},
/* 6 */
{{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 6, 6, 12},
{-34,-34,-34,-34,-30,-30,-24,-20,-14, -8, -4, -4, -4, -4, -3, -1, 4},
{-34,-34,-34,-34,-34,-30,-26,-20,-16,-13,-13,-13,-13,-13,-11, -8, -6}}},
/* 7 */
{{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 0, 0, 0, 0, 4, 6, 6, 12},
{-34,-34,-34,-34,-30,-30,-30,-24,-16,-10, -8, -6, -6, -6, -5, -3, 1},
{-34,-34,-34,-34,-32,-32,-28,-22,-18,-16,-16,-16,-16,-16,-14,-12,-10}}},
/* 8 */
{{{-22,-22,-22,-22,-22,-20,-14,-10, -4, 0, 0, 0, 0, 3, 5, 5, 11},
{-34,-34,-34,-34,-30,-30,-30,-24,-16,-12,-10, -8, -8, -8, -7, -5, -2},
{-36,-36,-36,-36,-36,-34,-28,-22,-20,-20,-20,-20,-20,-20,-20,-16,-14}}},
/* 9 */
{{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -2, -2, -2, -2, 0, 2, 6},
{-36,-36,-36,-36,-34,-32,-32,-24,-16,-12,-12,-12,-12,-12,-10, -8, -5},
{-40,-40,-40,-40,-40,-40,-40,-32,-26,-24,-24,-24,-24,-24,-24,-20,-18}}},
/* 10 */
{{{-30,-30,-30,-30,-30,-26,-24,-24,-24,-20,-12,-12,-12,-12,-12,-10, -8},
{-40,-40,-40,-40,-40,-40,-40,-40,-35,-30,-25,-25,-25,-25,-25,-25,-15},
{-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
};
 
 
static const noiseguard _psy_noiseguards_44[4]={
{3,3,15},
{3,3,15},
{10,10,100},
{10,10,100},
};
 
static const int _psy_tone_suppress[12]={
-20,-20,-20,-20,-20,-24,-30,-40,-40,-45,-45,-45,
};
static const int _psy_tone_0dB[12]={
90,90,95,95,95,95,105,105,105,105,105,105,
};
static const int _psy_noise_suppress[12]={
-20,-20,-24,-24,-24,-24,-30,-40,-40,-45,-45,-45,
};
 
static const vorbis_info_psy _psy_info_template={
/* blockflag */
-1,
/* ath_adjatt, ath_maxatt */
-140.,-140.,
/* tonemask att boost/decay,suppr,curves */
{0.f,0.f,0.f}, 0.,0., -40.f, {0.},
 
/*noisemaskp,supp, low/high window, low/hi guard, minimum */
1, -0.f, .5f, .5f, 0,0,0,
/* noiseoffset*3, noisecompand, max_curve_dB */
{{-1},{-1},{-1}},{-1},105.f,
/* noise normalization - noise_p, start, partition, thresh. */
0,-1,-1,0.,
};
 
/* ath ****************/
 
static const int _psy_ath_floater[12]={
-100,-100,-100,-100,-100,-100,-105,-105,-105,-105,-110,-120,
};
static const int _psy_ath_abs[12]={
-130,-130,-130,-130,-140,-140,-140,-140,-140,-140,-140,-150,
};
 
/* stereo setup. These don't map directly to quality level, there's
an additional indirection as several of the below may be used in a
single bitmanaged stream
 
****************/
 
/* various stereo possibilities */
 
/* stereo mode by base quality level */
static const adj_stereo _psy_stereo_modes_44[12]={
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 -1 */
{{ 4, 4, 4, 4, 4, 4, 4, 3, 2, 2, 1, 0, 0, 0, 0},
{ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 4, 3},
{ 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 6, 7, 8, 8, 8},
{ 12,12.5, 13,13.5, 14,14.5, 15, 99, 99, 99, 99, 99, 99, 99, 99}},
 
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 */
{{ 4, 4, 4, 4, 4, 4, 4, 3, 2, 1, 0, 0, 0, 0, 0},
{ 8, 8, 8, 8, 6, 6, 5, 5, 5, 5, 5, 5, 5, 4, 3},
{ 1, 2, 3, 4, 4, 5, 6, 6, 6, 6, 6, 8, 8, 8, 8},
{ 12,12.5, 13,13.5, 14,14.5, 15, 99, 99, 99, 99, 99, 99, 99, 99}},
 
 
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 */
{{ 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0},
{ 8, 8, 8, 8, 6, 6, 5, 5, 5, 5, 5, 5, 5, 4, 3},
{ 1, 2, 3, 4, 4, 5, 6, 6, 6, 6, 6, 8, 8, 8, 8},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
 
 
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 */
{{ 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 0, 0, 0, 0, 0},
{ 8, 8, 6, 6, 5, 5, 4, 4, 4, 4, 4, 4, 3, 2, 1},
{ 3, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 */
{{ 2, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0},
{ 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 2, 1},
{ 4, 4, 5, 6, 6, 6, 6, 6, 8, 8, 10, 10, 10, 10, 10},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4 */
{{ 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 2, 1, 0},
{ 6, 6, 6, 8, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5 */
{{ 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0},
{ 6, 7, 8, 8, 8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6 */
{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 3, 3, 3, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 8, 8, 8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7 */
{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 3, 3, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 8, 8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8 */
{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 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},
{ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 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},
{ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
};
 
/* tone master attenuation by base quality mode and bitrate tweak */
static const att3 _psy_tone_masteratt_44[12]={
{{ 35, 21, 9}, 0, 0}, /* -1 */
{{ 30, 20, 8}, -2, 1.25}, /* 0 */
/* {{ 25, 14, 4}, 0, 0}, *//* 1 */
{{ 25, 12, 2}, 0, 0}, /* 1 */
/* {{ 20, 10, -2}, 0, 0}, *//* 2 */
{{ 20, 9, -3}, 0, 0}, /* 2 */
{{ 20, 9, -4}, 0, 0}, /* 3 */
{{ 20, 9, -4}, 0, 0}, /* 4 */
{{ 20, 6, -6}, 0, 0}, /* 5 */
{{ 20, 3, -10}, 0, 0}, /* 6 */
{{ 18, 1, -14}, 0, 0}, /* 7 */
{{ 18, 0, -16}, 0, 0}, /* 8 */
{{ 18, -2, -16}, 0, 0}, /* 9 */
{{ 12, -2, -20}, 0, 0}, /* 10 */
};
 
/* lowpass by mode **************/
static const double _psy_lowpass_44[12]={
/* 15.1,15.8,16.5,17.9,20.5,48.,999.,999.,999.,999.,999. */
13.9,15.1,15.8,16.5,17.2,18.9,20.1,48.,999.,999.,999.,999.
};
 
/* noise normalization **********/
 
static const int _noise_start_short_44[11]={
/* 16,16,16,16,32,32,9999,9999,9999,9999 */
32,16,16,16,32,9999,9999,9999,9999,9999,9999
};
static const int _noise_start_long_44[11]={
/* 128,128,128,256,512,512,9999,9999,9999,9999 */
256,128,128,256,512,9999,9999,9999,9999,9999,9999
};
 
static const int _noise_part_short_44[11]={
8,8,8,8,8,8,8,8,8,8,8
};
static const int _noise_part_long_44[11]={
32,32,32,32,32,32,32,32,32,32,32
};
 
static const double _noise_thresh_44[11]={
/* .2,.2,.3,.4,.5,.5,9999.,9999.,9999.,9999., */
.2,.2,.2,.4,.6,9999.,9999.,9999.,9999.,9999.,9999.,
};
 
static const double _noise_thresh_5only[2]={
.5,.5,
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/psych_8.h
0,0 → 1,100
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: 8kHz psychoacoustic settings
 
********************************************************************/
 
static const att3 _psy_tone_masteratt_8[3]={
{{ 32, 25, 12}, 0, 0}, /* 0 */
{{ 30, 25, 12}, 0, 0}, /* 0 */
{{ 20, 0, -14}, 0, 0}, /* 0 */
};
 
static const vp_adjblock _vp_tonemask_adj_8[3]={
/* adjust for mode zero */
/* 63 125 250 500 1 2 4 8 16 */
{{-15,-15,-15,-15,-10,-10, -6, 0, 0, 0, 0,10, 0, 0,99,99,99}}, /* 1 */
{{-15,-15,-15,-15,-10,-10, -6, 0, 0, 0, 0,10, 0, 0,99,99,99}}, /* 1 */
{{-15,-15,-15,-15,-10,-10, -6, 0, 0, 0, 0, 0, 0, 0,99,99,99}}, /* 1 */
};
 
 
static const noise3 _psy_noisebias_8[3]={
/* 63 125 250 500 1k 2k 4k 8k 16k*/
{{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 8, 8, 8, 10, 10, 99, 99, 99},
{-10,-10,-10,-10, -5, -5, -5, 0, 0, 4, 4, 4, 4, 4, 99, 99, 99},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
 
{{{-10,-10,-10,-10, -5, -5, -5, 0, 4, 8, 8, 8, 10, 10, 99, 99, 99},
{-10,-10,-10,-10,-10,-10, -5, -5, -5, 0, 0, 0, 0, 0, 99, 99, 99},
{-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
 
{{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 99, 99, 99},
{-30,-30,-30,-30,-26,-22,-20,-14,-12,-12,-10,-10,-10,-10, 99, 99, 99},
{-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24, 99, 99, 99}}},
};
 
/* stereo mode by base quality level */
static const adj_stereo _psy_stereo_modes_8[3]={
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
{{ 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{ 6, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
{{ 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{ 6, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
{{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
};
 
static const noiseguard _psy_noiseguards_8[2]={
{10,10,-1},
{10,10,-1},
};
 
static const compandblock _psy_compand_8[2]={
{{
0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
8, 8, 9, 9,10,10,11, 11, /* 15dB */
12,12,13,13,14,14,15, 15, /* 23dB */
16,16,17,17,17,18,18, 19, /* 31dB */
19,19,20,21,22,23,24, 25, /* 39dB */
}},
{{
0, 1, 2, 3, 4, 5, 6, 6, /* 7dB */
7, 7, 6, 6, 5, 5, 4, 4, /* 15dB */
3, 3, 3, 4, 5, 6, 7, 8, /* 23dB */
9,10,11,12,13,14,15, 16, /* 31dB */
17,18,19,20,21,22,23, 24, /* 39dB */
}},
};
 
static const double _psy_lowpass_8[3]={3.,4.,4.};
static const int _noise_start_8[2]={
64,64,
};
static const int _noise_part_8[2]={
8,8,
};
 
static const int _psy_ath_floater_8[3]={
-100,-100,-105,
};
 
static const int _psy_ath_abs_8[3]={
-130,-130,-140,
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/residue_16.h
0,0 → 1,162
/********************************************************************
* *
* This FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: toplevel residue templates 16/22kHz
 
********************************************************************/
 
/***** residue backends *********************************************/
 
static const static_bookblock _resbook_16s_0={
{
{0},
{0,0,&_16c0_s_p1_0},
{0},
{0,0,&_16c0_s_p3_0},
{0,0,&_16c0_s_p4_0},
{0,0,&_16c0_s_p5_0},
{0,0,&_16c0_s_p6_0},
{&_16c0_s_p7_0,&_16c0_s_p7_1},
{&_16c0_s_p8_0,&_16c0_s_p8_1},
{&_16c0_s_p9_0,&_16c0_s_p9_1,&_16c0_s_p9_2}
}
};
static const static_bookblock _resbook_16s_1={
{
{0},
{0,0,&_16c1_s_p1_0},
{0},
{0,0,&_16c1_s_p3_0},
{0,0,&_16c1_s_p4_0},
{0,0,&_16c1_s_p5_0},
{0,0,&_16c1_s_p6_0},
{&_16c1_s_p7_0,&_16c1_s_p7_1},
{&_16c1_s_p8_0,&_16c1_s_p8_1},
{&_16c1_s_p9_0,&_16c1_s_p9_1,&_16c1_s_p9_2}
}
};
static const static_bookblock _resbook_16s_2={
{
{0},
{0,0,&_16c2_s_p1_0},
{0,0,&_16c2_s_p2_0},
{0,0,&_16c2_s_p3_0},
{0,0,&_16c2_s_p4_0},
{&_16c2_s_p5_0,&_16c2_s_p5_1},
{&_16c2_s_p6_0,&_16c2_s_p6_1},
{&_16c2_s_p7_0,&_16c2_s_p7_1},
{&_16c2_s_p8_0,&_16c2_s_p8_1},
{&_16c2_s_p9_0,&_16c2_s_p9_1,&_16c2_s_p9_2}
}
};
 
static const vorbis_residue_template _res_16s_0[]={
{2,0,32, &_residue_44_mid,
&_huff_book__16c0_s_single,&_huff_book__16c0_s_single,
&_resbook_16s_0,&_resbook_16s_0},
};
static const vorbis_residue_template _res_16s_1[]={
{2,0,32, &_residue_44_mid,
&_huff_book__16c1_s_short,&_huff_book__16c1_s_short,
&_resbook_16s_1,&_resbook_16s_1},
 
{2,0,32, &_residue_44_mid,
&_huff_book__16c1_s_long,&_huff_book__16c1_s_long,
&_resbook_16s_1,&_resbook_16s_1}
};
static const vorbis_residue_template _res_16s_2[]={
{2,0,32, &_residue_44_high,
&_huff_book__16c2_s_short,&_huff_book__16c2_s_short,
&_resbook_16s_2,&_resbook_16s_2},
 
{2,0,32, &_residue_44_high,
&_huff_book__16c2_s_long,&_huff_book__16c2_s_long,
&_resbook_16s_2,&_resbook_16s_2}
};
 
static const vorbis_mapping_template _mapres_template_16_stereo[3]={
{ _map_nominal, _res_16s_0 }, /* 0 */
{ _map_nominal, _res_16s_1 }, /* 1 */
{ _map_nominal, _res_16s_2 }, /* 2 */
};
 
static const static_bookblock _resbook_16u_0={
{
{0},
{0,0,&_16u0__p1_0},
{0,0,&_16u0__p2_0},
{0,0,&_16u0__p3_0},
{0,0,&_16u0__p4_0},
{0,0,&_16u0__p5_0},
{&_16u0__p6_0,&_16u0__p6_1},
{&_16u0__p7_0,&_16u0__p7_1,&_16u0__p7_2}
}
};
static const static_bookblock _resbook_16u_1={
{
{0},
{0,0,&_16u1__p1_0},
{0,0,&_16u1__p2_0},
{0,0,&_16u1__p3_0},
{0,0,&_16u1__p4_0},
{0,0,&_16u1__p5_0},
{0,0,&_16u1__p6_0},
{&_16u1__p7_0,&_16u1__p7_1},
{&_16u1__p8_0,&_16u1__p8_1},
{&_16u1__p9_0,&_16u1__p9_1,&_16u1__p9_2}
}
};
static const static_bookblock _resbook_16u_2={
{
{0},
{0,0,&_16u2_p1_0},
{0,0,&_16u2_p2_0},
{0,0,&_16u2_p3_0},
{0,0,&_16u2_p4_0},
{&_16u2_p5_0,&_16u2_p5_1},
{&_16u2_p6_0,&_16u2_p6_1},
{&_16u2_p7_0,&_16u2_p7_1},
{&_16u2_p8_0,&_16u2_p8_1},
{&_16u2_p9_0,&_16u2_p9_1,&_16u2_p9_2}
}
};
 
static const vorbis_residue_template _res_16u_0[]={
{1,0,32, &_residue_44_low_un,
&_huff_book__16u0__single,&_huff_book__16u0__single,
&_resbook_16u_0,&_resbook_16u_0},
};
static const vorbis_residue_template _res_16u_1[]={
{1,0,32, &_residue_44_mid_un,
&_huff_book__16u1__short,&_huff_book__16u1__short,
&_resbook_16u_1,&_resbook_16u_1},
 
{1,0,32, &_residue_44_mid_un,
&_huff_book__16u1__long,&_huff_book__16u1__long,
&_resbook_16u_1,&_resbook_16u_1}
};
static const vorbis_residue_template _res_16u_2[]={
{1,0,32, &_residue_44_hi_un,
&_huff_book__16u2__short,&_huff_book__16u2__short,
&_resbook_16u_2,&_resbook_16u_2},
 
{1,0,32, &_residue_44_hi_un,
&_huff_book__16u2__long,&_huff_book__16u2__long,
&_resbook_16u_2,&_resbook_16u_2}
};
 
 
static const vorbis_mapping_template _mapres_template_16_uncoupled[3]={
{ _map_nominal_u, _res_16u_0 }, /* 0 */
{ _map_nominal_u, _res_16u_1 }, /* 1 */
{ _map_nominal_u, _res_16u_2 }, /* 2 */
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/residue_44.h
0,0 → 1,291
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: toplevel residue templates for 32/44.1/48kHz
 
********************************************************************/
 
#include "vorbis/codec.h"
#include "backends.h"
#include "books/coupled/res_books_stereo.h"
 
/***** residue backends *********************************************/
 
static const vorbis_info_residue0 _residue_44_low={
0,-1, -1, 9,-1,-1,
/* 0 1 2 3 4 5 6 7 */
{0},
{-1},
{ 0, 1, 2, 2, 4, 8, 16, 32},
{ 0, 0, 0,999, 4, 8, 16, 32},
};
 
static const vorbis_info_residue0 _residue_44_mid={
0,-1, -1, 10,-1,-1,
/* 0 1 2 3 4 5 6 7 8 */
{0},
{-1},
{ 0, 1, 1, 2, 2, 4, 8, 16, 32},
{ 0, 0,999, 0,999, 4, 8, 16, 32},
};
 
static const vorbis_info_residue0 _residue_44_high={
0,-1, -1, 10,-1,-1,
/* 0 1 2 3 4 5 6 7 8 */
{0},
{-1},
{ 0, 1, 2, 4, 8, 16, 32, 71,157},
{ 0, 1, 2, 3, 4, 8, 16, 71,157},
};
 
static const static_bookblock _resbook_44s_n1={
{
{0},{0,0,&_44cn1_s_p1_0},{0,0,&_44cn1_s_p2_0},
{0,0,&_44cn1_s_p3_0},{0,0,&_44cn1_s_p4_0},{0,0,&_44cn1_s_p5_0},
{&_44cn1_s_p6_0,&_44cn1_s_p6_1},{&_44cn1_s_p7_0,&_44cn1_s_p7_1},
{&_44cn1_s_p8_0,&_44cn1_s_p8_1,&_44cn1_s_p8_2}
}
};
static const static_bookblock _resbook_44sm_n1={
{
{0},{0,0,&_44cn1_sm_p1_0},{0,0,&_44cn1_sm_p2_0},
{0,0,&_44cn1_sm_p3_0},{0,0,&_44cn1_sm_p4_0},{0,0,&_44cn1_sm_p5_0},
{&_44cn1_sm_p6_0,&_44cn1_sm_p6_1},{&_44cn1_sm_p7_0,&_44cn1_sm_p7_1},
{&_44cn1_sm_p8_0,&_44cn1_sm_p8_1,&_44cn1_sm_p8_2}
}
};
 
static const static_bookblock _resbook_44s_0={
{
{0},{0,0,&_44c0_s_p1_0},{0,0,&_44c0_s_p2_0},
{0,0,&_44c0_s_p3_0},{0,0,&_44c0_s_p4_0},{0,0,&_44c0_s_p5_0},
{&_44c0_s_p6_0,&_44c0_s_p6_1},{&_44c0_s_p7_0,&_44c0_s_p7_1},
{&_44c0_s_p8_0,&_44c0_s_p8_1,&_44c0_s_p8_2}
}
};
static const static_bookblock _resbook_44sm_0={
{
{0},{0,0,&_44c0_sm_p1_0},{0,0,&_44c0_sm_p2_0},
{0,0,&_44c0_sm_p3_0},{0,0,&_44c0_sm_p4_0},{0,0,&_44c0_sm_p5_0},
{&_44c0_sm_p6_0,&_44c0_sm_p6_1},{&_44c0_sm_p7_0,&_44c0_sm_p7_1},
{&_44c0_sm_p8_0,&_44c0_sm_p8_1,&_44c0_sm_p8_2}
}
};
 
static const static_bookblock _resbook_44s_1={
{
{0},{0,0,&_44c1_s_p1_0},{0,0,&_44c1_s_p2_0},
{0,0,&_44c1_s_p3_0},{0,0,&_44c1_s_p4_0},{0,0,&_44c1_s_p5_0},
{&_44c1_s_p6_0,&_44c1_s_p6_1},{&_44c1_s_p7_0,&_44c1_s_p7_1},
{&_44c1_s_p8_0,&_44c1_s_p8_1,&_44c1_s_p8_2}
}
};
static const static_bookblock _resbook_44sm_1={
{
{0},{0,0,&_44c1_sm_p1_0},{0,0,&_44c1_sm_p2_0},
{0,0,&_44c1_sm_p3_0},{0,0,&_44c1_sm_p4_0},{0,0,&_44c1_sm_p5_0},
{&_44c1_sm_p6_0,&_44c1_sm_p6_1},{&_44c1_sm_p7_0,&_44c1_sm_p7_1},
{&_44c1_sm_p8_0,&_44c1_sm_p8_1,&_44c1_sm_p8_2}
}
};
 
static const static_bookblock _resbook_44s_2={
{
{0},{0,0,&_44c2_s_p1_0},{0,0,&_44c2_s_p2_0},{0,0,&_44c2_s_p3_0},
{0,0,&_44c2_s_p4_0},{0,0,&_44c2_s_p5_0},{0,0,&_44c2_s_p6_0},
{&_44c2_s_p7_0,&_44c2_s_p7_1},{&_44c2_s_p8_0,&_44c2_s_p8_1},
{&_44c2_s_p9_0,&_44c2_s_p9_1,&_44c2_s_p9_2}
}
};
static const static_bookblock _resbook_44s_3={
{
{0},{0,0,&_44c3_s_p1_0},{0,0,&_44c3_s_p2_0},{0,0,&_44c3_s_p3_0},
{0,0,&_44c3_s_p4_0},{0,0,&_44c3_s_p5_0},{0,0,&_44c3_s_p6_0},
{&_44c3_s_p7_0,&_44c3_s_p7_1},{&_44c3_s_p8_0,&_44c3_s_p8_1},
{&_44c3_s_p9_0,&_44c3_s_p9_1,&_44c3_s_p9_2}
}
};
static const static_bookblock _resbook_44s_4={
{
{0},{0,0,&_44c4_s_p1_0},{0,0,&_44c4_s_p2_0},{0,0,&_44c4_s_p3_0},
{0,0,&_44c4_s_p4_0},{0,0,&_44c4_s_p5_0},{0,0,&_44c4_s_p6_0},
{&_44c4_s_p7_0,&_44c4_s_p7_1},{&_44c4_s_p8_0,&_44c4_s_p8_1},
{&_44c4_s_p9_0,&_44c4_s_p9_1,&_44c4_s_p9_2}
}
};
static const static_bookblock _resbook_44s_5={
{
{0},{0,0,&_44c5_s_p1_0},{0,0,&_44c5_s_p2_0},{0,0,&_44c5_s_p3_0},
{0,0,&_44c5_s_p4_0},{0,0,&_44c5_s_p5_0},{0,0,&_44c5_s_p6_0},
{&_44c5_s_p7_0,&_44c5_s_p7_1},{&_44c5_s_p8_0,&_44c5_s_p8_1},
{&_44c5_s_p9_0,&_44c5_s_p9_1,&_44c5_s_p9_2}
}
};
static const static_bookblock _resbook_44s_6={
{
{0},{0,0,&_44c6_s_p1_0},{0,0,&_44c6_s_p2_0},{0,0,&_44c6_s_p3_0},
{0,0,&_44c6_s_p4_0},
{&_44c6_s_p5_0,&_44c6_s_p5_1},
{&_44c6_s_p6_0,&_44c6_s_p6_1},
{&_44c6_s_p7_0,&_44c6_s_p7_1},
{&_44c6_s_p8_0,&_44c6_s_p8_1},
{&_44c6_s_p9_0,&_44c6_s_p9_1,&_44c6_s_p9_2}
}
};
static const static_bookblock _resbook_44s_7={
{
{0},{0,0,&_44c7_s_p1_0},{0,0,&_44c7_s_p2_0},{0,0,&_44c7_s_p3_0},
{0,0,&_44c7_s_p4_0},
{&_44c7_s_p5_0,&_44c7_s_p5_1},
{&_44c7_s_p6_0,&_44c7_s_p6_1},
{&_44c7_s_p7_0,&_44c7_s_p7_1},
{&_44c7_s_p8_0,&_44c7_s_p8_1},
{&_44c7_s_p9_0,&_44c7_s_p9_1,&_44c7_s_p9_2}
}
};
static const static_bookblock _resbook_44s_8={
{
{0},{0,0,&_44c8_s_p1_0},{0,0,&_44c8_s_p2_0},{0,0,&_44c8_s_p3_0},
{0,0,&_44c8_s_p4_0},
{&_44c8_s_p5_0,&_44c8_s_p5_1},
{&_44c8_s_p6_0,&_44c8_s_p6_1},
{&_44c8_s_p7_0,&_44c8_s_p7_1},
{&_44c8_s_p8_0,&_44c8_s_p8_1},
{&_44c8_s_p9_0,&_44c8_s_p9_1,&_44c8_s_p9_2}
}
};
static const static_bookblock _resbook_44s_9={
{
{0},{0,0,&_44c9_s_p1_0},{0,0,&_44c9_s_p2_0},{0,0,&_44c9_s_p3_0},
{0,0,&_44c9_s_p4_0},
{&_44c9_s_p5_0,&_44c9_s_p5_1},
{&_44c9_s_p6_0,&_44c9_s_p6_1},
{&_44c9_s_p7_0,&_44c9_s_p7_1},
{&_44c9_s_p8_0,&_44c9_s_p8_1},
{&_44c9_s_p9_0,&_44c9_s_p9_1,&_44c9_s_p9_2}
}
};
 
static const vorbis_residue_template _res_44s_n1[]={
{2,0,32, &_residue_44_low,
&_huff_book__44cn1_s_short,&_huff_book__44cn1_sm_short,
&_resbook_44s_n1,&_resbook_44sm_n1},
 
{2,0,32, &_residue_44_low,
&_huff_book__44cn1_s_long,&_huff_book__44cn1_sm_long,
&_resbook_44s_n1,&_resbook_44sm_n1}
};
static const vorbis_residue_template _res_44s_0[]={
{2,0,16, &_residue_44_low,
&_huff_book__44c0_s_short,&_huff_book__44c0_sm_short,
&_resbook_44s_0,&_resbook_44sm_0},
 
{2,0,32, &_residue_44_low,
&_huff_book__44c0_s_long,&_huff_book__44c0_sm_long,
&_resbook_44s_0,&_resbook_44sm_0}
};
static const vorbis_residue_template _res_44s_1[]={
{2,0,16, &_residue_44_low,
&_huff_book__44c1_s_short,&_huff_book__44c1_sm_short,
&_resbook_44s_1,&_resbook_44sm_1},
 
{2,0,32, &_residue_44_low,
&_huff_book__44c1_s_long,&_huff_book__44c1_sm_long,
&_resbook_44s_1,&_resbook_44sm_1}
};
 
static const vorbis_residue_template _res_44s_2[]={
{2,0,16, &_residue_44_mid,
&_huff_book__44c2_s_short,&_huff_book__44c2_s_short,
&_resbook_44s_2,&_resbook_44s_2},
 
{2,0,32, &_residue_44_mid,
&_huff_book__44c2_s_long,&_huff_book__44c2_s_long,
&_resbook_44s_2,&_resbook_44s_2}
};
static const vorbis_residue_template _res_44s_3[]={
{2,0,16, &_residue_44_mid,
&_huff_book__44c3_s_short,&_huff_book__44c3_s_short,
&_resbook_44s_3,&_resbook_44s_3},
 
{2,0,32, &_residue_44_mid,
&_huff_book__44c3_s_long,&_huff_book__44c3_s_long,
&_resbook_44s_3,&_resbook_44s_3}
};
static const vorbis_residue_template _res_44s_4[]={
{2,0,16, &_residue_44_mid,
&_huff_book__44c4_s_short,&_huff_book__44c4_s_short,
&_resbook_44s_4,&_resbook_44s_4},
 
{2,0,32, &_residue_44_mid,
&_huff_book__44c4_s_long,&_huff_book__44c4_s_long,
&_resbook_44s_4,&_resbook_44s_4}
};
static const vorbis_residue_template _res_44s_5[]={
{2,0,16, &_residue_44_mid,
&_huff_book__44c5_s_short,&_huff_book__44c5_s_short,
&_resbook_44s_5,&_resbook_44s_5},
 
{2,0,32, &_residue_44_mid,
&_huff_book__44c5_s_long,&_huff_book__44c5_s_long,
&_resbook_44s_5,&_resbook_44s_5}
};
static const vorbis_residue_template _res_44s_6[]={
{2,0,16, &_residue_44_high,
&_huff_book__44c6_s_short,&_huff_book__44c6_s_short,
&_resbook_44s_6,&_resbook_44s_6},
 
{2,0,32, &_residue_44_high,
&_huff_book__44c6_s_long,&_huff_book__44c6_s_long,
&_resbook_44s_6,&_resbook_44s_6}
};
static const vorbis_residue_template _res_44s_7[]={
{2,0,16, &_residue_44_high,
&_huff_book__44c7_s_short,&_huff_book__44c7_s_short,
&_resbook_44s_7,&_resbook_44s_7},
 
{2,0,32, &_residue_44_high,
&_huff_book__44c7_s_long,&_huff_book__44c7_s_long,
&_resbook_44s_7,&_resbook_44s_7}
};
static const vorbis_residue_template _res_44s_8[]={
{2,0,16, &_residue_44_high,
&_huff_book__44c8_s_short,&_huff_book__44c8_s_short,
&_resbook_44s_8,&_resbook_44s_8},
 
{2,0,32, &_residue_44_high,
&_huff_book__44c8_s_long,&_huff_book__44c8_s_long,
&_resbook_44s_8,&_resbook_44s_8}
};
static const vorbis_residue_template _res_44s_9[]={
{2,0,16, &_residue_44_high,
&_huff_book__44c9_s_short,&_huff_book__44c9_s_short,
&_resbook_44s_9,&_resbook_44s_9},
 
{2,0,32, &_residue_44_high,
&_huff_book__44c9_s_long,&_huff_book__44c9_s_long,
&_resbook_44s_9,&_resbook_44s_9}
};
 
static const vorbis_mapping_template _mapres_template_44_stereo[]={
{ _map_nominal, _res_44s_n1 }, /* -1 */
{ _map_nominal, _res_44s_0 }, /* 0 */
{ _map_nominal, _res_44s_1 }, /* 1 */
{ _map_nominal, _res_44s_2 }, /* 2 */
{ _map_nominal, _res_44s_3 }, /* 3 */
{ _map_nominal, _res_44s_4 }, /* 4 */
{ _map_nominal, _res_44s_5 }, /* 5 */
{ _map_nominal, _res_44s_6 }, /* 6 */
{ _map_nominal, _res_44s_7 }, /* 7 */
{ _map_nominal, _res_44s_8 }, /* 8 */
{ _map_nominal, _res_44s_9 }, /* 9 */
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/residue_44p51.h
0,0 → 1,450
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: toplevel residue templates for 32/44.1/48kHz uncoupled
 
********************************************************************/
 
#include "vorbis/codec.h"
#include "backends.h"
 
#include "books/coupled/res_books_51.h"
 
/***** residue backends *********************************************/
 
static const vorbis_info_residue0 _residue_44p_lo={
0,-1, -1, 7,-1,-1,
/* 0 1 2 3 4 5 6 7 8 */
{0},
{-1},
{ 0, 1, 2, 7, 17, 31},
{ 0, 0, 99, 7, 17, 31},
};
 
static const vorbis_info_residue0 _residue_44p={
0,-1, -1, 8,-1,-1,
/* 0 1 2 3 4 5 6 7 8 */
{0},
{-1},
{ 0, 1, 1, 2, 7, 17, 31},
{ 0, 0, 99, 99, 7, 17, 31},
};
 
static const vorbis_info_residue0 _residue_44p_hi={
0,-1, -1, 8,-1,-1,
/* 0 1 2 3 4 5 6 7 8 */
{0},
{-1},
{ 0, 1, 2, 4, 7, 17, 31},
{ 0, 1, 2, 4, 7, 17, 31},
};
 
static const vorbis_info_residue0 _residue_44p_lfe={
0,-1, -1, 2,-1,-1,
/* 0 1 2 3 4 5 6 7 8 */
{0},
{-1},
{ 32},
{ -1}
};
 
static const static_bookblock _resbook_44p_n1={
{
{0},
{0,&_44pn1_p1_0},
 
{&_44pn1_p2_0,&_44pn1_p2_1,0},
{&_44pn1_p3_0,&_44pn1_p3_1,0},
{&_44pn1_p4_0,&_44pn1_p4_1,0},
 
{&_44pn1_p5_0,&_44pn1_p5_1,&_44pn1_p4_1},
{&_44pn1_p6_0,&_44pn1_p6_1,&_44pn1_p6_2},
}
};
 
static const static_bookblock _resbook_44p_0={
{
{0},
{0,&_44p0_p1_0},
 
{&_44p0_p2_0,&_44p0_p2_1,0},
{&_44p0_p3_0,&_44p0_p3_1,0},
{&_44p0_p4_0,&_44p0_p4_1,0},
 
{&_44p0_p5_0,&_44p0_p5_1,&_44p0_p4_1},
{&_44p0_p6_0,&_44p0_p6_1,&_44p0_p6_2},
}
};
 
static const static_bookblock _resbook_44p_1={
{
{0},
{0,&_44p1_p1_0},
 
{&_44p1_p2_0,&_44p1_p2_1,0},
{&_44p1_p3_0,&_44p1_p3_1,0},
{&_44p1_p4_0,&_44p1_p4_1,0},
 
{&_44p1_p5_0,&_44p1_p5_1,&_44p1_p4_1},
{&_44p1_p6_0,&_44p1_p6_1,&_44p1_p6_2},
}
};
 
static const static_bookblock _resbook_44p_2={
{
{0},
{0,0,&_44p2_p1_0},
{0,&_44p2_p2_0,0},
 
{&_44p2_p3_0,&_44p2_p3_1,0},
{&_44p2_p4_0,&_44p2_p4_1,0},
{&_44p2_p5_0,&_44p2_p5_1,0},
 
{&_44p2_p6_0,&_44p2_p6_1,&_44p2_p5_1},
{&_44p2_p7_0,&_44p2_p7_1,&_44p2_p7_2,&_44p2_p7_3}
}
};
static const static_bookblock _resbook_44p_3={
{
{0},
{0,0,&_44p3_p1_0},
{0,&_44p3_p2_0,0},
 
{&_44p3_p3_0,&_44p3_p3_1,0},
{&_44p3_p4_0,&_44p3_p4_1,0},
{&_44p3_p5_0,&_44p3_p5_1,0},
 
{&_44p3_p6_0,&_44p3_p6_1,&_44p3_p5_1},
{&_44p3_p7_0,&_44p3_p7_1,&_44p3_p7_2,&_44p3_p7_3}
}
};
static const static_bookblock _resbook_44p_4={
{
{0},
{0,0,&_44p4_p1_0},
{0,&_44p4_p2_0,0},
 
{&_44p4_p3_0,&_44p4_p3_1,0},
{&_44p4_p4_0,&_44p4_p4_1,0},
{&_44p4_p5_0,&_44p4_p5_1,0},
 
{&_44p4_p6_0,&_44p4_p6_1,&_44p4_p5_1},
{&_44p4_p7_0,&_44p4_p7_1,&_44p4_p7_2,&_44p4_p7_3}
}
};
static const static_bookblock _resbook_44p_5={
{
{0},
{0,0,&_44p5_p1_0},
{0,&_44p5_p2_0,0},
 
{&_44p5_p3_0,&_44p5_p3_1,0},
{&_44p5_p4_0,&_44p5_p4_1,0},
{&_44p5_p5_0,&_44p5_p5_1,0},
 
{&_44p5_p6_0,&_44p5_p6_1,&_44p5_p5_1},
{&_44p5_p7_0,&_44p5_p7_1,&_44p5_p7_2,&_44p5_p7_3}
}
};
static const static_bookblock _resbook_44p_6={
{
{0},
{0,0,&_44p6_p1_0},
{0,&_44p6_p2_0,0},
 
{&_44p6_p3_0,&_44p6_p3_1,0},
{&_44p6_p4_0,&_44p6_p4_1,0},
{&_44p6_p5_0,&_44p6_p5_1,0},
 
{&_44p6_p6_0,&_44p6_p6_1,&_44p6_p5_1},
{&_44p6_p7_0,&_44p6_p7_1,&_44p6_p7_2,&_44p6_p7_3}
}
};
static const static_bookblock _resbook_44p_7={
{
{0},
{0,0,&_44p7_p1_0},
{0,&_44p7_p2_0,0},
 
{&_44p7_p3_0,&_44p7_p3_1,0},
{&_44p7_p4_0,&_44p7_p4_1,0},
{&_44p7_p5_0,&_44p7_p5_1,0},
 
{&_44p7_p6_0,&_44p7_p6_1,&_44p7_p5_1},
{&_44p7_p7_0,&_44p7_p7_1,&_44p7_p7_2,&_44p7_p7_3}
}
};
static const static_bookblock _resbook_44p_8={
{
{0},
{0,0,&_44p8_p1_0},
{0,&_44p8_p2_0,0},
 
{&_44p8_p3_0,&_44p8_p3_1,0},
{&_44p8_p4_0,&_44p8_p4_1,0},
{&_44p8_p5_0,&_44p8_p5_1,0},
 
{&_44p8_p6_0,&_44p8_p6_1,&_44p8_p5_1},
{&_44p8_p7_0,&_44p8_p7_1,&_44p8_p7_2,&_44p8_p7_3}
}
};
static const static_bookblock _resbook_44p_9={
{
{0},
{0,0,&_44p9_p1_0},
{0,&_44p9_p2_0,0},
 
{&_44p9_p3_0,&_44p9_p3_1,0},
{&_44p9_p4_0,&_44p9_p4_1,0},
{&_44p9_p5_0,&_44p9_p5_1,0},
 
{&_44p9_p6_0,&_44p9_p6_1,&_44p9_p5_1},
{&_44p9_p7_0,&_44p9_p7_1,&_44p9_p7_2,&_44p9_p7_3}
}
};
 
static const static_bookblock _resbook_44p_ln1={
{
{&_44pn1_l0_0,&_44pn1_l0_1,0},
{&_44pn1_l1_0,&_44pn1_p6_1,&_44pn1_p6_2},
}
};
static const static_bookblock _resbook_44p_l0={
{
{&_44p0_l0_0,&_44p0_l0_1,0},
{&_44p0_l1_0,&_44p0_p6_1,&_44p0_p6_2},
}
};
static const static_bookblock _resbook_44p_l1={
{
{&_44p1_l0_0,&_44p1_l0_1,0},
{&_44p1_l1_0,&_44p1_p6_1,&_44p1_p6_2},
}
};
static const static_bookblock _resbook_44p_l2={
{
{&_44p2_l0_0,&_44p2_l0_1,0},
{&_44p2_l1_0,&_44p2_p7_2,&_44p2_p7_3},
}
};
static const static_bookblock _resbook_44p_l3={
{
{&_44p3_l0_0,&_44p3_l0_1,0},
{&_44p3_l1_0,&_44p3_p7_2,&_44p3_p7_3},
}
};
static const static_bookblock _resbook_44p_l4={
{
{&_44p4_l0_0,&_44p4_l0_1,0},
{&_44p4_l1_0,&_44p4_p7_2,&_44p4_p7_3},
}
};
static const static_bookblock _resbook_44p_l5={
{
{&_44p5_l0_0,&_44p5_l0_1,0},
{&_44p5_l1_0,&_44p5_p7_2,&_44p5_p7_3},
}
};
static const static_bookblock _resbook_44p_l6={
{
{&_44p6_l0_0,&_44p6_l0_1,0},
{&_44p6_l1_0,&_44p6_p7_2,&_44p6_p7_3},
}
};
static const static_bookblock _resbook_44p_l7={
{
{&_44p7_l0_0,&_44p7_l0_1,0},
{&_44p7_l1_0,&_44p7_p7_2,&_44p7_p7_3},
}
};
static const static_bookblock _resbook_44p_l8={
{
{&_44p8_l0_0,&_44p8_l0_1,0},
{&_44p8_l1_0,&_44p8_p7_2,&_44p8_p7_3},
}
};
static const static_bookblock _resbook_44p_l9={
{
{&_44p9_l0_0,&_44p9_l0_1,0},
{&_44p9_l1_0,&_44p9_p7_2,&_44p9_p7_3},
}
};
 
 
static const vorbis_info_mapping0 _map_nominal_51[2]={
{2, {0,0,0,0,0,1}, {0,2}, {0,2}, 4,{0,3,0,0},{2,4,1,3}},
{2, {0,0,0,0,0,1}, {1,2}, {1,2}, 4,{0,3,0,0},{2,4,1,3}}
};
static const vorbis_info_mapping0 _map_nominal_51u[2]={
{2, {0,0,0,0,0,1}, {0,2}, {0,2}, 0,{0},{0}},
{2, {0,0,0,0,0,1}, {1,2}, {1,2}, 0,{0},{0}}
};
 
static const vorbis_residue_template _res_44p51_n1[]={
{2,0,30, &_residue_44p_lo,
&_huff_book__44pn1_short,&_huff_book__44pn1_short,
&_resbook_44p_n1,&_resbook_44p_n1},
 
{2,0,30, &_residue_44p_lo,
&_huff_book__44pn1_long,&_huff_book__44pn1_long,
&_resbook_44p_n1,&_resbook_44p_n1},
 
{1,2,6, &_residue_44p_lfe,
&_huff_book__44pn1_lfe,&_huff_book__44pn1_lfe,
&_resbook_44p_ln1,&_resbook_44p_ln1}
};
static const vorbis_residue_template _res_44p51_0[]={
{2,0,15, &_residue_44p_lo,
&_huff_book__44p0_short,&_huff_book__44p0_short,
&_resbook_44p_0,&_resbook_44p_0},
 
{2,0,30, &_residue_44p_lo,
&_huff_book__44p0_long,&_huff_book__44p0_long,
&_resbook_44p_0,&_resbook_44p_0},
 
{1,2,6, &_residue_44p_lfe,
&_huff_book__44p0_lfe,&_huff_book__44p0_lfe,
&_resbook_44p_l0,&_resbook_44p_l0}
};
static const vorbis_residue_template _res_44p51_1[]={
{2,0,15, &_residue_44p_lo,
&_huff_book__44p1_short,&_huff_book__44p1_short,
&_resbook_44p_1,&_resbook_44p_1},
 
{2,0,30, &_residue_44p_lo,
&_huff_book__44p1_long,&_huff_book__44p1_long,
&_resbook_44p_1,&_resbook_44p_1},
 
{1,2,6, &_residue_44p_lfe,
&_huff_book__44p1_lfe,&_huff_book__44p1_lfe,
&_resbook_44p_l1,&_resbook_44p_l1}
};
static const vorbis_residue_template _res_44p51_2[]={
{2,0,15, &_residue_44p,
&_huff_book__44p2_short,&_huff_book__44p2_short,
&_resbook_44p_2,&_resbook_44p_2},
 
{2,0,30, &_residue_44p,
&_huff_book__44p2_long,&_huff_book__44p2_long,
&_resbook_44p_2,&_resbook_44p_2},
 
{1,2,6, &_residue_44p_lfe,
&_huff_book__44p2_lfe,&_huff_book__44p2_lfe,
&_resbook_44p_l2,&_resbook_44p_l2}
};
static const vorbis_residue_template _res_44p51_3[]={
{2,0,15, &_residue_44p,
&_huff_book__44p3_short,&_huff_book__44p3_short,
&_resbook_44p_3,&_resbook_44p_3},
 
{2,0,30, &_residue_44p,
&_huff_book__44p3_long,&_huff_book__44p3_long,
&_resbook_44p_3,&_resbook_44p_3},
 
{1,2,6, &_residue_44p_lfe,
&_huff_book__44p3_lfe,&_huff_book__44p3_lfe,
&_resbook_44p_l3,&_resbook_44p_l3}
};
static const vorbis_residue_template _res_44p51_4[]={
{2,0,15, &_residue_44p,
&_huff_book__44p4_short,&_huff_book__44p4_short,
&_resbook_44p_4,&_resbook_44p_4},
 
{2,0,30, &_residue_44p,
&_huff_book__44p4_long,&_huff_book__44p4_long,
&_resbook_44p_4,&_resbook_44p_4},
 
{1,2,6, &_residue_44p_lfe,
&_huff_book__44p4_lfe,&_huff_book__44p4_lfe,
&_resbook_44p_l4,&_resbook_44p_l4}
};
static const vorbis_residue_template _res_44p51_5[]={
{2,0,15, &_residue_44p_hi,
&_huff_book__44p5_short,&_huff_book__44p5_short,
&_resbook_44p_5,&_resbook_44p_5},
 
{2,0,30, &_residue_44p_hi,
&_huff_book__44p5_long,&_huff_book__44p5_long,
&_resbook_44p_5,&_resbook_44p_5},
 
{1,2,6, &_residue_44p_lfe,
&_huff_book__44p5_lfe,&_huff_book__44p5_lfe,
&_resbook_44p_l5,&_resbook_44p_l5}
};
static const vorbis_residue_template _res_44p51_6[]={
{2,0,15, &_residue_44p_hi,
&_huff_book__44p6_short,&_huff_book__44p6_short,
&_resbook_44p_6,&_resbook_44p_6},
 
{2,0,30, &_residue_44p_hi,
&_huff_book__44p6_long,&_huff_book__44p6_long,
&_resbook_44p_6,&_resbook_44p_6},
 
{1,2,6, &_residue_44p_lfe,
&_huff_book__44p6_lfe,&_huff_book__44p6_lfe,
&_resbook_44p_l6,&_resbook_44p_l6}
};
 
 
static const vorbis_residue_template _res_44p51_7[]={
{2,0,15, &_residue_44p_hi,
&_huff_book__44p7_short,&_huff_book__44p7_short,
&_resbook_44p_7,&_resbook_44p_7},
 
{2,0,30, &_residue_44p_hi,
&_huff_book__44p7_long,&_huff_book__44p7_long,
&_resbook_44p_7,&_resbook_44p_7},
 
{1,2,6, &_residue_44p_lfe,
&_huff_book__44p6_lfe,&_huff_book__44p6_lfe,
&_resbook_44p_l6,&_resbook_44p_l6}
};
static const vorbis_residue_template _res_44p51_8[]={
{2,0,15, &_residue_44p_hi,
&_huff_book__44p8_short,&_huff_book__44p8_short,
&_resbook_44p_8,&_resbook_44p_8},
 
{2,0,30, &_residue_44p_hi,
&_huff_book__44p8_long,&_huff_book__44p8_long,
&_resbook_44p_8,&_resbook_44p_8},
 
{1,2,6, &_residue_44p_lfe,
&_huff_book__44p6_lfe,&_huff_book__44p6_lfe,
&_resbook_44p_l6,&_resbook_44p_l6}
};
static const vorbis_residue_template _res_44p51_9[]={
{2,0,15, &_residue_44p_hi,
&_huff_book__44p9_short,&_huff_book__44p9_short,
&_resbook_44p_9,&_resbook_44p_9},
 
{2,0,30, &_residue_44p_hi,
&_huff_book__44p9_long,&_huff_book__44p9_long,
&_resbook_44p_9,&_resbook_44p_9},
 
{1,2,6, &_residue_44p_lfe,
&_huff_book__44p6_lfe,&_huff_book__44p6_lfe,
&_resbook_44p_l6,&_resbook_44p_l6}
};
 
static const vorbis_mapping_template _mapres_template_44_51[]={
{ _map_nominal_51, _res_44p51_n1 }, /* -1 */
{ _map_nominal_51, _res_44p51_0 }, /* 0 */
{ _map_nominal_51, _res_44p51_1 }, /* 1 */
{ _map_nominal_51, _res_44p51_2 }, /* 2 */
{ _map_nominal_51, _res_44p51_3 }, /* 3 */
{ _map_nominal_51, _res_44p51_4 }, /* 4 */
{ _map_nominal_51u, _res_44p51_5 }, /* 5 */
{ _map_nominal_51u, _res_44p51_6 }, /* 6 */
{ _map_nominal_51u, _res_44p51_7 }, /* 7 */
{ _map_nominal_51u, _res_44p51_8 }, /* 8 */
{ _map_nominal_51u, _res_44p51_9 }, /* 9 */
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/residue_44u.h
0,0 → 1,317
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: toplevel residue templates for 32/44.1/48kHz uncoupled
 
********************************************************************/
 
#include "vorbis/codec.h"
#include "backends.h"
#include "books/uncoupled/res_books_uncoupled.h"
 
/***** residue backends *********************************************/
 
 
static const vorbis_info_residue0 _residue_44_low_un={
0,-1, -1, 8,-1,-1,
{0},
{-1},
{ 0, 1, 1, 2, 2, 4, 28},
{ -1, 25, -1, 45, -1, -1, -1}
};
 
static const vorbis_info_residue0 _residue_44_mid_un={
0,-1, -1, 10,-1,-1,
/* 0 1 2 3 4 5 6 7 8 9 */
{0},
{-1},
{ 0, 1, 1, 2, 2, 4, 4, 16, 60},
{ -1, 30, -1, 50, -1, 80, -1, -1, -1}
};
 
static const vorbis_info_residue0 _residue_44_hi_un={
0,-1, -1, 10,-1,-1,
/* 0 1 2 3 4 5 6 7 8 9 */
{0},
{-1},
{ 0, 1, 2, 4, 8, 16, 32, 71,157},
{ -1, -1, -1, -1, -1, -1, -1, -1, -1}
};
 
/* mapping conventions:
only one submap (this would change for efficient 5.1 support for example)*/
/* Four psychoacoustic profiles are used, one for each blocktype */
static const vorbis_info_mapping0 _map_nominal_u[2]={
{1, {0,0,0,0,0,0}, {0}, {0}, 0,{0},{0}},
{1, {0,0,0,0,0,0}, {1}, {1}, 0,{0},{0}}
};
 
static const static_bookblock _resbook_44u_n1={
{
{0},
{0,0,&_44un1__p1_0},
{0,0,&_44un1__p2_0},
{0,0,&_44un1__p3_0},
{0,0,&_44un1__p4_0},
{0,0,&_44un1__p5_0},
{&_44un1__p6_0,&_44un1__p6_1},
{&_44un1__p7_0,&_44un1__p7_1,&_44un1__p7_2}
}
};
static const static_bookblock _resbook_44u_0={
{
{0},
{0,0,&_44u0__p1_0},
{0,0,&_44u0__p2_0},
{0,0,&_44u0__p3_0},
{0,0,&_44u0__p4_0},
{0,0,&_44u0__p5_0},
{&_44u0__p6_0,&_44u0__p6_1},
{&_44u0__p7_0,&_44u0__p7_1,&_44u0__p7_2}
}
};
static const static_bookblock _resbook_44u_1={
{
{0},
{0,0,&_44u1__p1_0},
{0,0,&_44u1__p2_0},
{0,0,&_44u1__p3_0},
{0,0,&_44u1__p4_0},
{0,0,&_44u1__p5_0},
{&_44u1__p6_0,&_44u1__p6_1},
{&_44u1__p7_0,&_44u1__p7_1,&_44u1__p7_2}
}
};
static const static_bookblock _resbook_44u_2={
{
{0},
{0,0,&_44u2__p1_0},
{0,0,&_44u2__p2_0},
{0,0,&_44u2__p3_0},
{0,0,&_44u2__p4_0},
{0,0,&_44u2__p5_0},
{&_44u2__p6_0,&_44u2__p6_1},
{&_44u2__p7_0,&_44u2__p7_1,&_44u2__p7_2}
}
};
static const static_bookblock _resbook_44u_3={
{
{0},
{0,0,&_44u3__p1_0},
{0,0,&_44u3__p2_0},
{0,0,&_44u3__p3_0},
{0,0,&_44u3__p4_0},
{0,0,&_44u3__p5_0},
{&_44u3__p6_0,&_44u3__p6_1},
{&_44u3__p7_0,&_44u3__p7_1,&_44u3__p7_2}
}
};
static const static_bookblock _resbook_44u_4={
{
{0},
{0,0,&_44u4__p1_0},
{0,0,&_44u4__p2_0},
{0,0,&_44u4__p3_0},
{0,0,&_44u4__p4_0},
{0,0,&_44u4__p5_0},
{&_44u4__p6_0,&_44u4__p6_1},
{&_44u4__p7_0,&_44u4__p7_1,&_44u4__p7_2}
}
};
static const static_bookblock _resbook_44u_5={
{
{0},
{0,0,&_44u5__p1_0},
{0,0,&_44u5__p2_0},
{0,0,&_44u5__p3_0},
{0,0,&_44u5__p4_0},
{0,0,&_44u5__p5_0},
{0,0,&_44u5__p6_0},
{&_44u5__p7_0,&_44u5__p7_1},
{&_44u5__p8_0,&_44u5__p8_1},
{&_44u5__p9_0,&_44u5__p9_1,&_44u5__p9_2}
}
};
static const static_bookblock _resbook_44u_6={
{
{0},
{0,0,&_44u6__p1_0},
{0,0,&_44u6__p2_0},
{0,0,&_44u6__p3_0},
{0,0,&_44u6__p4_0},
{0,0,&_44u6__p5_0},
{0,0,&_44u6__p6_0},
{&_44u6__p7_0,&_44u6__p7_1},
{&_44u6__p8_0,&_44u6__p8_1},
{&_44u6__p9_0,&_44u6__p9_1,&_44u6__p9_2}
}
};
static const static_bookblock _resbook_44u_7={
{
{0},
{0,0,&_44u7__p1_0},
{0,0,&_44u7__p2_0},
{0,0,&_44u7__p3_0},
{0,0,&_44u7__p4_0},
{0,0,&_44u7__p5_0},
{0,0,&_44u7__p6_0},
{&_44u7__p7_0,&_44u7__p7_1},
{&_44u7__p8_0,&_44u7__p8_1},
{&_44u7__p9_0,&_44u7__p9_1,&_44u7__p9_2}
}
};
static const static_bookblock _resbook_44u_8={
{
{0},
{0,0,&_44u8_p1_0},
{0,0,&_44u8_p2_0},
{0,0,&_44u8_p3_0},
{0,0,&_44u8_p4_0},
{&_44u8_p5_0,&_44u8_p5_1},
{&_44u8_p6_0,&_44u8_p6_1},
{&_44u8_p7_0,&_44u8_p7_1},
{&_44u8_p8_0,&_44u8_p8_1},
{&_44u8_p9_0,&_44u8_p9_1,&_44u8_p9_2}
}
};
static const static_bookblock _resbook_44u_9={
{
{0},
{0,0,&_44u9_p1_0},
{0,0,&_44u9_p2_0},
{0,0,&_44u9_p3_0},
{0,0,&_44u9_p4_0},
{&_44u9_p5_0,&_44u9_p5_1},
{&_44u9_p6_0,&_44u9_p6_1},
{&_44u9_p7_0,&_44u9_p7_1},
{&_44u9_p8_0,&_44u9_p8_1},
{&_44u9_p9_0,&_44u9_p9_1,&_44u9_p9_2}
}
};
 
static const vorbis_residue_template _res_44u_n1[]={
{1,0,32, &_residue_44_low_un,
&_huff_book__44un1__short,&_huff_book__44un1__short,
&_resbook_44u_n1,&_resbook_44u_n1},
 
{1,0,32, &_residue_44_low_un,
&_huff_book__44un1__long,&_huff_book__44un1__long,
&_resbook_44u_n1,&_resbook_44u_n1}
};
static const vorbis_residue_template _res_44u_0[]={
{1,0,16, &_residue_44_low_un,
&_huff_book__44u0__short,&_huff_book__44u0__short,
&_resbook_44u_0,&_resbook_44u_0},
 
{1,0,32, &_residue_44_low_un,
&_huff_book__44u0__long,&_huff_book__44u0__long,
&_resbook_44u_0,&_resbook_44u_0}
};
static const vorbis_residue_template _res_44u_1[]={
{1,0,16, &_residue_44_low_un,
&_huff_book__44u1__short,&_huff_book__44u1__short,
&_resbook_44u_1,&_resbook_44u_1},
 
{1,0,32, &_residue_44_low_un,
&_huff_book__44u1__long,&_huff_book__44u1__long,
&_resbook_44u_1,&_resbook_44u_1}
};
static const vorbis_residue_template _res_44u_2[]={
{1,0,16, &_residue_44_low_un,
&_huff_book__44u2__short,&_huff_book__44u2__short,
&_resbook_44u_2,&_resbook_44u_2},
 
{1,0,32, &_residue_44_low_un,
&_huff_book__44u2__long,&_huff_book__44u2__long,
&_resbook_44u_2,&_resbook_44u_2}
};
static const vorbis_residue_template _res_44u_3[]={
{1,0,16, &_residue_44_low_un,
&_huff_book__44u3__short,&_huff_book__44u3__short,
&_resbook_44u_3,&_resbook_44u_3},
 
{1,0,32, &_residue_44_low_un,
&_huff_book__44u3__long,&_huff_book__44u3__long,
&_resbook_44u_3,&_resbook_44u_3}
};
static const vorbis_residue_template _res_44u_4[]={
{1,0,16, &_residue_44_low_un,
&_huff_book__44u4__short,&_huff_book__44u4__short,
&_resbook_44u_4,&_resbook_44u_4},
 
{1,0,32, &_residue_44_low_un,
&_huff_book__44u4__long,&_huff_book__44u4__long,
&_resbook_44u_4,&_resbook_44u_4}
};
 
static const vorbis_residue_template _res_44u_5[]={
{1,0,16, &_residue_44_mid_un,
&_huff_book__44u5__short,&_huff_book__44u5__short,
&_resbook_44u_5,&_resbook_44u_5},
 
{1,0,32, &_residue_44_mid_un,
&_huff_book__44u5__long,&_huff_book__44u5__long,
&_resbook_44u_5,&_resbook_44u_5}
};
 
static const vorbis_residue_template _res_44u_6[]={
{1,0,16, &_residue_44_mid_un,
&_huff_book__44u6__short,&_huff_book__44u6__short,
&_resbook_44u_6,&_resbook_44u_6},
 
{1,0,32, &_residue_44_mid_un,
&_huff_book__44u6__long,&_huff_book__44u6__long,
&_resbook_44u_6,&_resbook_44u_6}
};
 
static const vorbis_residue_template _res_44u_7[]={
{1,0,16, &_residue_44_mid_un,
&_huff_book__44u7__short,&_huff_book__44u7__short,
&_resbook_44u_7,&_resbook_44u_7},
 
{1,0,32, &_residue_44_mid_un,
&_huff_book__44u7__long,&_huff_book__44u7__long,
&_resbook_44u_7,&_resbook_44u_7}
};
 
static const vorbis_residue_template _res_44u_8[]={
{1,0,16, &_residue_44_hi_un,
&_huff_book__44u8__short,&_huff_book__44u8__short,
&_resbook_44u_8,&_resbook_44u_8},
 
{1,0,32, &_residue_44_hi_un,
&_huff_book__44u8__long,&_huff_book__44u8__long,
&_resbook_44u_8,&_resbook_44u_8}
};
static const vorbis_residue_template _res_44u_9[]={
{1,0,16, &_residue_44_hi_un,
&_huff_book__44u9__short,&_huff_book__44u9__short,
&_resbook_44u_9,&_resbook_44u_9},
 
{1,0,32, &_residue_44_hi_un,
&_huff_book__44u9__long,&_huff_book__44u9__long,
&_resbook_44u_9,&_resbook_44u_9}
};
 
static const vorbis_mapping_template _mapres_template_44_uncoupled[]={
{ _map_nominal_u, _res_44u_n1 }, /* -1 */
{ _map_nominal_u, _res_44u_0 }, /* 0 */
{ _map_nominal_u, _res_44u_1 }, /* 1 */
{ _map_nominal_u, _res_44u_2 }, /* 2 */
{ _map_nominal_u, _res_44u_3 }, /* 3 */
{ _map_nominal_u, _res_44u_4 }, /* 4 */
{ _map_nominal_u, _res_44u_5 }, /* 5 */
{ _map_nominal_u, _res_44u_6 }, /* 6 */
{ _map_nominal_u, _res_44u_7 }, /* 7 */
{ _map_nominal_u, _res_44u_8 }, /* 8 */
{ _map_nominal_u, _res_44u_9 }, /* 9 */
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/residue_8.h
0,0 → 1,108
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: toplevel residue templates 8/11kHz
 
********************************************************************/
 
#include "vorbis/codec.h"
#include "backends.h"
 
/***** residue backends *********************************************/
 
static const static_bookblock _resbook_8s_0={
{
{0},
{0,0,&_8c0_s_p1_0},
{0},
{0,0,&_8c0_s_p3_0},
{0,0,&_8c0_s_p4_0},
{0,0,&_8c0_s_p5_0},
{0,0,&_8c0_s_p6_0},
{&_8c0_s_p7_0,&_8c0_s_p7_1},
{&_8c0_s_p8_0,&_8c0_s_p8_1},
{&_8c0_s_p9_0,&_8c0_s_p9_1,&_8c0_s_p9_2}
}
};
static const static_bookblock _resbook_8s_1={
{
{0},
{0,0,&_8c1_s_p1_0},
{0},
{0,0,&_8c1_s_p3_0},
{0,0,&_8c1_s_p4_0},
{0,0,&_8c1_s_p5_0},
{0,0,&_8c1_s_p6_0},
{&_8c1_s_p7_0,&_8c1_s_p7_1},
{&_8c1_s_p8_0,&_8c1_s_p8_1},
{&_8c1_s_p9_0,&_8c1_s_p9_1,&_8c1_s_p9_2}
}
};
 
static const vorbis_residue_template _res_8s_0[]={
{2,0,32, &_residue_44_mid,
&_huff_book__8c0_s_single,&_huff_book__8c0_s_single,
&_resbook_8s_0,&_resbook_8s_0},
};
static const vorbis_residue_template _res_8s_1[]={
{2,0,32, &_residue_44_mid,
&_huff_book__8c1_s_single,&_huff_book__8c1_s_single,
&_resbook_8s_1,&_resbook_8s_1},
};
 
static const vorbis_mapping_template _mapres_template_8_stereo[2]={
{ _map_nominal, _res_8s_0 }, /* 0 */
{ _map_nominal, _res_8s_1 }, /* 1 */
};
 
static const static_bookblock _resbook_8u_0={
{
{0},
{0,0,&_8u0__p1_0},
{0,0,&_8u0__p2_0},
{0,0,&_8u0__p3_0},
{0,0,&_8u0__p4_0},
{0,0,&_8u0__p5_0},
{&_8u0__p6_0,&_8u0__p6_1},
{&_8u0__p7_0,&_8u0__p7_1,&_8u0__p7_2}
}
};
static const static_bookblock _resbook_8u_1={
{
{0},
{0,0,&_8u1__p1_0},
{0,0,&_8u1__p2_0},
{0,0,&_8u1__p3_0},
{0,0,&_8u1__p4_0},
{0,0,&_8u1__p5_0},
{0,0,&_8u1__p6_0},
{&_8u1__p7_0,&_8u1__p7_1},
{&_8u1__p8_0,&_8u1__p8_1},
{&_8u1__p9_0,&_8u1__p9_1,&_8u1__p9_2}
}
};
 
static const vorbis_residue_template _res_8u_0[]={
{1,0,32, &_residue_44_low_un,
&_huff_book__8u0__single,&_huff_book__8u0__single,
&_resbook_8u_0,&_resbook_8u_0},
};
static const vorbis_residue_template _res_8u_1[]={
{1,0,32, &_residue_44_mid_un,
&_huff_book__8u1__single,&_huff_book__8u1__single,
&_resbook_8u_1,&_resbook_8u_1},
};
 
static const vorbis_mapping_template _mapres_template_8_uncoupled[2]={
{ _map_nominal_u, _res_8u_0 }, /* 0 */
{ _map_nominal_u, _res_8u_1 }, /* 1 */
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/setup_11.h
0,0 → 1,142
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: 11kHz settings
 
********************************************************************/
 
#include "psych_11.h"
 
static const int blocksize_11[2]={
512,512
};
 
static const int _floor_mapping_11a[]={
6,6
};
static const int *_floor_mapping_11[]={
_floor_mapping_11a
};
 
static const double rate_mapping_11[3]={
8000.,13000.,44000.,
};
 
static const double rate_mapping_11_uncoupled[3]={
12000.,20000.,50000.,
};
 
static const double quality_mapping_11[3]={
-.1,.0,1.
};
 
static const ve_setup_data_template ve_setup_11_stereo={
2,
rate_mapping_11,
quality_mapping_11,
2,
9000,
15000,
 
blocksize_11,
blocksize_11,
 
_psy_tone_masteratt_11,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_11,
NULL,
_vp_tonemask_adj_11,
 
_psy_noiseguards_8,
_psy_noisebias_11,
_psy_noisebias_11,
NULL,
NULL,
_psy_noise_suppress,
 
_psy_compand_8,
_psy_compand_8_mapping,
NULL,
 
{_noise_start_8,_noise_start_8},
{_noise_part_8,_noise_part_8},
_noise_thresh_11,
 
_psy_ath_floater_8,
_psy_ath_abs_8,
 
_psy_lowpass_11,
 
_psy_global_44,
_global_mapping_8,
_psy_stereo_modes_8,
 
_floor_books,
_floor,
1,
_floor_mapping_11,
 
_mapres_template_8_stereo
};
 
static const ve_setup_data_template ve_setup_11_uncoupled={
2,
rate_mapping_11_uncoupled,
quality_mapping_11,
-1,
9000,
15000,
 
blocksize_11,
blocksize_11,
 
_psy_tone_masteratt_11,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_11,
NULL,
_vp_tonemask_adj_11,
 
_psy_noiseguards_8,
_psy_noisebias_11,
_psy_noisebias_11,
NULL,
NULL,
_psy_noise_suppress,
 
_psy_compand_8,
_psy_compand_8_mapping,
NULL,
 
{_noise_start_8,_noise_start_8},
{_noise_part_8,_noise_part_8},
_noise_thresh_11,
 
_psy_ath_floater_8,
_psy_ath_abs_8,
 
_psy_lowpass_11,
 
_psy_global_44,
_global_mapping_8,
_psy_stereo_modes_8,
 
_floor_books,
_floor,
1,
_floor_mapping_11,
 
_mapres_template_8_uncoupled
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/setup_16.h
0,0 → 1,152
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: 16kHz settings
 
********************************************************************/
 
#include "psych_16.h"
#include "residue_16.h"
 
static const int blocksize_16_short[3]={
1024,512,512
};
static const int blocksize_16_long[3]={
1024,1024,1024
};
 
static const int _floor_mapping_16a[]={
9,3,3
};
static const int _floor_mapping_16b[]={
9,9,9
};
static const int *_floor_mapping_16[]={
_floor_mapping_16a,
_floor_mapping_16b
};
 
static const double rate_mapping_16[4]={
12000.,20000.,44000.,86000.
};
 
static const double rate_mapping_16_uncoupled[4]={
16000.,28000.,64000.,100000.
};
 
static const double _global_mapping_16[4]={ 1., 2., 3., 4. };
 
static const double quality_mapping_16[4]={ -.1,.05,.5,1. };
 
static const double _psy_compand_16_mapping[4]={ 0., .8, 1., 1.};
 
static const ve_setup_data_template ve_setup_16_stereo={
3,
rate_mapping_16,
quality_mapping_16,
2,
15000,
19000,
 
blocksize_16_short,
blocksize_16_long,
 
_psy_tone_masteratt_16,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_16,
_vp_tonemask_adj_16,
_vp_tonemask_adj_16,
 
_psy_noiseguards_16,
_psy_noisebias_16_impulse,
_psy_noisebias_16_short,
_psy_noisebias_16_short,
_psy_noisebias_16,
_psy_noise_suppress,
 
_psy_compand_8,
_psy_compand_16_mapping,
_psy_compand_16_mapping,
 
{_noise_start_16,_noise_start_16},
{ _noise_part_16, _noise_part_16},
_noise_thresh_16,
 
_psy_ath_floater_16,
_psy_ath_abs_16,
 
_psy_lowpass_16,
 
_psy_global_44,
_global_mapping_16,
_psy_stereo_modes_16,
 
_floor_books,
_floor,
2,
_floor_mapping_16,
 
_mapres_template_16_stereo
};
 
static const ve_setup_data_template ve_setup_16_uncoupled={
3,
rate_mapping_16_uncoupled,
quality_mapping_16,
-1,
15000,
19000,
 
blocksize_16_short,
blocksize_16_long,
 
_psy_tone_masteratt_16,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_16,
_vp_tonemask_adj_16,
_vp_tonemask_adj_16,
 
_psy_noiseguards_16,
_psy_noisebias_16_impulse,
_psy_noisebias_16_short,
_psy_noisebias_16_short,
_psy_noisebias_16,
_psy_noise_suppress,
 
_psy_compand_8,
_psy_compand_16_mapping,
_psy_compand_16_mapping,
 
{_noise_start_16,_noise_start_16},
{ _noise_part_16, _noise_part_16},
_noise_thresh_16,
 
_psy_ath_floater_16,
_psy_ath_abs_16,
 
_psy_lowpass_16,
 
_psy_global_44,
_global_mapping_16,
_psy_stereo_modes_16,
 
_floor_books,
_floor,
2,
_floor_mapping_16,
 
_mapres_template_16_uncoupled
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/setup_22.h
0,0 → 1,127
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: 22kHz settings
 
********************************************************************/
 
static const double rate_mapping_22[4]={
15000.,20000.,44000.,86000.
};
 
static const double rate_mapping_22_uncoupled[4]={
16000.,28000.,50000.,90000.
};
 
static const double _psy_lowpass_22[4]={9.5,11.,30.,99.};
 
static const ve_setup_data_template ve_setup_22_stereo={
3,
rate_mapping_22,
quality_mapping_16,
2,
19000,
26000,
 
blocksize_16_short,
blocksize_16_long,
 
_psy_tone_masteratt_16,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_16,
_vp_tonemask_adj_16,
_vp_tonemask_adj_16,
 
_psy_noiseguards_16,
_psy_noisebias_16_impulse,
_psy_noisebias_16_short,
_psy_noisebias_16_short,
_psy_noisebias_16,
_psy_noise_suppress,
 
_psy_compand_8,
_psy_compand_16_mapping,
_psy_compand_16_mapping,
 
{_noise_start_16,_noise_start_16},
{ _noise_part_16, _noise_part_16},
_noise_thresh_16,
 
_psy_ath_floater_16,
_psy_ath_abs_16,
 
_psy_lowpass_22,
 
_psy_global_44,
_global_mapping_16,
_psy_stereo_modes_16,
 
_floor_books,
_floor,
2,
_floor_mapping_16,
 
_mapres_template_16_stereo
};
 
static const ve_setup_data_template ve_setup_22_uncoupled={
3,
rate_mapping_22_uncoupled,
quality_mapping_16,
-1,
19000,
26000,
 
blocksize_16_short,
blocksize_16_long,
 
_psy_tone_masteratt_16,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_16,
_vp_tonemask_adj_16,
_vp_tonemask_adj_16,
 
_psy_noiseguards_16,
_psy_noisebias_16_impulse,
_psy_noisebias_16_short,
_psy_noisebias_16_short,
_psy_noisebias_16,
_psy_noise_suppress,
 
_psy_compand_8,
_psy_compand_16_mapping,
_psy_compand_16_mapping,
 
{_noise_start_16,_noise_start_16},
{ _noise_part_16, _noise_part_16},
_noise_thresh_16,
 
_psy_ath_floater_16,
_psy_ath_abs_16,
 
_psy_lowpass_22,
 
_psy_global_44,
_global_mapping_16,
_psy_stereo_modes_16,
 
_floor_books,
_floor,
2,
_floor_mapping_16,
 
_mapres_template_16_uncoupled
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/setup_32.h
0,0 → 1,131
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: toplevel settings for 32kHz
 
********************************************************************/
 
static const double rate_mapping_32[12]={
18000.,28000.,35000.,45000.,56000.,60000.,
75000.,90000.,100000.,115000.,150000.,190000.,
};
 
static const double rate_mapping_32_un[12]={
30000.,42000.,52000.,64000.,72000.,78000.,
86000.,92000.,110000.,120000.,140000.,190000.,
};
 
static const double _psy_lowpass_32[12]={
12.3,13.,13.,14.,15.,99.,99.,99.,99.,99.,99.,99.
};
 
static const ve_setup_data_template ve_setup_32_stereo={
11,
rate_mapping_32,
quality_mapping_44,
2,
26000,
40000,
 
blocksize_short_44,
blocksize_long_44,
 
_psy_tone_masteratt_44,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_otherblock,
_vp_tonemask_adj_longblock,
_vp_tonemask_adj_otherblock,
 
_psy_noiseguards_44,
_psy_noisebias_impulse,
_psy_noisebias_padding,
_psy_noisebias_trans,
_psy_noisebias_long,
_psy_noise_suppress,
 
_psy_compand_44,
_psy_compand_short_mapping,
_psy_compand_long_mapping,
 
{_noise_start_short_44,_noise_start_long_44},
{_noise_part_short_44,_noise_part_long_44},
_noise_thresh_44,
 
_psy_ath_floater,
_psy_ath_abs,
 
_psy_lowpass_32,
 
_psy_global_44,
_global_mapping_44,
_psy_stereo_modes_44,
 
_floor_books,
_floor,
2,
_floor_mapping_44,
 
_mapres_template_44_stereo
};
 
static const ve_setup_data_template ve_setup_32_uncoupled={
11,
rate_mapping_32_un,
quality_mapping_44,
-1,
26000,
40000,
 
blocksize_short_44,
blocksize_long_44,
 
_psy_tone_masteratt_44,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_otherblock,
_vp_tonemask_adj_longblock,
_vp_tonemask_adj_otherblock,
 
_psy_noiseguards_44,
_psy_noisebias_impulse,
_psy_noisebias_padding,
_psy_noisebias_trans,
_psy_noisebias_long,
_psy_noise_suppress,
 
_psy_compand_44,
_psy_compand_short_mapping,
_psy_compand_long_mapping,
 
{_noise_start_short_44,_noise_start_long_44},
{_noise_part_short_44,_noise_part_long_44},
_noise_thresh_44,
 
_psy_ath_floater,
_psy_ath_abs,
 
_psy_lowpass_32,
 
_psy_global_44,
_global_mapping_44,
NULL,
 
_floor_books,
_floor,
2,
_floor_mapping_44,
 
_mapres_template_44_uncoupled
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/setup_44.h
0,0 → 1,116
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: toplevel settings for 44.1/48kHz
 
********************************************************************/
 
#include "modes/floor_all.h"
#include "modes/residue_44.h"
#include "modes/psych_44.h"
 
static const double rate_mapping_44_stereo[12]={
22500.,32000.,40000.,48000.,56000.,64000.,
80000.,96000.,112000.,128000.,160000.,250001.
};
 
static const double quality_mapping_44[12]={
-.1,.0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1.0
};
 
static const int blocksize_short_44[11]={
512,256,256,256,256,256,256,256,256,256,256
};
static const int blocksize_long_44[11]={
4096,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048
};
 
static const double _psy_compand_short_mapping[12]={
0.5, 1., 1., 1.3, 1.6, 2., 2., 2., 2., 2., 2., 2.
};
static const double _psy_compand_long_mapping[12]={
3.5, 4., 4., 4.3, 4.6, 5., 5., 5., 5., 5., 5., 5.
};
 
static const double _global_mapping_44[12]={
/* 1., 1., 1.5, 2., 2., 2.5, 2.7, 3.0, 3.5, 4., 4. */
0., 1., 1., 1.5, 2., 2., 2.5, 2.7, 3.0, 3.7, 4., 4.
};
 
static const int _floor_mapping_44a[11]={
1,0,0,2,2,4,5,5,5,5,5
};
 
static const int _floor_mapping_44b[11]={
8,7,7,7,7,7,7,7,7,7,7
};
 
static const int _floor_mapping_44c[11]={
10,10,10,10,10,10,10,10,10,10,10
};
 
static const int *_floor_mapping_44[]={
_floor_mapping_44a,
_floor_mapping_44b,
_floor_mapping_44c,
};
 
static const ve_setup_data_template ve_setup_44_stereo={
11,
rate_mapping_44_stereo,
quality_mapping_44,
2,
40000,
50000,
 
blocksize_short_44,
blocksize_long_44,
 
_psy_tone_masteratt_44,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_otherblock,
_vp_tonemask_adj_longblock,
_vp_tonemask_adj_otherblock,
 
_psy_noiseguards_44,
_psy_noisebias_impulse,
_psy_noisebias_padding,
_psy_noisebias_trans,
_psy_noisebias_long,
_psy_noise_suppress,
 
_psy_compand_44,
_psy_compand_short_mapping,
_psy_compand_long_mapping,
 
{_noise_start_short_44,_noise_start_long_44},
{_noise_part_short_44,_noise_part_long_44},
_noise_thresh_44,
 
_psy_ath_floater,
_psy_ath_abs,
 
_psy_lowpass_44,
 
_psy_global_44,
_global_mapping_44,
_psy_stereo_modes_44,
 
_floor_books,
_floor,
2,
_floor_mapping_44,
 
_mapres_template_44_stereo
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/setup_44p51.h
0,0 → 1,73
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: toplevel settings for 44.1/48kHz 5.1 surround modes
 
********************************************************************/
 
#include "modes/residue_44p51.h"
 
static const double rate_mapping_44p51[12]={
14000.,20000.,28000.,38000.,46000.,54000.,
75000.,96000.,120000.,140000.,180000.,240001.
};
 
static const ve_setup_data_template ve_setup_44_51={
11,
rate_mapping_44p51,
quality_mapping_44,
6,
40000,
70000,
 
blocksize_short_44,
blocksize_long_44,
 
_psy_tone_masteratt_44,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_otherblock,
_vp_tonemask_adj_longblock,
_vp_tonemask_adj_otherblock,
 
_psy_noiseguards_44,
_psy_noisebias_impulse,
_psy_noisebias_padding,
_psy_noisebias_trans,
_psy_noisebias_long,
_psy_noise_suppress,
 
_psy_compand_44,
_psy_compand_short_mapping,
_psy_compand_long_mapping,
 
{_noise_start_short_44,_noise_start_long_44},
{_noise_part_short_44,_noise_part_long_44},
_noise_thresh_44,
 
_psy_ath_floater,
_psy_ath_abs,
 
_psy_lowpass_44,
 
_psy_global_44,
_global_mapping_44,
_psy_stereo_modes_44,
 
_floor_books,
_floor,
3,
_floor_mapping_44,
 
_mapres_template_44_51
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/setup_44u.h
0,0 → 1,73
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: toplevel settings for 44.1/48kHz uncoupled modes
 
********************************************************************/
 
#include "modes/residue_44u.h"
 
static const double rate_mapping_44_un[12]={
32000.,48000.,60000.,70000.,80000.,86000.,
96000.,110000.,120000.,140000.,160000.,240001.
};
 
static const ve_setup_data_template ve_setup_44_uncoupled={
11,
rate_mapping_44_un,
quality_mapping_44,
-1,
40000,
50000,
 
blocksize_short_44,
blocksize_long_44,
 
_psy_tone_masteratt_44,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_otherblock,
_vp_tonemask_adj_longblock,
_vp_tonemask_adj_otherblock,
 
_psy_noiseguards_44,
_psy_noisebias_impulse,
_psy_noisebias_padding,
_psy_noisebias_trans,
_psy_noisebias_long,
_psy_noise_suppress,
 
_psy_compand_44,
_psy_compand_short_mapping,
_psy_compand_long_mapping,
 
{_noise_start_short_44,_noise_start_long_44},
{_noise_part_short_44,_noise_part_long_44},
_noise_thresh_44,
 
_psy_ath_floater,
_psy_ath_abs,
 
_psy_lowpass_44,
 
_psy_global_44,
_global_mapping_44,
_psy_stereo_modes_44,
 
_floor_books,
_floor,
2,
_floor_mapping_44,
 
_mapres_template_44_uncoupled
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/setup_8.h
0,0 → 1,148
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: 8kHz settings
 
********************************************************************/
 
#include "psych_8.h"
#include "residue_8.h"
 
static const int blocksize_8[2]={
512,512
};
 
static const int _floor_mapping_8a[]={
6,6
};
 
static const int *_floor_mapping_8[]={
_floor_mapping_8a
};
 
static const double rate_mapping_8[3]={
6000.,9000.,32000.,
};
 
static const double rate_mapping_8_uncoupled[3]={
8000.,14000.,42000.,
};
 
static const double quality_mapping_8[3]={
-.1,.0,1.
};
 
static const double _psy_compand_8_mapping[3]={ 0., 1., 1.};
 
static const double _global_mapping_8[3]={ 1., 2., 3. };
 
static const ve_setup_data_template ve_setup_8_stereo={
2,
rate_mapping_8,
quality_mapping_8,
2,
8000,
9000,
 
blocksize_8,
blocksize_8,
 
_psy_tone_masteratt_8,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_8,
NULL,
_vp_tonemask_adj_8,
 
_psy_noiseguards_8,
_psy_noisebias_8,
_psy_noisebias_8,
NULL,
NULL,
_psy_noise_suppress,
 
_psy_compand_8,
_psy_compand_8_mapping,
NULL,
 
{_noise_start_8,_noise_start_8},
{_noise_part_8,_noise_part_8},
_noise_thresh_5only,
 
_psy_ath_floater_8,
_psy_ath_abs_8,
 
_psy_lowpass_8,
 
_psy_global_44,
_global_mapping_8,
_psy_stereo_modes_8,
 
_floor_books,
_floor,
1,
_floor_mapping_8,
 
_mapres_template_8_stereo
};
 
static const ve_setup_data_template ve_setup_8_uncoupled={
2,
rate_mapping_8_uncoupled,
quality_mapping_8,
-1,
8000,
9000,
 
blocksize_8,
blocksize_8,
 
_psy_tone_masteratt_8,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_8,
NULL,
_vp_tonemask_adj_8,
 
_psy_noiseguards_8,
_psy_noisebias_8,
_psy_noisebias_8,
NULL,
NULL,
_psy_noise_suppress,
 
_psy_compand_8,
_psy_compand_8_mapping,
NULL,
 
{_noise_start_8,_noise_start_8},
{_noise_part_8,_noise_part_8},
_noise_thresh_5only,
 
_psy_ath_floater_8,
_psy_ath_abs_8,
 
_psy_lowpass_8,
 
_psy_global_44,
_global_mapping_8,
_psy_stereo_modes_8,
 
_floor_books,
_floor,
1,
_floor_mapping_8,
 
_mapres_template_8_uncoupled
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/modes/setup_X.h
0,0 → 1,224
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: catch-all toplevel settings for q modes only
 
********************************************************************/
 
static const double rate_mapping_X[12]={
-1.,-1.,-1.,-1.,-1.,-1.,
-1.,-1.,-1.,-1.,-1.,-1.
};
 
static const ve_setup_data_template ve_setup_X_stereo={
11,
rate_mapping_X,
quality_mapping_44,
2,
50000,
200000,
 
blocksize_short_44,
blocksize_long_44,
 
_psy_tone_masteratt_44,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_otherblock,
_vp_tonemask_adj_longblock,
_vp_tonemask_adj_otherblock,
 
_psy_noiseguards_44,
_psy_noisebias_impulse,
_psy_noisebias_padding,
_psy_noisebias_trans,
_psy_noisebias_long,
_psy_noise_suppress,
 
_psy_compand_44,
_psy_compand_short_mapping,
_psy_compand_long_mapping,
 
{_noise_start_short_44,_noise_start_long_44},
{_noise_part_short_44,_noise_part_long_44},
_noise_thresh_44,
 
_psy_ath_floater,
_psy_ath_abs,
 
_psy_lowpass_44,
 
_psy_global_44,
_global_mapping_44,
_psy_stereo_modes_44,
 
_floor_books,
_floor,
2,
_floor_mapping_44,
 
_mapres_template_44_stereo
};
 
static const ve_setup_data_template ve_setup_X_uncoupled={
11,
rate_mapping_X,
quality_mapping_44,
-1,
50000,
200000,
 
blocksize_short_44,
blocksize_long_44,
 
_psy_tone_masteratt_44,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_otherblock,
_vp_tonemask_adj_longblock,
_vp_tonemask_adj_otherblock,
 
_psy_noiseguards_44,
_psy_noisebias_impulse,
_psy_noisebias_padding,
_psy_noisebias_trans,
_psy_noisebias_long,
_psy_noise_suppress,
 
_psy_compand_44,
_psy_compand_short_mapping,
_psy_compand_long_mapping,
 
{_noise_start_short_44,_noise_start_long_44},
{_noise_part_short_44,_noise_part_long_44},
_noise_thresh_44,
 
_psy_ath_floater,
_psy_ath_abs,
 
_psy_lowpass_44,
 
_psy_global_44,
_global_mapping_44,
NULL,
 
_floor_books,
_floor,
2,
_floor_mapping_44,
 
_mapres_template_44_uncoupled
};
 
static const ve_setup_data_template ve_setup_XX_stereo={
2,
rate_mapping_X,
quality_mapping_8,
2,
0,
8000,
 
blocksize_8,
blocksize_8,
 
_psy_tone_masteratt_8,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_8,
NULL,
_vp_tonemask_adj_8,
 
_psy_noiseguards_8,
_psy_noisebias_8,
_psy_noisebias_8,
NULL,
NULL,
_psy_noise_suppress,
 
_psy_compand_8,
_psy_compand_8_mapping,
NULL,
 
{_noise_start_8,_noise_start_8},
{_noise_part_8,_noise_part_8},
_noise_thresh_5only,
 
_psy_ath_floater_8,
_psy_ath_abs_8,
 
_psy_lowpass_8,
 
_psy_global_44,
_global_mapping_8,
_psy_stereo_modes_8,
 
_floor_books,
_floor,
1,
_floor_mapping_8,
 
_mapres_template_8_stereo
};
 
static const ve_setup_data_template ve_setup_XX_uncoupled={
2,
rate_mapping_X,
quality_mapping_8,
-1,
0,
8000,
 
blocksize_8,
blocksize_8,
 
_psy_tone_masteratt_8,
_psy_tone_0dB,
_psy_tone_suppress,
 
_vp_tonemask_adj_8,
NULL,
_vp_tonemask_adj_8,
 
_psy_noiseguards_8,
_psy_noisebias_8,
_psy_noisebias_8,
NULL,
NULL,
_psy_noise_suppress,
 
_psy_compand_8,
_psy_compand_8_mapping,
NULL,
 
{_noise_start_8,_noise_start_8},
{_noise_part_8,_noise_part_8},
_noise_thresh_5only,
 
_psy_ath_floater_8,
_psy_ath_abs_8,
 
_psy_lowpass_8,
 
_psy_global_44,
_global_mapping_8,
_psy_stereo_modes_8,
 
_floor_books,
_floor,
1,
_floor_mapping_8,
 
_mapres_template_8_uncoupled
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/os.h
0,0 → 1,189
#ifndef _OS_H
#define _OS_H
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: #ifdef jail to whip a few platforms into the UNIX ideal.
 
********************************************************************/
 
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
 
#include <math.h>
#include <ogg/os_types.h>
 
#include "misc.h"
 
#ifndef _V_IFDEFJAIL_H_
# define _V_IFDEFJAIL_H_
 
# ifdef __GNUC__
# define STIN static __inline__
# elif defined(_WIN32)
# define STIN static __inline
# else
# define STIN static
# endif
 
#ifdef DJGPP
# define rint(x) (floor((x)+0.5f))
#endif
 
#ifndef M_PI
# define M_PI (3.1415926536f)
#endif
 
#if defined(_WIN32) && !defined(__SYMBIAN32__)
# include <malloc.h>
# define rint(x) (floor((x)+0.5f))
# define NO_FLOAT_MATH_LIB
# define FAST_HYPOT(a, b) sqrt((a)*(a) + (b)*(b))
#endif
 
#if defined(__SYMBIAN32__) && defined(__WINS__)
void *_alloca(size_t size);
# define alloca _alloca
#endif
 
#ifndef FAST_HYPOT
# define FAST_HYPOT hypot
#endif
 
#endif /* _V_IFDEFJAIL_H_ */
 
#ifdef HAVE_ALLOCA_H
# include <alloca.h>
#endif
 
#ifdef USE_MEMORY_H
# include <memory.h>
#endif
 
#ifndef min
# define min(x,y) ((x)>(y)?(y):(x))
#endif
 
#ifndef max
# define max(x,y) ((x)<(y)?(y):(x))
#endif
 
 
/* Special i386 GCC implementation */
#if defined(__i386__) && defined(__GNUC__) && !defined(__BEOS__) && !defined(__SSE2_MATH__)
# define VORBIS_FPU_CONTROL
/* both GCC and MSVC are kinda stupid about rounding/casting to int.
Because of encapsulation constraints (GCC can't see inside the asm
block and so we end up doing stupid things like a store/load that
is collectively a noop), we do it this way */
 
/* we must set up the fpu before this works!! */
 
typedef ogg_int16_t vorbis_fpu_control;
 
static inline void vorbis_fpu_setround(vorbis_fpu_control *fpu){
ogg_int16_t ret;
ogg_int16_t temp;
__asm__ __volatile__("fnstcw %0\n\t"
"movw %0,%%dx\n\t"
"andw $62463,%%dx\n\t"
"movw %%dx,%1\n\t"
"fldcw %1\n\t":"=m"(ret):"m"(temp): "dx");
*fpu=ret;
}
 
static inline void vorbis_fpu_restore(vorbis_fpu_control fpu){
__asm__ __volatile__("fldcw %0":: "m"(fpu));
}
 
/* assumes the FPU is in round mode! */
static inline int vorbis_ftoi(double f){ /* yes, double! Otherwise,
we get extra fst/fld to
truncate precision */
int i;
__asm__("fistl %0": "=m"(i) : "t"(f));
return(i);
}
#endif /* Special i386 GCC implementation */
 
 
/* MSVC inline assembly. 32 bit only; inline ASM isn't implemented in the
* 64 bit compiler and doesn't work on arm. */
#if defined(_MSC_VER) && defined(_M_IX86) && !defined(_WIN32_WCE)
# define VORBIS_FPU_CONTROL
 
typedef ogg_int16_t vorbis_fpu_control;
 
static __inline int vorbis_ftoi(double f){
int i;
__asm{
fld f
fistp i
}
return i;
}
 
static __inline void vorbis_fpu_setround(vorbis_fpu_control *fpu){
(void)fpu;
}
 
static __inline void vorbis_fpu_restore(vorbis_fpu_control fpu){
(void)fpu;
}
 
#endif /* Special MSVC 32 bit implementation */
 
 
/* Optimized code path for x86_64 builds. Uses SSE2 intrinsics. This can be
done safely because all x86_64 CPUs supports SSE2. */
#if (defined(_MSC_VER) && defined(_M_X64)) || (defined(__GNUC__) && defined (__SSE2_MATH__))
# define VORBIS_FPU_CONTROL
 
typedef ogg_int16_t vorbis_fpu_control;
 
#include <emmintrin.h>
static __inline int vorbis_ftoi(double f){
return _mm_cvtsd_si32(_mm_load_sd(&f));
}
 
static __inline void vorbis_fpu_setround(vorbis_fpu_control *fpu){
(void)fpu;
}
 
static __inline void vorbis_fpu_restore(vorbis_fpu_control fpu){
(void)fpu;
}
 
#endif /* Special MSVC x64 implementation */
 
 
/* If no special implementation was found for the current compiler / platform,
use the default implementation here: */
#ifndef VORBIS_FPU_CONTROL
 
typedef int vorbis_fpu_control;
 
STIN int vorbis_ftoi(double f){
/* Note: MSVC and GCC (at least on some systems) round towards zero, thus,
the floor() call is required to ensure correct roudning of
negative numbers */
return (int)floor(f+.5);
}
 
/* We don't have special code for this compiler/arch, so do it the slow way */
# define vorbis_fpu_setround(vorbis_fpu_control) {}
# define vorbis_fpu_restore(vorbis_fpu_control) {}
 
#endif /* default implementation */
 
#endif /* _OS_H */
/contrib/sdk/sources/libvorbis-1.3.7/lib/psy.c
0,0 → 1,1209
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: psychoacoustics not including preecho
 
********************************************************************/
 
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include "vorbis/codec.h"
#include "codec_internal.h"
 
#include "masking.h"
#include "psy.h"
#include "os.h"
#include "lpc.h"
#include "smallft.h"
#include "scales.h"
#include "misc.h"
 
#define NEGINF -9999.f
static const double stereo_threshholds[]={0.0, .5, 1.0, 1.5, 2.5, 4.5, 8.5, 16.5, 9e10};
static const double stereo_threshholds_limited[]={0.0, .5, 1.0, 1.5, 2.0, 2.5, 4.5, 8.5, 9e10};
 
vorbis_look_psy_global *_vp_global_look(vorbis_info *vi){
codec_setup_info *ci=vi->codec_setup;
vorbis_info_psy_global *gi=&ci->psy_g_param;
vorbis_look_psy_global *look=_ogg_calloc(1,sizeof(*look));
 
look->channels=vi->channels;
 
look->ampmax=-9999.;
look->gi=gi;
return(look);
}
 
void _vp_global_free(vorbis_look_psy_global *look){
if(look){
memset(look,0,sizeof(*look));
_ogg_free(look);
}
}
 
void _vi_gpsy_free(vorbis_info_psy_global *i){
if(i){
memset(i,0,sizeof(*i));
_ogg_free(i);
}
}
 
void _vi_psy_free(vorbis_info_psy *i){
if(i){
memset(i,0,sizeof(*i));
_ogg_free(i);
}
}
 
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 float ***setup_tone_curves(float curveatt_dB[P_BANDS],float binHz,int n,
float center_boost, float center_decay_rate){
int i,j,k,m;
float ath[EHMER_MAX];
float workc[P_BANDS][P_LEVELS][EHMER_MAX];
float athc[P_LEVELS][EHMER_MAX];
float *brute_buffer=alloca(n*sizeof(*brute_buffer));
 
float ***ret=_ogg_malloc(sizeof(*ret)*P_BANDS);
 
memset(workc,0,sizeof(workc));
 
for(i=0;i<P_BANDS;i++){
/* we add back in the ATH to avoid low level curves falling off to
-infinity and unnecessarily cutting off high level curves in the
curve limiting (last step). */
 
/* A half-band's settings must be valid over the whole band, and
it's better to mask too little than too much */
int ath_offset=i*4;
for(j=0;j<EHMER_MAX;j++){
float min=999.;
for(k=0;k<4;k++)
if(j+k+ath_offset<MAX_ATH){
if(min>ATH[j+k+ath_offset])min=ATH[j+k+ath_offset];
}else{
if(min>ATH[MAX_ATH-1])min=ATH[MAX_ATH-1];
}
ath[j]=min;
}
 
/* copy curves into working space, replicate the 50dB curve to 30
and 40, replicate the 100dB curve to 110 */
for(j=0;j<6;j++)
memcpy(workc[i][j+2],tonemasks[i][j],EHMER_MAX*sizeof(*tonemasks[i][j]));
memcpy(workc[i][0],tonemasks[i][0],EHMER_MAX*sizeof(*tonemasks[i][0]));
memcpy(workc[i][1],tonemasks[i][0],EHMER_MAX*sizeof(*tonemasks[i][0]));
 
/* apply centered curve boost/decay */
for(j=0;j<P_LEVELS;j++){
for(k=0;k<EHMER_MAX;k++){
float adj=center_boost+abs(EHMER_OFFSET-k)*center_decay_rate;
if(adj<0. && center_boost>0)adj=0.;
if(adj>0. && center_boost<0)adj=0.;
workc[i][j][k]+=adj;
}
}
 
/* normalize curves so the driving amplitude is 0dB */
/* make temp curves with the ATH overlayed */
for(j=0;j<P_LEVELS;j++){
attenuate_curve(workc[i][j],curveatt_dB[i]+100.-(j<2?2:j)*10.-P_LEVEL_0);
memcpy(athc[j],ath,EHMER_MAX*sizeof(**athc));
attenuate_curve(athc[j],+100.-j*10.f-P_LEVEL_0);
max_curve(athc[j],workc[i][j]);
}
 
/* 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(j=1;j<P_LEVELS;j++){
min_curve(athc[j],athc[j-1]);
min_curve(workc[i][j],athc[j]);
}
}
 
for(i=0;i<P_BANDS;i++){
int hi_curve,lo_curve,bin;
ret[i]=_ogg_malloc(sizeof(**ret)*P_LEVELS);
 
/* low frequency curves are measured with greater resolution than
the MDCT/FFT will actually give us; we want the curve applied
to the tone data to be pessimistic and thus apply the minimum
masking possible for a given bin. That means that a single bin
could span more than one octave and that the curve will be a
composite of multiple octaves. It also may mean that a single
bin may span > an eighth of an octave and that the eighth
octave values may also be composited. */
 
/* which octave curves will we be compositing? */
bin=floor(fromOC(i*.5)/binHz);
lo_curve= ceil(toOC(bin*binHz+1)*2);
hi_curve= floor(toOC((bin+1)*binHz)*2);
if(lo_curve>i)lo_curve=i;
if(lo_curve<0)lo_curve=0;
if(hi_curve>=P_BANDS)hi_curve=P_BANDS-1;
 
for(m=0;m<P_LEVELS;m++){
ret[i][m]=_ogg_malloc(sizeof(***ret)*(EHMER_MAX+2));
 
for(j=0;j<n;j++)brute_buffer[j]=999.;
 
/* render the curve into bins, then pull values back into curve.
The point is that any inherent subsampling aliasing results in
a safe minimum */
for(k=lo_curve;k<=hi_curve;k++){
int l=0;
 
for(j=0;j<EHMER_MAX;j++){
int lo_bin= fromOC(j*.125+k*.5-2.0625)/binHz;
int hi_bin= fromOC(j*.125+k*.5-1.9375)/binHz+1;
 
if(lo_bin<0)lo_bin=0;
if(lo_bin>n)lo_bin=n;
if(lo_bin<l)l=lo_bin;
if(hi_bin<0)hi_bin=0;
if(hi_bin>n)hi_bin=n;
 
for(;l<hi_bin && l<n;l++)
if(brute_buffer[l]>workc[k][m][j])
brute_buffer[l]=workc[k][m][j];
}
 
for(;l<n;l++)
if(brute_buffer[l]>workc[k][m][EHMER_MAX-1])
brute_buffer[l]=workc[k][m][EHMER_MAX-1];
 
}
 
/* be equally paranoid about being valid up to next half ocatve */
if(i+1<P_BANDS){
int l=0;
k=i+1;
for(j=0;j<EHMER_MAX;j++){
int lo_bin= fromOC(j*.125+i*.5-2.0625)/binHz;
int hi_bin= fromOC(j*.125+i*.5-1.9375)/binHz+1;
 
if(lo_bin<0)lo_bin=0;
if(lo_bin>n)lo_bin=n;
if(lo_bin<l)l=lo_bin;
if(hi_bin<0)hi_bin=0;
if(hi_bin>n)hi_bin=n;
 
for(;l<hi_bin && l<n;l++)
if(brute_buffer[l]>workc[k][m][j])
brute_buffer[l]=workc[k][m][j];
}
 
for(;l<n;l++)
if(brute_buffer[l]>workc[k][m][EHMER_MAX-1])
brute_buffer[l]=workc[k][m][EHMER_MAX-1];
 
}
 
 
for(j=0;j<EHMER_MAX;j++){
int bin=fromOC(j*.125+i*.5-2.)/binHz;
if(bin<0){
ret[i][m][j+2]=-999.;
}else{
if(bin>=n){
ret[i][m][j+2]=-999.;
}else{
ret[i][m][j+2]=brute_buffer[bin];
}
}
}
 
/* add fenceposts */
for(j=0;j<EHMER_OFFSET;j++)
if(ret[i][m][j+2]>-200.f)break;
ret[i][m][0]=j;
 
for(j=EHMER_MAX-1;j>EHMER_OFFSET+1;j--)
if(ret[i][m][j+2]>-200.f)
break;
ret[i][m][1]=j;
 
}
}
 
return(ret);
}
 
void _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,
vorbis_info_psy_global *gi,int n,long rate){
long i,j,lo=-99,hi=1;
long maxoc;
memset(p,0,sizeof(*p));
 
p->eighth_octave_lines=gi->eighth_octave_lines;
p->shiftoc=rint(log(gi->eighth_octave_lines*8.f)/log(2.f))-1;
 
p->firstoc=toOC(.25f*rate*.5/n)*(1<<(p->shiftoc+1))-gi->eighth_octave_lines;
maxoc=toOC((n+.25f)*rate*.5/n)*(1<<(p->shiftoc+1))+.5f;
p->total_octave_lines=maxoc-p->firstoc+1;
p->ath=_ogg_malloc(n*sizeof(*p->ath));
 
p->octave=_ogg_malloc(n*sizeof(*p->octave));
p->bark=_ogg_malloc(n*sizeof(*p->bark));
p->vi=vi;
p->n=n;
p->rate=rate;
 
/* AoTuV HF weighting */
p->m_val = 1.;
if(rate < 26000) p->m_val = 0;
else if(rate < 38000) p->m_val = .94; /* 32kHz */
else if(rate > 46000) p->m_val = 1.275; /* 48kHz */
 
/* set up the lookups for a given blocksize and sample rate */
 
for(i=0,j=0;i<MAX_ATH-1;i++){
int endpos=rint(fromOC((i+1)*.125-2.)*2*n/rate);
float base=ATH[i];
if(j<endpos){
float delta=(ATH[i+1]-base)/(endpos-j);
for(;j<endpos && j<n;j++){
p->ath[j]=base+100.;
base+=delta;
}
}
}
 
for(;j<n;j++){
p->ath[j]=p->ath[j-1];
}
 
for(i=0;i<n;i++){
float bark=toBARK(rate/(2*n)*i);
 
for(;lo+vi->noisewindowlomin<i &&
toBARK(rate/(2*n)*lo)<(bark-vi->noisewindowlo);lo++);
 
for(;hi<=n && (hi<i+vi->noisewindowhimin ||
toBARK(rate/(2*n)*hi)<(bark+vi->noisewindowhi));hi++);
 
p->bark[i]=((lo-1)<<16)+(hi-1);
 
}
 
for(i=0;i<n;i++)
p->octave[i]=toOC((i+.25f)*.5*rate/n)*(1<<(p->shiftoc+1))+.5f;
 
p->tonecurves=setup_tone_curves(vi->toneatt,rate*.5/n,n,
vi->tone_centerboost,vi->tone_decay);
 
/* set up rolling noise median */
p->noiseoffset=_ogg_malloc(P_NOISECURVES*sizeof(*p->noiseoffset));
for(i=0;i<P_NOISECURVES;i++)
p->noiseoffset[i]=_ogg_malloc(n*sizeof(**p->noiseoffset));
 
for(i=0;i<n;i++){
float halfoc=toOC((i+.5)*rate/(2.*n))*2.;
int inthalfoc;
float del;
 
if(halfoc<0)halfoc=0;
if(halfoc>=P_BANDS-1)halfoc=P_BANDS-1;
inthalfoc=(int)halfoc;
del=halfoc-inthalfoc;
 
for(j=0;j<P_NOISECURVES;j++)
p->noiseoffset[j][i]=
p->vi->noiseoff[j][inthalfoc]*(1.-del) +
p->vi->noiseoff[j][inthalfoc+1]*del;
 
}
#if 0
{
static int ls=0;
_analysis_output_always("noiseoff0",ls,p->noiseoffset[0],n,1,0,0);
_analysis_output_always("noiseoff1",ls,p->noiseoffset[1],n,1,0,0);
_analysis_output_always("noiseoff2",ls++,p->noiseoffset[2],n,1,0,0);
}
#endif
}
 
void _vp_psy_clear(vorbis_look_psy *p){
int i,j;
if(p){
if(p->ath)_ogg_free(p->ath);
if(p->octave)_ogg_free(p->octave);
if(p->bark)_ogg_free(p->bark);
if(p->tonecurves){
for(i=0;i<P_BANDS;i++){
for(j=0;j<P_LEVELS;j++){
_ogg_free(p->tonecurves[i][j]);
}
_ogg_free(p->tonecurves[i]);
}
_ogg_free(p->tonecurves);
}
if(p->noiseoffset){
for(i=0;i<P_NOISECURVES;i++){
_ogg_free(p->noiseoffset[i]);
}
_ogg_free(p->noiseoffset);
}
memset(p,0,sizeof(*p));
}
}
 
/* octave/(8*eighth_octave_lines) x scale and dB y scale */
static void seed_curve(float *seed,
const float **curves,
float amp,
int oc, int n,
int linesper,float dBoffset){
int i,post1;
int seedptr;
const float *posts,*curve;
 
int choice=(int)((amp+dBoffset-P_LEVEL_0)*.1f);
choice=max(choice,0);
choice=min(choice,P_LEVELS-1);
posts=curves[choice];
curve=posts+2;
post1=(int)posts[1];
seedptr=oc+(posts[0]-EHMER_OFFSET)*linesper-(linesper>>1);
 
for(i=posts[0];i<post1;i++){
if(seedptr>0){
float lin=amp+curve[i];
if(seed[seedptr]<lin)seed[seedptr]=lin;
}
seedptr+=linesper;
if(seedptr>=n)break;
}
}
 
static void seed_loop(vorbis_look_psy *p,
const float ***curves,
const float *f,
const float *flr,
float *seed,
float specmax){
vorbis_info_psy *vi=p->vi;
long n=p->n,i;
float dBoffset=vi->max_curve_dB-specmax;
 
/* prime the working vector with peak values */
 
for(i=0;i<n;i++){
float max=f[i];
long oc=p->octave[i];
while(i+1<n && p->octave[i+1]==oc){
i++;
if(f[i]>max)max=f[i];
}
 
if(max+6.f>flr[i]){
oc=oc>>p->shiftoc;
 
if(oc>=P_BANDS)oc=P_BANDS-1;
if(oc<0)oc=0;
 
seed_curve(seed,
curves[oc],
max,
p->octave[i]-p->firstoc,
p->total_octave_lines,
p->eighth_octave_lines,
dBoffset);
}
}
}
 
static void seed_chase(float *seeds, int linesper, long n){
long *posstack=alloca(n*sizeof(*posstack));
float *ampstack=alloca(n*sizeof(*ampstack));
long stack=0;
long pos=0;
long i;
 
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]+linesper){
if(stack>1 && ampstack[stack-1]<=ampstack[stack-2] &&
i<posstack[stack-2]+linesper){
/* 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 */
 
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]+linesper+1; /* +1 is important, else bin 0 is
discarded in short frames */
}
if(endpos>n)endpos=n;
for(;pos<endpos;pos++)
seeds[pos]=ampstack[i];
}
 
/* 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 ;-) */
 
}
 
/* bleaugh, this is more complicated than it needs to be */
#include<stdio.h>
static void max_seeds(vorbis_look_psy *p,
float *seed,
float *flr){
long n=p->total_octave_lines;
int linesper=p->eighth_octave_lines;
long linpos=0;
long pos;
 
seed_chase(seed,linesper,n); /* for masking */
 
pos=p->octave[0]-p->firstoc-(linesper>>1);
 
while(linpos+1<p->n){
float minV=seed[pos];
long end=((p->octave[linpos]+p->octave[linpos+1])>>1)-p->firstoc;
if(minV>p->vi->tone_abs_limit)minV=p->vi->tone_abs_limit;
while(pos+1<=end){
pos++;
if((seed[pos]>NEGINF && seed[pos]<minV) || minV==NEGINF)
minV=seed[pos];
}
 
end=pos+p->firstoc;
for(;linpos<p->n && p->octave[linpos]<=end;linpos++)
if(flr[linpos]<minV)flr[linpos]=minV;
}
 
{
float minV=seed[p->total_octave_lines-1];
for(;linpos<p->n;linpos++)
if(flr[linpos]<minV)flr[linpos]=minV;
}
 
}
 
static void bark_noise_hybridmp(int n,const long *b,
const float *f,
float *noise,
const float offset,
const int fixed){
 
float *N=alloca(n*sizeof(*N));
float *X=alloca(n*sizeof(*N));
float *XX=alloca(n*sizeof(*N));
float *Y=alloca(n*sizeof(*N));
float *XY=alloca(n*sizeof(*N));
 
float tN, tX, tXX, tY, tXY;
int i;
 
int lo, hi;
float R=0.f;
float A=0.f;
float B=0.f;
float D=1.f;
float w, x, y;
 
tN = tX = tXX = tY = tXY = 0.f;
 
y = f[0] + offset;
if (y < 1.f) y = 1.f;
 
w = y * y * .5;
 
tN += w;
tX += w;
tY += w * y;
 
N[0] = tN;
X[0] = tX;
XX[0] = tXX;
Y[0] = tY;
XY[0] = tXY;
 
for (i = 1, x = 1.f; i < n; i++, x += 1.f) {
 
y = f[i] + offset;
if (y < 1.f) y = 1.f;
 
w = y * y;
 
tN += w;
tX += w * x;
tXX += w * x * x;
tY += w * y;
tXY += w * x * y;
 
N[i] = tN;
X[i] = tX;
XX[i] = tXX;
Y[i] = tY;
XY[i] = tXY;
}
 
for (i = 0, x = 0.f; i < n; i++, x += 1.f) {
 
lo = b[i] >> 16;
hi = b[i] & 0xffff;
if( lo>=0 || -lo>=n ) break;
if( hi>=n ) break;
 
tN = N[hi] + N[-lo];
tX = X[hi] - X[-lo];
tXX = XX[hi] + XX[-lo];
tY = Y[hi] + Y[-lo];
tXY = XY[hi] - XY[-lo];
 
A = tY * tXX - tX * tXY;
B = tN * tXY - tX * tY;
D = tN * tXX - tX * tX;
R = (A + x * B) / D;
if (R < 0.f) R = 0.f;
 
noise[i] = R - offset;
}
 
for ( ; i < n; i++, x += 1.f) {
 
lo = b[i] >> 16;
hi = b[i] & 0xffff;
if( lo<0 || lo>=n ) break;
if( hi>=n ) break;
 
tN = N[hi] - N[lo];
tX = X[hi] - X[lo];
tXX = XX[hi] - XX[lo];
tY = Y[hi] - Y[lo];
tXY = XY[hi] - XY[lo];
 
A = tY * tXX - tX * tXY;
B = tN * tXY - tX * tY;
D = tN * tXX - tX * tX;
R = (A + x * B) / D;
if (R < 0.f) R = 0.f;
 
noise[i] = R - offset;
}
 
for ( ; i < n; i++, x += 1.f) {
 
R = (A + x * B) / D;
if (R < 0.f) R = 0.f;
 
noise[i] = R - offset;
}
 
if (fixed <= 0) return;
 
for (i = 0, x = 0.f; i < n; i++, x += 1.f) {
hi = i + fixed / 2;
lo = hi - fixed;
if ( hi>=n ) break;
if ( lo>=0 ) break;
 
tN = N[hi] + N[-lo];
tX = X[hi] - X[-lo];
tXX = XX[hi] + XX[-lo];
tY = Y[hi] + Y[-lo];
tXY = XY[hi] - XY[-lo];
 
 
A = tY * tXX - tX * tXY;
B = tN * tXY - tX * tY;
D = tN * tXX - tX * tX;
R = (A + x * B) / D;
 
if (R - offset < noise[i]) noise[i] = R - offset;
}
for ( ; i < n; i++, x += 1.f) {
 
hi = i + fixed / 2;
lo = hi - fixed;
if ( hi>=n ) break;
if ( lo<0 ) break;
 
tN = N[hi] - N[lo];
tX = X[hi] - X[lo];
tXX = XX[hi] - XX[lo];
tY = Y[hi] - Y[lo];
tXY = XY[hi] - XY[lo];
 
A = tY * tXX - tX * tXY;
B = tN * tXY - tX * tY;
D = tN * tXX - tX * tX;
R = (A + x * B) / D;
 
if (R - offset < noise[i]) noise[i] = R - offset;
}
for ( ; i < n; i++, x += 1.f) {
R = (A + x * B) / D;
if (R - offset < noise[i]) noise[i] = R - offset;
}
}
 
void _vp_noisemask(vorbis_look_psy *p,
float *logmdct,
float *logmask){
 
int i,n=p->n;
float *work=alloca(n*sizeof(*work));
 
bark_noise_hybridmp(n,p->bark,logmdct,logmask,
140.,-1);
 
for(i=0;i<n;i++)work[i]=logmdct[i]-logmask[i];
 
bark_noise_hybridmp(n,p->bark,work,logmask,0.,
p->vi->noisewindowfixed);
 
for(i=0;i<n;i++)work[i]=logmdct[i]-work[i];
 
#if 0
{
static int seq=0;
 
float work2[n];
for(i=0;i<n;i++){
work2[i]=logmask[i]+work[i];
}
 
if(seq&1)
_analysis_output("median2R",seq/2,work,n,1,0,0);
else
_analysis_output("median2L",seq/2,work,n,1,0,0);
 
if(seq&1)
_analysis_output("envelope2R",seq/2,work2,n,1,0,0);
else
_analysis_output("envelope2L",seq/2,work2,n,1,0,0);
seq++;
}
#endif
 
for(i=0;i<n;i++){
int dB=logmask[i]+.5;
if(dB>=NOISE_COMPAND_LEVELS)dB=NOISE_COMPAND_LEVELS-1;
if(dB<0)dB=0;
logmask[i]= work[i]+p->vi->noisecompand[dB];
}
 
}
 
void _vp_tonemask(vorbis_look_psy *p,
float *logfft,
float *logmask,
float global_specmax,
float local_specmax){
 
int i,n=p->n;
 
float *seed=alloca(sizeof(*seed)*p->total_octave_lines);
float att=local_specmax+p->vi->ath_adjatt;
for(i=0;i<p->total_octave_lines;i++)seed[i]=NEGINF;
 
/* set the ATH (floating below localmax, not global max by a
specified att) */
if(att<p->vi->ath_maxatt)att=p->vi->ath_maxatt;
 
for(i=0;i<n;i++)
logmask[i]=p->ath[i]+att;
 
/* tone masking */
seed_loop(p,(const float ***)p->tonecurves,logfft,logmask,seed,global_specmax);
max_seeds(p,seed,logmask);
 
}
 
void _vp_offset_and_mix(vorbis_look_psy *p,
float *noise,
float *tone,
int offset_select,
float *logmask,
float *mdct,
float *logmdct){
int i,n=p->n;
float de, coeffi, cx;/* AoTuV */
float toneatt=p->vi->tone_masteratt[offset_select];
 
cx = p->m_val;
 
for(i=0;i<n;i++){
float val= noise[i]+p->noiseoffset[offset_select][i];
if(val>p->vi->noisemaxsupp)val=p->vi->noisemaxsupp;
logmask[i]=max(val,tone[i]+toneatt);
 
 
/* AoTuV */
/** @ M1 **
The following codes improve a noise problem.
A fundamental idea uses the value of masking and carries out
the relative compensation of the MDCT.
However, this code is not perfect and all noise problems cannot be solved.
by Aoyumi @ 2004/04/18
*/
 
if(offset_select == 1) {
coeffi = -17.2; /* coeffi is a -17.2dB threshold */
val = val - logmdct[i]; /* val == mdct line value relative to floor in dB */
 
if(val > coeffi){
/* mdct value is > -17.2 dB below floor */
 
de = 1.0-((val-coeffi)*0.005*cx);
/* pro-rated attenuation:
-0.00 dB boost if mdct value is -17.2dB (relative to floor)
-0.77 dB boost if mdct value is 0dB (relative to floor)
-1.64 dB boost if mdct value is +17.2dB (relative to floor)
etc... */
 
if(de < 0) de = 0.0001;
}else
/* mdct value is <= -17.2 dB below floor */
 
de = 1.0-((val-coeffi)*0.0003*cx);
/* pro-rated attenuation:
+0.00 dB atten if mdct value is -17.2dB (relative to floor)
+0.45 dB atten if mdct value is -34.4dB (relative to floor)
etc... */
 
mdct[i] *= de;
 
}
}
}
 
float _vp_ampmax_decay(float amp,vorbis_dsp_state *vd){
vorbis_info *vi=vd->vi;
codec_setup_info *ci=vi->codec_setup;
vorbis_info_psy_global *gi=&ci->psy_g_param;
 
int n=ci->blocksizes[vd->W]/2;
float secs=(float)n/vi->rate;
 
amp+=secs*gi->ampmax_att_per_sec;
if(amp<-9999)amp=-9999;
return(amp);
}
 
static float FLOOR1_fromdB_LOOKUP[256]={
1.0649863e-07F, 1.1341951e-07F, 1.2079015e-07F, 1.2863978e-07F,
1.3699951e-07F, 1.4590251e-07F, 1.5538408e-07F, 1.6548181e-07F,
1.7623575e-07F, 1.8768855e-07F, 1.9988561e-07F, 2.128753e-07F,
2.2670913e-07F, 2.4144197e-07F, 2.5713223e-07F, 2.7384213e-07F,
2.9163793e-07F, 3.1059021e-07F, 3.3077411e-07F, 3.5226968e-07F,
3.7516214e-07F, 3.9954229e-07F, 4.2550680e-07F, 4.5315863e-07F,
4.8260743e-07F, 5.1396998e-07F, 5.4737065e-07F, 5.8294187e-07F,
6.2082472e-07F, 6.6116941e-07F, 7.0413592e-07F, 7.4989464e-07F,
7.9862701e-07F, 8.5052630e-07F, 9.0579828e-07F, 9.6466216e-07F,
1.0273513e-06F, 1.0941144e-06F, 1.1652161e-06F, 1.2409384e-06F,
1.3215816e-06F, 1.4074654e-06F, 1.4989305e-06F, 1.5963394e-06F,
1.7000785e-06F, 1.8105592e-06F, 1.9282195e-06F, 2.0535261e-06F,
2.1869758e-06F, 2.3290978e-06F, 2.4804557e-06F, 2.6416497e-06F,
2.8133190e-06F, 2.9961443e-06F, 3.1908506e-06F, 3.3982101e-06F,
3.6190449e-06F, 3.8542308e-06F, 4.1047004e-06F, 4.3714470e-06F,
4.6555282e-06F, 4.9580707e-06F, 5.2802740e-06F, 5.6234160e-06F,
5.9888572e-06F, 6.3780469e-06F, 6.7925283e-06F, 7.2339451e-06F,
7.7040476e-06F, 8.2047000e-06F, 8.7378876e-06F, 9.3057248e-06F,
9.9104632e-06F, 1.0554501e-05F, 1.1240392e-05F, 1.1970856e-05F,
1.2748789e-05F, 1.3577278e-05F, 1.4459606e-05F, 1.5399272e-05F,
1.6400004e-05F, 1.7465768e-05F, 1.8600792e-05F, 1.9809576e-05F,
2.1096914e-05F, 2.2467911e-05F, 2.3928002e-05F, 2.5482978e-05F,
2.7139006e-05F, 2.8902651e-05F, 3.0780908e-05F, 3.2781225e-05F,
3.4911534e-05F, 3.7180282e-05F, 3.9596466e-05F, 4.2169667e-05F,
4.4910090e-05F, 4.7828601e-05F, 5.0936773e-05F, 5.4246931e-05F,
5.7772202e-05F, 6.1526565e-05F, 6.5524908e-05F, 6.9783085e-05F,
7.4317983e-05F, 7.9147585e-05F, 8.4291040e-05F, 8.9768747e-05F,
9.5602426e-05F, 0.00010181521F, 0.00010843174F, 0.00011547824F,
0.00012298267F, 0.00013097477F, 0.00013948625F, 0.00014855085F,
0.00015820453F, 0.00016848555F, 0.00017943469F, 0.00019109536F,
0.00020351382F, 0.00021673929F, 0.00023082423F, 0.00024582449F,
0.00026179955F, 0.00027881276F, 0.00029693158F, 0.00031622787F,
0.00033677814F, 0.00035866388F, 0.00038197188F, 0.00040679456F,
0.00043323036F, 0.00046138411F, 0.00049136745F, 0.00052329927F,
0.00055730621F, 0.00059352311F, 0.00063209358F, 0.00067317058F,
0.00071691700F, 0.00076350630F, 0.00081312324F, 0.00086596457F,
0.00092223983F, 0.00098217216F, 0.0010459992F, 0.0011139742F,
0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F,
0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F,
0.0019632195F, 0.0020908006F, 0.0022266726F, 0.0023713743F,
0.0025254795F, 0.0026895994F, 0.0028643847F, 0.0030505286F,
0.0032487691F, 0.0034598925F, 0.0036847358F, 0.0039241906F,
0.0041792066F, 0.0044507950F, 0.0047400328F, 0.0050480668F,
0.0053761186F, 0.0057254891F, 0.0060975636F, 0.0064938176F,
0.0069158225F, 0.0073652516F, 0.0078438871F, 0.0083536271F,
0.0088964928F, 0.009474637F, 0.010090352F, 0.010746080F,
0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F,
0.014722068F, 0.015678791F, 0.016697687F, 0.017782797F,
0.018938423F, 0.020169149F, 0.021479854F, 0.022875735F,
0.024362330F, 0.025945531F, 0.027631618F, 0.029427276F,
0.031339626F, 0.033376252F, 0.035545228F, 0.037855157F,
0.040315199F, 0.042935108F, 0.045725273F, 0.048696758F,
0.051861348F, 0.055231591F, 0.058820850F, 0.062643361F,
0.066714279F, 0.071049749F, 0.075666962F, 0.080584227F,
0.085821044F, 0.091398179F, 0.097337747F, 0.10366330F,
0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F,
0.14201813F, 0.15124727F, 0.16107617F, 0.17154380F,
0.18269168F, 0.19456402F, 0.20720788F, 0.22067342F,
0.23501402F, 0.25028656F, 0.26655159F, 0.28387361F,
0.30232132F, 0.32196786F, 0.34289114F, 0.36517414F,
0.38890521F, 0.41417847F, 0.44109412F, 0.46975890F,
0.50028648F, 0.53279791F, 0.56742212F, 0.60429640F,
0.64356699F, 0.68538959F, 0.72993007F, 0.77736504F,
0.82788260F, 0.88168307F, 0.9389798F, 1.F,
};
 
/* this is for per-channel noise normalization */
static int apsort(const void *a, const void *b){
float f1=**(float**)a;
float f2=**(float**)b;
return (f1<f2)-(f1>f2);
}
 
static void flag_lossless(int limit, float prepoint, float postpoint, float *mdct,
float *floor, int *flag, int i, int jn){
int j;
for(j=0;j<jn;j++){
float point = j>=limit-i ? postpoint : prepoint;
float r = fabs(mdct[j])/floor[j];
if(r<point)
flag[j]=0;
else
flag[j]=1;
}
}
 
/* Overload/Side effect: On input, the *q vector holds either the
quantized energy (for elements with the flag set) or the absolute
values of the *r vector (for elements with flag unset). On output,
*q holds the quantized energy for all elements */
static float noise_normalize(vorbis_look_psy *p, int limit, float *r, float *q, float *f, int *flags, float acc, int i, int n, int *out){
 
vorbis_info_psy *vi=p->vi;
float **sort = alloca(n*sizeof(*sort));
int j,count=0;
int start = (vi->normal_p ? vi->normal_start-i : n);
if(start>n)start=n;
 
/* force classic behavior where only energy in the current band is considered */
acc=0.f;
 
/* still responsible for populating *out where noise norm not in
effect. There's no need to [re]populate *q in these areas */
for(j=0;j<start;j++){
if(!flags || !flags[j]){ /* lossless coupling already quantized.
Don't touch; requantizing based on
energy would be incorrect. */
float ve = q[j]/f[j];
if(r[j]<0)
out[j] = -rint(sqrt(ve));
else
out[j] = rint(sqrt(ve));
}
}
 
/* sort magnitudes for noise norm portion of partition */
for(;j<n;j++){
if(!flags || !flags[j]){ /* can't noise norm elements that have
already been loslessly coupled; we can
only account for their energy error */
float ve = q[j]/f[j];
/* Despite all the new, more capable coupling code, for now we
implement noise norm as it has been up to this point. Only
consider promotions to unit magnitude from 0. In addition
the only energy error counted is quantizations to zero. */
/* also-- the original point code only applied noise norm at > pointlimit */
if(ve<.25f && (!flags || j>=limit-i)){
acc += ve;
sort[count++]=q+j; /* q is fabs(r) for unflagged element */
}else{
/* For now: no acc adjustment for nonzero quantization. populate *out and q as this value is final. */
if(r[j]<0)
out[j] = -rint(sqrt(ve));
else
out[j] = rint(sqrt(ve));
q[j] = out[j]*out[j]*f[j];
}
}/* else{
again, no energy adjustment for error in nonzero quant-- for now
}*/
}
 
if(count){
/* noise norm to do */
qsort(sort,count,sizeof(*sort),apsort);
for(j=0;j<count;j++){
int k=sort[j]-q;
if(acc>=vi->normal_thresh){
out[k]=unitnorm(r[k]);
acc-=1.f;
q[k]=f[k];
}else{
out[k]=0;
q[k]=0.f;
}
}
}
 
return acc;
}
 
/* Noise normalization, quantization and coupling are not wholly
seperable processes in depth>1 coupling. */
void _vp_couple_quantize_normalize(int blobno,
vorbis_info_psy_global *g,
vorbis_look_psy *p,
vorbis_info_mapping0 *vi,
float **mdct,
int **iwork,
int *nonzero,
int sliding_lowpass,
int ch){
 
int i;
int n = p->n;
int partition=(p->vi->normal_p ? p->vi->normal_partition : 16);
int limit = g->coupling_pointlimit[p->vi->blockflag][blobno];
float prepoint=stereo_threshholds[g->coupling_prepointamp[blobno]];
float postpoint=stereo_threshholds[g->coupling_postpointamp[blobno]];
#if 0
float de=0.1*p->m_val; /* a blend of the AoTuV M2 and M3 code here and below */
#endif
 
/* mdct is our raw mdct output, floor not removed. */
/* inout passes in the ifloor, passes back quantized result */
 
/* unquantized energy (negative indicates amplitude has negative sign) */
float **raw = alloca(ch*sizeof(*raw));
 
/* dual pupose; quantized energy (if flag set), othersize fabs(raw) */
float **quant = alloca(ch*sizeof(*quant));
 
/* floor energy */
float **floor = alloca(ch*sizeof(*floor));
 
/* flags indicating raw/quantized status of elements in raw vector */
int **flag = alloca(ch*sizeof(*flag));
 
/* non-zero flag working vector */
int *nz = alloca(ch*sizeof(*nz));
 
/* energy surplus/defecit tracking */
float *acc = alloca((ch+vi->coupling_steps)*sizeof(*acc));
 
/* The threshold of a stereo is changed with the size of n */
if(n > 1000)
postpoint=stereo_threshholds_limited[g->coupling_postpointamp[blobno]];
 
raw[0] = alloca(ch*partition*sizeof(**raw));
quant[0] = alloca(ch*partition*sizeof(**quant));
floor[0] = alloca(ch*partition*sizeof(**floor));
flag[0] = alloca(ch*partition*sizeof(**flag));
 
for(i=1;i<ch;i++){
raw[i] = &raw[0][partition*i];
quant[i] = &quant[0][partition*i];
floor[i] = &floor[0][partition*i];
flag[i] = &flag[0][partition*i];
}
for(i=0;i<ch+vi->coupling_steps;i++)
acc[i]=0.f;
 
for(i=0;i<n;i+=partition){
int k,j,jn = partition > n-i ? n-i : partition;
int step,track = 0;
 
memcpy(nz,nonzero,sizeof(*nz)*ch);
 
/* prefill */
memset(flag[0],0,ch*partition*sizeof(**flag));
for(k=0;k<ch;k++){
int *iout = &iwork[k][i];
if(nz[k]){
 
for(j=0;j<jn;j++)
floor[k][j] = FLOOR1_fromdB_LOOKUP[iout[j]];
 
flag_lossless(limit,prepoint,postpoint,&mdct[k][i],floor[k],flag[k],i,jn);
 
for(j=0;j<jn;j++){
quant[k][j] = raw[k][j] = mdct[k][i+j]*mdct[k][i+j];
if(mdct[k][i+j]<0.f) raw[k][j]*=-1.f;
floor[k][j]*=floor[k][j];
}
 
acc[track]=noise_normalize(p,limit,raw[k],quant[k],floor[k],NULL,acc[track],i,jn,iout);
 
}else{
for(j=0;j<jn;j++){
floor[k][j] = 1e-10f;
raw[k][j] = 0.f;
quant[k][j] = 0.f;
flag[k][j] = 0;
iout[j]=0;
}
acc[track]=0.f;
}
track++;
}
 
/* coupling */
for(step=0;step<vi->coupling_steps;step++){
int Mi = vi->coupling_mag[step];
int Ai = vi->coupling_ang[step];
int *iM = &iwork[Mi][i];
int *iA = &iwork[Ai][i];
float *reM = raw[Mi];
float *reA = raw[Ai];
float *qeM = quant[Mi];
float *qeA = quant[Ai];
float *floorM = floor[Mi];
float *floorA = floor[Ai];
int *fM = flag[Mi];
int *fA = flag[Ai];
 
if(nz[Mi] || nz[Ai]){
nz[Mi] = nz[Ai] = 1;
 
for(j=0;j<jn;j++){
 
if(j<sliding_lowpass-i){
if(fM[j] || fA[j]){
/* lossless coupling */
 
reM[j] = fabs(reM[j])+fabs(reA[j]);
qeM[j] = qeM[j]+qeA[j];
fM[j]=fA[j]=1;
 
/* couple iM/iA */
{
int A = iM[j];
int B = iA[j];
 
if(abs(A)>abs(B)){
iA[j]=(A>0?A-B:B-A);
}else{
iA[j]=(B>0?A-B:B-A);
iM[j]=B;
}
 
/* collapse two equivalent tuples to one */
if(iA[j]>=abs(iM[j])*2){
iA[j]= -iA[j];
iM[j]= -iM[j];
}
 
}
 
}else{
/* lossy (point) coupling */
if(j<limit-i){
/* dipole */
reM[j] += reA[j];
qeM[j] = fabs(reM[j]);
}else{
#if 0
/* AoTuV */
/** @ M2 **
The boost problem by the combination of noise normalization and point stereo is eased.
However, this is a temporary patch.
by Aoyumi @ 2004/04/18
*/
float derate = (1.0 - de*((float)(j-limit+i) / (float)(n-limit)));
/* elliptical */
if(reM[j]+reA[j]<0){
reM[j] = - (qeM[j] = (fabs(reM[j])+fabs(reA[j]))*derate*derate);
}else{
reM[j] = (qeM[j] = (fabs(reM[j])+fabs(reA[j]))*derate*derate);
}
#else
/* elliptical */
if(reM[j]+reA[j]<0){
reM[j] = - (qeM[j] = fabs(reM[j])+fabs(reA[j]));
}else{
reM[j] = (qeM[j] = fabs(reM[j])+fabs(reA[j]));
}
#endif
 
}
reA[j]=qeA[j]=0.f;
fA[j]=1;
iA[j]=0;
}
}
floorM[j]=floorA[j]=floorM[j]+floorA[j];
}
/* normalize the resulting mag vector */
acc[track]=noise_normalize(p,limit,raw[Mi],quant[Mi],floor[Mi],flag[Mi],acc[track],i,jn,iM);
track++;
}
}
}
 
for(i=0;i<vi->coupling_steps;i++){
/* make sure coupling a zero and a nonzero channel results in two
nonzero channels. */
if(nonzero[vi->coupling_mag[i]] ||
nonzero[vi->coupling_ang[i]]){
nonzero[vi->coupling_mag[i]]=1;
nonzero[vi->coupling_ang[i]]=1;
}
}
}
/contrib/sdk/sources/libvorbis-1.3.7/lib/psy.h
0,0 → 1,153
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: random psychoacoustics (not including preecho)
 
********************************************************************/
 
#ifndef _V_PSY_H_
#define _V_PSY_H_
#include "smallft.h"
 
#include "backends.h"
#include "envelope.h"
 
#ifndef EHMER_MAX
#define EHMER_MAX 56
#endif
 
/* psychoacoustic setup ********************************************/
#define P_BANDS 17 /* 62Hz to 16kHz */
#define P_LEVELS 8 /* 30dB to 100dB */
#define P_LEVEL_0 30. /* 30 dB */
#define P_NOISECURVES 3
 
#define NOISE_COMPAND_LEVELS 40
typedef struct vorbis_info_psy{
int blockflag;
 
float ath_adjatt;
float ath_maxatt;
 
float tone_masteratt[P_NOISECURVES];
float tone_centerboost;
float tone_decay;
float tone_abs_limit;
float toneatt[P_BANDS];
 
int noisemaskp;
float noisemaxsupp;
float noisewindowlo;
float noisewindowhi;
int noisewindowlomin;
int noisewindowhimin;
int noisewindowfixed;
float noiseoff[P_NOISECURVES][P_BANDS];
float noisecompand[NOISE_COMPAND_LEVELS];
 
float max_curve_dB;
 
int normal_p;
int normal_start;
int normal_partition;
double normal_thresh;
} vorbis_info_psy;
 
typedef struct{
int eighth_octave_lines;
 
/* for block long/short tuning; encode only */
float preecho_thresh[VE_BANDS];
float postecho_thresh[VE_BANDS];
float stretch_penalty;
float preecho_minenergy;
 
float ampmax_att_per_sec;
 
/* channel coupling config */
int coupling_pkHz[PACKETBLOBS];
int coupling_pointlimit[2][PACKETBLOBS];
int coupling_prepointamp[PACKETBLOBS];
int coupling_postpointamp[PACKETBLOBS];
int sliding_lowpass[2][PACKETBLOBS];
 
} vorbis_info_psy_global;
 
typedef struct {
float ampmax;
int channels;
 
vorbis_info_psy_global *gi;
int coupling_pointlimit[2][P_NOISECURVES];
} vorbis_look_psy_global;
 
 
typedef struct {
int n;
struct vorbis_info_psy *vi;
 
float ***tonecurves;
float **noiseoffset;
 
float *ath;
long *octave; /* in n.ocshift format */
long *bark;
 
long firstoc;
long shiftoc;
int eighth_octave_lines; /* power of two, please */
int total_octave_lines;
long rate; /* cache it */
 
float m_val; /* Masking compensation value */
 
} vorbis_look_psy;
 
extern void _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,
vorbis_info_psy_global *gi,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_noisemask(vorbis_look_psy *p,
float *logmdct,
float *logmask);
 
extern void _vp_tonemask(vorbis_look_psy *p,
float *logfft,
float *logmask,
float global_specmax,
float local_specmax);
 
extern void _vp_offset_and_mix(vorbis_look_psy *p,
float *noise,
float *tone,
int offset_select,
float *logmask,
float *mdct,
float *logmdct);
 
extern float _vp_ampmax_decay(float amp,vorbis_dsp_state *vd);
 
extern void _vp_couple_quantize_normalize(int blobno,
vorbis_info_psy_global *g,
vorbis_look_psy *p,
vorbis_info_mapping0 *vi,
float **mdct,
int **iwork,
int *nonzero,
int sliding_lowpass,
int ch);
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/psytune.c
0,0 → 1,523
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: simple utility that runs audio through the psychoacoustics
without encoding
 
********************************************************************/
 
/* NB: this is dead code, retained purely for doc and reference value
don't try to compile it */
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
 
#include "vorbis/codec.h"
#include "codec_internal.h"
#include "os.h"
#include "misc.h"
#include "psy.h"
#include "mdct.h"
#include "smallft.h"
#include "window.h"
#include "scales.h"
#include "lpc.h"
#include "lsp.h"
#include "masking.h"
#include "registry.h"
 
static vorbis_info_psy_global _psy_set0G={
0, /* decaydBpms */
8, /* lines per eighth octave */
 
/* thresh sample period, preecho clamp trigger threshhold, range, minenergy */
256, {26.f,26.f,26.f,30.f}, {-90.f,-90.f,-90.f,-90.f}, -90.f,
-6.f,
 
0,
 
0.,
0.,
};
 
static vp_part _vp_part0[]={
{ 1,9e10f, 9e10f, 1.f,9999.f},
{ 9999, .75f, 9e10f, .5f,9999.f},
/*{ 9999, 1.5f, 9e10f, .5f,9999.f},*/
{ 18,9e10f, 9e10f, .5f, 30.f},
{ 9999,9e10f, 9e10f, .5f, 30.f}
};
 
static vp_couple _vp_couple0[]={
{ 1, {9e10f,9e10f,0}, { 0.f, 0.f,0}, { 0.f, 0.f,0}, {0.f,0.f,0}},
{ 18, {9e10f,9e10f,0}, { 0.f, 0.f,0}, { 0.f, 0.f,0}, {0.f,0.f,0}},
{ 9999, {9e10f,9e10f,0}, { 0.f, 9e10f,0}, { 0.f,22.f,1}, {0.f,0.f,0}}
};
 
static vorbis_info_psy _psy_set0={
ATH_Bark_dB_lineaggressive,
 
-100.f,
-140.f,
6.f, /* floor master att */
 
/* 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.f, /* tone master att */
/* 0 10 20 30 40 50 60 70 80 90 100 */
{
{-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f}, /*63*/
{-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f}, /*88*/
{-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f}, /*125*/
 
{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*175*/
{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*250*/
{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*350*/
{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*500*/
{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*700*/
{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1000*/
{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1400*/
{-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*2000*/
{-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*2800*/
{-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*4000*/
 
{-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*5600*/
 
{-30.f,-30.f,-33.f,-35.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*8000*/
{-30.f,-30.f,-33.f,-35.f,-40.f,-45.f,-50.f,-60.f,-70.f,-85.f,-100.f}, /*11500*/
{-24.f,-24.f,-26.f,-32.f,-32.f,-42.f,-50.f,-60.f,-70.f,-85.f,-100.f}, /*16000*/
 
},
 
1,/* peakattp */
{{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*63*/
{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*88*/
{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*125*/
{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*175*/
{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*250*/
{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*350*/
{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*500*/
{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*700*/
{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*1000*/
{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*1400*/
{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*2000*/
{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*2800*/
{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*4000*/
{-10.f,-12.f,-14.f,-16.f,-16.f,-20.f,-24.f,-30.f,-32.f,-40.f,-40.f},/*5600*/
{-10.f,-12.f,-14.f,-16.f,-16.f,-20.f,-24.f,-30.f,-32.f,-40.f,-40.f},/*8000*/
{-10.f,-10.f,-10.f,-12.f,-14.f,-18.f,-22.f,-28.f,-32.f,-40.f,-40.f},/*11500*/
{-10.f,-10.f,-10.f,-12.f,-14.f,-18.f,-22.f,-28.f,-32.f,-40.f,-40.f},/*16000*/
},
 
1,/*noisemaskp */
-10.f, /* suppress any noise curve over maxspec+n */
.5f, /* low window */
.5f, /* high window */
10,
10,
25,
{.000f, 0.f, /*63*/
.000f, 0.f, /*88*/
.000f, 0.f, /*125*/
.000f, 0.f, /*175*/
.000f, 0.f, /*250*/
.000f, 0.f, /*350*/
.000f, 0.f, /*500*/
.000f, 0.f, /*700*/
.000f, 0.f, /*1000*/
.300f, 0.f, /*1400*/
.300f, 0.f, /*2000*/
.300f, 0.f, /*2800*/
.500f, 0.f, /*4000*/
.700f, 0.f, /*5600*/
.850f, 0.f, /*8000*/
.900f, 0.f, /*11500*/
.900f, 1.f, /*16000*/
},
 
95.f, /* even decade + 5 is important; saves an rint() later in a
tight loop) */
-44.,
 
32,
_vp_part0,_vp_couple0
};
 
static vorbis_info_floor1 _floor_set0={1,
{0},
 
{32},
{0},
{0},
{{-1}},
 
2,
{0,1024,
 
88,31,243,
 
14,54,143,460,
 
6,3,10, 22,18,26, 41,36,47,
69,61,78, 112,99,126, 185,162,211,
329,282,387, 672,553,825
},
 
60,30,400,
20,8,1,18.,
20,600,
960};
 
 
static vorbis_info_mapping0 mapping_info={1,{0,1},{0},{0},{0},0, 1, {0},{1}};
static codec_setup_info codec_setup0={ {0,0},
1,1,1,1,1,0,1,
{NULL},
{0},{&mapping_info},
{0},{NULL},
{1},{&_floor_set0},
{2},{NULL},
{NULL},
{&_psy_set0},
&_psy_set0G};
 
static int noisy=0;
void analysis(char *base,int i,float *v,int n,int bark,int dB){
if(noisy){
int j;
FILE *of;
char buffer[80];
sprintf(buffer,"%s_%d.m",base,i);
of=fopen(buffer,"w");
 
for(j=0;j<n;j++){
if(dB && v[j]==0)
fprintf(of,"\n\n");
else{
if(bark)
fprintf(of,"%g ",toBARK(22050.f*j/n));
else
fprintf(of,"%g ",(float)j);
 
if(dB){
fprintf(of,"%g\n",todB(v+j));
}else{
fprintf(of,"%g\n",v[j]);
}
}
}
fclose(of);
}
}
 
long frameno=0;
 
/****************************************************************/
 
int main(int argc,char *argv[]){
int eos=0;
float nonz=0.f;
float acc=0.f;
float tot=0.f;
float ampmax=-9999,newmax;
float local_ampmax[2];
 
int framesize=2048;
float ampmax_att_per_sec=-6.;
 
float *pcm[2],*out[2],*window,*flr[2],*mask[2],*work[2];
signed char *buffer,*buffer2;
mdct_lookup m_look;
drft_lookup f_look;
vorbis_look_psy p_look;
vorbis_look_psy_global *pg_look;
vorbis_look_floor *floor_look;
vorbis_info vi;
long i,j,k;
 
int ath=0;
int decayp=0;
 
argv++;
while(*argv){
if(*argv[0]=='-'){
/* option */
if(argv[0][1]=='v'){
noisy=0;
}
}else
if(*argv[0]=='+'){
/* option */
if(argv[0][1]=='v'){
noisy=1;
}
}else
framesize=atoi(argv[0]);
argv++;
}
 
vi.channels=2;
vi.codec_setup=&codec_setup0;
 
pcm[0]=_ogg_malloc(framesize*sizeof(float));
pcm[1]=_ogg_malloc(framesize*sizeof(float));
out[0]=_ogg_calloc(framesize/2,sizeof(float));
out[1]=_ogg_calloc(framesize/2,sizeof(float));
work[0]=_ogg_calloc(framesize,sizeof(float));
work[1]=_ogg_calloc(framesize,sizeof(float));
flr[0]=_ogg_calloc(framesize/2,sizeof(float));
flr[1]=_ogg_calloc(framesize/2,sizeof(float));
buffer=_ogg_malloc(framesize*4);
buffer2=buffer+framesize*2;
window=_vorbis_window_create(0,framesize,framesize/2,framesize/2);
mdct_init(&m_look,framesize);
drft_init(&f_look,framesize);
_vp_psy_init(&p_look,&_psy_set0,&_psy_set0G,framesize/2,44100);
pg_look=_vp_global_look(&vi);
floor_look=_floor_P[1]->look(NULL,NULL,&_floor_set0);
 
/* we cheat on the WAV header; we just bypass 44 bytes and never
verify that it matches 16bit/stereo/44.1kHz. */
 
fread(buffer,1,44,stdin);
fwrite(buffer,1,44,stdout);
memset(buffer,0,framesize*2);
 
analysis("window",0,window,framesize,0,0);
 
fprintf(stderr,"Processing for frame size %d...\n",framesize);
 
while(!eos){
long bytes=fread(buffer2,1,framesize*2,stdin);
if(bytes<framesize*2)
memset(buffer2+bytes,0,framesize*2-bytes);
 
if(bytes!=0){
int nonzero[2];
 
/* uninterleave samples */
for(i=0;i<framesize;i++){
pcm[0][i]=((buffer[i*4+1]<<8)|
(0x00ff&(int)buffer[i*4]))/32768.f;
pcm[1][i]=((buffer[i*4+3]<<8)|
(0x00ff&(int)buffer[i*4+2]))/32768.f;
}
 
{
float secs=framesize/44100.;
 
ampmax+=secs*ampmax_att_per_sec;
if(ampmax<-9999)ampmax=-9999;
}
 
for(i=0;i<2;i++){
float scale=4.f/framesize;
float *fft=work[i];
float *mdct=pcm[i];
float *logmdct=mdct+framesize/2;
 
analysis("pre",frameno+i,pcm[i],framesize,0,0);
 
/* fft and mdct transforms */
for(j=0;j<framesize;j++)
fft[j]=pcm[i][j]*=window[j];
 
drft_forward(&f_look,fft);
 
local_ampmax[i]=-9999.f;
fft[0]*=scale;
fft[0]=todB(fft);
for(j=1;j<framesize-1;j+=2){
float temp=scale*FAST_HYPOT(fft[j],fft[j+1]);
temp=fft[(j+1)>>1]=todB(&temp);
if(temp>local_ampmax[i])local_ampmax[i]=temp;
}
if(local_ampmax[i]>ampmax)ampmax=local_ampmax[i];
 
mdct_forward(&m_look,pcm[i],mdct);
for(j=0;j<framesize/2;j++)
logmdct[j]=todB(mdct+j);
 
analysis("mdct",frameno+i,logmdct,framesize/2,1,0);
analysis("fft",frameno+i,fft,framesize/2,1,0);
}
 
for(i=0;i<2;i++){
float amp;
float *fft=work[i];
float *logmax=fft;
float *mdct=pcm[i];
float *logmdct=mdct+framesize/2;
float *mask=fft+framesize/2;
 
/* floor psychoacoustics */
_vp_compute_mask(&p_look,
pg_look,
i,
fft,
logmdct,
mask,
ampmax,
local_ampmax[i],
framesize/2);
 
analysis("mask",frameno+i,mask,framesize/2,1,0);
 
{
vorbis_block vb;
vorbis_dsp_state vd;
memset(&vd,0,sizeof(vd));
vd.vi=&vi;
vb.vd=&vd;
vb.pcmend=framesize;
 
/* floor quantization/application */
nonzero[i]=_floor_P[1]->forward(&vb,floor_look,
mdct,
logmdct,
mask,
logmax,
 
flr[i]);
}
 
_vp_remove_floor(&p_look,
pg_look,
logmdct,
mdct,
flr[i],
pcm[i],
local_ampmax[i]);
 
for(j=0;j<framesize/2;j++)
if(fabs(pcm[i][j])>1500)
fprintf(stderr,"%ld ",frameno+i);
 
analysis("res",frameno+i,pcm[i],framesize/2,1,0);
analysis("codedflr",frameno+i,flr[i],framesize/2,1,1);
}
 
/* residue prequantization */
_vp_partition_prequant(&p_look,
&vi,
pcm,
nonzero);
 
for(i=0;i<2;i++)
analysis("quant",frameno+i,pcm[i],framesize/2,1,0);
 
/* channel coupling / stereo quantization */
 
_vp_couple(&p_look,
&mapping_info,
pcm,
nonzero);
 
for(i=0;i<2;i++)
analysis("coupled",frameno+i,pcm[i],framesize/2,1,0);
 
/* decoupling */
for(i=mapping_info.coupling_steps-1;i>=0;i--){
float *pcmM=pcm[mapping_info.coupling_mag[i]];
float *pcmA=pcm[mapping_info.coupling_ang[i]];
 
for(j=0;j<framesize/2;j++){
float mag=pcmM[j];
float ang=pcmA[j];
 
if(mag>0)
if(ang>0){
pcmM[j]=mag;
pcmA[j]=mag-ang;
}else{
pcmA[j]=mag;
pcmM[j]=mag+ang;
}
else
if(ang>0){
pcmM[j]=mag;
pcmA[j]=mag+ang;
}else{
pcmA[j]=mag;
pcmM[j]=mag-ang;
}
}
}
 
for(i=0;i<2;i++)
analysis("decoupled",frameno+i,pcm[i],framesize/2,1,0);
 
for(i=0;i<2;i++){
float amp;
 
for(j=0;j<framesize/2;j++)
pcm[i][j]*=flr[i][j];
 
analysis("final",frameno+i,pcm[i],framesize/2,1,1);
 
/* take it back to time */
mdct_backward(&m_look,pcm[i],pcm[i]);
 
for(j=0;j<framesize/2;j++)
out[i][j]+=pcm[i][j]*window[j];
 
analysis("out",frameno+i,out[i],framesize/2,0,0);
 
 
}
 
/* write data. Use the part of buffer we're about to shift out */
for(i=0;i<2;i++){
char *ptr=buffer+i*2;
float *mono=out[i];
int flag=0;
for(j=0;j<framesize/2;j++){
int val=mono[j]*32767.;
/* might as well guard against clipping */
if(val>32767){
if(!flag)fprintf(stderr,"clipping in frame %ld ",frameno+i);
flag=1;
val=32767;
}
if(val<-32768){
if(!flag)fprintf(stderr,"clipping in frame %ld ",frameno+i);
flag=1;
val=-32768;
}
ptr[0]=val&0xff;
ptr[1]=(val>>8)&0xff;
ptr+=4;
}
}
 
fprintf(stderr,"*");
fwrite(buffer,1,framesize*2,stdout);
memmove(buffer,buffer2,framesize*2);
 
for(i=0;i<2;i++){
for(j=0,k=framesize/2;j<framesize/2;j++,k++)
out[i][j]=pcm[i][k]*window[k];
}
frameno+=2;
}else
eos=1;
}
fprintf(stderr,"average raw bits of entropy: %.03g/sample\n",acc/tot);
fprintf(stderr,"average nonzero samples: %.03g/%d\n",nonz/tot*framesize/2,
framesize/2);
fprintf(stderr,"Done\n\n");
return 0;
}
/contrib/sdk/sources/libvorbis-1.3.7/lib/registry.c
0,0 → 1,44
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: registry for time, floor, res backends and channel mappings
 
********************************************************************/
 
#include "vorbis/codec.h"
#include "codec_internal.h"
#include "registry.h"
#include "misc.h"
/* seems like major overkill now; the backend numbers will grow into
the infrastructure soon enough */
 
extern const vorbis_func_floor floor0_exportbundle;
extern const vorbis_func_floor floor1_exportbundle;
extern const vorbis_func_residue residue0_exportbundle;
extern const vorbis_func_residue residue1_exportbundle;
extern const vorbis_func_residue residue2_exportbundle;
extern const vorbis_func_mapping mapping0_exportbundle;
 
const vorbis_func_floor *const _floor_P[]={
&floor0_exportbundle,
&floor1_exportbundle,
};
 
const vorbis_func_residue *const _residue_P[]={
&residue0_exportbundle,
&residue1_exportbundle,
&residue2_exportbundle,
};
 
const vorbis_func_mapping *const _mapping_P[]={
&mapping0_exportbundle,
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/registry.h
0,0 → 1,31
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: registry for time, floor, res backends and channel mappings
 
********************************************************************/
 
#ifndef _V_REG_H_
#define _V_REG_H_
 
#define VI_TRANSFORMB 1
#define VI_WINDOWB 1
#define VI_TIMEB 1
#define VI_FLOORB 2
#define VI_RESB 3
#define VI_MAPB 1
 
extern const vorbis_func_floor *const _floor_P[];
extern const vorbis_func_residue *const _residue_P[];
extern const vorbis_func_mapping *const _mapping_P[];
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/res0.c
0,0 → 1,886
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: residue backend 0, 1 and 2 implementation
 
********************************************************************/
 
/* 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 <ogg/ogg.h>
#include "vorbis/codec.h"
#include "codec_internal.h"
#include "registry.h"
#include "codebook.h"
#include "misc.h"
#include "os.h"
 
#if defined(TRAIN_RES) || defined (TRAIN_RESAUX)
#include <stdio.h>
#endif
 
typedef struct {
vorbis_info_residue0 *info;
 
int parts;
int stages;
codebook *fullbooks;
codebook *phrasebook;
codebook ***partbooks;
 
int partvals;
int **decodemap;
 
long postbits;
long phrasebits;
long frames;
 
#if defined(TRAIN_RES) || defined(TRAIN_RESAUX)
int train_seq;
long *training_data[8][64];
float training_max[8][64];
float training_min[8][64];
float tmin;
float tmax;
int submap;
#endif
 
} vorbis_look_residue0;
 
void res0_free_info(vorbis_info_residue *i){
vorbis_info_residue0 *info=(vorbis_info_residue0 *)i;
if(info){
memset(info,0,sizeof(*info));
_ogg_free(info);
}
}
 
void res0_free_look(vorbis_look_residue *i){
int j;
if(i){
 
vorbis_look_residue0 *look=(vorbis_look_residue0 *)i;
 
#ifdef TRAIN_RES
{
int j,k,l;
for(j=0;j<look->parts;j++){
/*fprintf(stderr,"partition %d: ",j);*/
for(k=0;k<8;k++)
if(look->training_data[k][j]){
char buffer[80];
FILE *of;
codebook *statebook=look->partbooks[j][k];
 
/* long and short into the same bucket by current convention */
sprintf(buffer,"res_sub%d_part%d_pass%d.vqd",look->submap,j,k);
of=fopen(buffer,"a");
 
for(l=0;l<statebook->entries;l++)
fprintf(of,"%d:%ld\n",l,look->training_data[k][j][l]);
 
fclose(of);
 
/*fprintf(stderr,"%d(%.2f|%.2f) ",k,
look->training_min[k][j],look->training_max[k][j]);*/
 
_ogg_free(look->training_data[k][j]);
look->training_data[k][j]=NULL;
}
/*fprintf(stderr,"\n");*/
}
}
fprintf(stderr,"min/max residue: %g::%g\n",look->tmin,look->tmax);
 
/*fprintf(stderr,"residue bit usage %f:%f (%f total)\n",
(float)look->phrasebits/look->frames,
(float)look->postbits/look->frames,
(float)(look->postbits+look->phrasebits)/look->frames);*/
#endif
 
 
/*vorbis_info_residue0 *info=look->info;
 
fprintf(stderr,
"%ld frames encoded in %ld phrasebits and %ld residue bits "
"(%g/frame) \n",look->frames,look->phrasebits,
look->resbitsflat,
(look->phrasebits+look->resbitsflat)/(float)look->frames);
 
for(j=0;j<look->parts;j++){
long acc=0;
fprintf(stderr,"\t[%d] == ",j);
for(k=0;k<look->stages;k++)
if((info->secondstages[j]>>k)&1){
fprintf(stderr,"%ld,",look->resbits[j][k]);
acc+=look->resbits[j][k];
}
 
fprintf(stderr,":: (%ld vals) %1.2fbits/sample\n",look->resvals[j],
acc?(float)acc/(look->resvals[j]*info->grouping):0);
}
fprintf(stderr,"\n");*/
 
for(j=0;j<look->parts;j++)
if(look->partbooks[j])_ogg_free(look->partbooks[j]);
_ogg_free(look->partbooks);
for(j=0;j<look->partvals;j++)
_ogg_free(look->decodemap[j]);
_ogg_free(look->decodemap);
 
memset(look,0,sizeof(*look));
_ogg_free(look);
}
}
 
static int icount(unsigned int v){
int ret=0;
while(v){
ret+=v&1;
v>>=1;
}
return(ret);
}
 
 
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 */
 
/* secondstages is a bitmask; as encoding progresses pass by pass, a
bitmask of one indicates this partition class has bits to write
this pass */
for(j=0;j<info->partitions;j++){
if(ov_ilog(info->secondstages[j])>3){
/* yes, this is a minor hack due to not thinking ahead */
oggpack_write(opb,info->secondstages[j],3);
oggpack_write(opb,1,1);
oggpack_write(opb,info->secondstages[j]>>3,5);
}else
oggpack_write(opb,info->secondstages[j],4); /* trailing zero */
acc+=icount(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=_ogg_calloc(1,sizeof(*info));
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);
 
/* check for premature EOP */
if(info->groupbook<0)goto errout;
 
for(j=0;j<info->partitions;j++){
int cascade=oggpack_read(opb,3);
int cflag=oggpack_read(opb,1);
if(cflag<0) goto errout;
if(cflag){
int c=oggpack_read(opb,5);
if(c<0) goto errout;
cascade|=(c<<3);
}
info->secondstages[j]=cascade;
 
acc+=icount(cascade);
}
for(j=0;j<acc;j++){
int book=oggpack_read(opb,8);
if(book<0) goto errout;
info->booklist[j]=book;
}
 
if(info->groupbook>=ci->books)goto errout;
for(j=0;j<acc;j++){
if(info->booklist[j]>=ci->books)goto errout;
if(ci->book_param[info->booklist[j]]->maptype==0)goto errout;
}
 
/* verify the phrasebook is not specifying an impossible or
inconsistent partitioning scheme. */
/* modify the phrasebook ranging check from r16327; an early beta
encoder had a bug where it used an oversized phrasebook by
accident. These files should continue to be playable, but don't
allow an exploit */
{
int entries = ci->book_param[info->groupbook]->entries;
int dim = ci->book_param[info->groupbook]->dim;
int partvals = 1;
if (dim<1) goto errout;
while(dim>0){
partvals *= info->partitions;
if(partvals > entries) goto errout;
dim--;
}
info->partvals = partvals;
}
 
return(info);
errout:
res0_free_info(info);
return(NULL);
}
 
vorbis_look_residue *res0_look(vorbis_dsp_state *vd,
vorbis_info_residue *vr){
vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr;
vorbis_look_residue0 *look=_ogg_calloc(1,sizeof(*look));
codec_setup_info *ci=vd->vi->codec_setup;
 
int j,k,acc=0;
int dim;
int maxstage=0;
look->info=info;
 
look->parts=info->partitions;
look->fullbooks=ci->fullbooks;
look->phrasebook=ci->fullbooks+info->groupbook;
dim=look->phrasebook->dim;
 
look->partbooks=_ogg_calloc(look->parts,sizeof(*look->partbooks));
 
for(j=0;j<look->parts;j++){
int stages=ov_ilog(info->secondstages[j]);
if(stages){
if(stages>maxstage)maxstage=stages;
look->partbooks[j]=_ogg_calloc(stages,sizeof(*look->partbooks[j]));
for(k=0;k<stages;k++)
if(info->secondstages[j]&(1<<k)){
look->partbooks[j][k]=ci->fullbooks+info->booklist[acc++];
#ifdef TRAIN_RES
look->training_data[k][j]=_ogg_calloc(look->partbooks[j][k]->entries,
sizeof(***look->training_data));
#endif
}
}
}
 
look->partvals=1;
for(j=0;j<dim;j++)
look->partvals*=look->parts;
 
look->stages=maxstage;
look->decodemap=_ogg_malloc(look->partvals*sizeof(*look->decodemap));
for(j=0;j<look->partvals;j++){
long val=j;
long mult=look->partvals/look->parts;
look->decodemap[j]=_ogg_malloc(dim*sizeof(*look->decodemap[j]));
for(k=0;k<dim;k++){
long deco=val/mult;
val-=deco*mult;
mult/=look->parts;
look->decodemap[j][k]=deco;
}
}
#if defined(TRAIN_RES) || defined (TRAIN_RESAUX)
{
static int train_seq=0;
look->train_seq=train_seq++;
}
#endif
return(look);
}
 
/* break an abstraction and copy some code for performance purposes */
static int local_book_besterror(codebook *book,int *a){
int dim=book->dim;
int i,j,o;
int minval=book->minval;
int del=book->delta;
int qv=book->quantvals;
int ze=(qv>>1);
int index=0;
/* assumes integer/centered encoder codebook maptype 1 no more than dim 8 */
int p[8]={0,0,0,0,0,0,0,0};
 
if(del!=1){
for(i=0,o=dim;i<dim;i++){
int v = (a[--o]-minval+(del>>1))/del;
int m = (v<ze ? ((ze-v)<<1)-1 : ((v-ze)<<1));
index = index*qv+ (m<0?0:(m>=qv?qv-1:m));
p[o]=v*del+minval;
}
}else{
for(i=0,o=dim;i<dim;i++){
int v = a[--o]-minval;
int m = (v<ze ? ((ze-v)<<1)-1 : ((v-ze)<<1));
index = index*qv+ (m<0?0:(m>=qv?qv-1:m));
p[o]=v*del+minval;
}
}
 
if(book->c->lengthlist[index]<=0){
const static_codebook *c=book->c;
int best=-1;
/* assumes integer/centered encoder codebook maptype 1 no more than dim 8 */
int e[8]={0,0,0,0,0,0,0,0};
int maxval = book->minval + book->delta*(book->quantvals-1);
for(i=0;i<book->entries;i++){
if(c->lengthlist[i]>0){
int this=0;
for(j=0;j<dim;j++){
int val=(e[j]-a[j]);
this+=val*val;
}
if(best==-1 || this<best){
memcpy(p,e,sizeof(p));
best=this;
index=i;
}
}
/* assumes the value patterning created by the tools in vq/ */
j=0;
while(e[j]>=maxval)
e[j++]=0;
if(e[j]>=0)
e[j]+=book->delta;
e[j]= -e[j];
}
}
 
if(index>-1){
for(i=0;i<dim;i++)
*a++ -= p[i];
}
 
return(index);
}
 
#ifdef TRAIN_RES
static int _encodepart(oggpack_buffer *opb,int *vec, int n,
codebook *book,long *acc){
#else
static int _encodepart(oggpack_buffer *opb,int *vec, int n,
codebook *book){
#endif
int i,bits=0;
int dim=book->dim;
int step=n/dim;
 
for(i=0;i<step;i++){
int entry=local_book_besterror(book,vec+i*dim);
 
#ifdef TRAIN_RES
if(entry>=0)
acc[entry]++;
#endif
 
bits+=vorbis_book_encode(book,entry,opb);
 
}
 
return(bits);
}
 
static long **_01class(vorbis_block *vb,vorbis_look_residue *vl,
int **in,int ch){
long i,j,k;
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 n=info->end-info->begin;
 
int partvals=n/samples_per_partition;
long **partword=_vorbis_block_alloc(vb,ch*sizeof(*partword));
float scale=100./samples_per_partition;
 
/* we find the partition type for each partition of each
channel. We'll go back and do the interleaved encoding in a
bit. For now, clarity */
 
for(i=0;i<ch;i++){
partword[i]=_vorbis_block_alloc(vb,n/samples_per_partition*sizeof(*partword[i]));
memset(partword[i],0,n/samples_per_partition*sizeof(*partword[i]));
}
 
for(i=0;i<partvals;i++){
int offset=i*samples_per_partition+info->begin;
for(j=0;j<ch;j++){
int max=0;
int ent=0;
for(k=0;k<samples_per_partition;k++){
if(abs(in[j][offset+k])>max)max=abs(in[j][offset+k]);
ent+=abs(in[j][offset+k]);
}
ent*=scale;
 
for(k=0;k<possible_partitions-1;k++)
if(max<=info->classmetric1[k] &&
(info->classmetric2[k]<0 || ent<info->classmetric2[k]))
break;
 
partword[j][i]=k;
}
}
 
#ifdef TRAIN_RESAUX
{
FILE *of;
char buffer[80];
 
for(i=0;i<ch;i++){
sprintf(buffer,"resaux_%d.vqd",look->train_seq);
of=fopen(buffer,"a");
for(j=0;j<partvals;j++)
fprintf(of,"%ld, ",partword[i][j]);
fprintf(of,"\n");
fclose(of);
}
}
#endif
look->frames++;
 
return(partword);
}
 
/* designed for stereo or other modes where the partition size is an
integer multiple of the number of channels encoded in the current
submap */
static long **_2class(vorbis_block *vb,vorbis_look_residue *vl,int **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 n=info->end-info->begin;
 
int partvals=n/samples_per_partition;
long **partword=_vorbis_block_alloc(vb,sizeof(*partword));
 
#if defined(TRAIN_RES) || defined (TRAIN_RESAUX)
FILE *of;
char buffer[80];
#endif
 
partword[0]=_vorbis_block_alloc(vb,partvals*sizeof(*partword[0]));
memset(partword[0],0,partvals*sizeof(*partword[0]));
 
for(i=0,l=info->begin/ch;i<partvals;i++){
int magmax=0;
int angmax=0;
for(j=0;j<samples_per_partition;j+=ch){
if(abs(in[0][l])>magmax)magmax=abs(in[0][l]);
for(k=1;k<ch;k++)
if(abs(in[k][l])>angmax)angmax=abs(in[k][l]);
l++;
}
 
for(j=0;j<possible_partitions-1;j++)
if(magmax<=info->classmetric1[j] &&
angmax<=info->classmetric2[j])
break;
 
partword[0][i]=j;
 
}
 
#ifdef TRAIN_RESAUX
sprintf(buffer,"resaux_%d.vqd",look->train_seq);
of=fopen(buffer,"a");
for(i=0;i<partvals;i++)
fprintf(of,"%ld, ",partword[0][i]);
fprintf(of,"\n");
fclose(of);
#endif
 
look->frames++;
 
return(partword);
}
 
static int _01forward(oggpack_buffer *opb,
vorbis_look_residue *vl,
int **in,int ch,
long **partword,
#ifdef TRAIN_RES
int (*encode)(oggpack_buffer *,int *,int,
codebook *,long *),
int submap
#else
int (*encode)(oggpack_buffer *,int *,int,
codebook *)
#endif
){
long i,j,k,s;
vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
vorbis_info_residue0 *info=look->info;
 
#ifdef TRAIN_RES
look->submap=submap;
#endif
 
/* 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;
 
int partvals=n/samples_per_partition;
long resbits[128];
long resvals[128];
 
#ifdef TRAIN_RES
for(i=0;i<ch;i++)
for(j=info->begin;j<info->end;j++){
if(in[i][j]>look->tmax)look->tmax=in[i][j];
if(in[i][j]<look->tmin)look->tmin=in[i][j];
}
#endif
 
memset(resbits,0,sizeof(resbits));
memset(resvals,0,sizeof(resvals));
 
/* 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(s=0;s<look->stages;s++){
 
for(i=0;i<partvals;){
 
/* first we encode a partition codeword for each channel */
if(s==0){
for(j=0;j<ch;j++){
long val=partword[j][i];
for(k=1;k<partitions_per_word;k++){
val*=possible_partitions;
if(i+k<partvals)
val+=partword[j][i+k];
}
 
/* training hack */
if(val<look->phrasebook->entries)
look->phrasebits+=vorbis_book_encode(look->phrasebook,val,opb);
#if 0 /*def TRAIN_RES*/
else
fprintf(stderr,"!");
#endif
 
}
}
 
/* now we encode interleaved residual values for the partitions */
for(k=0;k<partitions_per_word && i<partvals;k++,i++){
long offset=i*samples_per_partition+info->begin;
 
for(j=0;j<ch;j++){
if(s==0)resvals[partword[j][i]]+=samples_per_partition;
if(info->secondstages[partword[j][i]]&(1<<s)){
codebook *statebook=look->partbooks[partword[j][i]][s];
if(statebook){
int ret;
#ifdef TRAIN_RES
long *accumulator=NULL;
accumulator=look->training_data[s][partword[j][i]];
{
int l;
int *samples=in[j]+offset;
for(l=0;l<samples_per_partition;l++){
if(samples[l]<look->training_min[s][partword[j][i]])
look->training_min[s][partword[j][i]]=samples[l];
if(samples[l]>look->training_max[s][partword[j][i]])
look->training_max[s][partword[j][i]]=samples[l];
}
}
ret=encode(opb,in[j]+offset,samples_per_partition,
statebook,accumulator);
#else
ret=encode(opb,in[j]+offset,samples_per_partition,
statebook);
#endif
 
look->postbits+=ret;
resbits[partword[j][i]]+=ret;
}
}
}
}
}
}
 
return(0);
}
 
/* a truncated packet here just means 'stop working'; it's not an error */
static int _01inverse(vorbis_block *vb,vorbis_look_residue *vl,
float **in,int ch,
long (*decodepart)(codebook *, float *,
oggpack_buffer *,int)){
 
long i,j,k,l,s;
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 max=vb->pcmend>>1;
int end=(info->end<max?info->end:max);
int n=end-info->begin;
 
if(n>0){
int partvals=n/samples_per_partition;
int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
int ***partword=alloca(ch*sizeof(*partword));
 
for(j=0;j<ch;j++)
partword[j]=_vorbis_block_alloc(vb,partwords*sizeof(*partword[j]));
 
for(s=0;s<look->stages;s++){
 
/* each loop decodes on partition codeword containing
partitions_per_word partitions */
for(i=0,l=0;i<partvals;l++){
if(s==0){
/* 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 || temp>=info->partvals)goto eopbreak;
partword[j][l]=look->decodemap[temp];
if(partword[j][l]==NULL)goto errout;
}
}
 
/* now we decode residual values for the partitions */
for(k=0;k<partitions_per_word && i<partvals;k++,i++)
for(j=0;j<ch;j++){
long offset=info->begin+i*samples_per_partition;
if(info->secondstages[partword[j][l][k]]&(1<<s)){
codebook *stagebook=look->partbooks[partword[j][l][k]][s];
if(stagebook){
if(decodepart(stagebook,in[j]+offset,&vb->opb,
samples_per_partition)==-1)goto eopbreak;
}
}
}
}
}
}
errout:
eopbreak:
return(0);
}
 
int res0_inverse(vorbis_block *vb,vorbis_look_residue *vl,
float **in,int *nonzero,int ch){
int i,used=0;
for(i=0;i<ch;i++)
if(nonzero[i])
in[used++]=in[i];
if(used)
return(_01inverse(vb,vl,in,used,vorbis_book_decodevs_add));
else
return(0);
}
 
int res1_forward(oggpack_buffer *opb,vorbis_block *vb,vorbis_look_residue *vl,
int **in,int *nonzero,int ch, long **partword, int submap){
int i,used=0;
(void)vb;
for(i=0;i<ch;i++)
if(nonzero[i])
in[used++]=in[i];
 
if(used){
#ifdef TRAIN_RES
return _01forward(opb,vl,in,used,partword,_encodepart,submap);
#else
(void)submap;
return _01forward(opb,vl,in,used,partword,_encodepart);
#endif
}else{
return(0);
}
}
 
long **res1_class(vorbis_block *vb,vorbis_look_residue *vl,
int **in,int *nonzero,int ch){
int i,used=0;
for(i=0;i<ch;i++)
if(nonzero[i])
in[used++]=in[i];
if(used)
return(_01class(vb,vl,in,used));
else
return(0);
}
 
int res1_inverse(vorbis_block *vb,vorbis_look_residue *vl,
float **in,int *nonzero,int ch){
int i,used=0;
for(i=0;i<ch;i++)
if(nonzero[i])
in[used++]=in[i];
if(used)
return(_01inverse(vb,vl,in,used,vorbis_book_decodev_add));
else
return(0);
}
 
long **res2_class(vorbis_block *vb,vorbis_look_residue *vl,
int **in,int *nonzero,int ch){
int i,used=0;
for(i=0;i<ch;i++)
if(nonzero[i])used++;
if(used)
return(_2class(vb,vl,in,ch));
else
return(0);
}
 
/* res2 is slightly more different; all the channels are interleaved
into a single vector and encoded. */
 
int res2_forward(oggpack_buffer *opb,
vorbis_block *vb,vorbis_look_residue *vl,
int **in,int *nonzero,int ch, long **partword,int submap){
long i,j,k,n=vb->pcmend/2,used=0;
 
/* don't duplicate the code; use a working vector hack for now and
reshape ourselves into a single channel res1 */
/* ugly; reallocs for each coupling pass :-( */
int *work=_vorbis_block_alloc(vb,ch*n*sizeof(*work));
for(i=0;i<ch;i++){
int *pcm=in[i];
if(nonzero[i])used++;
for(j=0,k=i;j<n;j++,k+=ch)
work[k]=pcm[j];
}
 
if(used){
#ifdef TRAIN_RES
return _01forward(opb,vl,&work,1,partword,_encodepart,submap);
#else
(void)submap;
return _01forward(opb,vl,&work,1,partword,_encodepart);
#endif
}else{
return(0);
}
}
 
/* duplicate code here as speed is somewhat more important */
int res2_inverse(vorbis_block *vb,vorbis_look_residue *vl,
float **in,int *nonzero,int ch){
long i,k,l,s;
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 max=(vb->pcmend*ch)>>1;
int end=(info->end<max?info->end:max);
int n=end-info->begin;
 
if(n>0){
int partvals=n/samples_per_partition;
int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
int **partword=_vorbis_block_alloc(vb,partwords*sizeof(*partword));
 
for(i=0;i<ch;i++)if(nonzero[i])break;
if(i==ch)return(0); /* no nonzero vectors */
 
for(s=0;s<look->stages;s++){
for(i=0,l=0;i<partvals;l++){
 
if(s==0){
/* fetch the partition word */
int temp=vorbis_book_decode(look->phrasebook,&vb->opb);
if(temp==-1 || temp>=info->partvals)goto eopbreak;
partword[l]=look->decodemap[temp];
if(partword[l]==NULL)goto errout;
}
 
/* now we decode residual values for the partitions */
for(k=0;k<partitions_per_word && i<partvals;k++,i++)
if(info->secondstages[partword[l][k]]&(1<<s)){
codebook *stagebook=look->partbooks[partword[l][k]][s];
 
if(stagebook){
if(vorbis_book_decodevv_add(stagebook,in,
i*samples_per_partition+info->begin,ch,
&vb->opb,samples_per_partition)==-1)
goto eopbreak;
}
}
}
}
}
errout:
eopbreak:
return(0);
}
 
 
const vorbis_func_residue residue0_exportbundle={
NULL,
&res0_unpack,
&res0_look,
&res0_free_info,
&res0_free_look,
NULL,
NULL,
&res0_inverse
};
 
const vorbis_func_residue residue1_exportbundle={
&res0_pack,
&res0_unpack,
&res0_look,
&res0_free_info,
&res0_free_look,
&res1_class,
&res1_forward,
&res1_inverse
};
 
const vorbis_func_residue residue2_exportbundle={
&res0_pack,
&res0_unpack,
&res0_look,
&res0_free_info,
&res0_free_look,
&res2_class,
&res2_forward,
&res2_inverse
};
/contrib/sdk/sources/libvorbis-1.3.7/lib/scales.h
0,0 → 1,89
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: linear scale -> dB, Bark and Mel scales
 
********************************************************************/
 
#ifndef _V_SCALES_H_
#define _V_SCALES_H_
 
#include <math.h>
#include "os.h"
 
#ifdef _MSC_VER
/* MS Visual Studio doesn't have C99 inline keyword. */
#define inline __inline
#endif
 
/* 20log10(x) */
#define VORBIS_IEEE_FLOAT32 1
#ifdef VORBIS_IEEE_FLOAT32
 
static inline float unitnorm(float x){
union {
ogg_uint32_t i;
float f;
} ix;
ix.f = x;
ix.i = (ix.i & 0x80000000U) | (0x3f800000U);
return ix.f;
}
 
/* Segher was off (too high) by ~ .3 decibel. Center the conversion correctly. */
static inline float todB(const float *x){
union {
ogg_uint32_t i;
float f;
} ix;
ix.f = *x;
ix.i = ix.i&0x7fffffff;
return (float)(ix.i * 7.17711438e-7f -764.6161886f);
}
 
#define todB_nn(x) todB(x)
 
#else
 
static float unitnorm(float x){
if(x<0)return(-1.f);
return(1.f);
}
 
#define todB(x) (*(x)==0?-400.f:log(*(x)**(x))*4.34294480f)
#define todB_nn(x) (*(x)==0.f?-400.f:log(*(x))*8.6858896f)
 
#endif
 
#define fromdB(x) (exp((x)*.11512925f))
 
/* The bark scale equations are approximations, since the original
table was somewhat hand rolled. The below are chosen to have the
best possible fit to the rolled tables, thus their somewhat odd
appearance (these are more accurate and over a longer range than
the oft-quoted bark equations found in the texts I have). The
approximations are valid from 0 - 30kHz (nyquist) or so.
 
all f in Hz, z in Bark */
 
#define toBARK(n) (13.1f*atan(.00074f*(n))+2.24f*atan((n)*(n)*1.85e-8f)+1e-4f*(n))
#define fromBARK(z) (102.f*(z)-2.f*pow(z,2.f)+.4f*pow(z,3.f)+pow(1.46f,z)-1.f)
#define toMEL(n) (log(1.f+(n)*.001f)*1442.695f)
#define fromMEL(m) (1000.f*exp((m)/1442.695f)-1000.f)
 
/* Frequency to octave. We arbitrarily declare 63.5 Hz to be octave
0.0 */
 
#define toOC(n) (log(n)*1.442695f-5.965784f)
#define fromOC(o) (exp(((o)+5.965784f)*.693147f))
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/sharedbook.c
0,0 → 1,604
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: basic shared codebook operations
 
********************************************************************/
 
#include <stdlib.h>
#include <limits.h>
#include <math.h>
#include <string.h>
#include <ogg/ogg.h>
#include "os.h"
#include "misc.h"
#include "vorbis/codec.h"
#include "codebook.h"
#include "scales.h"
 
/**** pack/unpack helpers ******************************************/
 
int ov_ilog(ogg_uint32_t v){
int ret;
for(ret=0;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.f)+.001); /* +epsilon */
mant=rint(ldexp(val,(VQ_FMAN-1)-exp));
exp=(exp+VQ_FEXP_BIAS)<<VQ_FMAN;
 
return(sign|exp|mant);
}
 
float _float32_unpack(long val){
double mant=val&0x1fffff;
int sign=val&0x80000000;
long exp =(val&0x7fe00000L)>>VQ_FMAN;
if(sign)mant= -mant;
exp=exp-(VQ_FMAN-1)-VQ_FEXP_BIAS;
/* clamp excessive exponent values */
if (exp>63){
exp=63;
}
if (exp<-63){
exp=-63;
}
return(ldexp(mant,exp));
}
 
/* 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) */
ogg_uint32_t *_make_words(char *l,long n,long sparsecount){
long i,j,count=0;
ogg_uint32_t marker[33];
ogg_uint32_t *r=_ogg_malloc((sparsecount?sparsecount:n)*sizeof(*r));
memset(marker,0,sizeof(marker));
 
for(i=0;i<n;i++){
long length=l[i];
if(length>0){
ogg_uint32_t 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 */
_ogg_free(r);
return(NULL);
}
r[count++]=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;
}else
if(sparsecount==0)count++;
}
 
/* any underpopulated tree must be rejected. */
/* Single-entry codebooks are a retconned extension to the spec.
They have a single codeword '0' of length 1 that results in an
underpopulated tree. Shield that case from the underformed tree check. */
if(!(count==1 && marker[2]==2)){
for(i=1;i<33;i++)
if(marker[i] & (0xffffffffUL>>(32-i))){
_ogg_free(r);
return(NULL);
}
}
 
/* bitreverse the words because our bitwise packer/unpacker is LSb
endian */
for(i=0,count=0;i<n;i++){
ogg_uint32_t temp=0;
for(j=0;j<l[i];j++){
temp<<=1;
temp|=(r[count]>>j)&1;
}
 
if(sparsecount){
if(l[i])
r[count++]=temp;
}else
r[count++]=temp;
}
 
return(r);
}
 
/* 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;
if(b->entries<1){
return(0);
}
vals=floor(pow((float)b->entries,1.f/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 */
if(vals<1){
vals=1;
}
while(1){
long acc=1;
long acc1=1;
int i;
for(i=0;i<b->dim;i++){
if(b->entries/vals<acc)break;
acc*=vals;
if(LONG_MAX/(vals+1)<acc1)acc1=LONG_MAX;
else acc1*=vals+1;
}
if(i>=b->dim && acc<=b->entries && acc1>b->entries){
return(vals);
}else{
if(i<b->dim || 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,int n,int *sparsemap){
long j,k,count=0;
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=_ogg_calloc(n*b->dim,sizeof(*r));
 
/* 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++){
if((sparsemap && b->lengthlist[j]) || !sparsemap){
float last=0.f;
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;
if(sparsemap)
r[sparsemap[count]*b->dim+k]=val;
else
r[count*b->dim+k]=val;
indexdiv*=quantvals;
}
count++;
}
 
}
break;
case 2:
for(j=0;j<b->entries;j++){
if((sparsemap && b->lengthlist[j]) || !sparsemap){
float last=0.f;
 
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;
if(sparsemap)
r[sparsemap[count]*b->dim+k]=val;
else
r[count*b->dim+k]=val;
}
count++;
}
}
break;
}
 
return(r);
}
return(NULL);
}
 
void vorbis_staticbook_destroy(static_codebook *b){
if(b->allocedp){
if(b->quantlist)_ogg_free(b->quantlist);
if(b->lengthlist)_ogg_free(b->lengthlist);
memset(b,0,sizeof(*b));
_ogg_free(b);
} /* otherwise, it is in static memory */
}
 
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->valuelist)_ogg_free(b->valuelist);
if(b->codelist)_ogg_free(b->codelist);
 
if(b->dec_index)_ogg_free(b->dec_index);
if(b->dec_codelengths)_ogg_free(b->dec_codelengths);
if(b->dec_firsttable)_ogg_free(b->dec_firsttable);
 
memset(b,0,sizeof(*b));
}
 
int vorbis_book_init_encode(codebook *c,const static_codebook *s){
 
memset(c,0,sizeof(*c));
c->c=s;
c->entries=s->entries;
c->used_entries=s->entries;
c->dim=s->dim;
c->codelist=_make_words(s->lengthlist,s->entries,0);
/* c->valuelist=_book_unquantize(s,s->entries,NULL); */
c->quantvals=_book_maptype1_quantvals(s);
c->minval=(int)rint(_float32_unpack(s->q_min));
c->delta=(int)rint(_float32_unpack(s->q_delta));
 
return(0);
}
 
static ogg_uint32_t bitreverse(ogg_uint32_t x){
x= ((x>>16)&0x0000ffffUL) | ((x<<16)&0xffff0000UL);
x= ((x>> 8)&0x00ff00ffUL) | ((x<< 8)&0xff00ff00UL);
x= ((x>> 4)&0x0f0f0f0fUL) | ((x<< 4)&0xf0f0f0f0UL);
x= ((x>> 2)&0x33333333UL) | ((x<< 2)&0xccccccccUL);
return((x>> 1)&0x55555555UL) | ((x<< 1)&0xaaaaaaaaUL);
}
 
static int sort32a(const void *a,const void *b){
return ( **(ogg_uint32_t **)a>**(ogg_uint32_t **)b)-
( **(ogg_uint32_t **)a<**(ogg_uint32_t **)b);
}
 
/* decode codebook arrangement is more heavily optimized than encode */
int vorbis_book_init_decode(codebook *c,const static_codebook *s){
int i,j,n=0,tabn;
int *sortindex;
 
memset(c,0,sizeof(*c));
 
/* count actually used entries and find max length */
for(i=0;i<s->entries;i++)
if(s->lengthlist[i]>0)
n++;
 
c->entries=s->entries;
c->used_entries=n;
c->dim=s->dim;
 
if(n>0){
/* two different remappings go on here.
 
First, we collapse the likely sparse codebook down only to
actually represented values/words. This collapsing needs to be
indexed as map-valueless books are used to encode original entry
positions as integers.
 
Second, we reorder all vectors, including the entry index above,
by sorted bitreversed codeword to allow treeless decode. */
 
/* perform sort */
ogg_uint32_t *codes=_make_words(s->lengthlist,s->entries,c->used_entries);
ogg_uint32_t **codep=alloca(sizeof(*codep)*n);
 
if(codes==NULL)goto err_out;
 
for(i=0;i<n;i++){
codes[i]=bitreverse(codes[i]);
codep[i]=codes+i;
}
 
qsort(codep,n,sizeof(*codep),sort32a);
 
sortindex=alloca(n*sizeof(*sortindex));
c->codelist=_ogg_malloc(n*sizeof(*c->codelist));
/* the index is a reverse index */
for(i=0;i<n;i++){
int position=codep[i]-codes;
sortindex[position]=i;
}
 
for(i=0;i<n;i++)
c->codelist[sortindex[i]]=codes[i];
_ogg_free(codes);
 
c->valuelist=_book_unquantize(s,n,sortindex);
c->dec_index=_ogg_malloc(n*sizeof(*c->dec_index));
 
for(n=0,i=0;i<s->entries;i++)
if(s->lengthlist[i]>0)
c->dec_index[sortindex[n++]]=i;
 
c->dec_codelengths=_ogg_malloc(n*sizeof(*c->dec_codelengths));
c->dec_maxlength=0;
for(n=0,i=0;i<s->entries;i++)
if(s->lengthlist[i]>0){
c->dec_codelengths[sortindex[n++]]=s->lengthlist[i];
if(s->lengthlist[i]>c->dec_maxlength)
c->dec_maxlength=s->lengthlist[i];
}
 
if(n==1 && c->dec_maxlength==1){
/* special case the 'single entry codebook' with a single bit
fastpath table (that always returns entry 0 )in order to use
unmodified decode paths. */
c->dec_firsttablen=1;
c->dec_firsttable=_ogg_calloc(2,sizeof(*c->dec_firsttable));
c->dec_firsttable[0]=c->dec_firsttable[1]=1;
 
}else{
c->dec_firsttablen=ov_ilog(c->used_entries)-4; /* this is magic */
if(c->dec_firsttablen<5)c->dec_firsttablen=5;
if(c->dec_firsttablen>8)c->dec_firsttablen=8;
 
tabn=1<<c->dec_firsttablen;
c->dec_firsttable=_ogg_calloc(tabn,sizeof(*c->dec_firsttable));
 
for(i=0;i<n;i++){
if(c->dec_codelengths[i]<=c->dec_firsttablen){
ogg_uint32_t orig=bitreverse(c->codelist[i]);
for(j=0;j<(1<<(c->dec_firsttablen-c->dec_codelengths[i]));j++)
c->dec_firsttable[orig|(j<<c->dec_codelengths[i])]=i+1;
}
}
 
/* now fill in 'unused' entries in the firsttable with hi/lo search
hints for the non-direct-hits */
{
ogg_uint32_t mask=0xfffffffeUL<<(31-c->dec_firsttablen);
long lo=0,hi=0;
 
for(i=0;i<tabn;i++){
ogg_uint32_t word=i<<(32-c->dec_firsttablen);
if(c->dec_firsttable[bitreverse(word)]==0){
while((lo+1)<n && c->codelist[lo+1]<=word)lo++;
while( hi<n && word>=(c->codelist[hi]&mask))hi++;
 
/* we only actually have 15 bits per hint to play with here.
In order to overflow gracefully (nothing breaks, efficiency
just drops), encode as the difference from the extremes. */
{
unsigned long loval=lo;
unsigned long hival=n-hi;
 
if(loval>0x7fff)loval=0x7fff;
if(hival>0x7fff)hival=0x7fff;
c->dec_firsttable[bitreverse(word)]=
0x80000000UL | (loval<<15) | hival;
}
}
}
}
}
}
 
return(0);
err_out:
vorbis_book_clear(c);
return(-1);
}
 
long vorbis_book_codeword(codebook *book,int entry){
if(book->c) /* only use with encode; decode optimizations are
allowed to break this */
return book->codelist[entry];
return -1;
}
 
long vorbis_book_codelen(codebook *book,int entry){
if(book->c) /* only use with encode; decode optimizations are
allowed to break this */
return book->c->lengthlist[entry];
return -1;
}
 
#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,
0
};
static float *test1_result=NULL;
 
/* linear, full mapping, nonsequential */
static_codebook test2={
4,3,
NULL,
2,
-533200896,1611661312,4,0,
full_quantlist1,
0
};
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,
0
};
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,
0
};
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,
0
};
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,b->entries,NULL);
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);
}
}
free(out);
}
 
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
/contrib/sdk/sources/libvorbis-1.3.7/lib/smallft.c
0,0 → 1,1254
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: *unnormalized* fft transform
 
********************************************************************/
 
/* FFT implementation from OggSquish, minus cosine transforms,
* minus all but radix 2/4 case. In Vorbis we only need this
* cut-down version.
*
* To do more than just power-of-two sized vectors, see the full
* version I wrote for NetLib.
*
* Note that the packing is a little strange; rather than the FFT r/i
* packing following R_0, I_n, R_1, I_1, R_2, I_2 ... R_n-1, I_n-1,
* it follows R_0, R_1, I_1, R_2, I_2 ... R_n-1, I_n-1, I_n like the
* FORTRAN version
*/
 
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "smallft.h"
#include "os.h"
#include "misc.h"
 
static void drfti1(int n, float *wa, int *ifac){
static int ntryh[4] = { 4,2,3,5 };
static float tpi = 6.28318530717958648f;
float arg,argh,argld,fi;
int ntry=0,i,j=-1;
int k1, l1, l2, ib;
int ld, ii, ip, is, nq, nr;
int ido, ipm, nfm1;
int nl=n;
int nf=0;
 
L101:
j++;
if (j < 4)
ntry=ntryh[j];
else
ntry+=2;
 
L104:
nq=nl/ntry;
nr=nl-ntry*nq;
if (nr!=0) goto L101;
 
nf++;
ifac[nf+1]=ntry;
nl=nq;
if(ntry!=2)goto L107;
if(nf==1)goto L107;
 
for (i=1;i<nf;i++){
ib=nf-i+1;
ifac[ib+1]=ifac[ib];
}
ifac[2] = 2;
 
L107:
if(nl!=1)goto L104;
ifac[0]=n;
ifac[1]=nf;
argh=tpi/n;
is=0;
nfm1=nf-1;
l1=1;
 
if(nfm1==0)return;
 
for (k1=0;k1<nfm1;k1++){
ip=ifac[k1+2];
ld=0;
l2=l1*ip;
ido=n/l2;
ipm=ip-1;
 
for (j=0;j<ipm;j++){
ld+=l1;
i=is;
argld=(float)ld*argh;
fi=0.f;
for (ii=2;ii<ido;ii+=2){
fi+=1.f;
arg=fi*argld;
wa[i++]=cos(arg);
wa[i++]=sin(arg);
}
is+=ido;
}
l1=l2;
}
}
 
static void fdrffti(int n, float *wsave, int *ifac){
 
if (n == 1) return;
drfti1(n, wsave+n, ifac);
}
 
static void dradf2(int ido,int l1,float *cc,float *ch,float *wa1){
int i,k;
float ti2,tr2;
int t0,t1,t2,t3,t4,t5,t6;
 
t1=0;
t0=(t2=l1*ido);
t3=ido<<1;
for(k=0;k<l1;k++){
ch[t1<<1]=cc[t1]+cc[t2];
ch[(t1<<1)+t3-1]=cc[t1]-cc[t2];
t1+=ido;
t2+=ido;
}
 
if(ido<2)return;
if(ido==2)goto L105;
 
t1=0;
t2=t0;
for(k=0;k<l1;k++){
t3=t2;
t4=(t1<<1)+(ido<<1);
t5=t1;
t6=t1+t1;
for(i=2;i<ido;i+=2){
t3+=2;
t4-=2;
t5+=2;
t6+=2;
tr2=wa1[i-2]*cc[t3-1]+wa1[i-1]*cc[t3];
ti2=wa1[i-2]*cc[t3]-wa1[i-1]*cc[t3-1];
ch[t6]=cc[t5]+ti2;
ch[t4]=ti2-cc[t5];
ch[t6-1]=cc[t5-1]+tr2;
ch[t4-1]=cc[t5-1]-tr2;
}
t1+=ido;
t2+=ido;
}
 
if(ido%2==1)return;
 
L105:
t3=(t2=(t1=ido)-1);
t2+=t0;
for(k=0;k<l1;k++){
ch[t1]=-cc[t2];
ch[t1-1]=cc[t3];
t1+=ido<<1;
t2+=ido;
t3+=ido;
}
}
 
static void dradf4(int ido,int l1,float *cc,float *ch,float *wa1,
float *wa2,float *wa3){
static float hsqt2 = .70710678118654752f;
int i,k,t0,t1,t2,t3,t4,t5,t6;
float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
t0=l1*ido;
 
t1=t0;
t4=t1<<1;
t2=t1+(t1<<1);
t3=0;
 
for(k=0;k<l1;k++){
tr1=cc[t1]+cc[t2];
tr2=cc[t3]+cc[t4];
 
ch[t5=t3<<2]=tr1+tr2;
ch[(ido<<2)+t5-1]=tr2-tr1;
ch[(t5+=(ido<<1))-1]=cc[t3]-cc[t4];
ch[t5]=cc[t2]-cc[t1];
 
t1+=ido;
t2+=ido;
t3+=ido;
t4+=ido;
}
 
if(ido<2)return;
if(ido==2)goto L105;
 
 
t1=0;
for(k=0;k<l1;k++){
t2=t1;
t4=t1<<2;
t5=(t6=ido<<1)+t4;
for(i=2;i<ido;i+=2){
t3=(t2+=2);
t4+=2;
t5-=2;
 
t3+=t0;
cr2=wa1[i-2]*cc[t3-1]+wa1[i-1]*cc[t3];
ci2=wa1[i-2]*cc[t3]-wa1[i-1]*cc[t3-1];
t3+=t0;
cr3=wa2[i-2]*cc[t3-1]+wa2[i-1]*cc[t3];
ci3=wa2[i-2]*cc[t3]-wa2[i-1]*cc[t3-1];
t3+=t0;
cr4=wa3[i-2]*cc[t3-1]+wa3[i-1]*cc[t3];
ci4=wa3[i-2]*cc[t3]-wa3[i-1]*cc[t3-1];
 
tr1=cr2+cr4;
tr4=cr4-cr2;
ti1=ci2+ci4;
ti4=ci2-ci4;
 
ti2=cc[t2]+ci3;
ti3=cc[t2]-ci3;
tr2=cc[t2-1]+cr3;
tr3=cc[t2-1]-cr3;
 
ch[t4-1]=tr1+tr2;
ch[t4]=ti1+ti2;
 
ch[t5-1]=tr3-ti4;
ch[t5]=tr4-ti3;
 
ch[t4+t6-1]=ti4+tr3;
ch[t4+t6]=tr4+ti3;
 
ch[t5+t6-1]=tr2-tr1;
ch[t5+t6]=ti1-ti2;
}
t1+=ido;
}
if(ido&1)return;
 
L105:
 
t2=(t1=t0+ido-1)+(t0<<1);
t3=ido<<2;
t4=ido;
t5=ido<<1;
t6=ido;
 
for(k=0;k<l1;k++){
ti1=-hsqt2*(cc[t1]+cc[t2]);
tr1=hsqt2*(cc[t1]-cc[t2]);
 
ch[t4-1]=tr1+cc[t6-1];
ch[t4+t5-1]=cc[t6-1]-tr1;
 
ch[t4]=ti1-cc[t1+t0];
ch[t4+t5]=ti1+cc[t1+t0];
 
t1+=ido;
t2+=ido;
t4+=t3;
t6+=ido;
}
}
 
static void dradfg(int ido,int ip,int l1,int idl1,float *cc,float *c1,
float *c2,float *ch,float *ch2,float *wa){
 
static float tpi=6.283185307179586f;
int idij,ipph,i,j,k,l,ic,ik,is;
int t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
float dc2,ai1,ai2,ar1,ar2,ds2;
int nbd;
float dcp,arg,dsp,ar1h,ar2h;
int idp2,ipp2;
 
arg=tpi/(float)ip;
dcp=cos(arg);
dsp=sin(arg);
ipph=(ip+1)>>1;
ipp2=ip;
idp2=ido;
nbd=(ido-1)>>1;
t0=l1*ido;
t10=ip*ido;
 
if(ido==1)goto L119;
for(ik=0;ik<idl1;ik++)ch2[ik]=c2[ik];
 
t1=0;
for(j=1;j<ip;j++){
t1+=t0;
t2=t1;
for(k=0;k<l1;k++){
ch[t2]=c1[t2];
t2+=ido;
}
}
 
is=-ido;
t1=0;
if(nbd>l1){
for(j=1;j<ip;j++){
t1+=t0;
is+=ido;
t2= -ido+t1;
for(k=0;k<l1;k++){
idij=is-1;
t2+=ido;
t3=t2;
for(i=2;i<ido;i+=2){
idij+=2;
t3+=2;
ch[t3-1]=wa[idij-1]*c1[t3-1]+wa[idij]*c1[t3];
ch[t3]=wa[idij-1]*c1[t3]-wa[idij]*c1[t3-1];
}
}
}
}else{
 
for(j=1;j<ip;j++){
is+=ido;
idij=is-1;
t1+=t0;
t2=t1;
for(i=2;i<ido;i+=2){
idij+=2;
t2+=2;
t3=t2;
for(k=0;k<l1;k++){
ch[t3-1]=wa[idij-1]*c1[t3-1]+wa[idij]*c1[t3];
ch[t3]=wa[idij-1]*c1[t3]-wa[idij]*c1[t3-1];
t3+=ido;
}
}
}
}
 
t1=0;
t2=ipp2*t0;
if(nbd<l1){
for(j=1;j<ipph;j++){
t1+=t0;
t2-=t0;
t3=t1;
t4=t2;
for(i=2;i<ido;i+=2){
t3+=2;
t4+=2;
t5=t3-ido;
t6=t4-ido;
for(k=0;k<l1;k++){
t5+=ido;
t6+=ido;
c1[t5-1]=ch[t5-1]+ch[t6-1];
c1[t6-1]=ch[t5]-ch[t6];
c1[t5]=ch[t5]+ch[t6];
c1[t6]=ch[t6-1]-ch[t5-1];
}
}
}
}else{
for(j=1;j<ipph;j++){
t1+=t0;
t2-=t0;
t3=t1;
t4=t2;
for(k=0;k<l1;k++){
t5=t3;
t6=t4;
for(i=2;i<ido;i+=2){
t5+=2;
t6+=2;
c1[t5-1]=ch[t5-1]+ch[t6-1];
c1[t6-1]=ch[t5]-ch[t6];
c1[t5]=ch[t5]+ch[t6];
c1[t6]=ch[t6-1]-ch[t5-1];
}
t3+=ido;
t4+=ido;
}
}
}
 
L119:
for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik];
 
t1=0;
t2=ipp2*idl1;
for(j=1;j<ipph;j++){
t1+=t0;
t2-=t0;
t3=t1-ido;
t4=t2-ido;
for(k=0;k<l1;k++){
t3+=ido;
t4+=ido;
c1[t3]=ch[t3]+ch[t4];
c1[t4]=ch[t4]-ch[t3];
}
}
 
ar1=1.f;
ai1=0.f;
t1=0;
t2=ipp2*idl1;
t3=(ip-1)*idl1;
for(l=1;l<ipph;l++){
t1+=idl1;
t2-=idl1;
ar1h=dcp*ar1-dsp*ai1;
ai1=dcp*ai1+dsp*ar1;
ar1=ar1h;
t4=t1;
t5=t2;
t6=t3;
t7=idl1;
 
for(ik=0;ik<idl1;ik++){
ch2[t4++]=c2[ik]+ar1*c2[t7++];
ch2[t5++]=ai1*c2[t6++];
}
 
dc2=ar1;
ds2=ai1;
ar2=ar1;
ai2=ai1;
 
t4=idl1;
t5=(ipp2-1)*idl1;
for(j=2;j<ipph;j++){
t4+=idl1;
t5-=idl1;
 
ar2h=dc2*ar2-ds2*ai2;
ai2=dc2*ai2+ds2*ar2;
ar2=ar2h;
 
t6=t1;
t7=t2;
t8=t4;
t9=t5;
for(ik=0;ik<idl1;ik++){
ch2[t6++]+=ar2*c2[t8++];
ch2[t7++]+=ai2*c2[t9++];
}
}
}
 
t1=0;
for(j=1;j<ipph;j++){
t1+=idl1;
t2=t1;
for(ik=0;ik<idl1;ik++)ch2[ik]+=c2[t2++];
}
 
if(ido<l1)goto L132;
 
t1=0;
t2=0;
for(k=0;k<l1;k++){
t3=t1;
t4=t2;
for(i=0;i<ido;i++)cc[t4++]=ch[t3++];
t1+=ido;
t2+=t10;
}
 
goto L135;
 
L132:
for(i=0;i<ido;i++){
t1=i;
t2=i;
for(k=0;k<l1;k++){
cc[t2]=ch[t1];
t1+=ido;
t2+=t10;
}
}
 
L135:
t1=0;
t2=ido<<1;
t3=0;
t4=ipp2*t0;
for(j=1;j<ipph;j++){
 
t1+=t2;
t3+=t0;
t4-=t0;
 
t5=t1;
t6=t3;
t7=t4;
 
for(k=0;k<l1;k++){
cc[t5-1]=ch[t6];
cc[t5]=ch[t7];
t5+=t10;
t6+=ido;
t7+=ido;
}
}
 
if(ido==1)return;
if(nbd<l1)goto L141;
 
t1=-ido;
t3=0;
t4=0;
t5=ipp2*t0;
for(j=1;j<ipph;j++){
t1+=t2;
t3+=t2;
t4+=t0;
t5-=t0;
t6=t1;
t7=t3;
t8=t4;
t9=t5;
for(k=0;k<l1;k++){
for(i=2;i<ido;i+=2){
ic=idp2-i;
cc[i+t7-1]=ch[i+t8-1]+ch[i+t9-1];
cc[ic+t6-1]=ch[i+t8-1]-ch[i+t9-1];
cc[i+t7]=ch[i+t8]+ch[i+t9];
cc[ic+t6]=ch[i+t9]-ch[i+t8];
}
t6+=t10;
t7+=t10;
t8+=ido;
t9+=ido;
}
}
return;
 
L141:
 
t1=-ido;
t3=0;
t4=0;
t5=ipp2*t0;
for(j=1;j<ipph;j++){
t1+=t2;
t3+=t2;
t4+=t0;
t5-=t0;
for(i=2;i<ido;i+=2){
t6=idp2+t1-i;
t7=i+t3;
t8=i+t4;
t9=i+t5;
for(k=0;k<l1;k++){
cc[t7-1]=ch[t8-1]+ch[t9-1];
cc[t6-1]=ch[t8-1]-ch[t9-1];
cc[t7]=ch[t8]+ch[t9];
cc[t6]=ch[t9]-ch[t8];
t6+=t10;
t7+=t10;
t8+=ido;
t9+=ido;
}
}
}
}
 
static void drftf1(int n,float *c,float *ch,float *wa,int *ifac){
int i,k1,l1,l2;
int na,kh,nf;
int ip,iw,ido,idl1,ix2,ix3;
 
nf=ifac[1];
na=1;
l2=n;
iw=n;
 
for(k1=0;k1<nf;k1++){
kh=nf-k1;
ip=ifac[kh+1];
l1=l2/ip;
ido=n/l2;
idl1=ido*l1;
iw-=(ip-1)*ido;
na=1-na;
 
if(ip!=4)goto L102;
 
ix2=iw+ido;
ix3=ix2+ido;
if(na!=0)
dradf4(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1);
else
dradf4(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1);
goto L110;
 
L102:
if(ip!=2)goto L104;
if(na!=0)goto L103;
 
dradf2(ido,l1,c,ch,wa+iw-1);
goto L110;
 
L103:
dradf2(ido,l1,ch,c,wa+iw-1);
goto L110;
 
L104:
if(ido==1)na=1-na;
if(na!=0)goto L109;
 
dradfg(ido,ip,l1,idl1,c,c,c,ch,ch,wa+iw-1);
na=1;
goto L110;
 
L109:
dradfg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa+iw-1);
na=0;
 
L110:
l2=l1;
}
 
if(na==1)return;
 
for(i=0;i<n;i++)c[i]=ch[i];
}
 
static void dradb2(int ido,int l1,float *cc,float *ch,float *wa1){
int i,k,t0,t1,t2,t3,t4,t5,t6;
float ti2,tr2;
 
t0=l1*ido;
 
t1=0;
t2=0;
t3=(ido<<1)-1;
for(k=0;k<l1;k++){
ch[t1]=cc[t2]+cc[t3+t2];
ch[t1+t0]=cc[t2]-cc[t3+t2];
t2=(t1+=ido)<<1;
}
 
if(ido<2)return;
if(ido==2)goto L105;
 
t1=0;
t2=0;
for(k=0;k<l1;k++){
t3=t1;
t5=(t4=t2)+(ido<<1);
t6=t0+t1;
for(i=2;i<ido;i+=2){
t3+=2;
t4+=2;
t5-=2;
t6+=2;
ch[t3-1]=cc[t4-1]+cc[t5-1];
tr2=cc[t4-1]-cc[t5-1];
ch[t3]=cc[t4]-cc[t5];
ti2=cc[t4]+cc[t5];
ch[t6-1]=wa1[i-2]*tr2-wa1[i-1]*ti2;
ch[t6]=wa1[i-2]*ti2+wa1[i-1]*tr2;
}
t2=(t1+=ido)<<1;
}
 
if(ido%2==1)return;
 
L105:
t1=ido-1;
t2=ido-1;
for(k=0;k<l1;k++){
ch[t1]=cc[t2]+cc[t2];
ch[t1+t0]=-(cc[t2+1]+cc[t2+1]);
t1+=ido;
t2+=ido<<1;
}
}
 
static void dradb3(int ido,int l1,float *cc,float *ch,float *wa1,
float *wa2){
static float taur = -.5f;
static float taui = .8660254037844386f;
int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
float ci2,ci3,di2,di3,cr2,cr3,dr2,dr3,ti2,tr2;
t0=l1*ido;
 
t1=0;
t2=t0<<1;
t3=ido<<1;
t4=ido+(ido<<1);
t5=0;
for(k=0;k<l1;k++){
tr2=cc[t3-1]+cc[t3-1];
cr2=cc[t5]+(taur*tr2);
ch[t1]=cc[t5]+tr2;
ci3=taui*(cc[t3]+cc[t3]);
ch[t1+t0]=cr2-ci3;
ch[t1+t2]=cr2+ci3;
t1+=ido;
t3+=t4;
t5+=t4;
}
 
if(ido==1)return;
 
t1=0;
t3=ido<<1;
for(k=0;k<l1;k++){
t7=t1+(t1<<1);
t6=(t5=t7+t3);
t8=t1;
t10=(t9=t1+t0)+t0;
 
for(i=2;i<ido;i+=2){
t5+=2;
t6-=2;
t7+=2;
t8+=2;
t9+=2;
t10+=2;
tr2=cc[t5-1]+cc[t6-1];
cr2=cc[t7-1]+(taur*tr2);
ch[t8-1]=cc[t7-1]+tr2;
ti2=cc[t5]-cc[t6];
ci2=cc[t7]+(taur*ti2);
ch[t8]=cc[t7]+ti2;
cr3=taui*(cc[t5-1]-cc[t6-1]);
ci3=taui*(cc[t5]+cc[t6]);
dr2=cr2-ci3;
dr3=cr2+ci3;
di2=ci2+cr3;
di3=ci2-cr3;
ch[t9-1]=wa1[i-2]*dr2-wa1[i-1]*di2;
ch[t9]=wa1[i-2]*di2+wa1[i-1]*dr2;
ch[t10-1]=wa2[i-2]*dr3-wa2[i-1]*di3;
ch[t10]=wa2[i-2]*di3+wa2[i-1]*dr3;
}
t1+=ido;
}
}
 
static void dradb4(int ido,int l1,float *cc,float *ch,float *wa1,
float *wa2,float *wa3){
static float sqrt2=1.414213562373095f;
int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8;
float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
t0=l1*ido;
 
t1=0;
t2=ido<<2;
t3=0;
t6=ido<<1;
for(k=0;k<l1;k++){
t4=t3+t6;
t5=t1;
tr3=cc[t4-1]+cc[t4-1];
tr4=cc[t4]+cc[t4];
tr1=cc[t3]-cc[(t4+=t6)-1];
tr2=cc[t3]+cc[t4-1];
ch[t5]=tr2+tr3;
ch[t5+=t0]=tr1-tr4;
ch[t5+=t0]=tr2-tr3;
ch[t5+=t0]=tr1+tr4;
t1+=ido;
t3+=t2;
}
 
if(ido<2)return;
if(ido==2)goto L105;
 
t1=0;
for(k=0;k<l1;k++){
t5=(t4=(t3=(t2=t1<<2)+t6))+t6;
t7=t1;
for(i=2;i<ido;i+=2){
t2+=2;
t3+=2;
t4-=2;
t5-=2;
t7+=2;
ti1=cc[t2]+cc[t5];
ti2=cc[t2]-cc[t5];
ti3=cc[t3]-cc[t4];
tr4=cc[t3]+cc[t4];
tr1=cc[t2-1]-cc[t5-1];
tr2=cc[t2-1]+cc[t5-1];
ti4=cc[t3-1]-cc[t4-1];
tr3=cc[t3-1]+cc[t4-1];
ch[t7-1]=tr2+tr3;
cr3=tr2-tr3;
ch[t7]=ti2+ti3;
ci3=ti2-ti3;
cr2=tr1-tr4;
cr4=tr1+tr4;
ci2=ti1+ti4;
ci4=ti1-ti4;
 
ch[(t8=t7+t0)-1]=wa1[i-2]*cr2-wa1[i-1]*ci2;
ch[t8]=wa1[i-2]*ci2+wa1[i-1]*cr2;
ch[(t8+=t0)-1]=wa2[i-2]*cr3-wa2[i-1]*ci3;
ch[t8]=wa2[i-2]*ci3+wa2[i-1]*cr3;
ch[(t8+=t0)-1]=wa3[i-2]*cr4-wa3[i-1]*ci4;
ch[t8]=wa3[i-2]*ci4+wa3[i-1]*cr4;
}
t1+=ido;
}
 
if(ido%2 == 1)return;
 
L105:
 
t1=ido;
t2=ido<<2;
t3=ido-1;
t4=ido+(ido<<1);
for(k=0;k<l1;k++){
t5=t3;
ti1=cc[t1]+cc[t4];
ti2=cc[t4]-cc[t1];
tr1=cc[t1-1]-cc[t4-1];
tr2=cc[t1-1]+cc[t4-1];
ch[t5]=tr2+tr2;
ch[t5+=t0]=sqrt2*(tr1-ti1);
ch[t5+=t0]=ti2+ti2;
ch[t5+=t0]=-sqrt2*(tr1+ti1);
 
t3+=ido;
t1+=t2;
t4+=t2;
}
}
 
static void dradbg(int ido,int ip,int l1,int idl1,float *cc,float *c1,
float *c2,float *ch,float *ch2,float *wa){
static float tpi=6.283185307179586f;
int idij,ipph,i,j,k,l,ik,is,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,
t11,t12;
float dc2,ai1,ai2,ar1,ar2,ds2;
int nbd;
float dcp,arg,dsp,ar1h,ar2h;
int ipp2;
 
t10=ip*ido;
t0=l1*ido;
arg=tpi/(float)ip;
dcp=cos(arg);
dsp=sin(arg);
nbd=(ido-1)>>1;
ipp2=ip;
ipph=(ip+1)>>1;
if(ido<l1)goto L103;
 
t1=0;
t2=0;
for(k=0;k<l1;k++){
t3=t1;
t4=t2;
for(i=0;i<ido;i++){
ch[t3]=cc[t4];
t3++;
t4++;
}
t1+=ido;
t2+=t10;
}
goto L106;
 
L103:
t1=0;
for(i=0;i<ido;i++){
t2=t1;
t3=t1;
for(k=0;k<l1;k++){
ch[t2]=cc[t3];
t2+=ido;
t3+=t10;
}
t1++;
}
 
L106:
t1=0;
t2=ipp2*t0;
t7=(t5=ido<<1);
for(j=1;j<ipph;j++){
t1+=t0;
t2-=t0;
t3=t1;
t4=t2;
t6=t5;
for(k=0;k<l1;k++){
ch[t3]=cc[t6-1]+cc[t6-1];
ch[t4]=cc[t6]+cc[t6];
t3+=ido;
t4+=ido;
t6+=t10;
}
t5+=t7;
}
 
if (ido == 1)goto L116;
if(nbd<l1)goto L112;
 
t1=0;
t2=ipp2*t0;
t7=0;
for(j=1;j<ipph;j++){
t1+=t0;
t2-=t0;
t3=t1;
t4=t2;
 
t7+=(ido<<1);
t8=t7;
for(k=0;k<l1;k++){
t5=t3;
t6=t4;
t9=t8;
t11=t8;
for(i=2;i<ido;i+=2){
t5+=2;
t6+=2;
t9+=2;
t11-=2;
ch[t5-1]=cc[t9-1]+cc[t11-1];
ch[t6-1]=cc[t9-1]-cc[t11-1];
ch[t5]=cc[t9]-cc[t11];
ch[t6]=cc[t9]+cc[t11];
}
t3+=ido;
t4+=ido;
t8+=t10;
}
}
goto L116;
 
L112:
t1=0;
t2=ipp2*t0;
t7=0;
for(j=1;j<ipph;j++){
t1+=t0;
t2-=t0;
t3=t1;
t4=t2;
t7+=(ido<<1);
t8=t7;
t9=t7;
for(i=2;i<ido;i+=2){
t3+=2;
t4+=2;
t8+=2;
t9-=2;
t5=t3;
t6=t4;
t11=t8;
t12=t9;
for(k=0;k<l1;k++){
ch[t5-1]=cc[t11-1]+cc[t12-1];
ch[t6-1]=cc[t11-1]-cc[t12-1];
ch[t5]=cc[t11]-cc[t12];
ch[t6]=cc[t11]+cc[t12];
t5+=ido;
t6+=ido;
t11+=t10;
t12+=t10;
}
}
}
 
L116:
ar1=1.f;
ai1=0.f;
t1=0;
t9=(t2=ipp2*idl1);
t3=(ip-1)*idl1;
for(l=1;l<ipph;l++){
t1+=idl1;
t2-=idl1;
 
ar1h=dcp*ar1-dsp*ai1;
ai1=dcp*ai1+dsp*ar1;
ar1=ar1h;
t4=t1;
t5=t2;
t6=0;
t7=idl1;
t8=t3;
for(ik=0;ik<idl1;ik++){
c2[t4++]=ch2[t6++]+ar1*ch2[t7++];
c2[t5++]=ai1*ch2[t8++];
}
dc2=ar1;
ds2=ai1;
ar2=ar1;
ai2=ai1;
 
t6=idl1;
t7=t9-idl1;
for(j=2;j<ipph;j++){
t6+=idl1;
t7-=idl1;
ar2h=dc2*ar2-ds2*ai2;
ai2=dc2*ai2+ds2*ar2;
ar2=ar2h;
t4=t1;
t5=t2;
t11=t6;
t12=t7;
for(ik=0;ik<idl1;ik++){
c2[t4++]+=ar2*ch2[t11++];
c2[t5++]+=ai2*ch2[t12++];
}
}
}
 
t1=0;
for(j=1;j<ipph;j++){
t1+=idl1;
t2=t1;
for(ik=0;ik<idl1;ik++)ch2[ik]+=ch2[t2++];
}
 
t1=0;
t2=ipp2*t0;
for(j=1;j<ipph;j++){
t1+=t0;
t2-=t0;
t3=t1;
t4=t2;
for(k=0;k<l1;k++){
ch[t3]=c1[t3]-c1[t4];
ch[t4]=c1[t3]+c1[t4];
t3+=ido;
t4+=ido;
}
}
 
if(ido==1)goto L132;
if(nbd<l1)goto L128;
 
t1=0;
t2=ipp2*t0;
for(j=1;j<ipph;j++){
t1+=t0;
t2-=t0;
t3=t1;
t4=t2;
for(k=0;k<l1;k++){
t5=t3;
t6=t4;
for(i=2;i<ido;i+=2){
t5+=2;
t6+=2;
ch[t5-1]=c1[t5-1]-c1[t6];
ch[t6-1]=c1[t5-1]+c1[t6];
ch[t5]=c1[t5]+c1[t6-1];
ch[t6]=c1[t5]-c1[t6-1];
}
t3+=ido;
t4+=ido;
}
}
goto L132;
 
L128:
t1=0;
t2=ipp2*t0;
for(j=1;j<ipph;j++){
t1+=t0;
t2-=t0;
t3=t1;
t4=t2;
for(i=2;i<ido;i+=2){
t3+=2;
t4+=2;
t5=t3;
t6=t4;
for(k=0;k<l1;k++){
ch[t5-1]=c1[t5-1]-c1[t6];
ch[t6-1]=c1[t5-1]+c1[t6];
ch[t5]=c1[t5]+c1[t6-1];
ch[t6]=c1[t5]-c1[t6-1];
t5+=ido;
t6+=ido;
}
}
}
 
L132:
if(ido==1)return;
 
for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik];
 
t1=0;
for(j=1;j<ip;j++){
t2=(t1+=t0);
for(k=0;k<l1;k++){
c1[t2]=ch[t2];
t2+=ido;
}
}
 
if(nbd>l1)goto L139;
 
is= -ido-1;
t1=0;
for(j=1;j<ip;j++){
is+=ido;
t1+=t0;
idij=is;
t2=t1;
for(i=2;i<ido;i+=2){
t2+=2;
idij+=2;
t3=t2;
for(k=0;k<l1;k++){
c1[t3-1]=wa[idij-1]*ch[t3-1]-wa[idij]*ch[t3];
c1[t3]=wa[idij-1]*ch[t3]+wa[idij]*ch[t3-1];
t3+=ido;
}
}
}
return;
 
L139:
is= -ido-1;
t1=0;
for(j=1;j<ip;j++){
is+=ido;
t1+=t0;
t2=t1;
for(k=0;k<l1;k++){
idij=is;
t3=t2;
for(i=2;i<ido;i+=2){
idij+=2;
t3+=2;
c1[t3-1]=wa[idij-1]*ch[t3-1]-wa[idij]*ch[t3];
c1[t3]=wa[idij-1]*ch[t3]+wa[idij]*ch[t3-1];
}
t2+=ido;
}
}
}
 
static void drftb1(int n, float *c, float *ch, float *wa, int *ifac){
int i,k1,l1,l2;
int na;
int nf,ip,iw,ix2,ix3,ido,idl1;
 
nf=ifac[1];
na=0;
l1=1;
iw=1;
 
for(k1=0;k1<nf;k1++){
ip=ifac[k1 + 2];
l2=ip*l1;
ido=n/l2;
idl1=ido*l1;
if(ip!=4)goto L103;
ix2=iw+ido;
ix3=ix2+ido;
 
if(na!=0)
dradb4(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1);
else
dradb4(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1);
na=1-na;
goto L115;
 
L103:
if(ip!=2)goto L106;
 
if(na!=0)
dradb2(ido,l1,ch,c,wa+iw-1);
else
dradb2(ido,l1,c,ch,wa+iw-1);
na=1-na;
goto L115;
 
L106:
if(ip!=3)goto L109;
 
ix2=iw+ido;
if(na!=0)
dradb3(ido,l1,ch,c,wa+iw-1,wa+ix2-1);
else
dradb3(ido,l1,c,ch,wa+iw-1,wa+ix2-1);
na=1-na;
goto L115;
 
L109:
/* The radix five case can be translated later..... */
/* if(ip!=5)goto L112;
 
ix2=iw+ido;
ix3=ix2+ido;
ix4=ix3+ido;
if(na!=0)
dradb5(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1);
else
dradb5(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1);
na=1-na;
goto L115;
 
L112:*/
if(na!=0)
dradbg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa+iw-1);
else
dradbg(ido,ip,l1,idl1,c,c,c,ch,ch,wa+iw-1);
if(ido==1)na=1-na;
 
L115:
l1=l2;
iw+=(ip-1)*ido;
}
 
if(na==0)return;
 
for(i=0;i<n;i++)c[i]=ch[i];
}
 
void drft_forward(drft_lookup *l,float *data){
if(l->n==1)return;
drftf1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache);
}
 
void drft_backward(drft_lookup *l,float *data){
if (l->n==1)return;
drftb1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache);
}
 
void drft_init(drft_lookup *l,int n){
l->n=n;
l->trigcache=_ogg_calloc(3*n,sizeof(*l->trigcache));
l->splitcache=_ogg_calloc(32,sizeof(*l->splitcache));
fdrffti(n, l->trigcache, l->splitcache);
}
 
void drft_clear(drft_lookup *l){
if(l){
if(l->trigcache)_ogg_free(l->trigcache);
if(l->splitcache)_ogg_free(l->splitcache);
memset(l,0,sizeof(*l));
}
}
/contrib/sdk/sources/libvorbis-1.3.7/lib/smallft.h
0,0 → 1,33
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: fft transform
 
********************************************************************/
 
#ifndef _V_SMFT_H_
#define _V_SMFT_H_
 
#include "vorbis/codec.h"
 
typedef struct {
int n;
float *trigcache;
int *splitcache;
} drft_lookup;
 
extern void drft_forward(drft_lookup *l,float *data);
extern void drft_backward(drft_lookup *l,float *data);
extern void drft_init(drft_lookup *l,int n);
extern void drft_clear(drft_lookup *l);
 
#endif
/contrib/sdk/sources/libvorbis-1.3.7/lib/synthesis.c
0,0 → 1,179
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: single-block PCM synthesis
 
********************************************************************/
 
#include <stdio.h>
#include <ogg/ogg.h>
#include "vorbis/codec.h"
#include "codec_internal.h"
#include "registry.h"
#include "misc.h"
#include "os.h"
 
int vorbis_synthesis(vorbis_block *vb,ogg_packet *op){
vorbis_dsp_state *vd= vb ? vb->vd : 0;
private_state *b= vd ? vd->backend_state : 0;
vorbis_info *vi= vd ? vd->vi : 0;
codec_setup_info *ci= vi ? vi->codec_setup : 0;
oggpack_buffer *opb=vb ? &vb->opb : 0;
int type,mode,i;
 
if (!vd || !b || !vi || !ci || !opb) {
return OV_EBADPACKET;
}
 
/* first things first. Make sure decode is ready */
_vorbis_block_ripcord(vb);
oggpack_readinit(opb,op->packet,op->bytes);
 
/* Check the packet type */
if(oggpack_read(opb,1)!=0){
/* Oops. This is not an audio data packet */
return(OV_ENOTAUDIO);
}
 
/* read our mode and pre/post windowsize */
mode=oggpack_read(opb,b->modebits);
if(mode==-1){
return(OV_EBADPACKET);
}
 
vb->mode=mode;
if(!ci->mode_param[mode]){
return(OV_EBADPACKET);
}
 
vb->W=ci->mode_param[mode]->blockflag;
if(vb->W){
 
/* this doesn;t get mapped through mode selection as it's used
only for window selection */
vb->lW=oggpack_read(opb,1);
vb->nW=oggpack_read(opb,1);
if(vb->nW==-1){
return(OV_EBADPACKET);
}
}else{
vb->lW=0;
vb->nW=0;
}
 
/* more setup */
vb->granulepos=op->granulepos;
vb->sequence=op->packetno;
vb->eofflag=op->e_o_s;
 
/* alloc pcm passback storage */
vb->pcmend=ci->blocksizes[vb->W];
vb->pcm=_vorbis_block_alloc(vb,sizeof(*vb->pcm)*vi->channels);
for(i=0;i<vi->channels;i++)
vb->pcm[i]=_vorbis_block_alloc(vb,vb->pcmend*sizeof(*vb->pcm[i]));
 
/* unpack_header enforces range checking */
type=ci->map_type[ci->mode_param[mode]->mapping];
 
return(_mapping_P[type]->inverse(vb,ci->map_param[ci->mode_param[mode]->
mapping]));
}
 
/* used to track pcm position without actually performing decode.
Useful for sequential 'fast forward' */
int vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op){
vorbis_dsp_state *vd=vb->vd;
private_state *b=vd->backend_state;
vorbis_info *vi=vd->vi;
codec_setup_info *ci=vi->codec_setup;
oggpack_buffer *opb=&vb->opb;
int mode;
 
/* first things first. Make sure decode is ready */
_vorbis_block_ripcord(vb);
oggpack_readinit(opb,op->packet,op->bytes);
 
/* Check the packet type */
if(oggpack_read(opb,1)!=0){
/* Oops. This is not an audio data packet */
return(OV_ENOTAUDIO);
}
 
/* read our mode and pre/post windowsize */
mode=oggpack_read(opb,b->modebits);
if(mode==-1)return(OV_EBADPACKET);
 
vb->mode=mode;
if(!ci->mode_param[mode]){
return(OV_EBADPACKET);
}
 
vb->W=ci->mode_param[mode]->blockflag;
if(vb->W){
vb->lW=oggpack_read(opb,1);
vb->nW=oggpack_read(opb,1);
if(vb->nW==-1) return(OV_EBADPACKET);
}else{
vb->lW=0;
vb->nW=0;
}
 
/* more setup */
vb->granulepos=op->granulepos;
vb->sequence=op->packetno;
vb->eofflag=op->e_o_s;
 
/* no pcm */
vb->pcmend=0;
vb->pcm=NULL;
 
return(0);
}
 
long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op){
codec_setup_info *ci=vi->codec_setup;
oggpack_buffer opb;
int mode;
 
if(ci==NULL || ci->modes<=0){
/* codec setup not properly intialized */
return(OV_EFAULT);
}
 
oggpack_readinit(&opb,op->packet,op->bytes);
 
/* Check the packet type */
if(oggpack_read(&opb,1)!=0){
/* Oops. This is not an audio data packet */
return(OV_ENOTAUDIO);
}
 
/* read our mode and pre/post windowsize */
mode=oggpack_read(&opb,ov_ilog(ci->modes-1));
if(mode==-1 || !ci->mode_param[mode])return(OV_EBADPACKET);
return(ci->blocksizes[ci->mode_param[mode]->blockflag]);
}
 
int vorbis_synthesis_halfrate(vorbis_info *vi,int flag){
/* set / clear half-sample-rate mode */
codec_setup_info *ci=vi->codec_setup;
 
/* right now, our MDCT can't handle < 64 sample windows. */
if(ci->blocksizes[0]<=64 && flag)return -1;
ci->halfrate_flag=(flag?1:0);
return 0;
}
 
int vorbis_synthesis_halfrate_p(vorbis_info *vi){
codec_setup_info *ci=vi->codec_setup;
return ci->halfrate_flag;
}
/contrib/sdk/sources/libvorbis-1.3.7/lib/tone.c
0,0 → 1,54
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
 
void usage(){
fprintf(stderr,"tone <frequency_Hz>,[<amplitude>] [<frequency_Hz>,[<amplitude>]...]\n");
exit(1);
}
 
int main (int argc,char *argv[]){
int i,j;
double *f;
double *amp;
 
if(argc<2)usage();
 
f=alloca(sizeof(*f)*(argc-1));
amp=alloca(sizeof(*amp)*(argc-1));
 
i=0;
while(argv[i+1]){
char *pos=strchr(argv[i+1],',');
 
f[i]=atof(argv[i+1]);
if(pos)
amp[i]=atof(pos+1)*32767.f;
else
amp[i]=32767.f;
 
fprintf(stderr,"%g Hz, %g amp\n",f[i],amp[i]);
 
i++;
}
 
for(i=0;i<44100*10;i++){
float val=0;
int ival;
for(j=0;j<argc-1;j++)
val+=amp[j]*sin(i/44100.f*f[j]*2*M_PI);
ival=rint(val);
 
if(ival>32767.f)ival=32767.f;
if(ival<-32768.f)ival=-32768.f;
 
fprintf(stdout,"%c%c%c%c",
(char)(ival&0xff),
(char)((ival>>8)&0xff),
(char)(ival&0xff),
(char)((ival>>8)&0xff));
}
return(0);
}
 
/contrib/sdk/sources/libvorbis-1.3.7/lib/vorbisenc.c
0,0 → 1,1224
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: simple programmatic interface for encoder mode setup
 
********************************************************************/
 
#include <stdlib.h>
#include <string.h>
#include <math.h>
 
#include "vorbis/codec.h"
#include "vorbis/vorbisenc.h"
 
#include "codec_internal.h"
 
#include "os.h"
#include "misc.h"
 
/* careful with this; it's using static array sizing to make managing
all the modes a little less annoying. If we use a residue backend
with > 12 partition types, or a different division of iteration,
this needs to be updated. */
typedef struct {
const static_codebook *books[12][4];
} static_bookblock;
 
typedef struct {
int res_type;
int limit_type; /* 0 lowpass limited, 1 point stereo limited */
int grouping;
const vorbis_info_residue0 *res;
const static_codebook *book_aux;
const static_codebook *book_aux_managed;
const static_bookblock *books_base;
const static_bookblock *books_base_managed;
} vorbis_residue_template;
 
typedef struct {
const vorbis_info_mapping0 *map;
const vorbis_residue_template *res;
} vorbis_mapping_template;
 
typedef struct vp_adjblock{
int block[P_BANDS];
} vp_adjblock;
 
typedef struct {
int data[NOISE_COMPAND_LEVELS];
} compandblock;
 
/* high level configuration information for setting things up
step-by-step with the detailed vorbis_encode_ctl interface.
There's a fair amount of redundancy such that interactive setup
does not directly deal with any vorbis_info or codec_setup_info
initialization; it's all stored (until full init) in this highlevel
setup, then flushed out to the real codec setup structs later. */
 
typedef struct {
int att[P_NOISECURVES];
float boost;
float decay;
} att3;
typedef struct { int data[P_NOISECURVES]; } adj3;
 
typedef struct {
int pre[PACKETBLOBS];
int post[PACKETBLOBS];
float kHz[PACKETBLOBS];
float lowpasskHz[PACKETBLOBS];
} adj_stereo;
 
typedef struct {
int lo;
int hi;
int fixed;
} noiseguard;
typedef struct {
int data[P_NOISECURVES][17];
} noise3;
 
typedef struct {
int mappings;
const double *rate_mapping;
const double *quality_mapping;
int coupling_restriction;
long samplerate_min_restriction;
long samplerate_max_restriction;
 
 
const int *blocksize_short;
const int *blocksize_long;
 
const att3 *psy_tone_masteratt;
const int *psy_tone_0dB;
const int *psy_tone_dBsuppress;
 
const vp_adjblock *psy_tone_adj_impulse;
const vp_adjblock *psy_tone_adj_long;
const vp_adjblock *psy_tone_adj_other;
 
const noiseguard *psy_noiseguards;
const noise3 *psy_noise_bias_impulse;
const noise3 *psy_noise_bias_padding;
const noise3 *psy_noise_bias_trans;
const noise3 *psy_noise_bias_long;
const int *psy_noise_dBsuppress;
 
const compandblock *psy_noise_compand;
const double *psy_noise_compand_short_mapping;
const double *psy_noise_compand_long_mapping;
 
const int *psy_noise_normal_start[2];
const int *psy_noise_normal_partition[2];
const double *psy_noise_normal_thresh;
 
const int *psy_ath_float;
const int *psy_ath_abs;
 
const double *psy_lowpass;
 
const vorbis_info_psy_global *global_params;
const double *global_mapping;
const adj_stereo *stereo_modes;
 
const static_codebook *const *const *const floor_books;
const vorbis_info_floor1 *floor_params;
const int floor_mappings;
const int **floor_mapping_list;
 
const vorbis_mapping_template *maps;
} ve_setup_data_template;
 
/* a few static coder conventions */
static const vorbis_info_mode _mode_template[2]={
{0,0,0,0},
{1,0,0,1}
};
 
static const vorbis_info_mapping0 _map_nominal[2]={
{1, {0,0}, {0}, {0}, 1,{0},{1}},
{1, {0,0}, {1}, {1}, 1,{0},{1}}
};
 
#include "modes/setup_44.h"
#include "modes/setup_44u.h"
#include "modes/setup_44p51.h"
#include "modes/setup_32.h"
#include "modes/setup_8.h"
#include "modes/setup_11.h"
#include "modes/setup_16.h"
#include "modes/setup_22.h"
#include "modes/setup_X.h"
 
static const ve_setup_data_template *const setup_list[]={
&ve_setup_44_stereo,
&ve_setup_44_51,
&ve_setup_44_uncoupled,
 
&ve_setup_32_stereo,
&ve_setup_32_uncoupled,
 
&ve_setup_22_stereo,
&ve_setup_22_uncoupled,
&ve_setup_16_stereo,
&ve_setup_16_uncoupled,
 
&ve_setup_11_stereo,
&ve_setup_11_uncoupled,
&ve_setup_8_stereo,
&ve_setup_8_uncoupled,
 
&ve_setup_X_stereo,
&ve_setup_X_uncoupled,
&ve_setup_XX_stereo,
&ve_setup_XX_uncoupled,
0
};
 
static void vorbis_encode_floor_setup(vorbis_info *vi,int s,
const static_codebook *const *const *const books,
const vorbis_info_floor1 *in,
const int *x){
int i,k,is=s;
vorbis_info_floor1 *f=_ogg_calloc(1,sizeof(*f));
codec_setup_info *ci=vi->codec_setup;
 
memcpy(f,in+x[is],sizeof(*f));
 
/* books */
{
int partitions=f->partitions;
int maxclass=-1;
int maxbook=-1;
for(i=0;i<partitions;i++)
if(f->partitionclass[i]>maxclass)maxclass=f->partitionclass[i];
for(i=0;i<=maxclass;i++){
if(f->class_book[i]>maxbook)maxbook=f->class_book[i];
f->class_book[i]+=ci->books;
for(k=0;k<(1<<f->class_subs[i]);k++){
if(f->class_subbook[i][k]>maxbook)maxbook=f->class_subbook[i][k];
if(f->class_subbook[i][k]>=0)f->class_subbook[i][k]+=ci->books;
}
}
 
for(i=0;i<=maxbook;i++)
ci->book_param[ci->books++]=(static_codebook *)books[x[is]][i];
}
 
/* for now, we're only using floor 1 */
ci->floor_type[ci->floors]=1;
ci->floor_param[ci->floors]=f;
ci->floors++;
 
return;
}
 
static void vorbis_encode_global_psych_setup(vorbis_info *vi,double s,
const vorbis_info_psy_global *in,
const double *x){
int i,is=s;
double ds=s-is;
codec_setup_info *ci=vi->codec_setup;
vorbis_info_psy_global *g=&ci->psy_g_param;
 
memcpy(g,in+(int)x[is],sizeof(*g));
 
ds=x[is]*(1.-ds)+x[is+1]*ds;
is=(int)ds;
ds-=is;
if(ds==0 && is>0){
is--;
ds=1.;
}
 
/* interpolate the trigger threshholds */
for(i=0;i<4;i++){
g->preecho_thresh[i]=in[is].preecho_thresh[i]*(1.-ds)+in[is+1].preecho_thresh[i]*ds;
g->postecho_thresh[i]=in[is].postecho_thresh[i]*(1.-ds)+in[is+1].postecho_thresh[i]*ds;
}
g->ampmax_att_per_sec=ci->hi.amplitude_track_dBpersec;
return;
}
 
static void vorbis_encode_global_stereo(vorbis_info *vi,
const highlevel_encode_setup *const hi,
const adj_stereo *p){
float s=hi->stereo_point_setting;
int i,is=s;
double ds=s-is;
codec_setup_info *ci=vi->codec_setup;
vorbis_info_psy_global *g=&ci->psy_g_param;
 
if(p){
memcpy(g->coupling_prepointamp,p[is].pre,sizeof(*p[is].pre)*PACKETBLOBS);
memcpy(g->coupling_postpointamp,p[is].post,sizeof(*p[is].post)*PACKETBLOBS);
 
if(hi->managed){
/* interpolate the kHz threshholds */
for(i=0;i<PACKETBLOBS;i++){
float kHz=p[is].kHz[i]*(1.-ds)+p[is+1].kHz[i]*ds;
g->coupling_pointlimit[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
g->coupling_pointlimit[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
g->coupling_pkHz[i]=kHz;
 
kHz=p[is].lowpasskHz[i]*(1.-ds)+p[is+1].lowpasskHz[i]*ds;
g->sliding_lowpass[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
g->sliding_lowpass[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
 
}
}else{
float kHz=p[is].kHz[PACKETBLOBS/2]*(1.-ds)+p[is+1].kHz[PACKETBLOBS/2]*ds;
for(i=0;i<PACKETBLOBS;i++){
g->coupling_pointlimit[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
g->coupling_pointlimit[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
g->coupling_pkHz[i]=kHz;
}
 
kHz=p[is].lowpasskHz[PACKETBLOBS/2]*(1.-ds)+p[is+1].lowpasskHz[PACKETBLOBS/2]*ds;
for(i=0;i<PACKETBLOBS;i++){
g->sliding_lowpass[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
g->sliding_lowpass[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
}
}
}else{
for(i=0;i<PACKETBLOBS;i++){
g->sliding_lowpass[0][i]=ci->blocksizes[0];
g->sliding_lowpass[1][i]=ci->blocksizes[1];
}
}
return;
}
 
static void vorbis_encode_psyset_setup(vorbis_info *vi,double s,
const int *nn_start,
const int *nn_partition,
const double *nn_thresh,
int block){
codec_setup_info *ci=vi->codec_setup;
vorbis_info_psy *p=ci->psy_param[block];
highlevel_encode_setup *hi=&ci->hi;
int is=s;
 
if(block>=ci->psys)
ci->psys=block+1;
if(!p){
p=_ogg_calloc(1,sizeof(*p));
ci->psy_param[block]=p;
}
 
memcpy(p,&_psy_info_template,sizeof(*p));
p->blockflag=block>>1;
 
if(hi->noise_normalize_p){
p->normal_p=1;
p->normal_start=nn_start[is];
p->normal_partition=nn_partition[is];
p->normal_thresh=nn_thresh[is];
}
 
return;
}
 
static void vorbis_encode_tonemask_setup(vorbis_info *vi,double s,int block,
const att3 *att,
const int *max,
const vp_adjblock *in){
int i,is=s;
double ds=s-is;
codec_setup_info *ci=vi->codec_setup;
vorbis_info_psy *p=ci->psy_param[block];
 
/* 0 and 2 are only used by bitmanagement, but there's no harm to always
filling the values in here */
p->tone_masteratt[0]=att[is].att[0]*(1.-ds)+att[is+1].att[0]*ds;
p->tone_masteratt[1]=att[is].att[1]*(1.-ds)+att[is+1].att[1]*ds;
p->tone_masteratt[2]=att[is].att[2]*(1.-ds)+att[is+1].att[2]*ds;
p->tone_centerboost=att[is].boost*(1.-ds)+att[is+1].boost*ds;
p->tone_decay=att[is].decay*(1.-ds)+att[is+1].decay*ds;
 
p->max_curve_dB=max[is]*(1.-ds)+max[is+1]*ds;
 
for(i=0;i<P_BANDS;i++)
p->toneatt[i]=in[is].block[i]*(1.-ds)+in[is+1].block[i]*ds;
return;
}
 
 
static void vorbis_encode_compand_setup(vorbis_info *vi,double s,int block,
const compandblock *in,
const double *x){
int i,is=s;
double ds=s-is;
codec_setup_info *ci=vi->codec_setup;
vorbis_info_psy *p=ci->psy_param[block];
 
ds=x[is]*(1.-ds)+x[is+1]*ds;
is=(int)ds;
ds-=is;
if(ds==0 && is>0){
is--;
ds=1.;
}
 
/* interpolate the compander settings */
for(i=0;i<NOISE_COMPAND_LEVELS;i++)
p->noisecompand[i]=in[is].data[i]*(1.-ds)+in[is+1].data[i]*ds;
return;
}
 
static void vorbis_encode_peak_setup(vorbis_info *vi,double s,int block,
const int *suppress){
int is=s;
double ds=s-is;
codec_setup_info *ci=vi->codec_setup;
vorbis_info_psy *p=ci->psy_param[block];
 
p->tone_abs_limit=suppress[is]*(1.-ds)+suppress[is+1]*ds;
 
return;
}
 
static void vorbis_encode_noisebias_setup(vorbis_info *vi,double s,int block,
const int *suppress,
const noise3 *in,
const noiseguard *guard,
double userbias){
int i,is=s,j;
double ds=s-is;
codec_setup_info *ci=vi->codec_setup;
vorbis_info_psy *p=ci->psy_param[block];
 
p->noisemaxsupp=suppress[is]*(1.-ds)+suppress[is+1]*ds;
p->noisewindowlomin=guard[block].lo;
p->noisewindowhimin=guard[block].hi;
p->noisewindowfixed=guard[block].fixed;
 
for(j=0;j<P_NOISECURVES;j++)
for(i=0;i<P_BANDS;i++)
p->noiseoff[j][i]=in[is].data[j][i]*(1.-ds)+in[is+1].data[j][i]*ds;
 
/* impulse blocks may take a user specified bias to boost the
nominal/high noise encoding depth */
for(j=0;j<P_NOISECURVES;j++){
float min=p->noiseoff[j][0]+6; /* the lowest it can go */
for(i=0;i<P_BANDS;i++){
p->noiseoff[j][i]+=userbias;
if(p->noiseoff[j][i]<min)p->noiseoff[j][i]=min;
}
}
 
return;
}
 
static void vorbis_encode_ath_setup(vorbis_info *vi,int block){
codec_setup_info *ci=vi->codec_setup;
vorbis_info_psy *p=ci->psy_param[block];
 
p->ath_adjatt=ci->hi.ath_floating_dB;
p->ath_maxatt=ci->hi.ath_absolute_dB;
return;
}
 
 
static int book_dup_or_new(codec_setup_info *ci,const static_codebook *book){
int i;
for(i=0;i<ci->books;i++)
if(ci->book_param[i]==book)return(i);
 
return(ci->books++);
}
 
static void vorbis_encode_blocksize_setup(vorbis_info *vi,double s,
const int *shortb,const int *longb){
 
codec_setup_info *ci=vi->codec_setup;
int is=s;
 
int blockshort=shortb[is];
int blocklong=longb[is];
ci->blocksizes[0]=blockshort;
ci->blocksizes[1]=blocklong;
 
}
 
static void vorbis_encode_residue_setup(vorbis_info *vi,
int number, int block,
const vorbis_residue_template *res){
 
codec_setup_info *ci=vi->codec_setup;
int i;
 
vorbis_info_residue0 *r=ci->residue_param[number]=
_ogg_malloc(sizeof(*r));
 
memcpy(r,res->res,sizeof(*r));
if(ci->residues<=number)ci->residues=number+1;
 
r->grouping=res->grouping;
ci->residue_type[number]=res->res_type;
 
/* fill in all the books */
{
int booklist=0,k;
 
if(ci->hi.managed){
for(i=0;i<r->partitions;i++)
for(k=0;k<4;k++)
if(res->books_base_managed->books[i][k])
r->secondstages[i]|=(1<<k);
 
r->groupbook=book_dup_or_new(ci,res->book_aux_managed);
ci->book_param[r->groupbook]=(static_codebook *)res->book_aux_managed;
 
for(i=0;i<r->partitions;i++){
for(k=0;k<4;k++){
if(res->books_base_managed->books[i][k]){
int bookid=book_dup_or_new(ci,res->books_base_managed->books[i][k]);
r->booklist[booklist++]=bookid;
ci->book_param[bookid]=(static_codebook *)res->books_base_managed->books[i][k];
}
}
}
 
}else{
 
for(i=0;i<r->partitions;i++)
for(k=0;k<4;k++)
if(res->books_base->books[i][k])
r->secondstages[i]|=(1<<k);
 
r->groupbook=book_dup_or_new(ci,res->book_aux);
ci->book_param[r->groupbook]=(static_codebook *)res->book_aux;
 
for(i=0;i<r->partitions;i++){
for(k=0;k<4;k++){
if(res->books_base->books[i][k]){
int bookid=book_dup_or_new(ci,res->books_base->books[i][k]);
r->booklist[booklist++]=bookid;
ci->book_param[bookid]=(static_codebook *)res->books_base->books[i][k];
}
}
}
}
}
 
/* lowpass setup/pointlimit */
{
double freq=ci->hi.lowpass_kHz*1000.;
vorbis_info_floor1 *f=ci->floor_param[block]; /* by convention */
double nyq=vi->rate/2.;
long blocksize=ci->blocksizes[block]>>1;
 
/* lowpass needs to be set in the floor and the residue. */
if(freq>nyq)freq=nyq;
/* in the floor, the granularity can be very fine; it doesn't alter
the encoding structure, only the samples used to fit the floor
approximation */
f->n=freq/nyq*blocksize;
 
/* this res may by limited by the maximum pointlimit of the mode,
not the lowpass. the floor is always lowpass limited. */
switch(res->limit_type){
case 1: /* point stereo limited */
if(ci->hi.managed)
freq=ci->psy_g_param.coupling_pkHz[PACKETBLOBS-1]*1000.;
else
freq=ci->psy_g_param.coupling_pkHz[PACKETBLOBS/2]*1000.;
if(freq>nyq)freq=nyq;
break;
case 2: /* LFE channel; lowpass at ~ 250Hz */
freq=250;
break;
default:
/* already set */
break;
}
 
/* in the residue, we're constrained, physically, by partition
boundaries. We still lowpass 'wherever', but we have to round up
here to next boundary, or the vorbis spec will round it *down* to
previous boundary in encode/decode */
if(ci->residue_type[number]==2){
/* residue 2 bundles together multiple channels; used by stereo
and surround. Count the channels in use */
/* Multiple maps/submaps can point to the same residue. In the case
of residue 2, they all better have the same number of
channels/samples. */
int j,k,ch=0;
for(i=0;i<ci->maps&&ch==0;i++){
vorbis_info_mapping0 *mi=(vorbis_info_mapping0 *)ci->map_param[i];
for(j=0;j<mi->submaps && ch==0;j++)
if(mi->residuesubmap[j]==number) /* we found a submap referencing theis residue backend */
for(k=0;k<vi->channels;k++)
if(mi->chmuxlist[k]==j) /* this channel belongs to the submap */
ch++;
}
 
r->end=(int)((freq/nyq*blocksize*ch)/r->grouping+.9)* /* round up only if we're well past */
r->grouping;
/* the blocksize and grouping may disagree at the end */
if(r->end>blocksize*ch)r->end=blocksize*ch/r->grouping*r->grouping;
 
}else{
 
r->end=(int)((freq/nyq*blocksize)/r->grouping+.9)* /* round up only if we're well past */
r->grouping;
/* the blocksize and grouping may disagree at the end */
if(r->end>blocksize)r->end=blocksize/r->grouping*r->grouping;
 
}
 
if(r->end==0)r->end=r->grouping; /* LFE channel */
 
}
}
 
/* we assume two maps in this encoder */
static void vorbis_encode_map_n_res_setup(vorbis_info *vi,double s,
const vorbis_mapping_template *maps){
 
codec_setup_info *ci=vi->codec_setup;
int i,j,is=s,modes=2;
const vorbis_info_mapping0 *map=maps[is].map;
const vorbis_info_mode *mode=_mode_template;
const vorbis_residue_template *res=maps[is].res;
 
if(ci->blocksizes[0]==ci->blocksizes[1])modes=1;
 
for(i=0;i<modes;i++){
 
ci->map_param[i]=_ogg_calloc(1,sizeof(*map));
ci->mode_param[i]=_ogg_calloc(1,sizeof(*mode));
 
memcpy(ci->mode_param[i],mode+i,sizeof(*_mode_template));
if(i>=ci->modes)ci->modes=i+1;
 
ci->map_type[i]=0;
memcpy(ci->map_param[i],map+i,sizeof(*map));
if(i>=ci->maps)ci->maps=i+1;
 
for(j=0;j<map[i].submaps;j++)
vorbis_encode_residue_setup(vi,map[i].residuesubmap[j],i
,res+map[i].residuesubmap[j]);
}
}
 
static double setting_to_approx_bitrate(vorbis_info *vi){
codec_setup_info *ci=vi->codec_setup;
highlevel_encode_setup *hi=&ci->hi;
ve_setup_data_template *setup=(ve_setup_data_template *)hi->setup;
int is=hi->base_setting;
double ds=hi->base_setting-is;
int ch=vi->channels;
const double *r=setup->rate_mapping;
 
if(r==NULL)
return(-1);
 
return((r[is]*(1.-ds)+r[is+1]*ds)*ch);
}
 
static const void *get_setup_template(long ch,long srate,
double req,int q_or_bitrate,
double *base_setting){
int i=0,j;
if(q_or_bitrate)req/=ch;
 
while(setup_list[i]){
if(setup_list[i]->coupling_restriction==-1 ||
setup_list[i]->coupling_restriction==ch){
if(srate>=setup_list[i]->samplerate_min_restriction &&
srate<=setup_list[i]->samplerate_max_restriction){
int mappings=setup_list[i]->mappings;
const double *map=(q_or_bitrate?
setup_list[i]->rate_mapping:
setup_list[i]->quality_mapping);
 
/* the template matches. Does the requested quality mode
fall within this template's modes? */
if(req<map[0]){++i;continue;}
if(req>map[setup_list[i]->mappings]){++i;continue;}
for(j=0;j<mappings;j++)
if(req>=map[j] && req<map[j+1])break;
/* an all-points match */
if(j==mappings)
*base_setting=j-.001;
else{
float low=map[j];
float high=map[j+1];
float del=(req-low)/(high-low);
*base_setting=j+del;
}
 
return(setup_list[i]);
}
}
i++;
}
 
return NULL;
}
 
/* encoders will need to use vorbis_info_init beforehand and call
vorbis_info clear when all done */
 
/* two interfaces; this, more detailed one, and later a convenience
layer on top */
 
/* the final setup call */
int vorbis_encode_setup_init(vorbis_info *vi){
int i,i0=0,singleblock=0;
codec_setup_info *ci=vi->codec_setup;
ve_setup_data_template *setup=NULL;
highlevel_encode_setup *hi=&ci->hi;
 
if(ci==NULL)return(OV_EINVAL);
if(vi->channels<1||vi->channels>255)return(OV_EINVAL);
if(!hi->impulse_block_p)i0=1;
 
/* too low/high an ATH floater is nonsensical, but doesn't break anything */
if(hi->ath_floating_dB>-80)hi->ath_floating_dB=-80;
if(hi->ath_floating_dB<-200)hi->ath_floating_dB=-200;
 
/* again, bound this to avoid the app shooting itself int he foot
too badly */
if(hi->amplitude_track_dBpersec>0.)hi->amplitude_track_dBpersec=0.;
if(hi->amplitude_track_dBpersec<-99999.)hi->amplitude_track_dBpersec=-99999.;
 
/* get the appropriate setup template; matches the fetch in previous
stages */
setup=(ve_setup_data_template *)hi->setup;
if(setup==NULL)return(OV_EINVAL);
 
hi->set_in_stone=1;
/* choose block sizes from configured sizes as well as paying
attention to long_block_p and short_block_p. If the configured
short and long blocks are the same length, we set long_block_p
and unset short_block_p */
vorbis_encode_blocksize_setup(vi,hi->base_setting,
setup->blocksize_short,
setup->blocksize_long);
if(ci->blocksizes[0]==ci->blocksizes[1])singleblock=1;
 
/* floor setup; choose proper floor params. Allocated on the floor
stack in order; if we alloc only a single long floor, it's 0 */
for(i=0;i<setup->floor_mappings;i++)
vorbis_encode_floor_setup(vi,hi->base_setting,
setup->floor_books,
setup->floor_params,
setup->floor_mapping_list[i]);
 
/* setup of [mostly] short block detection and stereo*/
vorbis_encode_global_psych_setup(vi,hi->trigger_setting,
setup->global_params,
setup->global_mapping);
vorbis_encode_global_stereo(vi,hi,setup->stereo_modes);
 
/* basic psych setup and noise normalization */
vorbis_encode_psyset_setup(vi,hi->base_setting,
setup->psy_noise_normal_start[0],
setup->psy_noise_normal_partition[0],
setup->psy_noise_normal_thresh,
0);
vorbis_encode_psyset_setup(vi,hi->base_setting,
setup->psy_noise_normal_start[0],
setup->psy_noise_normal_partition[0],
setup->psy_noise_normal_thresh,
1);
if(!singleblock){
vorbis_encode_psyset_setup(vi,hi->base_setting,
setup->psy_noise_normal_start[1],
setup->psy_noise_normal_partition[1],
setup->psy_noise_normal_thresh,
2);
vorbis_encode_psyset_setup(vi,hi->base_setting,
setup->psy_noise_normal_start[1],
setup->psy_noise_normal_partition[1],
setup->psy_noise_normal_thresh,
3);
}
 
/* tone masking setup */
vorbis_encode_tonemask_setup(vi,hi->block[i0].tone_mask_setting,0,
setup->psy_tone_masteratt,
setup->psy_tone_0dB,
setup->psy_tone_adj_impulse);
vorbis_encode_tonemask_setup(vi,hi->block[1].tone_mask_setting,1,
setup->psy_tone_masteratt,
setup->psy_tone_0dB,
setup->psy_tone_adj_other);
if(!singleblock){
vorbis_encode_tonemask_setup(vi,hi->block[2].tone_mask_setting,2,
setup->psy_tone_masteratt,
setup->psy_tone_0dB,
setup->psy_tone_adj_other);
vorbis_encode_tonemask_setup(vi,hi->block[3].tone_mask_setting,3,
setup->psy_tone_masteratt,
setup->psy_tone_0dB,
setup->psy_tone_adj_long);
}
 
/* noise companding setup */
vorbis_encode_compand_setup(vi,hi->block[i0].noise_compand_setting,0,
setup->psy_noise_compand,
setup->psy_noise_compand_short_mapping);
vorbis_encode_compand_setup(vi,hi->block[1].noise_compand_setting,1,
setup->psy_noise_compand,
setup->psy_noise_compand_short_mapping);
if(!singleblock){
vorbis_encode_compand_setup(vi,hi->block[2].noise_compand_setting,2,
setup->psy_noise_compand,
setup->psy_noise_compand_long_mapping);
vorbis_encode_compand_setup(vi,hi->block[3].noise_compand_setting,3,
setup->psy_noise_compand,
setup->psy_noise_compand_long_mapping);
}
 
/* peak guarding setup */
vorbis_encode_peak_setup(vi,hi->block[i0].tone_peaklimit_setting,0,
setup->psy_tone_dBsuppress);
vorbis_encode_peak_setup(vi,hi->block[1].tone_peaklimit_setting,1,
setup->psy_tone_dBsuppress);
if(!singleblock){
vorbis_encode_peak_setup(vi,hi->block[2].tone_peaklimit_setting,2,
setup->psy_tone_dBsuppress);
vorbis_encode_peak_setup(vi,hi->block[3].tone_peaklimit_setting,3,
setup->psy_tone_dBsuppress);
}
 
/* noise bias setup */
vorbis_encode_noisebias_setup(vi,hi->block[i0].noise_bias_setting,0,
setup->psy_noise_dBsuppress,
setup->psy_noise_bias_impulse,
setup->psy_noiseguards,
(i0==0?hi->impulse_noisetune:0.));
vorbis_encode_noisebias_setup(vi,hi->block[1].noise_bias_setting,1,
setup->psy_noise_dBsuppress,
setup->psy_noise_bias_padding,
setup->psy_noiseguards,0.);
if(!singleblock){
vorbis_encode_noisebias_setup(vi,hi->block[2].noise_bias_setting,2,
setup->psy_noise_dBsuppress,
setup->psy_noise_bias_trans,
setup->psy_noiseguards,0.);
vorbis_encode_noisebias_setup(vi,hi->block[3].noise_bias_setting,3,
setup->psy_noise_dBsuppress,
setup->psy_noise_bias_long,
setup->psy_noiseguards,0.);
}
 
vorbis_encode_ath_setup(vi,0);
vorbis_encode_ath_setup(vi,1);
if(!singleblock){
vorbis_encode_ath_setup(vi,2);
vorbis_encode_ath_setup(vi,3);
}
 
vorbis_encode_map_n_res_setup(vi,hi->base_setting,setup->maps);
 
/* set bitrate readonlies and management */
if(hi->bitrate_av>0)
vi->bitrate_nominal=hi->bitrate_av;
else{
vi->bitrate_nominal=setting_to_approx_bitrate(vi);
}
 
vi->bitrate_lower=hi->bitrate_min;
vi->bitrate_upper=hi->bitrate_max;
if(hi->bitrate_av)
vi->bitrate_window=(double)hi->bitrate_reservoir/hi->bitrate_av;
else
vi->bitrate_window=0.;
 
if(hi->managed){
ci->bi.avg_rate=hi->bitrate_av;
ci->bi.min_rate=hi->bitrate_min;
ci->bi.max_rate=hi->bitrate_max;
 
ci->bi.reservoir_bits=hi->bitrate_reservoir;
ci->bi.reservoir_bias=
hi->bitrate_reservoir_bias;
 
ci->bi.slew_damp=hi->bitrate_av_damp;
 
}
 
return(0);
 
}
 
static void vorbis_encode_setup_setting(vorbis_info *vi,
long channels,
long rate){
int i,is;
codec_setup_info *ci=vi->codec_setup;
highlevel_encode_setup *hi=&ci->hi;
const ve_setup_data_template *setup=hi->setup;
double ds;
 
vi->version=0;
vi->channels=channels;
vi->rate=rate;
 
hi->impulse_block_p=1;
hi->noise_normalize_p=1;
 
is=hi->base_setting;
ds=hi->base_setting-is;
 
hi->stereo_point_setting=hi->base_setting;
 
if(!hi->lowpass_altered)
hi->lowpass_kHz=
setup->psy_lowpass[is]*(1.-ds)+setup->psy_lowpass[is+1]*ds;
 
hi->ath_floating_dB=setup->psy_ath_float[is]*(1.-ds)+
setup->psy_ath_float[is+1]*ds;
hi->ath_absolute_dB=setup->psy_ath_abs[is]*(1.-ds)+
setup->psy_ath_abs[is+1]*ds;
 
hi->amplitude_track_dBpersec=-6.;
hi->trigger_setting=hi->base_setting;
 
for(i=0;i<4;i++){
hi->block[i].tone_mask_setting=hi->base_setting;
hi->block[i].tone_peaklimit_setting=hi->base_setting;
hi->block[i].noise_bias_setting=hi->base_setting;
hi->block[i].noise_compand_setting=hi->base_setting;
}
}
 
int vorbis_encode_setup_vbr(vorbis_info *vi,
long channels,
long rate,
float quality){
codec_setup_info *ci;
highlevel_encode_setup *hi;
if(rate<=0) return OV_EINVAL;
 
ci=vi->codec_setup;
hi=&ci->hi;
 
quality+=.0000001;
if(quality>=1.)quality=.9999;
 
hi->req=quality;
hi->setup=get_setup_template(channels,rate,quality,0,&hi->base_setting);
if(!hi->setup)return OV_EIMPL;
 
vorbis_encode_setup_setting(vi,channels,rate);
hi->managed=0;
hi->coupling_p=1;
 
return 0;
}
 
int vorbis_encode_init_vbr(vorbis_info *vi,
long channels,
long rate,
 
float base_quality /* 0. to 1. */
){
int ret=0;
 
ret=vorbis_encode_setup_vbr(vi,channels,rate,base_quality);
 
if(ret){
vorbis_info_clear(vi);
return ret;
}
ret=vorbis_encode_setup_init(vi);
if(ret)
vorbis_info_clear(vi);
return(ret);
}
 
int vorbis_encode_setup_managed(vorbis_info *vi,
long channels,
long rate,
 
long max_bitrate,
long nominal_bitrate,
long min_bitrate){
 
codec_setup_info *ci;
highlevel_encode_setup *hi;
double tnominal;
if(rate<=0) return OV_EINVAL;
 
ci=vi->codec_setup;
hi=&ci->hi;
tnominal=nominal_bitrate;
 
if(nominal_bitrate<=0.){
if(max_bitrate>0.){
if(min_bitrate>0.)
nominal_bitrate=(max_bitrate+min_bitrate)*.5;
else
nominal_bitrate=max_bitrate*.875;
}else{
if(min_bitrate>0.){
nominal_bitrate=min_bitrate;
}else{
return(OV_EINVAL);
}
}
}
 
hi->req=nominal_bitrate;
hi->setup=get_setup_template(channels,rate,nominal_bitrate,1,&hi->base_setting);
if(!hi->setup)return OV_EIMPL;
 
vorbis_encode_setup_setting(vi,channels,rate);
 
/* initialize management with sane defaults */
hi->coupling_p=1;
hi->managed=1;
hi->bitrate_min=min_bitrate;
hi->bitrate_max=max_bitrate;
hi->bitrate_av=tnominal;
hi->bitrate_av_damp=1.5f; /* full range in no less than 1.5 second */
hi->bitrate_reservoir=nominal_bitrate*2;
hi->bitrate_reservoir_bias=.1; /* bias toward hoarding bits */
 
return(0);
 
}
 
int vorbis_encode_init(vorbis_info *vi,
long channels,
long rate,
 
long max_bitrate,
long nominal_bitrate,
long min_bitrate){
 
int ret=vorbis_encode_setup_managed(vi,channels,rate,
max_bitrate,
nominal_bitrate,
min_bitrate);
if(ret){
vorbis_info_clear(vi);
return(ret);
}
 
ret=vorbis_encode_setup_init(vi);
if(ret)
vorbis_info_clear(vi);
return(ret);
}
 
int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg){
if(vi){
codec_setup_info *ci=vi->codec_setup;
highlevel_encode_setup *hi=&ci->hi;
int setp=(number&0xf); /* a read request has a low nibble of 0 */
 
if(setp && hi->set_in_stone)return(OV_EINVAL);
 
switch(number){
 
/* now deprecated *****************/
case OV_ECTL_RATEMANAGE_GET:
{
 
struct ovectl_ratemanage_arg *ai=
(struct ovectl_ratemanage_arg *)arg;
 
ai->management_active=hi->managed;
ai->bitrate_hard_window=ai->bitrate_av_window=
(double)hi->bitrate_reservoir/vi->rate;
ai->bitrate_av_window_center=1.;
ai->bitrate_hard_min=hi->bitrate_min;
ai->bitrate_hard_max=hi->bitrate_max;
ai->bitrate_av_lo=hi->bitrate_av;
ai->bitrate_av_hi=hi->bitrate_av;
 
}
return(0);
 
/* now deprecated *****************/
case OV_ECTL_RATEMANAGE_SET:
{
struct ovectl_ratemanage_arg *ai=
(struct ovectl_ratemanage_arg *)arg;
if(ai==NULL){
hi->managed=0;
}else{
hi->managed=ai->management_active;
vorbis_encode_ctl(vi,OV_ECTL_RATEMANAGE_AVG,arg);
vorbis_encode_ctl(vi,OV_ECTL_RATEMANAGE_HARD,arg);
}
}
return 0;
 
/* now deprecated *****************/
case OV_ECTL_RATEMANAGE_AVG:
{
struct ovectl_ratemanage_arg *ai=
(struct ovectl_ratemanage_arg *)arg;
if(ai==NULL){
hi->bitrate_av=0;
}else{
hi->bitrate_av=(ai->bitrate_av_lo+ai->bitrate_av_hi)*.5;
}
}
return(0);
/* now deprecated *****************/
case OV_ECTL_RATEMANAGE_HARD:
{
struct ovectl_ratemanage_arg *ai=
(struct ovectl_ratemanage_arg *)arg;
if(ai==NULL){
hi->bitrate_min=0;
hi->bitrate_max=0;
}else{
hi->bitrate_min=ai->bitrate_hard_min;
hi->bitrate_max=ai->bitrate_hard_max;
hi->bitrate_reservoir=ai->bitrate_hard_window*
(hi->bitrate_max+hi->bitrate_min)*.5;
}
if(hi->bitrate_reservoir<128.)
hi->bitrate_reservoir=128.;
}
return(0);
 
/* replacement ratemanage interface */
case OV_ECTL_RATEMANAGE2_GET:
{
struct ovectl_ratemanage2_arg *ai=
(struct ovectl_ratemanage2_arg *)arg;
if(ai==NULL)return OV_EINVAL;
 
ai->management_active=hi->managed;
ai->bitrate_limit_min_kbps=hi->bitrate_min/1000;
ai->bitrate_limit_max_kbps=hi->bitrate_max/1000;
ai->bitrate_average_kbps=hi->bitrate_av/1000;
ai->bitrate_average_damping=hi->bitrate_av_damp;
ai->bitrate_limit_reservoir_bits=hi->bitrate_reservoir;
ai->bitrate_limit_reservoir_bias=hi->bitrate_reservoir_bias;
}
return (0);
case OV_ECTL_RATEMANAGE2_SET:
{
struct ovectl_ratemanage2_arg *ai=
(struct ovectl_ratemanage2_arg *)arg;
if(ai==NULL){
hi->managed=0;
}else{
/* sanity check; only catch invariant violations */
if(ai->bitrate_limit_min_kbps>0 &&
ai->bitrate_average_kbps>0 &&
ai->bitrate_limit_min_kbps>ai->bitrate_average_kbps)
return OV_EINVAL;
 
if(ai->bitrate_limit_max_kbps>0 &&
ai->bitrate_average_kbps>0 &&
ai->bitrate_limit_max_kbps<ai->bitrate_average_kbps)
return OV_EINVAL;
 
if(ai->bitrate_limit_min_kbps>0 &&
ai->bitrate_limit_max_kbps>0 &&
ai->bitrate_limit_min_kbps>ai->bitrate_limit_max_kbps)
return OV_EINVAL;
 
if(ai->bitrate_average_damping <= 0.)
return OV_EINVAL;
 
if(ai->bitrate_limit_reservoir_bits < 0)
return OV_EINVAL;
 
if(ai->bitrate_limit_reservoir_bias < 0.)
return OV_EINVAL;
 
if(ai->bitrate_limit_reservoir_bias > 1.)
return OV_EINVAL;
 
hi->managed=ai->management_active;
hi->bitrate_min=ai->bitrate_limit_min_kbps * 1000;
hi->bitrate_max=ai->bitrate_limit_max_kbps * 1000;
hi->bitrate_av=ai->bitrate_average_kbps * 1000;
hi->bitrate_av_damp=ai->bitrate_average_damping;
hi->bitrate_reservoir=ai->bitrate_limit_reservoir_bits;
hi->bitrate_reservoir_bias=ai->bitrate_limit_reservoir_bias;
}
}
return 0;
 
case OV_ECTL_LOWPASS_GET:
{
double *farg=(double *)arg;
*farg=hi->lowpass_kHz;
}
return(0);
case OV_ECTL_LOWPASS_SET:
{
double *farg=(double *)arg;
hi->lowpass_kHz=*farg;
 
if(hi->lowpass_kHz<2.)hi->lowpass_kHz=2.;
if(hi->lowpass_kHz>99.)hi->lowpass_kHz=99.;
hi->lowpass_altered=1;
}
return(0);
case OV_ECTL_IBLOCK_GET:
{
double *farg=(double *)arg;
*farg=hi->impulse_noisetune;
}
return(0);
case OV_ECTL_IBLOCK_SET:
{
double *farg=(double *)arg;
hi->impulse_noisetune=*farg;
 
if(hi->impulse_noisetune>0.)hi->impulse_noisetune=0.;
if(hi->impulse_noisetune<-15.)hi->impulse_noisetune=-15.;
}
return(0);
case OV_ECTL_COUPLING_GET:
{
int *iarg=(int *)arg;
*iarg=hi->coupling_p;
}
return(0);
case OV_ECTL_COUPLING_SET:
{
const void *new_template;
double new_base=0.;
int *iarg=(int *)arg;
hi->coupling_p=((*iarg)!=0);
 
/* Fetching a new template can alter the base_setting, which
many other parameters are based on. Right now, the only
parameter drawn from the base_setting that can be altered
by an encctl is the lowpass, so that is explictly flagged
to not be overwritten when we fetch a new template and
recompute the dependant settings */
new_template = get_setup_template(hi->coupling_p?vi->channels:-1,
vi->rate,
hi->req,
hi->managed,
&new_base);
if(!new_template)return OV_EIMPL;
hi->setup=new_template;
hi->base_setting=new_base;
vorbis_encode_setup_setting(vi,vi->channels,vi->rate);
}
return(0);
}
return(OV_EIMPL);
}
return(OV_EINVAL);
}
/contrib/sdk/sources/libvorbis-1.3.7/lib/vorbisfile.c
0,0 → 1,2427
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: stdio-based convenience library for opening/seeking/decoding
 
********************************************************************/
 
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <math.h>
 
#include "vorbis/codec.h"
 
/* we don't need or want the static callback symbols here */
#define OV_EXCLUDE_STATIC_CALLBACKS
#include "vorbis/vorbisfile.h"
 
#include "os.h"
#include "misc.h"
 
/* A 'chained bitstream' is a Vorbis bitstream that contains more than
one logical bitstream arranged end to end (the only form of Ogg
multiplexing allowed in a Vorbis bitstream; grouping [parallel
multiplexing] is not allowed in Vorbis) */
 
/* A Vorbis file can be played beginning to end (streamed) without
worrying ahead of time about chaining (see decoder_example.c). If
we have the whole file, however, and want random access
(seeking/scrubbing) or desire to know the total length/time of a
file, we need to account for the possibility of chaining. */
 
/* We can handle things a number of ways; we can determine the entire
bitstream structure right off the bat, or find pieces on demand.
This example determines and caches structure for the entire
bitstream, but builds a virtual decoder on the fly when moving
between links in the chain. */
 
/* There are also different ways to implement seeking. Enough
information exists in an Ogg bitstream to seek to
sample-granularity positions in the output. Or, one can seek by
picking some portion of the stream roughly in the desired area if
we only want coarse navigation through the stream. */
 
/*************************************************************************
* Many, many internal helpers. The intention is not to be confusing;
* rampant duplication and monolithic function implementation would be
* harder to understand anyway. The high level functions are last. Begin
* grokking near the end of the file */
 
/* read a little more data from the file/pipe into the ogg_sync framer
*/
#define CHUNKSIZE 65536 /* greater-than-page-size granularity seeking */
#define READSIZE 2048 /* a smaller read size is needed for low-rate streaming. */
 
static long _get_data(OggVorbis_File *vf){
errno=0;
if(!(vf->callbacks.read_func))return(-1);
if(vf->datasource){
char *buffer=ogg_sync_buffer(&vf->oy,READSIZE);
long bytes=(vf->callbacks.read_func)(buffer,1,READSIZE,vf->datasource);
if(bytes>0)ogg_sync_wrote(&vf->oy,bytes);
if(bytes==0 && errno)return(-1);
return(bytes);
}else
return(0);
}
 
/* save a tiny smidge of verbosity to make the code more readable */
static int _seek_helper(OggVorbis_File *vf,ogg_int64_t offset){
if(vf->datasource){
/* only seek if the file position isn't already there */
if(vf->offset != offset){
if(!(vf->callbacks.seek_func)||
(vf->callbacks.seek_func)(vf->datasource, offset, SEEK_SET) == -1)
return OV_EREAD;
vf->offset=offset;
ogg_sync_reset(&vf->oy);
}
}else{
/* shouldn't happen unless someone writes a broken callback */
return OV_EFAULT;
}
return 0;
}
 
/* The read/seek functions track absolute position within the stream */
 
/* from the head of the stream, get the next page. boundary specifies
if the function is allowed to fetch more data from the stream (and
how much) or only use internally buffered data.
 
boundary: -1) unbounded search
0) read no additional data; use cached only
n) search for a new page beginning for n bytes
 
return: <0) did not find a page (OV_FALSE, OV_EOF, OV_EREAD)
n) found a page at absolute offset n */
 
static ogg_int64_t _get_next_page(OggVorbis_File *vf,ogg_page *og,
ogg_int64_t boundary){
if(boundary>0)boundary+=vf->offset;
while(1){
long more;
 
if(boundary>0 && vf->offset>=boundary)return(OV_FALSE);
more=ogg_sync_pageseek(&vf->oy,og);
 
if(more<0){
/* skipped n bytes */
vf->offset-=more;
}else{
if(more==0){
/* send more paramedics */
if(!boundary)return(OV_FALSE);
{
long ret=_get_data(vf);
if(ret==0)return(OV_EOF);
if(ret<0)return(OV_EREAD);
}
}else{
/* got a page. Return the offset at the page beginning,
advance the internal offset past the page end */
ogg_int64_t ret=vf->offset;
vf->offset+=more;
return(ret);
 
}
}
}
}
 
/* find the latest page beginning before the passed in position. Much
dirtier than the above as Ogg doesn't have any backward search
linkage. no 'readp' as it will certainly have to read. */
/* returns offset or OV_EREAD, OV_FAULT */
static ogg_int64_t _get_prev_page(OggVorbis_File *vf,ogg_int64_t begin,ogg_page *og){
ogg_int64_t end = begin;
ogg_int64_t ret;
ogg_int64_t offset=-1;
 
while(offset==-1){
begin-=CHUNKSIZE;
if(begin<0)
begin=0;
 
ret=_seek_helper(vf,begin);
if(ret)return(ret);
 
while(vf->offset<end){
memset(og,0,sizeof(*og));
ret=_get_next_page(vf,og,end-vf->offset);
if(ret==OV_EREAD)return(OV_EREAD);
if(ret<0){
break;
}else{
offset=ret;
}
}
}
 
/* In a fully compliant, non-multiplexed stream, we'll still be
holding the last page. In multiplexed (or noncompliant streams),
we will probably have to re-read the last page we saw */
if(og->header_len==0){
ret=_seek_helper(vf,offset);
if(ret)return(ret);
 
ret=_get_next_page(vf,og,CHUNKSIZE);
if(ret<0)
/* this shouldn't be possible */
return(OV_EFAULT);
}
 
return(offset);
}
 
static void _add_serialno(ogg_page *og,long **serialno_list, int *n){
long s = ogg_page_serialno(og);
(*n)++;
 
if(*serialno_list){
*serialno_list = _ogg_realloc(*serialno_list, sizeof(**serialno_list)*(*n));
}else{
*serialno_list = _ogg_malloc(sizeof(**serialno_list));
}
 
(*serialno_list)[(*n)-1] = s;
}
 
/* returns nonzero if found */
static int _lookup_serialno(long s, long *serialno_list, int n){
if(serialno_list){
while(n--){
if(*serialno_list == s) return 1;
serialno_list++;
}
}
return 0;
}
 
static int _lookup_page_serialno(ogg_page *og, long *serialno_list, int n){
long s = ogg_page_serialno(og);
return _lookup_serialno(s,serialno_list,n);
}
 
/* performs the same search as _get_prev_page, but prefers pages of
the specified serial number. If a page of the specified serialno is
spotted during the seek-back-and-read-forward, it will return the
info of last page of the matching serial number instead of the very
last page. If no page of the specified serialno is seen, it will
return the info of last page and alter *serialno. */
static ogg_int64_t _get_prev_page_serial(OggVorbis_File *vf, ogg_int64_t begin,
long *serial_list, int serial_n,
int *serialno, ogg_int64_t *granpos){
ogg_page og;
ogg_int64_t end=begin;
ogg_int64_t ret;
 
ogg_int64_t prefoffset=-1;
ogg_int64_t offset=-1;
ogg_int64_t ret_serialno=-1;
ogg_int64_t ret_gran=-1;
 
while(offset==-1){
begin-=CHUNKSIZE;
if(begin<0)
begin=0;
 
ret=_seek_helper(vf,begin);
if(ret)return(ret);
 
while(vf->offset<end){
ret=_get_next_page(vf,&og,end-vf->offset);
if(ret==OV_EREAD)return(OV_EREAD);
if(ret<0){
break;
}else{
ret_serialno=ogg_page_serialno(&og);
ret_gran=ogg_page_granulepos(&og);
offset=ret;
 
if(ret_serialno == *serialno){
prefoffset=ret;
*granpos=ret_gran;
}
 
if(!_lookup_serialno(ret_serialno,serial_list,serial_n)){
/* we fell off the end of the link, which means we seeked
back too far and shouldn't have been looking in that link
to begin with. If we found the preferred serial number,
forget that we saw it. */
prefoffset=-1;
}
}
}
/*We started from the beginning of the stream and found nothing.
This should be impossible unless the contents of the stream changed out
from under us after we read from it.*/
if(!begin&&vf->offset<0)return OV_EBADLINK;
}
 
/* we're not interested in the page... just the serialno and granpos. */
if(prefoffset>=0)return(prefoffset);
 
*serialno = ret_serialno;
*granpos = ret_gran;
return(offset);
 
}
 
/* uses the local ogg_stream storage in vf; this is important for
non-streaming input sources */
static int _fetch_headers(OggVorbis_File *vf,vorbis_info *vi,vorbis_comment *vc,
long **serialno_list, int *serialno_n,
ogg_page *og_ptr){
ogg_page og;
ogg_packet op;
int i,ret;
int allbos=0;
 
if(!og_ptr){
ogg_int64_t llret=_get_next_page(vf,&og,CHUNKSIZE);
if(llret==OV_EREAD)return(OV_EREAD);
if(llret<0)return(OV_ENOTVORBIS);
og_ptr=&og;
}
 
vorbis_info_init(vi);
vorbis_comment_init(vc);
vf->ready_state=OPENED;
 
/* extract the serialnos of all BOS pages + the first set of vorbis
headers we see in the link */
 
while(ogg_page_bos(og_ptr)){
if(serialno_list){
if(_lookup_page_serialno(og_ptr,*serialno_list,*serialno_n)){
/* a dupe serialnumber in an initial header packet set == invalid stream */
if(*serialno_list)_ogg_free(*serialno_list);
*serialno_list=0;
*serialno_n=0;
ret=OV_EBADHEADER;
goto bail_header;
}
 
_add_serialno(og_ptr,serialno_list,serialno_n);
}
 
if(vf->ready_state<STREAMSET){
/* we don't have a vorbis stream in this link yet, so begin
prospective stream setup. We need a stream to get packets */
ogg_stream_reset_serialno(&vf->os,ogg_page_serialno(og_ptr));
ogg_stream_pagein(&vf->os,og_ptr);
 
if(ogg_stream_packetout(&vf->os,&op) > 0 &&
vorbis_synthesis_idheader(&op)){
/* vorbis header; continue setup */
vf->ready_state=STREAMSET;
if((ret=vorbis_synthesis_headerin(vi,vc,&op))){
ret=OV_EBADHEADER;
goto bail_header;
}
}
}
 
/* get next page */
{
ogg_int64_t llret=_get_next_page(vf,og_ptr,CHUNKSIZE);
if(llret==OV_EREAD){
ret=OV_EREAD;
goto bail_header;
}
if(llret<0){
ret=OV_ENOTVORBIS;
goto bail_header;
}
 
/* if this page also belongs to our vorbis stream, submit it and break */
if(vf->ready_state==STREAMSET &&
vf->os.serialno == ogg_page_serialno(og_ptr)){
ogg_stream_pagein(&vf->os,og_ptr);
break;
}
}
}
 
if(vf->ready_state!=STREAMSET){
ret = OV_ENOTVORBIS;
goto bail_header;
}
 
while(1){
 
i=0;
while(i<2){ /* get a page loop */
 
while(i<2){ /* get a packet loop */
 
int result=ogg_stream_packetout(&vf->os,&op);
if(result==0)break;
if(result==-1){
ret=OV_EBADHEADER;
goto bail_header;
}
 
if((ret=vorbis_synthesis_headerin(vi,vc,&op)))
goto bail_header;
 
i++;
}
 
while(i<2){
if(_get_next_page(vf,og_ptr,CHUNKSIZE)<0){
ret=OV_EBADHEADER;
goto bail_header;
}
 
/* if this page belongs to the correct stream, go parse it */
if(vf->os.serialno == ogg_page_serialno(og_ptr)){
ogg_stream_pagein(&vf->os,og_ptr);
break;
}
 
/* if we never see the final vorbis headers before the link
ends, abort */
if(ogg_page_bos(og_ptr)){
if(allbos){
ret = OV_EBADHEADER;
goto bail_header;
}else
allbos=1;
}
 
/* otherwise, keep looking */
}
}
 
return 0;
}
 
bail_header:
vorbis_info_clear(vi);
vorbis_comment_clear(vc);
vf->ready_state=OPENED;
 
return ret;
}
 
/* Starting from current cursor position, get initial PCM offset of
next page. Consumes the page in the process without decoding
audio, however this is only called during stream parsing upon
seekable open. */
static ogg_int64_t _initial_pcmoffset(OggVorbis_File *vf, vorbis_info *vi){
ogg_page og;
ogg_int64_t accumulated=0;
long lastblock=-1;
int result;
int serialno = vf->os.serialno;
 
while(1){
ogg_packet op;
if(_get_next_page(vf,&og,-1)<0)
break; /* should not be possible unless the file is truncated/mangled */
 
if(ogg_page_bos(&og)) break;
if(ogg_page_serialno(&og)!=serialno) continue;
 
/* count blocksizes of all frames in the page */
ogg_stream_pagein(&vf->os,&og);
while((result=ogg_stream_packetout(&vf->os,&op))){
if(result>0){ /* ignore holes */
long thisblock=vorbis_packet_blocksize(vi,&op);
if(thisblock>=0){
if(lastblock!=-1)
accumulated+=(lastblock+thisblock)>>2;
lastblock=thisblock;
}
}
}
 
if(ogg_page_granulepos(&og)!=-1){
/* pcm offset of last packet on the first audio page */
accumulated= ogg_page_granulepos(&og)-accumulated;
break;
}
}
 
/* less than zero? Either a corrupt file or a stream with samples
trimmed off the beginning, a normal occurrence; in both cases set
the offset to zero */
if(accumulated<0)accumulated=0;
 
return accumulated;
}
 
/* finds each bitstream link one at a time using a bisection search
(has to begin by knowing the offset of the lb's initial page).
Recurses for each link so it can alloc the link storage after
finding them all, then unroll and fill the cache at the same time */
static int _bisect_forward_serialno(OggVorbis_File *vf,
ogg_int64_t begin,
ogg_int64_t searched,
ogg_int64_t end,
ogg_int64_t endgran,
int endserial,
long *currentno_list,
int currentnos,
long m){
ogg_int64_t pcmoffset;
ogg_int64_t dataoffset=searched;
ogg_int64_t endsearched=end;
ogg_int64_t next=end;
ogg_int64_t searchgran=-1;
ogg_page og;
ogg_int64_t ret,last;
int serialno = vf->os.serialno;
 
/* invariants:
we have the headers and serialnos for the link beginning at 'begin'
we have the offset and granpos of the last page in the file (potentially
not a page we care about)
*/
 
/* Is the last page in our list of current serialnumbers? */
if(_lookup_serialno(endserial,currentno_list,currentnos)){
 
/* last page is in the starting serialno list, so we've bisected
down to (or just started with) a single link. Now we need to
find the last vorbis page belonging to the first vorbis stream
for this link. */
searched = end;
while(endserial != serialno){
endserial = serialno;
searched=_get_prev_page_serial(vf,searched,currentno_list,currentnos,&endserial,&endgran);
}
 
vf->links=m+1;
if(vf->offsets)_ogg_free(vf->offsets);
if(vf->serialnos)_ogg_free(vf->serialnos);
if(vf->dataoffsets)_ogg_free(vf->dataoffsets);
 
vf->offsets=_ogg_malloc((vf->links+1)*sizeof(*vf->offsets));
vf->vi=_ogg_realloc(vf->vi,vf->links*sizeof(*vf->vi));
vf->vc=_ogg_realloc(vf->vc,vf->links*sizeof(*vf->vc));
vf->serialnos=_ogg_malloc(vf->links*sizeof(*vf->serialnos));
vf->dataoffsets=_ogg_malloc(vf->links*sizeof(*vf->dataoffsets));
vf->pcmlengths=_ogg_malloc(vf->links*2*sizeof(*vf->pcmlengths));
 
vf->offsets[m+1]=end;
vf->offsets[m]=begin;
vf->pcmlengths[m*2+1]=(endgran<0?0:endgran);
 
}else{
 
/* last page is not in the starting stream's serial number list,
so we have multiple links. Find where the stream that begins
our bisection ends. */
 
long *next_serialno_list=NULL;
int next_serialnos=0;
vorbis_info vi;
vorbis_comment vc;
int testserial = serialno+1;
 
/* the below guards against garbage seperating the last and
first pages of two links. */
while(searched<endsearched){
ogg_int64_t bisect;
 
if(endsearched-searched<CHUNKSIZE){
bisect=searched;
}else{
bisect=(searched+endsearched)/2;
}
 
ret=_seek_helper(vf,bisect);
if(ret)return(ret);
 
last=_get_next_page(vf,&og,-1);
if(last==OV_EREAD)return(OV_EREAD);
if(last<0 || !_lookup_page_serialno(&og,currentno_list,currentnos)){
endsearched=bisect;
if(last>=0)next=last;
}else{
searched=vf->offset;
}
}
 
/* Bisection point found */
/* for the time being, fetch end PCM offset the simple way */
searched = next;
while(testserial != serialno){
testserial = serialno;
searched = _get_prev_page_serial(vf,searched,currentno_list,currentnos,&testserial,&searchgran);
}
 
ret=_seek_helper(vf,next);
if(ret)return(ret);
 
ret=_fetch_headers(vf,&vi,&vc,&next_serialno_list,&next_serialnos,NULL);
if(ret)return(ret);
serialno = vf->os.serialno;
dataoffset = vf->offset;
 
/* this will consume a page, however the next bisection always
starts with a raw seek */
pcmoffset = _initial_pcmoffset(vf,&vi);
 
ret=_bisect_forward_serialno(vf,next,vf->offset,end,endgran,endserial,
next_serialno_list,next_serialnos,m+1);
if(ret)return(ret);
 
if(next_serialno_list)_ogg_free(next_serialno_list);
 
vf->offsets[m+1]=next;
vf->serialnos[m+1]=serialno;
vf->dataoffsets[m+1]=dataoffset;
 
vf->vi[m+1]=vi;
vf->vc[m+1]=vc;
 
vf->pcmlengths[m*2+1]=searchgran;
vf->pcmlengths[m*2+2]=pcmoffset;
vf->pcmlengths[m*2+3]-=pcmoffset;
if(vf->pcmlengths[m*2+3]<0)vf->pcmlengths[m*2+3]=0;
}
return(0);
}
 
static int _make_decode_ready(OggVorbis_File *vf){
if(vf->ready_state>STREAMSET)return 0;
if(vf->ready_state<STREAMSET)return OV_EFAULT;
if(vf->seekable){
if(vorbis_synthesis_init(&vf->vd,vf->vi+vf->current_link))
return OV_EBADLINK;
}else{
if(vorbis_synthesis_init(&vf->vd,vf->vi))
return OV_EBADLINK;
}
vorbis_block_init(&vf->vd,&vf->vb);
vf->ready_state=INITSET;
vf->bittrack=0.f;
vf->samptrack=0.f;
return 0;
}
 
static int _open_seekable2(OggVorbis_File *vf){
ogg_int64_t dataoffset=vf->dataoffsets[0],end,endgran=-1;
int endserial=vf->os.serialno;
int serialno=vf->os.serialno;
 
/* we're partially open and have a first link header state in
storage in vf */
 
/* fetch initial PCM offset */
ogg_int64_t pcmoffset = _initial_pcmoffset(vf,vf->vi);
 
/* we can seek, so set out learning all about this file */
if(vf->callbacks.seek_func && vf->callbacks.tell_func){
(vf->callbacks.seek_func)(vf->datasource,0,SEEK_END);
vf->offset=vf->end=(vf->callbacks.tell_func)(vf->datasource);
}else{
vf->offset=vf->end=-1;
}
 
/* If seek_func is implemented, tell_func must also be implemented */
if(vf->end==-1) return(OV_EINVAL);
 
/* Get the offset of the last page of the physical bitstream, or, if
we're lucky the last vorbis page of this link as most OggVorbis
files will contain a single logical bitstream */
end=_get_prev_page_serial(vf,vf->end,vf->serialnos+2,vf->serialnos[1],&endserial,&endgran);
if(end<0)return(end);
 
/* now determine bitstream structure recursively */
if(_bisect_forward_serialno(vf,0,dataoffset,end,endgran,endserial,
vf->serialnos+2,vf->serialnos[1],0)<0)return(OV_EREAD);
 
vf->offsets[0]=0;
vf->serialnos[0]=serialno;
vf->dataoffsets[0]=dataoffset;
vf->pcmlengths[0]=pcmoffset;
vf->pcmlengths[1]-=pcmoffset;
if(vf->pcmlengths[1]<0)vf->pcmlengths[1]=0;
 
return(ov_raw_seek(vf,dataoffset));
}
 
/* clear out the current logical bitstream decoder */
static void _decode_clear(OggVorbis_File *vf){
vorbis_dsp_clear(&vf->vd);
vorbis_block_clear(&vf->vb);
vf->ready_state=OPENED;
}
 
/* fetch and process a packet. Handles the case where we're at a
bitstream boundary and dumps the decoding machine. If the decoding
machine is unloaded, it loads it. It also keeps pcm_offset up to
date (seek and read both use this. seek uses a special hack with
readp).
 
return: <0) error, OV_HOLE (lost packet) or OV_EOF
0) need more data (only if readp==0)
1) got a packet
*/
 
static int _fetch_and_process_packet(OggVorbis_File *vf,
ogg_packet *op_in,
int readp,
int spanp){
ogg_page og;
 
/* handle one packet. Try to fetch it from current stream state */
/* extract packets from page */
while(1){
 
if(vf->ready_state==STREAMSET){
int ret=_make_decode_ready(vf);
if(ret<0)return ret;
}
 
/* process a packet if we can. */
 
if(vf->ready_state==INITSET){
int hs=vorbis_synthesis_halfrate_p(vf->vi);
 
while(1) {
ogg_packet op;
ogg_packet *op_ptr=(op_in?op_in:&op);
int result=ogg_stream_packetout(&vf->os,op_ptr);
ogg_int64_t granulepos;
 
op_in=NULL;
if(result==-1)return(OV_HOLE); /* hole in the data. */
if(result>0){
/* got a packet. process it */
granulepos=op_ptr->granulepos;
if(!vorbis_synthesis(&vf->vb,op_ptr)){ /* lazy check for lazy
header handling. The
header packets aren't
audio, so if/when we
submit them,
vorbis_synthesis will
reject them */
 
/* suck in the synthesis data and track bitrate */
{
int oldsamples=vorbis_synthesis_pcmout(&vf->vd,NULL);
/* for proper use of libvorbis within libvorbisfile,
oldsamples will always be zero. */
if(oldsamples)return(OV_EFAULT);
 
vorbis_synthesis_blockin(&vf->vd,&vf->vb);
vf->samptrack+=(vorbis_synthesis_pcmout(&vf->vd,NULL)<<hs);
vf->bittrack+=op_ptr->bytes*8;
}
 
/* update the pcm offset. */
if(granulepos!=-1 && !op_ptr->e_o_s){
int link=(vf->seekable?vf->current_link:0);
int i,samples;
 
/* this packet has a pcm_offset on it (the last packet
completed on a page carries the offset) After processing
(above), we know the pcm position of the *last* sample
ready to be returned. Find the offset of the *first*
 
As an aside, this trick is inaccurate if we begin
reading anew right at the last page; the end-of-stream
granulepos declares the last frame in the stream, and the
last packet of the last page may be a partial frame.
So, we need a previous granulepos from an in-sequence page
to have a reference point. Thus the !op_ptr->e_o_s clause
above */
 
if(vf->seekable && link>0)
granulepos-=vf->pcmlengths[link*2];
if(granulepos<0)granulepos=0; /* actually, this
shouldn't be possible
here unless the stream
is very broken */
 
samples=(vorbis_synthesis_pcmout(&vf->vd,NULL)<<hs);
 
granulepos-=samples;
for(i=0;i<link;i++)
granulepos+=vf->pcmlengths[i*2+1];
vf->pcm_offset=granulepos;
}
return(1);
}
}
else
break;
}
}
 
if(vf->ready_state>=OPENED){
ogg_int64_t ret;
 
while(1){
/* the loop is not strictly necessary, but there's no sense in
doing the extra checks of the larger loop for the common
case in a multiplexed bistream where the page is simply
part of a different logical bitstream; keep reading until
we get one with the correct serialno */
 
if(!readp)return(0);
if((ret=_get_next_page(vf,&og,-1))<0){
return(OV_EOF); /* eof. leave unitialized */
}
 
/* bitrate tracking; add the header's bytes here, the body bytes
are done by packet above */
vf->bittrack+=og.header_len*8;
 
if(vf->ready_state==INITSET){
if(vf->current_serialno!=ogg_page_serialno(&og)){
 
/* two possibilities:
1) our decoding just traversed a bitstream boundary
2) another stream is multiplexed into this logical section */
 
if(ogg_page_bos(&og)){
/* boundary case */
if(!spanp)
return(OV_EOF);
 
_decode_clear(vf);
 
if(!vf->seekable){
vorbis_info_clear(vf->vi);
vorbis_comment_clear(vf->vc);
}
break;
 
}else
continue; /* possibility #2 */
}
}
 
break;
}
}
 
/* Do we need to load a new machine before submitting the page? */
/* This is different in the seekable and non-seekable cases.
 
In the seekable case, we already have all the header
information loaded and cached; we just initialize the machine
with it and continue on our merry way.
 
In the non-seekable (streaming) case, we'll only be at a
boundary if we just left the previous logical bitstream and
we're now nominally at the header of the next bitstream
*/
 
if(vf->ready_state!=INITSET){
int link;
 
if(vf->ready_state<STREAMSET){
if(vf->seekable){
long serialno = ogg_page_serialno(&og);
 
/* match the serialno to bitstream section. We use this rather than
offset positions to avoid problems near logical bitstream
boundaries */
 
for(link=0;link<vf->links;link++)
if(vf->serialnos[link]==serialno)break;
 
if(link==vf->links) continue; /* not the desired Vorbis
bitstream section; keep
trying */
 
vf->current_serialno=serialno;
vf->current_link=link;
 
ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
vf->ready_state=STREAMSET;
 
}else{
/* we're streaming */
/* fetch the three header packets, build the info struct */
 
int ret=_fetch_headers(vf,vf->vi,vf->vc,NULL,NULL,&og);
if(ret)return(ret);
vf->current_serialno=vf->os.serialno;
vf->current_link++;
link=0;
}
}
}
 
/* the buffered page is the data we want, and we're ready for it;
add it to the stream state */
ogg_stream_pagein(&vf->os,&og);
 
}
}
 
/* if, eg, 64 bit stdio is configured by default, this will build with
fseek64 */
static int _fseek64_wrap(FILE *f,ogg_int64_t off,int whence){
if(f==NULL)return(-1);
return fseek(f,off,whence);
}
 
static int _ov_open1(void *f,OggVorbis_File *vf,const char *initial,
long ibytes, ov_callbacks callbacks){
int offsettest=((f && callbacks.seek_func)?callbacks.seek_func(f,0,SEEK_CUR):-1);
long *serialno_list=NULL;
int serialno_list_size=0;
int ret;
 
memset(vf,0,sizeof(*vf));
vf->datasource=f;
vf->callbacks = callbacks;
 
/* init the framing state */
ogg_sync_init(&vf->oy);
 
/* perhaps some data was previously read into a buffer for testing
against other stream types. Allow initialization from this
previously read data (especially as we may be reading from a
non-seekable stream) */
if(initial){
char *buffer=ogg_sync_buffer(&vf->oy,ibytes);
memcpy(buffer,initial,ibytes);
ogg_sync_wrote(&vf->oy,ibytes);
}
 
/* can we seek? Stevens suggests the seek test was portable */
if(offsettest!=-1)vf->seekable=1;
 
/* No seeking yet; Set up a 'single' (current) logical bitstream
entry for partial open */
vf->links=1;
vf->vi=_ogg_calloc(vf->links,sizeof(*vf->vi));
vf->vc=_ogg_calloc(vf->links,sizeof(*vf->vc));
ogg_stream_init(&vf->os,-1); /* fill in the serialno later */
 
/* Fetch all BOS pages, store the vorbis header and all seen serial
numbers, load subsequent vorbis setup headers */
if((ret=_fetch_headers(vf,vf->vi,vf->vc,&serialno_list,&serialno_list_size,NULL))<0){
vf->datasource=NULL;
ov_clear(vf);
}else{
/* serial number list for first link needs to be held somewhere
for second stage of seekable stream open; this saves having to
seek/reread first link's serialnumber data then. */
vf->serialnos=_ogg_calloc(serialno_list_size+2,sizeof(*vf->serialnos));
vf->serialnos[0]=vf->current_serialno=vf->os.serialno;
vf->serialnos[1]=serialno_list_size;
memcpy(vf->serialnos+2,serialno_list,serialno_list_size*sizeof(*vf->serialnos));
 
vf->offsets=_ogg_calloc(1,sizeof(*vf->offsets));
vf->dataoffsets=_ogg_calloc(1,sizeof(*vf->dataoffsets));
vf->offsets[0]=0;
vf->dataoffsets[0]=vf->offset;
 
vf->ready_state=PARTOPEN;
}
if(serialno_list)_ogg_free(serialno_list);
return(ret);
}
 
static int _ov_open2(OggVorbis_File *vf){
if(vf->ready_state != PARTOPEN) return OV_EINVAL;
vf->ready_state=OPENED;
if(vf->seekable){
int ret=_open_seekable2(vf);
if(ret){
vf->datasource=NULL;
ov_clear(vf);
}
return(ret);
}else
vf->ready_state=STREAMSET;
 
return 0;
}
 
 
/* clear out the OggVorbis_File struct */
int ov_clear(OggVorbis_File *vf){
if(vf){
vorbis_block_clear(&vf->vb);
vorbis_dsp_clear(&vf->vd);
ogg_stream_clear(&vf->os);
 
if(vf->vi && vf->links){
int i;
for(i=0;i<vf->links;i++){
vorbis_info_clear(vf->vi+i);
vorbis_comment_clear(vf->vc+i);
}
_ogg_free(vf->vi);
_ogg_free(vf->vc);
}
if(vf->dataoffsets)_ogg_free(vf->dataoffsets);
if(vf->pcmlengths)_ogg_free(vf->pcmlengths);
if(vf->serialnos)_ogg_free(vf->serialnos);
if(vf->offsets)_ogg_free(vf->offsets);
ogg_sync_clear(&vf->oy);
if(vf->datasource && vf->callbacks.close_func)
(vf->callbacks.close_func)(vf->datasource);
memset(vf,0,sizeof(*vf));
}
#ifdef DEBUG_LEAKS
_VDBG_dump();
#endif
return(0);
}
 
/* inspects the OggVorbis file and finds/documents all the logical
bitstreams contained in it. Tries to be tolerant of logical
bitstream sections that are truncated/woogie.
 
return: -1) error
0) OK
*/
 
int ov_open_callbacks(void *f,OggVorbis_File *vf,
const char *initial,long ibytes,ov_callbacks callbacks){
int ret=_ov_open1(f,vf,initial,ibytes,callbacks);
if(ret)return ret;
return _ov_open2(vf);
}
 
int ov_open(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes){
ov_callbacks callbacks = {
(size_t (*)(void *, size_t, size_t, void *)) fread,
(int (*)(void *, ogg_int64_t, int)) _fseek64_wrap,
(int (*)(void *)) fclose,
(long (*)(void *)) ftell
};
 
return ov_open_callbacks((void *)f, vf, initial, ibytes, callbacks);
}
 
int ov_fopen(const char *path,OggVorbis_File *vf){
int ret;
FILE *f = fopen(path,"rb");
if(!f) return -1;
 
ret = ov_open(f,vf,NULL,0);
if(ret) fclose(f);
return ret;
}
 
 
/* cheap hack for game usage where downsampling is desirable; there's
no need for SRC as we can just do it cheaply in libvorbis. */
 
int ov_halfrate(OggVorbis_File *vf,int flag){
int i;
if(vf->vi==NULL)return OV_EINVAL;
if(vf->ready_state>STREAMSET){
/* clear out stream state; dumping the decode machine is needed to
reinit the MDCT lookups. */
vorbis_dsp_clear(&vf->vd);
vorbis_block_clear(&vf->vb);
vf->ready_state=STREAMSET;
if(vf->pcm_offset>=0){
ogg_int64_t pos=vf->pcm_offset;
vf->pcm_offset=-1; /* make sure the pos is dumped if unseekable */
ov_pcm_seek(vf,pos);
}
}
 
for(i=0;i<vf->links;i++){
if(vorbis_synthesis_halfrate(vf->vi+i,flag)){
if(flag) ov_halfrate(vf,0);
return OV_EINVAL;
}
}
return 0;
}
 
int ov_halfrate_p(OggVorbis_File *vf){
if(vf->vi==NULL)return OV_EINVAL;
return vorbis_synthesis_halfrate_p(vf->vi);
}
 
/* Only partially open the vorbis file; test for Vorbisness, and load
the headers for the first chain. Do not seek (although test for
seekability). Use ov_test_open to finish opening the file, else
ov_clear to close/free it. Same return codes as open.
 
Note that vorbisfile does _not_ take ownership of the file if the
call fails; the calling applicaiton is responsible for closing the file
if this call returns an error. */
 
int ov_test_callbacks(void *f,OggVorbis_File *vf,
const char *initial,long ibytes,ov_callbacks callbacks)
{
return _ov_open1(f,vf,initial,ibytes,callbacks);
}
 
int ov_test(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes){
ov_callbacks callbacks = {
(size_t (*)(void *, size_t, size_t, void *)) fread,
(int (*)(void *, ogg_int64_t, int)) _fseek64_wrap,
(int (*)(void *)) fclose,
(long (*)(void *)) ftell
};
 
return ov_test_callbacks((void *)f, vf, initial, ibytes, callbacks);
}
 
int ov_test_open(OggVorbis_File *vf){
if(vf->ready_state!=PARTOPEN)return(OV_EINVAL);
return _ov_open2(vf);
}
 
/* How many logical bitstreams in this physical bitstream? */
long ov_streams(OggVorbis_File *vf){
return vf->links;
}
 
/* Is the FILE * associated with vf seekable? */
long ov_seekable(OggVorbis_File *vf){
return vf->seekable;
}
 
/* returns the bitrate for a given logical bitstream or the entire
physical bitstream. If the file is open for random access, it will
find the *actual* average bitrate. If the file is streaming, it
returns the nominal bitrate (if set) else the average of the
upper/lower bounds (if set) else -1 (unset).
 
If you want the actual bitrate field settings, get them from the
vorbis_info structs */
 
long ov_bitrate(OggVorbis_File *vf,int i){
if(vf->ready_state<OPENED)return(OV_EINVAL);
if(i>=vf->links)return(OV_EINVAL);
if(!vf->seekable && i!=0)return(ov_bitrate(vf,0));
if(i<0){
ogg_int64_t bits=0;
int i;
float br;
for(i=0;i<vf->links;i++)
bits+=(vf->offsets[i+1]-vf->dataoffsets[i])*8;
/* This once read: return(rint(bits/ov_time_total(vf,-1)));
* gcc 3.x on x86 miscompiled this at optimisation level 2 and above,
* so this is slightly transformed to make it work.
*/
br = bits/ov_time_total(vf,-1);
return(rint(br));
}else{
if(vf->seekable){
/* return the actual bitrate */
return(rint((vf->offsets[i+1]-vf->dataoffsets[i])*8/ov_time_total(vf,i)));
}else{
/* return nominal if set */
if(vf->vi[i].bitrate_nominal>0){
return vf->vi[i].bitrate_nominal;
}else{
if(vf->vi[i].bitrate_upper>0){
if(vf->vi[i].bitrate_lower>0){
return (vf->vi[i].bitrate_upper+vf->vi[i].bitrate_lower)/2;
}else{
return vf->vi[i].bitrate_upper;
}
}
return(OV_FALSE);
}
}
}
}
 
/* returns the actual bitrate since last call. returns -1 if no
additional data to offer since last call (or at beginning of stream),
EINVAL if stream is only partially open
*/
long ov_bitrate_instant(OggVorbis_File *vf){
int link=(vf->seekable?vf->current_link:0);
long ret;
if(vf->ready_state<OPENED)return(OV_EINVAL);
if(vf->samptrack==0)return(OV_FALSE);
ret=vf->bittrack/vf->samptrack*vf->vi[link].rate+.5;
vf->bittrack=0.f;
vf->samptrack=0.f;
return(ret);
}
 
/* Guess */
long ov_serialnumber(OggVorbis_File *vf,int i){
if(i>=vf->links)return(ov_serialnumber(vf,vf->links-1));
if(!vf->seekable && i>=0)return(ov_serialnumber(vf,-1));
if(i<0){
return(vf->current_serialno);
}else{
return(vf->serialnos[i]);
}
}
 
/* returns: total raw (compressed) length of content if i==-1
raw (compressed) length of that logical bitstream for i==0 to n
OV_EINVAL if the stream is not seekable (we can't know the length)
or if stream is only partially open
*/
ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i){
if(vf->ready_state<OPENED)return(OV_EINVAL);
if(!vf->seekable || i>=vf->links)return(OV_EINVAL);
if(i<0){
ogg_int64_t acc=0;
int i;
for(i=0;i<vf->links;i++)
acc+=ov_raw_total(vf,i);
return(acc);
}else{
return(vf->offsets[i+1]-vf->offsets[i]);
}
}
 
/* returns: total PCM length (samples) of content if i==-1 PCM length
(samples) of that logical bitstream for i==0 to n
OV_EINVAL if the stream is not seekable (we can't know the
length) or only partially open
*/
ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i){
if(vf->ready_state<OPENED)return(OV_EINVAL);
if(!vf->seekable || i>=vf->links)return(OV_EINVAL);
if(i<0){
ogg_int64_t acc=0;
int i;
for(i=0;i<vf->links;i++)
acc+=ov_pcm_total(vf,i);
return(acc);
}else{
return(vf->pcmlengths[i*2+1]);
}
}
 
/* returns: total seconds of content if i==-1
seconds in that logical bitstream for i==0 to n
OV_EINVAL if the stream is not seekable (we can't know the
length) or only partially open
*/
double ov_time_total(OggVorbis_File *vf,int i){
if(vf->ready_state<OPENED)return(OV_EINVAL);
if(!vf->seekable || i>=vf->links)return(OV_EINVAL);
if(i<0){
double acc=0;
int i;
for(i=0;i<vf->links;i++)
acc+=ov_time_total(vf,i);
return(acc);
}else{
return((double)(vf->pcmlengths[i*2+1])/vf->vi[i].rate);
}
}
 
/* seek to an offset relative to the *compressed* data. This also
scans packets to update the PCM cursor. It will cross a logical
bitstream boundary, but only if it can't get any packets out of the
tail of the bitstream we seek to (so no surprises).
 
returns zero on success, nonzero on failure */
 
int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos){
ogg_stream_state work_os;
 
if(vf->ready_state<OPENED)return(OV_EINVAL);
if(!vf->seekable)
return(OV_ENOSEEK); /* don't dump machine if we can't seek */
 
if(pos<0 || pos>vf->end)return(OV_EINVAL);
 
/* is the seek position outside our current link [if any]? */
if(vf->ready_state>=STREAMSET){
if(pos<vf->offsets[vf->current_link] || pos>=vf->offsets[vf->current_link+1])
_decode_clear(vf); /* clear out stream state */
}
 
/* don't yet clear out decoding machine (if it's initialized), in
the case we're in the same link. Restart the decode lapping, and
let _fetch_and_process_packet deal with a potential bitstream
boundary */
vf->pcm_offset=-1;
ogg_stream_reset_serialno(&vf->os,
vf->current_serialno); /* must set serialno */
vorbis_synthesis_restart(&vf->vd);
 
if(_seek_helper(vf,pos)) {
/* dump the machine so we're in a known state */
vf->pcm_offset=-1;
_decode_clear(vf);
return OV_EBADLINK;
}
 
/* we need to make sure the pcm_offset is set, but we don't want to
advance the raw cursor past good packets just to get to the first
with a granulepos. That's not equivalent behavior to beginning
decoding as immediately after the seek position as possible.
 
So, a hack. We use two stream states; a local scratch state and
the shared vf->os stream state. We use the local state to
scan, and the shared state as a buffer for later decode.
 
Unfortuantely, on the last page we still advance to last packet
because the granulepos on the last page is not necessarily on a
packet boundary, and we need to make sure the granpos is
correct.
*/
 
{
ogg_page og;
ogg_packet op;
int lastblock=0;
int accblock=0;
int thisblock=0;
int lastflag=0;
int firstflag=0;
ogg_int64_t pagepos=-1;
 
ogg_stream_init(&work_os,vf->current_serialno); /* get the memory ready */
ogg_stream_reset(&work_os); /* eliminate the spurious OV_HOLE
return from not necessarily
starting from the beginning */
 
while(1){
if(vf->ready_state>=STREAMSET){
/* snarf/scan a packet if we can */
int result=ogg_stream_packetout(&work_os,&op);
 
if(result>0){
 
if(vf->vi[vf->current_link].codec_setup){
thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op);
if(thisblock<0){
ogg_stream_packetout(&vf->os,NULL);
thisblock=0;
}else{
 
/* We can't get a guaranteed correct pcm position out of the
last page in a stream because it might have a 'short'
granpos, which can only be detected in the presence of a
preceding page. However, if the last page is also the first
page, the granpos rules of a first page take precedence. Not
only that, but for first==last, the EOS page must be treated
as if its a normal first page for the stream to open/play. */
if(lastflag && !firstflag)
ogg_stream_packetout(&vf->os,NULL);
else
if(lastblock)accblock+=(lastblock+thisblock)>>2;
}
 
if(op.granulepos!=-1){
int i,link=vf->current_link;
ogg_int64_t granulepos=op.granulepos-vf->pcmlengths[link*2];
if(granulepos<0)granulepos=0;
 
for(i=0;i<link;i++)
granulepos+=vf->pcmlengths[i*2+1];
vf->pcm_offset=granulepos-accblock;
if(vf->pcm_offset<0)vf->pcm_offset=0;
break;
}
lastblock=thisblock;
continue;
}else
ogg_stream_packetout(&vf->os,NULL);
}
}
 
if(!lastblock){
pagepos=_get_next_page(vf,&og,-1);
if(pagepos<0){
vf->pcm_offset=ov_pcm_total(vf,-1);
break;
}
}else{
/* huh? Bogus stream with packets but no granulepos */
vf->pcm_offset=-1;
break;
}
 
/* has our decoding just traversed a bitstream boundary? */
if(vf->ready_state>=STREAMSET){
if(vf->current_serialno!=ogg_page_serialno(&og)){
 
/* two possibilities:
1) our decoding just traversed a bitstream boundary
2) another stream is multiplexed into this logical section? */
 
if(ogg_page_bos(&og)){
/* we traversed */
_decode_clear(vf); /* clear out stream state */
ogg_stream_clear(&work_os);
} /* else, do nothing; next loop will scoop another page */
}
}
 
if(vf->ready_state<STREAMSET){
int link;
long serialno = ogg_page_serialno(&og);
 
for(link=0;link<vf->links;link++)
if(vf->serialnos[link]==serialno)break;
 
if(link==vf->links) continue; /* not the desired Vorbis
bitstream section; keep
trying */
vf->current_link=link;
vf->current_serialno=serialno;
ogg_stream_reset_serialno(&vf->os,serialno);
ogg_stream_reset_serialno(&work_os,serialno);
vf->ready_state=STREAMSET;
firstflag=(pagepos<=vf->dataoffsets[link]);
}
 
ogg_stream_pagein(&vf->os,&og);
ogg_stream_pagein(&work_os,&og);
lastflag=ogg_page_eos(&og);
 
}
}
 
ogg_stream_clear(&work_os);
vf->bittrack=0.f;
vf->samptrack=0.f;
return(0);
}
 
/* Page granularity seek (faster than sample granularity because we
don't do the last bit of decode to find a specific sample).
 
Seek to the last [granule marked] page preceding the specified pos
location, such that decoding past the returned point will quickly
arrive at the requested position. */
int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){
int link=-1;
ogg_int64_t result=0;
ogg_int64_t total=ov_pcm_total(vf,-1);
 
if(vf->ready_state<OPENED)return(OV_EINVAL);
if(!vf->seekable)return(OV_ENOSEEK);
 
if(pos<0 || pos>total)return(OV_EINVAL);
 
/* which bitstream section does this pcm offset occur in? */
for(link=vf->links-1;link>=0;link--){
total-=vf->pcmlengths[link*2+1];
if(pos>=total)break;
}
 
/* Search within the logical bitstream for the page with the highest
pcm_pos preceding pos. If we're looking for a position on the
first page, bisection will halt without finding our position as
it's before the first explicit granulepos fencepost. That case is
handled separately below.
 
There is a danger here; missing pages or incorrect frame number
information in the bitstream could make our task impossible.
Account for that (it would be an error condition) */
 
/* new search algorithm originally by HB (Nicholas Vinen) */
 
{
ogg_int64_t end=vf->offsets[link+1];
ogg_int64_t begin=vf->dataoffsets[link];
ogg_int64_t begintime = vf->pcmlengths[link*2];
ogg_int64_t endtime = vf->pcmlengths[link*2+1]+begintime;
ogg_int64_t target=pos-total+begintime;
ogg_int64_t best=-1;
int got_page=0;
 
ogg_page og;
 
/* if we have only one page, there will be no bisection. Grab the page here */
if(begin==end){
result=_seek_helper(vf,begin);
if(result) goto seek_error;
 
result=_get_next_page(vf,&og,1);
if(result<0) goto seek_error;
 
got_page=1;
}
 
/* bisection loop */
while(begin<end){
ogg_int64_t bisect;
 
if(end-begin<CHUNKSIZE){
bisect=begin;
}else{
/* take a (pretty decent) guess. */
bisect=begin +
(ogg_int64_t)((double)(target-begintime)*(end-begin)/(endtime-begintime))
- CHUNKSIZE;
if(bisect<begin+CHUNKSIZE)
bisect=begin;
}
 
result=_seek_helper(vf,bisect);
if(result) goto seek_error;
 
/* read loop within the bisection loop */
while(begin<end){
result=_get_next_page(vf,&og,end-vf->offset);
if(result==OV_EREAD) goto seek_error;
if(result<0){
/* there is no next page! */
if(bisect<=begin+1)
/* No bisection left to perform. We've either found the
best candidate already or failed. Exit loop. */
end=begin;
else{
/* We tried to load a fraction of the last page; back up a
bit and try to get the whole last page */
if(bisect==0) goto seek_error;
bisect-=CHUNKSIZE;
 
/* don't repeat/loop on a read we've already performed */
if(bisect<=begin)bisect=begin+1;
 
/* seek and cntinue bisection */
result=_seek_helper(vf,bisect);
if(result) goto seek_error;
}
}else{
ogg_int64_t granulepos;
got_page=1;
 
/* got a page. analyze it */
/* only consider pages from primary vorbis stream */
if(ogg_page_serialno(&og)!=vf->serialnos[link])
continue;
 
/* only consider pages with the granulepos set */
granulepos=ogg_page_granulepos(&og);
if(granulepos==-1)continue;
 
if(granulepos<target){
/* this page is a successful candidate! Set state */
 
best=result; /* raw offset of packet with granulepos */
begin=vf->offset; /* raw offset of next page */
begintime=granulepos;
 
/* if we're before our target but within a short distance,
don't bisect; read forward */
if(target-begintime>44100)break;
 
bisect=begin; /* *not* begin + 1 as above */
}else{
 
/* This is one of our pages, but the granpos is
post-target; it is not a bisection return
candidate. (The only way we'd use it is if it's the
first page in the stream; we handle that case later
outside the bisection) */
if(bisect<=begin+1){
/* No bisection left to perform. We've either found the
best candidate already or failed. Exit loop. */
end=begin;
}else{
if(end==vf->offset){
/* bisection read to the end; use the known page
boundary (result) to update bisection, back up a
little bit, and try again */
end=result;
bisect-=CHUNKSIZE;
if(bisect<=begin)bisect=begin+1;
result=_seek_helper(vf,bisect);
if(result) goto seek_error;
}else{
/* Normal bisection */
end=bisect;
endtime=granulepos;
break;
}
}
}
}
}
}
 
/* Out of bisection: did it 'fail?' */
if(best == -1){
 
/* Check the 'looking for data in first page' special case;
bisection would 'fail' because our search target was before the
first PCM granule position fencepost. */
 
if(got_page &&
begin == vf->dataoffsets[link] &&
ogg_page_serialno(&og)==vf->serialnos[link]){
 
/* Yes, this is the beginning-of-stream case. We already have
our page, right at the beginning of PCM data. Set state
and return. */
 
vf->pcm_offset=total;
 
if(link!=vf->current_link){
/* Different link; dump entire decode machine */
_decode_clear(vf);
 
vf->current_link=link;
vf->current_serialno=vf->serialnos[link];
vf->ready_state=STREAMSET;
 
}else{
vorbis_synthesis_restart(&vf->vd);
}
 
ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
ogg_stream_pagein(&vf->os,&og);
 
}else
goto seek_error;
 
}else{
 
/* Bisection found our page. seek to it, update pcm offset. Easier case than
raw_seek, don't keep packets preceding granulepos. */
 
ogg_page og;
ogg_packet op;
 
/* seek */
result=_seek_helper(vf,best);
vf->pcm_offset=-1;
if(result) goto seek_error;
result=_get_next_page(vf,&og,-1);
if(result<0) goto seek_error;
 
if(link!=vf->current_link){
/* Different link; dump entire decode machine */
_decode_clear(vf);
 
vf->current_link=link;
vf->current_serialno=vf->serialnos[link];
vf->ready_state=STREAMSET;
 
}else{
vorbis_synthesis_restart(&vf->vd);
}
 
ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
ogg_stream_pagein(&vf->os,&og);
 
/* pull out all but last packet; the one with granulepos */
while(1){
result=ogg_stream_packetpeek(&vf->os,&op);
if(result==0){
/* No packet returned; we exited the bisection with 'best'
pointing to a page with a granule position, so the packet
finishing this page ('best') originated on a preceding
page. Keep fetching previous pages until we get one with
a granulepos or without the 'continued' flag set. Then
just use raw_seek for simplicity. */
/* Do not rewind past the beginning of link data; if we do,
it's either a bug or a broken stream */
result=best;
while(result>vf->dataoffsets[link]){
result=_get_prev_page(vf,result,&og);
if(result<0) goto seek_error;
if(ogg_page_serialno(&og)==vf->current_serialno &&
(ogg_page_granulepos(&og)>-1 ||
!ogg_page_continued(&og))){
return ov_raw_seek(vf,result);
}
}
}
if(result<0){
result = OV_EBADPACKET;
goto seek_error;
}
if(op.granulepos!=-1){
vf->pcm_offset=op.granulepos-vf->pcmlengths[vf->current_link*2];
if(vf->pcm_offset<0)vf->pcm_offset=0;
vf->pcm_offset+=total;
break;
}else
result=ogg_stream_packetout(&vf->os,NULL);
}
}
}
 
/* verify result */
if(vf->pcm_offset>pos || pos>ov_pcm_total(vf,-1)){
result=OV_EFAULT;
goto seek_error;
}
vf->bittrack=0.f;
vf->samptrack=0.f;
return(0);
 
seek_error:
/* dump machine so we're in a known state */
vf->pcm_offset=-1;
_decode_clear(vf);
return (int)result;
}
 
/* seek to a sample offset relative to the decompressed pcm stream
returns zero on success, nonzero on failure */
 
int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos){
int thisblock,lastblock=0;
int ret=ov_pcm_seek_page(vf,pos);
if(ret<0)return(ret);
if((ret=_make_decode_ready(vf)))return ret;
 
/* discard leading packets we don't need for the lapping of the
position we want; don't decode them */
 
while(1){
ogg_packet op;
ogg_page og;
 
int ret=ogg_stream_packetpeek(&vf->os,&op);
if(ret>0){
thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op);
if(thisblock<0){
ogg_stream_packetout(&vf->os,NULL);
continue; /* non audio packet */
}
if(lastblock)vf->pcm_offset+=(lastblock+thisblock)>>2;
 
if(vf->pcm_offset+((thisblock+
vorbis_info_blocksize(vf->vi,1))>>2)>=pos)break;
 
/* remove the packet from packet queue and track its granulepos */
ogg_stream_packetout(&vf->os,NULL);
vorbis_synthesis_trackonly(&vf->vb,&op); /* set up a vb with
only tracking, no
pcm_decode */
vorbis_synthesis_blockin(&vf->vd,&vf->vb);
 
/* end of logical stream case is hard, especially with exact
length positioning. */
 
if(op.granulepos>-1){
int i;
/* always believe the stream markers */
vf->pcm_offset=op.granulepos-vf->pcmlengths[vf->current_link*2];
if(vf->pcm_offset<0)vf->pcm_offset=0;
for(i=0;i<vf->current_link;i++)
vf->pcm_offset+=vf->pcmlengths[i*2+1];
}
 
lastblock=thisblock;
 
}else{
if(ret<0 && ret!=OV_HOLE)break;
 
/* suck in a new page */
if(_get_next_page(vf,&og,-1)<0)break;
if(ogg_page_bos(&og))_decode_clear(vf);
 
if(vf->ready_state<STREAMSET){
long serialno=ogg_page_serialno(&og);
int link;
 
for(link=0;link<vf->links;link++)
if(vf->serialnos[link]==serialno)break;
if(link==vf->links) continue;
vf->current_link=link;
 
vf->ready_state=STREAMSET;
vf->current_serialno=ogg_page_serialno(&og);
ogg_stream_reset_serialno(&vf->os,serialno);
ret=_make_decode_ready(vf);
if(ret)return ret;
lastblock=0;
}
 
ogg_stream_pagein(&vf->os,&og);
}
}
 
vf->bittrack=0.f;
vf->samptrack=0.f;
/* discard samples until we reach the desired position. Crossing a
logical bitstream boundary with abandon is OK. */
{
/* note that halfrate could be set differently in each link, but
vorbisfile encoforces all links are set or unset */
int hs=vorbis_synthesis_halfrate_p(vf->vi);
while(vf->pcm_offset<((pos>>hs)<<hs)){
ogg_int64_t target=(pos-vf->pcm_offset)>>hs;
long samples=vorbis_synthesis_pcmout(&vf->vd,NULL);
 
if(samples>target)samples=target;
vorbis_synthesis_read(&vf->vd,samples);
vf->pcm_offset+=samples<<hs;
 
if(samples<target)
if(_fetch_and_process_packet(vf,NULL,1,1)<=0)
vf->pcm_offset=ov_pcm_total(vf,-1); /* eof */
}
}
return 0;
}
 
/* seek to a playback time relative to the decompressed pcm stream
returns zero on success, nonzero on failure */
int ov_time_seek(OggVorbis_File *vf,double seconds){
/* translate time to PCM position and call ov_pcm_seek */
 
int link=-1;
ogg_int64_t pcm_total=0;
double time_total=0.;
 
if(vf->ready_state<OPENED)return(OV_EINVAL);
if(!vf->seekable)return(OV_ENOSEEK);
if(seconds<0)return(OV_EINVAL);
 
/* which bitstream section does this time offset occur in? */
for(link=0;link<vf->links;link++){
double addsec = ov_time_total(vf,link);
if(seconds<time_total+addsec)break;
time_total+=addsec;
pcm_total+=vf->pcmlengths[link*2+1];
}
 
if(link==vf->links)return(OV_EINVAL);
 
/* enough information to convert time offset to pcm offset */
{
ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate;
return(ov_pcm_seek(vf,target));
}
}
 
/* page-granularity version of ov_time_seek
returns zero on success, nonzero on failure */
int ov_time_seek_page(OggVorbis_File *vf,double seconds){
/* translate time to PCM position and call ov_pcm_seek */
 
int link=-1;
ogg_int64_t pcm_total=0;
double time_total=0.;
 
if(vf->ready_state<OPENED)return(OV_EINVAL);
if(!vf->seekable)return(OV_ENOSEEK);
if(seconds<0)return(OV_EINVAL);
 
/* which bitstream section does this time offset occur in? */
for(link=0;link<vf->links;link++){
double addsec = ov_time_total(vf,link);
if(seconds<time_total+addsec)break;
time_total+=addsec;
pcm_total+=vf->pcmlengths[link*2+1];
}
 
if(link==vf->links)return(OV_EINVAL);
 
/* enough information to convert time offset to pcm offset */
{
ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate;
return(ov_pcm_seek_page(vf,target));
}
}
 
/* tell the current stream offset cursor. Note that seek followed by
tell will likely not give the set offset due to caching */
ogg_int64_t ov_raw_tell(OggVorbis_File *vf){
if(vf->ready_state<OPENED)return(OV_EINVAL);
return(vf->offset);
}
 
/* return PCM offset (sample) of next PCM sample to be read */
ogg_int64_t ov_pcm_tell(OggVorbis_File *vf){
if(vf->ready_state<OPENED)return(OV_EINVAL);
return(vf->pcm_offset);
}
 
/* return time offset (seconds) of next PCM sample to be read */
double ov_time_tell(OggVorbis_File *vf){
int link=0;
ogg_int64_t pcm_total=0;
double time_total=0.f;
 
if(vf->ready_state<OPENED)return(OV_EINVAL);
if(vf->seekable){
pcm_total=ov_pcm_total(vf,-1);
time_total=ov_time_total(vf,-1);
 
/* which bitstream section does this time offset occur in? */
for(link=vf->links-1;link>=0;link--){
pcm_total-=vf->pcmlengths[link*2+1];
time_total-=ov_time_total(vf,link);
if(vf->pcm_offset>=pcm_total)break;
}
}
 
return((double)time_total+(double)(vf->pcm_offset-pcm_total)/vf->vi[link].rate);
}
 
/* link: -1) return the vorbis_info struct for the bitstream section
currently being decoded
0-n) to request information for a specific bitstream section
 
In the case of a non-seekable bitstream, any call returns the
current bitstream. NULL in the case that the machine is not
initialized */
 
vorbis_info *ov_info(OggVorbis_File *vf,int link){
if(vf->seekable){
if(link<0)
if(vf->ready_state>=STREAMSET)
return vf->vi+vf->current_link;
else
return vf->vi;
else
if(link>=vf->links)
return NULL;
else
return vf->vi+link;
}else{
return vf->vi;
}
}
 
/* grr, strong typing, grr, no templates/inheritence, grr */
vorbis_comment *ov_comment(OggVorbis_File *vf,int link){
if(vf->seekable){
if(link<0)
if(vf->ready_state>=STREAMSET)
return vf->vc+vf->current_link;
else
return vf->vc;
else
if(link>=vf->links)
return NULL;
else
return vf->vc+link;
}else{
return vf->vc;
}
}
 
static int host_is_big_endian() {
ogg_int32_t pattern = 0xfeedface; /* deadbeef */
unsigned char *bytewise = (unsigned char *)&pattern;
if (bytewise[0] == 0xfe) return 1;
return 0;
}
 
/* up to this point, everything could more or less hide the multiple
logical bitstream nature of chaining from the toplevel application
if the toplevel application didn't particularly care. However, at
the point that we actually read audio back, the multiple-section
nature must surface: Multiple bitstream sections do not necessarily
have to have the same number of channels or sampling rate.
 
ov_read returns the sequential logical bitstream number currently
being decoded along with the PCM data in order that the toplevel
application can take action on channel/sample rate changes. This
number will be incremented even for streamed (non-seekable) streams
(for seekable streams, it represents the actual logical bitstream
index within the physical bitstream. Note that the accessor
functions above are aware of this dichotomy).
 
ov_read_filter is exactly the same as ov_read except that it processes
the decoded audio data through a filter before packing it into the
requested format. This gives greater accuracy than applying a filter
after the audio has been converted into integral PCM.
 
input values: buffer) a buffer to hold packed PCM data for return
length) the byte length requested to be placed into buffer
bigendianp) should the data be packed LSB first (0) or
MSB first (1)
word) word size for output. currently 1 (byte) or
2 (16 bit short)
 
return values: <0) error/hole in data (OV_HOLE), partial open (OV_EINVAL)
0) EOF
n) number of bytes of PCM actually returned. The
below works on a packet-by-packet basis, so the
return length is not related to the 'length' passed
in, just guaranteed to fit.
 
*section) set to the logical bitstream number */
 
long ov_read_filter(OggVorbis_File *vf,char *buffer,int length,
int bigendianp,int word,int sgned,int *bitstream,
void (*filter)(float **pcm,long channels,long samples,void *filter_param),void *filter_param){
int i,j;
int host_endian = host_is_big_endian();
int hs;
 
float **pcm;
long samples;
 
if(vf->ready_state<OPENED)return(OV_EINVAL);
if(word<=0)return(OV_EINVAL);
 
while(1){
if(vf->ready_state==INITSET){
samples=vorbis_synthesis_pcmout(&vf->vd,&pcm);
if(samples)break;
}
 
/* suck in another packet */
{
int ret=_fetch_and_process_packet(vf,NULL,1,1);
if(ret==OV_EOF)
return(0);
if(ret<=0)
return(ret);
}
 
}
 
if(samples>0){
 
/* yay! proceed to pack data into the byte buffer */
 
long channels=ov_info(vf,-1)->channels;
long bytespersample=word * channels;
vorbis_fpu_control fpu;
 
if(channels<1||channels>255)return(OV_EINVAL);
if(samples>length/bytespersample)samples=length/bytespersample;
 
if(samples <= 0)
return OV_EINVAL;
 
/* Here. */
if(filter)
filter(pcm,channels,samples,filter_param);
 
/* a tight loop to pack each size */
{
int val;
if(word==1){
int off=(sgned?0:128);
vorbis_fpu_setround(&fpu);
for(j=0;j<samples;j++)
for(i=0;i<channels;i++){
val=vorbis_ftoi(pcm[i][j]*128.f);
if(val>127)val=127;
else if(val<-128)val=-128;
*buffer++=val+off;
}
vorbis_fpu_restore(fpu);
}else{
int off=(sgned?0:32768);
 
if(host_endian==bigendianp){
if(sgned){
 
vorbis_fpu_setround(&fpu);
for(i=0;i<channels;i++) { /* It's faster in this order */
float *src=pcm[i];
short *dest=((short *)buffer)+i;
for(j=0;j<samples;j++) {
val=vorbis_ftoi(src[j]*32768.f);
if(val>32767)val=32767;
else if(val<-32768)val=-32768;
*dest=val;
dest+=channels;
}
}
vorbis_fpu_restore(fpu);
 
}else{
 
vorbis_fpu_setround(&fpu);
for(i=0;i<channels;i++) {
float *src=pcm[i];
short *dest=((short *)buffer)+i;
for(j=0;j<samples;j++) {
val=vorbis_ftoi(src[j]*32768.f);
if(val>32767)val=32767;
else if(val<-32768)val=-32768;
*dest=val+off;
dest+=channels;
}
}
vorbis_fpu_restore(fpu);
 
}
}else if(bigendianp){
 
vorbis_fpu_setround(&fpu);
for(j=0;j<samples;j++)
for(i=0;i<channels;i++){
val=vorbis_ftoi(pcm[i][j]*32768.f);
if(val>32767)val=32767;
else if(val<-32768)val=-32768;
val+=off;
*buffer++=(val>>8);
*buffer++=(val&0xff);
}
vorbis_fpu_restore(fpu);
 
}else{
int val;
vorbis_fpu_setround(&fpu);
for(j=0;j<samples;j++)
for(i=0;i<channels;i++){
val=vorbis_ftoi(pcm[i][j]*32768.f);
if(val>32767)val=32767;
else if(val<-32768)val=-32768;
val+=off;
*buffer++=(val&0xff);
*buffer++=(val>>8);
}
vorbis_fpu_restore(fpu);
 
}
}
}
 
vorbis_synthesis_read(&vf->vd,samples);
hs=vorbis_synthesis_halfrate_p(vf->vi);
vf->pcm_offset+=(samples<<hs);
if(bitstream)*bitstream=vf->current_link;
return(samples*bytespersample);
}else{
return(samples);
}
}
 
long ov_read(OggVorbis_File *vf,char *buffer,int length,
int bigendianp,int word,int sgned,int *bitstream){
return ov_read_filter(vf, buffer, length, bigendianp, word, sgned, bitstream, NULL, NULL);
}
 
/* input values: pcm_channels) a float vector per channel of output
length) the sample length being read by the app
 
return values: <0) error/hole in data (OV_HOLE), partial open (OV_EINVAL)
0) EOF
n) number of samples of PCM actually returned. The
below works on a packet-by-packet basis, so the
return length is not related to the 'length' passed
in, just guaranteed to fit.
 
*section) set to the logical bitstream number */
 
 
 
long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int length,
int *bitstream){
 
if(vf->ready_state<OPENED)return(OV_EINVAL);
 
while(1){
if(vf->ready_state==INITSET){
float **pcm;
long samples=vorbis_synthesis_pcmout(&vf->vd,&pcm);
if(samples){
int hs=vorbis_synthesis_halfrate_p(vf->vi);
if(pcm_channels)*pcm_channels=pcm;
if(samples>length)samples=length;
vorbis_synthesis_read(&vf->vd,samples);
vf->pcm_offset+=samples<<hs;
if(bitstream)*bitstream=vf->current_link;
return samples;
 
}
}
 
/* suck in another packet */
{
int ret=_fetch_and_process_packet(vf,NULL,1,1);
if(ret==OV_EOF)return(0);
if(ret<=0)return(ret);
}
 
}
}
 
extern const float *vorbis_window(vorbis_dsp_state *v,int W);
 
static void _ov_splice(float **pcm,float **lappcm,
int n1, int n2,
int ch1, int ch2,
const float *w1, const float *w2){
int i,j;
const float *w=w1;
int n=n1;
 
if(n1>n2){
n=n2;
w=w2;
}
 
/* splice */
for(j=0;j<ch1 && j<ch2;j++){
float *s=lappcm[j];
float *d=pcm[j];
 
for(i=0;i<n;i++){
float wd=w[i]*w[i];
float ws=1.-wd;
d[i]=d[i]*wd + s[i]*ws;
}
}
/* window from zero */
for(;j<ch2;j++){
float *d=pcm[j];
for(i=0;i<n;i++){
float wd=w[i]*w[i];
d[i]=d[i]*wd;
}
}
 
}
 
/* make sure vf is INITSET */
static int _ov_initset(OggVorbis_File *vf){
while(1){
if(vf->ready_state==INITSET)break;
/* suck in another packet */
{
int ret=_fetch_and_process_packet(vf,NULL,1,0);
if(ret<0 && ret!=OV_HOLE)return(ret);
}
}
return 0;
}
 
/* make sure vf is INITSET and that we have a primed buffer; if
we're crosslapping at a stream section boundary, this also makes
sure we're sanity checking against the right stream information */
static int _ov_initprime(OggVorbis_File *vf){
vorbis_dsp_state *vd=&vf->vd;
while(1){
if(vf->ready_state==INITSET)
if(vorbis_synthesis_pcmout(vd,NULL))break;
 
/* suck in another packet */
{
int ret=_fetch_and_process_packet(vf,NULL,1,0);
if(ret<0 && ret!=OV_HOLE)return(ret);
}
}
return 0;
}
 
/* grab enough data for lapping from vf; this may be in the form of
unreturned, already-decoded pcm, remaining PCM we will need to
decode, or synthetic postextrapolation from last packets. */
static void _ov_getlap(OggVorbis_File *vf,vorbis_info *vi,vorbis_dsp_state *vd,
float **lappcm,int lapsize){
int lapcount=0,i;
float **pcm;
 
/* try first to decode the lapping data */
while(lapcount<lapsize){
int samples=vorbis_synthesis_pcmout(vd,&pcm);
if(samples){
if(samples>lapsize-lapcount)samples=lapsize-lapcount;
for(i=0;i<vi->channels;i++)
memcpy(lappcm[i]+lapcount,pcm[i],sizeof(**pcm)*samples);
lapcount+=samples;
vorbis_synthesis_read(vd,samples);
}else{
/* suck in another packet */
int ret=_fetch_and_process_packet(vf,NULL,1,0); /* do *not* span */
if(ret==OV_EOF)break;
}
}
if(lapcount<lapsize){
/* failed to get lapping data from normal decode; pry it from the
postextrapolation buffering, or the second half of the MDCT
from the last packet */
int samples=vorbis_synthesis_lapout(&vf->vd,&pcm);
if(samples==0){
for(i=0;i<vi->channels;i++)
memset(lappcm[i]+lapcount,0,sizeof(**pcm)*lapsize-lapcount);
lapcount=lapsize;
}else{
if(samples>lapsize-lapcount)samples=lapsize-lapcount;
for(i=0;i<vi->channels;i++)
memcpy(lappcm[i]+lapcount,pcm[i],sizeof(**pcm)*samples);
lapcount+=samples;
}
}
}
 
/* this sets up crosslapping of a sample by using trailing data from
sample 1 and lapping it into the windowing buffer of sample 2 */
int ov_crosslap(OggVorbis_File *vf1, OggVorbis_File *vf2){
vorbis_info *vi1,*vi2;
float **lappcm;
float **pcm;
const float *w1,*w2;
int n1,n2,i,ret,hs1,hs2;
 
if(vf1==vf2)return(0); /* degenerate case */
if(vf1->ready_state<OPENED)return(OV_EINVAL);
if(vf2->ready_state<OPENED)return(OV_EINVAL);
 
/* the relevant overlap buffers must be pre-checked and pre-primed
before looking at settings in the event that priming would cross
a bitstream boundary. So, do it now */
 
ret=_ov_initset(vf1);
if(ret)return(ret);
ret=_ov_initprime(vf2);
if(ret)return(ret);
 
vi1=ov_info(vf1,-1);
vi2=ov_info(vf2,-1);
hs1=ov_halfrate_p(vf1);
hs2=ov_halfrate_p(vf2);
 
lappcm=alloca(sizeof(*lappcm)*vi1->channels);
n1=vorbis_info_blocksize(vi1,0)>>(1+hs1);
n2=vorbis_info_blocksize(vi2,0)>>(1+hs2);
w1=vorbis_window(&vf1->vd,0);
w2=vorbis_window(&vf2->vd,0);
 
for(i=0;i<vi1->channels;i++)
lappcm[i]=alloca(sizeof(**lappcm)*n1);
 
_ov_getlap(vf1,vi1,&vf1->vd,lappcm,n1);
 
/* have a lapping buffer from vf1; now to splice it into the lapping
buffer of vf2 */
/* consolidate and expose the buffer. */
vorbis_synthesis_lapout(&vf2->vd,&pcm);
 
#if 0
_analysis_output_always("pcmL",0,pcm[0],n1*2,0,0,0);
_analysis_output_always("pcmR",0,pcm[1],n1*2,0,0,0);
#endif
 
/* splice */
_ov_splice(pcm,lappcm,n1,n2,vi1->channels,vi2->channels,w1,w2);
 
/* done */
return(0);
}
 
static int _ov_64_seek_lap(OggVorbis_File *vf,ogg_int64_t pos,
int (*localseek)(OggVorbis_File *,ogg_int64_t)){
vorbis_info *vi;
float **lappcm;
float **pcm;
const float *w1,*w2;
int n1,n2,ch1,ch2,hs;
int i,ret;
 
if(vf->ready_state<OPENED)return(OV_EINVAL);
ret=_ov_initset(vf);
if(ret)return(ret);
vi=ov_info(vf,-1);
hs=ov_halfrate_p(vf);
 
ch1=vi->channels;
n1=vorbis_info_blocksize(vi,0)>>(1+hs);
w1=vorbis_window(&vf->vd,0); /* window arrays from libvorbis are
persistent; even if the decode state
from this link gets dumped, this
window array continues to exist */
 
lappcm=alloca(sizeof(*lappcm)*ch1);
for(i=0;i<ch1;i++)
lappcm[i]=alloca(sizeof(**lappcm)*n1);
_ov_getlap(vf,vi,&vf->vd,lappcm,n1);
 
/* have lapping data; seek and prime the buffer */
ret=localseek(vf,pos);
if(ret)return ret;
ret=_ov_initprime(vf);
if(ret)return(ret);
 
/* Guard against cross-link changes; they're perfectly legal */
vi=ov_info(vf,-1);
ch2=vi->channels;
n2=vorbis_info_blocksize(vi,0)>>(1+hs);
w2=vorbis_window(&vf->vd,0);
 
/* consolidate and expose the buffer. */
vorbis_synthesis_lapout(&vf->vd,&pcm);
 
/* splice */
_ov_splice(pcm,lappcm,n1,n2,ch1,ch2,w1,w2);
 
/* done */
return(0);
}
 
int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos){
return _ov_64_seek_lap(vf,pos,ov_raw_seek);
}
 
int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos){
return _ov_64_seek_lap(vf,pos,ov_pcm_seek);
}
 
int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos){
return _ov_64_seek_lap(vf,pos,ov_pcm_seek_page);
}
 
static int _ov_d_seek_lap(OggVorbis_File *vf,double pos,
int (*localseek)(OggVorbis_File *,double)){
vorbis_info *vi;
float **lappcm;
float **pcm;
const float *w1,*w2;
int n1,n2,ch1,ch2,hs;
int i,ret;
 
if(vf->ready_state<OPENED)return(OV_EINVAL);
ret=_ov_initset(vf);
if(ret)return(ret);
vi=ov_info(vf,-1);
hs=ov_halfrate_p(vf);
 
ch1=vi->channels;
n1=vorbis_info_blocksize(vi,0)>>(1+hs);
w1=vorbis_window(&vf->vd,0); /* window arrays from libvorbis are
persistent; even if the decode state
from this link gets dumped, this
window array continues to exist */
 
lappcm=alloca(sizeof(*lappcm)*ch1);
for(i=0;i<ch1;i++)
lappcm[i]=alloca(sizeof(**lappcm)*n1);
_ov_getlap(vf,vi,&vf->vd,lappcm,n1);
 
/* have lapping data; seek and prime the buffer */
ret=localseek(vf,pos);
if(ret)return ret;
ret=_ov_initprime(vf);
if(ret)return(ret);
 
/* Guard against cross-link changes; they're perfectly legal */
vi=ov_info(vf,-1);
ch2=vi->channels;
n2=vorbis_info_blocksize(vi,0)>>(1+hs);
w2=vorbis_window(&vf->vd,0);
 
/* consolidate and expose the buffer. */
vorbis_synthesis_lapout(&vf->vd,&pcm);
 
/* splice */
_ov_splice(pcm,lappcm,n1,n2,ch1,ch2,w1,w2);
 
/* done */
return(0);
}
 
int ov_time_seek_lap(OggVorbis_File *vf,double pos){
return _ov_d_seek_lap(vf,pos,ov_time_seek);
}
 
int ov_time_seek_page_lap(OggVorbis_File *vf,double pos){
return _ov_d_seek_lap(vf,pos,ov_time_seek_page);
}
/contrib/sdk/sources/libvorbis-1.3.7/lib/window.c
0,0 → 1,2135
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: window functions
 
********************************************************************/
 
#include <stdlib.h>
#include <math.h>
#include "os.h"
#include "misc.h"
#include "window.h"
 
static const float vwin64[32] = {
0.0009460463F, 0.0085006468F, 0.0235352254F, 0.0458950567F,
0.0753351908F, 0.1115073077F, 0.1539457973F, 0.2020557475F,
0.2551056759F, 0.3122276645F, 0.3724270287F, 0.4346027792F,
0.4975789974F, 0.5601459521F, 0.6211085051F, 0.6793382689F,
0.7338252629F, 0.7837245849F, 0.8283939355F, 0.8674186656F,
0.9006222429F, 0.9280614787F, 0.9500073081F, 0.9669131782F,
0.9793740220F, 0.9880792941F, 0.9937636139F, 0.9971582668F,
0.9989462667F, 0.9997230082F, 0.9999638688F, 0.9999995525F,
};
 
static const float vwin128[64] = {
0.0002365472F, 0.0021280687F, 0.0059065254F, 0.0115626550F,
0.0190823442F, 0.0284463735F, 0.0396300935F, 0.0526030430F,
0.0673285281F, 0.0837631763F, 0.1018564887F, 0.1215504095F,
0.1427789367F, 0.1654677960F, 0.1895342001F, 0.2148867160F,
0.2414252576F, 0.2690412240F, 0.2976177952F, 0.3270303960F,
0.3571473350F, 0.3878306189F, 0.4189369387F, 0.4503188188F,
0.4818259135F, 0.5133064334F, 0.5446086751F, 0.5755826278F,
0.6060816248F, 0.6359640047F, 0.6650947483F, 0.6933470543F,
0.7206038179F, 0.7467589810F, 0.7717187213F, 0.7954024542F,
0.8177436264F, 0.8386902831F, 0.8582053981F, 0.8762669622F,
0.8928678298F, 0.9080153310F, 0.9217306608F, 0.9340480615F,
0.9450138200F, 0.9546851041F, 0.9631286621F, 0.9704194171F,
0.9766389810F, 0.9818741197F, 0.9862151938F, 0.9897546035F,
0.9925852598F, 0.9947991032F, 0.9964856900F, 0.9977308602F,
0.9986155015F, 0.9992144193F, 0.9995953200F, 0.9998179155F,
0.9999331503F, 0.9999825563F, 0.9999977357F, 0.9999999720F,
};
 
static const float vwin256[128] = {
0.0000591390F, 0.0005321979F, 0.0014780301F, 0.0028960636F,
0.0047854363F, 0.0071449926F, 0.0099732775F, 0.0132685298F,
0.0170286741F, 0.0212513119F, 0.0259337111F, 0.0310727950F,
0.0366651302F, 0.0427069140F, 0.0491939614F, 0.0561216907F,
0.0634851102F, 0.0712788035F, 0.0794969160F, 0.0881331402F,
0.0971807028F, 0.1066323515F, 0.1164803426F, 0.1267164297F,
0.1373318534F, 0.1483173323F, 0.1596630553F, 0.1713586755F,
0.1833933062F, 0.1957555184F, 0.2084333404F, 0.2214142599F,
0.2346852280F, 0.2482326664F, 0.2620424757F, 0.2761000481F,
0.2903902813F, 0.3048975959F, 0.3196059553F, 0.3344988887F,
0.3495595160F, 0.3647705766F, 0.3801144597F, 0.3955732382F,
0.4111287047F, 0.4267624093F, 0.4424557009F, 0.4581897696F,
0.4739456913F, 0.4897044744F, 0.5054471075F, 0.5211546088F,
0.5368080763F, 0.5523887395F, 0.5678780103F, 0.5832575361F,
0.5985092508F, 0.6136154277F, 0.6285587300F, 0.6433222619F,
0.6578896175F, 0.6722449294F, 0.6863729144F, 0.7002589187F,
0.7138889597F, 0.7272497662F, 0.7403288154F, 0.7531143679F,
0.7655954985F, 0.7777621249F, 0.7896050322F, 0.8011158947F,
0.8122872932F, 0.8231127294F, 0.8335866365F, 0.8437043850F,
0.8534622861F, 0.8628575905F, 0.8718884835F, 0.8805540765F,
0.8888543947F, 0.8967903616F, 0.9043637797F, 0.9115773078F,
0.9184344360F, 0.9249394562F, 0.9310974312F, 0.9369141608F,
0.9423961446F, 0.9475505439F, 0.9523851406F, 0.9569082947F,
0.9611289005F, 0.9650563408F, 0.9687004405F, 0.9720714191F,
0.9751798427F, 0.9780365753F, 0.9806527301F, 0.9830396204F,
0.9852087111F, 0.9871715701F, 0.9889398207F, 0.9905250941F,
0.9919389832F, 0.9931929973F, 0.9942985174F, 0.9952667537F,
0.9961087037F, 0.9968351119F, 0.9974564312F, 0.9979827858F,
0.9984239359F, 0.9987892441F, 0.9990876435F, 0.9993276081F,
0.9995171241F, 0.9996636648F, 0.9997741654F, 0.9998550016F,
0.9999119692F, 0.9999502656F, 0.9999744742F, 0.9999885497F,
0.9999958064F, 0.9999989077F, 0.9999998584F, 0.9999999983F,
};
 
static const float vwin512[256] = {
0.0000147849F, 0.0001330607F, 0.0003695946F, 0.0007243509F,
0.0011972759F, 0.0017882983F, 0.0024973285F, 0.0033242588F,
0.0042689632F, 0.0053312973F, 0.0065110982F, 0.0078081841F,
0.0092223540F, 0.0107533880F, 0.0124010466F, 0.0141650703F,
0.0160451800F, 0.0180410758F, 0.0201524373F, 0.0223789233F,
0.0247201710F, 0.0271757958F, 0.0297453914F, 0.0324285286F,
0.0352247556F, 0.0381335972F, 0.0411545545F, 0.0442871045F,
0.0475306997F, 0.0508847676F, 0.0543487103F, 0.0579219038F,
0.0616036982F, 0.0653934164F, 0.0692903546F, 0.0732937809F,
0.0774029356F, 0.0816170305F, 0.0859352485F, 0.0903567428F,
0.0948806375F, 0.0995060259F, 0.1042319712F, 0.1090575056F,
0.1139816300F, 0.1190033137F, 0.1241214941F, 0.1293350764F,
0.1346429333F, 0.1400439046F, 0.1455367974F, 0.1511203852F,
0.1567934083F, 0.1625545735F, 0.1684025537F, 0.1743359881F,
0.1803534820F, 0.1864536069F, 0.1926349000F, 0.1988958650F,
0.2052349715F, 0.2116506555F, 0.2181413191F, 0.2247053313F,
0.2313410275F, 0.2380467105F, 0.2448206500F, 0.2516610835F,
0.2585662164F, 0.2655342226F, 0.2725632448F, 0.2796513950F,
0.2867967551F, 0.2939973773F, 0.3012512852F, 0.3085564739F,
0.3159109111F, 0.3233125375F, 0.3307592680F, 0.3382489922F,
0.3457795756F, 0.3533488602F, 0.3609546657F, 0.3685947904F,
0.3762670121F, 0.3839690896F, 0.3916987634F, 0.3994537572F,
0.4072317788F, 0.4150305215F, 0.4228476653F, 0.4306808783F,
0.4385278181F, 0.4463861329F, 0.4542534630F, 0.4621274424F,
0.4700057001F, 0.4778858615F, 0.4857655502F, 0.4936423891F,
0.5015140023F, 0.5093780165F, 0.5172320626F, 0.5250737772F,
0.5329008043F, 0.5407107971F, 0.5485014192F, 0.5562703465F,
0.5640152688F, 0.5717338914F, 0.5794239366F, 0.5870831457F,
0.5947092801F, 0.6023001235F, 0.6098534829F, 0.6173671907F,
0.6248391059F, 0.6322671161F, 0.6396491384F, 0.6469831217F,
0.6542670475F, 0.6614989319F, 0.6686768267F, 0.6757988210F,
0.6828630426F, 0.6898676592F, 0.6968108799F, 0.7036909564F,
0.7105061843F, 0.7172549043F, 0.7239355032F, 0.7305464154F,
0.7370861235F, 0.7435531598F, 0.7499461068F, 0.7562635986F,
0.7625043214F, 0.7686670148F, 0.7747504721F, 0.7807535410F,
0.7866751247F, 0.7925141825F, 0.7982697296F, 0.8039408387F,
0.8095266395F, 0.8150263196F, 0.8204391248F, 0.8257643590F,
0.8310013848F, 0.8361496236F, 0.8412085555F, 0.8461777194F,
0.8510567129F, 0.8558451924F, 0.8605428730F, 0.8651495278F,
0.8696649882F, 0.8740891432F, 0.8784219392F, 0.8826633797F,
0.8868135244F, 0.8908724888F, 0.8948404441F, 0.8987176157F,
0.9025042831F, 0.9062007791F, 0.9098074886F, 0.9133248482F,
0.9167533451F, 0.9200935163F, 0.9233459472F, 0.9265112712F,
0.9295901680F, 0.9325833632F, 0.9354916263F, 0.9383157705F,
0.9410566504F, 0.9437151618F, 0.9462922398F, 0.9487888576F,
0.9512060252F, 0.9535447882F, 0.9558062262F, 0.9579914516F,
0.9601016078F, 0.9621378683F, 0.9641014348F, 0.9659935361F,
0.9678154261F, 0.9695683830F, 0.9712537071F, 0.9728727198F,
0.9744267618F, 0.9759171916F, 0.9773453842F, 0.9787127293F,
0.9800206298F, 0.9812705006F, 0.9824637665F, 0.9836018613F,
0.9846862258F, 0.9857183066F, 0.9866995544F, 0.9876314227F,
0.9885153662F, 0.9893528393F, 0.9901452948F, 0.9908941823F,
0.9916009470F, 0.9922670279F, 0.9928938570F, 0.9934828574F,
0.9940354423F, 0.9945530133F, 0.9950369595F, 0.9954886562F,
0.9959094633F, 0.9963007242F, 0.9966637649F, 0.9969998925F,
0.9973103939F, 0.9975965351F, 0.9978595598F, 0.9981006885F,
0.9983211172F, 0.9985220166F, 0.9987045311F, 0.9988697776F,
0.9990188449F, 0.9991527924F, 0.9992726499F, 0.9993794157F,
0.9994740570F, 0.9995575079F, 0.9996306699F, 0.9996944099F,
0.9997495605F, 0.9997969190F, 0.9998372465F, 0.9998712678F,
0.9998996704F, 0.9999231041F, 0.9999421807F, 0.9999574732F,
0.9999695157F, 0.9999788026F, 0.9999857885F, 0.9999908879F,
0.9999944746F, 0.9999968817F, 0.9999984010F, 0.9999992833F,
0.9999997377F, 0.9999999317F, 0.9999999911F, 0.9999999999F,
};
 
static const float vwin1024[512] = {
0.0000036962F, 0.0000332659F, 0.0000924041F, 0.0001811086F,
0.0002993761F, 0.0004472021F, 0.0006245811F, 0.0008315063F,
0.0010679699F, 0.0013339631F, 0.0016294757F, 0.0019544965F,
0.0023090133F, 0.0026930125F, 0.0031064797F, 0.0035493989F,
0.0040217533F, 0.0045235250F, 0.0050546946F, 0.0056152418F,
0.0062051451F, 0.0068243817F, 0.0074729278F, 0.0081507582F,
0.0088578466F, 0.0095941655F, 0.0103596863F, 0.0111543789F,
0.0119782122F, 0.0128311538F, 0.0137131701F, 0.0146242260F,
0.0155642855F, 0.0165333111F, 0.0175312640F, 0.0185581042F,
0.0196137903F, 0.0206982797F, 0.0218115284F, 0.0229534910F,
0.0241241208F, 0.0253233698F, 0.0265511886F, 0.0278075263F,
0.0290923308F, 0.0304055484F, 0.0317471241F, 0.0331170013F,
0.0345151222F, 0.0359414274F, 0.0373958560F, 0.0388783456F,
0.0403888325F, 0.0419272511F, 0.0434935347F, 0.0450876148F,
0.0467094213F, 0.0483588828F, 0.0500359261F, 0.0517404765F,
0.0534724575F, 0.0552317913F, 0.0570183983F, 0.0588321971F,
0.0606731048F, 0.0625410369F, 0.0644359070F, 0.0663576272F,
0.0683061077F, 0.0702812571F, 0.0722829821F, 0.0743111878F,
0.0763657775F, 0.0784466526F, 0.0805537129F, 0.0826868561F,
0.0848459782F, 0.0870309736F, 0.0892417345F, 0.0914781514F,
0.0937401128F, 0.0960275056F, 0.0983402145F, 0.1006781223F,
0.1030411101F, 0.1054290568F, 0.1078418397F, 0.1102793336F,
0.1127414119F, 0.1152279457F, 0.1177388042F, 0.1202738544F,
0.1228329618F, 0.1254159892F, 0.1280227980F, 0.1306532471F,
0.1333071937F, 0.1359844927F, 0.1386849970F, 0.1414085575F,
0.1441550230F, 0.1469242403F, 0.1497160539F, 0.1525303063F,
0.1553668381F, 0.1582254875F, 0.1611060909F, 0.1640084822F,
0.1669324936F, 0.1698779549F, 0.1728446939F, 0.1758325362F,
0.1788413055F, 0.1818708232F, 0.1849209084F, 0.1879913785F,
0.1910820485F, 0.1941927312F, 0.1973232376F, 0.2004733764F,
0.2036429541F, 0.2068317752F, 0.2100396421F, 0.2132663552F,
0.2165117125F, 0.2197755102F, 0.2230575422F, 0.2263576007F,
0.2296754753F, 0.2330109540F, 0.2363638225F, 0.2397338646F,
0.2431208619F, 0.2465245941F, 0.2499448389F, 0.2533813719F,
0.2568339669F, 0.2603023956F, 0.2637864277F, 0.2672858312F,
0.2708003718F, 0.2743298135F, 0.2778739186F, 0.2814324472F,
0.2850051576F, 0.2885918065F, 0.2921921485F, 0.2958059366F,
0.2994329219F, 0.3030728538F, 0.3067254799F, 0.3103905462F,
0.3140677969F, 0.3177569747F, 0.3214578205F, 0.3251700736F,
0.3288934718F, 0.3326277513F, 0.3363726468F, 0.3401278914F,
0.3438932168F, 0.3476683533F, 0.3514530297F, 0.3552469734F,
0.3590499106F, 0.3628615659F, 0.3666816630F, 0.3705099239F,
0.3743460698F, 0.3781898204F, 0.3820408945F, 0.3858990095F,
0.3897638820F, 0.3936352274F, 0.3975127601F, 0.4013961936F,
0.4052852405F, 0.4091796123F, 0.4130790198F, 0.4169831732F,
0.4208917815F, 0.4248045534F, 0.4287211965F, 0.4326414181F,
0.4365649248F, 0.4404914225F, 0.4444206167F, 0.4483522125F,
0.4522859146F, 0.4562214270F, 0.4601584538F, 0.4640966984F,
0.4680358644F, 0.4719756548F, 0.4759157726F, 0.4798559209F,
0.4837958024F, 0.4877351199F, 0.4916735765F, 0.4956108751F,
0.4995467188F, 0.5034808109F, 0.5074128550F, 0.5113425550F,
0.5152696149F, 0.5191937395F, 0.5231146336F, 0.5270320028F,
0.5309455530F, 0.5348549910F, 0.5387600239F, 0.5426603597F,
0.5465557070F, 0.5504457754F, 0.5543302752F, 0.5582089175F,
0.5620814145F, 0.5659474793F, 0.5698068262F, 0.5736591704F,
0.5775042283F, 0.5813417176F, 0.5851713571F, 0.5889928670F,
0.5928059689F, 0.5966103856F, 0.6004058415F, 0.6041920626F,
0.6079687761F, 0.6117357113F, 0.6154925986F, 0.6192391705F,
0.6229751612F, 0.6267003064F, 0.6304143441F, 0.6341170137F,
0.6378080569F, 0.6414872173F, 0.6451542405F, 0.6488088741F,
0.6524508681F, 0.6560799742F, 0.6596959469F, 0.6632985424F,
0.6668875197F, 0.6704626398F, 0.6740236662F, 0.6775703649F,
0.6811025043F, 0.6846198554F, 0.6881221916F, 0.6916092892F,
0.6950809269F, 0.6985368861F, 0.7019769510F, 0.7054009085F,
0.7088085484F, 0.7121996632F, 0.7155740484F, 0.7189315023F,
0.7222718263F, 0.7255948245F, 0.7289003043F, 0.7321880760F,
0.7354579530F, 0.7387097518F, 0.7419432921F, 0.7451583966F,
0.7483548915F, 0.7515326059F, 0.7546913723F, 0.7578310265F,
0.7609514077F, 0.7640523581F, 0.7671337237F, 0.7701953535F,
0.7732371001F, 0.7762588195F, 0.7792603711F, 0.7822416178F,
0.7852024259F, 0.7881426654F, 0.7910622097F, 0.7939609356F,
0.7968387237F, 0.7996954579F, 0.8025310261F, 0.8053453193F,
0.8081382324F, 0.8109096638F, 0.8136595156F, 0.8163876936F,
0.8190941071F, 0.8217786690F, 0.8244412960F, 0.8270819086F,
0.8297004305F, 0.8322967896F, 0.8348709171F, 0.8374227481F,
0.8399522213F, 0.8424592789F, 0.8449438672F, 0.8474059356F,
0.8498454378F, 0.8522623306F, 0.8546565748F, 0.8570281348F,
0.8593769787F, 0.8617030779F, 0.8640064080F, 0.8662869477F,
0.8685446796F, 0.8707795899F, 0.8729916682F, 0.8751809079F,
0.8773473059F, 0.8794908626F, 0.8816115819F, 0.8837094713F,
0.8857845418F, 0.8878368079F, 0.8898662874F, 0.8918730019F,
0.8938569760F, 0.8958182380F, 0.8977568194F, 0.8996727552F,
0.9015660837F, 0.9034368465F, 0.9052850885F, 0.9071108577F,
0.9089142057F, 0.9106951869F, 0.9124538591F, 0.9141902832F,
0.9159045233F, 0.9175966464F, 0.9192667228F, 0.9209148257F,
0.9225410313F, 0.9241454187F, 0.9257280701F, 0.9272890704F,
0.9288285075F, 0.9303464720F, 0.9318430576F, 0.9333183603F,
0.9347724792F, 0.9362055158F, 0.9376175745F, 0.9390087622F,
0.9403791881F, 0.9417289644F, 0.9430582055F, 0.9443670283F,
0.9456555521F, 0.9469238986F, 0.9481721917F, 0.9494005577F,
0.9506091252F, 0.9517980248F, 0.9529673894F, 0.9541173540F,
0.9552480557F, 0.9563596334F, 0.9574522282F, 0.9585259830F,
0.9595810428F, 0.9606175542F, 0.9616356656F, 0.9626355274F,
0.9636172915F, 0.9645811114F, 0.9655271425F, 0.9664555414F,
0.9673664664F, 0.9682600774F, 0.9691365355F, 0.9699960034F,
0.9708386448F, 0.9716646250F, 0.9724741103F, 0.9732672685F,
0.9740442683F, 0.9748052795F, 0.9755504729F, 0.9762800205F,
0.9769940950F, 0.9776928703F, 0.9783765210F, 0.9790452223F,
0.9796991504F, 0.9803384823F, 0.9809633954F, 0.9815740679F,
0.9821706784F, 0.9827534063F, 0.9833224312F, 0.9838779332F,
0.9844200928F, 0.9849490910F, 0.9854651087F, 0.9859683274F,
0.9864589286F, 0.9869370940F, 0.9874030054F, 0.9878568447F,
0.9882987937F, 0.9887290343F, 0.9891477481F, 0.9895551169F,
0.9899513220F, 0.9903365446F, 0.9907109658F, 0.9910747662F,
0.9914281260F, 0.9917712252F, 0.9921042433F, 0.9924273593F,
0.9927407516F, 0.9930445982F, 0.9933390763F, 0.9936243626F,
0.9939006331F, 0.9941680631F, 0.9944268269F, 0.9946770982F,
0.9949190498F, 0.9951528537F, 0.9953786808F, 0.9955967011F,
0.9958070836F, 0.9960099963F, 0.9962056061F, 0.9963940787F,
0.9965755786F, 0.9967502693F, 0.9969183129F, 0.9970798704F,
0.9972351013F, 0.9973841640F, 0.9975272151F, 0.9976644103F,
0.9977959036F, 0.9979218476F, 0.9980423932F, 0.9981576901F,
0.9982678862F, 0.9983731278F, 0.9984735596F, 0.9985693247F,
0.9986605645F, 0.9987474186F, 0.9988300248F, 0.9989085193F,
0.9989830364F, 0.9990537085F, 0.9991206662F, 0.9991840382F,
0.9992439513F, 0.9993005303F, 0.9993538982F, 0.9994041757F,
0.9994514817F, 0.9994959330F, 0.9995376444F, 0.9995767286F,
0.9996132960F, 0.9996474550F, 0.9996793121F, 0.9997089710F,
0.9997365339F, 0.9997621003F, 0.9997857677F, 0.9998076311F,
0.9998277836F, 0.9998463156F, 0.9998633155F, 0.9998788692F,
0.9998930603F, 0.9999059701F, 0.9999176774F, 0.9999282586F,
0.9999377880F, 0.9999463370F, 0.9999539749F, 0.9999607685F,
0.9999667820F, 0.9999720773F, 0.9999767136F, 0.9999807479F,
0.9999842344F, 0.9999872249F, 0.9999897688F, 0.9999919127F,
0.9999937009F, 0.9999951749F, 0.9999963738F, 0.9999973342F,
0.9999980900F, 0.9999986724F, 0.9999991103F, 0.9999994297F,
0.9999996543F, 0.9999998049F, 0.9999999000F, 0.9999999552F,
0.9999999836F, 0.9999999957F, 0.9999999994F, 1.0000000000F,
};
 
static const float vwin2048[1024] = {
0.0000009241F, 0.0000083165F, 0.0000231014F, 0.0000452785F,
0.0000748476F, 0.0001118085F, 0.0001561608F, 0.0002079041F,
0.0002670379F, 0.0003335617F, 0.0004074748F, 0.0004887765F,
0.0005774661F, 0.0006735427F, 0.0007770054F, 0.0008878533F,
0.0010060853F, 0.0011317002F, 0.0012646969F, 0.0014050742F,
0.0015528307F, 0.0017079650F, 0.0018704756F, 0.0020403610F,
0.0022176196F, 0.0024022497F, 0.0025942495F, 0.0027936173F,
0.0030003511F, 0.0032144490F, 0.0034359088F, 0.0036647286F,
0.0039009061F, 0.0041444391F, 0.0043953253F, 0.0046535621F,
0.0049191472F, 0.0051920781F, 0.0054723520F, 0.0057599664F,
0.0060549184F, 0.0063572052F, 0.0066668239F, 0.0069837715F,
0.0073080449F, 0.0076396410F, 0.0079785566F, 0.0083247884F,
0.0086783330F, 0.0090391871F, 0.0094073470F, 0.0097828092F,
0.0101655700F, 0.0105556258F, 0.0109529726F, 0.0113576065F,
0.0117695237F, 0.0121887200F, 0.0126151913F, 0.0130489335F,
0.0134899422F, 0.0139382130F, 0.0143937415F, 0.0148565233F,
0.0153265536F, 0.0158038279F, 0.0162883413F, 0.0167800889F,
0.0172790660F, 0.0177852675F, 0.0182986882F, 0.0188193231F,
0.0193471668F, 0.0198822141F, 0.0204244594F, 0.0209738974F,
0.0215305225F, 0.0220943289F, 0.0226653109F, 0.0232434627F,
0.0238287784F, 0.0244212519F, 0.0250208772F, 0.0256276481F,
0.0262415582F, 0.0268626014F, 0.0274907711F, 0.0281260608F,
0.0287684638F, 0.0294179736F, 0.0300745833F, 0.0307382859F,
0.0314090747F, 0.0320869424F, 0.0327718819F, 0.0334638860F,
0.0341629474F, 0.0348690586F, 0.0355822122F, 0.0363024004F,
0.0370296157F, 0.0377638502F, 0.0385050960F, 0.0392533451F,
0.0400085896F, 0.0407708211F, 0.0415400315F, 0.0423162123F,
0.0430993552F, 0.0438894515F, 0.0446864926F, 0.0454904698F,
0.0463013742F, 0.0471191969F, 0.0479439288F, 0.0487755607F,
0.0496140836F, 0.0504594879F, 0.0513117642F, 0.0521709031F,
0.0530368949F, 0.0539097297F, 0.0547893979F, 0.0556758894F,
0.0565691941F, 0.0574693019F, 0.0583762026F, 0.0592898858F,
0.0602103410F, 0.0611375576F, 0.0620715250F, 0.0630122324F,
0.0639596688F, 0.0649138234F, 0.0658746848F, 0.0668422421F,
0.0678164838F, 0.0687973985F, 0.0697849746F, 0.0707792005F,
0.0717800645F, 0.0727875547F, 0.0738016591F, 0.0748223656F,
0.0758496620F, 0.0768835359F, 0.0779239751F, 0.0789709668F,
0.0800244985F, 0.0810845574F, 0.0821511306F, 0.0832242052F,
0.0843037679F, 0.0853898056F, 0.0864823050F, 0.0875812525F,
0.0886866347F, 0.0897984378F, 0.0909166480F, 0.0920412513F,
0.0931722338F, 0.0943095813F, 0.0954532795F, 0.0966033140F,
0.0977596702F, 0.0989223336F, 0.1000912894F, 0.1012665227F,
0.1024480185F, 0.1036357616F, 0.1048297369F, 0.1060299290F,
0.1072363224F, 0.1084489014F, 0.1096676504F, 0.1108925534F,
0.1121235946F, 0.1133607577F, 0.1146040267F, 0.1158533850F,
0.1171088163F, 0.1183703040F, 0.1196378312F, 0.1209113812F,
0.1221909370F, 0.1234764815F, 0.1247679974F, 0.1260654674F,
0.1273688740F, 0.1286781995F, 0.1299934263F, 0.1313145365F,
0.1326415121F, 0.1339743349F, 0.1353129866F, 0.1366574490F,
0.1380077035F, 0.1393637315F, 0.1407255141F, 0.1420930325F,
0.1434662677F, 0.1448452004F, 0.1462298115F, 0.1476200814F,
0.1490159906F, 0.1504175195F, 0.1518246482F, 0.1532373569F,
0.1546556253F, 0.1560794333F, 0.1575087606F, 0.1589435866F,
0.1603838909F, 0.1618296526F, 0.1632808509F, 0.1647374648F,
0.1661994731F, 0.1676668546F, 0.1691395880F, 0.1706176516F,
0.1721010238F, 0.1735896829F, 0.1750836068F, 0.1765827736F,
0.1780871610F, 0.1795967468F, 0.1811115084F, 0.1826314234F,
0.1841564689F, 0.1856866221F, 0.1872218600F, 0.1887621595F,
0.1903074974F, 0.1918578503F, 0.1934131947F, 0.1949735068F,
0.1965387630F, 0.1981089393F, 0.1996840117F, 0.2012639560F,
0.2028487479F, 0.2044383630F, 0.2060327766F, 0.2076319642F,
0.2092359007F, 0.2108445614F, 0.2124579211F, 0.2140759545F,
0.2156986364F, 0.2173259411F, 0.2189578432F, 0.2205943168F,
0.2222353361F, 0.2238808751F, 0.2255309076F, 0.2271854073F,
0.2288443480F, 0.2305077030F, 0.2321754457F, 0.2338475493F,
0.2355239869F, 0.2372047315F, 0.2388897560F, 0.2405790329F,
0.2422725350F, 0.2439702347F, 0.2456721043F, 0.2473781159F,
0.2490882418F, 0.2508024539F, 0.2525207240F, 0.2542430237F,
0.2559693248F, 0.2576995986F, 0.2594338166F, 0.2611719498F,
0.2629139695F, 0.2646598466F, 0.2664095520F, 0.2681630564F,
0.2699203304F, 0.2716813445F, 0.2734460691F, 0.2752144744F,
0.2769865307F, 0.2787622079F, 0.2805414760F, 0.2823243047F,
0.2841106637F, 0.2859005227F, 0.2876938509F, 0.2894906179F,
0.2912907928F, 0.2930943447F, 0.2949012426F, 0.2967114554F,
0.2985249520F, 0.3003417009F, 0.3021616708F, 0.3039848301F,
0.3058111471F, 0.3076405901F, 0.3094731273F, 0.3113087266F,
0.3131473560F, 0.3149889833F, 0.3168335762F, 0.3186811024F,
0.3205315294F, 0.3223848245F, 0.3242409552F, 0.3260998886F,
0.3279615918F, 0.3298260319F, 0.3316931758F, 0.3335629903F,
0.3354354423F, 0.3373104982F, 0.3391881247F, 0.3410682882F,
0.3429509551F, 0.3448360917F, 0.3467236642F, 0.3486136387F,
0.3505059811F, 0.3524006575F, 0.3542976336F, 0.3561968753F,
0.3580983482F, 0.3600020179F, 0.3619078499F, 0.3638158096F,
0.3657258625F, 0.3676379737F, 0.3695521086F, 0.3714682321F,
0.3733863094F, 0.3753063055F, 0.3772281852F, 0.3791519134F,
0.3810774548F, 0.3830047742F, 0.3849338362F, 0.3868646053F,
0.3887970459F, 0.3907311227F, 0.3926667998F, 0.3946040417F,
0.3965428125F, 0.3984830765F, 0.4004247978F, 0.4023679403F,
0.4043124683F, 0.4062583455F, 0.4082055359F, 0.4101540034F,
0.4121037117F, 0.4140546246F, 0.4160067058F, 0.4179599190F,
0.4199142277F, 0.4218695956F, 0.4238259861F, 0.4257833627F,
0.4277416888F, 0.4297009279F, 0.4316610433F, 0.4336219983F,
0.4355837562F, 0.4375462803F, 0.4395095337F, 0.4414734797F,
0.4434380815F, 0.4454033021F, 0.4473691046F, 0.4493354521F,
0.4513023078F, 0.4532696345F, 0.4552373954F, 0.4572055533F,
0.4591740713F, 0.4611429123F, 0.4631120393F, 0.4650814151F,
0.4670510028F, 0.4690207650F, 0.4709906649F, 0.4729606651F,
0.4749307287F, 0.4769008185F, 0.4788708972F, 0.4808409279F,
0.4828108732F, 0.4847806962F, 0.4867503597F, 0.4887198264F,
0.4906890593F, 0.4926580213F, 0.4946266753F, 0.4965949840F,
0.4985629105F, 0.5005304176F, 0.5024974683F, 0.5044640255F,
0.5064300522F, 0.5083955114F, 0.5103603659F, 0.5123245790F,
0.5142881136F, 0.5162509328F, 0.5182129997F, 0.5201742774F,
0.5221347290F, 0.5240943178F, 0.5260530070F, 0.5280107598F,
0.5299675395F, 0.5319233095F, 0.5338780330F, 0.5358316736F,
0.5377841946F, 0.5397355596F, 0.5416857320F, 0.5436346755F,
0.5455823538F, 0.5475287304F, 0.5494737691F, 0.5514174337F,
0.5533596881F, 0.5553004962F, 0.5572398218F, 0.5591776291F,
0.5611138821F, 0.5630485449F, 0.5649815818F, 0.5669129570F,
0.5688426349F, 0.5707705799F, 0.5726967564F, 0.5746211290F,
0.5765436624F, 0.5784643212F, 0.5803830702F, 0.5822998743F,
0.5842146984F, 0.5861275076F, 0.5880382669F, 0.5899469416F,
0.5918534968F, 0.5937578981F, 0.5956601107F, 0.5975601004F,
0.5994578326F, 0.6013532732F, 0.6032463880F, 0.6051371429F,
0.6070255039F, 0.6089114372F, 0.6107949090F, 0.6126758856F,
0.6145543334F, 0.6164302191F, 0.6183035092F, 0.6201741706F,
0.6220421700F, 0.6239074745F, 0.6257700513F, 0.6276298674F,
0.6294868903F, 0.6313410873F, 0.6331924262F, 0.6350408745F,
0.6368864001F, 0.6387289710F, 0.6405685552F, 0.6424051209F,
0.6442386364F, 0.6460690702F, 0.6478963910F, 0.6497205673F,
0.6515415682F, 0.6533593625F, 0.6551739194F, 0.6569852082F,
0.6587931984F, 0.6605978593F, 0.6623991609F, 0.6641970728F,
0.6659915652F, 0.6677826081F, 0.6695701718F, 0.6713542268F,
0.6731347437F, 0.6749116932F, 0.6766850461F, 0.6784547736F,
0.6802208469F, 0.6819832374F, 0.6837419164F, 0.6854968559F,
0.6872480275F, 0.6889954034F, 0.6907389556F, 0.6924786566F,
0.6942144788F, 0.6959463950F, 0.6976743780F, 0.6993984008F,
0.7011184365F, 0.7028344587F, 0.7045464407F, 0.7062543564F,
0.7079581796F, 0.7096578844F, 0.7113534450F, 0.7130448359F,
0.7147320316F, 0.7164150070F, 0.7180937371F, 0.7197681970F,
0.7214383620F, 0.7231042077F, 0.7247657098F, 0.7264228443F,
0.7280755871F, 0.7297239147F, 0.7313678035F, 0.7330072301F,
0.7346421715F, 0.7362726046F, 0.7378985069F, 0.7395198556F,
0.7411366285F, 0.7427488034F, 0.7443563584F, 0.7459592717F,
0.7475575218F, 0.7491510873F, 0.7507399471F, 0.7523240803F,
0.7539034661F, 0.7554780839F, 0.7570479136F, 0.7586129349F,
0.7601731279F, 0.7617284730F, 0.7632789506F, 0.7648245416F,
0.7663652267F, 0.7679009872F, 0.7694318044F, 0.7709576599F,
0.7724785354F, 0.7739944130F, 0.7755052749F, 0.7770111035F,
0.7785118815F, 0.7800075916F, 0.7814982170F, 0.7829837410F,
0.7844641472F, 0.7859394191F, 0.7874095408F, 0.7888744965F,
0.7903342706F, 0.7917888476F, 0.7932382124F, 0.7946823501F,
0.7961212460F, 0.7975548855F, 0.7989832544F, 0.8004063386F,
0.8018241244F, 0.8032365981F, 0.8046437463F, 0.8060455560F,
0.8074420141F, 0.8088331080F, 0.8102188253F, 0.8115991536F,
0.8129740810F, 0.8143435957F, 0.8157076861F, 0.8170663409F,
0.8184195489F, 0.8197672994F, 0.8211095817F, 0.8224463853F,
0.8237777001F, 0.8251035161F, 0.8264238235F, 0.8277386129F,
0.8290478750F, 0.8303516008F, 0.8316497814F, 0.8329424083F,
0.8342294731F, 0.8355109677F, 0.8367868841F, 0.8380572148F,
0.8393219523F, 0.8405810893F, 0.8418346190F, 0.8430825345F,
0.8443248294F, 0.8455614974F, 0.8467925323F, 0.8480179285F,
0.8492376802F, 0.8504517822F, 0.8516602292F, 0.8528630164F,
0.8540601391F, 0.8552515928F, 0.8564373733F, 0.8576174766F,
0.8587918990F, 0.8599606368F, 0.8611236868F, 0.8622810460F,
0.8634327113F, 0.8645786802F, 0.8657189504F, 0.8668535195F,
0.8679823857F, 0.8691055472F, 0.8702230025F, 0.8713347503F,
0.8724407896F, 0.8735411194F, 0.8746357394F, 0.8757246489F,
0.8768078479F, 0.8778853364F, 0.8789571146F, 0.8800231832F,
0.8810835427F, 0.8821381942F, 0.8831871387F, 0.8842303777F,
0.8852679127F, 0.8862997456F, 0.8873258784F, 0.8883463132F,
0.8893610527F, 0.8903700994F, 0.8913734562F, 0.8923711263F,
0.8933631129F, 0.8943494196F, 0.8953300500F, 0.8963050083F,
0.8972742985F, 0.8982379249F, 0.8991958922F, 0.9001482052F,
0.9010948688F, 0.9020358883F, 0.9029712690F, 0.9039010165F,
0.9048251367F, 0.9057436357F, 0.9066565195F, 0.9075637946F,
0.9084654678F, 0.9093615456F, 0.9102520353F, 0.9111369440F,
0.9120162792F, 0.9128900484F, 0.9137582595F, 0.9146209204F,
0.9154780394F, 0.9163296248F, 0.9171756853F, 0.9180162296F,
0.9188512667F, 0.9196808057F, 0.9205048559F, 0.9213234270F,
0.9221365285F, 0.9229441704F, 0.9237463629F, 0.9245431160F,
0.9253344404F, 0.9261203465F, 0.9269008453F, 0.9276759477F,
0.9284456648F, 0.9292100080F, 0.9299689889F, 0.9307226190F,
0.9314709103F, 0.9322138747F, 0.9329515245F, 0.9336838721F,
0.9344109300F, 0.9351327108F, 0.9358492275F, 0.9365604931F,
0.9372665208F, 0.9379673239F, 0.9386629160F, 0.9393533107F,
0.9400385220F, 0.9407185637F, 0.9413934501F, 0.9420631954F,
0.9427278141F, 0.9433873208F, 0.9440417304F, 0.9446910576F,
0.9453353176F, 0.9459745255F, 0.9466086968F, 0.9472378469F,
0.9478619915F, 0.9484811463F, 0.9490953274F, 0.9497045506F,
0.9503088323F, 0.9509081888F, 0.9515026365F, 0.9520921921F,
0.9526768723F, 0.9532566940F, 0.9538316742F, 0.9544018300F,
0.9549671786F, 0.9555277375F, 0.9560835241F, 0.9566345562F,
0.9571808513F, 0.9577224275F, 0.9582593027F, 0.9587914949F,
0.9593190225F, 0.9598419038F, 0.9603601571F, 0.9608738012F,
0.9613828546F, 0.9618873361F, 0.9623872646F, 0.9628826591F,
0.9633735388F, 0.9638599227F, 0.9643418303F, 0.9648192808F,
0.9652922939F, 0.9657608890F, 0.9662250860F, 0.9666849046F,
0.9671403646F, 0.9675914861F, 0.9680382891F, 0.9684807937F,
0.9689190202F, 0.9693529890F, 0.9697827203F, 0.9702082347F,
0.9706295529F, 0.9710466953F, 0.9714596828F, 0.9718685362F,
0.9722732762F, 0.9726739240F, 0.9730705005F, 0.9734630267F,
0.9738515239F, 0.9742360134F, 0.9746165163F, 0.9749930540F,
0.9753656481F, 0.9757343198F, 0.9760990909F, 0.9764599829F,
0.9768170175F, 0.9771702164F, 0.9775196013F, 0.9778651941F,
0.9782070167F, 0.9785450909F, 0.9788794388F, 0.9792100824F,
0.9795370437F, 0.9798603449F, 0.9801800080F, 0.9804960554F,
0.9808085092F, 0.9811173916F, 0.9814227251F, 0.9817245318F,
0.9820228343F, 0.9823176549F, 0.9826090160F, 0.9828969402F,
0.9831814498F, 0.9834625674F, 0.9837403156F, 0.9840147169F,
0.9842857939F, 0.9845535692F, 0.9848180654F, 0.9850793052F,
0.9853373113F, 0.9855921062F, 0.9858437127F, 0.9860921535F,
0.9863374512F, 0.9865796287F, 0.9868187085F, 0.9870547136F,
0.9872876664F, 0.9875175899F, 0.9877445067F, 0.9879684396F,
0.9881894112F, 0.9884074444F, 0.9886225619F, 0.9888347863F,
0.9890441404F, 0.9892506468F, 0.9894543284F, 0.9896552077F,
0.9898533074F, 0.9900486502F, 0.9902412587F, 0.9904311555F,
0.9906183633F, 0.9908029045F, 0.9909848019F, 0.9911640779F,
0.9913407550F, 0.9915148557F, 0.9916864025F, 0.9918554179F,
0.9920219241F, 0.9921859437F, 0.9923474989F, 0.9925066120F,
0.9926633054F, 0.9928176012F, 0.9929695218F, 0.9931190891F,
0.9932663254F, 0.9934112527F, 0.9935538932F, 0.9936942686F,
0.9938324012F, 0.9939683126F, 0.9941020248F, 0.9942335597F,
0.9943629388F, 0.9944901841F, 0.9946153170F, 0.9947383593F,
0.9948593325F, 0.9949782579F, 0.9950951572F, 0.9952100516F,
0.9953229625F, 0.9954339111F, 0.9955429186F, 0.9956500062F,
0.9957551948F, 0.9958585056F, 0.9959599593F, 0.9960595769F,
0.9961573792F, 0.9962533869F, 0.9963476206F, 0.9964401009F,
0.9965308483F, 0.9966198833F, 0.9967072261F, 0.9967928971F,
0.9968769164F, 0.9969593041F, 0.9970400804F, 0.9971192651F,
0.9971968781F, 0.9972729391F, 0.9973474680F, 0.9974204842F,
0.9974920074F, 0.9975620569F, 0.9976306521F, 0.9976978122F,
0.9977635565F, 0.9978279039F, 0.9978908736F, 0.9979524842F,
0.9980127547F, 0.9980717037F, 0.9981293499F, 0.9981857116F,
0.9982408073F, 0.9982946554F, 0.9983472739F, 0.9983986810F,
0.9984488947F, 0.9984979328F, 0.9985458132F, 0.9985925534F,
0.9986381711F, 0.9986826838F, 0.9987261086F, 0.9987684630F,
0.9988097640F, 0.9988500286F, 0.9988892738F, 0.9989275163F,
0.9989647727F, 0.9990010597F, 0.9990363938F, 0.9990707911F,
0.9991042679F, 0.9991368404F, 0.9991685244F, 0.9991993358F,
0.9992292905F, 0.9992584038F, 0.9992866914F, 0.9993141686F,
0.9993408506F, 0.9993667526F, 0.9993918895F, 0.9994162761F,
0.9994399273F, 0.9994628576F, 0.9994850815F, 0.9995066133F,
0.9995274672F, 0.9995476574F, 0.9995671978F, 0.9995861021F,
0.9996043841F, 0.9996220573F, 0.9996391352F, 0.9996556310F,
0.9996715579F, 0.9996869288F, 0.9997017568F, 0.9997160543F,
0.9997298342F, 0.9997431088F, 0.9997558905F, 0.9997681914F,
0.9997800236F, 0.9997913990F, 0.9998023292F, 0.9998128261F,
0.9998229009F, 0.9998325650F, 0.9998418296F, 0.9998507058F,
0.9998592044F, 0.9998673362F, 0.9998751117F, 0.9998825415F,
0.9998896358F, 0.9998964047F, 0.9999028584F, 0.9999090066F,
0.9999148590F, 0.9999204253F, 0.9999257148F, 0.9999307368F,
0.9999355003F, 0.9999400144F, 0.9999442878F, 0.9999483293F,
0.9999521472F, 0.9999557499F, 0.9999591457F, 0.9999623426F,
0.9999653483F, 0.9999681708F, 0.9999708175F, 0.9999732959F,
0.9999756132F, 0.9999777765F, 0.9999797928F, 0.9999816688F,
0.9999834113F, 0.9999850266F, 0.9999865211F, 0.9999879009F,
0.9999891721F, 0.9999903405F, 0.9999914118F, 0.9999923914F,
0.9999932849F, 0.9999940972F, 0.9999948336F, 0.9999954989F,
0.9999960978F, 0.9999966349F, 0.9999971146F, 0.9999975411F,
0.9999979185F, 0.9999982507F, 0.9999985414F, 0.9999987944F,
0.9999990129F, 0.9999992003F, 0.9999993596F, 0.9999994939F,
0.9999996059F, 0.9999996981F, 0.9999997732F, 0.9999998333F,
0.9999998805F, 0.9999999170F, 0.9999999444F, 0.9999999643F,
0.9999999784F, 0.9999999878F, 0.9999999937F, 0.9999999972F,
0.9999999990F, 0.9999999997F, 1.0000000000F, 1.0000000000F,
};
 
static const float vwin4096[2048] = {
0.0000002310F, 0.0000020791F, 0.0000057754F, 0.0000113197F,
0.0000187121F, 0.0000279526F, 0.0000390412F, 0.0000519777F,
0.0000667623F, 0.0000833949F, 0.0001018753F, 0.0001222036F,
0.0001443798F, 0.0001684037F, 0.0001942754F, 0.0002219947F,
0.0002515616F, 0.0002829761F, 0.0003162380F, 0.0003513472F,
0.0003883038F, 0.0004271076F, 0.0004677584F, 0.0005102563F,
0.0005546011F, 0.0006007928F, 0.0006488311F, 0.0006987160F,
0.0007504474F, 0.0008040251F, 0.0008594490F, 0.0009167191F,
0.0009758351F, 0.0010367969F, 0.0010996044F, 0.0011642574F,
0.0012307558F, 0.0012990994F, 0.0013692880F, 0.0014413216F,
0.0015151998F, 0.0015909226F, 0.0016684898F, 0.0017479011F,
0.0018291565F, 0.0019122556F, 0.0019971983F, 0.0020839845F,
0.0021726138F, 0.0022630861F, 0.0023554012F, 0.0024495588F,
0.0025455588F, 0.0026434008F, 0.0027430847F, 0.0028446103F,
0.0029479772F, 0.0030531853F, 0.0031602342F, 0.0032691238F,
0.0033798538F, 0.0034924239F, 0.0036068338F, 0.0037230833F,
0.0038411721F, 0.0039610999F, 0.0040828664F, 0.0042064714F,
0.0043319145F, 0.0044591954F, 0.0045883139F, 0.0047192696F,
0.0048520622F, 0.0049866914F, 0.0051231569F, 0.0052614583F,
0.0054015953F, 0.0055435676F, 0.0056873748F, 0.0058330166F,
0.0059804926F, 0.0061298026F, 0.0062809460F, 0.0064339226F,
0.0065887320F, 0.0067453738F, 0.0069038476F, 0.0070641531F,
0.0072262899F, 0.0073902575F, 0.0075560556F, 0.0077236838F,
0.0078931417F, 0.0080644288F, 0.0082375447F, 0.0084124891F,
0.0085892615F, 0.0087678614F, 0.0089482885F, 0.0091305422F,
0.0093146223F, 0.0095005281F, 0.0096882592F, 0.0098778153F,
0.0100691958F, 0.0102624002F, 0.0104574281F, 0.0106542791F,
0.0108529525F, 0.0110534480F, 0.0112557651F, 0.0114599032F,
0.0116658618F, 0.0118736405F, 0.0120832387F, 0.0122946560F,
0.0125078917F, 0.0127229454F, 0.0129398166F, 0.0131585046F,
0.0133790090F, 0.0136013292F, 0.0138254647F, 0.0140514149F,
0.0142791792F, 0.0145087572F, 0.0147401481F, 0.0149733515F,
0.0152083667F, 0.0154451932F, 0.0156838304F, 0.0159242777F,
0.0161665345F, 0.0164106001F, 0.0166564741F, 0.0169041557F,
0.0171536443F, 0.0174049393F, 0.0176580401F, 0.0179129461F,
0.0181696565F, 0.0184281708F, 0.0186884883F, 0.0189506084F,
0.0192145303F, 0.0194802535F, 0.0197477772F, 0.0200171008F,
0.0202882236F, 0.0205611449F, 0.0208358639F, 0.0211123801F,
0.0213906927F, 0.0216708011F, 0.0219527043F, 0.0222364019F,
0.0225218930F, 0.0228091769F, 0.0230982529F, 0.0233891203F,
0.0236817782F, 0.0239762259F, 0.0242724628F, 0.0245704880F,
0.0248703007F, 0.0251719002F, 0.0254752858F, 0.0257804565F,
0.0260874117F, 0.0263961506F, 0.0267066722F, 0.0270189760F,
0.0273330609F, 0.0276489263F, 0.0279665712F, 0.0282859949F,
0.0286071966F, 0.0289301753F, 0.0292549303F, 0.0295814607F,
0.0299097656F, 0.0302398442F, 0.0305716957F, 0.0309053191F,
0.0312407135F, 0.0315778782F, 0.0319168122F, 0.0322575145F,
0.0325999844F, 0.0329442209F, 0.0332902231F, 0.0336379900F,
0.0339875208F, 0.0343388146F, 0.0346918703F, 0.0350466871F,
0.0354032640F, 0.0357616000F, 0.0361216943F, 0.0364835458F,
0.0368471535F, 0.0372125166F, 0.0375796339F, 0.0379485046F,
0.0383191276F, 0.0386915020F, 0.0390656267F, 0.0394415008F,
0.0398191231F, 0.0401984927F, 0.0405796086F, 0.0409624698F,
0.0413470751F, 0.0417334235F, 0.0421215141F, 0.0425113457F,
0.0429029172F, 0.0432962277F, 0.0436912760F, 0.0440880610F,
0.0444865817F, 0.0448868370F, 0.0452888257F, 0.0456925468F,
0.0460979992F, 0.0465051816F, 0.0469140931F, 0.0473247325F,
0.0477370986F, 0.0481511902F, 0.0485670064F, 0.0489845458F,
0.0494038074F, 0.0498247899F, 0.0502474922F, 0.0506719131F,
0.0510980514F, 0.0515259060F, 0.0519554756F, 0.0523867590F,
0.0528197550F, 0.0532544624F, 0.0536908800F, 0.0541290066F,
0.0545688408F, 0.0550103815F, 0.0554536274F, 0.0558985772F,
0.0563452297F, 0.0567935837F, 0.0572436377F, 0.0576953907F,
0.0581488412F, 0.0586039880F, 0.0590608297F, 0.0595193651F,
0.0599795929F, 0.0604415117F, 0.0609051202F, 0.0613704170F,
0.0618374009F, 0.0623060704F, 0.0627764243F, 0.0632484611F,
0.0637221795F, 0.0641975781F, 0.0646746555F, 0.0651534104F,
0.0656338413F, 0.0661159469F, 0.0665997257F, 0.0670851763F,
0.0675722973F, 0.0680610873F, 0.0685515448F, 0.0690436684F,
0.0695374567F, 0.0700329081F, 0.0705300213F, 0.0710287947F,
0.0715292269F, 0.0720313163F, 0.0725350616F, 0.0730404612F,
0.0735475136F, 0.0740562172F, 0.0745665707F, 0.0750785723F,
0.0755922207F, 0.0761075143F, 0.0766244515F, 0.0771430307F,
0.0776632505F, 0.0781851092F, 0.0787086052F, 0.0792337371F,
0.0797605032F, 0.0802889018F, 0.0808189315F, 0.0813505905F,
0.0818838773F, 0.0824187903F, 0.0829553277F, 0.0834934881F,
0.0840332697F, 0.0845746708F, 0.0851176899F, 0.0856623252F,
0.0862085751F, 0.0867564379F, 0.0873059119F, 0.0878569954F,
0.0884096867F, 0.0889639840F, 0.0895198858F, 0.0900773902F,
0.0906364955F, 0.0911972000F, 0.0917595019F, 0.0923233995F,
0.0928888909F, 0.0934559745F, 0.0940246485F, 0.0945949110F,
0.0951667604F, 0.0957401946F, 0.0963152121F, 0.0968918109F,
0.0974699893F, 0.0980497454F, 0.0986310773F, 0.0992139832F,
0.0997984614F, 0.1003845098F, 0.1009721267F, 0.1015613101F,
0.1021520582F, 0.1027443692F, 0.1033382410F, 0.1039336718F,
0.1045306597F, 0.1051292027F, 0.1057292990F, 0.1063309466F,
0.1069341435F, 0.1075388878F, 0.1081451776F, 0.1087530108F,
0.1093623856F, 0.1099732998F, 0.1105857516F, 0.1111997389F,
0.1118152597F, 0.1124323121F, 0.1130508939F, 0.1136710032F,
0.1142926379F, 0.1149157960F, 0.1155404755F, 0.1161666742F,
0.1167943901F, 0.1174236211F, 0.1180543652F, 0.1186866202F,
0.1193203841F, 0.1199556548F, 0.1205924300F, 0.1212307078F,
0.1218704860F, 0.1225117624F, 0.1231545349F, 0.1237988013F,
0.1244445596F, 0.1250918074F, 0.1257405427F, 0.1263907632F,
0.1270424667F, 0.1276956512F, 0.1283503142F, 0.1290064537F,
0.1296640674F, 0.1303231530F, 0.1309837084F, 0.1316457312F,
0.1323092193F, 0.1329741703F, 0.1336405820F, 0.1343084520F,
0.1349777782F, 0.1356485582F, 0.1363207897F, 0.1369944704F,
0.1376695979F, 0.1383461700F, 0.1390241842F, 0.1397036384F,
0.1403845300F, 0.1410668567F, 0.1417506162F, 0.1424358061F,
0.1431224240F, 0.1438104674F, 0.1444999341F, 0.1451908216F,
0.1458831274F, 0.1465768492F, 0.1472719844F, 0.1479685308F,
0.1486664857F, 0.1493658468F, 0.1500666115F, 0.1507687775F,
0.1514723422F, 0.1521773031F, 0.1528836577F, 0.1535914035F,
0.1543005380F, 0.1550110587F, 0.1557229631F, 0.1564362485F,
0.1571509124F, 0.1578669524F, 0.1585843657F, 0.1593031499F,
0.1600233024F, 0.1607448205F, 0.1614677017F, 0.1621919433F,
0.1629175428F, 0.1636444975F, 0.1643728047F, 0.1651024619F,
0.1658334665F, 0.1665658156F, 0.1672995067F, 0.1680345371F,
0.1687709041F, 0.1695086050F, 0.1702476372F, 0.1709879978F,
0.1717296843F, 0.1724726938F, 0.1732170237F, 0.1739626711F,
0.1747096335F, 0.1754579079F, 0.1762074916F, 0.1769583819F,
0.1777105760F, 0.1784640710F, 0.1792188642F, 0.1799749529F,
0.1807323340F, 0.1814910049F, 0.1822509628F, 0.1830122046F,
0.1837747277F, 0.1845385292F, 0.1853036062F, 0.1860699558F,
0.1868375751F, 0.1876064613F, 0.1883766114F, 0.1891480226F,
0.1899206919F, 0.1906946164F, 0.1914697932F, 0.1922462194F,
0.1930238919F, 0.1938028079F, 0.1945829643F, 0.1953643583F,
0.1961469868F, 0.1969308468F, 0.1977159353F, 0.1985022494F,
0.1992897859F, 0.2000785420F, 0.2008685145F, 0.2016597005F,
0.2024520968F, 0.2032457005F, 0.2040405084F, 0.2048365175F,
0.2056337247F, 0.2064321269F, 0.2072317211F, 0.2080325041F,
0.2088344727F, 0.2096376240F, 0.2104419547F, 0.2112474618F,
0.2120541420F, 0.2128619923F, 0.2136710094F, 0.2144811902F,
0.2152925315F, 0.2161050301F, 0.2169186829F, 0.2177334866F,
0.2185494381F, 0.2193665340F, 0.2201847712F, 0.2210041465F,
0.2218246565F, 0.2226462981F, 0.2234690680F, 0.2242929629F,
0.2251179796F, 0.2259441147F, 0.2267713650F, 0.2275997272F,
0.2284291979F, 0.2292597739F, 0.2300914518F, 0.2309242283F,
0.2317581001F, 0.2325930638F, 0.2334291160F, 0.2342662534F,
0.2351044727F, 0.2359437703F, 0.2367841431F, 0.2376255875F,
0.2384681001F, 0.2393116776F, 0.2401563165F, 0.2410020134F,
0.2418487649F, 0.2426965675F, 0.2435454178F, 0.2443953122F,
0.2452462474F, 0.2460982199F, 0.2469512262F, 0.2478052628F,
0.2486603262F, 0.2495164129F, 0.2503735194F, 0.2512316421F,
0.2520907776F, 0.2529509222F, 0.2538120726F, 0.2546742250F,
0.2555373760F, 0.2564015219F, 0.2572666593F, 0.2581327845F,
0.2589998939F, 0.2598679840F, 0.2607370510F, 0.2616070916F,
0.2624781019F, 0.2633500783F, 0.2642230173F, 0.2650969152F,
0.2659717684F, 0.2668475731F, 0.2677243257F, 0.2686020226F,
0.2694806601F, 0.2703602344F, 0.2712407419F, 0.2721221789F,
0.2730045417F, 0.2738878265F, 0.2747720297F, 0.2756571474F,
0.2765431760F, 0.2774301117F, 0.2783179508F, 0.2792066895F,
0.2800963240F, 0.2809868505F, 0.2818782654F, 0.2827705647F,
0.2836637447F, 0.2845578016F, 0.2854527315F, 0.2863485307F,
0.2872451953F, 0.2881427215F, 0.2890411055F, 0.2899403433F,
0.2908404312F, 0.2917413654F, 0.2926431418F, 0.2935457567F,
0.2944492061F, 0.2953534863F, 0.2962585932F, 0.2971645230F,
0.2980712717F, 0.2989788356F, 0.2998872105F, 0.3007963927F,
0.3017063781F, 0.3026171629F, 0.3035287430F, 0.3044411145F,
0.3053542736F, 0.3062682161F, 0.3071829381F, 0.3080984356F,
0.3090147047F, 0.3099317413F, 0.3108495414F, 0.3117681011F,
0.3126874163F, 0.3136074830F, 0.3145282972F, 0.3154498548F,
0.3163721517F, 0.3172951841F, 0.3182189477F, 0.3191434385F,
0.3200686525F, 0.3209945856F, 0.3219212336F, 0.3228485927F,
0.3237766585F, 0.3247054271F, 0.3256348943F, 0.3265650560F,
0.3274959081F, 0.3284274465F, 0.3293596671F, 0.3302925657F,
0.3312261382F, 0.3321603804F, 0.3330952882F, 0.3340308574F,
0.3349670838F, 0.3359039634F, 0.3368414919F, 0.3377796651F,
0.3387184789F, 0.3396579290F, 0.3405980113F, 0.3415387216F,
0.3424800556F, 0.3434220091F, 0.3443645779F, 0.3453077578F,
0.3462515446F, 0.3471959340F, 0.3481409217F, 0.3490865036F,
0.3500326754F, 0.3509794328F, 0.3519267715F, 0.3528746873F,
0.3538231759F, 0.3547722330F, 0.3557218544F, 0.3566720357F,
0.3576227727F, 0.3585740610F, 0.3595258964F, 0.3604782745F,
0.3614311910F, 0.3623846417F, 0.3633386221F, 0.3642931280F,
0.3652481549F, 0.3662036987F, 0.3671597548F, 0.3681163191F,
0.3690733870F, 0.3700309544F, 0.3709890167F, 0.3719475696F,
0.3729066089F, 0.3738661299F, 0.3748261285F, 0.3757866002F,
0.3767475406F, 0.3777089453F, 0.3786708100F, 0.3796331302F,
0.3805959014F, 0.3815591194F, 0.3825227796F, 0.3834868777F,
0.3844514093F, 0.3854163698F, 0.3863817549F, 0.3873475601F,
0.3883137810F, 0.3892804131F, 0.3902474521F, 0.3912148933F,
0.3921827325F, 0.3931509650F, 0.3941195865F, 0.3950885925F,
0.3960579785F, 0.3970277400F, 0.3979978725F, 0.3989683716F,
0.3999392328F, 0.4009104516F, 0.4018820234F, 0.4028539438F,
0.4038262084F, 0.4047988125F, 0.4057717516F, 0.4067450214F,
0.4077186172F, 0.4086925345F, 0.4096667688F, 0.4106413155F,
0.4116161703F, 0.4125913284F, 0.4135667854F, 0.4145425368F,
0.4155185780F, 0.4164949044F, 0.4174715116F, 0.4184483949F,
0.4194255498F, 0.4204029718F, 0.4213806563F, 0.4223585987F,
0.4233367946F, 0.4243152392F, 0.4252939281F, 0.4262728566F,
0.4272520202F, 0.4282314144F, 0.4292110345F, 0.4301908760F,
0.4311709343F, 0.4321512047F, 0.4331316828F, 0.4341123639F,
0.4350932435F, 0.4360743168F, 0.4370555794F, 0.4380370267F,
0.4390186540F, 0.4400004567F, 0.4409824303F, 0.4419645701F,
0.4429468716F, 0.4439293300F, 0.4449119409F, 0.4458946996F,
0.4468776014F, 0.4478606418F, 0.4488438162F, 0.4498271199F,
0.4508105483F, 0.4517940967F, 0.4527777607F, 0.4537615355F,
0.4547454165F, 0.4557293991F, 0.4567134786F, 0.4576976505F,
0.4586819101F, 0.4596662527F, 0.4606506738F, 0.4616351687F,
0.4626197328F, 0.4636043614F, 0.4645890499F, 0.4655737936F,
0.4665585880F, 0.4675434284F, 0.4685283101F, 0.4695132286F,
0.4704981791F, 0.4714831570F, 0.4724681577F, 0.4734531766F,
0.4744382089F, 0.4754232501F, 0.4764082956F, 0.4773933406F,
0.4783783806F, 0.4793634108F, 0.4803484267F, 0.4813334237F,
0.4823183969F, 0.4833033419F, 0.4842882540F, 0.4852731285F,
0.4862579608F, 0.4872427462F, 0.4882274802F, 0.4892121580F,
0.4901967751F, 0.4911813267F, 0.4921658083F, 0.4931502151F,
0.4941345427F, 0.4951187863F, 0.4961029412F, 0.4970870029F,
0.4980709667F, 0.4990548280F, 0.5000385822F, 0.5010222245F,
0.5020057505F, 0.5029891553F, 0.5039724345F, 0.5049555834F,
0.5059385973F, 0.5069214716F, 0.5079042018F, 0.5088867831F,
0.5098692110F, 0.5108514808F, 0.5118335879F, 0.5128155277F,
0.5137972956F, 0.5147788869F, 0.5157602971F, 0.5167415215F,
0.5177225555F, 0.5187033945F, 0.5196840339F, 0.5206644692F,
0.5216446956F, 0.5226247086F, 0.5236045035F, 0.5245840759F,
0.5255634211F, 0.5265425344F, 0.5275214114F, 0.5285000474F,
0.5294784378F, 0.5304565781F, 0.5314344637F, 0.5324120899F,
0.5333894522F, 0.5343665461F, 0.5353433670F, 0.5363199102F,
0.5372961713F, 0.5382721457F, 0.5392478287F, 0.5402232159F,
0.5411983027F, 0.5421730845F, 0.5431475569F, 0.5441217151F,
0.5450955548F, 0.5460690714F, 0.5470422602F, 0.5480151169F,
0.5489876368F, 0.5499598155F, 0.5509316484F, 0.5519031310F,
0.5528742587F, 0.5538450271F, 0.5548154317F, 0.5557854680F,
0.5567551314F, 0.5577244174F, 0.5586933216F, 0.5596618395F,
0.5606299665F, 0.5615976983F, 0.5625650302F, 0.5635319580F,
0.5644984770F, 0.5654645828F, 0.5664302709F, 0.5673955370F,
0.5683603765F, 0.5693247850F, 0.5702887580F, 0.5712522912F,
0.5722153800F, 0.5731780200F, 0.5741402069F, 0.5751019362F,
0.5760632034F, 0.5770240042F, 0.5779843341F, 0.5789441889F,
0.5799035639F, 0.5808624549F, 0.5818208575F, 0.5827787673F,
0.5837361800F, 0.5846930910F, 0.5856494961F, 0.5866053910F,
0.5875607712F, 0.5885156324F, 0.5894699703F, 0.5904237804F,
0.5913770586F, 0.5923298004F, 0.5932820016F, 0.5942336578F,
0.5951847646F, 0.5961353179F, 0.5970853132F, 0.5980347464F,
0.5989836131F, 0.5999319090F, 0.6008796298F, 0.6018267713F,
0.6027733292F, 0.6037192993F, 0.6046646773F, 0.6056094589F,
0.6065536400F, 0.6074972162F, 0.6084401833F, 0.6093825372F,
0.6103242736F, 0.6112653884F, 0.6122058772F, 0.6131457359F,
0.6140849604F, 0.6150235464F, 0.6159614897F, 0.6168987862F,
0.6178354318F, 0.6187714223F, 0.6197067535F, 0.6206414213F,
0.6215754215F, 0.6225087501F, 0.6234414028F, 0.6243733757F,
0.6253046646F, 0.6262352654F, 0.6271651739F, 0.6280943862F,
0.6290228982F, 0.6299507057F, 0.6308778048F, 0.6318041913F,
0.6327298612F, 0.6336548105F, 0.6345790352F, 0.6355025312F,
0.6364252945F, 0.6373473211F, 0.6382686070F, 0.6391891483F,
0.6401089409F, 0.6410279808F, 0.6419462642F, 0.6428637869F,
0.6437805452F, 0.6446965350F, 0.6456117524F, 0.6465261935F,
0.6474398544F, 0.6483527311F, 0.6492648197F, 0.6501761165F,
0.6510866174F, 0.6519963186F, 0.6529052162F, 0.6538133064F,
0.6547205854F, 0.6556270492F, 0.6565326941F, 0.6574375162F,
0.6583415117F, 0.6592446769F, 0.6601470079F, 0.6610485009F,
0.6619491521F, 0.6628489578F, 0.6637479143F, 0.6646460177F,
0.6655432643F, 0.6664396505F, 0.6673351724F, 0.6682298264F,
0.6691236087F, 0.6700165157F, 0.6709085436F, 0.6717996889F,
0.6726899478F, 0.6735793167F, 0.6744677918F, 0.6753553697F,
0.6762420466F, 0.6771278190F, 0.6780126832F, 0.6788966357F,
0.6797796728F, 0.6806617909F, 0.6815429866F, 0.6824232562F,
0.6833025961F, 0.6841810030F, 0.6850584731F, 0.6859350031F,
0.6868105894F, 0.6876852284F, 0.6885589168F, 0.6894316510F,
0.6903034275F, 0.6911742430F, 0.6920440939F, 0.6929129769F,
0.6937808884F, 0.6946478251F, 0.6955137837F, 0.6963787606F,
0.6972427525F, 0.6981057560F, 0.6989677678F, 0.6998287845F,
0.7006888028F, 0.7015478194F, 0.7024058309F, 0.7032628340F,
0.7041188254F, 0.7049738019F, 0.7058277601F, 0.7066806969F,
0.7075326089F, 0.7083834929F, 0.7092333457F, 0.7100821640F,
0.7109299447F, 0.7117766846F, 0.7126223804F, 0.7134670291F,
0.7143106273F, 0.7151531721F, 0.7159946602F, 0.7168350885F,
0.7176744539F, 0.7185127534F, 0.7193499837F, 0.7201861418F,
0.7210212247F, 0.7218552293F, 0.7226881526F, 0.7235199914F,
0.7243507428F, 0.7251804039F, 0.7260089715F, 0.7268364426F,
0.7276628144F, 0.7284880839F, 0.7293122481F, 0.7301353040F,
0.7309572487F, 0.7317780794F, 0.7325977930F, 0.7334163868F,
0.7342338579F, 0.7350502033F, 0.7358654202F, 0.7366795059F,
0.7374924573F, 0.7383042718F, 0.7391149465F, 0.7399244787F,
0.7407328655F, 0.7415401041F, 0.7423461920F, 0.7431511261F,
0.7439549040F, 0.7447575227F, 0.7455589797F, 0.7463592723F,
0.7471583976F, 0.7479563532F, 0.7487531363F, 0.7495487443F,
0.7503431745F, 0.7511364244F, 0.7519284913F, 0.7527193726F,
0.7535090658F, 0.7542975683F, 0.7550848776F, 0.7558709910F,
0.7566559062F, 0.7574396205F, 0.7582221314F, 0.7590034366F,
0.7597835334F, 0.7605624194F, 0.7613400923F, 0.7621165495F,
0.7628917886F, 0.7636658072F, 0.7644386030F, 0.7652101735F,
0.7659805164F, 0.7667496292F, 0.7675175098F, 0.7682841556F,
0.7690495645F, 0.7698137341F, 0.7705766622F, 0.7713383463F,
0.7720987844F, 0.7728579741F, 0.7736159132F, 0.7743725994F,
0.7751280306F, 0.7758822046F, 0.7766351192F, 0.7773867722F,
0.7781371614F, 0.7788862848F, 0.7796341401F, 0.7803807253F,
0.7811260383F, 0.7818700769F, 0.7826128392F, 0.7833543230F,
0.7840945263F, 0.7848334471F, 0.7855710833F, 0.7863074330F,
0.7870424941F, 0.7877762647F, 0.7885087428F, 0.7892399264F,
0.7899698137F, 0.7906984026F, 0.7914256914F, 0.7921516780F,
0.7928763607F, 0.7935997375F, 0.7943218065F, 0.7950425661F,
0.7957620142F, 0.7964801492F, 0.7971969692F, 0.7979124724F,
0.7986266570F, 0.7993395214F, 0.8000510638F, 0.8007612823F,
0.8014701754F, 0.8021777413F, 0.8028839784F, 0.8035888849F,
0.8042924592F, 0.8049946997F, 0.8056956048F, 0.8063951727F,
0.8070934020F, 0.8077902910F, 0.8084858381F, 0.8091800419F,
0.8098729007F, 0.8105644130F, 0.8112545774F, 0.8119433922F,
0.8126308561F, 0.8133169676F, 0.8140017251F, 0.8146851272F,
0.8153671726F, 0.8160478598F, 0.8167271874F, 0.8174051539F,
0.8180817582F, 0.8187569986F, 0.8194308741F, 0.8201033831F,
0.8207745244F, 0.8214442966F, 0.8221126986F, 0.8227797290F,
0.8234453865F, 0.8241096700F, 0.8247725781F, 0.8254341097F,
0.8260942636F, 0.8267530385F, 0.8274104334F, 0.8280664470F,
0.8287210782F, 0.8293743259F, 0.8300261889F, 0.8306766662F,
0.8313257566F, 0.8319734591F, 0.8326197727F, 0.8332646963F,
0.8339082288F, 0.8345503692F, 0.8351911167F, 0.8358304700F,
0.8364684284F, 0.8371049907F, 0.8377401562F, 0.8383739238F,
0.8390062927F, 0.8396372618F, 0.8402668305F, 0.8408949977F,
0.8415217626F, 0.8421471245F, 0.8427710823F, 0.8433936354F,
0.8440147830F, 0.8446345242F, 0.8452528582F, 0.8458697844F,
0.8464853020F, 0.8470994102F, 0.8477121084F, 0.8483233958F,
0.8489332718F, 0.8495417356F, 0.8501487866F, 0.8507544243F,
0.8513586479F, 0.8519614568F, 0.8525628505F, 0.8531628283F,
0.8537613897F, 0.8543585341F, 0.8549542611F, 0.8555485699F,
0.8561414603F, 0.8567329315F, 0.8573229832F, 0.8579116149F,
0.8584988262F, 0.8590846165F, 0.8596689855F, 0.8602519327F,
0.8608334577F, 0.8614135603F, 0.8619922399F, 0.8625694962F,
0.8631453289F, 0.8637197377F, 0.8642927222F, 0.8648642821F,
0.8654344172F, 0.8660031272F, 0.8665704118F, 0.8671362708F,
0.8677007039F, 0.8682637109F, 0.8688252917F, 0.8693854460F,
0.8699441737F, 0.8705014745F, 0.8710573485F, 0.8716117953F,
0.8721648150F, 0.8727164073F, 0.8732665723F, 0.8738153098F,
0.8743626197F, 0.8749085021F, 0.8754529569F, 0.8759959840F,
0.8765375835F, 0.8770777553F, 0.8776164996F, 0.8781538162F,
0.8786897054F, 0.8792241670F, 0.8797572013F, 0.8802888082F,
0.8808189880F, 0.8813477407F, 0.8818750664F, 0.8824009653F,
0.8829254375F, 0.8834484833F, 0.8839701028F, 0.8844902961F,
0.8850090636F, 0.8855264054F, 0.8860423218F, 0.8865568131F,
0.8870698794F, 0.8875815212F, 0.8880917386F, 0.8886005319F,
0.8891079016F, 0.8896138479F, 0.8901183712F, 0.8906214719F,
0.8911231503F, 0.8916234067F, 0.8921222417F, 0.8926196556F,
0.8931156489F, 0.8936102219F, 0.8941033752F, 0.8945951092F,
0.8950854244F, 0.8955743212F, 0.8960618003F, 0.8965478621F,
0.8970325071F, 0.8975157359F, 0.8979975490F, 0.8984779471F,
0.8989569307F, 0.8994345004F, 0.8999106568F, 0.9003854005F,
0.9008587323F, 0.9013306526F, 0.9018011623F, 0.9022702619F,
0.9027379521F, 0.9032042337F, 0.9036691074F, 0.9041325739F,
0.9045946339F, 0.9050552882F, 0.9055145376F, 0.9059723828F,
0.9064288246F, 0.9068838638F, 0.9073375013F, 0.9077897379F,
0.9082405743F, 0.9086900115F, 0.9091380503F, 0.9095846917F,
0.9100299364F, 0.9104737854F, 0.9109162397F, 0.9113573001F,
0.9117969675F, 0.9122352430F, 0.9126721275F, 0.9131076219F,
0.9135417273F, 0.9139744447F, 0.9144057750F, 0.9148357194F,
0.9152642787F, 0.9156914542F, 0.9161172468F, 0.9165416576F,
0.9169646877F, 0.9173863382F, 0.9178066102F, 0.9182255048F,
0.9186430232F, 0.9190591665F, 0.9194739359F, 0.9198873324F,
0.9202993574F, 0.9207100120F, 0.9211192973F, 0.9215272147F,
0.9219337653F, 0.9223389504F, 0.9227427713F, 0.9231452290F,
0.9235463251F, 0.9239460607F, 0.9243444371F, 0.9247414557F,
0.9251371177F, 0.9255314245F, 0.9259243774F, 0.9263159778F,
0.9267062270F, 0.9270951264F, 0.9274826774F, 0.9278688814F,
0.9282537398F, 0.9286372540F, 0.9290194254F, 0.9294002555F,
0.9297797458F, 0.9301578976F, 0.9305347125F, 0.9309101919F,
0.9312843373F, 0.9316571503F, 0.9320286323F, 0.9323987849F,
0.9327676097F, 0.9331351080F, 0.9335012816F, 0.9338661320F,
0.9342296607F, 0.9345918694F, 0.9349527596F, 0.9353123330F,
0.9356705911F, 0.9360275357F, 0.9363831683F, 0.9367374905F,
0.9370905042F, 0.9374422108F, 0.9377926122F, 0.9381417099F,
0.9384895057F, 0.9388360014F, 0.9391811985F, 0.9395250989F,
0.9398677043F, 0.9402090165F, 0.9405490371F, 0.9408877680F,
0.9412252110F, 0.9415613678F, 0.9418962402F, 0.9422298301F,
0.9425621392F, 0.9428931695F, 0.9432229226F, 0.9435514005F,
0.9438786050F, 0.9442045381F, 0.9445292014F, 0.9448525971F,
0.9451747268F, 0.9454955926F, 0.9458151963F, 0.9461335399F,
0.9464506253F, 0.9467664545F, 0.9470810293F, 0.9473943517F,
0.9477064238F, 0.9480172474F, 0.9483268246F, 0.9486351573F,
0.9489422475F, 0.9492480973F, 0.9495527087F, 0.9498560837F,
0.9501582243F, 0.9504591325F, 0.9507588105F, 0.9510572603F,
0.9513544839F, 0.9516504834F, 0.9519452609F, 0.9522388186F,
0.9525311584F, 0.9528222826F, 0.9531121932F, 0.9534008923F,
0.9536883821F, 0.9539746647F, 0.9542597424F, 0.9545436171F,
0.9548262912F, 0.9551077667F, 0.9553880459F, 0.9556671309F,
0.9559450239F, 0.9562217272F, 0.9564972429F, 0.9567715733F,
0.9570447206F, 0.9573166871F, 0.9575874749F, 0.9578570863F,
0.9581255236F, 0.9583927890F, 0.9586588849F, 0.9589238134F,
0.9591875769F, 0.9594501777F, 0.9597116180F, 0.9599719003F,
0.9602310267F, 0.9604889995F, 0.9607458213F, 0.9610014942F,
0.9612560206F, 0.9615094028F, 0.9617616433F, 0.9620127443F,
0.9622627083F, 0.9625115376F, 0.9627592345F, 0.9630058016F,
0.9632512411F, 0.9634955555F, 0.9637387471F, 0.9639808185F,
0.9642217720F, 0.9644616100F, 0.9647003349F, 0.9649379493F,
0.9651744556F, 0.9654098561F, 0.9656441534F, 0.9658773499F,
0.9661094480F, 0.9663404504F, 0.9665703593F, 0.9667991774F,
0.9670269071F, 0.9672535509F, 0.9674791114F, 0.9677035909F,
0.9679269921F, 0.9681493174F, 0.9683705694F, 0.9685907506F,
0.9688098636F, 0.9690279108F, 0.9692448948F, 0.9694608182F,
0.9696756836F, 0.9698894934F, 0.9701022503F, 0.9703139569F,
0.9705246156F, 0.9707342291F, 0.9709428000F, 0.9711503309F,
0.9713568243F, 0.9715622829F, 0.9717667093F, 0.9719701060F,
0.9721724757F, 0.9723738210F, 0.9725741446F, 0.9727734490F,
0.9729717369F, 0.9731690109F, 0.9733652737F, 0.9735605279F,
0.9737547762F, 0.9739480212F, 0.9741402656F, 0.9743315120F,
0.9745217631F, 0.9747110216F, 0.9748992901F, 0.9750865714F,
0.9752728681F, 0.9754581829F, 0.9756425184F, 0.9758258775F,
0.9760082627F, 0.9761896768F, 0.9763701224F, 0.9765496024F,
0.9767281193F, 0.9769056760F, 0.9770822751F, 0.9772579193F,
0.9774326114F, 0.9776063542F, 0.9777791502F, 0.9779510023F,
0.9781219133F, 0.9782918858F, 0.9784609226F, 0.9786290264F,
0.9787962000F, 0.9789624461F, 0.9791277676F, 0.9792921671F,
0.9794556474F, 0.9796182113F, 0.9797798615F, 0.9799406009F,
0.9801004321F, 0.9802593580F, 0.9804173813F, 0.9805745049F,
0.9807307314F, 0.9808860637F, 0.9810405046F, 0.9811940568F,
0.9813467232F, 0.9814985065F, 0.9816494095F, 0.9817994351F,
0.9819485860F, 0.9820968650F, 0.9822442750F, 0.9823908186F,
0.9825364988F, 0.9826813184F, 0.9828252801F, 0.9829683868F,
0.9831106413F, 0.9832520463F, 0.9833926048F, 0.9835323195F,
0.9836711932F, 0.9838092288F, 0.9839464291F, 0.9840827969F,
0.9842183351F, 0.9843530464F, 0.9844869337F, 0.9846199998F,
0.9847522475F, 0.9848836798F, 0.9850142993F, 0.9851441090F,
0.9852731117F, 0.9854013101F, 0.9855287073F, 0.9856553058F,
0.9857811087F, 0.9859061188F, 0.9860303388F, 0.9861537717F,
0.9862764202F, 0.9863982872F, 0.9865193756F, 0.9866396882F,
0.9867592277F, 0.9868779972F, 0.9869959993F, 0.9871132370F,
0.9872297131F, 0.9873454304F, 0.9874603918F, 0.9875746001F,
0.9876880581F, 0.9878007688F, 0.9879127348F, 0.9880239592F,
0.9881344447F, 0.9882441941F, 0.9883532104F, 0.9884614962F,
0.9885690546F, 0.9886758883F, 0.9887820001F, 0.9888873930F,
0.9889920697F, 0.9890960331F, 0.9891992859F, 0.9893018312F,
0.9894036716F, 0.9895048100F, 0.9896052493F, 0.9897049923F,
0.9898040418F, 0.9899024006F, 0.9900000717F, 0.9900970577F,
0.9901933616F, 0.9902889862F, 0.9903839343F, 0.9904782087F,
0.9905718122F, 0.9906647477F, 0.9907570180F, 0.9908486259F,
0.9909395742F, 0.9910298658F, 0.9911195034F, 0.9912084899F,
0.9912968281F, 0.9913845208F, 0.9914715708F, 0.9915579810F,
0.9916437540F, 0.9917288928F, 0.9918134001F, 0.9918972788F,
0.9919805316F, 0.9920631613F, 0.9921451707F, 0.9922265626F,
0.9923073399F, 0.9923875052F, 0.9924670615F, 0.9925460114F,
0.9926243577F, 0.9927021033F, 0.9927792508F, 0.9928558032F,
0.9929317631F, 0.9930071333F, 0.9930819167F, 0.9931561158F,
0.9932297337F, 0.9933027728F, 0.9933752362F, 0.9934471264F,
0.9935184462F, 0.9935891985F, 0.9936593859F, 0.9937290112F,
0.9937980771F, 0.9938665864F, 0.9939345418F, 0.9940019460F,
0.9940688018F, 0.9941351118F, 0.9942008789F, 0.9942661057F,
0.9943307950F, 0.9943949494F, 0.9944585717F, 0.9945216645F,
0.9945842307F, 0.9946462728F, 0.9947077936F, 0.9947687957F,
0.9948292820F, 0.9948892550F, 0.9949487174F, 0.9950076719F,
0.9950661212F, 0.9951240679F, 0.9951815148F, 0.9952384645F,
0.9952949196F, 0.9953508828F, 0.9954063568F, 0.9954613442F,
0.9955158476F, 0.9955698697F, 0.9956234132F, 0.9956764806F,
0.9957290746F, 0.9957811978F, 0.9958328528F, 0.9958840423F,
0.9959347688F, 0.9959850351F, 0.9960348435F, 0.9960841969F,
0.9961330977F, 0.9961815486F, 0.9962295521F, 0.9962771108F,
0.9963242274F, 0.9963709043F, 0.9964171441F, 0.9964629494F,
0.9965083228F, 0.9965532668F, 0.9965977840F, 0.9966418768F,
0.9966855479F, 0.9967287998F, 0.9967716350F, 0.9968140559F,
0.9968560653F, 0.9968976655F, 0.9969388591F, 0.9969796485F,
0.9970200363F, 0.9970600250F, 0.9970996170F, 0.9971388149F,
0.9971776211F, 0.9972160380F, 0.9972540683F, 0.9972917142F,
0.9973289783F, 0.9973658631F, 0.9974023709F, 0.9974385042F,
0.9974742655F, 0.9975096571F, 0.9975446816F, 0.9975793413F,
0.9976136386F, 0.9976475759F, 0.9976811557F, 0.9977143803F,
0.9977472521F, 0.9977797736F, 0.9978119470F, 0.9978437748F,
0.9978752593F, 0.9979064029F, 0.9979372079F, 0.9979676768F,
0.9979978117F, 0.9980276151F, 0.9980570893F, 0.9980862367F,
0.9981150595F, 0.9981435600F, 0.9981717406F, 0.9981996035F,
0.9982271511F, 0.9982543856F, 0.9982813093F, 0.9983079246F,
0.9983342336F, 0.9983602386F, 0.9983859418F, 0.9984113456F,
0.9984364522F, 0.9984612638F, 0.9984857825F, 0.9985100108F,
0.9985339507F, 0.9985576044F, 0.9985809743F, 0.9986040624F,
0.9986268710F, 0.9986494022F, 0.9986716583F, 0.9986936413F,
0.9987153535F, 0.9987367969F, 0.9987579738F, 0.9987788864F,
0.9987995366F, 0.9988199267F, 0.9988400587F, 0.9988599348F,
0.9988795572F, 0.9988989278F, 0.9989180487F, 0.9989369222F,
0.9989555501F, 0.9989739347F, 0.9989920780F, 0.9990099820F,
0.9990276487F, 0.9990450803F, 0.9990622787F, 0.9990792460F,
0.9990959841F, 0.9991124952F, 0.9991287812F, 0.9991448440F,
0.9991606858F, 0.9991763084F, 0.9991917139F, 0.9992069042F,
0.9992218813F, 0.9992366471F, 0.9992512035F, 0.9992655525F,
0.9992796961F, 0.9992936361F, 0.9993073744F, 0.9993209131F,
0.9993342538F, 0.9993473987F, 0.9993603494F, 0.9993731080F,
0.9993856762F, 0.9993980559F, 0.9994102490F, 0.9994222573F,
0.9994340827F, 0.9994457269F, 0.9994571918F, 0.9994684793F,
0.9994795910F, 0.9994905288F, 0.9995012945F, 0.9995118898F,
0.9995223165F, 0.9995325765F, 0.9995426713F, 0.9995526029F,
0.9995623728F, 0.9995719829F, 0.9995814349F, 0.9995907304F,
0.9995998712F, 0.9996088590F, 0.9996176954F, 0.9996263821F,
0.9996349208F, 0.9996433132F, 0.9996515609F, 0.9996596656F,
0.9996676288F, 0.9996754522F, 0.9996831375F, 0.9996906862F,
0.9996981000F, 0.9997053804F, 0.9997125290F, 0.9997195474F,
0.9997264371F, 0.9997331998F, 0.9997398369F, 0.9997463500F,
0.9997527406F, 0.9997590103F, 0.9997651606F, 0.9997711930F,
0.9997771089F, 0.9997829098F, 0.9997885973F, 0.9997941728F,
0.9997996378F, 0.9998049936F, 0.9998102419F, 0.9998153839F,
0.9998204211F, 0.9998253550F, 0.9998301868F, 0.9998349182F,
0.9998395503F, 0.9998440847F, 0.9998485226F, 0.9998528654F,
0.9998571146F, 0.9998612713F, 0.9998653370F, 0.9998693130F,
0.9998732007F, 0.9998770012F, 0.9998807159F, 0.9998843461F,
0.9998878931F, 0.9998913581F, 0.9998947424F, 0.9998980473F,
0.9999012740F, 0.9999044237F, 0.9999074976F, 0.9999104971F,
0.9999134231F, 0.9999162771F, 0.9999190601F, 0.9999217733F,
0.9999244179F, 0.9999269950F, 0.9999295058F, 0.9999319515F,
0.9999343332F, 0.9999366519F, 0.9999389088F, 0.9999411050F,
0.9999432416F, 0.9999453196F, 0.9999473402F, 0.9999493044F,
0.9999512132F, 0.9999530677F, 0.9999548690F, 0.9999566180F,
0.9999583157F, 0.9999599633F, 0.9999615616F, 0.9999631116F,
0.9999646144F, 0.9999660709F, 0.9999674820F, 0.9999688487F,
0.9999701719F, 0.9999714526F, 0.9999726917F, 0.9999738900F,
0.9999750486F, 0.9999761682F, 0.9999772497F, 0.9999782941F,
0.9999793021F, 0.9999802747F, 0.9999812126F, 0.9999821167F,
0.9999829878F, 0.9999838268F, 0.9999846343F, 0.9999854113F,
0.9999861584F, 0.9999868765F, 0.9999875664F, 0.9999882287F,
0.9999888642F, 0.9999894736F, 0.9999900577F, 0.9999906172F,
0.9999911528F, 0.9999916651F, 0.9999921548F, 0.9999926227F,
0.9999930693F, 0.9999934954F, 0.9999939015F, 0.9999942883F,
0.9999946564F, 0.9999950064F, 0.9999953390F, 0.9999956547F,
0.9999959541F, 0.9999962377F, 0.9999965062F, 0.9999967601F,
0.9999969998F, 0.9999972260F, 0.9999974392F, 0.9999976399F,
0.9999978285F, 0.9999980056F, 0.9999981716F, 0.9999983271F,
0.9999984724F, 0.9999986081F, 0.9999987345F, 0.9999988521F,
0.9999989613F, 0.9999990625F, 0.9999991562F, 0.9999992426F,
0.9999993223F, 0.9999993954F, 0.9999994625F, 0.9999995239F,
0.9999995798F, 0.9999996307F, 0.9999996768F, 0.9999997184F,
0.9999997559F, 0.9999997895F, 0.9999998195F, 0.9999998462F,
0.9999998698F, 0.9999998906F, 0.9999999088F, 0.9999999246F,
0.9999999383F, 0.9999999500F, 0.9999999600F, 0.9999999684F,
0.9999999754F, 0.9999999811F, 0.9999999858F, 0.9999999896F,
0.9999999925F, 0.9999999948F, 0.9999999965F, 0.9999999978F,
0.9999999986F, 0.9999999992F, 0.9999999996F, 0.9999999998F,
0.9999999999F, 1.0000000000F, 1.0000000000F, 1.0000000000F,
};
 
static const float vwin8192[4096] = {
0.0000000578F, 0.0000005198F, 0.0000014438F, 0.0000028299F,
0.0000046780F, 0.0000069882F, 0.0000097604F, 0.0000129945F,
0.0000166908F, 0.0000208490F, 0.0000254692F, 0.0000305515F,
0.0000360958F, 0.0000421021F, 0.0000485704F, 0.0000555006F,
0.0000628929F, 0.0000707472F, 0.0000790635F, 0.0000878417F,
0.0000970820F, 0.0001067842F, 0.0001169483F, 0.0001275744F,
0.0001386625F, 0.0001502126F, 0.0001622245F, 0.0001746984F,
0.0001876343F, 0.0002010320F, 0.0002148917F, 0.0002292132F,
0.0002439967F, 0.0002592421F, 0.0002749493F, 0.0002911184F,
0.0003077493F, 0.0003248421F, 0.0003423967F, 0.0003604132F,
0.0003788915F, 0.0003978316F, 0.0004172335F, 0.0004370971F,
0.0004574226F, 0.0004782098F, 0.0004994587F, 0.0005211694F,
0.0005433418F, 0.0005659759F, 0.0005890717F, 0.0006126292F,
0.0006366484F, 0.0006611292F, 0.0006860716F, 0.0007114757F,
0.0007373414F, 0.0007636687F, 0.0007904576F, 0.0008177080F,
0.0008454200F, 0.0008735935F, 0.0009022285F, 0.0009313250F,
0.0009608830F, 0.0009909025F, 0.0010213834F, 0.0010523257F,
0.0010837295F, 0.0011155946F, 0.0011479211F, 0.0011807090F,
0.0012139582F, 0.0012476687F, 0.0012818405F, 0.0013164736F,
0.0013515679F, 0.0013871235F, 0.0014231402F, 0.0014596182F,
0.0014965573F, 0.0015339576F, 0.0015718190F, 0.0016101415F,
0.0016489251F, 0.0016881698F, 0.0017278754F, 0.0017680421F,
0.0018086698F, 0.0018497584F, 0.0018913080F, 0.0019333185F,
0.0019757898F, 0.0020187221F, 0.0020621151F, 0.0021059690F,
0.0021502837F, 0.0021950591F, 0.0022402953F, 0.0022859921F,
0.0023321497F, 0.0023787679F, 0.0024258467F, 0.0024733861F,
0.0025213861F, 0.0025698466F, 0.0026187676F, 0.0026681491F,
0.0027179911F, 0.0027682935F, 0.0028190562F, 0.0028702794F,
0.0029219628F, 0.0029741066F, 0.0030267107F, 0.0030797749F,
0.0031332994F, 0.0031872841F, 0.0032417289F, 0.0032966338F,
0.0033519988F, 0.0034078238F, 0.0034641089F, 0.0035208539F,
0.0035780589F, 0.0036357237F, 0.0036938485F, 0.0037524331F,
0.0038114775F, 0.0038709817F, 0.0039309456F, 0.0039913692F,
0.0040522524F, 0.0041135953F, 0.0041753978F, 0.0042376599F,
0.0043003814F, 0.0043635624F, 0.0044272029F, 0.0044913028F,
0.0045558620F, 0.0046208806F, 0.0046863585F, 0.0047522955F,
0.0048186919F, 0.0048855473F, 0.0049528619F, 0.0050206356F,
0.0050888684F, 0.0051575601F, 0.0052267108F, 0.0052963204F,
0.0053663890F, 0.0054369163F, 0.0055079025F, 0.0055793474F,
0.0056512510F, 0.0057236133F, 0.0057964342F, 0.0058697137F,
0.0059434517F, 0.0060176482F, 0.0060923032F, 0.0061674166F,
0.0062429883F, 0.0063190183F, 0.0063955066F, 0.0064724532F,
0.0065498579F, 0.0066277207F, 0.0067060416F, 0.0067848205F,
0.0068640575F, 0.0069437523F, 0.0070239051F, 0.0071045157F,
0.0071855840F, 0.0072671102F, 0.0073490940F, 0.0074315355F,
0.0075144345F, 0.0075977911F, 0.0076816052F, 0.0077658768F,
0.0078506057F, 0.0079357920F, 0.0080214355F, 0.0081075363F,
0.0081940943F, 0.0082811094F, 0.0083685816F, 0.0084565108F,
0.0085448970F, 0.0086337401F, 0.0087230401F, 0.0088127969F,
0.0089030104F, 0.0089936807F, 0.0090848076F, 0.0091763911F,
0.0092684311F, 0.0093609276F, 0.0094538805F, 0.0095472898F,
0.0096411554F, 0.0097354772F, 0.0098302552F, 0.0099254894F,
0.0100211796F, 0.0101173259F, 0.0102139281F, 0.0103109863F,
0.0104085002F, 0.0105064700F, 0.0106048955F, 0.0107037766F,
0.0108031133F, 0.0109029056F, 0.0110031534F, 0.0111038565F,
0.0112050151F, 0.0113066289F, 0.0114086980F, 0.0115112222F,
0.0116142015F, 0.0117176359F, 0.0118215252F, 0.0119258695F,
0.0120306686F, 0.0121359225F, 0.0122416312F, 0.0123477944F,
0.0124544123F, 0.0125614847F, 0.0126690116F, 0.0127769928F,
0.0128854284F, 0.0129943182F, 0.0131036623F, 0.0132134604F,
0.0133237126F, 0.0134344188F, 0.0135455790F, 0.0136571929F,
0.0137692607F, 0.0138817821F, 0.0139947572F, 0.0141081859F,
0.0142220681F, 0.0143364037F, 0.0144511927F, 0.0145664350F,
0.0146821304F, 0.0147982791F, 0.0149148808F, 0.0150319355F,
0.0151494431F, 0.0152674036F, 0.0153858168F, 0.0155046828F,
0.0156240014F, 0.0157437726F, 0.0158639962F, 0.0159846723F,
0.0161058007F, 0.0162273814F, 0.0163494142F, 0.0164718991F,
0.0165948361F, 0.0167182250F, 0.0168420658F, 0.0169663584F,
0.0170911027F, 0.0172162987F, 0.0173419462F, 0.0174680452F,
0.0175945956F, 0.0177215974F, 0.0178490504F, 0.0179769545F,
0.0181053098F, 0.0182341160F, 0.0183633732F, 0.0184930812F,
0.0186232399F, 0.0187538494F, 0.0188849094F, 0.0190164200F,
0.0191483809F, 0.0192807923F, 0.0194136539F, 0.0195469656F,
0.0196807275F, 0.0198149394F, 0.0199496012F, 0.0200847128F,
0.0202202742F, 0.0203562853F, 0.0204927460F, 0.0206296561F,
0.0207670157F, 0.0209048245F, 0.0210430826F, 0.0211817899F,
0.0213209462F, 0.0214605515F, 0.0216006057F, 0.0217411086F,
0.0218820603F, 0.0220234605F, 0.0221653093F, 0.0223076066F,
0.0224503521F, 0.0225935459F, 0.0227371879F, 0.0228812779F,
0.0230258160F, 0.0231708018F, 0.0233162355F, 0.0234621169F,
0.0236084459F, 0.0237552224F, 0.0239024462F, 0.0240501175F,
0.0241982359F, 0.0243468015F, 0.0244958141F, 0.0246452736F,
0.0247951800F, 0.0249455331F, 0.0250963329F, 0.0252475792F,
0.0253992720F, 0.0255514111F, 0.0257039965F, 0.0258570281F,
0.0260105057F, 0.0261644293F, 0.0263187987F, 0.0264736139F,
0.0266288747F, 0.0267845811F, 0.0269407330F, 0.0270973302F,
0.0272543727F, 0.0274118604F, 0.0275697930F, 0.0277281707F,
0.0278869932F, 0.0280462604F, 0.0282059723F, 0.0283661287F,
0.0285267295F, 0.0286877747F, 0.0288492641F, 0.0290111976F,
0.0291735751F, 0.0293363965F, 0.0294996617F, 0.0296633706F,
0.0298275231F, 0.0299921190F, 0.0301571583F, 0.0303226409F,
0.0304885667F, 0.0306549354F, 0.0308217472F, 0.0309890017F,
0.0311566989F, 0.0313248388F, 0.0314934211F, 0.0316624459F,
0.0318319128F, 0.0320018220F, 0.0321721732F, 0.0323429663F,
0.0325142013F, 0.0326858779F, 0.0328579962F, 0.0330305559F,
0.0332035570F, 0.0333769994F, 0.0335508829F, 0.0337252074F,
0.0338999728F, 0.0340751790F, 0.0342508259F, 0.0344269134F,
0.0346034412F, 0.0347804094F, 0.0349578178F, 0.0351356663F,
0.0353139548F, 0.0354926831F, 0.0356718511F, 0.0358514588F,
0.0360315059F, 0.0362119924F, 0.0363929182F, 0.0365742831F,
0.0367560870F, 0.0369383297F, 0.0371210113F, 0.0373041315F,
0.0374876902F, 0.0376716873F, 0.0378561226F, 0.0380409961F,
0.0382263077F, 0.0384120571F, 0.0385982443F, 0.0387848691F,
0.0389719315F, 0.0391594313F, 0.0393473683F, 0.0395357425F,
0.0397245537F, 0.0399138017F, 0.0401034866F, 0.0402936080F,
0.0404841660F, 0.0406751603F, 0.0408665909F, 0.0410584576F,
0.0412507603F, 0.0414434988F, 0.0416366731F, 0.0418302829F,
0.0420243282F, 0.0422188088F, 0.0424137246F, 0.0426090755F,
0.0428048613F, 0.0430010819F, 0.0431977371F, 0.0433948269F,
0.0435923511F, 0.0437903095F, 0.0439887020F, 0.0441875285F,
0.0443867889F, 0.0445864830F, 0.0447866106F, 0.0449871717F,
0.0451881661F, 0.0453895936F, 0.0455914542F, 0.0457937477F,
0.0459964738F, 0.0461996326F, 0.0464032239F, 0.0466072475F,
0.0468117032F, 0.0470165910F, 0.0472219107F, 0.0474276622F,
0.0476338452F, 0.0478404597F, 0.0480475056F, 0.0482549827F,
0.0484628907F, 0.0486712297F, 0.0488799994F, 0.0490891998F,
0.0492988306F, 0.0495088917F, 0.0497193830F, 0.0499303043F,
0.0501416554F, 0.0503534363F, 0.0505656468F, 0.0507782867F,
0.0509913559F, 0.0512048542F, 0.0514187815F, 0.0516331376F,
0.0518479225F, 0.0520631358F, 0.0522787775F, 0.0524948475F,
0.0527113455F, 0.0529282715F, 0.0531456252F, 0.0533634066F,
0.0535816154F, 0.0538002515F, 0.0540193148F, 0.0542388051F,
0.0544587222F, 0.0546790660F, 0.0548998364F, 0.0551210331F,
0.0553426561F, 0.0555647051F, 0.0557871801F, 0.0560100807F,
0.0562334070F, 0.0564571587F, 0.0566813357F, 0.0569059378F,
0.0571309649F, 0.0573564168F, 0.0575822933F, 0.0578085942F,
0.0580353195F, 0.0582624689F, 0.0584900423F, 0.0587180396F,
0.0589464605F, 0.0591753049F, 0.0594045726F, 0.0596342635F,
0.0598643774F, 0.0600949141F, 0.0603258735F, 0.0605572555F,
0.0607890597F, 0.0610212862F, 0.0612539346F, 0.0614870049F,
0.0617204968F, 0.0619544103F, 0.0621887451F, 0.0624235010F,
0.0626586780F, 0.0628942758F, 0.0631302942F, 0.0633667331F,
0.0636035923F, 0.0638408717F, 0.0640785710F, 0.0643166901F,
0.0645552288F, 0.0647941870F, 0.0650335645F, 0.0652733610F,
0.0655135765F, 0.0657542108F, 0.0659952636F, 0.0662367348F,
0.0664786242F, 0.0667209316F, 0.0669636570F, 0.0672068000F,
0.0674503605F, 0.0676943384F, 0.0679387334F, 0.0681835454F,
0.0684287742F, 0.0686744196F, 0.0689204814F, 0.0691669595F,
0.0694138536F, 0.0696611637F, 0.0699088894F, 0.0701570307F,
0.0704055873F, 0.0706545590F, 0.0709039458F, 0.0711537473F,
0.0714039634F, 0.0716545939F, 0.0719056387F, 0.0721570975F,
0.0724089702F, 0.0726612565F, 0.0729139563F, 0.0731670694F,
0.0734205956F, 0.0736745347F, 0.0739288866F, 0.0741836510F,
0.0744388277F, 0.0746944166F, 0.0749504175F, 0.0752068301F,
0.0754636543F, 0.0757208899F, 0.0759785367F, 0.0762365946F,
0.0764950632F, 0.0767539424F, 0.0770132320F, 0.0772729319F,
0.0775330418F, 0.0777935616F, 0.0780544909F, 0.0783158298F,
0.0785775778F, 0.0788397349F, 0.0791023009F, 0.0793652755F,
0.0796286585F, 0.0798924498F, 0.0801566492F, 0.0804212564F,
0.0806862712F, 0.0809516935F, 0.0812175231F, 0.0814837597F,
0.0817504031F, 0.0820174532F, 0.0822849097F, 0.0825527724F,
0.0828210412F, 0.0830897158F, 0.0833587960F, 0.0836282816F,
0.0838981724F, 0.0841684682F, 0.0844391688F, 0.0847102740F,
0.0849817835F, 0.0852536973F, 0.0855260150F, 0.0857987364F,
0.0860718614F, 0.0863453897F, 0.0866193211F, 0.0868936554F,
0.0871683924F, 0.0874435319F, 0.0877190737F, 0.0879950175F,
0.0882713632F, 0.0885481105F, 0.0888252592F, 0.0891028091F,
0.0893807600F, 0.0896591117F, 0.0899378639F, 0.0902170165F,
0.0904965692F, 0.0907765218F, 0.0910568740F, 0.0913376258F,
0.0916187767F, 0.0919003268F, 0.0921822756F, 0.0924646230F,
0.0927473687F, 0.0930305126F, 0.0933140545F, 0.0935979940F,
0.0938823310F, 0.0941670653F, 0.0944521966F, 0.0947377247F,
0.0950236494F, 0.0953099704F, 0.0955966876F, 0.0958838007F,
0.0961713094F, 0.0964592136F, 0.0967475131F, 0.0970362075F,
0.0973252967F, 0.0976147805F, 0.0979046585F, 0.0981949307F,
0.0984855967F, 0.0987766563F, 0.0990681093F, 0.0993599555F,
0.0996521945F, 0.0999448263F, 0.1002378506F, 0.1005312671F,
0.1008250755F, 0.1011192757F, 0.1014138675F, 0.1017088505F,
0.1020042246F, 0.1022999895F, 0.1025961450F, 0.1028926909F,
0.1031896268F, 0.1034869526F, 0.1037846680F, 0.1040827729F,
0.1043812668F, 0.1046801497F, 0.1049794213F, 0.1052790813F,
0.1055791294F, 0.1058795656F, 0.1061803894F, 0.1064816006F,
0.1067831991F, 0.1070851846F, 0.1073875568F, 0.1076903155F,
0.1079934604F, 0.1082969913F, 0.1086009079F, 0.1089052101F,
0.1092098975F, 0.1095149699F, 0.1098204270F, 0.1101262687F,
0.1104324946F, 0.1107391045F, 0.1110460982F, 0.1113534754F,
0.1116612359F, 0.1119693793F, 0.1122779055F, 0.1125868142F,
0.1128961052F, 0.1132057781F, 0.1135158328F, 0.1138262690F,
0.1141370863F, 0.1144482847F, 0.1147598638F, 0.1150718233F,
0.1153841631F, 0.1156968828F, 0.1160099822F, 0.1163234610F,
0.1166373190F, 0.1169515559F, 0.1172661714F, 0.1175811654F,
0.1178965374F, 0.1182122874F, 0.1185284149F, 0.1188449198F,
0.1191618018F, 0.1194790606F, 0.1197966960F, 0.1201147076F,
0.1204330953F, 0.1207518587F, 0.1210709976F, 0.1213905118F,
0.1217104009F, 0.1220306647F, 0.1223513029F, 0.1226723153F,
0.1229937016F, 0.1233154615F, 0.1236375948F, 0.1239601011F,
0.1242829803F, 0.1246062319F, 0.1249298559F, 0.1252538518F,
0.1255782195F, 0.1259029586F, 0.1262280689F, 0.1265535501F,
0.1268794019F, 0.1272056241F, 0.1275322163F, 0.1278591784F,
0.1281865099F, 0.1285142108F, 0.1288422805F, 0.1291707190F,
0.1294995259F, 0.1298287009F, 0.1301582437F, 0.1304881542F,
0.1308184319F, 0.1311490766F, 0.1314800881F, 0.1318114660F,
0.1321432100F, 0.1324753200F, 0.1328077955F, 0.1331406364F,
0.1334738422F, 0.1338074129F, 0.1341413479F, 0.1344756472F,
0.1348103103F, 0.1351453370F, 0.1354807270F, 0.1358164801F,
0.1361525959F, 0.1364890741F, 0.1368259145F, 0.1371631167F,
0.1375006805F, 0.1378386056F, 0.1381768917F, 0.1385155384F,
0.1388545456F, 0.1391939129F, 0.1395336400F, 0.1398737266F,
0.1402141724F, 0.1405549772F, 0.1408961406F, 0.1412376623F,
0.1415795421F, 0.1419217797F, 0.1422643746F, 0.1426073268F,
0.1429506358F, 0.1432943013F, 0.1436383231F, 0.1439827008F,
0.1443274342F, 0.1446725229F, 0.1450179667F, 0.1453637652F,
0.1457099181F, 0.1460564252F, 0.1464032861F, 0.1467505006F,
0.1470980682F, 0.1474459888F, 0.1477942620F, 0.1481428875F,
0.1484918651F, 0.1488411942F, 0.1491908748F, 0.1495409065F,
0.1498912889F, 0.1502420218F, 0.1505931048F, 0.1509445376F,
0.1512963200F, 0.1516484516F, 0.1520009321F, 0.1523537612F,
0.1527069385F, 0.1530604638F, 0.1534143368F, 0.1537685571F,
0.1541231244F, 0.1544780384F, 0.1548332987F, 0.1551889052F,
0.1555448574F, 0.1559011550F, 0.1562577978F, 0.1566147853F,
0.1569721173F, 0.1573297935F, 0.1576878135F, 0.1580461771F,
0.1584048838F, 0.1587639334F, 0.1591233255F, 0.1594830599F,
0.1598431361F, 0.1602035540F, 0.1605643131F, 0.1609254131F,
0.1612868537F, 0.1616486346F, 0.1620107555F, 0.1623732160F,
0.1627360158F, 0.1630991545F, 0.1634626319F, 0.1638264476F,
0.1641906013F, 0.1645550926F, 0.1649199212F, 0.1652850869F,
0.1656505892F, 0.1660164278F, 0.1663826024F, 0.1667491127F,
0.1671159583F, 0.1674831388F, 0.1678506541F, 0.1682185036F,
0.1685866872F, 0.1689552044F, 0.1693240549F, 0.1696932384F,
0.1700627545F, 0.1704326029F, 0.1708027833F, 0.1711732952F,
0.1715441385F, 0.1719153127F, 0.1722868175F, 0.1726586526F,
0.1730308176F, 0.1734033121F, 0.1737761359F, 0.1741492886F,
0.1745227698F, 0.1748965792F, 0.1752707164F, 0.1756451812F,
0.1760199731F, 0.1763950918F, 0.1767705370F, 0.1771463083F,
0.1775224054F, 0.1778988279F, 0.1782755754F, 0.1786526477F,
0.1790300444F, 0.1794077651F, 0.1797858094F, 0.1801641771F,
0.1805428677F, 0.1809218810F, 0.1813012165F, 0.1816808739F,
0.1820608528F, 0.1824411530F, 0.1828217739F, 0.1832027154F,
0.1835839770F, 0.1839655584F, 0.1843474592F, 0.1847296790F,
0.1851122175F, 0.1854950744F, 0.1858782492F, 0.1862617417F,
0.1866455514F, 0.1870296780F, 0.1874141211F, 0.1877988804F,
0.1881839555F, 0.1885693461F, 0.1889550517F, 0.1893410721F,
0.1897274068F, 0.1901140555F, 0.1905010178F, 0.1908882933F,
0.1912758818F, 0.1916637828F, 0.1920519959F, 0.1924405208F,
0.1928293571F, 0.1932185044F, 0.1936079625F, 0.1939977308F,
0.1943878091F, 0.1947781969F, 0.1951688939F, 0.1955598998F,
0.1959512141F, 0.1963428364F, 0.1967347665F, 0.1971270038F,
0.1975195482F, 0.1979123990F, 0.1983055561F, 0.1986990190F,
0.1990927873F, 0.1994868607F, 0.1998812388F, 0.2002759212F,
0.2006709075F, 0.2010661974F, 0.2014617904F, 0.2018576862F,
0.2022538844F, 0.2026503847F, 0.2030471865F, 0.2034442897F,
0.2038416937F, 0.2042393982F, 0.2046374028F, 0.2050357071F,
0.2054343107F, 0.2058332133F, 0.2062324145F, 0.2066319138F,
0.2070317110F, 0.2074318055F, 0.2078321970F, 0.2082328852F,
0.2086338696F, 0.2090351498F, 0.2094367255F, 0.2098385962F,
0.2102407617F, 0.2106432213F, 0.2110459749F, 0.2114490220F,
0.2118523621F, 0.2122559950F, 0.2126599202F, 0.2130641373F,
0.2134686459F, 0.2138734456F, 0.2142785361F, 0.2146839168F,
0.2150895875F, 0.2154955478F, 0.2159017972F, 0.2163083353F,
0.2167151617F, 0.2171222761F, 0.2175296780F, 0.2179373670F,
0.2183453428F, 0.2187536049F, 0.2191621529F, 0.2195709864F,
0.2199801051F, 0.2203895085F, 0.2207991961F, 0.2212091677F,
0.2216194228F, 0.2220299610F, 0.2224407818F, 0.2228518850F,
0.2232632699F, 0.2236749364F, 0.2240868839F, 0.2244991121F,
0.2249116204F, 0.2253244086F, 0.2257374763F, 0.2261508229F,
0.2265644481F, 0.2269783514F, 0.2273925326F, 0.2278069911F,
0.2282217265F, 0.2286367384F, 0.2290520265F, 0.2294675902F,
0.2298834292F, 0.2302995431F, 0.2307159314F, 0.2311325937F,
0.2315495297F, 0.2319667388F, 0.2323842207F, 0.2328019749F,
0.2332200011F, 0.2336382988F, 0.2340568675F, 0.2344757070F,
0.2348948166F, 0.2353141961F, 0.2357338450F, 0.2361537629F,
0.2365739493F, 0.2369944038F, 0.2374151261F, 0.2378361156F,
0.2382573720F, 0.2386788948F, 0.2391006836F, 0.2395227380F,
0.2399450575F, 0.2403676417F, 0.2407904902F, 0.2412136026F,
0.2416369783F, 0.2420606171F, 0.2424845185F, 0.2429086820F,
0.2433331072F, 0.2437577936F, 0.2441827409F, 0.2446079486F,
0.2450334163F, 0.2454591435F, 0.2458851298F, 0.2463113747F,
0.2467378779F, 0.2471646389F, 0.2475916573F, 0.2480189325F,
0.2484464643F, 0.2488742521F, 0.2493022955F, 0.2497305940F,
0.2501591473F, 0.2505879549F, 0.2510170163F, 0.2514463311F,
0.2518758989F, 0.2523057193F, 0.2527357916F, 0.2531661157F,
0.2535966909F, 0.2540275169F, 0.2544585931F, 0.2548899193F,
0.2553214948F, 0.2557533193F, 0.2561853924F, 0.2566177135F,
0.2570502822F, 0.2574830981F, 0.2579161608F, 0.2583494697F,
0.2587830245F, 0.2592168246F, 0.2596508697F, 0.2600851593F,
0.2605196929F, 0.2609544701F, 0.2613894904F, 0.2618247534F,
0.2622602586F, 0.2626960055F, 0.2631319938F, 0.2635682230F,
0.2640046925F, 0.2644414021F, 0.2648783511F, 0.2653155391F,
0.2657529657F, 0.2661906305F, 0.2666285329F, 0.2670666725F,
0.2675050489F, 0.2679436616F, 0.2683825101F, 0.2688215940F,
0.2692609127F, 0.2697004660F, 0.2701402532F, 0.2705802739F,
0.2710205278F, 0.2714610142F, 0.2719017327F, 0.2723426830F,
0.2727838644F, 0.2732252766F, 0.2736669191F, 0.2741087914F,
0.2745508930F, 0.2749932235F, 0.2754357824F, 0.2758785693F,
0.2763215837F, 0.2767648251F, 0.2772082930F, 0.2776519870F,
0.2780959066F, 0.2785400513F, 0.2789844207F, 0.2794290143F,
0.2798738316F, 0.2803188722F, 0.2807641355F, 0.2812096211F,
0.2816553286F, 0.2821012574F, 0.2825474071F, 0.2829937773F,
0.2834403673F, 0.2838871768F, 0.2843342053F, 0.2847814523F,
0.2852289174F, 0.2856765999F, 0.2861244996F, 0.2865726159F,
0.2870209482F, 0.2874694962F, 0.2879182594F, 0.2883672372F,
0.2888164293F, 0.2892658350F, 0.2897154540F, 0.2901652858F,
0.2906153298F, 0.2910655856F, 0.2915160527F, 0.2919667306F,
0.2924176189F, 0.2928687171F, 0.2933200246F, 0.2937715409F,
0.2942232657F, 0.2946751984F, 0.2951273386F, 0.2955796856F,
0.2960322391F, 0.2964849986F, 0.2969379636F, 0.2973911335F,
0.2978445080F, 0.2982980864F, 0.2987518684F, 0.2992058534F,
0.2996600409F, 0.3001144305F, 0.3005690217F, 0.3010238139F,
0.3014788067F, 0.3019339995F, 0.3023893920F, 0.3028449835F,
0.3033007736F, 0.3037567618F, 0.3042129477F, 0.3046693306F,
0.3051259102F, 0.3055826859F, 0.3060396572F, 0.3064968236F,
0.3069541847F, 0.3074117399F, 0.3078694887F, 0.3083274307F,
0.3087855653F, 0.3092438920F, 0.3097024104F, 0.3101611199F,
0.3106200200F, 0.3110791103F, 0.3115383902F, 0.3119978592F,
0.3124575169F, 0.3129173627F, 0.3133773961F, 0.3138376166F,
0.3142980238F, 0.3147586170F, 0.3152193959F, 0.3156803598F,
0.3161415084F, 0.3166028410F, 0.3170643573F, 0.3175260566F,
0.3179879384F, 0.3184500023F, 0.3189122478F, 0.3193746743F,
0.3198372814F, 0.3203000685F, 0.3207630351F, 0.3212261807F,
0.3216895048F, 0.3221530069F, 0.3226166865F, 0.3230805430F,
0.3235445760F, 0.3240087849F, 0.3244731693F, 0.3249377285F,
0.3254024622F, 0.3258673698F, 0.3263324507F, 0.3267977045F,
0.3272631306F, 0.3277287286F, 0.3281944978F, 0.3286604379F,
0.3291265482F, 0.3295928284F, 0.3300592777F, 0.3305258958F,
0.3309926821F, 0.3314596361F, 0.3319267573F, 0.3323940451F,
0.3328614990F, 0.3333291186F, 0.3337969033F, 0.3342648525F,
0.3347329658F, 0.3352012427F, 0.3356696825F, 0.3361382849F,
0.3366070492F, 0.3370759749F, 0.3375450616F, 0.3380143087F,
0.3384837156F, 0.3389532819F, 0.3394230071F, 0.3398928905F,
0.3403629317F, 0.3408331302F, 0.3413034854F, 0.3417739967F,
0.3422446638F, 0.3427154860F, 0.3431864628F, 0.3436575938F,
0.3441288782F, 0.3446003158F, 0.3450719058F, 0.3455436478F,
0.3460155412F, 0.3464875856F, 0.3469597804F, 0.3474321250F,
0.3479046189F, 0.3483772617F, 0.3488500527F, 0.3493229914F,
0.3497960774F, 0.3502693100F, 0.3507426887F, 0.3512162131F,
0.3516898825F, 0.3521636965F, 0.3526376545F, 0.3531117559F,
0.3535860003F, 0.3540603870F, 0.3545349157F, 0.3550095856F,
0.3554843964F, 0.3559593474F, 0.3564344381F, 0.3569096680F,
0.3573850366F, 0.3578605432F, 0.3583361875F, 0.3588119687F,
0.3592878865F, 0.3597639402F, 0.3602401293F, 0.3607164533F,
0.3611929117F, 0.3616695038F, 0.3621462292F, 0.3626230873F,
0.3631000776F, 0.3635771995F, 0.3640544525F, 0.3645318360F,
0.3650093496F, 0.3654869926F, 0.3659647645F, 0.3664426648F,
0.3669206930F, 0.3673988484F, 0.3678771306F, 0.3683555390F,
0.3688340731F, 0.3693127322F, 0.3697915160F, 0.3702704237F,
0.3707494549F, 0.3712286091F, 0.3717078857F, 0.3721872840F,
0.3726668037F, 0.3731464441F, 0.3736262047F, 0.3741060850F,
0.3745860843F, 0.3750662023F, 0.3755464382F, 0.3760267915F,
0.3765072618F, 0.3769878484F, 0.3774685509F, 0.3779493686F,
0.3784303010F, 0.3789113475F, 0.3793925076F, 0.3798737809F,
0.3803551666F, 0.3808366642F, 0.3813182733F, 0.3817999932F,
0.3822818234F, 0.3827637633F, 0.3832458124F, 0.3837279702F,
0.3842102360F, 0.3846926093F, 0.3851750897F, 0.3856576764F,
0.3861403690F, 0.3866231670F, 0.3871060696F, 0.3875890765F,
0.3880721870F, 0.3885554007F, 0.3890387168F, 0.3895221349F,
0.3900056544F, 0.3904892748F, 0.3909729955F, 0.3914568160F,
0.3919407356F, 0.3924247539F, 0.3929088702F, 0.3933930841F,
0.3938773949F, 0.3943618021F, 0.3948463052F, 0.3953309035F,
0.3958155966F, 0.3963003838F, 0.3967852646F, 0.3972702385F,
0.3977553048F, 0.3982404631F, 0.3987257127F, 0.3992110531F,
0.3996964838F, 0.4001820041F, 0.4006676136F, 0.4011533116F,
0.4016390976F, 0.4021249710F, 0.4026109313F, 0.4030969779F,
0.4035831102F, 0.4040693277F, 0.4045556299F, 0.4050420160F,
0.4055284857F, 0.4060150383F, 0.4065016732F, 0.4069883899F,
0.4074751879F, 0.4079620665F, 0.4084490252F, 0.4089360635F,
0.4094231807F, 0.4099103763F, 0.4103976498F, 0.4108850005F,
0.4113724280F, 0.4118599315F, 0.4123475107F, 0.4128351648F,
0.4133228934F, 0.4138106959F, 0.4142985716F, 0.4147865201F,
0.4152745408F, 0.4157626330F, 0.4162507963F, 0.4167390301F,
0.4172273337F, 0.4177157067F, 0.4182041484F, 0.4186926583F,
0.4191812359F, 0.4196698805F, 0.4201585915F, 0.4206473685F,
0.4211362108F, 0.4216251179F, 0.4221140892F, 0.4226031241F,
0.4230922221F, 0.4235813826F, 0.4240706050F, 0.4245598887F,
0.4250492332F, 0.4255386379F, 0.4260281022F, 0.4265176256F,
0.4270072075F, 0.4274968473F, 0.4279865445F, 0.4284762984F,
0.4289661086F, 0.4294559743F, 0.4299458951F, 0.4304358704F,
0.4309258996F, 0.4314159822F, 0.4319061175F, 0.4323963050F,
0.4328865441F, 0.4333768342F, 0.4338671749F, 0.4343575654F,
0.4348480052F, 0.4353384938F, 0.4358290306F, 0.4363196149F,
0.4368102463F, 0.4373009241F, 0.4377916478F, 0.4382824168F,
0.4387732305F, 0.4392640884F, 0.4397549899F, 0.4402459343F,
0.4407369212F, 0.4412279499F, 0.4417190198F, 0.4422101305F,
0.4427012813F, 0.4431924717F, 0.4436837010F, 0.4441749686F,
0.4446662742F, 0.4451576169F, 0.4456489963F, 0.4461404118F,
0.4466318628F, 0.4471233487F, 0.4476148690F, 0.4481064230F,
0.4485980103F, 0.4490896302F, 0.4495812821F, 0.4500729654F,
0.4505646797F, 0.4510564243F, 0.4515481986F, 0.4520400021F,
0.4525318341F, 0.4530236942F, 0.4535155816F, 0.4540074959F,
0.4544994365F, 0.4549914028F, 0.4554833941F, 0.4559754100F,
0.4564674499F, 0.4569595131F, 0.4574515991F, 0.4579437074F,
0.4584358372F, 0.4589279881F, 0.4594201595F, 0.4599123508F,
0.4604045615F, 0.4608967908F, 0.4613890383F, 0.4618813034F,
0.4623735855F, 0.4628658841F, 0.4633581984F, 0.4638505281F,
0.4643428724F, 0.4648352308F, 0.4653276028F, 0.4658199877F,
0.4663123849F, 0.4668047940F, 0.4672972143F, 0.4677896451F,
0.4682820861F, 0.4687745365F, 0.4692669958F, 0.4697594634F,
0.4702519387F, 0.4707444211F, 0.4712369102F, 0.4717294052F,
0.4722219056F, 0.4727144109F, 0.4732069204F, 0.4736994336F,
0.4741919498F, 0.4746844686F, 0.4751769893F, 0.4756695113F,
0.4761620341F, 0.4766545571F, 0.4771470797F, 0.4776396013F,
0.4781321213F, 0.4786246392F, 0.4791171544F, 0.4796096663F,
0.4801021744F, 0.4805946779F, 0.4810871765F, 0.4815796694F,
0.4820721561F, 0.4825646360F, 0.4830571086F, 0.4835495732F,
0.4840420293F, 0.4845344763F, 0.4850269136F, 0.4855193407F,
0.4860117569F, 0.4865041617F, 0.4869965545F, 0.4874889347F,
0.4879813018F, 0.4884736551F, 0.4889659941F, 0.4894583182F,
0.4899506268F, 0.4904429193F, 0.4909351952F, 0.4914274538F,
0.4919196947F, 0.4924119172F, 0.4929041207F, 0.4933963046F,
0.4938884685F, 0.4943806116F, 0.4948727335F, 0.4953648335F,
0.4958569110F, 0.4963489656F, 0.4968409965F, 0.4973330032F,
0.4978249852F, 0.4983169419F, 0.4988088726F, 0.4993007768F,
0.4997926539F, 0.5002845034F, 0.5007763247F, 0.5012681171F,
0.5017598801F, 0.5022516132F, 0.5027433157F, 0.5032349871F,
0.5037266268F, 0.5042182341F, 0.5047098086F, 0.5052013497F,
0.5056928567F, 0.5061843292F, 0.5066757664F, 0.5071671679F,
0.5076585330F, 0.5081498613F, 0.5086411520F, 0.5091324047F,
0.5096236187F, 0.5101147934F, 0.5106059284F, 0.5110970230F,
0.5115880766F, 0.5120790887F, 0.5125700587F, 0.5130609860F,
0.5135518700F, 0.5140427102F, 0.5145335059F, 0.5150242566F,
0.5155149618F, 0.5160056208F, 0.5164962331F, 0.5169867980F,
0.5174773151F, 0.5179677837F, 0.5184582033F, 0.5189485733F,
0.5194388931F, 0.5199291621F, 0.5204193798F, 0.5209095455F,
0.5213996588F, 0.5218897190F, 0.5223797256F, 0.5228696779F,
0.5233595755F, 0.5238494177F, 0.5243392039F, 0.5248289337F,
0.5253186063F, 0.5258082213F, 0.5262977781F, 0.5267872760F,
0.5272767146F, 0.5277660932F, 0.5282554112F, 0.5287446682F,
0.5292338635F, 0.5297229965F, 0.5302120667F, 0.5307010736F,
0.5311900164F, 0.5316788947F, 0.5321677079F, 0.5326564554F,
0.5331451366F, 0.5336337511F, 0.5341222981F, 0.5346107771F,
0.5350991876F, 0.5355875290F, 0.5360758007F, 0.5365640021F,
0.5370521327F, 0.5375401920F, 0.5380281792F, 0.5385160939F,
0.5390039355F, 0.5394917034F, 0.5399793971F, 0.5404670159F,
0.5409545594F, 0.5414420269F, 0.5419294179F, 0.5424167318F,
0.5429039680F, 0.5433911261F, 0.5438782053F, 0.5443652051F,
0.5448521250F, 0.5453389644F, 0.5458257228F, 0.5463123995F,
0.5467989940F, 0.5472855057F, 0.5477719341F, 0.5482582786F,
0.5487445387F, 0.5492307137F, 0.5497168031F, 0.5502028063F,
0.5506887228F, 0.5511745520F, 0.5516602934F, 0.5521459463F,
0.5526315103F, 0.5531169847F, 0.5536023690F, 0.5540876626F,
0.5545728649F, 0.5550579755F, 0.5555429937F, 0.5560279189F,
0.5565127507F, 0.5569974884F, 0.5574821315F, 0.5579666794F,
0.5584511316F, 0.5589354875F, 0.5594197465F, 0.5599039080F,
0.5603879716F, 0.5608719367F, 0.5613558026F, 0.5618395689F,
0.5623232350F, 0.5628068002F, 0.5632902642F, 0.5637736262F,
0.5642568858F, 0.5647400423F, 0.5652230953F, 0.5657060442F,
0.5661888883F, 0.5666716272F, 0.5671542603F, 0.5676367870F,
0.5681192069F, 0.5686015192F, 0.5690837235F, 0.5695658192F,
0.5700478058F, 0.5705296827F, 0.5710114494F, 0.5714931052F,
0.5719746497F, 0.5724560822F, 0.5729374023F, 0.5734186094F,
0.5738997029F, 0.5743806823F, 0.5748615470F, 0.5753422965F,
0.5758229301F, 0.5763034475F, 0.5767838480F, 0.5772641310F,
0.5777442960F, 0.5782243426F, 0.5787042700F, 0.5791840778F,
0.5796637654F, 0.5801433322F, 0.5806227778F, 0.5811021016F,
0.5815813029F, 0.5820603814F, 0.5825393363F, 0.5830181673F,
0.5834968737F, 0.5839754549F, 0.5844539105F, 0.5849322399F,
0.5854104425F, 0.5858885179F, 0.5863664653F, 0.5868442844F,
0.5873219746F, 0.5877995353F, 0.5882769660F, 0.5887542661F,
0.5892314351F, 0.5897084724F, 0.5901853776F, 0.5906621500F,
0.5911387892F, 0.5916152945F, 0.5920916655F, 0.5925679016F,
0.5930440022F, 0.5935199669F, 0.5939957950F, 0.5944714861F,
0.5949470396F, 0.5954224550F, 0.5958977317F, 0.5963728692F,
0.5968478669F, 0.5973227244F, 0.5977974411F, 0.5982720163F,
0.5987464497F, 0.5992207407F, 0.5996948887F, 0.6001688932F,
0.6006427537F, 0.6011164696F, 0.6015900405F, 0.6020634657F,
0.6025367447F, 0.6030098770F, 0.6034828621F, 0.6039556995F,
0.6044283885F, 0.6049009288F, 0.6053733196F, 0.6058455606F,
0.6063176512F, 0.6067895909F, 0.6072613790F, 0.6077330152F,
0.6082044989F, 0.6086758295F, 0.6091470065F, 0.6096180294F,
0.6100888977F, 0.6105596108F, 0.6110301682F, 0.6115005694F,
0.6119708139F, 0.6124409011F, 0.6129108305F, 0.6133806017F,
0.6138502139F, 0.6143196669F, 0.6147889599F, 0.6152580926F,
0.6157270643F, 0.6161958746F, 0.6166645230F, 0.6171330088F,
0.6176013317F, 0.6180694910F, 0.6185374863F, 0.6190053171F,
0.6194729827F, 0.6199404828F, 0.6204078167F, 0.6208749841F,
0.6213419842F, 0.6218088168F, 0.6222754811F, 0.6227419768F,
0.6232083032F, 0.6236744600F, 0.6241404465F, 0.6246062622F,
0.6250719067F, 0.6255373795F, 0.6260026799F, 0.6264678076F,
0.6269327619F, 0.6273975425F, 0.6278621487F, 0.6283265800F,
0.6287908361F, 0.6292549163F, 0.6297188201F, 0.6301825471F,
0.6306460966F, 0.6311094683F, 0.6315726617F, 0.6320356761F,
0.6324985111F, 0.6329611662F, 0.6334236410F, 0.6338859348F,
0.6343480472F, 0.6348099777F, 0.6352717257F, 0.6357332909F,
0.6361946726F, 0.6366558704F, 0.6371168837F, 0.6375777122F,
0.6380383552F, 0.6384988123F, 0.6389590830F, 0.6394191668F,
0.6398790631F, 0.6403387716F, 0.6407982916F, 0.6412576228F,
0.6417167645F, 0.6421757163F, 0.6426344778F, 0.6430930483F,
0.6435514275F, 0.6440096149F, 0.6444676098F, 0.6449254119F,
0.6453830207F, 0.6458404356F, 0.6462976562F, 0.6467546820F,
0.6472115125F, 0.6476681472F, 0.6481245856F, 0.6485808273F,
0.6490368717F, 0.6494927183F, 0.6499483667F, 0.6504038164F,
0.6508590670F, 0.6513141178F, 0.6517689684F, 0.6522236185F,
0.6526780673F, 0.6531323146F, 0.6535863598F, 0.6540402024F,
0.6544938419F, 0.6549472779F, 0.6554005099F, 0.6558535373F,
0.6563063598F, 0.6567589769F, 0.6572113880F, 0.6576635927F,
0.6581155906F, 0.6585673810F, 0.6590189637F, 0.6594703380F,
0.6599215035F, 0.6603724598F, 0.6608232064F, 0.6612737427F,
0.6617240684F, 0.6621741829F, 0.6626240859F, 0.6630737767F,
0.6635232550F, 0.6639725202F, 0.6644215720F, 0.6648704098F,
0.6653190332F, 0.6657674417F, 0.6662156348F, 0.6666636121F,
0.6671113731F, 0.6675589174F, 0.6680062445F, 0.6684533538F,
0.6689002450F, 0.6693469177F, 0.6697933712F, 0.6702396052F,
0.6706856193F, 0.6711314129F, 0.6715769855F, 0.6720223369F,
0.6724674664F, 0.6729123736F, 0.6733570581F, 0.6738015194F,
0.6742457570F, 0.6746897706F, 0.6751335596F, 0.6755771236F,
0.6760204621F, 0.6764635747F, 0.6769064609F, 0.6773491204F,
0.6777915525F, 0.6782337570F, 0.6786757332F, 0.6791174809F,
0.6795589995F, 0.6800002886F, 0.6804413477F, 0.6808821765F,
0.6813227743F, 0.6817631409F, 0.6822032758F, 0.6826431785F,
0.6830828485F, 0.6835222855F, 0.6839614890F, 0.6844004585F,
0.6848391936F, 0.6852776939F, 0.6857159589F, 0.6861539883F,
0.6865917815F, 0.6870293381F, 0.6874666576F, 0.6879037398F,
0.6883405840F, 0.6887771899F, 0.6892135571F, 0.6896496850F,
0.6900855733F, 0.6905212216F, 0.6909566294F, 0.6913917963F,
0.6918267218F, 0.6922614055F, 0.6926958471F, 0.6931300459F,
0.6935640018F, 0.6939977141F, 0.6944311825F, 0.6948644066F,
0.6952973859F, 0.6957301200F, 0.6961626085F, 0.6965948510F,
0.6970268470F, 0.6974585961F, 0.6978900980F, 0.6983213521F,
0.6987523580F, 0.6991831154F, 0.6996136238F, 0.7000438828F,
0.7004738921F, 0.7009036510F, 0.7013331594F, 0.7017624166F,
0.7021914224F, 0.7026201763F, 0.7030486779F, 0.7034769268F,
0.7039049226F, 0.7043326648F, 0.7047601531F, 0.7051873870F,
0.7056143662F, 0.7060410902F, 0.7064675586F, 0.7068937711F,
0.7073197271F, 0.7077454264F, 0.7081708684F, 0.7085960529F,
0.7090209793F, 0.7094456474F, 0.7098700566F, 0.7102942066F,
0.7107180970F, 0.7111417274F, 0.7115650974F, 0.7119882066F,
0.7124110545F, 0.7128336409F, 0.7132559653F, 0.7136780272F,
0.7140998264F, 0.7145213624F, 0.7149426348F, 0.7153636433F,
0.7157843874F, 0.7162048668F, 0.7166250810F, 0.7170450296F,
0.7174647124F, 0.7178841289F, 0.7183032786F, 0.7187221613F,
0.7191407765F, 0.7195591239F, 0.7199772030F, 0.7203950135F,
0.7208125550F, 0.7212298271F, 0.7216468294F, 0.7220635616F,
0.7224800233F, 0.7228962140F, 0.7233121335F, 0.7237277813F,
0.7241431571F, 0.7245582604F, 0.7249730910F, 0.7253876484F,
0.7258019322F, 0.7262159422F, 0.7266296778F, 0.7270431388F,
0.7274563247F, 0.7278692353F, 0.7282818700F, 0.7286942287F,
0.7291063108F, 0.7295181160F, 0.7299296440F, 0.7303408944F,
0.7307518669F, 0.7311625609F, 0.7315729763F, 0.7319831126F,
0.7323929695F, 0.7328025466F, 0.7332118435F, 0.7336208600F,
0.7340295955F, 0.7344380499F, 0.7348462226F, 0.7352541134F,
0.7356617220F, 0.7360690478F, 0.7364760907F, 0.7368828502F,
0.7372893259F, 0.7376955176F, 0.7381014249F, 0.7385070475F,
0.7389123849F, 0.7393174368F, 0.7397222029F, 0.7401266829F,
0.7405308763F, 0.7409347829F, 0.7413384023F, 0.7417417341F,
0.7421447780F, 0.7425475338F, 0.7429500009F, 0.7433521791F,
0.7437540681F, 0.7441556674F, 0.7445569769F, 0.7449579960F,
0.7453587245F, 0.7457591621F, 0.7461593084F, 0.7465591631F,
0.7469587259F, 0.7473579963F, 0.7477569741F, 0.7481556590F,
0.7485540506F, 0.7489521486F, 0.7493499526F, 0.7497474623F,
0.7501446775F, 0.7505415977F, 0.7509382227F, 0.7513345521F,
0.7517305856F, 0.7521263229F, 0.7525217636F, 0.7529169074F,
0.7533117541F, 0.7537063032F, 0.7541005545F, 0.7544945076F,
0.7548881623F, 0.7552815182F, 0.7556745749F, 0.7560673323F,
0.7564597899F, 0.7568519474F, 0.7572438046F, 0.7576353611F,
0.7580266166F, 0.7584175708F, 0.7588082235F, 0.7591985741F,
0.7595886226F, 0.7599783685F, 0.7603678116F, 0.7607569515F,
0.7611457879F, 0.7615343206F, 0.7619225493F, 0.7623104735F,
0.7626980931F, 0.7630854078F, 0.7634724171F, 0.7638591209F,
0.7642455188F, 0.7646316106F, 0.7650173959F, 0.7654028744F,
0.7657880459F, 0.7661729100F, 0.7665574664F, 0.7669417150F,
0.7673256553F, 0.7677092871F, 0.7680926100F, 0.7684756239F,
0.7688583284F, 0.7692407232F, 0.7696228080F, 0.7700045826F,
0.7703860467F, 0.7707671999F, 0.7711480420F, 0.7715285728F,
0.7719087918F, 0.7722886989F, 0.7726682938F, 0.7730475762F,
0.7734265458F, 0.7738052023F, 0.7741835454F, 0.7745615750F,
0.7749392906F, 0.7753166921F, 0.7756937791F, 0.7760705514F,
0.7764470087F, 0.7768231508F, 0.7771989773F, 0.7775744880F,
0.7779496827F, 0.7783245610F, 0.7786991227F, 0.7790733676F,
0.7794472953F, 0.7798209056F, 0.7801941982F, 0.7805671729F,
0.7809398294F, 0.7813121675F, 0.7816841869F, 0.7820558873F,
0.7824272684F, 0.7827983301F, 0.7831690720F, 0.7835394940F,
0.7839095957F, 0.7842793768F, 0.7846488373F, 0.7850179767F,
0.7853867948F, 0.7857552914F, 0.7861234663F, 0.7864913191F,
0.7868588497F, 0.7872260578F, 0.7875929431F, 0.7879595055F,
0.7883257445F, 0.7886916601F, 0.7890572520F, 0.7894225198F,
0.7897874635F, 0.7901520827F, 0.7905163772F, 0.7908803468F,
0.7912439912F, 0.7916073102F, 0.7919703035F, 0.7923329710F,
0.7926953124F, 0.7930573274F, 0.7934190158F, 0.7937803774F,
0.7941414120F, 0.7945021193F, 0.7948624991F, 0.7952225511F,
0.7955822752F, 0.7959416711F, 0.7963007387F, 0.7966594775F,
0.7970178875F, 0.7973759685F, 0.7977337201F, 0.7980911422F,
0.7984482346F, 0.7988049970F, 0.7991614292F, 0.7995175310F,
0.7998733022F, 0.8002287426F, 0.8005838519F, 0.8009386299F,
0.8012930765F, 0.8016471914F, 0.8020009744F, 0.8023544253F,
0.8027075438F, 0.8030603298F, 0.8034127831F, 0.8037649035F,
0.8041166906F, 0.8044681445F, 0.8048192647F, 0.8051700512F,
0.8055205038F, 0.8058706222F, 0.8062204062F, 0.8065698556F,
0.8069189702F, 0.8072677499F, 0.8076161944F, 0.8079643036F,
0.8083120772F, 0.8086595151F, 0.8090066170F, 0.8093533827F,
0.8096998122F, 0.8100459051F, 0.8103916613F, 0.8107370806F,
0.8110821628F, 0.8114269077F, 0.8117713151F, 0.8121153849F,
0.8124591169F, 0.8128025108F, 0.8131455666F, 0.8134882839F,
0.8138306627F, 0.8141727027F, 0.8145144038F, 0.8148557658F,
0.8151967886F, 0.8155374718F, 0.8158778154F, 0.8162178192F,
0.8165574830F, 0.8168968067F, 0.8172357900F, 0.8175744328F,
0.8179127349F, 0.8182506962F, 0.8185883164F, 0.8189255955F,
0.8192625332F, 0.8195991295F, 0.8199353840F, 0.8202712967F,
0.8206068673F, 0.8209420958F, 0.8212769820F, 0.8216115256F,
0.8219457266F, 0.8222795848F, 0.8226131000F, 0.8229462721F,
0.8232791009F, 0.8236115863F, 0.8239437280F, 0.8242755260F,
0.8246069801F, 0.8249380901F, 0.8252688559F, 0.8255992774F,
0.8259293544F, 0.8262590867F, 0.8265884741F, 0.8269175167F,
0.8272462141F, 0.8275745663F, 0.8279025732F, 0.8282302344F,
0.8285575501F, 0.8288845199F, 0.8292111437F, 0.8295374215F,
0.8298633530F, 0.8301889382F, 0.8305141768F, 0.8308390688F,
0.8311636141F, 0.8314878124F, 0.8318116637F, 0.8321351678F,
0.8324583246F, 0.8327811340F, 0.8331035957F, 0.8334257098F,
0.8337474761F, 0.8340688944F, 0.8343899647F, 0.8347106867F,
0.8350310605F, 0.8353510857F, 0.8356707624F, 0.8359900904F,
0.8363090696F, 0.8366276999F, 0.8369459811F, 0.8372639131F,
0.8375814958F, 0.8378987292F, 0.8382156130F, 0.8385321472F,
0.8388483316F, 0.8391641662F, 0.8394796508F, 0.8397947853F,
0.8401095697F, 0.8404240037F, 0.8407380873F, 0.8410518204F,
0.8413652029F, 0.8416782347F, 0.8419909156F, 0.8423032456F,
0.8426152245F, 0.8429268523F, 0.8432381289F, 0.8435490541F,
0.8438596279F, 0.8441698502F, 0.8444797208F, 0.8447892396F,
0.8450984067F, 0.8454072218F, 0.8457156849F, 0.8460237959F,
0.8463315547F, 0.8466389612F, 0.8469460154F, 0.8472527170F,
0.8475590661F, 0.8478650625F, 0.8481707063F, 0.8484759971F,
0.8487809351F, 0.8490855201F, 0.8493897521F, 0.8496936308F,
0.8499971564F, 0.8503003286F, 0.8506031474F, 0.8509056128F,
0.8512077246F, 0.8515094828F, 0.8518108872F, 0.8521119379F,
0.8524126348F, 0.8527129777F, 0.8530129666F, 0.8533126015F,
0.8536118822F, 0.8539108087F, 0.8542093809F, 0.8545075988F,
0.8548054623F, 0.8551029712F, 0.8554001257F, 0.8556969255F,
0.8559933707F, 0.8562894611F, 0.8565851968F, 0.8568805775F,
0.8571756034F, 0.8574702743F, 0.8577645902F, 0.8580585509F,
0.8583521566F, 0.8586454070F, 0.8589383021F, 0.8592308420F,
0.8595230265F, 0.8598148556F, 0.8601063292F, 0.8603974473F,
0.8606882098F, 0.8609786167F, 0.8612686680F, 0.8615583636F,
0.8618477034F, 0.8621366874F, 0.8624253156F, 0.8627135878F,
0.8630015042F, 0.8632890646F, 0.8635762690F, 0.8638631173F,
0.8641496096F, 0.8644357457F, 0.8647215257F, 0.8650069495F,
0.8652920171F, 0.8655767283F, 0.8658610833F, 0.8661450820F,
0.8664287243F, 0.8667120102F, 0.8669949397F, 0.8672775127F,
0.8675597293F, 0.8678415894F, 0.8681230929F, 0.8684042398F,
0.8686850302F, 0.8689654640F, 0.8692455412F, 0.8695252617F,
0.8698046255F, 0.8700836327F, 0.8703622831F, 0.8706405768F,
0.8709185138F, 0.8711960940F, 0.8714733174F, 0.8717501840F,
0.8720266939F, 0.8723028469F, 0.8725786430F, 0.8728540824F,
0.8731291648F, 0.8734038905F, 0.8736782592F, 0.8739522711F,
0.8742259261F, 0.8744992242F, 0.8747721653F, 0.8750447496F,
0.8753169770F, 0.8755888475F, 0.8758603611F, 0.8761315177F,
0.8764023175F, 0.8766727603F, 0.8769428462F, 0.8772125752F,
0.8774819474F, 0.8777509626F, 0.8780196209F, 0.8782879224F,
0.8785558669F, 0.8788234546F, 0.8790906854F, 0.8793575594F,
0.8796240765F, 0.8798902368F, 0.8801560403F, 0.8804214870F,
0.8806865768F, 0.8809513099F, 0.8812156863F, 0.8814797059F,
0.8817433687F, 0.8820066749F, 0.8822696243F, 0.8825322171F,
0.8827944532F, 0.8830563327F, 0.8833178556F, 0.8835790219F,
0.8838398316F, 0.8841002848F, 0.8843603815F, 0.8846201217F,
0.8848795054F, 0.8851385327F, 0.8853972036F, 0.8856555182F,
0.8859134764F, 0.8861710783F, 0.8864283239F, 0.8866852133F,
0.8869417464F, 0.8871979234F, 0.8874537443F, 0.8877092090F,
0.8879643177F, 0.8882190704F, 0.8884734671F, 0.8887275078F,
0.8889811927F, 0.8892345216F, 0.8894874948F, 0.8897401122F,
0.8899923738F, 0.8902442798F, 0.8904958301F, 0.8907470248F,
0.8909978640F, 0.8912483477F, 0.8914984759F, 0.8917482487F,
0.8919976662F, 0.8922467284F, 0.8924954353F, 0.8927437871F,
0.8929917837F, 0.8932394252F, 0.8934867118F, 0.8937336433F,
0.8939802199F, 0.8942264417F, 0.8944723087F, 0.8947178210F,
0.8949629785F, 0.8952077815F, 0.8954522299F, 0.8956963239F,
0.8959400634F, 0.8961834486F, 0.8964264795F, 0.8966691561F,
0.8969114786F, 0.8971534470F, 0.8973950614F, 0.8976363219F,
0.8978772284F, 0.8981177812F, 0.8983579802F, 0.8985978256F,
0.8988373174F, 0.8990764556F, 0.8993152405F, 0.8995536720F,
0.8997917502F, 0.9000294751F, 0.9002668470F, 0.9005038658F,
0.9007405317F, 0.9009768446F, 0.9012128048F, 0.9014484123F,
0.9016836671F, 0.9019185693F, 0.9021531191F, 0.9023873165F,
0.9026211616F, 0.9028546546F, 0.9030877954F, 0.9033205841F,
0.9035530210F, 0.9037851059F, 0.9040168392F, 0.9042482207F,
0.9044792507F, 0.9047099293F, 0.9049402564F, 0.9051702323F,
0.9053998569F, 0.9056291305F, 0.9058580531F, 0.9060866248F,
0.9063148457F, 0.9065427159F, 0.9067702355F, 0.9069974046F,
0.9072242233F, 0.9074506917F, 0.9076768100F, 0.9079025782F,
0.9081279964F, 0.9083530647F, 0.9085777833F, 0.9088021523F,
0.9090261717F, 0.9092498417F, 0.9094731623F, 0.9096961338F,
0.9099187561F, 0.9101410295F, 0.9103629540F, 0.9105845297F,
0.9108057568F, 0.9110266354F, 0.9112471656F, 0.9114673475F,
0.9116871812F, 0.9119066668F, 0.9121258046F, 0.9123445945F,
0.9125630367F, 0.9127811314F, 0.9129988786F, 0.9132162785F,
0.9134333312F, 0.9136500368F, 0.9138663954F, 0.9140824073F,
0.9142980724F, 0.9145133910F, 0.9147283632F, 0.9149429890F,
0.9151572687F, 0.9153712023F, 0.9155847900F, 0.9157980319F,
0.9160109282F, 0.9162234790F, 0.9164356844F, 0.9166475445F,
0.9168590595F, 0.9170702296F, 0.9172810548F, 0.9174915354F,
0.9177016714F, 0.9179114629F, 0.9181209102F, 0.9183300134F,
0.9185387726F, 0.9187471879F, 0.9189552595F, 0.9191629876F,
0.9193703723F, 0.9195774136F, 0.9197841119F, 0.9199904672F,
0.9201964797F, 0.9204021495F, 0.9206074767F, 0.9208124616F,
0.9210171043F, 0.9212214049F, 0.9214253636F, 0.9216289805F,
0.9218322558F, 0.9220351896F, 0.9222377821F, 0.9224400335F,
0.9226419439F, 0.9228435134F, 0.9230447423F, 0.9232456307F,
0.9234461787F, 0.9236463865F, 0.9238462543F, 0.9240457822F,
0.9242449704F, 0.9244438190F, 0.9246423282F, 0.9248404983F,
0.9250383293F, 0.9252358214F, 0.9254329747F, 0.9256297896F,
0.9258262660F, 0.9260224042F, 0.9262182044F, 0.9264136667F,
0.9266087913F, 0.9268035783F, 0.9269980280F, 0.9271921405F,
0.9273859160F, 0.9275793546F, 0.9277724566F, 0.9279652221F,
0.9281576513F, 0.9283497443F, 0.9285415014F, 0.9287329227F,
0.9289240084F, 0.9291147586F, 0.9293051737F, 0.9294952536F,
0.9296849987F, 0.9298744091F, 0.9300634850F, 0.9302522266F,
0.9304406340F, 0.9306287074F, 0.9308164471F, 0.9310038532F,
0.9311909259F, 0.9313776654F, 0.9315640719F, 0.9317501455F,
0.9319358865F, 0.9321212951F, 0.9323063713F, 0.9324911155F,
0.9326755279F, 0.9328596085F, 0.9330433577F, 0.9332267756F,
0.9334098623F, 0.9335926182F, 0.9337750434F, 0.9339571380F,
0.9341389023F, 0.9343203366F, 0.9345014409F, 0.9346822155F,
0.9348626606F, 0.9350427763F, 0.9352225630F, 0.9354020207F,
0.9355811498F, 0.9357599503F, 0.9359384226F, 0.9361165667F,
0.9362943830F, 0.9364718716F, 0.9366490327F, 0.9368258666F,
0.9370023733F, 0.9371785533F, 0.9373544066F, 0.9375299335F,
0.9377051341F, 0.9378800087F, 0.9380545576F, 0.9382287809F,
0.9384026787F, 0.9385762515F, 0.9387494993F, 0.9389224223F,
0.9390950209F, 0.9392672951F, 0.9394392453F, 0.9396108716F,
0.9397821743F, 0.9399531536F, 0.9401238096F, 0.9402941427F,
0.9404641530F, 0.9406338407F, 0.9408032061F, 0.9409722495F,
0.9411409709F, 0.9413093707F, 0.9414774491F, 0.9416452062F,
0.9418126424F, 0.9419797579F, 0.9421465528F, 0.9423130274F,
0.9424791819F, 0.9426450166F, 0.9428105317F, 0.9429757274F,
0.9431406039F, 0.9433051616F, 0.9434694005F, 0.9436333209F,
0.9437969232F, 0.9439602074F, 0.9441231739F, 0.9442858229F,
0.9444481545F, 0.9446101691F, 0.9447718669F, 0.9449332481F,
0.9450943129F, 0.9452550617F, 0.9454154945F, 0.9455756118F,
0.9457354136F, 0.9458949003F, 0.9460540721F, 0.9462129292F,
0.9463714719F, 0.9465297003F, 0.9466876149F, 0.9468452157F,
0.9470025031F, 0.9471594772F, 0.9473161384F, 0.9474724869F,
0.9476285229F, 0.9477842466F, 0.9479396584F, 0.9480947585F,
0.9482495470F, 0.9484040243F, 0.9485581906F, 0.9487120462F,
0.9488655913F, 0.9490188262F, 0.9491717511F, 0.9493243662F,
0.9494766718F, 0.9496286683F, 0.9497803557F, 0.9499317345F,
0.9500828047F, 0.9502335668F, 0.9503840209F, 0.9505341673F,
0.9506840062F, 0.9508335380F, 0.9509827629F, 0.9511316810F,
0.9512802928F, 0.9514285984F, 0.9515765982F, 0.9517242923F,
0.9518716810F, 0.9520187646F, 0.9521655434F, 0.9523120176F,
0.9524581875F, 0.9526040534F, 0.9527496154F, 0.9528948739F,
0.9530398292F, 0.9531844814F, 0.9533288310F, 0.9534728780F,
0.9536166229F, 0.9537600659F, 0.9539032071F, 0.9540460470F,
0.9541885858F, 0.9543308237F, 0.9544727611F, 0.9546143981F,
0.9547557351F, 0.9548967723F, 0.9550375100F, 0.9551779485F,
0.9553180881F, 0.9554579290F, 0.9555974714F, 0.9557367158F,
0.9558756623F, 0.9560143112F, 0.9561526628F, 0.9562907174F,
0.9564284752F, 0.9565659366F, 0.9567031017F, 0.9568399710F,
0.9569765446F, 0.9571128229F, 0.9572488061F, 0.9573844944F,
0.9575198883F, 0.9576549879F, 0.9577897936F, 0.9579243056F,
0.9580585242F, 0.9581924497F, 0.9583260824F, 0.9584594226F,
0.9585924705F, 0.9587252264F, 0.9588576906F, 0.9589898634F,
0.9591217452F, 0.9592533360F, 0.9593846364F, 0.9595156465F,
0.9596463666F, 0.9597767971F, 0.9599069382F, 0.9600367901F,
0.9601663533F, 0.9602956279F, 0.9604246143F, 0.9605533128F,
0.9606817236F, 0.9608098471F, 0.9609376835F, 0.9610652332F,
0.9611924963F, 0.9613194733F, 0.9614461644F, 0.9615725699F,
0.9616986901F, 0.9618245253F, 0.9619500757F, 0.9620753418F,
0.9622003238F, 0.9623250219F, 0.9624494365F, 0.9625735679F,
0.9626974163F, 0.9628209821F, 0.9629442656F, 0.9630672671F,
0.9631899868F, 0.9633124251F, 0.9634345822F, 0.9635564585F,
0.9636780543F, 0.9637993699F, 0.9639204056F, 0.9640411616F,
0.9641616383F, 0.9642818359F, 0.9644017549F, 0.9645213955F,
0.9646407579F, 0.9647598426F, 0.9648786497F, 0.9649971797F,
0.9651154328F, 0.9652334092F, 0.9653511095F, 0.9654685337F,
0.9655856823F, 0.9657025556F, 0.9658191538F, 0.9659354773F,
0.9660515263F, 0.9661673013F, 0.9662828024F, 0.9663980300F,
0.9665129845F, 0.9666276660F, 0.9667420750F, 0.9668562118F,
0.9669700766F, 0.9670836698F, 0.9671969917F, 0.9673100425F,
0.9674228227F, 0.9675353325F, 0.9676475722F, 0.9677595422F,
0.9678712428F, 0.9679826742F, 0.9680938368F, 0.9682047309F,
0.9683153569F, 0.9684257150F, 0.9685358056F, 0.9686456289F,
0.9687551853F, 0.9688644752F, 0.9689734987F, 0.9690822564F,
0.9691907483F, 0.9692989750F, 0.9694069367F, 0.9695146337F,
0.9696220663F, 0.9697292349F, 0.9698361398F, 0.9699427813F,
0.9700491597F, 0.9701552754F, 0.9702611286F, 0.9703667197F,
0.9704720490F, 0.9705771169F, 0.9706819236F, 0.9707864695F,
0.9708907549F, 0.9709947802F, 0.9710985456F, 0.9712020514F,
0.9713052981F, 0.9714082859F, 0.9715110151F, 0.9716134862F,
0.9717156993F, 0.9718176549F, 0.9719193532F, 0.9720207946F,
0.9721219794F, 0.9722229080F, 0.9723235806F, 0.9724239976F,
0.9725241593F, 0.9726240661F, 0.9727237183F, 0.9728231161F,
0.9729222601F, 0.9730211503F, 0.9731197873F, 0.9732181713F,
0.9733163027F, 0.9734141817F, 0.9735118088F, 0.9736091842F,
0.9737063083F, 0.9738031814F, 0.9738998039F, 0.9739961760F,
0.9740922981F, 0.9741881706F, 0.9742837938F, 0.9743791680F,
0.9744742935F, 0.9745691707F, 0.9746637999F, 0.9747581814F,
0.9748523157F, 0.9749462029F, 0.9750398435F, 0.9751332378F,
0.9752263861F, 0.9753192887F, 0.9754119461F, 0.9755043585F,
0.9755965262F, 0.9756884496F, 0.9757801291F, 0.9758715650F,
0.9759627575F, 0.9760537071F, 0.9761444141F, 0.9762348789F,
0.9763251016F, 0.9764150828F, 0.9765048228F, 0.9765943218F,
0.9766835802F, 0.9767725984F, 0.9768613767F, 0.9769499154F,
0.9770382149F, 0.9771262755F, 0.9772140976F, 0.9773016815F,
0.9773890275F, 0.9774761360F, 0.9775630073F, 0.9776496418F,
0.9777360398F, 0.9778222016F, 0.9779081277F, 0.9779938182F,
0.9780792736F, 0.9781644943F, 0.9782494805F, 0.9783342326F,
0.9784187509F, 0.9785030359F, 0.9785870877F, 0.9786709069F,
0.9787544936F, 0.9788378484F, 0.9789209714F, 0.9790038631F,
0.9790865238F, 0.9791689538F, 0.9792511535F, 0.9793331232F,
0.9794148633F, 0.9794963742F, 0.9795776561F, 0.9796587094F,
0.9797395345F, 0.9798201316F, 0.9799005013F, 0.9799806437F,
0.9800605593F, 0.9801402483F, 0.9802197112F, 0.9802989483F,
0.9803779600F, 0.9804567465F, 0.9805353082F, 0.9806136455F,
0.9806917587F, 0.9807696482F, 0.9808473143F, 0.9809247574F,
0.9810019778F, 0.9810789759F, 0.9811557519F, 0.9812323064F,
0.9813086395F, 0.9813847517F, 0.9814606433F, 0.9815363147F,
0.9816117662F, 0.9816869981F, 0.9817620108F, 0.9818368047F,
0.9819113801F, 0.9819857374F, 0.9820598769F, 0.9821337989F,
0.9822075038F, 0.9822809920F, 0.9823542638F, 0.9824273195F,
0.9825001596F, 0.9825727843F, 0.9826451940F, 0.9827173891F,
0.9827893700F, 0.9828611368F, 0.9829326901F, 0.9830040302F,
0.9830751574F, 0.9831460720F, 0.9832167745F, 0.9832872652F,
0.9833575444F, 0.9834276124F, 0.9834974697F, 0.9835671166F,
0.9836365535F, 0.9837057806F, 0.9837747983F, 0.9838436071F,
0.9839122072F, 0.9839805990F, 0.9840487829F, 0.9841167591F,
0.9841845282F, 0.9842520903F, 0.9843194459F, 0.9843865953F,
0.9844535389F, 0.9845202771F, 0.9845868101F, 0.9846531383F,
0.9847192622F, 0.9847851820F, 0.9848508980F, 0.9849164108F,
0.9849817205F, 0.9850468276F, 0.9851117324F, 0.9851764352F,
0.9852409365F, 0.9853052366F, 0.9853693358F, 0.9854332344F,
0.9854969330F, 0.9855604317F, 0.9856237309F, 0.9856868310F,
0.9857497325F, 0.9858124355F, 0.9858749404F, 0.9859372477F,
0.9859993577F, 0.9860612707F, 0.9861229871F, 0.9861845072F,
0.9862458315F, 0.9863069601F, 0.9863678936F, 0.9864286322F,
0.9864891764F, 0.9865495264F, 0.9866096826F, 0.9866696454F,
0.9867294152F, 0.9867889922F, 0.9868483769F, 0.9869075695F,
0.9869665706F, 0.9870253803F, 0.9870839991F, 0.9871424273F,
0.9872006653F, 0.9872587135F, 0.9873165721F, 0.9873742415F,
0.9874317222F, 0.9874890144F, 0.9875461185F, 0.9876030348F,
0.9876597638F, 0.9877163057F, 0.9877726610F, 0.9878288300F,
0.9878848130F, 0.9879406104F, 0.9879962225F, 0.9880516497F,
0.9881068924F, 0.9881619509F, 0.9882168256F, 0.9882715168F,
0.9883260249F, 0.9883803502F, 0.9884344931F, 0.9884884539F,
0.9885422331F, 0.9885958309F, 0.9886492477F, 0.9887024838F,
0.9887555397F, 0.9888084157F, 0.9888611120F, 0.9889136292F,
0.9889659675F, 0.9890181273F, 0.9890701089F, 0.9891219128F,
0.9891735392F, 0.9892249885F, 0.9892762610F, 0.9893273572F,
0.9893782774F, 0.9894290219F, 0.9894795911F, 0.9895299853F,
0.9895802049F, 0.9896302502F, 0.9896801217F, 0.9897298196F,
0.9897793443F, 0.9898286961F, 0.9898778755F, 0.9899268828F,
0.9899757183F, 0.9900243823F, 0.9900728753F, 0.9901211976F,
0.9901693495F, 0.9902173314F, 0.9902651436F, 0.9903127865F,
0.9903602605F, 0.9904075659F, 0.9904547031F, 0.9905016723F,
0.9905484740F, 0.9905951086F, 0.9906415763F, 0.9906878775F,
0.9907340126F, 0.9907799819F, 0.9908257858F, 0.9908714247F,
0.9909168988F, 0.9909622086F, 0.9910073543F, 0.9910523364F,
0.9910971552F, 0.9911418110F, 0.9911863042F, 0.9912306351F,
0.9912748042F, 0.9913188117F, 0.9913626580F, 0.9914063435F,
0.9914498684F, 0.9914932333F, 0.9915364383F, 0.9915794839F,
0.9916223703F, 0.9916650981F, 0.9917076674F, 0.9917500787F,
0.9917923323F, 0.9918344286F, 0.9918763679F, 0.9919181505F,
0.9919597769F, 0.9920012473F, 0.9920425621F, 0.9920837217F,
0.9921247263F, 0.9921655765F, 0.9922062724F, 0.9922468145F,
0.9922872030F, 0.9923274385F, 0.9923675211F, 0.9924074513F,
0.9924472294F, 0.9924868557F, 0.9925263306F, 0.9925656544F,
0.9926048275F, 0.9926438503F, 0.9926827230F, 0.9927214461F,
0.9927600199F, 0.9927984446F, 0.9928367208F, 0.9928748486F,
0.9929128285F, 0.9929506608F, 0.9929883459F, 0.9930258841F,
0.9930632757F, 0.9931005211F, 0.9931376207F, 0.9931745747F,
0.9932113836F, 0.9932480476F, 0.9932845671F, 0.9933209425F,
0.9933571742F, 0.9933932623F, 0.9934292074F, 0.9934650097F,
0.9935006696F, 0.9935361874F, 0.9935715635F, 0.9936067982F,
0.9936418919F, 0.9936768448F, 0.9937116574F, 0.9937463300F,
0.9937808629F, 0.9938152565F, 0.9938495111F, 0.9938836271F,
0.9939176047F, 0.9939514444F, 0.9939851465F, 0.9940187112F,
0.9940521391F, 0.9940854303F, 0.9941185853F, 0.9941516044F,
0.9941844879F, 0.9942172361F, 0.9942498495F, 0.9942823283F,
0.9943146729F, 0.9943468836F, 0.9943789608F, 0.9944109047F,
0.9944427158F, 0.9944743944F, 0.9945059408F, 0.9945373553F,
0.9945686384F, 0.9945997902F, 0.9946308112F, 0.9946617017F,
0.9946924621F, 0.9947230926F, 0.9947535937F, 0.9947839656F,
0.9948142086F, 0.9948443232F, 0.9948743097F, 0.9949041683F,
0.9949338995F, 0.9949635035F, 0.9949929807F, 0.9950223315F,
0.9950515561F, 0.9950806549F, 0.9951096282F, 0.9951384764F,
0.9951671998F, 0.9951957987F, 0.9952242735F, 0.9952526245F,
0.9952808520F, 0.9953089564F, 0.9953369380F, 0.9953647971F,
0.9953925340F, 0.9954201491F, 0.9954476428F, 0.9954750153F,
0.9955022670F, 0.9955293981F, 0.9955564092F, 0.9955833003F,
0.9956100720F, 0.9956367245F, 0.9956632582F, 0.9956896733F,
0.9957159703F, 0.9957421494F, 0.9957682110F, 0.9957941553F,
0.9958199828F, 0.9958456937F, 0.9958712884F, 0.9958967672F,
0.9959221305F, 0.9959473784F, 0.9959725115F, 0.9959975300F,
0.9960224342F, 0.9960472244F, 0.9960719011F, 0.9960964644F,
0.9961209148F, 0.9961452525F, 0.9961694779F, 0.9961935913F,
0.9962175930F, 0.9962414834F, 0.9962652627F, 0.9962889313F,
0.9963124895F, 0.9963359377F, 0.9963592761F, 0.9963825051F,
0.9964056250F, 0.9964286361F, 0.9964515387F, 0.9964743332F,
0.9964970198F, 0.9965195990F, 0.9965420709F, 0.9965644360F,
0.9965866946F, 0.9966088469F, 0.9966308932F, 0.9966528340F,
0.9966746695F, 0.9966964001F, 0.9967180260F, 0.9967395475F,
0.9967609651F, 0.9967822789F, 0.9968034894F, 0.9968245968F,
0.9968456014F, 0.9968665036F, 0.9968873037F, 0.9969080019F,
0.9969285987F, 0.9969490942F, 0.9969694889F, 0.9969897830F,
0.9970099769F, 0.9970300708F, 0.9970500651F, 0.9970699601F,
0.9970897561F, 0.9971094533F, 0.9971290522F, 0.9971485531F,
0.9971679561F, 0.9971872617F, 0.9972064702F, 0.9972255818F,
0.9972445968F, 0.9972635157F, 0.9972823386F, 0.9973010659F,
0.9973196980F, 0.9973382350F, 0.9973566773F, 0.9973750253F,
0.9973932791F, 0.9974114392F, 0.9974295059F, 0.9974474793F,
0.9974653599F, 0.9974831480F, 0.9975008438F, 0.9975184476F,
0.9975359598F, 0.9975533806F, 0.9975707104F, 0.9975879495F,
0.9976050981F, 0.9976221566F, 0.9976391252F, 0.9976560043F,
0.9976727941F, 0.9976894950F, 0.9977061073F, 0.9977226312F,
0.9977390671F, 0.9977554152F, 0.9977716759F, 0.9977878495F,
0.9978039361F, 0.9978199363F, 0.9978358501F, 0.9978516780F,
0.9978674202F, 0.9978830771F, 0.9978986488F, 0.9979141358F,
0.9979295383F, 0.9979448566F, 0.9979600909F, 0.9979752417F,
0.9979903091F, 0.9980052936F, 0.9980201952F, 0.9980350145F,
0.9980497515F, 0.9980644067F, 0.9980789804F, 0.9980934727F,
0.9981078841F, 0.9981222147F, 0.9981364649F, 0.9981506350F,
0.9981647253F, 0.9981787360F, 0.9981926674F, 0.9982065199F,
0.9982202936F, 0.9982339890F, 0.9982476062F, 0.9982611456F,
0.9982746074F, 0.9982879920F, 0.9983012996F, 0.9983145304F,
0.9983276849F, 0.9983407632F, 0.9983537657F, 0.9983666926F,
0.9983795442F, 0.9983923208F, 0.9984050226F, 0.9984176501F,
0.9984302033F, 0.9984426827F, 0.9984550884F, 0.9984674208F,
0.9984796802F, 0.9984918667F, 0.9985039808F, 0.9985160227F,
0.9985279926F, 0.9985398909F, 0.9985517177F, 0.9985634734F,
0.9985751583F, 0.9985867727F, 0.9985983167F, 0.9986097907F,
0.9986211949F, 0.9986325297F, 0.9986437953F, 0.9986549919F,
0.9986661199F, 0.9986771795F, 0.9986881710F, 0.9986990946F,
0.9987099507F, 0.9987207394F, 0.9987314611F, 0.9987421161F,
0.9987527045F, 0.9987632267F, 0.9987736829F, 0.9987840734F,
0.9987943985F, 0.9988046584F, 0.9988148534F, 0.9988249838F,
0.9988350498F, 0.9988450516F, 0.9988549897F, 0.9988648641F,
0.9988746753F, 0.9988844233F, 0.9988941086F, 0.9989037313F,
0.9989132918F, 0.9989227902F, 0.9989322269F, 0.9989416021F,
0.9989509160F, 0.9989601690F, 0.9989693613F, 0.9989784931F,
0.9989875647F, 0.9989965763F, 0.9990055283F, 0.9990144208F,
0.9990232541F, 0.9990320286F, 0.9990407443F, 0.9990494016F,
0.9990580008F, 0.9990665421F, 0.9990750257F, 0.9990834519F,
0.9990918209F, 0.9991001331F, 0.9991083886F, 0.9991165877F,
0.9991247307F, 0.9991328177F, 0.9991408491F, 0.9991488251F,
0.9991567460F, 0.9991646119F, 0.9991724232F, 0.9991801801F,
0.9991878828F, 0.9991955316F, 0.9992031267F, 0.9992106684F,
0.9992181569F, 0.9992255925F, 0.9992329753F, 0.9992403057F,
0.9992475839F, 0.9992548101F, 0.9992619846F, 0.9992691076F,
0.9992761793F, 0.9992832001F, 0.9992901701F, 0.9992970895F,
0.9993039587F, 0.9993107777F, 0.9993175470F, 0.9993242667F,
0.9993309371F, 0.9993375583F, 0.9993441307F, 0.9993506545F,
0.9993571298F, 0.9993635570F, 0.9993699362F, 0.9993762678F,
0.9993825519F, 0.9993887887F, 0.9993949785F, 0.9994011216F,
0.9994072181F, 0.9994132683F, 0.9994192725F, 0.9994252307F,
0.9994311434F, 0.9994370107F, 0.9994428327F, 0.9994486099F,
0.9994543423F, 0.9994600303F, 0.9994656739F, 0.9994712736F,
0.9994768294F, 0.9994823417F, 0.9994878105F, 0.9994932363F,
0.9994986191F, 0.9995039592F, 0.9995092568F, 0.9995145122F,
0.9995197256F, 0.9995248971F, 0.9995300270F, 0.9995351156F,
0.9995401630F, 0.9995451695F, 0.9995501352F, 0.9995550604F,
0.9995599454F, 0.9995647903F, 0.9995695953F, 0.9995743607F,
0.9995790866F, 0.9995837734F, 0.9995884211F, 0.9995930300F,
0.9995976004F, 0.9996021324F, 0.9996066263F, 0.9996110822F,
0.9996155004F, 0.9996198810F, 0.9996242244F, 0.9996285306F,
0.9996327999F, 0.9996370326F, 0.9996412287F, 0.9996453886F,
0.9996495125F, 0.9996536004F, 0.9996576527F, 0.9996616696F,
0.9996656512F, 0.9996695977F, 0.9996735094F, 0.9996773865F,
0.9996812291F, 0.9996850374F, 0.9996888118F, 0.9996925523F,
0.9996962591F, 0.9996999325F, 0.9997035727F, 0.9997071798F,
0.9997107541F, 0.9997142957F, 0.9997178049F, 0.9997212818F,
0.9997247266F, 0.9997281396F, 0.9997315209F, 0.9997348708F,
0.9997381893F, 0.9997414767F, 0.9997447333F, 0.9997479591F,
0.9997511544F, 0.9997543194F, 0.9997574542F, 0.9997605591F,
0.9997636342F, 0.9997666797F, 0.9997696958F, 0.9997726828F,
0.9997756407F, 0.9997785698F, 0.9997814703F, 0.9997843423F,
0.9997871860F, 0.9997900016F, 0.9997927894F, 0.9997955494F,
0.9997982818F, 0.9998009869F, 0.9998036648F, 0.9998063157F,
0.9998089398F, 0.9998115373F, 0.9998141082F, 0.9998166529F,
0.9998191715F, 0.9998216642F, 0.9998241311F, 0.9998265724F,
0.9998289884F, 0.9998313790F, 0.9998337447F, 0.9998360854F,
0.9998384015F, 0.9998406930F, 0.9998429602F, 0.9998452031F,
0.9998474221F, 0.9998496171F, 0.9998517885F, 0.9998539364F,
0.9998560610F, 0.9998581624F, 0.9998602407F, 0.9998622962F,
0.9998643291F, 0.9998663394F, 0.9998683274F, 0.9998702932F,
0.9998722370F, 0.9998741589F, 0.9998760591F, 0.9998779378F,
0.9998797952F, 0.9998816313F, 0.9998834464F, 0.9998852406F,
0.9998870141F, 0.9998887670F, 0.9998904995F, 0.9998922117F,
0.9998939039F, 0.9998955761F, 0.9998972285F, 0.9998988613F,
0.9999004746F, 0.9999020686F, 0.9999036434F, 0.9999051992F,
0.9999067362F, 0.9999082544F, 0.9999097541F, 0.9999112354F,
0.9999126984F, 0.9999141433F, 0.9999155703F, 0.9999169794F,
0.9999183709F, 0.9999197449F, 0.9999211014F, 0.9999224408F,
0.9999237631F, 0.9999250684F, 0.9999263570F, 0.9999276289F,
0.9999288843F, 0.9999301233F, 0.9999313461F, 0.9999325529F,
0.9999337437F, 0.9999349187F, 0.9999360780F, 0.9999372218F,
0.9999383503F, 0.9999394635F, 0.9999405616F, 0.9999416447F,
0.9999427129F, 0.9999437665F, 0.9999448055F, 0.9999458301F,
0.9999468404F, 0.9999478365F, 0.9999488185F, 0.9999497867F,
0.9999507411F, 0.9999516819F, 0.9999526091F, 0.9999535230F,
0.9999544236F, 0.9999553111F, 0.9999561856F, 0.9999570472F,
0.9999578960F, 0.9999587323F, 0.9999595560F, 0.9999603674F,
0.9999611666F, 0.9999619536F, 0.9999627286F, 0.9999634917F,
0.9999642431F, 0.9999649828F, 0.9999657110F, 0.9999664278F,
0.9999671334F, 0.9999678278F, 0.9999685111F, 0.9999691835F,
0.9999698451F, 0.9999704960F, 0.9999711364F, 0.9999717662F,
0.9999723858F, 0.9999729950F, 0.9999735942F, 0.9999741834F,
0.9999747626F, 0.9999753321F, 0.9999758919F, 0.9999764421F,
0.9999769828F, 0.9999775143F, 0.9999780364F, 0.9999785495F,
0.9999790535F, 0.9999795485F, 0.9999800348F, 0.9999805124F,
0.9999809813F, 0.9999814417F, 0.9999818938F, 0.9999823375F,
0.9999827731F, 0.9999832005F, 0.9999836200F, 0.9999840316F,
0.9999844353F, 0.9999848314F, 0.9999852199F, 0.9999856008F,
0.9999859744F, 0.9999863407F, 0.9999866997F, 0.9999870516F,
0.9999873965F, 0.9999877345F, 0.9999880656F, 0.9999883900F,
0.9999887078F, 0.9999890190F, 0.9999893237F, 0.9999896220F,
0.9999899140F, 0.9999901999F, 0.9999904796F, 0.9999907533F,
0.9999910211F, 0.9999912830F, 0.9999915391F, 0.9999917896F,
0.9999920345F, 0.9999922738F, 0.9999925077F, 0.9999927363F,
0.9999929596F, 0.9999931777F, 0.9999933907F, 0.9999935987F,
0.9999938018F, 0.9999940000F, 0.9999941934F, 0.9999943820F,
0.9999945661F, 0.9999947456F, 0.9999949206F, 0.9999950912F,
0.9999952575F, 0.9999954195F, 0.9999955773F, 0.9999957311F,
0.9999958807F, 0.9999960265F, 0.9999961683F, 0.9999963063F,
0.9999964405F, 0.9999965710F, 0.9999966979F, 0.9999968213F,
0.9999969412F, 0.9999970576F, 0.9999971707F, 0.9999972805F,
0.9999973871F, 0.9999974905F, 0.9999975909F, 0.9999976881F,
0.9999977824F, 0.9999978738F, 0.9999979624F, 0.9999980481F,
0.9999981311F, 0.9999982115F, 0.9999982892F, 0.9999983644F,
0.9999984370F, 0.9999985072F, 0.9999985750F, 0.9999986405F,
0.9999987037F, 0.9999987647F, 0.9999988235F, 0.9999988802F,
0.9999989348F, 0.9999989873F, 0.9999990379F, 0.9999990866F,
0.9999991334F, 0.9999991784F, 0.9999992217F, 0.9999992632F,
0.9999993030F, 0.9999993411F, 0.9999993777F, 0.9999994128F,
0.9999994463F, 0.9999994784F, 0.9999995091F, 0.9999995384F,
0.9999995663F, 0.9999995930F, 0.9999996184F, 0.9999996426F,
0.9999996657F, 0.9999996876F, 0.9999997084F, 0.9999997282F,
0.9999997469F, 0.9999997647F, 0.9999997815F, 0.9999997973F,
0.9999998123F, 0.9999998265F, 0.9999998398F, 0.9999998524F,
0.9999998642F, 0.9999998753F, 0.9999998857F, 0.9999998954F,
0.9999999045F, 0.9999999130F, 0.9999999209F, 0.9999999282F,
0.9999999351F, 0.9999999414F, 0.9999999472F, 0.9999999526F,
0.9999999576F, 0.9999999622F, 0.9999999664F, 0.9999999702F,
0.9999999737F, 0.9999999769F, 0.9999999798F, 0.9999999824F,
0.9999999847F, 0.9999999868F, 0.9999999887F, 0.9999999904F,
0.9999999919F, 0.9999999932F, 0.9999999943F, 0.9999999953F,
0.9999999961F, 0.9999999969F, 0.9999999975F, 0.9999999980F,
0.9999999985F, 0.9999999988F, 0.9999999991F, 0.9999999993F,
0.9999999995F, 0.9999999997F, 0.9999999998F, 0.9999999999F,
0.9999999999F, 1.0000000000F, 1.0000000000F, 1.0000000000F,
1.0000000000F, 1.0000000000F, 1.0000000000F, 1.0000000000F,
};
 
static const float *const vwin[8] = {
vwin64,
vwin128,
vwin256,
vwin512,
vwin1024,
vwin2048,
vwin4096,
vwin8192,
};
 
const float *_vorbis_window_get(int n){
return vwin[n];
}
 
void _vorbis_apply_window(float *d,int *winno,long *blocksizes,
int lW,int W,int nW){
lW=(W?lW:0);
nW=(W?nW:0);
 
{
const float *windowLW=vwin[winno[lW]];
const float *windowNW=vwin[winno[nW]];
 
long n=blocksizes[W];
long ln=blocksizes[lW];
long rn=blocksizes[nW];
 
long leftbegin=n/4-ln/4;
long leftend=leftbegin+ln/2;
 
long rightbegin=n/2+n/4-rn/4;
long rightend=rightbegin+rn/2;
 
int i,p;
 
for(i=0;i<leftbegin;i++)
d[i]=0.f;
 
for(p=0;i<leftend;i++,p++)
d[i]*=windowLW[p];
 
for(i=rightbegin,p=rn/2-1;i<rightend;i++,p--)
d[i]*=windowNW[p];
 
for(;i<n;i++)
d[i]=0.f;
}
}
/contrib/sdk/sources/libvorbis-1.3.7/lib/window.h
0,0 → 1,25
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
 
function: window functions
 
********************************************************************/
 
#ifndef _V_WINDOW_
#define _V_WINDOW_
 
extern const float *_vorbis_window_get(int n);
extern void _vorbis_apply_window(float *d,int *winno,long *blocksizes,
int lW,int W,int nW);
 
 
#endif