summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <unknown@xiph.org>2004-03-20 20:06:48 +0000
committerunknown <unknown@xiph.org>2004-03-20 20:06:48 +0000
commitf551f0d110ce64bab692d98c4bf20aff788a83cd (patch)
treecfa616ca0fc4c36e714eb0f8f4d127e0df07b1fa
parentd59cea578a9f2b9961218e1440026715371836d8 (diff)
downloadlibvorbis-git-branch_monty_20010901.tar.gz
This commit was manufactured by cvs2svn to create branchbranch_monty_20010901
'branch_monty_20010901'. svn path=/branches/branch_monty_20010901/vorbis/; revision=5977
-rw-r--r--.cvsignore18
-rw-r--r--AUTHORS3
-rw-r--r--COPYING28
-rw-r--r--Makefile.am17
-rw-r--r--README142
-rw-r--r--acinclude.m499
-rwxr-xr-xautogen.sh61
-rw-r--r--debian/.cvsignore2
-rw-r--r--debian/Makefile.am10
-rw-r--r--debian/README.Debian6
-rw-r--r--debian/changelog66
-rw-r--r--debian/control30
-rw-r--r--debian/copyright38
-rw-r--r--debian/libvorbis-dev.dirs2
-rw-r--r--debian/libvorbis-dev.docs1
-rw-r--r--debian/libvorbis-dev.examples5
-rw-r--r--debian/libvorbis-dev.files6
-rw-r--r--debian/libvorbis-dev.postinst47
-rw-r--r--debian/libvorbis-dev.postrm36
-rw-r--r--debian/libvorbis-dev.preinst42
-rw-r--r--debian/libvorbis-dev.prerm37
-rw-r--r--debian/libvorbis0.dirs1
-rw-r--r--debian/libvorbis0.docs1
-rw-r--r--debian/libvorbis0.files1
-rw-r--r--debian/libvorbis0.postinst47
-rw-r--r--debian/libvorbis0.postrm36
-rw-r--r--debian/libvorbis0.preinst42
-rw-r--r--debian/libvorbis0.prerm37
-rwxr-xr-xdebian/rules77
-rw-r--r--doc/.cvsignore2
-rw-r--r--doc/Makefile.am13
-rw-r--r--doc/eightphase.pngbin17372 -> 0 bytes
-rw-r--r--doc/fourphase.pngbin14969 -> 0 bytes
-rw-r--r--doc/programming.html507
-rw-r--r--doc/squarepolar.pngbin12297 -> 0 bytes
-rw-r--r--doc/stereo.html494
-rw-r--r--doc/v-comment.html194
-rw-r--r--doc/vorbis-clip.txt139
-rw-r--r--doc/vorbis-errors.txt103
-rw-r--r--doc/vorbis.html196
-rw-r--r--doc/vorbisenc/.cvsignore2
-rw-r--r--doc/vorbisenc/Makefile.am10
-rw-r--r--doc/vorbisenc/index.html38
-rw-r--r--doc/vorbisenc/overview.html53
-rw-r--r--doc/vorbisenc/reference.html66
-rw-r--r--doc/vorbisenc/style.css7
-rw-r--r--doc/vorbisenc/vorbis_encode_ctl.html67
-rw-r--r--doc/vorbisenc/vorbis_encode_init.html86
-rw-r--r--doc/vorbisenc/vorbis_info.html102
-rw-r--r--doc/vorbisfile/.cvsignore2
-rw-r--r--doc/vorbisfile/Makefile.am19
-rw-r--r--doc/vorbisfile/OggVorbis_File.html105
-rw-r--r--doc/vorbisfile/chaining_example_c.html86
-rw-r--r--doc/vorbisfile/chainingexample.html158
-rw-r--r--doc/vorbisfile/datastructures.html63
-rw-r--r--doc/vorbisfile/decoding.html50
-rw-r--r--doc/vorbisfile/example.html205
-rw-r--r--doc/vorbisfile/exampleindex.html39
-rw-r--r--doc/vorbisfile/fileinfo.html96
-rw-r--r--doc/vorbisfile/index.html42
-rw-r--r--doc/vorbisfile/initialization.html56
-rw-r--r--doc/vorbisfile/ov_bitrate.html73
-rw-r--r--doc/vorbisfile/ov_bitrate_instant.html65
-rw-r--r--doc/vorbisfile/ov_callbacks.html66
-rw-r--r--doc/vorbisfile/ov_clear.html63
-rw-r--r--doc/vorbisfile/ov_comment.html65
-rw-r--r--doc/vorbisfile/ov_info.html65
-rw-r--r--doc/vorbisfile/ov_open.html112
-rw-r--r--doc/vorbisfile/ov_open_callbacks.html108
-rw-r--r--doc/vorbisfile/ov_pcm_seek.html82
-rw-r--r--doc/vorbisfile/ov_pcm_seek_page.html83
-rw-r--r--doc/vorbisfile/ov_pcm_tell.html61
-rw-r--r--doc/vorbisfile/ov_pcm_total.html66
-rw-r--r--doc/vorbisfile/ov_raw_seek.html77
-rw-r--r--doc/vorbisfile/ov_raw_tell.html61
-rw-r--r--doc/vorbisfile/ov_raw_total.html66
-rw-r--r--doc/vorbisfile/ov_read.html117
-rw-r--r--doc/vorbisfile/ov_seekable.html65
-rw-r--r--doc/vorbisfile/ov_serialnumber.html67
-rw-r--r--doc/vorbisfile/ov_streams.html65
-rw-r--r--doc/vorbisfile/ov_time_seek.html71
-rw-r--r--doc/vorbisfile/ov_time_seek_page.html84
-rw-r--r--doc/vorbisfile/ov_time_tell.html63
-rw-r--r--doc/vorbisfile/ov_time_total.html74
-rw-r--r--doc/vorbisfile/overview.html44
-rw-r--r--doc/vorbisfile/reference.html66
-rw-r--r--doc/vorbisfile/seekexample.html139
-rw-r--r--doc/vorbisfile/seeking.html67
-rw-r--r--doc/vorbisfile/seeking_example_c.html83
-rw-r--r--doc/vorbisfile/seeking_test_c.html83
-rw-r--r--doc/vorbisfile/seekingexample.html204
-rw-r--r--doc/vorbisfile/style.css7
-rw-r--r--doc/vorbisfile/vorbis_comment.html67
-rw-r--r--doc/vorbisfile/vorbis_info.html102
-rw-r--r--doc/vorbisfile/vorbisfile_example_c.html106
-rw-r--r--doc/vorbisword2.pngbin1394 -> 0 bytes
-rw-r--r--doc/wait.pngbin455 -> 0 bytes
-rw-r--r--doc/white-ogg.pngbin2652 -> 0 bytes
-rw-r--r--doc/white-xifish.pngbin965 -> 0 bytes
-rw-r--r--examples/.cvsignore9
-rw-r--r--examples/Makefile.am27
-rw-r--r--examples/chaining_example.c70
-rw-r--r--examples/decoder_example.c303
-rw-r--r--examples/encoder_example.c199
-rw-r--r--examples/seeking_example.c198
-rw-r--r--examples/vorbisfile_example.c88
-rw-r--r--include/.cvsignore2
-rw-r--r--include/Makefile.am5
-rw-r--r--include/vorbis/.cvsignore2
-rw-r--r--include/vorbis/Makefile.am9
-rw-r--r--include/vorbis/codec.h227
-rw-r--r--include/vorbis/vorbisenc.h53
-rw-r--r--include/vorbis/vorbisfile.h129
-rw-r--r--lib/.cvsignore6
-rw-r--r--lib/Makefile.am43
-rw-r--r--lib/analysis.c117
-rw-r--r--lib/backends.h193
-rw-r--r--lib/barkmel.c64
-rw-r--r--lib/bitbuffer.c67
-rw-r--r--lib/bitbuffer.h44
-rw-r--r--lib/block.c810
-rw-r--r--lib/books/.cvsignore2
-rw-r--r--lib/books/Makefile202
-rw-r--r--lib/books/Makefile.in202
-rw-r--r--lib/books/line_1024x31_0sub0.vqh37
-rw-r--r--lib/books/line_1024x31_1sub0.vqh37
-rw-r--r--lib/books/line_1024x31_1sub1.vqh40
-rw-r--r--lib/books/line_1024x31_2sub1.vqh37
-rw-r--r--lib/books/line_1024x31_2sub2.vqh38
-rw-r--r--lib/books/line_1024x31_2sub3.vqh40
-rw-r--r--lib/books/line_1024x31_3sub1.vqh37
-rw-r--r--lib/books/line_1024x31_3sub2.vqh38
-rw-r--r--lib/books/line_1024x31_3sub3.vqh40
-rw-r--r--lib/books/line_1024x31_class0.vqh37
-rw-r--r--lib/books/line_1024x31_class1.vqh37
-rw-r--r--lib/books/line_1024x31_class2.vqh40
-rw-r--r--lib/books/line_1024x31_class3.vqh40
-rw-r--r--lib/books/line_128x7_0sub0.vqh40
-rw-r--r--lib/books/line_128x7_1sub1.vqh37
-rw-r--r--lib/books/line_128x7_1sub2.vqh38
-rw-r--r--lib/books/line_128x7_1sub3.vqh40
-rw-r--r--lib/books/line_128x7_2sub1.vqh37
-rw-r--r--lib/books/line_128x7_2sub2.vqh38
-rw-r--r--lib/books/line_128x7_2sub3.vqh40
-rw-r--r--lib/books/line_128x7_class1.vqh40
-rw-r--r--lib/books/line_128x7_class2.vqh40
-rw-r--r--lib/books/lsp12_0.vqh168
-rw-r--r--lib/books/lsp12_1.vqh2979
-rw-r--r--lib/books/lsp30_0.vqh375
-rw-r--r--lib/books/lsp30_1.vqh1575
-rw-r--r--lib/books/lsp9_0.vqh122
-rw-r--r--lib/books/lsp9_1.vqh880
-rw-r--r--lib/books/res0_128_1024_1.vqh (renamed from lib/books/res_Zc_3.vqh)76
-rw-r--r--lib/books/res0_128_1024_2.vqh93
-rw-r--r--lib/books/res0_128_1024_3.vqh (renamed from lib/books/res_Zc_1.vqh)58
-rw-r--r--lib/books/res0_128_1024_4.vqh148
-rw-r--r--lib/books/res0_128_1024_5.vqh268
-rw-r--r--lib/books/res0_128_1024_6.vqh137
-rw-r--r--lib/books/res0_128_1024_7.vqh150
-rw-r--r--lib/books/res0_128_1024_7a.vqh (renamed from lib/books/res_Zc_9b.vqh)38
-rw-r--r--lib/books/res0_128_1024_8.vqh136
-rw-r--r--lib/books/res0_128_1024_8a.vqh61
-rw-r--r--lib/books/res0_128_1024_9.vqh75
-rw-r--r--lib/books/res0_128_1024_9a.vqh80
-rw-r--r--lib/books/res0_128_1024_9b.vqh80
-rw-r--r--lib/books/res0_128_1024aux.vqh (renamed from lib/books/line_1024x31_0sub1.vqh)23
-rw-r--r--lib/books/res0_128_128aux.vqh (renamed from lib/books/res_Zc_1024aux.vqh)24
-rw-r--r--lib/books/res_Zc_128aux.vqh99
-rw-r--r--lib/books/res_Zc_2.vqh300
-rw-r--r--lib/books/res_Zc_4.vqh89
-rw-r--r--lib/books/res_Zc_5.vqh89
-rw-r--r--lib/books/res_Zc_6.vqh129
-rw-r--r--lib/books/res_Zc_7.vqh119
-rw-r--r--lib/books/res_Zc_8.vqh1234
-rw-r--r--lib/books/res_Zc_9.vqh99
-rw-r--r--lib/books/res_Zc_9a.vqh115
-rw-r--r--lib/codebook.c579
-rw-r--r--lib/codebook.h164
-rw-r--r--lib/codec_internal.h115
-rw-r--r--lib/envelope.c236
-rw-r--r--lib/envelope.h45
-rw-r--r--lib/floor0.c468
-rw-r--r--lib/floor1.c1152
-rw-r--r--lib/iir.c300
-rw-r--r--lib/iir.h36
-rw-r--r--lib/info.c588
-rw-r--r--lib/lookup.c93
-rw-r--r--lib/lookup.h32
-rw-r--r--lib/lookup_data.h189
-rwxr-xr-xlib/lookups.pl142
-rw-r--r--lib/lpc.c200
-rw-r--r--lib/lpc.h43
-rw-r--r--lib/lsp.c457
-rw-r--r--lib/lsp.h28
-rw-r--r--lib/mapping0.c687
-rw-r--r--lib/masking.h243
-rw-r--r--lib/mdct.c568
-rw-r--r--lib/mdct.h79
-rw-r--r--lib/misc.c106
-rw-r--r--lib/misc.h43
-rw-r--r--lib/modes/.cvsignore2
-rw-r--r--lib/modes/maskadj_Z.h94
-rw-r--r--lib/modes/mode_44c_Z.h315
-rw-r--r--lib/modes/mode_A.h412
-rw-r--r--lib/modes/mode_AA.h313
-rw-r--r--lib/modes/mode_B.h424
-rw-r--r--lib/modes/mode_C.h432
-rw-r--r--lib/modes/mode_D.h429
-rw-r--r--lib/modes/mode_E.h384
-rw-r--r--lib/modes/mode_Za.h406
-rw-r--r--lib/modes/mode_Zb.h410
-rw-r--r--lib/modes/mode_Zc.h451
-rw-r--r--lib/modes/modes.h24
-rw-r--r--lib/os.h163
-rw-r--r--lib/psy.c1077
-rw-r--r--lib/psy.h183
-rw-r--r--lib/psytune.c520
-rw-r--r--lib/registry.c52
-rw-r--r--lib/registry.h33
-rw-r--r--lib/res0.c867
-rw-r--r--lib/scales.h132
-rw-r--r--lib/sharedbook.c677
-rw-r--r--lib/smallft.c1254
-rw-r--r--lib/smallft.h34
-rw-r--r--lib/synthesis.c104
-rw-r--r--lib/time0.c55
-rw-r--r--lib/tone.c54
-rw-r--r--lib/vorbisenc.c172
-rw-r--r--lib/vorbisfile.c1499
-rw-r--r--lib/window.c62
-rw-r--r--lib/window.h23
-rw-r--r--mac/compat/strdup.c21
-rw-r--r--mac/compat/sys/types.h1
-rw-r--r--mac/decoder_example.mcpbin63173 -> 0 bytes
-rw-r--r--mac/encoder_example.mcpbin66521 -> 0 bytes
-rw-r--r--mac/libvorbis.mcpbin70814 -> 0 bytes
-rw-r--r--mac/libvorbis.mcp.exp52
-rwxr-xr-xmac/libvorbisenc.mcpbin81746 -> 0 bytes
-rwxr-xr-xmac/libvorbisenc.mcp.exp5
-rwxr-xr-xmac/libvorbisfile.mcpbin75906 -> 0 bytes
-rwxr-xr-xmac/libvorbisfile.mcp.exp30
-rw-r--r--todo.txt22
-rw-r--r--vorbis.m4100
-rw-r--r--vq/.cvsignore4
-rw-r--r--vq/Makefile.am51
-rwxr-xr-xvq/auxpartition.pl71
-rw-r--r--vq/bookutil.c738
-rw-r--r--vq/bookutil.h43
-rw-r--r--vq/build.c195
-rw-r--r--vq/cascade.c91
-rw-r--r--vq/distribution.c241
-rw-r--r--vq/genericdata.c61
-rw-r--r--vq/huffbuild.c212
-rw-r--r--vq/latticebuild.c177
-rw-r--r--vq/latticehint.c428
-rw-r--r--vq/latticepare.c595
-rw-r--r--vq/latticetune.c192
-rw-r--r--vq/lsp12_0.vql2
-rw-r--r--vq/lsp12_1.vql2
-rw-r--r--vq/lsp30_0.vql2
-rw-r--r--vq/lsp30_1.vql2
-rw-r--r--vq/lsp9_0.vql2
-rw-r--r--vq/lsp9_1.vql2
-rw-r--r--vq/lspdata.c157
-rwxr-xr-xvq/make_residue_books.pl288
-rw-r--r--vq/metrics.c295
-rw-r--r--vq/res_128c.vqs62
-rw-r--r--vq/res_128k.vqs19
-rw-r--r--vq/res_160c.vqs64
-rw-r--r--vq/res_160k.vqs20
-rw-r--r--vq/res_192c.vqs63
-rw-r--r--vq/res_192k.vqs19
-rw-r--r--vq/res_256k.vqs17
-rw-r--r--vq/res_350c.vqs63
-rw-r--r--vq/res_350k.vqs2
-rw-r--r--vq/res_64c.vqs61
-rw-r--r--vq/res_96Zc.vqs42
-rw-r--r--vq/res_96c.vqs56
-rw-r--r--vq/res_96k.vqs19
-rwxr-xr-xvq/residue_entropy58
-rw-r--r--vq/residuedata.c160
-rw-r--r--vq/residuesplit.c244
-rw-r--r--vq/run.c216
-rw-r--r--vq/train.c364
-rw-r--r--vq/vqext.h34
-rw-r--r--vq/vqgen.c568
-rw-r--r--vq/vqgen.h85
-rw-r--r--vq/vqsplit.c612
-rw-r--r--vq/vqsplit.h37
-rw-r--r--win32/.cvsignore2
-rw-r--r--win32/Makefile.am14
-rwxr-xr-xwin32/build_vorbis_dynamic.bat19
-rwxr-xr-xwin32/build_vorbis_dynamic_debug.bat19
-rwxr-xr-xwin32/build_vorbis_static.bat19
-rwxr-xr-xwin32/build_vorbis_static_debug.bat19
-rwxr-xr-xwin32/build_vorbisenc_dynamic.bat19
-rwxr-xr-xwin32/build_vorbisenc_dynamic_debug.bat19
-rwxr-xr-xwin32/build_vorbisenc_static.bat19
-rwxr-xr-xwin32/build_vorbisenc_static_debug.bat19
-rwxr-xr-xwin32/build_vorbisfile_dynamic.bat19
-rwxr-xr-xwin32/build_vorbisfile_dynamic_debug.bat19
-rwxr-xr-xwin32/build_vorbisfile_static.bat19
-rwxr-xr-xwin32/build_vorbisfile_static_debug.bat19
-rw-r--r--win32/vorbis.def32
-rw-r--r--win32/vorbis_dynamic.dsp271
-rw-r--r--win32/vorbis_static.dsp548
-rw-r--r--win32/vorbisenc.def5
-rw-r--r--win32/vorbisenc_dynamic.dsp115
-rw-r--r--win32/vorbisenc_static.dsp96
-rw-r--r--win32/vorbisfile.def28
-rw-r--r--win32/vorbisfile_dynamic.dsp115
-rw-r--r--win32/vorbisfile_static.dsp96
312 files changed, 1339 insertions, 45191 deletions
diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index 76a225de..00000000
--- a/.cvsignore
+++ /dev/null
@@ -1,18 +0,0 @@
-aclocal.m4
-config.h.in
-Makefile.in
-Makefile
-config.status
-libtool
-ltmain.sh
-config.cache
-config.log
-config.sub
-config.guess
-configure
-*.gz
-*.zip
-.libs
-.deps
-*.ogg
-vorbis-config
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index 171072e9..00000000
--- a/AUTHORS
+++ /dev/null
@@ -1,3 +0,0 @@
-Monty <monty@xiph.org>
-
-and the rest of the Xiphophorus Company.
diff --git a/COPYING b/COPYING
deleted file mode 100644
index 69bbac0e..00000000
--- a/COPYING
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (c) 2001, Xiphophorus
-
-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 Xiphophorus 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 REGENTS 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.
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index ea9c2356..00000000
--- a/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-AUTOMAKE_OPTIONS = foreign dist-zip
-
-SUBDIRS = lib include doc examples win32 debian vq
-
-m4datadir = $(datadir)/aclocal
-m4data_DATA = vorbis.m4
-
-EXTRA_DIST = README AUTHORS COPYING libvorbis.spec vorbis.m4 acinclude.m4\
- todo.txt
-
-debug:
- $(MAKE) all CFLAGS="@DEBUG@"
-
-profile:
- $(MAKE) all CFLAGS="@PROFILE@"
diff --git a/README b/README
deleted file mode 100644
index 0cb82680..00000000
--- a/README
+++ /dev/null
@@ -1,142 +0,0 @@
-********************************************************************
-* *
-* 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 XIPHOPHORUS Company http://www.xiph.org/ *
-* *
-********************************************************************
-
-NEW AND IMPORTANT:
-
-If you're used to the source distribution from the first two beta
-releases, things are now rearranged a bit. Specifically, the
-'vorbis' CVS module contains only the libvorbis, libvorbisfile, and
-libvorbisenc libraries. Because Ogg bitstreams are to be used by other
-Ogg codecs, Ogg framing and streaming functionality is now in libogg
-(the 'ogg' CVS module). Vorbis utilities are in 'vorbis-tools' and various
-player plugins are in 'vorbis-plugins'. For now, you'll need to check
-out these other modules seperately. (Note: the xmms plugin is in the xmms
-CVS tree in xmms/Input/vorbis.)
-
-Secondly, the Ogg/Vorbis build systems now use automake. Instead of
-'./configure; make', the proper build sequence (in each module) is
-'./autogen.sh; make'.
-
-You will also need the newest versions of autoconf, automake, and libtool
-in order to compile vorbis from CVS. configure scripts are provided for you
-in tarball distributions.
-
-WHAT'S HERE:
-
-This source distribution includes libvorbis and an example
-encoder/player to demonstrate use of libvorbis and documentation on
-the Ogg Vorbis audio coding format.
-
-Directory:
-
-./lib The source for the libraries, a BSD-license implementation
- of the public domain Ogg Vorbis audio encoding format.
-
-./include Library API headers
-
-./debian Rules/spec files for building Debian .deb packages
-
-./doc Vorbis documentation
-
-./examples Example code illustrating programmatic use of libvorbis,
- libvorbisfile and libvorbisenc
-
-./mac Codewarrior project files and build tweaks for MacOS.
-
-./win32 Win32 projects files and build automation
-
-./vq Internal utilities for training/building new LSP/residue
- and auxiliary codebooks.
-
-WHAT IS VORBIS:
-
-Vorbis is a general purpose audio and music encoding format
-contemporary to MPEG-4's AAC and TwinVQ, the next generation beyond
-MPEG audio layer 3. Unlike the MPEG sponsored formats (and other
-proprietary formats such as RealAudio G2 and Windows' flavor of the
-month), the Vorbis CODEC specification belongs to the public domain.
-All the technical details are published and documented, and any
-software entity may make full use of the format without royalty or
-patent concerns.
-
-This package contains:
-
-.) libvorbis, a BSD-license software implementation of
-the Vorbis specification by the Xiphophorus company
-(http://www.xiph.org/)
-
-.) libvorbisfile, a BSD-license convenience library
-built on Vorbis designed to simplify common uses and a number of GPL
-example programs
-
-.) libvorbisenc, a BSD-license library that provides a simple, programmatic
-encoding setup interface
-
-.) example code making use of libogg, libvorbis, libvorbisfile and
-libvorbisenc
-
-CONTACT:
-
-The Ogg homepage is located at 'http://www.xiph.org/ogg/'.
-Vorbis's homepage is located at 'http://www.xiph.org/ogg/vorbis/'.
-Up to date technical documents, contact information, source code and
-pre-built utilities may be found there.
-
-BUILDING FROM CVS:
-
-./autogen.sh
-make
-
-and as root if desired:
-
-make install
-
-This will install the vorbis libraries (static and shared) into
-/usr/local/lib, includes into /usr/local/include and API manpages
-(once we write some) into /usr/local/man.
-
-BUILDING FROM TARBALL DISTRIBUTIONS:
-
-./configure
-make
-
-and optionally (as root):
-make install
-
-BUILDING RPMS:
-
-after normal configuring:
-
-make dist
-rpm -ta libvorbis-<version>.tar.gz
-
-BUILDING ON MACOS 9:
-
-Vorbis on MacOS 9 is built using CodeWarrior 5.3. To build it, first
-verify that the Ogg libraries are already built following the
-instructions in the Ogg module README. Open vorbis/mac/libvorbis.mcp,
-switch to the "Targets" pane, select everything, and make the project.
-Do the same thing to build libvorbisenc.mcp, and libvorbisfile.mcp (in
-that order). In vorbis/mac/Output you will now have both debug and final
-versions of Vorbis shared libraries to link your projects against.
-
-To build a project using Ogg Vorbis, add access paths to your
-CodeWarrior project for the ogg/include, ogg/mac/Output,
-vorbis/include, and vorbis/mac/Output folders. Be sure that
-"interpret DOS and Unix paths" is turned on in your project; it can
-be found in the "access paths" pane in your project settings. Now
-simply add the shared libraries you need to your project (OggLib and
-VorbisLib at least) and #include "ogg/ogg.h" and "vorbis/codec.h"
-wherever you need to access Ogg and Vorbis functionality.
-
-
-$Id: README,v 1.11 2001/03/22 01:33:20 segher Exp $
diff --git a/acinclude.m4 b/acinclude.m4
deleted file mode 100644
index 73e41bd7..00000000
--- a/acinclude.m4
+++ /dev/null
@@ -1,99 +0,0 @@
-# acinclude.m4
-# all .m4 files needed that might not be installed go here
-
-# ogg.m4
-# Configure paths for libogg
-# Jack Moffitt <jack@icecast.org> 10-21-2000
-# Shamelessly stolen from Owen Taylor and Manish Singh
-
-dnl AM_PATH_OGG([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-dnl Test for libogg, and define OGG_CFLAGS and OGG_LIBS
-dnl
-AC_DEFUN(AM_PATH_OGG,
-[dnl
-dnl Get the cflags and libraries
-dnl
-AC_ARG_WITH(ogg-prefix,[ --with-ogg-prefix=PFX Prefix where libogg is installed (optional)], ogg_prefix="$withval", ogg_prefix="")
-AC_ARG_ENABLE(oggtest, [ --disable-oggtest Do not try to compile and run a test Ogg program],, enable_oggtest=yes)
-
- if test "x$ogg_prefix" != "xNONE" ; then
- ogg_args="$ogg_args --prefix=$ogg_prefix"
- OGG_CFLAGS="-I$ogg_prefix/include"
- OGG_LIBS="-L$ogg_prefix/lib"
- elif test "$prefix" != ""; then
- ogg_args="$ogg_args --prefix=$prefix"
- OGG_CFLAGS="-I$prefix/include"
- OGG_LIBS="-L$prefix/lib"
- fi
-
- OGG_LIBS="$OGG_LIBS -logg"
-
- AC_MSG_CHECKING(for Ogg)
- no_ogg=""
-
-
- if test "x$enable_oggtest" = "xyes" ; then
- ac_save_CFLAGS="$CFLAGS"
- ac_save_LIBS="$LIBS"
- CFLAGS="$CFLAGS $OGG_CFLAGS"
- LIBS="$LIBS $OGG_LIBS"
-dnl
-dnl Now check if the installed Ogg is sufficiently new.
-dnl
- rm -f conf.oggtest
- AC_TRY_RUN([
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ogg/ogg.h>
-
-int main ()
-{
- system("touch conf.oggtest");
- return 0;
-}
-
-],, no_ogg=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
-
- if test "x$no_ogg" = "x" ; then
- AC_MSG_RESULT(yes)
- ifelse([$1], , :, [$1])
- else
- AC_MSG_RESULT(no)
- if test -f conf.oggtest ; then
- :
- else
- echo "*** Could not run Ogg test program, checking why..."
- CFLAGS="$CFLAGS $OGG_CFLAGS"
- LIBS="$LIBS $OGG_LIBS"
- AC_TRY_LINK([
-#include <stdio.h>
-#include <ogg/ogg.h>
-], [ return 0; ],
- [ echo "*** The test program compiled, but did not run. This usually means"
- echo "*** that the run-time linker is not finding Ogg or finding the wrong"
- echo "*** version of Ogg. If it is not finding Ogg, you'll need to set your"
- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
- echo "*** to the installed location Also, make sure you have run ldconfig if that"
- echo "*** is required on your system"
- echo "***"
- echo "*** If you have an old version installed, it is best to remove it, although"
- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
- [ echo "*** The test program failed to compile or link. See the file config.log for the"
- echo "*** exact error that occured. This usually means Ogg was incorrectly installed"
- echo "*** or that you have moved Ogg since it was installed. In the latter case, you"
- echo "*** may want to edit the ogg-config script: $OGG_CONFIG" ])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
- OGG_CFLAGS=""
- OGG_LIBS=""
- ifelse([$2], , :, [$2])
- fi
- AC_SUBST(OGG_CFLAGS)
- AC_SUBST(OGG_LIBS)
- rm -f conf.oggtest
-])
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index 5d6b972f..00000000
--- a/autogen.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/sh
-# Run this to set up the build system: configure, makefiles, etc.
-# (based on the version in enlightenment's cvs)
-
-package="vorbis"
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-cd "$srcdir"
-DIE=0
-
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have autoconf installed to compile $package."
- echo "Download the appropriate package for your distribution,"
- echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
- DIE=1
-}
-
-(automake --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have automake installed to compile $package."
- echo "Download the appropriate package for your system,
- echo "or get the source from one of the GNU ftp sites"
- echo "listed in http://www.gnu.org/order/ftp.html"
- DIE=1
-}
-
-(libtool --version) < /dev/null > /dev/null 2>&1 || {
- echo
- echo "You must have libtool installed to compile $package."
- echo "Download the appropriate package for your system,
- echo "or get the source from one of the GNU ftp sites"
- echo "listed in http://www.gnu.org/order/ftp.html"
- DIE=1
-}
-
-if test "$DIE" -eq 1; then
- exit 1
-fi
-
-if test -z "$*"; then
- echo "I am going to run ./configure with no arguments - if you wish "
- echo "to pass any to it, please specify them on the $0 command line."
-fi
-
-echo "Generating configuration files for $package, please wait...."
-
-echo " aclocal $ACLOCAL_FLAGS"
-aclocal $ACLOCAL_FLAGS
-#echo " autoheader"
-#autoheader
-echo " libtoolize --automake"
-libtoolize --automake
-echo " automake --add-missing"
-automake --add-missing
-echo " autoconf"
-autoconf
-
-$srcdir/configure "$@" && echo
diff --git a/debian/.cvsignore b/debian/.cvsignore
deleted file mode 100644
index 282522db..00000000
--- a/debian/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/debian/Makefile.am b/debian/Makefile.am
deleted file mode 100644
index 5a0f3998..00000000
--- a/debian/Makefile.am
+++ /dev/null
@@ -1,10 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-AUTOMAKE_OPTIONS = foreign
-
-EXTRA_DIST = README.Debian changelog control copyright libvorbis-dev.dirs\
- libvorbis-dev.docs libvorbis-dev.examples libvorbis-dev.files\
- libvorbis-dev.postinst libvorbis-dev.postrm libvorbis-dev.preinst\
- libvorbis-dev.prerm libvorbis0.dirs libvorbis0.docs libvorbis0.files\
- libvorbis0.postinst libvorbis0.postrm libvorbis0.preinst\
- libvorbis0.prerm rules
diff --git a/debian/README.Debian b/debian/README.Debian
deleted file mode 100644
index d049ad98..00000000
--- a/debian/README.Debian
+++ /dev/null
@@ -1,6 +0,0 @@
-libvorbis for Debian
---------------------
-
-Nothing important to mention at this time.
-
- -- Christopher L Cheney <ccheney@debian.org>, Tue, 31 Oct 2000 15:08:22 -0600
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644
index 2ad2bb87..00000000
--- a/debian/changelog
+++ /dev/null
@@ -1,66 +0,0 @@
-libvorbis (1.0rc1-1) unstable; urgency=low
-
- * New upstream. (Closes: #84977, #95330)
- * Upstream says lame at fault. See bug details. (Closes: #98010)
- * Fixed versioned depends.
- * Changed clean method to distclean.
-
- -- Christopher L Cheney <ccheney@debian.org> Sun, 17 Jun 2001 20:00:00 -0500
-
-libvorbis (1.0beta4-1) unstable; urgency=low
-
- * New upstream.
- * Appears to be fixed, can't reproduce bug (closes: #78848)
-
- -- Christopher L Cheney <ccheney@debian.org> Mon, 26 Feb 2001 08:00:00 -0600
-
-libvorbis (1.0beta3-3) unstable; urgency=low
-
- * Fixed Build-Depends libogg-dev version dependency.
- * Fixed Sections.
- * Updated to Standards-Version to 3.5.1.0
-
- -- Christopher L Cheney <ccheney@debian.org> Sat, 17 Feb 2001 18:14:53 -0600
-
-libvorbis (1.0beta3-2) unstable; urgency=low
-
- * Added dependency for libogg-dev (closes: #78262)
- * Added dependency for libogg-dev (closes: #81432)
- * Corrected development library package name (closes: #82464)
-
- -- Christopher L Cheney <ccheney@debian.org> Sat, 3 Feb 2001 13:29:30 -0600
-
-libvorbis (1.0beta3-1) unstable; urgency=low
-
- * New Maintainer.
- * Upstream source was reorganized.
- * Package split according to the upstream reorganization.
-
- -- Christopher L Cheney <ccheney@debian.org> Tue, 31 Oct 2000 15:08:22 -0600
-
-vorbis (1.0beta2-1) unstable; urgency=low
-
- * New upstream version. Closes: #67326, #68416
- * Changed xmms-vorbis to Architechture: any. Closes: #67395
- * Added Build-deps. Closes: #66628
- * Moved vorbize to vorbis-tools along with oggenc and vorbiscomment
-
- -- Michael Beattie <mjb@debian.org> Wed, 9 Aug 2000 00:30:15 +1200
-
-vorbis (1.0beta1-1) unstable; urgency=low
-
- * First Beta, Ready for debian release.
-
- -- Michael Beattie <mickyb@es.co.nz> Fri, 30 Jun 2000 19:26:59 +1200
-
-vorbis (0.0-1) unstable; urgency=low
-
- * Initial Release.
- * Initial package, not placed in archive.
-
- -- Michael Beattie <mickyb@es.co.nz> Mon, 26 Jun 2000 18:59:56 +1200
-
-Local variables:
-mode: debian-changelog
-add-log-mailing-address "ccheney@debian.org"
-End:
diff --git a/debian/control b/debian/control
deleted file mode 100644
index 9b49f7ab..00000000
--- a/debian/control
+++ /dev/null
@@ -1,30 +0,0 @@
-Source: libvorbis
-Section: libs
-Priority: optional
-Maintainer: Christopher L Cheney <ccheney@debian.org>
-Build-Depends: debhelper (>> 3.0.0), libogg-dev (>> 1.0rc1)
-Standards-Version: 3.5.5.0
-
-Package: libvorbis-dev
-Architecture: any
-Section: devel
-Depends: libvorbis0 (= ${Source-Version}), libogg-dev, libc6-dev
-Description: Development library for OGG Vorbis
- Ogg Vorbis is a fully Open, non-proprietary, patent-and-royalty-free,
- general-purpose compressed audio format for high quality (44.1-48.0kHz,
- 16+ bit, polyphonic) audio and music at fixed and variable bitrates
- from 16 to 128 kbps/channel. This places Vorbis in the same class as
- audio representations including MPEG-1 audio layer 3, MPEG-4
- audio (AAC and TwinVQ), and PAC.
-
-Package: libvorbis0
-Architecture: any
-Section: libs
-Depends: ${shlibs:Depends}
-Description: The OGG Vorbis lossy audio compression codec.
- Ogg Vorbis is a fully Open, non-proprietary, patent-and-royalty-free,
- general-purpose compressed audio format for high quality (44.1-48.0kHz,
- 16+ bit, polyphonic) audio and music at fixed and variable bitrates
- from 16 to 128 kbps/channel. This places Vorbis in the same class as
- audio representations including MPEG-1 audio layer 3, MPEG-4
- audio (AAC and TwinVQ), and PAC.
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644
index cadd6a9b..00000000
--- a/debian/copyright
+++ /dev/null
@@ -1,38 +0,0 @@
-This package was debianized by Christopher L Cheney <ccheney@debian.org> on
-Tue, 31 Oct 2000 15:08:22 -0600.
-
-It was downloaded from http://www.xiph.org/ogg/vorbis/download/
-
-Upstream Author(s): Monty <monty@xiph.org>
-
-Copyright:
-
-Copyright (c) 2001, Xiphophorus
-
-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 Xiphophorus 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 REGENTS 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.
-
diff --git a/debian/libvorbis-dev.dirs b/debian/libvorbis-dev.dirs
deleted file mode 100644
index 44188162..00000000
--- a/debian/libvorbis-dev.dirs
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/lib
-usr/include
diff --git a/debian/libvorbis-dev.docs b/debian/libvorbis-dev.docs
deleted file mode 100644
index e845566c..00000000
--- a/debian/libvorbis-dev.docs
+++ /dev/null
@@ -1 +0,0 @@
-README
diff --git a/debian/libvorbis-dev.examples b/debian/libvorbis-dev.examples
deleted file mode 100644
index 2ebd4e75..00000000
--- a/debian/libvorbis-dev.examples
+++ /dev/null
@@ -1,5 +0,0 @@
-examples/chaining_example.c
-examples/decoder_example.c
-examples/encoder_example.c
-examples/seeking_example.c
-examples/vorbisfile_example.c
diff --git a/debian/libvorbis-dev.files b/debian/libvorbis-dev.files
deleted file mode 100644
index dbbf15c8..00000000
--- a/debian/libvorbis-dev.files
+++ /dev/null
@@ -1,6 +0,0 @@
-usr/include/vorbis/*.h
-usr/include/vorbis/book/*.vqh
-usr/lib/*.a
-usr/lib/*.la
-usr/lib/*.so
-usr/share/aclocal/vorbis.m4
diff --git a/debian/libvorbis-dev.postinst b/debian/libvorbis-dev.postinst
deleted file mode 100644
index 917a439d..00000000
--- a/debian/libvorbis-dev.postinst
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /bin/sh
-# postinst script for vorbis
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-# * <postinst> `configure' <most-recently-configured-version>
-# * <old-postinst> `abort-upgrade' <new version>
-# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
-# <new-version>
-# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
-# <failed-install-package> <version> `removing'
-# <conflicting-package> <version>
-# for details, see /usr/share/doc/packaging-manual/
-#
-# quoting from the policy:
-# Any necessary prompting should almost always be confined to the
-# post-installation script, and should be protected with a conditional
-# so that unnecessary prompting doesn't happen if a package's
-# installation fails and the `postinst' is called with `abort-upgrade',
-# `abort-remove' or `abort-deconfigure'.
-
-case "$1" in
- configure)
-
- ;;
-
- abort-upgrade|abort-remove|abort-deconfigure)
-
- ;;
-
- *)
- echo "postinst called with unknown argument \`$1'" >&2
- exit 0
- ;;
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
-
-
diff --git a/debian/libvorbis-dev.postrm b/debian/libvorbis-dev.postrm
deleted file mode 100644
index 39ffcaf0..00000000
--- a/debian/libvorbis-dev.postrm
+++ /dev/null
@@ -1,36 +0,0 @@
-#! /bin/sh
-# postrm script for vorbis
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-# * <postrm> `remove'
-# * <postrm> `purge'
-# * <old-postrm> `upgrade' <new-version>
-# * <new-postrm> `failed-upgrade' <old-version>
-# * <new-postrm> `abort-install'
-# * <new-postrm> `abort-install' <old-version>
-# * <new-postrm> `abort-upgrade' <old-version>
-# * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
-# for details, see /usr/share/doc/packaging-manual/
-
-case "$1" in
- purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
-
-
- ;;
-
- *)
- echo "postrm called with unknown argument \`$1'" >&2
- exit 0
-
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-
diff --git a/debian/libvorbis-dev.preinst b/debian/libvorbis-dev.preinst
deleted file mode 100644
index 0f118a0e..00000000
--- a/debian/libvorbis-dev.preinst
+++ /dev/null
@@ -1,42 +0,0 @@
-#! /bin/sh
-# preinst script for vorbis
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-# * <new-preinst> `install'
-# * <new-preinst> `install' <old-version>
-# * <new-preinst> `upgrade' <old-version>
-# * <old-preinst> `abort-upgrade' <new-version>
-#
-# For details see /usr/share/doc/packaging-manual/
-
-case "$1" in
- install|upgrade)
-# if [ "$1" = "upgrade" ]
-# then
-# start-stop-daemon --stop --quiet --oknodo \
-# --pidfile /var/run/vorbis.pid \
-# --exec /usr/sbin/vorbis 2>/dev/null || true
-# fi
- ;;
-
- abort-upgrade)
- ;;
-
- *)
- echo "preinst called with unknown argument \`$1'" >&2
- exit 0
- ;;
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
-
-
diff --git a/debian/libvorbis-dev.prerm b/debian/libvorbis-dev.prerm
deleted file mode 100644
index 5983c0b5..00000000
--- a/debian/libvorbis-dev.prerm
+++ /dev/null
@@ -1,37 +0,0 @@
-#! /bin/sh
-# prerm script for vorbis
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-# * <prerm> `remove'
-# * <old-prerm> `upgrade' <new-version>
-# * <new-prerm> `failed-upgrade' <old-version>
-# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
-# * <deconfigured's-prerm> `deconfigure' `in-favour'
-# <package-being-installed> <version> `removing'
-# <conflicting-package> <version>
-# for details, see /usr/share/doc/packaging-manual/
-
-case "$1" in
- remove|upgrade|deconfigure)
-# install-info --quiet --remove /usr/info/vorbis.info.gz
- ;;
- failed-upgrade)
- ;;
- *)
- echo "prerm called with unknown argument \`$1'" >&2
- exit 0
- ;;
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
-
-
diff --git a/debian/libvorbis0.dirs b/debian/libvorbis0.dirs
deleted file mode 100644
index 68457717..00000000
--- a/debian/libvorbis0.dirs
+++ /dev/null
@@ -1 +0,0 @@
-usr/lib
diff --git a/debian/libvorbis0.docs b/debian/libvorbis0.docs
deleted file mode 100644
index e845566c..00000000
--- a/debian/libvorbis0.docs
+++ /dev/null
@@ -1 +0,0 @@
-README
diff --git a/debian/libvorbis0.files b/debian/libvorbis0.files
deleted file mode 100644
index 093956b1..00000000
--- a/debian/libvorbis0.files
+++ /dev/null
@@ -1 +0,0 @@
-usr/lib/*.so.*
diff --git a/debian/libvorbis0.postinst b/debian/libvorbis0.postinst
deleted file mode 100644
index f4ac5761..00000000
--- a/debian/libvorbis0.postinst
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /bin/sh
-# postinst script for vorbis
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-# * <postinst> `configure' <most-recently-configured-version>
-# * <old-postinst> `abort-upgrade' <new version>
-# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
-# <new-version>
-# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
-# <failed-install-package> <version> `removing'
-# <conflicting-package> <version>
-# for details, see /usr/share/doc/packaging-manual/
-#
-# quoting from the policy:
-# Any necessary prompting should almost always be confined to the
-# post-installation script, and should be protected with a conditional
-# so that unnecessary prompting doesn't happen if a package's
-# installation fails and the `postinst' is called with `abort-upgrade',
-# `abort-remove' or `abort-deconfigure'.
-
-case "$1" in
- configure)
- ldconfig
- ;;
-
- abort-upgrade|abort-remove|abort-deconfigure)
-
- ;;
-
- *)
- echo "postinst called with unknown argument \`$1'" >&2
- exit 0
- ;;
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
-
-
diff --git a/debian/libvorbis0.postrm b/debian/libvorbis0.postrm
deleted file mode 100644
index 39ffcaf0..00000000
--- a/debian/libvorbis0.postrm
+++ /dev/null
@@ -1,36 +0,0 @@
-#! /bin/sh
-# postrm script for vorbis
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-# * <postrm> `remove'
-# * <postrm> `purge'
-# * <old-postrm> `upgrade' <new-version>
-# * <new-postrm> `failed-upgrade' <old-version>
-# * <new-postrm> `abort-install'
-# * <new-postrm> `abort-install' <old-version>
-# * <new-postrm> `abort-upgrade' <old-version>
-# * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
-# for details, see /usr/share/doc/packaging-manual/
-
-case "$1" in
- purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
-
-
- ;;
-
- *)
- echo "postrm called with unknown argument \`$1'" >&2
- exit 0
-
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-
diff --git a/debian/libvorbis0.preinst b/debian/libvorbis0.preinst
deleted file mode 100644
index 0f118a0e..00000000
--- a/debian/libvorbis0.preinst
+++ /dev/null
@@ -1,42 +0,0 @@
-#! /bin/sh
-# preinst script for vorbis
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-# * <new-preinst> `install'
-# * <new-preinst> `install' <old-version>
-# * <new-preinst> `upgrade' <old-version>
-# * <old-preinst> `abort-upgrade' <new-version>
-#
-# For details see /usr/share/doc/packaging-manual/
-
-case "$1" in
- install|upgrade)
-# if [ "$1" = "upgrade" ]
-# then
-# start-stop-daemon --stop --quiet --oknodo \
-# --pidfile /var/run/vorbis.pid \
-# --exec /usr/sbin/vorbis 2>/dev/null || true
-# fi
- ;;
-
- abort-upgrade)
- ;;
-
- *)
- echo "preinst called with unknown argument \`$1'" >&2
- exit 0
- ;;
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
-
-
diff --git a/debian/libvorbis0.prerm b/debian/libvorbis0.prerm
deleted file mode 100644
index 5983c0b5..00000000
--- a/debian/libvorbis0.prerm
+++ /dev/null
@@ -1,37 +0,0 @@
-#! /bin/sh
-# prerm script for vorbis
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-# * <prerm> `remove'
-# * <old-prerm> `upgrade' <new-version>
-# * <new-prerm> `failed-upgrade' <old-version>
-# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
-# * <deconfigured's-prerm> `deconfigure' `in-favour'
-# <package-being-installed> <version> `removing'
-# <conflicting-package> <version>
-# for details, see /usr/share/doc/packaging-manual/
-
-case "$1" in
- remove|upgrade|deconfigure)
-# install-info --quiet --remove /usr/info/vorbis.info.gz
- ;;
- failed-upgrade)
- ;;
- *)
- echo "prerm called with unknown argument \`$1'" >&2
- exit 0
- ;;
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
-
-
diff --git a/debian/rules b/debian/rules
deleted file mode 100755
index 53647033..00000000
--- a/debian/rules
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/make -f
-# Sample debian/rules that uses debhelper.
-# GNU copyright 1997 to 1999 by Joey Hess.
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-# This is the debhelper compatability version to use.
-export DH_COMPAT=3
-
-configure: configure-stamp
-configure-stamp:
- dh_testdir
- # Add here commands to configure the package.
-
- # If compiling cvs version change to ./autogen.sh --prefix=/usr
- ./configure --prefix=/usr
-
- touch configure-stamp
-
-build: configure-stamp build-stamp
-build-stamp:
- dh_testdir
-
- # Add here commands to compile the package.
- $(MAKE)
-
- touch build-stamp
-
-clean:
- dh_testdir
- dh_testroot
- rm -f build-stamp configure-stamp
-
- # Add here commands to clean up after the build process.
- -$(MAKE) distclean
-
- dh_clean
-
-install: build
- dh_testdir
- dh_testroot
- dh_clean -k
- dh_installdirs
-
- # Add here commands to install the package into debian/tmp.
- $(MAKE) install DESTDIR=`pwd`/debian/tmp
-
-
-# Build architecture-independent files here.
-binary-indep: build install
-# We have nothing to do by default.
-
-# Build architecture-dependent files here.
-binary-arch: build install
- dh_testdir
- dh_testroot
-
- dh_movefiles
-
- dh_installdocs debian/tmp/usr/share/doc/libvorbis-1.0rc1/*
- dh_installexamples
- dh_installmanpages
- dh_installchangelogs
- dh_link
- dh_strip
- dh_compress
- dh_fixperms
- dh_makeshlibs -V
- dh_installdeb
- dh_shlibdeps
- dh_gencontrol
- dh_md5sums
- dh_builddeb
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/doc/.cvsignore b/doc/.cvsignore
deleted file mode 100644
index 282522db..00000000
--- a/doc/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/doc/Makefile.am b/doc/Makefile.am
deleted file mode 100644
index 251e9973..00000000
--- a/doc/Makefile.am
+++ /dev/null
@@ -1,13 +0,0 @@
-## Process this with automake to create Makefile.in
-
-AUTOMAKE_OPTIONS = foreign
-
-SUBDIRS = vorbisfile vorbisenc
-
-docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)
-
-doc_DATA = v-comment.html vorbisword2.png white-ogg.png programming.html\
- vorbis.html wait.png white-xifish.png vorbis-clip.txt\
- vorbis-errors.txt
-
-EXTRA_DIST = $(doc_DATA)
diff --git a/doc/eightphase.png b/doc/eightphase.png
deleted file mode 100644
index c5c4bc25..00000000
--- a/doc/eightphase.png
+++ /dev/null
Binary files differ
diff --git a/doc/fourphase.png b/doc/fourphase.png
deleted file mode 100644
index a7c12ce5..00000000
--- a/doc/fourphase.png
+++ /dev/null
Binary files differ
diff --git a/doc/programming.html b/doc/programming.html
deleted file mode 100644
index 7f6e62fe..00000000
--- a/doc/programming.html
+++ /dev/null
@@ -1,507 +0,0 @@
-<HTML><HEAD><TITLE>xiph.org: Ogg Vorbis documentation</TITLE>
-<BODY bgcolor="#ffffff" text="#202020" link="#006666" vlink="#000000">
-<nobr><img src="white-ogg.png"><img src="vorbisword2.png"></nobr><p>
-
-
-<h1><font color=#000070>
-Programming with Xiphophorus <tt>libvorbis</tt>
-</font></h1>
-
-<em>Last update to this document: July 22, 1999</em><br>
-
-<h2>Description</h2>
-
-Libvorbis is Xiphophorus's portable Ogg Vorbis CODEC implemented as a
-programmatic library. Libvorbis provides primitives to handle framing
-and manipulation of Ogg bitstreams (used by the Vorbis for
-streaming), a full analysis (encoding) interface as well as packet
-decoding and synthesis for playback. <p>
-
-The libvorbis library does not provide any system interface; a
-full-featured demonstration player included with the library
-distribtion provides example code for a variety of system interfaces
-as well as a working example of using libvorbis in production code.
-
-<h2>Encoding Overview</h2>
-
-
-
-<h2>Decoding Overview</h2>
-
-Decoding a bitstream with libvorbis follows roughly the following
-steps:
-
-<ol>
-<li>Frame the incoming bitstream into pages
-<li>Sort the pages by logical bitstream and buffer then into logical streams
-<li>Decompose the logical streams into raw packets
-<li>Reconstruct segments of the original data from each packet
-<li>Glue the reconstructed segments back into a decoded stream
-</ol>
-
-<h3>Framing</h3>
-
-An Ogg bitstream is logically arranged into pages, but to decode
-the pages, we have to find them first. The raw bitstream is first fed
-into an <tt>ogg_sync_state</tt> buffer using <tt>ogg_sync_buffer()</tt>
-and <tt>ogg_sync_wrote()</tt>. After each block we submit to the sync
-buffer, we should check to see if we can frame and extract a complete
-page or pages using <tt>ogg_sync_pageout()</tt>. Extra pages are
-buffered; allowing them to build up in the <tt>ogg_sync_state</tt>
-buffer will eventually exhaust memory.<p>
-
-The Ogg pages returned from <tt>ogg_sync_pageout</tt> need not be
-decoded further to be used as landmarks in seeking; seeking can be
-either a rough process of simply jumping to approximately intuited
-portions of the bitstream, or it can be a precise bisection process
-that captures pages and inspects data position. When seeking,
-however, sequential multiplexing (chaining) must be accounted for;
-beginning play in a new logical bitstream requires initializing a
-synthesis engine with the headers from that bitstream. Vorbis
-bitstreams do not make use of concurent multiplexing (grouping).<p>
-
-<h3>Sorting</h3>
-
-The pages produced by <tt>ogg_sync_pageout</tt> are then sorted by
-serial number to seperate logical bitstreams. Initialize logical
-bitstream buffers (<tt>og_stream_state</tt>) using
-<tt>ogg_stream_init()</tt>. Pages are submitted to the matching
-logical bitstream buffer using <tt>ogg_stream_pagein</tt>; the serial
-number of the page and the stream buffer must match, or the page will
-be rejected. A page submitted out of sequence will simply be noted,
-and in the course of outputting packets, the hole will be flagged
-(<tt>ogg_sync_pageout</tt> and <tt>ogg_stream_packetout</tt> will
-return a negative value at positions where they had to recapture the
-stream).
-
-<h3>Extracting packets</h3>
-
-After submitting page[s] to a logical stream, read available packets
-using <tt>ogg_stream_packetout</tt>.
-
-<h3>Decoding packets</h3>
-
-<h3>Reassembling data segments</h3>
-
-
-<h2>Ogg Bitstream Manipulation Structures</h3>
-
-Two of the Ogg bitstream data structures are intended to be
-transparent to the developer; the fields should be used directly.<p>
-
-<h3>ogg_packet</h3>
-
-<pre>
-typedef struct {
- unsigned char *packet;
- long bytes;
- long b_o_s;
- long e_o_s;
-
- size64 frameno;
-
-} ogg_packet;
-</pre>
-
-<dl>
-<dt>packet: <dd>a pointer to the byte data of the raw packet
-<dt>bytes: <dd>the size of the packet' raw data
-<dt>b_o_s: <dd>beginning of stream; nonzero if this is the first packet of
- the logical bitstream
-<dt>e_o_s: <dd>end of stream; nonzero if this is the last packet of the
- logical bitstream
-<dt>frameno: <dd>the absolute position of this packet in the original
- uncompressed data stream.
-</dl>
-
-<h4>encoding notes</h4> The encoder is responsible for setting all of
-the fields of the packet to appropriate values before submission to
-<tt>ogg_stream_packetin()</tt>; however, it is noted that the value in
-<tt>b_o_s</tt> is ignored; the first page produced from a given
-<tt>ogg_stream_state</tt> structure will be stamped as the initial
-page. <tt>e_o_s</tt>, however, must be set; this is the means by
-which the stream encoding primitives handle end of stream and cleanup.
-
-<h4>decoding notes</h4><tt>ogg_stream_packetout()</tt> sets the fields
-to appropriate values. Note that frameno will be >= 0 only in the
-case that the given packet actually represents that position (ie, only
-the last packet completed on any page will have a meaningful
-<tt>frameno</tt>). Intervening frames will see <tt>frameno</tt> set
-to -1.
-
-<h3>ogg_page</h3>
-
-<pre>
-typedef struct {
- unsigned char *header;
- long header_len;
- unsigned char *body;
- long body_len;
-} ogg_page;
-</pre>
-
-<dl>
-<dt>header: <dd>pointer to the page header data
-<dt>header_len: <dd>length of the page header in bytes
-<dt>body: <dd>pointer to the page body
-<dt>body_len: <dd>length of the page body
-</dl>
-
-Note that although the <tt>header</tt> and <tt>body</tt> pointers do
-not necessarily point into a single contiguous page vector, the page
-body must immediately follow the header in the bitstream.<p>
-
-<h2>Ogg Bitstream Manipulation Functions</h3>
-
-<h3>
-int ogg_page_bos(ogg_page *og);
-</h3>
-
-Returns the 'beginning of stream' flag for the given Ogg page. The
-beginning of stream flag is set on the initial page of a logical
-bitstream.<P>
-
-Zero indicates the flag is cleared (this is not the initial page of a
-logical bitstream). Nonzero indicates the flag is set (this is the
-initial page of a logical bitstream).<p>
-
-<h3>
-int ogg_page_continued(ogg_page *og);
-</h3>
-
-Returns the 'packet continued' flag for the given Ogg page. The packet
-continued flag indicates whether or not the body data of this page
-begins with packet continued from a preceeding page.<p>
-Zero (unset) indicates that the body data begins with a new packet.
-Nonzero (set) indicates that the first packet data on the page is a
-continuation from the preceeding page.
-
-<h3>
-int ogg_page_eos(ogg_page *og);
-</h3>
-
-Returns the 'end of stream' flag for a give Ogg page. The end of page
-flag is set on the last (terminal) page of a logical bitstream.<p>
-
-Zero (unset) indicates that this is not the last page of a logical
-bitstream. Nonzero (set) indicates that this is the last page of a
-logical bitstream and that no addiitonal pages belonging to this
-bitstream may follow.<p>
-
-<h3>
-size64 ogg_page_frameno(ogg_page *og);
-</h3>
-
-Returns the position of this page as an absolute position within the
-original uncompressed data. The position, as returned, is 'frames
-encoded to date up to and including the last whole packet on this
-page'. Partial packets begun on this page but continued to the
-following page are not included. If no packet ends on this page, the
-frame position value will be equal to the frame position value of the
-preceeding page. If none of the original uncompressed data is yet
-represented in the logical bitstream (for example, the first page of a
-bitstream consists only of a header packet; this packet encodes only
-metadata), the value shall be zero.<p>
-
-The units of the framenumber are determined by media mapping. A
-vorbis audio bitstream, for example, defines one frame to be the
-channel values from a single sampling period (eg, a 16 bit stereo
-bitstream consists of two samples of two bytes for a total of four
-bytes, thus a frame would be four bytes). A video stream defines one
-frame to be a single frame of video.<p>
-
-<h3>
-int ogg_page_pageno(ogg_page *og);
-</h3>
-
-Returns the sequential page number of the given Ogg page. The first
-page in a logical bitstream is numbered zero; following pages are
-numbered in increasing monotonic order.<p>
-
-<h3>
-int ogg_page_serialno(ogg_page *og);
-</h3>
-
-Returns the serial number of the given Ogg page. The serial number is
-used as a handle to distinguish various logical bitstreams in a
-physical Ogg bitstresm. Every logical bitstream within a
-physical bitstream must use a unique (within the scope of the physical
-bitstream) serial number, which is stamped on all bitstream pages.<p>
-
-<h3>
-int ogg_page_version(ogg_page *og);
-</h3>
-
-Returns the revision of the Ogg bitstream structure of the given page.
-Currently, the only permitted number is zero. Later revisions of the
-bitstream spec will increment this version should any changes be
-incompatable.</p>
-
-<h3>
-int ogg_stream_clear(ogg_stream_state *os);
-</h3>
-
-Clears and deallocates the internal storage of the given Ogg stream.
-After clearing, the stream structure is not initialized for use;
-<tt>ogg_stream_init</tt> must be called to reinitialize for use.
-Use <tt>ogg_stream_reset</tt> to reset the stream state
-to a fresh, intiialized state.<p>
-
-<tt>ogg_stream_clear</tt> does not call <tt>free()</tt> on the pointer
-<tt>os</tt>, allowing use of this call on stream structures in static
-or automatic storage. <tt>ogg_stream_destroy</tt>is a complimentary
-function that frees the pointer as well.<p>
-
-Returns zero on success and non-zero on failure. This function always
-succeeds.<p>
-
-<h3>
-int ogg_stream_destroy(ogg_stream_state *os);
-</h3>
-
-Clears and deallocates the internal storage of the given Ogg stream,
-then frees the storage associated with the pointer <tt>os</tt>.<p>
-
-<tt>ogg_stream_clear</tt> does not call <tt>free()</tt> on the pointer
-<tt>os</tt>, allowing use of that call on stream structures in static
-or automatic storage.<p>
-
-Returns zero on success and non-zero on failure. This function always
-succeeds.<p>
-
-<h3>
-int ogg_stream_init(ogg_stream_state *os,int serialno);
-</h3>
-
-Initialize the storage associated with <tt>os</tt> for use as an Ogg
-stream. This call is used to initialize a stream for both encode and
-decode. The given serial number is the serial number that will be
-stamped on pages of the produced bitstream (during encode), or used as
-a check that pages match (during decode).<p>
-
-Returns zero on success, nonzero on failure.<p>
-
-<h3>
-int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op);
-</h3>
-
-Used during encoding to add the given raw packet to the given Ogg
-bitstream. The contents of <tt>op</tt> are copied;
-<tt>ogg_stream_packetin</tt> does not retain any pointers into
-<tt>op</tt>'s storage. The encoding proccess buffers incoming packets
-until enough packets have been assembled to form an entire page;
-<tt>ogg_stream_pageout</tt> is used to read complete pages.<p>
-
-Returns zero on success, nonzero on failure.<p>
-
-<h3>
-int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op);
-</h3>
-
-Used during decoding to read raw packets from the given logical
-bitstream. <tt>ogg_stream_packetout</tt> will only return complete
-packets for which checksumming indicates no corruption. The size and
-contents of the packet exactly match those given in the encoding
-process. <p>
-
-Returns zero if the next packet is not ready to be read (not buffered
-or incomplete), positive if it returned a complete packet in
-<tt>op</tt> and negative if there is a gap, extra bytes or corruption
-at this position in the bitstream (essentially that the bitstream had
-to be recaptured). A negative value is not necessarily an error. It
-would be a common occurence when seeking, for example, which requires
-recapture of the bitstream at the position decoding continued.<p>
-
-Iff the return value is positive, <tt>ogg_stream_packetout</tt> placed
-a packet in <tt>op</tt>. The data in <t>op</tt> points to static
-storage that is valid until the next call to
-<tt>ogg_stream_pagein</tt>, <tt>ogg_stream_clear</tt>,
-<tt>ogg_stream_reset</tt>, or <tt>ogg_stream_destroy</tt>. The
-pointers are not invalidated by more calls to
-<tt>ogg_stream_packetout</tt>.<p>
-
-<h3>
-int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og);
-</h3>
-
-Used during decoding to buffer the given complete, pre-verified page
-for decoding into raw Ogg packets. The given page must be framed,
-normally produced by <tt>ogg_sync_pageout</tt>, and from the logical
-bitstream associated with <tt>os</tt> (the serial numbers must match).
-The contents of the given page are copied; <tt>ogg_stream_pagein</tt>
-retains no pointers into <tt>og</tt> storage.<p>
-
-Returns zero on success and non-zero on failure.<p>
-
-<h3>
-int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og);
-</h3>
-
-Used during encode to read complete pages from the stream buffer. The
-returned page is ready for sending out to the real world.<p>
-
-Returns zero if there is no complete page ready for reading. Returns
-nonzero when it has placed data for a complete page into
-<tt>og</tt>. Note that the storage returned in og points into internal
-storage; the pointers in <tt>og</tt> are valid until the next call to
-<tt>ogg_stream_pageout</tt>, <tt>ogg_stream_packetin</tt>,
-<tt>ogg_stream_reset</tt>, <tt>ogg_stream_clear</tt> or
-<tt>ogg_stream_destroy</tt>.
-
-<h3>
-int ogg_stream_reset(ogg_stream_state *os);
-</h3>
-
-Resets the given stream's state to that of a blank, unused stream;
-this may be used during encode or decode. <p>
-
-Note that if used during encode, it does not alter the stream's serial
-number. In addition, the next page produced during encoding will be
-marked as the 'initial' page of the logical bitstream.<p>
-
-When used during decode, this simply clears the data buffer of any
-pending pages. Beginning and end of stream cues are read from the
-bitstream and are unaffected by reset.<p>
-
-Returns zero on success and non-zero on failure. This function always
-succeeds.<p>
-
-<h3>
-char *ogg_sync_buffer(ogg_sync_state *oy, long size);
-</h3>
-
-This call is used to buffer a raw bitstream for framing and
-verification. <tt>ogg_sync_buffer</tt> handles stream capture and
-recapture, checksumming, and division into Ogg pages (as required by
-<tt>ogg_stream_pagein</tt>).<p>
-
-<tt>ogg_sync_buffer</tt> exposes a buffer area into which the decoder
-copies the next (up to) <tt>size</tt> bytes. We expose the buffer
-(rather than taking a buffer) in order to avoid an extra copy many
-uses; this way, for example, <tt>read()</tt> can transfer data
-directly into the stream buffer without first needing to place it in
-temporary storage.<p>
-
-Returns a pointer into <tt>oy</tt>'s internal bitstream sync buffer;
-the remaining space in the sync buffer is at least <tt>size</tt>
-bytes. The decoder need not write all of <tt>size</tt> bytes;
-<tt>ogg_sync_wrote</tt> is used to inform the engine how many bytes
-were actually written. Use of <tt>ogg_sync_wrote</tt> after writing
-into the exposed buffer is mandantory.<p>
-
-<h3>
-int ogg_sync_clear(ogg_sync_state *oy);
-</h3>
-
-<tt>ogg_sync_clear</tt>
-
-Clears and deallocates the internal storage of the given Ogg sync
-buffer. After clearing, the sync structure is not initialized for
-use; <tt>ogg_sync_init</tt> must be called to reinitialize for use.
-Use <tt>ogg_sync_reset</tt> to reset the sync state and buffer to a
-fresh, intiialized state.<p>
-
-<tt>ogg_sync_clear</tt> does not call <tt>free()</tt> on the pointer
-<tt>oy</tt>, allowing use of this call on sync structures in static
-or automatic storage. <tt>ogg_sync_destroy</tt>is a complimentary
-function that frees the pointer as well.<p>
-
-Returns zero on success and non-zero on failure. This function always
-succeeds.<p>
-
-<h3>
-int ogg_sync_destroy(ogg_sync_state *oy);
-</h3>
-
-Clears and deallocates the internal storage of the given Ogg sync
-buffer, then frees the storage associated with the pointer
-<tt>oy</tt>.<p>
-
-<tt>ogg_sync_clear</tt> does not call <tt>free()</tt> on the pointer
-<tt>oy</tt>, allowing use of that call on stream structures in static
-or automatic storage.<p>
-
-Returns zero on success and non-zero on failure. This function always
-succeeds.<p>
-
-<h3>
-int ogg_sync_init(ogg_sync_state *oy);
-</h3>
-
-Initializes the sync buffer <tt>oy</tt> for use.<p>
-Returns zero on success and non-zero on failure. This function always
-succeeds.<p>
-
-<h3>
-int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og);
-</h3>
-
-Reads complete, framed, verified Ogg pages from the sync buffer,
-placing the page data in <tt>og</tt>.<p>
-
-Returns zero when there's no complete pages buffered for
-retrieval. Returns negative when a loss of sync or recapture occurred
-(this is not necessarily an error; recapture would be required after
-seeking, for example). Returns positive when a page is returned in
-<tt>og</tt>. Note that the data in <tt>og</tt> points into the sync
-buffer storage; the pointers are valid until the next call to
-<tt>ogg_sync_buffer</tt>, <tt>ogg_sync_clear</tt>,
-<tt>ogg_sync_destroy</tt> or <tt>ogg_sync_reset</tt>.
-
-
-<h3>
-int ogg_sync_reset(ogg_sync_state *oy);
-</h3>
-
-<tt>ogg_sync_reset</tt> resets the sync state in <tt>oy</tt> to a
-clean, empty state. This is useful, for example, when seeking to a
-new location in a bitstream.<p>
-
-Returns zero on success, nonzero on failure.<p>
-
-<h3>
-int ogg_sync_wrote(ogg_sync_state *oy, long bytes);
-</h3>
-
-Used to inform the sync state as to how many bytes were actually
-written into the exposed sync buffer. It must be equal to or less
-than the size of the buffer requested.<p>
-
-Returns zero on success and non-zero on failure; failure occurs only
-when the number of bytes written were larger than the buffer.<p>
-
-<hr>
-<a href="http://www.xiph.org/">
-<img src="white-xifish.png" align=left border=0>
-</a>
-<font size=-2 color=#505050>
-
-Ogg is a <a href="http://www.xiph.org">Xiphophorus</a> effort to
-protect essential tenets of Internet multimedia from corporate
-hostage-taking; Open Source is the net's greatest tool to keep
-everyone honest. See <a href="http://www.xiph.org/about.html">About
-Xiphophorus</a> for details.
-<p>
-
-Ogg Vorbis is the first Ogg audio CODEC. Anyone may
-freely use and distribute the Ogg and Vorbis specification,
-whether in a private, public or corporate capacity. However,
-Xiphophorus and the Ogg project (xiph.org) reserve the right to set
-the Ogg/Vorbis specification and certify specification compliance.<p>
-
-Xiphophorus's Vorbis software CODEC implementation is distributed
-under the Lesser/Library GNU Public License. This does not restrict
-third parties from distributing independent implementations of Vorbis
-software under other licenses.<p>
-
-OggSquish, Vorbis, Xiphophorus and their logos are trademarks (tm) of
-<a href="http://www.xiph.org/">Xiphophorus</a>. These pages are
-copyright (C) 1994-2000 Xiphophorus. All rights reserved.<p>
-
-</body>
-
-
-
-
-
-
diff --git a/doc/squarepolar.png b/doc/squarepolar.png
deleted file mode 100644
index 179a53ca..00000000
--- a/doc/squarepolar.png
+++ /dev/null
Binary files differ
diff --git a/doc/stereo.html b/doc/stereo.html
deleted file mode 100644
index 78ee74c4..00000000
--- a/doc/stereo.html
+++ /dev/null
@@ -1,494 +0,0 @@
-<HTML><HEAD><TITLE>xiph.org: Ogg Vorbis documentation</TITLE>
-<BODY bgcolor="#ffffff" text="#202020" link="#006666" vlink="#000000">
-<nobr><img src="white-ogg.png"><img src="vorbisword2.png"></nobr><p>
-
-
-<h1><font color=#000070>
-Stereo Channel Coupling in the Vorbis CODEC
-</font></h1>
-
-<em>Last update to this document: June 27, 2001</em><br>
-
-<h2>Abstract</h2> The Vorbis audio CODEC provides a channel coupling
-mechanisms designed to reduce effective bitrate by both eliminating
-interchannel redundancy and eliminating stereo image information
-labelled inaudible or undesireable according to spatial psychoacoustic
-models. This document describes both the mechanical coupling
-mechanisms available within the Vorbis specification, as well as the
-specific stereo coupling models used by the reference
-<tt>libvorbis</tt> CODEC provided by xiph.org.
-
-<h2>Terminology</h2> Terminology as used in this document is based on
-common terminology associated with contemporary CODECs such as MPEG I
-audio layer 3 (mp3). However, some differences in terminology are
-useful in the context of Vorbis as Vorbis functions somewhat
-differently than most current formats. For clarity, a few terms are
-defined beforehand here, and others will be defined where they first
-appear in context.<p>
-
-<h3>Subjective and Objective</h3>
-
-<em>Objective</em> fidelity is a measure, based on a computable,
-mechanical metric, of how carefully an output matches an input. For
-example, a stereo amplifier may claim to introduce less that .01%
-total harmonic distortion when amplifying an input signal; this claim
-is easy to verify given proper equiment, and any number of testers are
-likely to arrive at the same, exact results. One need not listen to
-the equipment to make this measurement.<p>
-
-However, given two amplifiers with identical, verifiable objective
-specifications, listeners may strongly prefer the sound quality of one
-over the other. This is actually the case in the decades old debate
-[some would say jihad] among audiophiles involving vacuum tube versus
-solid state amplifiers. There are people who can tell the difference,
-and strongly prefer one over the other despite seemingly identical,
-measurable quality. This preference is <em>subjective</em> and
-difficult to measure but nonetheless real.
-
-Individual elements of subjective differences often can be qualified,
-but overall subjective quality generally is not measurable. Different
-observers are likely to disagree on the exact results of a subjective
-test as each observer's perspective differs. When measuring
-subjective qualities, the best one can hope for is average, empirical
-results that show statistical significance across a group.<p>
-
-Perceptual codecs are most concerned with subjective, not objective,
-quality. This is why evaluating a perceptual codec via distortion
-measures and sonograms alone is useless; these objective measures may
-provide insight into the quality or functioning of a codec, but cannot
-answer the much squishier subjective question, "Does it sound
-good?". The tube amplifier example is perhaps not the best as very few
-people can hear, or care to hear, the minute differences between tubes
-and transistors, whereas the subjective differences in perceptual
-codecs tend to be quite large even when objective differences are
-not.<p>
-
-<h3>Fidelity, Artifacts and Differences</h3> Audio <em>artifacts</em>
-and loss of fidelity or more simply put, audio <em>differences</em>
-are not the same thing.<p>
-
-A loss of fidelity implies differences between the perceived input and
-output signal; it does not necessarily imply that the differences in
-output are displeasing or that the output sounds poor (although this
-is often the case). Tube amplifiers are <em>not</em> higher fidelity
-than modern solid state and digital systems. They simply produce a
-form of distortion and coloring that is either unnoticable or actually
-pleasing to many ears.<p>
-
-As compared to an original signal using hard metrics, all perceptual
-codecs [ASPEC, ATRAC, MP3, WMA, AAC, TwinVQ, AC3 and Vorbis included]
-lose objective fidelity in order to reduce bitrate. This is fact. The
-idea is to lose fidelity in ways that cannot be perceived. However,
-most current streaming applications demand bitrates lower than what
-can be acheived by sacrificing only objective fidelity; this is also
-fact, despite whatever various company press releases might claim.
-Subjective fidelity eventually must suffer in one way or another.<p>
-
-The goal is to choose the best possible tradeoff such that the
-fidelity loss is graceful and not obviously noticable. Most listeners
-of FM radio do not realize how much lower fidelity that medium is as
-compared to compact discs or DAT. However, when compared directly to
-source material, the difference is obvious. A cassette tape is lower
-fidelity still, and yet the degredation, relatively speaking, is
-graceful and generally easy not to notice. Compare this graceful loss
-of quality to an average 44.1kHz stereo mp3 encoded at 80 or 96kbps.
-The mp3 might actually be higher objective fidelity but subjectively
-sounds much worse.<p>
-
-Thus, when a CODEC <em>must</em> sacrifice subjective quality in order
-to satisfy a user's requirements, the result should be a
-<em>difference</em> that is generally either difficult to notice
-without comparison, or easy to ignore. An <em>artifact</em>, on the
-other hand, is an element introduced into the output that is
-immediately noticable, obviously foreign, and undesired. The famous
-'underwater' or 'twinkling' effect synonymous with low bitrate (or
-poorly encoded) mp3 is an example of an <em>artifact</em>. This
-working definition differs slightly from common usage, but the coined
-distinction between differences and artifacts is useful for our
-discussion.<p>
-
-The goal, when it is absolutely necessary to sacrifice subjective
-fidelity, is obviously to strive for differences and not artifacts.
-The vast majority of CODECs today fail at this task miserably,
-predictably, and regularly in one way or another. Avoiding such
-failures when it is necessary to sacrifice subjective quality is a
-fundamental design objective of Vorbis and that objective is reflected
-in Vorbis's channel coupling design.<p>
-
-<h2>Mechanisms</h2>
-
-In encoder release beta 4 and earlier, Vorbis supported multiple
-channel encoding, but the channels were encoded entirely seperately
-with no cross-analysis or redundancy elimination between channels.
-This multichannel strategy is very similar to the mp3's <em>dual
-stereo</em> mode and Vorbis uses the same name for it's analagous
-uncoupled multichannel modes.
-
-However, the Vorbis spec provides for, and Vorbis release 1.0 rc1 and
-later implement a coupled channel strategy. Vorbis has two specific
-mechanisms that may be used alone or in conjunction to implement
-channel coupling. The first is <em>channel interleaving</em> via
-residue backend #2, and the second is <em>square polar mapping</em>.
-These two general mechanisms are particularly well suited to coupling
-due to the structure of Vorbis encoding, as we'll explore below, and
-using both we can implement both totally <em>lossless stereo image
-coupling</em>, as well as various lossy models that seek to eliminate
-inaudible or unimportant aspects of the stereo image in order to
-enhance bitrate. The exact coupling implementation is generalized to
-allow the encoder a great deal of flexibility in implementation of a
-stereo model without requiring any significant complexity increase
-over the combinatorically simpler mid/side joint stereo of mp3 and
-other current audio codecs.<p>
-
-Channel interleaving may be applied directly to more than a single
-channel and polar mapping is hierarchical such that polar coupling may be
-extrapolated to an arbitrary number of channels and is not restricted
-to only stereo, quadriphonics, ambisonics or 5.1 surround. However,
-the scope of this document restricts itself to the stereo coupling
-case.<p>
-
-<h3>Square Polar Mapping</h3>
-
-<h4>maximal correlation</h4>
-
-Recall that the basic structure of a a Vorbis I stream first generates
-from input audio a spectral 'floor' function that serves as an
-MDCT-domain whitening filter. This floor is meant to represent the
-rough envelope of the frequency spectrum, using whatever metric the
-encoder cares to define. This floor is subtracted from the log
-frequency spectrum, effectively normalizing the spectrum by frequency.
-Each input channel is associated with a unique floor function.<p>
-
-The basic idea behind any stereo coupling is that the left and right
-channels usually correlate. This correlation is even stronger if one
-first accounts for energy differences in any given frequency band
-across left and right; think for example of individual instruments
-mixed into different portions of the stereo image, or a stereo
-recording with a dominant feature not perfectly in the center. The
-floor functions, each specific to a channel, provide the perfect means
-of normaizing left and right energies across the spectrum to maximize
-correlation before coupling. This feature of the Vorbis format is not
-a convenient accident.<p>
-
-Because we strive to maximally correlate the left and right channels
-and generally succeed in doing so, left and right residue is typically
-nearly identical. We could use channel interleaving (discussed below)
-alone to efficiently remove the redundancy between the left and right
-channels as a side effect of entropy encoding, but a polar
-representation gives benefits when left/right correlation is
-strong. <p>
-
-<h4>point and diffuse imaging</h4>
-
-The first advantage of a polar representation is that it effectively
-seperates the spatial audio information into a 'point image'
-(magnitude) at a given frequency and located somewhere in the sound
-field, and a 'diffuse image' (angle) that fills a large amount of
-space silmultaneously. Even if we preserve only the magnitude (point)
-data, a detailed and carefully chosen floor function in each channel
-provides us with a free, fine-grained, frequency relative intensity
-stereo*. Angle information represents diffuse sound fields, such as
-reverberation that fills the entre space silmultaneously.<p>
-
-*<em>Because the Vorbis model supports a number of different possible
-stereo models and these models may be mixed, we do not use the term
-'intensity stereo' talking about Vorbis; instead we use the terms
-'point stereo', 'phase stereo' and subcategories of each.</em><p>
-
-The majority of a stereo image is representable by polar magnitude
-alone, as strong sounds tend to be produced at near-point sources;
-even non-diffuse, fast, sharp echoes track very accurately using
-magnitude representation almost alone (for those experimenting with
-Vorbis tuning, this strategy works much better with the precise,
-piecewise control of floor 1; the continuous approximation of floor 0
-results in unstable imaging). Reverberation and diffuse sounds tend
-to contain less energy and be psychoacoustically dominated by the
-point sources embedded in them. Thus, we again tend to concentrate
-more represented energy into a predictably smaller number of numbers.
-Seperating representation of point and diffuse imaging also allows us
-to model and manipulate point and diffuse qualities seperately.<p>
-
-<h4>controlling bit leakage and symbol crosstalk</h4> Because polar
-representation concentrates represented energy into fewer large
-values, we reduce bit 'leakage' during cascading (multistage VQ
-encoding) as a secondary benefit. A single large, monolithic VQ
-codebook is more efficient than a cascaded book due to entropy
-'crosstalk' among symbols between different stages of a multistage cascade.
-Polar representation is a way of further concentrating entropy into
-predictable locations so that codebook design can take steps to
-improve multistage codebook efficiency. It also allows us to cascade
-various elements of the stereo image independently.<p>
-
-<h4>eliminating trigonometry and rounding</h4>
-
-Rounding and computational complexity are potential problems with a
-polar representation. As our encoding process involves quantization,
-mixing a polar representation and quantization makes it potentially
-impossible, depending on implementation, to construct a coupled stereo
-mechanism that results in bit-identical decompressed output compared
-to an uncoupled encoding should the encoder desire it.<p>
-
-Vorbis uses a mapping that preserves the most useful qualities of
-polar representation, relies only on addition/subtraction, and makes
-it trivial before or after quantization to represent an
-angle/magnitude through a one-to-one mapping from possible left/right
-value permutations. We do this by basing our polar representation on
-the unit square rather than the unit-circle.<p>
-
-Given a magnitude and angle, we recover left and right using the
-following function (note that A/B may be left/right or right/left
-depending on the coupling definition used by the encoder):<p>
-
-<pre>
- if(magnitude>0)
- if(angle>0){
- A=magnitude;
- B=magnitude-angle;
- }else{
- B=magnitude;
- A=magnitude+angle;
- }
- else
- if(angle>0){
- A=magnitude;
- B=magnitude+angle;
- }else{
- B=magnitude;
- A=magnitude-angle;
- }
- }
-</pre>
-
-The function is antisymmetric for positive and negative magnitudes in
-order to eliminate a redundant value when quantizing. For example, if
-we're quantizing to integer values, we can visualize a magnitude of 5
-and an angle of -2 as follows:<p>
-
-<img src="squarepolar.png">
-
-<p>
-This representation loses or replicates no values; if the range of A
-and B are integral -5 through 5, the number of possible Cartesian
-permutations is 121. Represented in square polar notation, the
-possible values are:
-
-<pre>
- 0, 0
-
--1,-2 -1,-1 -1, 0 -1, 1
-
- 1,-2 1,-1 1, 0 1, 1
-
--2,-4 -2,-3 -2,-2 -2,-1 -2, 0 -2, 1 -2, 2 -2, 3
-
- 2,-4 2,-3 ... following the pattern ...
-
- ... 5, 1 5, 2 5, 3 5, 4 5, 5 5, 6 5, 7 5, 8 5, 9
-
-</pre>
-
-...for a grand total of 121 possible values, the same number as in
-Cartesian representation (note that, for example, <tt>5,-10</tt> is
-the same as <tt>-5,10</tt>, so there's no reason to represent
-both. 2,10 cannot happen, and there's no reason to account for it.)
-It's also obvious that this mapping is exactly reversable.<p>
-
-<h3>Channel interleaving</h3>
-
-We can remap and A/B vector using polar mapping into a magnitude/angle
-vector, and it's clear that, in general, this concentrates energy in
-the magnitude vector and reduces the amount of information to encode
-in the angle vector. Encoding these vectors independently with
-residue backend #0 or residue backend #1 will result in substantial
-bitrate savings. However, there are still implicit correlations
-between the magnitude and angle vectors. The most obvious is that the
-amplitude of the angle is bounded by its corresponding magnitude
-value.<p>
-
-Entropy coding the results, then, further benefits from the entropy
-model being able to compress magnitude and angle silmultaneously. For
-this reason, Vorbis implements residuebackend #2 which preinterleaves
-a number of input vectors (in the stereo case, two, A and B) into a
-single output vector (with the elements in the order of
-A_0, B_0, A_1, B_1, A_2 ... A_n-1, B_n-1) before entropy encoding. Thus
-each vector to be coded by the vector quantization backend consists of
-matching magnitude and angle values.<p>
-
-The astute reader, at this point, will notice that in the theoretical
-case in which we can use monolithic codebooks of arbitrarily large
-size, we can directly interleave and encode left and right without
-polar mapping; in fact, the polar mapping does not appear to lend any
-benefit whatsoever to the efficiency of the entropy coding. In fact,
-it is perfectly possible and reasonable to build a Vorbis encoder that
-dispenses with polar mapping entirely and merely interleaves the
-channel. Libvorbis based encoders may configure such an encoding and
-it will work as intended.<p>
-
-However, when we leave the ideal/theoretical domain, we notice that
-polar mapping does give additional practical benefits, as discussed in
-the above section on polar mapping and summarised again here:<p>
-<ul>
-<li>Polar mapping aids in controlling entropy 'leakage' between stages
-of a cascaded codebook. <li>Polar mapping seperates the stereo image
-into point and diffuse components which may be analyzed and handled
-differently.
-</ul>
-
-<h2>Stereo Models</h2>
-
-<h3>Dual Stereo</h3>
-
-Dual stereo referrs to stereo encoding where the channels are entirely
-seperate; they are analyzed and encoded as entirely distinct entities.
-This terminology is familiar from mp3.<p>
-
-<h3>Lossless Stereo</h3>
-
-Using polar mapping and/or channel interleaving, it's possible to
-couple Vorbis channels losslessly, that is, construct a stereo
-coupling encoding that both saves space but also decodes
-bit-identically to dual stereo. OggEnc 1.0 and later offers this
-mode.<p>
-
-Overall, this stereo mode is overkill; however, it offers a safe
-alternative to users concerned about the slightest possible
-degredation to the stereo image or archival quality audio.<p>
-
-<h3>Phase Stereo</h3>
-
-Phase stereo is the least aggressive means of gracefully dropping
-resolution from the stereo image; it affects only diffuse imaging.<p>
-
-It's often quoted that the human ear is nearly entirely deaf to signal
-phase above about 4kHz; this is nearly true and a passable rule of
-thumb, but it can be demonstrated that even an average user can tell
-the difference between high frequency in-phase and out-of-phase noise.
-Obviously then, the statement is not entirely true. However, it's
-also the case that one must resort to nearly such an extreme
-demostration before finding the counterexample.<p>
-
-'Phase stereo' is simply a more aggressive quantization of the polar
-angle vector; above 4kHz it's generally quite safe to quantize noise
-and noisy elements to only a handful of allowed phases. The phases of
-high ampliude pure tones may or may not be preserved more carefully
-(they are relatively rare and L/R tend to be in phase, so there is
-generally little reason not to spend a few more bits on them) <p>
-
-<h4>eight phase stereo</h4>
-
-Vorbis implements phase stereo coupling by preserving the entirety of the magnitude vector (essential to fine amlitdude and energy resolution overall) and quantizing the angle vector to one of only four possible values. Given that the magnitude vector may be positive or negative, this results in left and right phase having eight possible permutation, thus 'eight phase stereo':<p>
-
-<img src="eightphase.png"><p>
-
-Left and right may be in phase (positive or negative), the most common
-case by far, or out of phase by 90 or 180 degrees.<p>
-
-<h4>four phase stereo</h4>
-
-Four phase stereo takes the quantization one step further; it allows
-only in-phase and 180 degree out-out-phase signals:<p>
-
-<img src="fourphase.png"><p>
-
-<h3>Point Stereo</h3>
-
-Point stero eliminates the possibility of out-of-phase signal
-entirely. Any diffuse quality to a sound source tends to collapse
-inward to a point somewhere within the stereo image. A practical
-example would be balanced reverberations within a large, live space;
-normally the sound is diffuse and soft, giving a sonic impression of
-volume. In point-stereo, the reverberations would still exist, but
-sound fairly firmly centered within the image (assuming the
-reverberation was centered overall; if the reverberation is stronger
-to the left, then the point of localization in point stereo would be
-to the left). This effect is most noticable at low and mid
-frequencies and using headphones (which grant perfect stereo
-seperation). Point stereo is is a graceful but generally easy to
-detect degrdation to the sound quality and is thus used in frequency
-ranges where it is least noticable.<p>
-
-<h3>Mixed Stereo</h3>
-
-Mixed stereo is the silmultaneous use of more than one of the above
-stereo encoding models, generally using more aggressive modes in
-higher frequencies, lower amplitudes or 'nearly' in-phase sound.<p>
-
-It is also the case that near-DC frequencies should be encoded using
-lossless coupling to avoid frame blocking artifacts.<p>
-
-<h3>Vorbis Stereo Modes</h3>
-
-Vorbis, for the most part, uses lossless stereo and a number of mixed
-modes constructed out of the above models. As of the current pre-1.0
-testing version of the encoder, oggenc supports the following modes.
-Oggenc's default choice varies by bitrate and each mode is selectable
-by the user:<p>
-
-<dl>
-<dt>dual stereo
-<dd>uncoupled stereo encoding<p>
-
-<dt>lossless stereo
-<dd>lossless stereo coupling; produces exactly equivalent output to dual stereo<p>
-
-<dt>eight phase stereo
-<dd>a mixed mode combining lossless stereo for frequencies to approximately 4 kHz (and all strong pure tones) and eight phase stereo above<p>
-
-<dt>aggressive eight phase stereo
-<dd>a mixed mode combining lossless stereo for frequencies to approximately 2 kHz (and for all strong pure tones) and eight phase stereo above<p>
-
-<dt>eight/four phase stero <dd>A mixed mode combining lossless stereo
-for bass, eight phase stereo for noisy content and lossless stereo for
-tones to approximately 4kHz and four phase stereo above 4kHz.<p>
-
-<dt>eight phase/point stero <dd>A mixed mode combining lossless stereo
-for bass, eight phase stereo for noisy content and lossless stereo for
-tones to approximately 4kHz and point stereo above 4kHz.<p>
-
-<dt>aggressive eight phase/point stero
-<dd>A mixed mode combining lossless stereo
-for bass, eight phase stereo to approximately 2kHz and point stereo above 2kHz.<p>
-
-<dt>point stereo
-<dd>A mixed mode combining lossless stereo to approximately 4kHz and point stereo above 4kHz.<p>
-
-<dt>aggressive point stereo
-<dd>A mixed mode combining lossless stereo to approximately 1-2kHz and point stereo above.<p>
-
-</dl>
-
-<hr>
-<a href="http://www.xiph.org/">
-<img src="white-xifish.png" align=left border=0>
-</a>
-<font size=-2 color=#505050>
-
-Ogg is a <a href="http://www.xiph.org">Xiphophorus</a> effort to
-protect essential tenets of Internet multimedia from corporate
-hostage-taking; Open Source is the net's greatest tool to keep
-everyone honest. See <a href="http://www.xiph.org/about.html">About
-Xiphophorus</a> for details.
-<p>
-
-Ogg Vorbis is the first Ogg audio CODEC. Anyone may
-freely use and distribute the Ogg and Vorbis specification,
-whether in a private, public or corporate capacity. However,
-Xiphophorus and the Ogg project (xiph.org) reserve the right to set
-the Ogg/Vorbis specification and certify specification compliance.<p>
-
-Xiphophorus's Vorbis software CODEC implementation is distributed
-under a BSD-like License. This does not restrict third parties from
-distributing independent implementations of Vorbis software under
-other licenses.<p>
-
-OggSquish, Vorbis, Xiphophorus and their logos are trademarks (tm) of
-<a href="http://www.xiph.org/">Xiphophorus</a>. These pages are
-copyright (C) 1994-2001 Xiphophorus. All rights reserved.<p>
-
-</body>
-
-
-
-
-
-
diff --git a/doc/v-comment.html b/doc/v-comment.html
deleted file mode 100644
index 99876df2..00000000
--- a/doc/v-comment.html
+++ /dev/null
@@ -1,194 +0,0 @@
-<HTML><HEAD><TITLE>xiph.org: Ogg Vorbis documentation</TITLE>
-<BODY bgcolor="#ffffff" text="#202020" link="#006666" vlink="#000000">
-<nobr><img src="white-ogg.png"><img src="vorbisword2.png"></nobr><p>
-
-
-<h1><font color=#000070>
-Ogg Vorbis comment field specification
-</font></h1>
-
-<em>Last update to this document: February 9, 2001</em><p>
-
-The text comment header is the second (of three) header packets that
-begin a Vorbis bitstream. It is meant for short, text comments,
-not arbitrary metadata; arbitrary metadata belongs in a
-metadata stream (usually an XML stream type).<p>
-
-<h2>Comment use rationale</h2>
-
-The comment field is meant to be used much like someone jotting a
-quick note on the bottom of a CDR. It should be a little information to
-remember the disc by and explain it to others; a short, to-the-point
-text note that need not only be a couple words, but isn't going to be
-more than a short paragraph. The essentials, in other words, whatever
-they turn out to be, eg:
-
-<blockquote>
-"Honest Bob and the Factory-to-Dealer-Incentives, _I'm Still Around_,
-opening for Moxy Fruvous, 1997"
-</blockquote>
-
-<h2>Structure</h2>
-
-The comment header logically is a list of eight-bit-clean vectors; the
-number of vectors is bounded to 2^32-1 and the length of each vector
-is limited to 2^32-1 bytes. The vector length is encoded; the vector
-is not null terminated. In addition to the vector list, there is a
-single vector for vendor name (also 8 bit clean, length encoded in 32
-bits). Libvorbis currently sets the vendor string to "Xiphophorus
-libVorbis I 20010119".<p>
-
-The comment vectors are structured similarly to a UNIX environment.
-That is, comment fields consist of a field name and a field value and
-look like:
-
-<pre>
-comment[0]="ARTIST=me";
-comment[1]="TITLE=the sound of vorbis";
-</pre>
-
-<h2>Content vector format</h2>
-
-<ul>
-<li>A case-insensitive field name that may consist of ASCII 0x20 through
-0x7D, 0x3D ('=') excluded. ASCII 0x41 through 0x5A inclusive (A-Z) is
-to be considered equivalent to ASCII 0x61 through 0x7A inclusive
-(a-z).
-
-<li>The field name is immediately followed by ASCII 0x3D ('='); this
-equals sign is used to terminate the field name.
-
-<li>0x3D is followed by 8 bit clean UTF-8 field contents to the end of
-the field.
-</ul>
-
-<h3>Field names</h3>
-
-Below is a proposed, minimal list of standard filed names with a
-description of intended use. No single or group of field names is
-mandatory; a comment header may contain one, all or none of the names
-in this list.
-<dl>
-<dt>TITLE<dd>Track name
-
-<dt>VERSION<dd>The version field may be used to differentiate multiple
-version of the same track title in a single collection. (e.g. remix info)
-
-<dt>ALBUM<dd>The collection name to which this track belongs
-
-<dt>TRACKNUMBER<dd>The track number of this piece if part of a specific larger collection or album
-
-<dt>ARTIST<dd>Track performer
-
-<dt>ORGANIZATION<dd>Name of the organization producing the track (i.e.
-the 'record label')
-
-<dt>DESCRIPTION<dd>A short text description of the contents
-
-<dt>GENRE<dd>A short text indication of music genre
-
-<dt>DATE<dd>Date the track was recorded
-
-<dt>LOCATION<dd>Location where track was recorded
-
-<dt>COPYRIGHT<dd>Copyright information
-
-<dt>ISRC<dd>ISRC number for the track; see <a href="http://www.ifpi.org/online/isrc_intro.html">the ISRC intro page</a> for more information on ISRC numbers.
-
-</dl>
-
-<h3>Implications</h3>
-<ul>
-<li>
-Field names should not be 'internationalized'; this is a
-concession to simplicity not an attempt to exclude the majority of
-the world that doesn't speak English. Field *contents*, however,
-are represented in UTF-8 to allow easy representation of any language.
-<li>
-We have the length of the entirety of the field and restrictions on
-the field name so that the field name is bounded in a known way. Thus
-we also have the length of the field contents.
-<li>
-Individual 'vendors' may use non-standard field names within
-reason. The proper use of comment fields should be clear through
-context at this point. Abuse will be discouraged.
-<li>
-There is no vendor-specific prefix to 'nonstandard' field names.
-Vendors should make some effort to avoid arbitrarily polluting the
-common namespace.
-<li>
-Field names are not required to be unique (occur once) within a
-comment header. As an example, assume a track was recorded by three
-well know artists; the following is permissible, and encouraged:
-<pre>
- ARTIST=Dizzy Gillespie
- ARTIST=Sonny Rollins
- ARTIST=Sonny Stitt
-</pre>
-
-</ul>
-
-<h2>Encoding</h2>
-
-The comment header comprises the entirety of the second bitstream
-header packet. Unlike the first bitstream header packet, it is not
-generally the only packet on the second page and may not be restricted
-to within the second bitstream page. The length of the comment header
-packet is [practically] unbounded. The comment header packet is not
-optional; it must be present in the bitstream even if it is
-effectively empty.<p>
-
-The comment header is encoded as follows (as per Ogg's standard
-bitstream mapping which renders least-significant-bit of the word to be
-coded into the least significant available bit of the current
-bitstream octet first):
-
-<ol>
-<li>
-Vendor string length (32 bit unsigned quantity specifying number of octets)
-
-<li>
-Vendor string ([vendor string length] octets coded from beginning of string to end of string, not null terminated)
-
-<li>Number of comment fields (32 bit unsigned quantity specifying number of fields)
-
-<li>Comment field 0 length (if [Number of comment fields]>0; 32 bit unsigned quantity specifying number of octets)
-
-<li>
-Comment field 0 ([Comment field 0 length] octets coded from beginning of string to end of string, not null terminated)
-
-<li>Comment field 1 length (if [Number of comment fields]>1...)...
-</ol>
-
-This is actually somewhat easier to describe in code; implementation of the above can be found in vorbis/lib/info.c:_vorbis_pack_comment(),_vorbis_unpack_comment()
-
-<hr>
-<a href="http://www.xiph.org/">
-<img src="white-xifish.png" align=left border=0>
-</a>
-<font size=-2 color=#505050>
-
-Ogg is a <a href="http://www.xiph.org">Xiphophorus</a> effort to
-protect essential tenets of Internet multimedia from corporate
-hostage-taking; Open Source is the net's greatest tool to keep
-everyone honest. See <a href="http://www.xiph.org/about.html">About
-Xiphophorus</a> for details.
-<p>
-
-Ogg Vorbis is the first Ogg audio CODEC. Anyone may
-freely use and distribute the Ogg and Vorbis specification,
-whether in a private, public or corporate capacity. However,
-Xiphophorus and the Ogg project (xiph.org) reserve the right to set
-the Ogg/Vorbis specification and certify specification compliance.<p>
-
-Xiphophorus's Vorbis software CODEC implementation is distributed
-under the Lesser/Library GNU Public License. This does not restrict
-third parties from distributing independent implementations of Vorbis
-software under other licenses.<p>
-
-OggSquish, Vorbis, Xiphophorus and their logos are trademarks (tm) of
-<a href="http://www.xiph.org/">Xiphophorus</a>. These pages are
-copyright (C) 1994-2001 Xiphophorus. All rights reserved.<p>
-
-</body>
-
diff --git a/doc/vorbis-clip.txt b/doc/vorbis-clip.txt
deleted file mode 100644
index 2e670344..00000000
--- a/doc/vorbis-clip.txt
+++ /dev/null
@@ -1,139 +0,0 @@
-Topic:
-
-Sample granularity editing of a Vorbis file; inferred arbitrary sample
-length starting offsets / PCM stream lengths
-
-Overview:
-
-Vorbis, like mp3, is a frame-based* audio compression where audio is
-broken up into discrete short time segments. These segments are
-'atomic' that is, one must recover the entire short time segment from
-the frame packet; there's no way to recover only a part of the PCM time
-segment from part of the coded packet without expanding the entire
-packet and then discarding a portion of the resulting PCM audio.
-
-* In mp3, the data segment representing a given time period is called
- a 'frame'; the roughly equivalent Vorbis construct is a 'packet'.
-
-Thus, when we edit a Vorbis stream, the finest physical editing
-granularity is on these packet boundaries (the mp3 case is
-actually somewhat more complex and mp3 editing is more complicated
-than just snipping on a frame boundary because time data can be spread
-backward or forward over frames. In Vorbis, packets are all
-stand-alone). Thus, at the physical packet level, Vorbis is still
-limited to streams that contain an integral number of packets.
-
-However, Vorbis streams may still exactly represent and be edited to a
-PCM stream of arbitrary length and starting offset without padding the
-beginning or end of the decoded stream or requiring that the desired
-edit points be packet aligned. Vorbis makes use of Ogg stream
-framing, and this framing provides time-stamping data, called a
-'granule position'; our starting offset and finished stream length may
-be inferred from correct usage of the granule position data.
-
-Time stamping mechanism:
-
-Vorbis packets are bundled into into Ogg pages (note that pages do not
-necessarily contain integral numbers of packets, but that isn't
-inportant in this discussion. More about Ogg framing can be found in
-ogg/doc/framing.html). Each page that contains a packet boundary is
-stamped with the absolute sample-granularity offset of the data, that
-is, 'complete samples-to-date' up to the last completed packet of that
-page. (The same mechanism is used for eg, video, where the number
-represents complete 2-D frames, and so on).
-
-(It's possible but rare for a packet to span more than two pages such
-that page[s] in the middle have no packet boundary; these packets have
-a granule position of '-1'.)
-
-This granule position mechaism in Ogg is used by Vorbis to indicate when the
-PCM data intended to be represented in a Vorbis segment begins a
-number of samples into the data represented by the first packet[s]
-and/or ends before the physical PCM data represented in the last
-packet[s].
-
-File length a non-integral number of frames:
-
-A file to be encoded in Vorbis will probably not encode into an
-integral number of packets; such a file is encoded with the last
-packet containing 'extra'* samples. These samples are not padding; they
-will be discarded in decode.
-
-*(For best results, the encoder should use extra samples that preserve
-the character of the last frame. Simply setting them to zero will
-introduce a 'cliff' that's hard to encode, resulting in spread-frame
-noise. Libvorbis extrapolates the last frame past the end of data to
-produce the extra samples. Even simply duplicating the last value is
-better than clamping the signal to zero).
-
-The encoder indicates to the decoder that the file is actually shorter
-than all of the samples ('original' + 'extra') by setting the granule
-position in the last page to a short value, that is, the last
-timestamp is the original length of the file discarding extra samples.
-The decoder will see that the number of samples it has decoded in the
-last page is too many; it is 'original' + 'extra', where the
-granulepos says that through the last packet we only have 'original'
-number of samples. The decoder then ignores the 'extra' samples.
-This behavior is to occur only when the end-of-stream bit is set in
-the page (indicating last page of the logical stream).
-
-Note that it not legal for the granule position of the last page to
-indicate that there are more samples in the file than actually exist,
-however, implementations should handle such an illegal file gracefully
-in the interests of robust programming.
-
-Beginning point not on integral packet boundary:
-
-It is possible that we will the PCM data represented by a Vorbis
-stream to begin at a position later than where the decoded PCM data
-really begins after an integral packet boundary, a situation analagous
-to the above description where the PCM data does not end at an
-integral packet boundary. The easiest example is taking a clip out of
-a larger Vorbis stream, and choosing a beginning point of the clip
-that is not on a packet boundary; we need to ignore a few samples to
-get the desired beginning point.
-
-The process of marking the desired beginning point is similar to
-marking an arbitrary ending point. If the encoder wishes sample zero
-to be some location past the actual beginning of data, it associates a
-'short' granule position value with the completion of the second*
-audio packet. The granule position is associated with the second
-packet simply by making sure the second packet completes its page.
-
-*(We associate the short value with the second packet for two reasons.
- a) The first packet only primes the overlap/add buffer. No data is
- returned before decoding the second packet; this places the decision
- information at the point of decision. b) Placing the short value on
- the first packet would make the value negative (as the first packet
- normally represents position zero); a negative value would break the
- requirement that granule positions increase; the headers have
- position values of zero)
-
-The decoder sees that on the first page that will return
-data from the overlap/add queue, we have more samples than the granule
-position accounts for, and discards the 'surplus' from the beginning
-of the queue.
-
-Note that short granule values (indicating less than the actually
-returned about of data) are not legal in the Vorbis spec outside of
-indicating beginning and ending sample positions. However, decoders
-should, at minimum, tolerate inadvertant short values elsewhere in the
-stream (just as they should tolerate out-of-order/non-increasing
-granulepos values, although this too is illegal).
-
-Beginning point at arbitrary positive timestamp (no 'zero' sample):
-
-It's also possible that the granule position of the first page of an
-audio stream is a 'long value', that is, a value larger than the
-amount of PCM audio decoded. This implies only that we are starting
-playback at some point into the logical stream, a potentially common
-occurence in streaming applications where the decoder may be
-connecting into a live stream. The decoder should not treat the long
-value specially.
-
-A long value elsewhere in the stream would normally occur only when a
-page is lost or out of sequence, as indicated by the page's sequence
-number. A long value under any other situation is not legal, however
-a decoder should tolerate both possibilities.
-
-
diff --git a/doc/vorbis-errors.txt b/doc/vorbis-errors.txt
deleted file mode 100644
index e873d8ab..00000000
--- a/doc/vorbis-errors.txt
+++ /dev/null
@@ -1,103 +0,0 @@
-Error return codes possible from libvorbis and libvorbisfile:
-
-All 'failure' style returns are <0; this either indicates a generic
-'false' value (eg, ready? T or F) or an error condition. Code can
-safely just test for < 0, or look at the specific return code for more
-detail.
-
-*** Return codes:
-
-OV_FALSE The call returned a 'false' status (eg, ov_bitrate_instant
- can return OV_FALSE if playback is not in progress, and thus
- there is no instantaneous bitrate information to report.
-
-OV_HOLE libvorbis/libvorbisfile is alerting the application that
- there was an interruption in the data (one of: garbage
- between pages, loss of sync followed by recapture, or a
- corrupt page)
-
-OV_EREAD A read from media returned an error.
-
-OV_EFAULT Internal logic fault; indicates a bug or heap/stack
- corruption.
-
-OV_EIMPL The bitstream makes use of a feature not implemented in this
- library version.
-
-OV_EINVAL Invalid argument value.
-
-OV_ENOTVORBIS Bitstream/page/packet is not Vorbis data.
-
-OV_EBADHEADER Invalid Vorbis bitstream header.
-
-OV_EVERSION Vorbis version mismatch.
-
-OV_ENOTAUDIO Packet data submitted to vorbis_synthesis is not audio data.
-
-OV_EBADPACKET Invalid packet submitted to vorbis_synthesis.
-
-OV_EBADLINK Invalid stream section supplied to libvorbis/libvorbisfile,
- or the requested link is corrupt.
-
-OV_ENOSEEK Bitstream is not seekable.
-
-
-****************************************************************
-*** Libvorbis functions that can return failure/error codes:
-
-int vorbis_analysis_headerout()
- OV_EIMPL
-
-int vorbis_analysis_wrote()
- OV_EINVAL
-
-int vorbis_synthesis_headerin()
- OV_ENOTVORBIS, OV_EVERSION, OV_EBADHEADER
-
-int vorbis_synthesis()
- OV_ENOTAUDIO, OV_EBADPACKET
-
-int vorbis_synthesis_read()
- OV_EINVAL
-
-****************************************************************
-*** Libvorbisfile functions that can return failure/error codes:
-
-int ov_open_callbacks()
- OV_EREAD, OV_ENOTVORBIS, OV_EVERSION, OV_EBADHEADER, OV_FAULT
-
-int ov_open()
- OV_EREAD, OV_ENOTVORBIS, OV_EVERSION, OV_EBADHEADER, OV_FAULT
-
-long ov_bitrate()
- OV_EINVAL, OV_FALSE
-
-long ov_bitrate_instant()
- OV_FALSE
-
-ogg_int64_t ov_raw_total()
- OV_EINVAL
-
-ogg_int64_t ov_pcm_total()
- OV_EINVAL
-
-double ov_time_total()
- OV_EINVAL
-
-int ov_raw_seek()
- OV_ENOSEEK, OV_EINVAL, OV_BADLINK
-
-int ov_pcm_seek_page()
- OV_ENOSEEK, OV_EINVAL, OV_EREAD, OV_BADLINK, OV_FAULT
-
-int ov_pcm_seek()
- OV_ENOSEEK, OV_EINVAL, OV_EREAD, OV_BADLINK, OV_FAULT
-
-int ov_time_seek()
- OV_ENOSEEK, OV_EINVAL, OV_EREAD, OV_BADLINK, OV_FAULT
-
-int ov_time_seek_page()
- OV_ENOSEEK, OV_EINVAL, OV_EREAD, OV_BADLINK, OV_FAULT
-
-long ov_read()
- OV_HOLE, OV_EBADLINK
diff --git a/doc/vorbis.html b/doc/vorbis.html
deleted file mode 100644
index 27e3a5b0..00000000
--- a/doc/vorbis.html
+++ /dev/null
@@ -1,196 +0,0 @@
-<HTML><HEAD><TITLE>xiph.org: Ogg Vorbis documentation</TITLE>
-<BODY bgcolor="#ffffff" text="#202020" link="#006666" vlink="#000000">
-<nobr><img src="white-ogg.png"><img src="vorbisword2.png"></nobr><p>
-
-
-<h1><font color=#000070>
-Ogg Vorbis encoding format documentation
-</font></h1>
-
-<em>Last update to this document: July 15, 1999</em><br>
-<em>Last update to Vorbis documentation: July 21, 1999</em><p>
-
-<table><tr><td>
-<img src=wait.png>
-</td><td valign=center>
-As of writing, not all the below document
-links are live. They will be populated as we complete the
-documents.
-</td></tr></table>
-
-<p>
-<h2>Documents</h2>
-<ul>
-<li><a href="packet.html">Vorbis packet structure</a>
-<li><a href="envelope.html">Temporal envelope shaping and blocksize</a>
-<li><a href="mdct.html">Time domain segmentation and MDCT transform</a>
-<li><a href="resolution.html">The resolution floor</a>
-<li><a href="residuals.html">MDCT-domain fine structure</a><p>
-
-<li><a href="probmodel.html">The Vorbis probability model</a>
-
-<li><a href="bitpack.html">The Vorbis bitpacker</a><p>
-
-<li><a href="oggstream.html">Ogg bitstream overview</a>
-<li><a href="framing.html">Ogg logical bitstream and framing spec</a>
-<li><a href="vorbis-stream.html">Vorbis packet->Ogg bitstream
- mapping</a><p>
-
-<li><a href="programming.html">Programming with libvorbis</a><p>
-</ul>
-
-<h2>Description</h2>
-Ogg Vorbis is a general purpose compressed audio format
-for high quality (44.1-48.0kHz, 16+ bit, polyphonic) audio and music
-at moderate fixed and variable bitrates (40-80 kb/s/channel). This
-places Vorbis in the same class as audio representations including
-MPEG-1 audio layer 3, MPEG-4 audio (AAC and TwinVQ), and PAC.<p>
-
-Vorbis is the first of a planned family of Ogg multimedia coding
-formats being developed as part of Xiphophorus's Ogg multimedia
-project. See <a href="http://www.xiph.org/">http://www.xiph.org/</a>
-for more information.
-
-<h2>Vorbis technical documents</h2>
-
-A Vorbis encoder takes in overlapping (but contiguous) short-time
-segments of audio data. The encoder analyzes the content of the audio
-to determine an optimal compact representation; this phase of encoding
-is known as <em>analysis</em>. For each short-time block of sound,
-the encoder then packs an efficient representation of the signal, as
-determined by analysis, into a raw packet much smaller than the size
-required by the original signal; this phase is <em>coding</em>.
-Lastly, in a streaming environment, the raw packets are then
-structured into a continuous stream of octets; this last phase is
-<em>streaming</em>. Note that the stream of octets is referred to both
-as a 'byte-' and 'bit-'stream; the latter usage is acceptible as the
-stream of octets is a physical representation of a true logical
-bit-by-bit stream.<p>
-
-A Vorbis decoder performs a mirror image process of extracting the
-original sequence of raw packets from an Ogg stream (<em>stream
-decomposition</em>), reconstructing the signal representation from the
-raw data in the packet (<em>decoding</em>) and them reconstituting an
-audio signal from the decoded representation (<em>synthesis</em>).<p>
-
-The <a href="programming.html">Programming with libvorbis</a>
-documents discuss use of the reference Vorbis codec library
-(libvorbis) produced by Xiphophorus.<p>
-
-The data representations and algorithms necessary at each step to
-encode and decode Ogg Vorbis bitstreams are described by the below
-documents in sufficient detail to construct a complete Vorbis codec.
-Note that at the time of writing, Vorbis is still in a 'Request For
-Comments' stage of development; despite being in advanced stages of
-development, input from the multimedia community is welcome.<p>
-
-<h3>Vorbis analysis and synthesis</h3>
-
-Analysis begins by seperating an input audio stream into individual,
-overlapping short-time segments of audio data. These segments are
-then transformed into an alternate representation, seeking to
-represent the original signal in a more efficient form that codes into
-a smaller number of bytes. The analysis and transformation stage is
-the most complex element of producing a Vorbis bitstream.<p>
-
-The corresponding synthesis step in the decoder is simpler; there is
-no analysis to perform, merely a mechanical, deterministic
-reconstruction of the original audio data from the transform-domain
-representation.<p>
-
-<ul>
-<li><a href="packet.html">Vorbis packet structure</a>: Describes the basic analysis components necessary to produce Vorbis packets and the structure of the packet itself.
-<li><a href="envelope.html">Temporal envelope shaping and blocksize</a>: Use of temporal envelope shaping and variable blocksize to minimize time-domain energy leakage during wide dynamic range and spectral energy swings. Also discusses time-related principles of psychoacoustics.
-<li><a href="mdct.html">Time domain segmentation and MDCT transform</a>: Division of time domain data into individual overlapped, windowed short-time vectors and transformation using the MDCT
-<li><a href="resolution.html">The resolution floor</a>: Use of frequency doamin psychoacoustics, and the MDCT-domain noise, masking and resolution floors
-<li><a href="residuals.html">MDCT-domain fine structure</a>: Production, quantization and massaging of MDCT-spectrum fine structure
-</ul>
-
-<h3>Vorbis coding and decoding</h3>
-
-Coding and decoding converts the transform-domain representation of
-the original audio produced by analysis to and from a bitwise packed
-raw data packet. Coding and decoding consist of two logically
-orthogonal concepts, <em>back-end coding</em> and <em>bitpacking</em>.<p>
-
-<em>Back-end coding</em> uses a probability model to represent the raw numbers
-of the audio representation in as few physical bits as possible;
-familiar examples of back-end coding include Huffman coding and Vector
-Quantization.<p>
-
-<em>Bitpacking</em> arranges the variable sized words of the back-end
-coding into a vector of octets without wasting space. The octets
-produced by coding a single short-time audio segment is one raw Vorbis
-packet.<p>
-
-<ul>
-
-<li><a href="probmodel.html">The Vorbis probability model</a>
-
-<li><a href="bitpack.html">The Vorbis bitpacker</a>: Arrangement of
-variable bit-length words into an octet-aligned packet.
-
-</ul>
-
-<h3>Vorbis streaming and stream decomposition</h3>
-
-Vorbis packets contain the raw, bitwise-compressed representation of a
-snippet of audio. These packets contain no structure and cannot be
-strung together directly into a stream; for streamed transmission and
-storage, Vorbis packets are encoded into an Ogg bitstream.<p>
-
-<ul>
-
-<li><a href="oggstream.html">Ogg bitstream overview</a>: High-level
-description of Ogg logical bitstreams, how logical bitstreams
-(of mixed media types) can be combined into physical bitstreams, and
-restrictions on logical-to-physical mapping. Note that this document is
-not specific only to Ogg Vorbis.
-
-<li><a href="framing.html">Ogg logical bitstream and framing
-spec</a>: Low level, complete specification of Ogg logical
-bitstream pages. Note that this document is not specific only to Ogg
-Vorbis.
-
-<li><a href="vorbis-stream.html">Vorbis bitstream mapping</a>:
-Specifically describes mapping Vorbis data into an
-Ogg physical bitstream.
-
-</ul>
-
-
-<hr>
-<a href="http://www.xiph.org/">
-<img src="white-xifish.png" align=left border=0>
-</a>
-<font size=-2 color=#505050>
-
-Ogg is a <a href="http://www.xiph.org">Xiphophorus</a> effort to
-protect essential tenets of Internet multimedia from corporate
-hostage-taking; Open Source is the net's greatest tool to keep
-everyone honest. See <a href="http://www.xiph.org/about.html">About
-Xiphophorus</a> for details.
-<p>
-
-Ogg Vorbis is the first Ogg audio CODEC. Anyone may
-freely use and distribute the Ogg and Vorbis specification,
-whether in a private, public or corporate capacity. However,
-Xiphophorus and the Ogg project (xiph.org) reserve the right to set
-the Ogg/Vorbis specification and certify specification compliance.<p>
-
-Xiphophorus's Vorbis software CODEC implementation is distributed
-under the Lesser/Library GNU Public License. This does not restrict
-third parties from distributing independent implementations of Vorbis
-software under other licenses.<p>
-
-OggSquish, Vorbis, Xiphophorus and their logos are trademarks (tm) of
-<a href="http://www.xiph.org/">Xiphophorus</a>. These pages are
-copyright (C) 1994-2000 Xiphophorus. All rights reserved.<p>
-
-</body>
-
-
-
-
-
-
diff --git a/doc/vorbisenc/.cvsignore b/doc/vorbisenc/.cvsignore
deleted file mode 100644
index 282522db..00000000
--- a/doc/vorbisenc/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/doc/vorbisenc/Makefile.am b/doc/vorbisenc/Makefile.am
deleted file mode 100644
index 3eca0bbb..00000000
--- a/doc/vorbisenc/Makefile.am
+++ /dev/null
@@ -1,10 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-AUTOMAKE_OPTIONS = foreign
-
-docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)/vorbisenc
-
-doc_DATA = index.html overview.html reference.html style.css\
- vorbis_encode_ctl.html vorbis_encode_init.html vorbis_info.html
-
-EXTRA_DIST = $(doc_DATA)
diff --git a/doc/vorbisenc/index.html b/doc/vorbisenc/index.html
deleted file mode 100644
index 57903d66..00000000
--- a/doc/vorbisenc/index.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<html>
-
-<head>
-<title>libvorbisenc - Documentation</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>libvorbisenc documentation</p></td>
-<td align=right><p class=tiny>libvorbisenc version 1.1.2.2 - 20001104</p></td>
-</tr>
-</table>
-
-<h1>Libvorbisenc Documentation</h1>
-
-<p>
-Libvorbisenc is a convenient API for setting up an encoding environment using libvorbis. Libvorbisenc encapsulates the actions needed to set up the encoder properly.
-<p>
-<a href="overview.html">libvorbisenc api overview</a><br>
-<a href="reference.html">libvorbisenc api reference</a><br>
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisenc/overview.html b/doc/vorbisenc/overview.html
deleted file mode 100644
index 1be1ea26..00000000
--- a/doc/vorbisenc/overview.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<html>
-
-<head>
-<title>libvorbisenc - API Overview</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>libvorbisenc documentation</p></td>
-<td align=right><p class=tiny>libvorbisenc version 1.1.2.2 - 20001104</p></td>
-</tr>
-</table>
-
-<h1>Libvorbisenc API Overview</h1>
-
-<p>The current version of libvorbisenc is very simple. It contains an initialization function to set up the encoding engine properly.
-It also contains a control function to be used in the future to tweak encoder settings.
-<p>
-All the <b>libvorbisenc</b> routines are declared in "vorbis/vorbisenc.h".
-
-<p>
-<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td><b>function</b></td>
- <td><b>purpose</b></td>
-</tr>
-<tr valign=top>
- <td><a href="vorbis_encode_init.html">vorbis_encode_init</a></td>
- <td>This function takes a <a href="vorbis_info.html">vorbis_info</a> struct and encoding parameters and sets up a proper encoding environment.</tt></a>.</td>
-</tr>
-<tr valign=top>
- <td><a href="vorbis_encode_ctl.html">vorbis_encode_ctl</a></td>
- <td>Function in progress, to be used in future versions of this API.</td>
-</tr>
-</table>
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisenc/reference.html b/doc/vorbisenc/reference.html
deleted file mode 100644
index 0649e22f..00000000
--- a/doc/vorbisenc/reference.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<html>
-
-<head>
-<title>Vorbisfile API Reference</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>Vorbisfile API Reference</h1>
-
-<p>
-<b>Data Structures</b><br>
-<a href="OggVorbis_File.html">OggVorbis_File</a><br>
-<a href="vorbis_comment.html">vorbis_comment</a><br>
-<a href="vorbis_info.html">vorbis_info</a><br>
-<a href="ov_callbacks.html">ov_callbacks</a><br>
-<br>
-<b>Setup/Teardown</b><br>
-<a href="ov_open.html">ov_open()</a><br>
-<a href="ov_open_callbacks.html">ov_open_callbacks()</a><br>
-<a href="ov_clear.html">ov_clear()</a><br>
-<br>
-<b>Decoding</b><br>
-<a href="ov_read.html">ov_read()</a><br>
-<br>
-<b>Seeking</b><br>
-<a href="ov_raw_seek.html">ov_raw_seek()</a><br>
-<a href="ov_pcm_seek.html">ov_pcm_seek()</a><br>
-<a href="ov_time_seek.html">ov_time_seek()</a><br>
-<br>
-<b>File Information</b><br>
-<a href="ov_bitrate.html">ov_bitrate()</a><br>
-<a href="ov_bitrate_instant.html">ov_bitrate_instant()</a><br>
-<a href="ov_streams.html">ov_streams()</a><br>
-<a href="ov_seekable.html">ov_seekable()</a><br>
-<a href="ov_serialnumber.html">ov_serialnumber()</a><br>
-<a href="ov_raw_total.html">ov_raw_total()</a><br>
-<a href="ov_pcm_total.html">ov_pcm_total()</a><br>
-<a href="ov_time_total.html">ov_time_total()</a><br>
-<a href="ov_raw_tell.html">ov_raw_tell()</a><br>
-<a href="ov_pcm_tell.html">ov_pcm_tell()</a><br>
-<a href="ov_time_tell.html">ov_time_tell()</a><br>
-<a href="ov_info.html">ov_info()</a><br>
-<a href="ov_comment.html">ov_comment()</a><br>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisenc/style.css b/doc/vorbisenc/style.css
deleted file mode 100644
index 332f809e..00000000
--- a/doc/vorbisenc/style.css
+++ /dev/null
@@ -1,7 +0,0 @@
-BODY { font-family: helvetica, sans-serif }
-TD { font-family: helvetica, sans-serif }
-P { font-family: helvetica, sans-serif }
-H1 { font-family: helvetica, sans-serif }
-H2 { font-family: helvetica, sans-serif }
-H4 { font-family: helvetica, sans-serif }
-P.tiny { font-size: 8pt }
diff --git a/doc/vorbisenc/vorbis_encode_ctl.html b/doc/vorbisenc/vorbis_encode_ctl.html
deleted file mode 100644
index 1ad98f49..00000000
--- a/doc/vorbisenc/vorbis_encode_ctl.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<html>
-
-<head>
-<title>libvorbisenc - function - vorbis_encode_ctl</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>libvorbisenc documentation</p></td>
-<td align=right><p class=tiny>libvorbisenc version 1.1.2.2 - 20001104</p></td>
-</tr>
-</table>
-
-<h1>vorbis_encode_ctl</h1>
-
-<p><i>declared in "vorbis/libvorbisenc.h";</i></p>
-
-<p>This function is part of the libvorbisenc API, but has not yet been implemented.
-<p>However, the API call is set and will not change.
-<p>
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg);
-
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vi</i></dt>
-<dd>File pointer to an initialized <a href="vorbis_info.html">vorbis_info</a> struct.</dd>
-<dt><i>number</i></dt>
-<dd>Not yet implemented.</dd>
-<dt><i>arg</i></dt>
-<dd>Not yet implemented.</dd>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>
-<li>OV_EIMPL is always returned, as this function has not yet been implemented.</li>
-</blockquote>
-<p>
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 xiph.org</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>libvorbisenc documentation</p></td>
-<td align=right><p class=tiny>libvorbisenc version 1.1.2.2 - 20001106</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisenc/vorbis_encode_init.html b/doc/vorbisenc/vorbis_encode_init.html
deleted file mode 100644
index 4cd5e5cb..00000000
--- a/doc/vorbisenc/vorbis_encode_init.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<html>
-
-<head>
-<title>libvorbisenc - function - vorbis_encode_init</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>libvorbisenc documentation</p></td>
-<td align=right><p class=tiny>libvorbisenc version 1.1.2.2 - 20001104</p></td>
-</tr>
-</table>
-
-<h1>vorbis_encode_init</h1>
-
-<p><i>declared in "vorbis/libvorbisenc.h";</i></p>
-
-<p>This is the primary function within libvorbisenc. This is used to properly set up an encoding environment using libvorbisenc.
-<p>Before this function is called, the <a href="vorbis_info.html">vorbis_info</a> struct should be initialized by using vorbis_info_init() from the libvorbis API. After encoding, vorbis_info_clear should be called.
-<p>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.
-<p>
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-extern int vorbis_encode_init(<a href="vorbis_info.html">vorbis_info</a> *vi,
- long channels,
- long rate,
-
- long max_bitrate,
- long nominal_bitrate,
- long min_bitrate);
-
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vi</i></dt>
-<dd>File pointer to an initialized <a href="vorbis_info.html">vorbis_info</a> struct.</dd>
-<dt><i>channels</i></dt>
-<dd>The number of channels to be encoded.</dd>
-<dt><i>rate</i></dt>
-<dd>The sampling rate of the source audio.</dd>
-<dt><i>max_bitrate</i></dt>
-<dd>Desired maximum bitrate (limit).</dd>
-<dt><i>nominal_bitrate</i></dt>
-<dd>Desired average, or central, bitrate.</dd>
-<dt><i>min_bitrate</i></dt>
-<dd>Desired minimum bitrate.</dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>
-0 for success</li>
-
-<li>less than zero for failure:</li>
-<ul>
-<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
-</ul>
-</blockquote>
-<p>
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 xiph.org</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>libvorbisenc documentation</p></td>
-<td align=right><p class=tiny>libvorbisenc version 1.1.2.2 - 20001106</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisenc/vorbis_info.html b/doc/vorbisenc/vorbis_info.html
deleted file mode 100644
index 2e824099..00000000
--- a/doc/vorbisenc/vorbis_info.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<html>
-
-<head>
-<title>vorbis - datatype - vorbis_info</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>vorbis_info</h1>
-
-<p><i>declared in "vorbis/codec.h"</i></p>
-
-<p>
-The vorbis_info structure contains information about a vorbis bitstream. Most of the information in this struct is more complex and in-depth than we need when using basic API calls.
-
-<p>
-
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>typedef struct vorbis_info{
- int version;
- int channels;
- long rate;
-
- long bitrate_upper;
- long bitrate_nominal;
- long bitrate_lower;
-
- long blocksizes[2];
-
- int modes;
- int maps;
- int times;
- int floors;
- int residues;
- int books;
- int psys; /* encode only */
-
- vorbis_info_mode *mode_param[64];
- int map_type[64];
- vorbis_info_mapping *map_param[64];
- int time_type[64];
- vorbis_info_time *time_param[64];
- int floor_type[64];
- vorbis_info_floor *floor_param[64];
- int residue_type[64];
- vorbis_info_residue *residue_param[64];
- static_codebook *book_param[256];
- vorbis_info_psy *psy_param[64]; /* encode only */
-
- /* for block long/sort tuning; encode only */
- int envelopesa;
- double preecho_thresh;
- double preecho_clamp;
-
-} vorbis_info;</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Relevant Struct Members</h3>
-<dl>
-<dt><i>version</i></dt>
-<dd>Vorbis encoder version used to create this bitstream.</dd>
-<dt><i>channels</i></dt>
-<dd>Int signifying number of channels in bitstream.</dd>
-<dt><i>rate</i></dt>
-<dd>Sampling rate of the bitstream.</dd>
-<dt><i>bitrate_upper</i></dt>
-<dd>Specifies the upper limit in a VBR bitstream. If the value matches the bitrate_nominal and bitrate_lower parameters, the stream is fixed bitrate. May be unset if no limit exists.</dd>
-<dt><i>bitrate_nominal</i></dt>
-<dd>Specifies the average bitrate for a VBR bitstream. May be unset. If the bitrate_upper and bitrate_lower parameters match, the stream is fixed bitrate.</dd>
-<dt><i>bitrate_lower</i></dt>
-<dd>Specifies the lower limit in a VBR bitstream. If the value matches the bitrate_nominal and bitrate_upper parameters, the stream is fixed bitrate. May be unset if no limit exists.</dd>
-<dt><i>blocksizes[2]</i></dt>
-<dd>Contains the sizes of the long and short blocks for this particular bitstream. These are variable and can be set by the encoder. Vorbis only supports two sizes, long and short.</dd>
-</dl>
-
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/.cvsignore b/doc/vorbisfile/.cvsignore
deleted file mode 100644
index 282522db..00000000
--- a/doc/vorbisfile/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/doc/vorbisfile/Makefile.am b/doc/vorbisfile/Makefile.am
deleted file mode 100644
index 702543a8..00000000
--- a/doc/vorbisfile/Makefile.am
+++ /dev/null
@@ -1,19 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-AUTOMAKE_OPTIONS = foreign
-
-docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)/vorbisfile
-
-doc_DATA = OggVorbis_File.html chaining_example_c.html chainingexample.html\
- datastructures.html decoding.html example.html exampleindex.html\
- fileinfo.html index.html initialization.html ov_bitrate.html\
- ov_bitrate_instant.html ov_callbacks.html ov_clear.html\
- ov_comment.html ov_info.html ov_open.html ov_open_callbacks.html\
- ov_pcm_seek.html ov_pcm_tell.html ov_pcm_total.html ov_raw_seek.html\
- ov_raw_tell.html ov_raw_total.html ov_read.html ov_seekable.html\
- ov_serialnumber.html ov_streams.html ov_time_seek.html\
- ov_time_tell.html ov_time_total.html overview.html reference.html\
- seekexample.html seeking.html seeking_test_c.html seekingexample.html\
- style.css vorbis_comment.html vorbis_info.html vorbisfile_example_c.html
-
-EXTRA_DIST = $(doc_DATA)
diff --git a/doc/vorbisfile/OggVorbis_File.html b/doc/vorbisfile/OggVorbis_File.html
deleted file mode 100644
index 6748deef..00000000
--- a/doc/vorbisfile/OggVorbis_File.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - datatype - OggVorbis_File</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>OggVorbis_File</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h"</i></p>
-
-<p>
-The OggVorbis_File structure defines an Ogg Vorbis file.
-<p>
-This structure is used in all vorbisfile routines. Before it can be used, it must be initialized by <a href="ov_open.html">ov_open</a> or <a href="ov_open_callbacks.html">ov_open_callbacks</a>.
-<p>
-After use, the OggVorbis_File structure must be deallocated with a call to <a href="ov_clear.html">ov_clear()</a>.
-<p>Once a file or data source is passed to libvorbisfile, it is owned by vorbisfile. The file should not be used by any other applications or functions outside the Vorbisfile API.
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>typedef struct {
- void *datasource; /* Pointer to a FILE *, etc. */
- int seekable;
- int64_t offset;
- int64_t end;
- ogg_sync_state oy;
-
- /* If the FILE handle isn't seekable (eg, a pipe), only the current
- stream appears */
- int links;
- int64_t *offsets;
- int64_t *dataoffsets;
- long *serialnos;
- int64_t *pcmlengths;
- vorbis_info *vi;
- vorbis_comment *vc;
-
- /* Decoding working state local storage */
- int64_t pcm_offset;
- int decode_ready;
- long current_serialno;
- int current_link;
-
- double bittrack;
- double samptrack;
-
- ogg_stream_state os; /* take physical pages, weld into a logical
- stream of packets */
- vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
- vorbis_block vb; /* local working space for packet->PCM decode */
-
- <a href="ov_callbacks.html">ov_callbacks</a> callbacks;
-
-} OggVorbis_File;</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Relevant Struct Members</h3>
-<dl>
-<dt><i>datasource</i></dt>
-<dd>Pointer to file or other ogg source.</dd>
-<dt><i>seekable</i></dt>
-<dd>Read-only int indicating whether file is seekable, i.e., physical file is seekable, a pipe isn't.</dd>
-<dt><i>links</i></dt>
-<dd>Read-only int indicating the number of logical bitstreams within the physical bitstream.</dd>
-<dt><i>ov_callbacks</i></dt>
-<dd>Collection of file manipulation routines to be used on this data source.</dd>
-</dl>
-
-<h3>Notes</h3>
-
-<p>If your system's <tt>&lt;sys/types.h></tt> does not
-define <tt>int64_t,</tt> you will need to define this as a 64-bit type
-inside your system's project file/Makefile, etc. On win32, for example,
-this should be defined as <tt>__int64</tt>. On the Unix platform, these
-are usually defined properly in the system header files.
-<p>
-
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/chaining_example_c.html b/doc/vorbisfile/chaining_example_c.html
deleted file mode 100644
index 6131693a..00000000
--- a/doc/vorbisfile/chaining_example_c.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - chaining_example.c</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>chaining_example.c</h1>
-
-<p>
-The example program source:
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-
-#include <vorbis/codec.h>
-#include <vorbis/vorbisfile.h>
-
-int main(){
- OggVorbis_File ov;
- int i;
-
- /* open the file/pipe on stdin */
- if(ov_open(stdin,&ov,NULL,-1)<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 playing time: %ld seconds\n\n",
- (long)ov_time_total(&ov,-1));
-
- }else{
- printf("Standard input was not seekable.\n"
- "First logical bitstream information:\n\n");
- }
-
- for(i=0;i<ov_streams(&ov);i++){
- vorbis_info *vi=ov_info(&ov,i);
- printf("\tlogical bitstream section %d information:\n",i+1);
- printf("\t\t%ldHz %d channels bitrate %ldkbps serial number=%ld\n",
- vi->rate,vi->channels,ov_bitrate(&ov,i)/1000,
- ov_serialnumber(&ov,i));
- printf("\t\tcompressed length: %ld bytes ",(long)(ov_raw_total(&ov,i)));
- printf(" play time: %lds\n",(long)ov_time_total(&ov,i));
- }
-
- ov_clear(&ov);
- return 0;
-}
-
-</b></pre>
- </td>
-</tr>
-</table>
-
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/chainingexample.html b/doc/vorbisfile/chainingexample.html
deleted file mode 100644
index f7c251b5..00000000
--- a/doc/vorbisfile/chainingexample.html
+++ /dev/null
@@ -1,158 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - Example Code</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>Chaining Example Code</h1>
-
-<p>
-The following is a run-through of the chaining example program supplied
-with vorbisfile - <a href="chaining_example_c.html">chaining_example.c</a>.
-This program demonstrates how to work with a chained bitstream.
-
-<p>
-First, relevant headers, including vorbis-specific "codec.h" and "vorbisfile.h" have to be included.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-#include "vorbis/codec.h"
-#include "vorbis/vorbisfile.h"
-#include "../lib/misc.h"
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>Inside main(), we declare our primary OggVorbis_File structure. We also declare a other helpful variables to track our progress within the file.
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int main(){
- OggVorbis_File ov;
- int i;
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p><a href="ov_open.html">ov_open()</a> must be
-called to initialize the <a href="OggVorbis_File.html">OggVorbis_File</a> structure with default values.
-<a href="ov_open.html">ov_open()</a> also checks to ensure that we're reading Vorbis format and not something else.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
- if(ov_open(stdin,&ov,NULL,-1)<0){
- printf("Could not open input as an OggVorbis file.\n\n");
- exit(1);
- }
-
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>
-First we check to make sure the stream is seekable using <a href="ov_seekable.html">ov_seekable</a>.
-
-<p>Then we're going to find the number of logical bitstreams in the physical bitstream using <a href="ov_streams.html">ov_streams</a>.
-
-<p>We use <a href="ov_time_total.html">ov_time_total</a> to determine the total length of the physical bitstream. We specify that we want the entire bitstream by using the argument <tt>-1</tt>.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
- if(ov_seekable(&ov)){
- printf("Input bitstream contained %ld logical bitstream section(s).\n",
- ov_streams(&ov));
- printf("Total bitstream playing time: %ld seconds\n\n",
- (long)ov_time_total(&ov,-1));
-
- }else{
- printf("Standard input was not seekable.\n"
- "First logical bitstream information:\n\n");
- }
-
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>Now we're going to iterate through each logical bitstream and print information about that bitstream.
-
-<p>We use <a href="ov_info.html">ov_info</a> to pull out the <a href="vorbis_info.html">vorbis_info</a> struct for each logical bitstream. This struct contains bitstream-specific info.
-
-<p><a href="ov_serialnumber.html">ov_serialnumber</a> retrieves the unique serial number for the logical bistream. <a href="ov_raw_total.html">ov_raw_total</a> gives the total compressed bytes for the logical bitstream, and <a href="ov_time_total.html">ov_time_total</a> gives the total time in the logical bitstream.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
- for(i=0;i<ov_streams(&ov);i++){
- vorbis_info *vi=ov_info(&ov,i);
- printf("\tlogical bitstream section %d information:\n",i+1);
- printf("\t\t%ldHz %d channels bitrate %ldkbps serial number=%ld\n",
- vi->rate,vi->channels,ov_bitrate(&ov,i)/1000,
- ov_serialnumber(&ov,i));
- printf("\t\tcompressed length: %ld bytes ",(long)(ov_raw_total(&ov,i)));
- printf(" play time: %lds\n",(long)ov_time_total(&ov,i));
- }
-</b></pre>
- </td>
-</tr>
-</table>
-<p>
-When we're done with the entire physical bitstream, we need to call <a href="ov_clear.html">ov_clear()</a> to release the bitstream.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
- ov_clear(&ov);
- return 0;
-}
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>
-The full source for chaining_example.c can be found with the vorbis
-distribution in <a href="chaining_example_c.html">chaining_example.c</a>.
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/datastructures.html b/doc/vorbisfile/datastructures.html
deleted file mode 100644
index 955b9c7f..00000000
--- a/doc/vorbisfile/datastructures.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - Base Data Structures</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>Base Data Structures</h1>
-<p>There are several data structures used to hold file and bitstream information during vorbisfile decoding.
-<p>
-All the <b>vorbisfile</b> specific data structures are declared in "vorbis/vorbisfile.h" or "vorbis/codec.h".
-<p>
-<p>When using vorbisfile, we usually won't need to know about most of the contents of these data structures, but it may be helpful to understand what they contain.
-<br><br>
-
-<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td><b>datatype</b></td>
- <td><b>purpose</b></td>
-</tr>
-<tr valign=top>
- <td><a href="OggVorbis_File.html">OggVorbis_File</a></td>
- <td>This structure represents the basic file information. It contains
- a pointer to the physical file or bitstream and various information about that bitstream.</td>
-</tr>
-<tr valign=top>
-<td><a href="vorbis_comment.html">vorbis_comment</a></td>
- <td>This structure contains the file comments. It contains
- a pointer to unlimited user comments, information about the number of comments, and a vendor description.</td>
-</tr>
-<tr valign=top>
-<td><a href="vorbis_info.html">vorbis_info</a></td>
- <td>This structure contains encoder-related information about the bitstream. It includes encoder info, channel info, and bitrate limits.</td>
-</tr>
-<tr valign=top>
-<td><a href="ov_callbacks.html">ov_callbacks</a></td>
- <td>This structure contains pointers to file manipulation routines. Can be user-specified for use with <a href="ov_open_callbacks.html">ov_open_callbacks()</a>.</td>
-</tr>
-</table>
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/decoding.html b/doc/vorbisfile/decoding.html
deleted file mode 100644
index bc35fd77..00000000
--- a/doc/vorbisfile/decoding.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - Decoding</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>Decoding</h1>
-
-<p>
-All the <b>vorbisfile</b> decoding routines are declared in "vorbis/vorbisfile.h".
-<p>
-
-<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td><b>function</b></td>
- <td><b>purpose</b></td>
-</tr>
-<tr valign=top>
- <td><a href="ov_read.html">ov_read</a></td>
- <td>This function makes up the main chunk of a decode loop. It takes an
-OggVorbis_File structure, which must have been initialized by a previous
-call to <a href="ov_open.html"><tt>ov_open()</tt></a>.</td>
-</tr>
-</table>
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 Xiphophorus</p></td>
-<td align=right><p class=tiny><a href="http://www.vorbis.org/">www.vorbis.org</a><br><a href="mailto:team@icecast.org">team@icecast.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/example.html b/doc/vorbisfile/example.html
deleted file mode 100644
index d0574849..00000000
--- a/doc/vorbisfile/example.html
+++ /dev/null
@@ -1,205 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - Example Code</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>Example Code</h1>
-
-<p>
-The following is a run-through of the decoding example program supplied
-with vorbisfile - <a href="vorbisfile_example_c.html">vorbisfile_example.c</a>.
-This program takes a vorbis bitstream from stdin and writes raw pcm to stdout.
-
-<p>
-First, relevant headers, including vorbis-specific "codec.h" and "vorbisfile.h" have to be included.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-#include &lt;stdio.h&gt;
-#include &lt;stdlib.h&gt;
-#include &lt;math.h&gt;
-#include "vorbis/codec.h"
-#include "vorbis/vorbisfile.h"
-</b></pre>
- </td>
-</tr>
-</table>
-<p>
-We also have to make a concession to Windows users here. If we are using windows for decoding, we must declare these libraries so that we can set stdin/stdout to binary.
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-#ifdef _WIN32
-#include &lt;io.h&gt;
-#include &lt;fcntl.h&gt;
-#endif
-</b></pre>
- </td>
-</tr>
-</table>
-<p>
-Next, a buffer for the pcm audio output is declared.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-char pcmout[4096];
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>Inside main(), we declare our primary OggVorbis_File structure. We also declare a few other helpful variables to track out progress within the file.
-Also, we make our final concession to Windows users by setting the stdin and stdout to binary mode.
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int main(int argc, char **argv){
- OggVorbis_File vf;
- int eof=0;
- int current_section;
-
-#ifdef _WIN32
- _setmode( _fileno( stdin ), _O_BINARY );
- _setmode( _fileno( stdout ), _O_BINARY );
-#endif
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p><a href="ov_open.html">ov_open()</a> must be
-called to initialize the <b>OggVorbis_File</b> structure with default values.
-<a href="ov_open.html">ov_open()</a> also checks to ensure that we're reading Vorbis format and not something else.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
- if(ov_open(stdin, &vf, NULL, 0) < 0) {
- fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n");
- exit(1);
- }
-
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>
-We're going to pull the channel and bitrate info from the file using <a href="ov_info.html">ov_info()</a> and show them to the user.
-We also want to pull out and show the user a comment attached to the file using <a href="ov_comment.html">ov_comment()</a>.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
- {
- char **ptr=ov_comment(&vf,-1)->user_comments;
- vorbis_info *vi=ov_info(&vf,-1);
- while(*ptr){
- fprintf(stderr,"%s\n",*ptr);
- ++ptr;
- }
- fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi->channels,vi->rate);
- fprintf(stderr,"Encoded by: %s\n\n",ov_comment(&vf,-1)->vendor);
- }
-
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>
-Here's the read loop:
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-
- while(!eof){
- long ret=ov_read(&vf,pcmout,sizeof(pcmout),0,2,1,&current_section);
- if (ret == 0) {
- /* EOF */
- eof=1;
- } else if (ret < 0) {
- /* 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);
- }
- }
-
-
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>
-The code is reading blocks of data using <a href="ov_read.html">ov_read()</a>.
-Based on the value returned, we know if we're at the end of the file or have invalid data. If we have valid data, we write it to the pcm output.
-
-<p>
-Now that we've finished playing, we can pack up and go home. It's important to call <a href="ov_clear.html">ov_clear()</a> when we're finished.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-
- ov_clear(&vf);
-
- fprintf(stderr,"Done.\n");
- return(0);
-}
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>
-The full source for vorbisfile_example.c can be found with the vorbis
-distribution in <a href="vorbisfile_example_c.html">vorbisfile_example.c</a>.
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/exampleindex.html b/doc/vorbisfile/exampleindex.html
deleted file mode 100644
index 1575e273..00000000
--- a/doc/vorbisfile/exampleindex.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - Documentation</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>VorbisFile Example Code</h1>
-
-<p>
-Three sample programs are included with the vorbisfile distribution.
-<p>
-<a href="example.html">vorbisfile decoding</a><br>
-<a href="seekexample.html">vorbisfile seeking</a><br>
-<a href="chainingexample.html">vorbisfile bitstream chaining</a><br>
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/fileinfo.html b/doc/vorbisfile/fileinfo.html
deleted file mode 100644
index 27f6370e..00000000
--- a/doc/vorbisfile/fileinfo.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - File Information</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>File Information</h1>
-<p>Vorbisfile contains many functions to get information about bitstream attributes and decoding status.
-<p>
-All the <b>vorbisfile</b> file information routines are declared in "vorbis/vorbisfile.h".
-<p>
-
-<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td><b>function</b></td>
- <td><b>purpose</b></td>
-</tr>
-<tr valign=top>
- <td><a href="ov_bitrate.html">ov_bitrate</a></td>
- <td>Returns the average bitrate of the current logical bitstream.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_bitrate_instant.html">ov_bitrate_instant</a></td>
- <td>Returns the exact bitrate since the last call of this function, or -1 if beginning of the bitream or no new info is available.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_streams.html">ov_streams</a></td>
- <td>Gives the number of logical bitstreams within the current physical bitstream.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_seekable.html">ov_seekable</a></td>
- <td>Indicates whether the bitstream is seekable.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_serialnumber.html">ov_serialnumber</a></td>
- <td>Returns the unique serial number of the specified logical bitstream.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_raw_total.html">ov_raw_total</a></td>
- <td>Returns the total (compressed) bytes in a physical or logical seekable bitstream.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_pcm_total.html">ov_pcm_total</a></td>
- <td>Returns the total number of samples in a physical or logical seekable bitstream.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_time_total.html">ov_time_total</a></td>
- <td>Returns the total time length in seconds of a physical or logical seekable bitstream.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_raw_tell.html">ov_raw_tell</a></td>
- <td>Returns the byte location of the next sample to be read, giving the approximate location in the stream that the decoding engine has reached.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_pcm_tell.html">ov_pcm_tell</a></td>
- <td>Returns the sample location of the next sample to be read, giving the approximate location in the stream that the decoding engine has reached.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_time_tell.html">ov_time_tell</a></td>
- <td>Returns the time location of the next sample to be read, giving the approximate location in the stream that the decoding engine has reached.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_info.html">ov_info</a></td>
- <td>Returns the <a href="vorbis_info.html">vorbis_info</a> struct for a specific bitstream section.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_comment.html">ov_comment</a></td>
- <td>Returns attached <a href="vorbis_comment.html">comments</a> for the current bitstream.</td>
-</tr>
-</table>
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/index.html b/doc/vorbisfile/index.html
deleted file mode 100644
index 102636a4..00000000
--- a/doc/vorbisfile/index.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - Documentation</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>VorbisFile Documentation</h1>
-
-<p>
-VorbisFile is a stdio-based convenience library for decoding vorbis bitstreams.
-It is the simplest and quickest way to go from file to raw PCM audio samples--if
-your decoder doesn't need to read from anything other than a file, use
-this. This document explains how to use the vorbisfile API in detail.
-<p>
-<a href="overview.html">vorbisfile api overview</a><br>
-<a href="exampleindex.html">vorbisfile example code</a><br>
-<a href="reference.html">vorbisfile api reference</a><br>
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/initialization.html b/doc/vorbisfile/initialization.html
deleted file mode 100644
index be09f651..00000000
--- a/doc/vorbisfile/initialization.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<html>
-
-<head>
-<title>libvorbisfile - Setup/Teardown</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>libvorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>Setup/Teardown</h1>
-<p>In order to decode audio using libvorbisfile, a bitstream containing vorbis audio must be properly initialized and cleared when decoding is finished.
-<p>
-All the <b>vorbisfile</b> initialization and deallocation routines are declared in "vorbis/vorbisfile.h".
-<p>
-
-<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td><b>function</b></td>
- <td><b>purpose</b></td>
-</tr>
-<tr valign=top>
- <td><a href="ov_open.html">ov_open</a></td>
- <td>Initializes the Ogg Vorbis bitstream with a pointer to a bitstream and default values. This must be called before other functions in the library may be
- used.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_open_callbacks.html">ov_open_callbacks</a></td>
- <td>Initializes the Ogg Vorbis bitstream with a pointer to a bitstream, default values, and custom file/bitstream manipulation routines. Used instead of <a href="ov_open.html">ov_open</a> when working with a data source other than a file.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_clear.html">ov_clear</a></td>
- <td>Closes the bitstream and cleans up loose ends. Must be called when we're done with the bitstream.</td>
-</tr>
-</table>
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_bitrate.html b/doc/vorbisfile/ov_bitrate.html
deleted file mode 100644
index ad402615..00000000
--- a/doc/vorbisfile/ov_bitrate.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_bitrate</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_bitrate</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>This function returns the average bitrate for the specified logical bitstream. This may be different from the <a href=ov_info.html>ov_info->nominal_bitrate</a> value, as it is based on the actual average for this bitstream if the file is seekable.
-<p>Nonseekable files will return the nominal bitrate setting or the average of the upper and lower bounds, if any of these values are set.
-<p>
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-long ov_bitrate(OggVorbis_File *vf,int i);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions.</dd>
-<dt><i>i</i></dt>
-<dd>Link to the desired logical bitstream. For nonseekable files, this argument is ignored. To retrieve the bitrate for the entire bitstream, this parameter should be set to -1.</dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>OV_EINVAL indicates that an invalid argument value was submitted.</li>
-<li>OV_FALSE means the call returned a 'false' status, which in this case most likely indicates that the file is nonseekable and the upper, lower, and nominal bitrates were unset.
-<li><i>n</i> indicates the bitrate for the given logical bitstream or the entire
- physical bitstream. If the file is open for random (seekable) access, it will
- find the *actual* average bitrate. If the file is streaming (nonseekable), it
- returns the nominal bitrate (if set) or else the average of the
- upper/lower bounds (if set).</li>
-</blockquote>
-<p>
-
-<br>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_bitrate_instant.html b/doc/vorbisfile/ov_bitrate_instant.html
deleted file mode 100644
index 7f53b701..00000000
--- a/doc/vorbisfile/ov_bitrate_instant.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_bitrate</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_bitrate_instant</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>Used to find the most recent bitrate played back within the file. Will return 0 if the bitrate has not changed or it is the beginning of the file.
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-long ov_bitrate_instant(OggVorbis_File *vf);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions.
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>
-0 indicates the beginning of the file or unchanged bitrate info.</li>
-<li><i>n</i> indicates the actual bitrate since the last call.</li>
-<li>OV_FALSE indicates that the call returned a 'false' status. In this case, this error code is returned if playback is not in progress, and thus there is no instantaneous bitrate information to report.</li>
-</blockquote>
-<p>
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_callbacks.html b/doc/vorbisfile/ov_callbacks.html
deleted file mode 100644
index 9d73c68e..00000000
--- a/doc/vorbisfile/ov_callbacks.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - datatype - ov_callbacks</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_callbacks</h1>
-
-<p><i>declared in "vorbis/codec.h"</i></p>
-
-<p>
-The ov_callbacks structure contains file manipulation function prototypes necessary for opening, closing, seeking, and location.
-<p>
-The ov_callbacks structure does not need to be user-defined if you are working with a standard file. The typical <a href="ov_open.html">ov_open()</a> call will fill ov_callbacks for you. However, ov_callbacks should be defined if you are using other data sources. In this situation, use <a href="ov_open_callbacks.html">ov_open_callbacks()</a> instead of <a href="ov_open.html">ov_open()</a>.
-<p>
-
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>typedef struct {
- size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource);
- int (*seek_func) (void *datasource, int64_t offset, int whence);
- int (*close_func) (void *datasource);
- long (*tell_func) (void *datasource);
-} ov_callbacks;</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Relevant Struct Members</h3>
-<dl>
-<dt><i>read_func</i></dt>
-<dd>Pointer to custom data reading function.</dd>
-<dt><i>seek_func</i></dt>
-<dd>Pointer to custom data seeking function.</dd>
-<dt><i>close_func</i></dt>
-<dd>Pointer to custom data source closure function.</dd>
-<dt><i>tell_func</i></dt>
-<dd>Pointer to custom data location function.</dd>
-</dl>
-
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_clear.html b/doc/vorbisfile/ov_clear.html
deleted file mode 100644
index 81eb0ea0..00000000
--- a/doc/vorbisfile/ov_clear.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_clear</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_clear</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p> After a bitstream has been opened using <a href="ov_open.html">ov_open</a> and decoding is complete, you must call <tt>ov_clear()</tt> to clear
-the decoder's buffers and close the file for you.
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int ov_clear(OggVorbis_File *vf);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions. After <tt>ov_clear</tt> has been called, the structure is deallocated and can no longer be used.</dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>
-0 for success</li>
-</blockquote>
-
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_comment.html b/doc/vorbisfile/ov_comment.html
deleted file mode 100644
index 654fa981..00000000
--- a/doc/vorbisfile/ov_comment.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_bitrate</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_comment</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>Returns a pointer to the <a href="vorbis_comment.html">vorbis_comment</a> struct for the specified bitstream. For nonseekable streams, returns the struct for the current bitstream.
-<p>
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-vorbis_comment *ov_comment(OggVorbis_File *vf,int link);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions.</dd>
-<dt><i>i</i></dt>
-<dd>Link to the desired logical bitstream. For nonseekable files, this argument is ignored. To retrieve the <a href="vorbis_comment.html">vorbis_comment</a> struct for the current bitstream, this parameter should be set to -1.</dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>Returns the vorbis_comment struct for the specified bitstream.</li>
-<li>NULL if the specified bitstream does not exist or the file has been initialized improperly.</li>
-</blockquote>
-<p>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_info.html b/doc/vorbisfile/ov_info.html
deleted file mode 100644
index e410274a..00000000
--- a/doc/vorbisfile/ov_info.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_info</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_info</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>Returns the <a href="vorbis_info.html">vorbis_info</a> struct for the specified bitstream. For nonseekable files, always returns the current vorbis_info struct.
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-vorbis_info *ov_info(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf,int link);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions. <b></strong>Once this has been called, the same <tt>OggVorbis_File</tt>
-struct should be passed to all the vorbisfile functions.</b></dd>
-<dt><i>i</i></dt>
-<dd>Link to the desired logical bitstream. For nonseekable files, this argument is ignored. To retrieve the <a href="vorbis_info.html">vorbis_info</a> struct for the current bitstream, this parameter should be set to -1.</dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>Returns the vorbis_info struct for the specified bitstream. Returns vorbis_info for current bitstream if the file is nonseekable or i=-1.</li>
-<li>NULL if the specified bitstream does not exist or the file has been initialized improperly.</li>
-</blockquote>
-<p>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_open.html b/doc/vorbisfile/ov_open.html
deleted file mode 100644
index 1a55527c..00000000
--- a/doc/vorbisfile/ov_open.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_open</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_open</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>This is the main function used to open and initialize an OggVorbis_File
-structure. It sets up all the related decoding structure.
-<p>The first argument must be a file pointer to an already opened file
-or pipe (it need not be seekable--though this obviously restricts what
-can be done with the bitstream). <tt>vf</tt> should be a pointer to the
-OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions. Once this has been called, the same <a href="OggVorbis_File.html">OggVorbis_File</a>
-struct should be passed to all the vorbisfile functions.
-<p>Also, you should be aware that ov_open(), once successful, takes complete possession of the file resource. After you have opened a file using ov_open(), you MUST close it using <a href="ov_clear.html">ov_clear()</a>, not fclose() or any other function.
-<p>
-It is often useful to call <tt>ov_open()</tt>
-simply to determine whether a given file is a vorbis bitstream. If the
-<tt>ov_open()</tt>
-call fails, then the file is not recognizable as such. When you use <tt>ov_open()
-</tt>for
-this, you should <tt>fclose()</tt> the file pointer if, and only if, the
-<tt>ov_open()</tt>
-call fails. If it succeeds, you must call <a href="ov_clear.html">ov_clear()</a> to clear
-the decoder's buffers and close the file for you.
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int ov_open(FILE *f,<a href="OggVorbis_File.html">OggVorbis_File</a> *vf,char *initial,long ibytes);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>f</i></dt>
-<dd>File pointer to an already opened file
-or pipe (it need not be seekable--though this obviously restricts what
-can be done with the bitstream).</dd>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions. Once this has been called, the same <tt>OggVorbis_File</tt>
-struct should be passed to all the vorbisfile functions.</dd>
-<dt><i>initial</i></dt>
-<dd>Typically set to NULL. This parameter is useful if some data has already been
-read from the file and the stream is not seekable. It is used in conjunction with <tt>ibytes</tt>. In this case, <tt>initial</tt>
-should be a pointer to a buffer containing the data read.</dd>
-<dt><i>ibytes</i></dt>
-<dd>Typically set to 0. This parameter is useful if some data has already been
-read from the file and the stream is not seekable. In this case, <tt>ibytes</tt>
-should contain the length (in bytes) of the buffer. Used together with <tt>initial</tt></dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>
-0 for success</li>
-
-<li>less than zero for failure:</li>
-<ul>
-<li>OV_EREAD - A read from media returned an error.</li>
-<li>OV_ENOTVORBIS - Bitstream is not Vorbis data.</li>
-<li>OV_EVERSION - Vorbis version mismatch.</li>
-<li>OV_EBADHEADER - Invalid Vorbis bitstream header.</li>
-<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
-</ul>
-</blockquote>
-<p>
-
-<h3>Notes</h3>
-<p>If your decoder is threaded, it is recommended that you NOT call
-<tt>ov_open()</tt>
-in the main control thread--instead, call <tt>ov_open()</tt> IN your decode/playback
-thread. This is important because <tt>ov_open()</tt> may be a fairly time-consuming
-call, given that the full structure of the file is determined at this point,
-which may require reading large parts of the file under certain circumstances
-(determining all the logical bitstreams in one physical bitstream, for
-example).
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_open_callbacks.html b/doc/vorbisfile/ov_open_callbacks.html
deleted file mode 100644
index 9ac61bda..00000000
--- a/doc/vorbisfile/ov_open_callbacks.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_open_callbacks</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_open_callbacks</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>This is an alternative function used to open and initialize an OggVorbis_File
-structure when using a data source other than a file. It allows you to specify custom file manipulation routines and sets up all the related decoding structure.
-<p>Once this has been called, the same <tt>OggVorbis_File</tt>
-struct should be passed to all the vorbisfile functions.
-<p>
-It is often useful to call <tt>ov_open_callbacks()</tt>
-simply to determine whether a given file is a vorbis bitstream. If the
-<tt>ov_open_callbacks()</tt>
-call fails, then the file is not recognizable as such. When you use <tt>ov_open_callbacks()
-</tt>for
-this, you should <tt>fclose()</tt> the file pointer if, and only if, the
-<tt>ov_open_callbacks()</tt>
-call fails. If it succeeds, you must call <a href=ov_clear.html>ov_clear()</a> to clear
-the decoder's buffers and close the file for you.
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int ov_open_callbacks(void *datasource, <a href="OggVorbis_File.html">OggVorbis_File</a> *vf, char *initial, long ibytes, <a href="ov_callbacks.html">ov_callbacks</a> callbacks);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>f</i></dt>
-<dd>File pointer to an already opened file
-or pipe (it need not be seekable--though this obviously restricts what
-can be done with the bitstream).</dd>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions. Once this has been called, the same <tt>OggVorbis_File</tt>
-struct should be passed to all the vorbisfile functions.</dd>
-<dt><i>initial</i></dt>
-<dd>Typically set to NULL. This parameter is useful if some data has already been
-read from the file and the stream is not seekable. It is used in conjunction with <tt>ibytes</tt>. In this case, <tt>initial</tt>
-should be a pointer to a buffer containing the data read.</dd>
-<dt><i>ibytes</i></dt>
-<dd>Typically set to 0. This parameter is useful if some data has already been
-read from the file and the stream is not seekable. In this case, <tt>ibytes</tt>
-should contain the length (in bytes) of the buffer. Used together with <tt>initial</tt>.</dd>
-<dt><i>callbacks</i></dt>
-<dd>Pointer to a completed <a href="ov_callbacks.html">ov_callbacks</a> struct which indicates desired custom file manipulation routines.</dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>
-0 for success</li>
-<li>less than zero for failure:</li>
-<ul>
-<li>OV_EREAD - A read from media returned an error.</li>
-<li>OV_ENOTVORBIS - Bitstream is not Vorbis data.</li>
-<li>OV_EVERSION - Vorbis version mismatch.</li>
-<li>OV_EBADHEADER - Invalid Vorbis bitstream header.</li>
-<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
-</ul>
-</blockquote>
-<p>
-
-<h3>Notes</h3>
-<p>If your decoder is threaded, it is recommended that you NOT call
-<tt>ov_open_callbacks()</tt>
-in the main control thread--instead, call <tt>ov_open_callbacks()</tt> IN your decode/playback
-thread. This is important because <tt>ov_open_callbacks()</tt> may be a fairly time-consuming
-call, given that the full structure of the file is determined at this point,
-which may require reading large parts of the file under certain circumstances
-(determining all the logical bitstreams in one physical bitstream, for
-example).
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_pcm_seek.html b/doc/vorbisfile/ov_pcm_seek.html
deleted file mode 100644
index 43e50157..00000000
--- a/doc/vorbisfile/ov_pcm_seek.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_bitrate</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_pcm_seek</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>Seeks to the offset specified (in pcm samples) within the physical bitstream. This function only works for seekable streams.
-<p>This also updates everything needed within the
-decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
-the newly seeked to position.
-<p>
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int ov_pcm_seek(OggVorbis_File *vf,int64_t pos);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions.</dd>
-<dt><i>pos</i></dt>
-<dd>Position in pcm samples to seek to in the bitstream.</dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>
-0 for success</li>
-
-<li>
-nonzero indicates failure, described by several error codes:</li>
-<ul>
-<li>OV_ENOSEEK - Bitstream is not seekable.
-</li>
-<li>OV_EINVAL - Invalid argument value.
-</li>
-<li>OV_EREAD - A read from media returned an error.
-</li>
-<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack
- corruption.
-</li>
-<li>OV_EBADLINK - Invalid stream section supplied to libvorbis/libvorbisfile, or the requested link is corrupt.
-</li>
-</ul></blockquote>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_pcm_seek_page.html b/doc/vorbisfile/ov_pcm_seek_page.html
deleted file mode 100644
index 1f97db86..00000000
--- a/doc/vorbisfile/ov_pcm_seek_page.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_pcm_seek_page</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_pcm_seek_page</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>Seeks to the closest page preceding the specified location (in pcm samples) within the physical bitstream. This function only works for seekable streams.
-<p>This function is faster than <a href="ov_pcm_seek.html">ov_pcm_seek</a> because the function can begin decoding at a page boundary rather than seeking through any remaining samples before the specified location. However, it is less accurate.
-<p>This also updates everything needed within the
-decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
-the newly seeked to position.
-<p>
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int ov_pcm_seek(OggVorbis_File *vf,int64_t pos);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions.</dd>
-<dt><i>pos</i></dt>
-<dd>Position in pcm samples to seek to in the bitstream.</dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>
-0 for success</li>
-
-<li>
-nonzero indicates failure, described by several error codes:</li>
-<ul>
-<li>OV_ENOSEEK - Bitstream is not seekable.
-</li>
-<li>OV_EINVAL - Invalid argument value.
-</li>
-<li>OV_EREAD - A read from media returned an error.
-</li>
-<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack
- corruption.
-</li>
-<li>OV_EBADLINK - Invalid stream section supplied to libvorbis/libvorbisfile, or the requested link is corrupt.
-</li>
-</ul></</blockquote>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_pcm_tell.html b/doc/vorbisfile/ov_pcm_tell.html
deleted file mode 100644
index f277a416..00000000
--- a/doc/vorbisfile/ov_pcm_tell.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_pcm_tell</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_pcm_tell</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>Returns the current offset in samples.
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int64_t ov_pcm_tell(OggVorbis_File *vf);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions.</dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li><i>n</i> indicates the current offset in samples.</li>
-</blockquote>
-<p>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_pcm_total.html b/doc/vorbisfile/ov_pcm_total.html
deleted file mode 100644
index bb205c21..00000000
--- a/doc/vorbisfile/ov_pcm_total.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_pcm_total</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_pcm_total</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>Returns the total pcm samples of the physical bitstream or a specified logical bitstream.
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int64_t ov_pcm_total(OggVorbis_File *vf,int i);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions.</dd>
-<dt><i>i</i></dt>
-<dd>Link to the desired logical bitstream. To retrieve the total pcm samples for the entire physical bitstream, this parameter should be set to -1.</dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>OV_EINVAL means that the argument was invalid. In this case, the requested bitstream did not exist or the bitstream is unseekable.</li>
-<li>
-total length in pcm samples of content if i=-1.</li>
-<li>length in pcm samples of logical bitstream if i=1 to n.</li>
-</blockquote>
-<p>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_raw_seek.html b/doc/vorbisfile/ov_raw_seek.html
deleted file mode 100644
index dba16b4e..00000000
--- a/doc/vorbisfile/ov_raw_seek.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_raw_seek</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_raw_seek</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>Seeks to the offset specified (in compressed raw bytes) within the physical bitstream. This function only works for seekable streams.
-<p>This also updates everything needed within the
-decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
-the newly seeked to position.
-<p>When seek speed is a priority, this is the best vorbisfile seek funtion to use.
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int ov_raw_seek(OggVorbis_File *vf,long pos);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions. Once this has been called, the same <tt>OggVorbis_File</tt>
-struct should be passed to all the vorbisfile functions.</dd>
-<dt><i>pos</i></dt>
-<dd>Position in compressed bytes to seek to in the bitstream.</dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>
-0 indicates success</li>
-<li>nonzero indicates failure, described by several error codes:</li>
-<ul>
-<li>OV_ENOSEEK - Bitstream is not seekable.
-</li>
-<li>OV_EINVAL - Invalid argument value.
-</li>
-<li>OV_EBADLINK - Invalid stream section supplied to libvorbis/libvorbisfile, or the requested link is corrupt.
-</li>
-</ul>
-</blockquote>
-<p>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_raw_tell.html b/doc/vorbisfile/ov_raw_tell.html
deleted file mode 100644
index d2b649d3..00000000
--- a/doc/vorbisfile/ov_raw_tell.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_raw_tell</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_raw_tell</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>Returns the current offset in raw compressed bytes.
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int64_t ov_raw_tell(OggVorbis_File *vf);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions.</dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li><i>n</i> indicates the current offset in bytes.</li>
-</blockquote>
-<p>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_raw_total.html b/doc/vorbisfile/ov_raw_total.html
deleted file mode 100644
index 9732a0dc..00000000
--- a/doc/vorbisfile/ov_raw_total.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_raw_total</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_raw_total</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>Returns the total (compressed) bytes of the physical bitstream or a specified logical bitstream.
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int64_t ov_raw_total(OggVorbis_File *vf,int i);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions.</dd>
-<dt><i>i</i></dt>
-<dd><b>Link to the desired logical bitstream. To retrieve the total bytes for the entire physical bitstream, this parameter should be set to -1.</b></dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>OV_EINVAL means that the argument was invalid. In this case, the requested bitstream did not exist or the bitstream is nonseekable</li>
-<li>
-total length in compressed bytes of content if i=-1.</li>
-<li>length in compressed bytes of logical bitstream if i=1 to n.</li>
-</blockquote>
-<p>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_read.html b/doc/vorbisfile/ov_read.html
deleted file mode 100644
index 09052684..00000000
--- a/doc/vorbisfile/ov_read.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_read</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_read()</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>
- This is the main function used to decode a Vorbis file within a loop.
-</p><p>
- This function deals with more complicated bitstream chaining issues.
- Up to this point, everything could more or less hide the multiple
- logical bitstream nature of chaining from the toplevel application
- if the toplevel application didn't particularly care. However, when we actually read audio back, we must be aware that multiple bitstream sections do not necessarily
- have to have the same number of channels or sampling rate.
-</p><p>
- <tt>ov_read()</tt> passes back the index of the sequential logical
- bitstream 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 at chaining boundaries even
- for non-seekable streams. For seekable streams, it represents the
- actual chaining index within the physical bitstream.
-<tt>ov_read()</tt> passes back the 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.
-</p>
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-long ov_read(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf, char *buffer, int length, int bigendianp, int word, int sgned, int *bitstream);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions.</dd>
-<dt><i>buffer</i></dt>
-<dd>A pointer to an output buffer. The decoded output is inserted into this buffer.</dd>
-<dt><i>length</i></dt>
-<dd>Number of bytes to be read into the buffer. Should be the same size as the buffer. A typical value is 4096.</dd>
-<dt><i>bigendianp</i></dt>
-<dd>Specifies big or little endian byte packing. 0 for little endian, 1 for big endian. Typical value is 0.</dd>
-<dt><i>word</i></dt>
-<dd>Specifies word size. Possible arguments are 1 for 8-bit samples, or 2 or 16-bit samples. Typical value is 2.</dd>
-<dt><i>sgned</i></dt>
-<dd>Signed or unsigned data. 0 for unsigned, 1 for signed. Typically 1.</dd>
-<dt><i>bitstream</i></dt>
-<dd>A pointer to the number of the current logical bitstream.</dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<dl>
-<dt>OV_HOLE</dt>
- <dd>indicates there was an interruption in the data.
- <br>(one of: garbage between pages, loss of sync followed by
- recapture, or a corrupt page)</dd>
-<dt>OV_EBADLINK</dt>
- <dd>indicates that an invalid stream section was supplied to
- libvorbisfile, or the requested link is corrupt.</dd>
-<dt>0</dt>
- <dd>indicates EOF</dd>
-<dt><i>n</i></dt>
- <dd>indicates actual number of bytes read. <tt>ov_read()</tt> will
- decode at most one vorbis packet per invocation, so the value
- returned will generally be less than <tt>length</tt>.
-</dl>
-</blockquote>
-
-<h3>Notes</h3>
-<p><b>Typical usage:</b>
-<blockquote>
-<tt>bytes_read = ov_read(&amp;vf,
-buffer, 4096,0,2,1,&amp;current_section)</tt>
-</blockquote>
-
-This reads up to 4096 bytes into a buffer, with signed 16-bit
-little-endian samples.
-</p>
-
-<br>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_seekable.html b/doc/vorbisfile/ov_seekable.html
deleted file mode 100644
index e369ee9c..00000000
--- a/doc/vorbisfile/ov_seekable.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_seekable</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_seekable</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>This indicates whether or not the bitstream is seekable.
-
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-long ov_seekable(OggVorbis_File *vf);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions. <b>Once this has been called, the same <tt>OggVorbis_File</tt>
-struct should be passed to all the vorbisfile functions.</b></dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>
-0 indicates that the file is not seekable.</li>
-<li>1 indicates that the file is seekable.</li>
-</blockquote>
-<p>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_serialnumber.html b/doc/vorbisfile/ov_serialnumber.html
deleted file mode 100644
index 0c2a733d..00000000
--- a/doc/vorbisfile/ov_serialnumber.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_serialnumber</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_serialnumber</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>Returns the serialnumber of the specified logical bitstream.
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-long ov_serialnumber(OggVorbis_File *vf,int i);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions. Once this has been called, the same <tt>OggVorbis_File</tt>
-struct should be passed to all the vorbisfile functions.</dd>
-<dt><i>i</i></dt>
-<dd><b>Link to the desired logical bitstream. For nonseekable files, this argument is ignored. To retrieve the <a href="vorbis_info.html">vorbis_info</a> struct for the current bitstream, this parameter should be set to -1.</b></dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>
--1 if the specified logical bitstream <i>i</i> does not exist.</li>
-
-<li>Returns the serial number of the logical bitstream <i>i</i> or the serial number of the current bitstream if the file is nonseekable.</li>
-</blockquote>
-<p>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_streams.html b/doc/vorbisfile/ov_streams.html
deleted file mode 100644
index ba4b31ef..00000000
--- a/doc/vorbisfile/ov_streams.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_streams</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_streams</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>Returns the number of logical bitstreams within our physical bitstream.
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-long ov_streams(OggVorbis_File *vf);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions. <b>Once this has been called, the same <tt>OggVorbis_File</tt>
-struct should be passed to all the vorbisfile functions.</b></dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>
-1 indicates a single logical bitstream or an unseekable file.</li>
-<li><i>n</i> indicates the number of logical bitstreams.</li>
-</blockquote>
-<p>
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_time_seek.html b/doc/vorbisfile/ov_time_seek.html
deleted file mode 100644
index 8e88e9c8..00000000
--- a/doc/vorbisfile/ov_time_seek.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_time_seek</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_time_seek</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>For seekable
-streams, this seeks to the given time. For implementing seeking in a player,
-this is the only function generally needed. This also updates everything needed within the
-decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
-the newly seeked to position. For obvious reasons, this doesn't work for unseekable streams.
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int ov_time_seek(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf, double seconds);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>Pointer to our already opened and initialized OggVorbis_File structure.</dd>
-<dt><i>seconds</i></dt>
-<dd>Location to seek to within the file, specified in seconds.</dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>
-0 for success</li>
-
-<li>
-Nonzero for failure</li>
-</blockquote>
-
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_time_seek_page.html b/doc/vorbisfile/ov_time_seek_page.html
deleted file mode 100644
index b3b96160..00000000
--- a/doc/vorbisfile/ov_time_seek_page.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_time_seek_page</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_time_seek_page</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>For seekable
-streams, this seeks to closest full page preceding the given time. This function is faster than <a href="ov_time_seek.html">ov_time_seek</a> because it doesn't seek through the last few samples to reach an exact time, but it is also less accurate. This should be used when speed is important.
-<p>This function also updates everything needed within the
-decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
-the newly seeked to position.
-<p>For obvious reasons, this doesn't work for unseekable streams.
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int ov_time_seek_page(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf, double seconds);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>Pointer to our already opened and initialized OggVorbis_File structure.</dd>
-<dt><i>seconds</i></dt>
-<dd>Location to seek to within the file, specified in seconds.</dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>
-0 for success</li>
-
-<li>
-nonzero indicates failure, described by several error codes:</li>
-<ul>
-<li>OV_ENOSEEK - Bitstream is not seekable.
-</li>
-<li>OV_EINVAL - Invalid argument value.
-</li>
-<li>OV_EREAD - A read from media returned an error.
-</li>
-<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack
- corruption.
-</li>
-<li>OV_EBADLINK - Invalid stream section supplied to libvorbis/libvorbisfile, or the requested link is corrupt.
-</li>
-</ul></blockquote>
-
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_time_tell.html b/doc/vorbisfile/ov_time_tell.html
deleted file mode 100644
index 1377926c..00000000
--- a/doc/vorbisfile/ov_time_tell.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_bitrate</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_time_tell</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-<p>Returns the current offset in seconds.
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-double ov_time_tell(OggVorbis_File *vf);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions. <b>Once this has been called, the same <tt>OggVorbis_File</tt>
-struct should be passed to all the vorbisfile functions.</b></dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li><i>n</i> indicates the current offset in bytes.</li>
-</blockquote>
-<p>
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/ov_time_total.html b/doc/vorbisfile/ov_time_total.html
deleted file mode 100644
index 1fa81a57..00000000
--- a/doc/vorbisfile/ov_time_total.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - function - ov_time_total</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>ov_time_total</h1>
-
-<p><i>declared in "vorbis/vorbisfile.h";</i></p>
-
-
-<p>Returns the total time in seconds of the physical bitstream or a specified logical bitstream.
-
-
-<br><br>
-<table border=0 color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-double ov_time_total(OggVorbis_File *vf,int i);
-</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>vf</i></dt>
-<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
-functions. Once this has been called, the same <tt>OggVorbis_File</tt>
-struct should be passed to all the vorbisfile functions.</dd>
-<dt><i>i</i></dt>
-<dd><b>Link to the desired logical bitstream. To retrieve the <a href="vorbis_info.html">vorbis_info</a> struct for the current bitstream, this parameter should be set to -1.</b></dd>
-</dl>
-
-
-<h3>Return Values</h3>
-<blockquote>
-<li>OV_EINVAL means that the argument was invalid. In this case, the requested bitstream did not exist or the bitstream is nonseekable.</li>
-<li>
-total length in seconds of content if i=-1.</li>
-<li>length in seconds of logical bitstream if i=1 to n.</li>
-</blockquote>
-<p>
-<h3>Notes</h3>
-<p><b>Typical usage:</b> <tt>bytes_read = ov_read(&amp;vf, buffer, 4096,0,2,1,&amp;current_section)</tt>
-<br>This reads up to 4096 bytes into a buffer, with signed 16-bit little-endian
-samples.
-<br>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/overview.html b/doc/vorbisfile/overview.html
deleted file mode 100644
index 99b384d2..00000000
--- a/doc/vorbisfile/overview.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<html>
-
-<head>
-<title>libvorbisfile - API Overview</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>VorbisFile API Overview</h1>
-
-<p>The makeup of the vorbisfile API is relatively simple. It revolves around a single file resource. This resource is passed to the Vorbisfile API, where it is opened, manipulated, and closed, in the form of an <a href="OggVorbis_File.html">OggVorbis_File</a> struct.
-<p>
-The vorbisfile API consists of the following functional categories:
-<p>
-<ul>
-<li><p><a href="datastructures.html">Base data structures</a>
-<li><p><a href="initialization.html">Setup/Teardown</a>
-<li><p><a href="decoding.html">Decoding</a>
-<li><p><a href="seeking.html">Seeking</a>
-<li><p><a href="fileinfo.html">File Information</a>
-</ul>
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/reference.html b/doc/vorbisfile/reference.html
deleted file mode 100644
index 0649e22f..00000000
--- a/doc/vorbisfile/reference.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<html>
-
-<head>
-<title>Vorbisfile API Reference</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>Vorbisfile API Reference</h1>
-
-<p>
-<b>Data Structures</b><br>
-<a href="OggVorbis_File.html">OggVorbis_File</a><br>
-<a href="vorbis_comment.html">vorbis_comment</a><br>
-<a href="vorbis_info.html">vorbis_info</a><br>
-<a href="ov_callbacks.html">ov_callbacks</a><br>
-<br>
-<b>Setup/Teardown</b><br>
-<a href="ov_open.html">ov_open()</a><br>
-<a href="ov_open_callbacks.html">ov_open_callbacks()</a><br>
-<a href="ov_clear.html">ov_clear()</a><br>
-<br>
-<b>Decoding</b><br>
-<a href="ov_read.html">ov_read()</a><br>
-<br>
-<b>Seeking</b><br>
-<a href="ov_raw_seek.html">ov_raw_seek()</a><br>
-<a href="ov_pcm_seek.html">ov_pcm_seek()</a><br>
-<a href="ov_time_seek.html">ov_time_seek()</a><br>
-<br>
-<b>File Information</b><br>
-<a href="ov_bitrate.html">ov_bitrate()</a><br>
-<a href="ov_bitrate_instant.html">ov_bitrate_instant()</a><br>
-<a href="ov_streams.html">ov_streams()</a><br>
-<a href="ov_seekable.html">ov_seekable()</a><br>
-<a href="ov_serialnumber.html">ov_serialnumber()</a><br>
-<a href="ov_raw_total.html">ov_raw_total()</a><br>
-<a href="ov_pcm_total.html">ov_pcm_total()</a><br>
-<a href="ov_time_total.html">ov_time_total()</a><br>
-<a href="ov_raw_tell.html">ov_raw_tell()</a><br>
-<a href="ov_pcm_tell.html">ov_pcm_tell()</a><br>
-<a href="ov_time_tell.html">ov_time_tell()</a><br>
-<a href="ov_info.html">ov_info()</a><br>
-<a href="ov_comment.html">ov_comment()</a><br>
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/seekexample.html b/doc/vorbisfile/seekexample.html
deleted file mode 100644
index 1c5e36b3..00000000
--- a/doc/vorbisfile/seekexample.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - Example Code</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>Example Code</h1>
-
-<p>
-The following is a run-through of the seeking example program supplied
-with vorbisfile - <a href="seeking_test_c.html">seeking_test.c</a>.
-This program tests the vorbisfile <a href="ov_time_seek.html">ov_time_seek</a> function by seeking to random points within the file.
-
-<p>
-First, relevant headers, including vorbis-specific "codec.h" and "vorbisfile.h" have to be included.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-#include &lt;stdlib.h>
-#include &lt;stdio.h>
-#include "vorbis/codec.h"
-#include "vorbis/vorbisfile.h"
-#include "../lib/misc.h"
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>Inside main(), we declare our primary OggVorbis_File structure. We also declare a other helpful variables to track our progress within the file.
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int main(){
- OggVorbis_File ov;
- int i;
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p><a href="ov_open.html">ov_open()</a> must be
-called to initialize the <a href="OggVorbis_File.html">OggVorbis_File</a> structure with default values.
-<a href="ov_open.html">ov_open()</a> also checks to ensure that we're reading Vorbis format and not something else.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
- if(ov_open(stdin,&ov,NULL,-1)<0){
- printf("Could not open input as an OggVorbis file.\n\n");
- exit(1);
- }
-
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>
-First we check to make sure the stream is seekable using <a href="ov_seekable.html">ov_seekable</a>.
-
-<p>Then we seek to 100 random spots in the bitstream using <a href="ov_time_seek.html">ov_time_seek</a> with randomly generated values.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-
- /* print details about each logical bitstream in the input */
- if(ov_seekable(&ov)){
- double length=ov_time_total(&ov,-1);
- printf("testing seeking to random places in %g seconds....\n",length);
- for(i=0;i<100;i++){
- double val=(double)rand()/RAND_MAX*length;
- ov_time_seek(&ov,val);
- printf("\r\t%d [%gs]... ",i,val);
- fflush(stdout);
- }
-
- printf("\r \nOK.\n\n");
- }else{
- printf("Standard input was not seekable.\n");
- }
-
-</b></pre>
- </td>
-</tr>
-</table>
-<p>
-When we're done seeking, we need to call <a href="ov_clear.html">ov_clear()</a> to release the bitstream.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
- ov_clear(&ov);
- return 0;
-}
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>
-The full source for seeking_test.c can be found with the vorbis
-distribution in <a href="seeking_test_c.html">seeking_test.c</a>.
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/seeking.html b/doc/vorbisfile/seeking.html
deleted file mode 100644
index 6b5ac18b..00000000
--- a/doc/vorbisfile/seeking.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - Seeking</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>Seeking</h1>
-<p>Seeking functions allow you to specify a specific point in the stream to begin or continue decoding.
-<p>
-All the <b>vorbisfile</b> seeking routines are declared in "vorbis/vorbisfile.h".
-<p>
-<p>Certain seeking functions are best suited to different situations. When speed is important, page-level seeking should be used.
-
-</ul>
-
-<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td><b>function</b></td>
- <td><b>purpose</b></td>
-</tr>
-<tr valign=top>
- <td><a href="ov_raw_seek.html">ov_raw_seek</a></td>
- <td>This function seeks to a specific byte in the bitstream, specified in bytes.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_pcm_seek.html">ov_pcm_seek</a></td>
- <td>This function seeks to a specific point in the bitstream, specified in pcm samples.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_pcm_seek.html">ov_pcm_seek_page</a></td>
- <td>This function seeks to the closest page preceding a point in the bitstream, specified in pcm samples.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_time_seek.html">ov_time_seek</a></td>
- <td>This function seeks to a time in the bitstream, specified in seconds. The easiest and simplest seeking method.</td>
-</tr>
-<tr valign=top>
- <td><a href="ov_time_seek_page.html">ov_time_seek_page</a></td>
- <td>This function seeks to the closest page preceding a time in the bitstream, specified in seconds.</td>
-</tr>
-</table>
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/seeking_example_c.html b/doc/vorbisfile/seeking_example_c.html
deleted file mode 100644
index 0ffcf821..00000000
--- a/doc/vorbisfile/seeking_example_c.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - seeking_test.c</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>seeking_test.c</h1>
-
-<p>
-The example program source:
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "vorbis/codec.h"
-#include "vorbis/vorbisfile.h"
-#include "../lib/misc.h"
-
-int main(){
- OggVorbis_File ov;
- int i;
-
- /* open the file/pipe on stdin */
- if(ov_open(stdin,&ov,NULL,-1)==-1){
- printf("Could not open input as an OggVorbis file.\n\n");
- exit(1);
- }
-
- /* print details about each logical bitstream in the input */
- if(ov_seekable(&ov)){
- double length=ov_time_total(&ov,-1);
- printf("testing seeking to random places in %g seconds....\n",length);
- for(i=0;i<100;i++){
- double val=(double)rand()/RAND_MAX*length;
- ov_time_seek(&ov,val);
- printf("\r\t%d [%gs]... ",i,val);
- fflush(stdout);
- }
-
- printf("\r \nOK.\n\n");
- }else{
- printf("Standard input was not seekable.\n");
- }
-
- ov_clear(&ov);
- return 0;
-}
-
-</b></pre>
- </td>
-</tr>
-</table>
-
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/seeking_test_c.html b/doc/vorbisfile/seeking_test_c.html
deleted file mode 100644
index 0ffcf821..00000000
--- a/doc/vorbisfile/seeking_test_c.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - seeking_test.c</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>seeking_test.c</h1>
-
-<p>
-The example program source:
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "vorbis/codec.h"
-#include "vorbis/vorbisfile.h"
-#include "../lib/misc.h"
-
-int main(){
- OggVorbis_File ov;
- int i;
-
- /* open the file/pipe on stdin */
- if(ov_open(stdin,&ov,NULL,-1)==-1){
- printf("Could not open input as an OggVorbis file.\n\n");
- exit(1);
- }
-
- /* print details about each logical bitstream in the input */
- if(ov_seekable(&ov)){
- double length=ov_time_total(&ov,-1);
- printf("testing seeking to random places in %g seconds....\n",length);
- for(i=0;i<100;i++){
- double val=(double)rand()/RAND_MAX*length;
- ov_time_seek(&ov,val);
- printf("\r\t%d [%gs]... ",i,val);
- fflush(stdout);
- }
-
- printf("\r \nOK.\n\n");
- }else{
- printf("Standard input was not seekable.\n");
- }
-
- ov_clear(&ov);
- return 0;
-}
-
-</b></pre>
- </td>
-</tr>
-</table>
-
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/seekingexample.html b/doc/vorbisfile/seekingexample.html
deleted file mode 100644
index a137786b..00000000
--- a/doc/vorbisfile/seekingexample.html
+++ /dev/null
@@ -1,204 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - Example Code</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>Example Code</h1>
-
-<p>
-The following is a run-through of the decoding example program supplied
-with vorbisfile - <a href="vorbisfile_example_c.html">vorbisfile_example.c</a>.
-This program takes a vorbis bitstream from stdin and writes raw pcm to stdout.
-
-<p>
-First, relevant headers, including vorbis-specific "codec.h" and "vorbisfile.h" have to be included.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-#include &lt;stdio.h&gt;
-#include &lt;stdlib.h&gt;
-#include &lt;math.h&gt;
-#include "vorbis/codec.h"
-#include "vorbis/vorbisfile.h"
-</b></pre>
- </td>
-</tr>
-</table>
-<p>
-We also have to make a concession to Windows users here. If we are using windows for decoding, we must declare these libraries so that we can set stdin/stdout to binary.
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-#ifdef _WIN32
-#include &lt;io.h&gt;
-#include &lt;fcntl.h&gt;
-#endif
-</b></pre>
- </td>
-</tr>
-</table>
-<p>
-Next, a buffer for the pcm audio output is declared.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-char pcmout[4096];
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>Inside main(), we declare our primary OggVorbis_File structure. We also declare a few other helpful variables to track out progress within the file.
-Also, we make our final concession to Windows users by setting the stdin and stdout to binary mode.
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-int main(int argc, char **argv){
- OggVorbis_File vf;
- int eof=0;
- int current_section;
-
-#ifdef _WIN32
- _setmode( _fileno( stdin ), _O_BINARY );
- _setmode( _fileno( stdout ), _O_BINARY );
-#endif
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p><a href="ov_open.html">ov_open()</a> must be
-called to initialize the <b>OggVorbis_File</b> structure with default values.
-<a href="ov_open.html">ov_open()</a> also checks to ensure that we're reading Vorbis format and not something else.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
- if(ov_open(stdin, &vf, NULL, 0) < 0) {
- fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n");
- exit(1);
- }
-
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>
-We're going to pull the channel and bitrate info from the file using <a href="ov_info.html">ov_info()</a> and show them to the user.
-We also want to pull out and show the user a comment attached to the file using <a href="ov_comment.html">ov_comment()</a>.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
- {
- char **ptr=ov_comment(&vf,-1)->user_comments;
- vorbis_info *vi=ov_info(&vf,-1);
- while(*ptr){
- fprintf(stderr,"%s\n",*ptr);
- ++ptr;
- }
- fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi->channels,vi->rate);
- fprintf(stderr,"Encoded by: %s\n\n",ov_comment(&vf,-1)->vendor);
- }
-
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>
-Here's the read loop:
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-
- while(!eof){
- long ret=ov_read(&vf,pcmout,sizeof(pcmout),0,2,1,&current_section);
- switch(ret){
- case 0:
- /* EOF */
- eof=1;
- break;
- case -1:
- break;
- default:
- fwrite(pcmout,1,ret,stdout);
- break;
- }
- }
-
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>
-The code is reading blocks of data using <a href="ov_read.html">ov_read()</a>.
-Based on the value returned, we know if we're at the end of the file or have invalid data. If we have valid data, we write it to the pcm output.
-
-<p>
-Now that we've finished playing, we can pack up and go home. It's important to call <a href="ov_clear.html">ov_clear()</a> when we're finished.
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-
- ov_clear(&vf);
-
- fprintf(stderr,"Done.\n");
- return(0);
-}
-</b></pre>
- </td>
-</tr>
-</table>
-
-<p>
-The full source for vorbisfile_example.c can be found with the vorbis
-distribution in <a href="vorbisfile_example_c.html">vorbisfile_example.c</a>.
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/style.css b/doc/vorbisfile/style.css
deleted file mode 100644
index 332f809e..00000000
--- a/doc/vorbisfile/style.css
+++ /dev/null
@@ -1,7 +0,0 @@
-BODY { font-family: helvetica, sans-serif }
-TD { font-family: helvetica, sans-serif }
-P { font-family: helvetica, sans-serif }
-H1 { font-family: helvetica, sans-serif }
-H2 { font-family: helvetica, sans-serif }
-H4 { font-family: helvetica, sans-serif }
-P.tiny { font-size: 8pt }
diff --git a/doc/vorbisfile/vorbis_comment.html b/doc/vorbisfile/vorbis_comment.html
deleted file mode 100644
index 53f5b744..00000000
--- a/doc/vorbisfile/vorbis_comment.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - datatype - vorbis_comment</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>vorbis_comment</h1>
-
-<p><i>declared in "vorbis/codec.h"</i></p>
-
-<p>
-The vorbis_comment structure defines an Ogg Vorbis comment.
-<p>
-Only the fields the program needs must be defined. If a field isn't
-defined by the application, it will either be blank (if it's a string value)
-or set to some reasonable default (usually 0).
-<p>
-
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>typedef struct vorbis_comment{
- /* unlimited user comment fields. */
- char **user_comments;
- int comments;
- char *vendor;
-
-} vorbis_comment;</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Parameters</h3>
-<dl>
-<dt><i>user_comments</i></dt>
-<dd>Unlimited user comment array. Comments stored in normal C 0-terminated strings.</dd>
-<dt><i>comments</i></dt>
-<dd>Int signifying number of user comments in user_comments field.</dd>
-<dt><i>vendor</i></dt>
-<dd>Information about the creator of the file. Stored in a standard C 0-terminated string.</dd>
-</dl>
-
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/vorbis_info.html b/doc/vorbisfile/vorbis_info.html
deleted file mode 100644
index b9ae7de5..00000000
--- a/doc/vorbisfile/vorbis_info.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - datatype - vorbis_info</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>vorbis_info</h1>
-
-<p><i>declared in "vorbis/codec.h"</i></p>
-
-<p>
-The vorbis_info structure contains information about a vorbis bitstream. Most of the information in this struct is more complex and in-depth than we need for vorbisfile decoding. However, the info's there if we need or want it.
-
-<p>
-
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>typedef struct vorbis_info{
- int version;
- int channels;
- long rate;
-
- long bitrate_upper;
- long bitrate_nominal;
- long bitrate_lower;
-
- long blocksizes[2];
-
- int modes;
- int maps;
- int times;
- int floors;
- int residues;
- int books;
- int psys; /* encode only */
-
- vorbis_info_mode *mode_param[64];
- int map_type[64];
- vorbis_info_mapping *map_param[64];
- int time_type[64];
- vorbis_info_time *time_param[64];
- int floor_type[64];
- vorbis_info_floor *floor_param[64];
- int residue_type[64];
- vorbis_info_residue *residue_param[64];
- static_codebook *book_param[256];
- vorbis_info_psy *psy_param[64]; /* encode only */
-
- /* for block long/sort tuning; encode only */
- int envelopesa;
- double preecho_thresh;
- double preecho_clamp;
-
-} vorbis_info;</b></pre>
- </td>
-</tr>
-</table>
-
-<h3>Relevant Struct Members</h3>
-<dl>
-<dt><i>version</i></dt>
-<dd>Vorbis encoder version used to create this bitstream.</dd>
-<dt><i>channels</i></dt>
-<dd>Int signifying number of channels in bitstream.</dd>
-<dt><i>rate</i></dt>
-<dd>Sampling rate of the bitstream.</dd>
-<dt><i>bitrate_upper</i></dt>
-<dd>Specifies the upper limit in a VBR bitstream. If the value matches the bitrate_nominal and bitrate_lower parameters, the stream is fixed bitrate. May be unset if no limit exists.</dd>
-<dt><i>bitrate_nominal</i></dt>
-<dd>Specifies the average bitrate for a VBR bitstream. May be unset. If the bitrate_upper and bitrate_lower parameters match, the stream is fixed bitrate.</dd>
-<dt><i>bitrate_lower</i></dt>
-<dd>Specifies the lower limit in a VBR bitstream. If the value matches the bitrate_nominal and bitrate_upper parameters, the stream is fixed bitrate. May be unset if no limit exists.</dd>
-<dt><i>blocksizes[2]</i></dt>
-<dd>Contains the sizes of the long and short blocks for this particular bitstream. These are variable and can be set by the encoder. Vorbis only supports two sizes, long and short.</dd>
-</dl>
-
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisfile/vorbisfile_example_c.html b/doc/vorbisfile/vorbisfile_example_c.html
deleted file mode 100644
index 38068db0..00000000
--- a/doc/vorbisfile/vorbisfile_example_c.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<html>
-
-<head>
-<title>vorbisfile - vorbisfile_example.c</title>
-<link rel=stylesheet href="style.css" type="text/css">
-</head>
-
-<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
-<table border=0 width=100%>
-<tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-<h1>vorbisfile_example.c</h1>
-
-<p>
-The example program source:
-
-<br><br>
-<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
-<tr bgcolor=#cccccc>
- <td>
-<pre><b>
-#include &lt;stdio.h&gt;
-#include &lt;stdlib.h&gt;
-#include &lt;math.h&gt;
-#include "vorbis/codec.h"
-#include "vorbis/vorbisfile.h"
-
-#ifdef _WIN32
-#include &lt;io.h&gt;
-#include &lt;fcntl.h&gt;
-#endif
-
-char pcmout[4096];
-
-int main(int argc, char **argv){
- OggVorbis_File vf;
- int eof=0;
- int current_section;
-
-#ifdef _WIN32
- _setmode( _fileno( stdin ), _O_BINARY );
- _setmode( _fileno( stdout ), _O_BINARY );
-#endif
-
- if(ov_open(stdin, &vf, NULL, 0) < 0) {
- fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n");
- exit(1);
- }
-
- {
- char **ptr=ov_comment(&vf,-1)->user_comments;
- vorbis_info *vi=ov_info(&vf,-1);
- while(*ptr){
- fprintf(stderr,"%s\n",*ptr);
- ++ptr;
- }
- fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi->channels,vi->rate);
- fprintf(stderr,"Encoded by: %s\n\n",ov_comment(&vf,-1)->vendor);
- }
-
- while(!eof){
- long ret=ov_read(&vf,pcmout,sizeof(pcmout),0,2,1,&current_section);
- if (ret == 0) {
- /* EOF */
- eof=1;
- } else if (ret < 0) {
- /* 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);
- }
- }
-
- ov_clear(&vf);
-
- fprintf(stderr,"Done.\n");
- return(0);
-}
-
-</b></pre>
- </td>
-</tr>
-</table>
-
-
-<br><br>
-<hr noshade>
-<table border=0 width=100%>
-<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
-<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
-</tr><tr>
-<td><p class=tiny>vorbisfile documentation</p></td>
-<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
-</tr>
-</table>
-
-</body>
-
-</html>
diff --git a/doc/vorbisword2.png b/doc/vorbisword2.png
deleted file mode 100644
index 12e3d316..00000000
--- a/doc/vorbisword2.png
+++ /dev/null
Binary files differ
diff --git a/doc/wait.png b/doc/wait.png
deleted file mode 100644
index 2d10af60..00000000
--- a/doc/wait.png
+++ /dev/null
Binary files differ
diff --git a/doc/white-ogg.png b/doc/white-ogg.png
deleted file mode 100644
index 2694296b..00000000
--- a/doc/white-ogg.png
+++ /dev/null
Binary files differ
diff --git a/doc/white-xifish.png b/doc/white-xifish.png
deleted file mode 100644
index ab25cc8f..00000000
--- a/doc/white-xifish.png
+++ /dev/null
Binary files differ
diff --git a/examples/.cvsignore b/examples/.cvsignore
deleted file mode 100644
index 1eb3972d..00000000
--- a/examples/.cvsignore
+++ /dev/null
@@ -1,9 +0,0 @@
-Makefile
-Makefile.in
-.libs
-.deps
-encoder_example
-decoder_example
-chaining_example
-vorbisfile_example
-seeking_example
diff --git a/examples/Makefile.am b/examples/Makefile.am
deleted file mode 100644
index 18063f7c..00000000
--- a/examples/Makefile.am
+++ /dev/null
@@ -1,27 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-AUTOMAKE_OPTIONS = foreign
-
-INCLUDES = -I$(top_srcdir)/include @OGG_CFLAGS@
-
-noinst_PROGRAMS = decoder_example encoder_example chaining_example\
- vorbisfile_example seeking_example
-
-LDFLAGS = -static
-LDADD = ../lib/libvorbis.la
-
-decoder_example_SOURCES = decoder_example.c
-encoder_example_SOURCES = encoder_example.c
-encoder_example_LDADD = ../lib/libvorbisenc.la ../lib/libvorbis.la
-chaining_example_SOURCES = chaining_example.c
-chaining_example_LDADD = ../lib/libvorbisfile.la ../lib/libvorbis.la
-vorbisfile_example_SOURCES = vorbisfile_example.c
-vorbisfile_example_LDADD = ../lib/libvorbisfile.la ../lib/libvorbis.la
-seeking_example_SOURCES = seeking_example.c
-seeking_example_LDADD = ../lib/libvorbisfile.la ../lib/libvorbis.la
-
-debug:
- $(MAKE) all CFLAGS="@DEBUG@"
-
-profile:
- $(MAKE) all CFLAGS="@PROFILE@"
diff --git a/examples/chaining_example.c b/examples/chaining_example.c
deleted file mode 100644
index 874f363e..00000000
--- a/examples/chaining_example.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: illustrate simple use of chained bitstream and vorbisfile.a
- last mod: $Id: chaining_example.c,v 1.10 2001/08/13 01:36:55 xiphmont Exp $
-
- ********************************************************************/
-
-#include <vorbis/codec.h>
-#include <vorbis/vorbisfile.h>
-
-int main(){
- OggVorbis_File ov;
- int i;
-
- /* open the file/pipe on stdin */
- if(ov_open(stdin,&ov,NULL,-1)<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 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 ",(long)(ov_raw_total(&ov,i)));
- printf(" play time: %lds\n",(long)ov_time_total(&ov,i));
- }
-
- ov_clear(&ov);
- return 0;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/decoder_example.c b/examples/decoder_example.c
deleted file mode 100644
index 2eba0037..00000000
--- a/examples/decoder_example.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: simple example decoder
- last mod: $Id: decoder_example.c,v 1.20 2001/05/27 20:33:18 xiphmont Exp $
-
- ********************************************************************/
-
-/* 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(macintosh) && 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;
-
-int main(int argc, char **argv){
- 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__)
-
- 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 reead
- and submit data until we get our two pacakets, 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);
- }
- vorbis_synthesis_headerin(&vi,&vc,&op);
- 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. */
- vorbis_synthesis_init(&vd,&vi); /* 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=mono[j]*32767.f;
-#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;
- }
- }
-
- /* clean up this logical bitstream; before exit we see if we're
- followed by another [chained] */
-
- ogg_stream_clear(&os);
-
- /* 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);
- 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);
-}
-
diff --git a/examples/encoder_example.c b/examples/encoder_example.c
deleted file mode 100644
index d252c1aa..00000000
--- a/examples/encoder_example.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: simple example encoder
- last mod: $Id: encoder_example.c,v 1.21 2001/02/26 03:50:38 xiphmont Exp $
-
- ********************************************************************/
-
-/* takes a stereo 16bit 44.1kHz WAV file from stdin and encodes it into
- a Vorbis bitstream */
-
-/* Note that this is POSIX, not ANSI, code */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <math.h>
-#include <vorbis/vorbisenc.h>
-
-#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */
-#include <io.h>
-#include <fcntl.h>
-#endif
-
-#if defined(macintosh) && defined(__MWERKS__)
-#include <console.h> /* CodeWarrior's Mac "command-line" support */
-#endif
-
-#define READ 1024
-signed char readbuffer[READ*4+44]; /* out of the data segment, not the stack */
-
-int main(){
- ogg_stream_state os; /* take physical pages, weld into a logical
- stream of packets */
- ogg_page og; /* one Ogg bitstream page. Vorbis packets are inside */
- ogg_packet op; /* one raw packet of data for decode */
-
- vorbis_info vi; /* struct that stores all the static vorbis bitstream
- settings */
- vorbis_comment vc; /* struct that stores all the user comments */
-
- vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
- vorbis_block vb; /* local working space for packet->PCM decode */
-
- int eos=0;
-
-#if defined(macintosh) && defined(__MWERKS__)
- int argc = 0;
- char **argv = NULL;
- argc = ccommand(&argv); /* get a "command line" from the Mac user */
- /* this also lets the user set stdin and stdout */
-#endif
-
- /* we cheat on the WAV header; we just bypass 44 bytes and never
- verify that it matches 16bit/stereo/44.1kHz. This is just an
- example, after all. */
-
-#ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */
- /* Beware the evil ifdef. We avoid these where we can, but this one we
- cannot. Don't add any more, you'll probably go to hell if you do. */
- _setmode( _fileno( stdin ), _O_BINARY );
- _setmode( _fileno( stdout ), _O_BINARY );
-#endif
-
-
- fread(readbuffer,1,44,stdin);
-
- /********** Encode setup ************/
-
- /* choose an encoding mode */
- /* (mode 0: 44kHz stereo uncoupled, roughly 128kbps VBR) */
- vorbis_info_init(&vi);
- vorbis_encode_init(&vi,2,44100, -1, 128000, -1);
-
- /* add a comment */
- vorbis_comment_init(&vc);
- vorbis_comment_add(&vc,"Track encoded by encoder_example.c");
-
- /* set up the analysis state and auxiliary encoding storage */
- vorbis_analysis_init(&vd,&vi);
- vorbis_block_init(&vd,&vb);
-
- /* set up our packet->stream encoder */
- /* pick a random serial number; that way we can more likely build
- chained streams just by concatenation */
- srand(time(NULL));
- ogg_stream_init(&os,rand());
-
- /* Vorbis streams begin with three headers; the initial header (with
- most of the codec setup parameters) which is mandated by the Ogg
- bitstream spec. The second header holds any comment fields. The
- third header holds the bitstream codebook. We merely need to
- make the headers, then pass them to libvorbis one at a time;
- libvorbis handles the additional Ogg bitstream constraints */
-
- {
- ogg_packet header;
- ogg_packet header_comm;
- ogg_packet header_code;
-
- vorbis_analysis_headerout(&vd,&vc,&header,&header_comm,&header_code);
- ogg_stream_packetin(&os,&header); /* automatically placed in its own
- page */
- ogg_stream_packetin(&os,&header_comm);
- ogg_stream_packetin(&os,&header_code);
-
- /* We don't have to write out here, but doing so makes streaming
- * much easier, so we do, flushing ALL pages. This ensures the actual
- * audio data will start on a new page
- */
- while(!eos){
- int result=ogg_stream_flush(&os,&og);
- if(result==0)break;
- fwrite(og.header,1,og.header_len,stdout);
- fwrite(og.body,1,og.body_len,stdout);
- }
-
- }
-
- while(!eos){
- long i;
- long bytes=fread(readbuffer,1,READ*4,stdin); /* stereo hardwired here */
-
- if(bytes==0){
- /* end of file. this can be done implicitly in the mainline,
- but it's easier to see here in non-clever fashion.
- Tell the library we're at end of stream so that it can handle
- the last frame and mark end of stream in the output properly */
- vorbis_analysis_wrote(&vd,0);
-
- }else{
- /* data to encode */
-
- /* expose the buffer to submit data */
- float **buffer=vorbis_analysis_buffer(&vd,READ);
-
- /* uninterleave samples */
- for(i=0;i<bytes/4;i++){
- buffer[0][i]=((readbuffer[i*4+1]<<8)|
- (0x00ff&(int)readbuffer[i*4]))/32768.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 */
- vorbis_analysis(&vb,&op);
-
- /* weld the packet into the bitstream */
- ogg_stream_packetin(&os,&op);
-
- /* write out pages (if any) */
- while(!eos){
- int result=ogg_stream_pageout(&os,&og);
- if(result==0)break;
- fwrite(og.header,1,og.header_len,stdout);
- fwrite(og.body,1,og.body_len,stdout);
-
- /* this could be set above, but for illustrative purposes, I do
- it here (to show that vorbis does know where the stream ends) */
-
- if(ogg_page_eos(&og))eos=1;
-
- }
- }
- }
-
- /* clean up and exit. vorbis_info_clear() must be called last */
-
- ogg_stream_clear(&os);
- vorbis_block_clear(&vb);
- vorbis_dsp_clear(&vd);
- vorbis_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);
-}
-
diff --git a/examples/seeking_example.c b/examples/seeking_example.c
deleted file mode 100644
index 4f2967eb..00000000
--- a/examples/seeking_example.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: illustrate seeking, and test it too
- last mod: $Id: seeking_example.c,v 1.8 2001/05/27 06:43:58 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "vorbis/codec.h"
-#include "vorbis/vorbisfile.h"
-#include "../lib/misc.h"
-
-
-void _verify(OggVorbis_File *ov,ogg_int64_t pos,
- ogg_int64_t val,ogg_int64_t pcmval,
- ogg_int64_t pcmlength,
- char *bigassbuffer){
- int j;
- long bread;
- char buffer[4096];
- int dummy;
-
- /* verify the raw position, the pcm position and position decode */
- if(val!=-1 && ov_raw_tell(ov)<val){
- printf("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){
- printf("pcm position out of tolerance: requested %ld, got %ld\n",
- (long)pcmval,(long)ov_pcm_tell(ov));
- exit(1);
- }
- pos=ov_pcm_tell(ov);
- if(pos<0 || pos>pcmlength){
- printf("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*2]){
- printf("data position after seek doesn't match pcm position\n");
- exit(1);
- }
- }
-}
-
-int main(){
- OggVorbis_File ov;
- int i,ret;
- ogg_int64_t pcmlength;
- char *bigassbuffer;
- int dummy;
-
- /* open the file/pipe on stdin */
- if(ov_open(stdin,&ov,NULL,-1)<0){
- printf("Could not open input as an OggVorbis file.\n\n");
- exit(1);
- }
-
- 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){
- printf("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 */
- printf("loading....\n");
- fflush(stdout);
- pcmlength=ov_pcm_total(&ov,-1);
- bigassbuffer=malloc(pcmlength*2); /* w00t */
- i=0;
- while(i<pcmlength*2){
- int ret=ov_read(&ov,bigassbuffer+i,pcmlength*2-i,1,1,1,&dummy);
- if(ret<0)continue;
- if(ret){
- i+=ret;
- }else{
- pcmlength=i/2;
- }
- }
-
- /* Exercise all the real seeking cases; ov_raw_seek,
- ov_pcm_seek_page and ov_pcm_seek. time seek is just a wrapper
- on pcm_seek */
- {
- ogg_int64_t length=ov.end;
- printf("testing 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;
- ogg_int64_t pos;
- printf("\r\t%d [raw position %ld]... ",i,(long)val);
- fflush(stdout);
- ret=ov_raw_seek(&ov,val);
- if(ret<0){
- printf("seek failed: %d\n",ret);
- exit(1);
- }
-
- _verify(&ov,pos,val,-1,pcmlength,bigassbuffer);
-
- }
- }
-
- printf("\r");
- {
- ogg_int64_t length=ov.end;
- printf("testing pcm page seeking to random places in %ld samples....\n",
- (long)pcmlength);
-
- for(i=0;i<1000;i++){
- ogg_int64_t val=(double)rand()/RAND_MAX*pcmlength;
- ogg_int64_t pos;
- printf("\r\t%d [pcm position %ld]... ",i,(long)val);
- fflush(stdout);
- ret=ov_pcm_seek_page(&ov,val);
- if(ret<0){
- printf("seek failed: %d\n",ret);
- exit(1);
- }
-
- _verify(&ov,pos,-1,val,pcmlength,bigassbuffer);
-
- }
- }
-
- printf("\r");
- {
- ogg_int64_t length=ov.end;
- printf("testing pcm exact seeking to random places in %ld samples....\n",
- (long)pcmlength);
-
- for(i=0;i<1000;i++){
- ogg_int64_t val=(double)rand()/RAND_MAX*pcmlength;
- ogg_int64_t pos;
- printf("\r\t%d [pcm position %ld]... ",i,(long)val);
- fflush(stdout);
- ret=ov_pcm_seek(&ov,val);
- if(ret<0){
- printf("seek failed: %d\n",ret);
- exit(1);
- }
- if(ov_pcm_tell(&ov)!=val){
- printf("Decalred position didn't perfectly match request: %ld != %ld\n",
- (long)val,(long)ov_pcm_tell(&ov));
- exit(1);
- }
-
- _verify(&ov,pos,-1,val,pcmlength,bigassbuffer);
-
- }
- }
-
- printf("\r \nOK.\n\n");
-
-
- }else{
- printf("Standard input was not seekable.\n");
- }
-
- ov_clear(&ov);
- return 0;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/vorbisfile_example.c b/examples/vorbisfile_example.c
deleted file mode 100644
index 414b0604..00000000
--- a/examples/vorbisfile_example.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: simple example decoder using vorbisfile
- last mod: $Id: vorbisfile_example.c,v 1.5 2001/02/26 03:50:38 xiphmont Exp $
-
- ********************************************************************/
-
-/* 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(int argc, char **argv){
- 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(stdin, &vf, NULL, 0) < 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) {
- /* 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);
-}
-
diff --git a/include/.cvsignore b/include/.cvsignore
deleted file mode 100644
index 282522db..00000000
--- a/include/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/include/Makefile.am b/include/Makefile.am
deleted file mode 100644
index 756b65f7..00000000
--- a/include/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-AUTOMAKE_OPTIONS = foreign
-
-SUBDIRS = vorbis
diff --git a/include/vorbis/.cvsignore b/include/vorbis/.cvsignore
deleted file mode 100644
index 282522db..00000000
--- a/include/vorbis/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/include/vorbis/Makefile.am b/include/vorbis/Makefile.am
deleted file mode 100644
index 794e8cdb..00000000
--- a/include/vorbis/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-AUTOMAKE_OPTIONS = foreign
-
-includedir = $(prefix)/include/vorbis
-
-include_HEADERS = codec.h vorbisfile.h vorbisenc.h
-
-
diff --git a/include/vorbis/codec.h b/include/vorbis/codec.h
deleted file mode 100644
index 205cebc8..00000000
--- a/include/vorbis/codec.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: libvorbis codec headers
- last mod: $Id: codec.h,v 1.38 2001/05/27 06:43:59 xiphmont Exp $
-
- ********************************************************************/
-
-#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 independant from other vorbis_blocks belonging to
-that logical bitstream. *************************************************/
-
-struct alloc_chain{
- void *ptr;
- struct alloc_chain *next;
-};
-
-/* vorbis_info contains all the setup information specific to the
- specific compression/decompression mode in progress (eg,
- 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 void vorbis_comment_init(vorbis_comment *vc);
-extern void vorbis_comment_add(vorbis_comment *vc, char *comment);
-extern void vorbis_comment_add_tag(vorbis_comment *vc,
- char *tag, char *contents);
-extern char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count);
-extern int vorbis_comment_query_count(vorbis_comment *vc, 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);
-
-/* 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);
-
-/* Vorbis PRIMITIVES: synthesis layer *******************************/
-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(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_read(vorbis_dsp_state *v,int samples);
-extern long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op);
-
-/* 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
-
diff --git a/include/vorbis/vorbisenc.h b/include/vorbis/vorbisenc.h
deleted file mode 100644
index 90a6d3b9..00000000
--- a/include/vorbis/vorbisenc.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: vorbis encode-engine setup
- last mod: $Id: vorbisenc.h,v 1.5 2001/08/13 01:36:56 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _OV_ENC_H_
-#define _OV_ENC_H_
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-#include "codec.h"
-
-extern int vorbis_encode_init(vorbis_info *vi,
- long channels,
- long rate,
-
- long max_bitrate,
- long nominal_bitrate,
- long min_bitrate);
-
-extern int vorbis_encode_init_vbr(vorbis_info *vi,
- long channels,
- long rate,
-
- float /* quality level from 0. (lo) to 1. (hi) */
- );
-
-extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg);
-
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-
-
diff --git a/include/vorbis/vorbisfile.h b/include/vorbis/vorbisfile.h
deleted file mode 100644
index ac07fd3f..00000000
--- a/include/vorbis/vorbisfile.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: stdio-based convenience library for opening/seeking/decoding
- last mod: $Id: vorbisfile.h,v 1.14 2001/05/27 06:43:59 xiphmont Exp $
-
- ********************************************************************/
-
-#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;
-
-#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;
- 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_open(FILE *f,OggVorbis_File *vf,char *initial,long ibytes);
-extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf,
- char *initial, long ibytes, ov_callbacks callbacks);
-
-extern int ov_test(FILE *f,OggVorbis_File *vf,char *initial,long ibytes);
-extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf,
- 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,long 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 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(OggVorbis_File *vf,char *buffer,int length,
- int bigendianp,int word,int sgned,int *bitstream);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
-
-
diff --git a/lib/.cvsignore b/lib/.cvsignore
deleted file mode 100644
index 0839b71d..00000000
--- a/lib/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.la
-*.lo
-.libs
-.deps
-Makefile
-Makefile.in
diff --git a/lib/Makefile.am b/lib/Makefile.am
deleted file mode 100644
index 8751b151..00000000
--- a/lib/Makefile.am
+++ /dev/null
@@ -1,43 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-AUTOMAKE_OPTIONS = foreign
-
-SUBDIRS = modes books
-
-INCLUDES = -I$(top_srcdir)/include @OGG_CFLAGS@
-
-lib_LTLIBRARIES = libvorbis.la libvorbisfile.la libvorbisenc.la
-
-libvorbis_la_SOURCES = mdct.c smallft.c block.c envelope.c window.c lsp.c \
- lpc.c analysis.c synthesis.c psy.c info.c time0.c \
- floor1.c floor0.c\
- res0.c mapping0.c registry.c codebook.c sharedbook.c\
- lookup.c bitbuffer.c\
- envelope.h lpc.h lsp.h codebook.h misc.h psy.h\
- masking.h iir.h os.h mdct.h smallft.h\
- registry.h scales.h window.h lookup.h lookup_data.h\
- codec_internal.h backends.h bitbuffer.h
-libvorbis_la_LDFLAGS = -version-info @V_LIB_CURRENT@:@V_LIB_REVISION@:@V_LIB_AGE@
-
-libvorbisfile_la_SOURCES = vorbisfile.c
-libvorbisfile_la_LDFLAGS = -version-info @VF_LIB_CURRENT@:@VF_LIB_REVISION@:@VF_LIB_AGE@
-
-libvorbisenc_la_SOURCES = vorbisenc.c
-libvorbisenc_la_LDFLAGS = -version-info @VE_LIB_CURRENT@:@VE_LIB_REVISION@:@VE_LIB_AGE@
-
-EXTRA_PROGRAMS = barkmel tone psytune
-CLEANFILES = $(EXTRA_PROGRAMS)
-
-barkmel_SOURCES = barkmel.c
-tone_SOURCES = tone.c
-psytune_SOURCES = psytune.c
-psytune_LDFLAGS = -static
-psytune_LDADD = libvorbis.la
-
-EXTRA_DIST = lookups.pl iir.c
-
-debug:
- $(MAKE) all CFLAGS="@DEBUG@"
-
-profile:
- $(MAKE) all CFLAGS="@PROFILE@"
diff --git a/lib/analysis.c b/lib/analysis.c
deleted file mode 100644
index 700bc3bd..00000000
--- a/lib/analysis.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: single-block PCM analysis mode dispatch
- last mod: $Id: analysis.c,v 1.46 2001/08/13 01:36:56 xiphmont Exp $
-
- ********************************************************************/
-
-#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"
-
-int analysis_noisy=1;
-
-/* decides between modes, dispatches to the appropriate mapping. */
-int vorbis_analysis(vorbis_block *vb,ogg_packet *op){
- vorbis_dsp_state *vd=vb->vd;
- backend_lookup_state *b=vd->backend_state;
- vorbis_info *vi=vd->vi;
- codec_setup_info *ci=vi->codec_setup;
- int type,ret;
- int mode=0;
-
- vb->glue_bits=0;
- vb->time_bits=0;
- vb->floor_bits=0;
- vb->res_bits=0;
-
- /* first things first. Make sure encode is ready */
- oggpack_reset(&vb->opb);
- /* Encode the packet type */
- oggpack_write(&vb->opb,0,1);
-
- /* currently lazy. Short block dispatches to 0, long to 1. */
-
- if(vb->W &&ci->modes>1)mode=1;
- type=ci->map_type[ci->mode_param[mode]->mapping];
- vb->mode=mode;
-
- /* Encode frame mode, pre,post windowsize, then dispatch */
- oggpack_write(&vb->opb,mode,b->modebits);
- if(vb->W){
- oggpack_write(&vb->opb,vb->lW,1);
- oggpack_write(&vb->opb,vb->nW,1);
- /*fprintf(stderr,"*");
- }else{
- fprintf(stderr,".");*/
- }
-
- if((ret=_mapping_P[type]->forward(vb,b->mode[mode])))
- return(ret);
-
- /* set up the packet wrapper */
-
- 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);
-}
-
-/* there was no great place to put this.... */
-void _analysis_output_always(char *base,int i,float *v,int n,int bark,int dB){
- int j;
- FILE *of;
- char buffer[80];
-
- /* if(i==5870){*/
- 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(dB && v[j]==0)
- fprintf(of,"\n\n");
- else{
- if(bark)
- fprintf(of,"%g ",toBARK(22050.f*j/n));
- else
- fprintf(of,"%g ",(double)j);
-
- if(dB){
- fprintf(of,"%g\n",todB(v+j));
- }else{
- fprintf(of,"%g\n",v[j]);
- }
- }
- }
- fclose(of);
- /* } */
-}
-
-void _analysis_output(char *base,int i,float *v,int n,int bark,int dB){
-#ifdef ANALYSIS
- if(analysis_noisy)_analysis_output_always(base,i,v,n,bark,dB);
-#endif
-}
-
diff --git a/lib/backends.h b/lib/backends.h
deleted file mode 100644
index 6a800485..00000000
--- a/lib/backends.h
+++ /dev/null
@@ -1,193 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: libvorbis backend and mapping structures; needed for
- static mode headers
- last mod: $Id: backends.h,v 1.10 2001/08/13 01:36:56 xiphmont Exp $
-
- ********************************************************************/
-
-/* this is exposed up here because we need it for static modes.
- Lookups for each backend aren't exposed because there's no reason
- to do so */
-
-#ifndef _vorbis_backend_h_
-#define _vorbis_backend_h_
-
-#include "codec_internal.h"
-
-/* this would all be simpler/shorter with templates, but.... */
-/* Transform backend generic *************************************/
-
-/* only mdct right now. Flesh it out more if we ever transcend mdct
- in the transform domain */
-
-/* Time backend generic ******************************************/
-typedef struct{
- void (*pack) (vorbis_info_time *,oggpack_buffer *);
- vorbis_info_time *(*unpack)(vorbis_info *,oggpack_buffer *);
- vorbis_look_time *(*look) (vorbis_dsp_state *,vorbis_info_mode *,
- vorbis_info_time *);
- vorbis_info_time *(*copy_info)(vorbis_info_time *);
-
- void (*free_info) (vorbis_info_time *);
- void (*free_look) (vorbis_look_time *);
- int (*forward) (struct vorbis_block *,vorbis_look_time *,
- float *,float *);
- int (*inverse) (struct vorbis_block *,vorbis_look_time *,
- float *,float *);
-} vorbis_func_time;
-
-typedef struct{
- int dummy;
-} vorbis_info_time0;
-
-/* Floor backend generic *****************************************/
-typedef struct{
- void (*pack) (vorbis_info_floor *,oggpack_buffer *);
- vorbis_info_floor *(*unpack)(vorbis_info *,oggpack_buffer *);
- vorbis_look_floor *(*look) (vorbis_dsp_state *,vorbis_info_mode *,
- vorbis_info_floor *);
- vorbis_info_floor *(*copy_info)(vorbis_info_floor *);
- void (*free_info) (vorbis_info_floor *);
- void (*free_look) (vorbis_look_floor *);
- int (*forward) (struct vorbis_block *,vorbis_look_floor *,
- float *, const float *, /* in */
- const float *, const float *, /* in */
- float *); /* out */
- 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;
-
- int twofitminsize;
- int twofitminused;
- int twofitweight;
- float twofitatten;
- int unusedminsize;
- int unusedmin_n;
-
- 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_mode *,
- vorbis_info_residue *);
- vorbis_info_residue *(*copy_info)(vorbis_info_residue *);
- void (*free_info) (vorbis_info_residue *);
- void (*free_look) (vorbis_look_residue *);
- long **(*class) (struct vorbis_block *,vorbis_look_residue *,
- float **,int *,int);
- int (*forward) (struct vorbis_block *,vorbis_look_residue *,
- float **,float **,int *,int,int,long **);
- 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 groupbook; /* huffbook for partitioning */
- int secondstages[64]; /* expanded out to pointers in lookup */
- int booklist[256]; /* list of second stage books */
-
- /* encode-only heuristic settings */
- float entmax[64]; /* book entropy threshholds*/
- float ampmax[64]; /* book amp threshholds*/
- int subgrp[64]; /* book heuristic subgroup size */
- int blimit[64]; /* subgroup position limits */
- int passlimit[32]; /* iteration limit per couple/quant pass */
-} vorbis_info_residue0;
-
-/* Mapping backend generic *****************************************/
-typedef struct{
- void (*pack) (vorbis_info *,vorbis_info_mapping *,
- oggpack_buffer *);
- vorbis_info_mapping *(*unpack)(vorbis_info *,oggpack_buffer *);
- vorbis_look_mapping *(*look) (vorbis_dsp_state *,vorbis_info_mode *,
- vorbis_info_mapping *);
- vorbis_info_mapping *(*copy_info)(vorbis_info_mapping *);
- void (*free_info) (vorbis_info_mapping *);
- void (*free_look) (vorbis_look_mapping *);
- int (*forward) (struct vorbis_block *vb,vorbis_look_mapping *);
- int (*inverse) (struct vorbis_block *vb,vorbis_look_mapping *);
-} vorbis_func_mapping;
-
-typedef struct vorbis_info_mapping0{
- int submaps; /* <= 16 */
- int chmuxlist[256]; /* up to 256 channels in a Vorbis stream */
-
- int timesubmap[16]; /* [mux] */
- int floorsubmap[16]; /* [mux] submap to floors */
- int residuesubmap[16]; /* [mux] submap to residue */
-
- int psy[2]; /* by blocktype; impulse/padding for short,
- transition/normal for long */
-
- int coupling_steps;
- int coupling_mag[256];
- int coupling_ang[256];
-} vorbis_info_mapping0;
-
-#endif
-
-
-
-
-
diff --git a/lib/barkmel.c b/lib/barkmel.c
deleted file mode 100644
index cf9dd4da..00000000
--- a/lib/barkmel.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: bark scale utility
- last mod: $Id: barkmel.c,v 1.8 2001/08/13 01:36:56 xiphmont Exp $
-
- ********************************************************************/
-
-#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);
-}
-
diff --git a/lib/bitbuffer.c b/lib/bitbuffer.c
deleted file mode 100644
index 60580443..00000000
--- a/lib/bitbuffer.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: flexible, delayed bitpacking abstraction
- last mod: $Id: bitbuffer.c,v 1.5 2001/02/26 03:50:41 xiphmont Exp $
-
- ********************************************************************/
-
-#include <string.h>
-#include <ogg/ogg.h>
-#include <vorbis/codec.h>
-#include "misc.h"
-#include "bitbuffer.h"
-
-/* done carefully to do two things:
- 1) no realloc
- 2) draws from our exact-size vorbis_block pool
-*/
-
-void bitbuf_init(vorbis_bitbuffer *vbb,vorbis_block *vb){
- memset(vbb,0,sizeof(vorbis_bitbuffer));
- vbb->vb=vb;
- vbb->first=vbb->last=_vorbis_block_alloc(vb,sizeof(vorbis_bitbuffer_chain));
- vbb->first->next=0; /* overengineering */
-}
-
-void bitbuf_write(vorbis_bitbuffer *vbb,unsigned long word,int length){
- vorbis_block *vb=vbb->vb;
- if(vbb->ptr>=_VBB_ALLOCSIZE){
- vbb->last->next=_vorbis_block_alloc(vb,sizeof(vorbis_bitbuffer_chain));
- vbb->last=vbb->last->next;
- vbb->last->next=0; /* overengineering */
- vbb->ptr=0;
- }
- vbb->last->words[vbb->ptr]=word;
- vbb->last->bits[vbb->ptr++]=length;
-}
-
-void bitbuf_pack(oggpack_buffer *dest,vorbis_bitbuffer *vbb){
- vorbis_bitbuffer_chain *vbc=vbb->first;
- int i;
-
- while(vbc->next){
- for(i=0;i<_VBB_ALLOCSIZE;i++)
- oggpack_write(dest,vbc->words[i],vbc->bits[i]);
- vbc=vbc->next;
- }
- for(i=0;i<vbb->ptr;i++)
- oggpack_write(dest,vbc->words[i],vbc->bits[i]);
-}
-
-/* codebook variants for encoding to the bitbuffer */
-
-int vorbis_book_bufencode(codebook *book, int a, vorbis_bitbuffer *b){
- bitbuf_write(b,book->codelist[a],book->c->lengthlist[a]);
- return(book->c->lengthlist[a]);
-}
-
diff --git a/lib/bitbuffer.h b/lib/bitbuffer.h
deleted file mode 100644
index 3d21baa4..00000000
--- a/lib/bitbuffer.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: flexible, delayed bitpacking abstraction
- last mod: $Id: bitbuffer.h,v 1.3 2001/02/26 03:50:41 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_BITBUF_
-#define _V_BITBUF_
-
-#include "codebook.h"
-
-#define _VBB_ALLOCSIZE 128
-typedef struct vorbis_bitbuffer_chain{
- ogg_uint32_t words[_VBB_ALLOCSIZE];
- int bits[_VBB_ALLOCSIZE];
- struct vorbis_bitbuffer_chain *next;
-} vorbis_bitbuffer_chain;
-
-typedef struct vorbis_bitbuffer{
- long ptr;
- vorbis_bitbuffer_chain *first;
- vorbis_bitbuffer_chain *last;
- vorbis_block *vb;
-} vorbis_bitbuffer;
-
-void bitbuf_init(vorbis_bitbuffer *vbb,vorbis_block *vb);
-extern void bitbuf_write(vorbis_bitbuffer *vbb,unsigned long word,int length);
-extern void bitbuf_pack(oggpack_buffer *dest,vorbis_bitbuffer *source);
-
-
-extern int vorbis_book_bufencode(codebook *book, int a, vorbis_bitbuffer *b);
-
-#endif
diff --git a/lib/block.c b/lib/block.c
deleted file mode 100644
index a5b8bfe5..00000000
--- a/lib/block.c
+++ /dev/null
@@ -1,810 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: PCM data vector blocking, windowing and dis/reassembly
- last mod: $Id: block.c,v 1.49 2001/08/13 01:36:56 xiphmont Exp $
-
- 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 "envelope.h"
-#include "mdct.h"
-#include "lpc.h"
-#include "registry.h"
-#include "codebook.h"
-#include "misc.h"
-#include "os.h"
-#include "psy.h"
-
-static int ilog2(unsigned int v){
- int ret=0;
- while(v>1){
- ret++;
- v>>=1;
- }
- return(ret);
-}
-
-/* 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){
- memset(vb,0,sizeof(vorbis_block));
- vb->vd=v;
- vb->localalloc=0;
- vb->localstore=NULL;
- if(v->analysisp){
- oggpack_writeinit(&vb->opb);
- vb->internal=_ogg_calloc(1,sizeof(vorbis_block_internal));
- ((vorbis_block_internal *)vb->internal)->ampmax=-9999;
- }
-
- 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(struct alloc_chain));
- 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(struct alloc_chain));
- _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){
- if(vb->vd)
- if(vb->vd->analysisp)
- oggpack_writeclear(&vb->opb);
- _vorbis_block_ripcord(vb);
- if(vb->localstore)_ogg_free(vb->localstore);
- if(vb->internal)_ogg_free(vb->internal);
-
- memset(vb,0,sizeof(vorbis_block));
- 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;
- backend_lookup_state *b=NULL;
-
- memset(v,0,sizeof(vorbis_dsp_state));
- b=v->backend_state=_ogg_calloc(1,sizeof(backend_lookup_state));
-
- v->vi=vi;
- b->modebits=ilog2(ci->modes);
-
- b->transform[0]=_ogg_calloc(VI_TRANSFORMB,sizeof(vorbis_look_transform *));
- b->transform[1]=_ogg_calloc(VI_TRANSFORMB,sizeof(vorbis_look_transform *));
-
- /* 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]);
- mdct_init(b->transform[1][0],ci->blocksizes[1]);
-
- b->window[0][0][0]=_ogg_calloc(VI_WINDOWB,sizeof(float *));
- b->window[0][0][1]=b->window[0][0][0];
- b->window[0][1][0]=b->window[0][0][0];
- b->window[0][1][1]=b->window[0][0][0];
- b->window[1][0][0]=_ogg_calloc(VI_WINDOWB,sizeof(float *));
- b->window[1][0][1]=_ogg_calloc(VI_WINDOWB,sizeof(float *));
- b->window[1][1][0]=_ogg_calloc(VI_WINDOWB,sizeof(float *));
- b->window[1][1][1]=_ogg_calloc(VI_WINDOWB,sizeof(float *));
-
- for(i=0;i<VI_WINDOWB;i++){
- b->window[0][0][0][i]=
- _vorbis_window(i,ci->blocksizes[0],ci->blocksizes[0]/2,ci->blocksizes[0]/2);
- b->window[1][0][0][i]=
- _vorbis_window(i,ci->blocksizes[1],ci->blocksizes[0]/2,ci->blocksizes[0]/2);
- b->window[1][0][1][i]=
- _vorbis_window(i,ci->blocksizes[1],ci->blocksizes[0]/2,ci->blocksizes[1]/2);
- b->window[1][1][0][i]=
- _vorbis_window(i,ci->blocksizes[1],ci->blocksizes[1]/2,ci->blocksizes[0]/2);
- b->window[1][1][1][i]=
- _vorbis_window(i,ci->blocksizes[1],ci->blocksizes[1]/2,ci->blocksizes[1]/2);
- }
-
- if(encp){ /* encode/decode differ here */
- /* finish the codebooks */
- b->fullbooks=_ogg_calloc(ci->books,sizeof(codebook));
- for(i=0;i<ci->books;i++)
- vorbis_book_init_encode(b->fullbooks+i,ci->book_param[i]);
- v->analysisp=1;
- }else{
- /* finish the codebooks */
- b->fullbooks=_ogg_calloc(ci->books,sizeof(codebook));
- for(i=0;i<ci->books;i++)
- vorbis_book_init_decode(b->fullbooks+i,ci->book_param[i]);
- }
-
- /* initialize the storage vectors to a decent size greater than the
- minimum */
-
- v->pcm_storage=8192; /* we'll assume later that we have
- a minimum of twice the blocksize of
- accumulated samples in analysis */
- v->pcm=_ogg_malloc(vi->channels*sizeof(float *));
- v->pcmret=_ogg_malloc(vi->channels*sizeof(float *));
- {
- int i;
- for(i=0;i<vi->channels;i++)
- v->pcm[i]=_ogg_calloc(v->pcm_storage,sizeof(float));
- }
-
- /* 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 mapping/backend lookups */
- b->mode=_ogg_calloc(ci->modes,sizeof(vorbis_look_mapping *));
- for(i=0;i<ci->modes;i++){
- int mapnum=ci->mode_param[i]->mapping;
- int maptype=ci->map_type[mapnum];
- b->mode[i]=_mapping_P[maptype]->look(v,ci->mode_param[i],
- ci->map_param[mapnum]);
- }
-
- return(0);
-}
-
-/* arbitrary settings and spec-mandated numbers get filled in here */
-int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi){
- backend_lookup_state *b=NULL;
-
- _vds_shared_init(v,vi,1);
- b=v->backend_state;
- b->psy_g_look=_vp_global_look(vi);
-
- /* Initialize the envelope state storage */
- b->ve=_ogg_calloc(1,sizeof(envelope_lookup));
- _ve_envelope_init(b->ve,vi);
- return(0);
-}
-
-void vorbis_dsp_clear(vorbis_dsp_state *v){
- int i,j,k;
- if(v){
- vorbis_info *vi=v->vi;
- codec_setup_info *ci=(vi?vi->codec_setup:NULL);
- backend_lookup_state *b=v->backend_state;
-
- if(b){
- if(b->window[0][0][0]){
- for(i=0;i<VI_WINDOWB;i++)
- if(b->window[0][0][0][i])_ogg_free(b->window[0][0][0][i]);
- _ogg_free(b->window[0][0][0]);
-
- for(j=0;j<2;j++)
- for(k=0;k<2;k++){
- for(i=0;i<VI_WINDOWB;i++)
- if(b->window[1][j][k][i])_ogg_free(b->window[1][j][k][i]);
- _ogg_free(b->window[1][j][k]);
- }
- }
-
- 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->psy_g_look)_vp_global_free(b->psy_g_look);
-
- }
-
- if(v->pcm){
- 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);
- }
-
- /* free mode lookups; these are actually vorbis_look_mapping structs */
- if(ci){
- for(i=0;i<ci->modes;i++){
- int mapnum=ci->mode_param[i]->mapping;
- int maptype=ci->map_type[mapnum];
- if(b && b->mode)_mapping_P[maptype]->free_look(b->mode[i]);
- }
- /* free codebooks */
- for(i=0;i<ci->books;i++)
- if(b && b->fullbooks)vorbis_book_clear(b->fullbooks+i);
- }
-
- if(b){
- if(b->mode)_ogg_free(b->mode);
- if(b->fullbooks)_ogg_free(b->fullbooks);
-
- /* 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(vorbis_dsp_state));
- }
-}
-
-float **vorbis_analysis_buffer(vorbis_dsp_state *v, int vals){
- int i;
- vorbis_info *vi=v->vi;
- backend_lookup_state *b=v->backend_state;
-
- /* free header, header1, header2 */
- if(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(float));
- }
- }
-
- 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=32;
- float *lpc=alloca(order*sizeof(float));
- float *work=alloca(v->pcm_current*sizeof(float));
- 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);
-
- /* 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;
- /*backend_lookup_state *b=v->backend_state;*/
-
- if(vals<=0){
- int order=32;
- int i;
- float *lpc=alloca(order*sizeof(float));
-
- /* 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 full block 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]*2);
- v->eofflag=v->pcm_current;
- v->pcm_current+=ci->blocksizes[1]*2;
-
- 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(float));
-
- }
- }
- }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;
- backend_lookup_state *b=v->backend_state;
- vorbis_look_psy_global *g=b->psy_g_look;
- vorbis_info_psy_global *gi=ci->psy_g_param;
- long beginW=v->centerW-ci->blocksizes[v->W]/2,centerNext;
-
- /* 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 */
-
- if(ci->blocksizes[0]<ci->blocksizes[1]){
- long largebound;
- long bp;
-
- if(v->W)
- /* min boundary; nW large, next small */
- largebound=v->centerW+ci->blocksizes[1]*3/4+ci->blocksizes[0]/4;
- else
- /* min boundary; nW large, next small */
- largebound=v->centerW+ci->blocksizes[1]/2+ci->blocksizes[0]/2;
-
- bp=_ve_envelope_search(v,largebound);
- if(bp==-1)return(0); /* not enough data currently to search for a
- full long block */
- v->nW=bp;
-
- }else
- v->nW=0;
-
- 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);
- if(v->W){
- vb->lW=v->lW;
- vb->W=v->W;
- vb->nW=v->nW;
- }else{
- vb->lW=0;
- vb->W=v->W;
- vb->nW=0;
- }
- 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 */
- {
- vorbis_block_internal *vbi=(vorbis_block_internal *)vb->internal;
-
- /* 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(float *)*vi->channels);
- vbi->pcmdelay=_vorbis_block_alloc(vb,sizeof(float *)*vi->channels);
- for(i=0;i<vi->channels;i++){
- vbi->pcmdelay[i]=
- _vorbis_block_alloc(vb,(vb->pcmend+beginW)*sizeof(float));
- memcpy(vbi->pcmdelay[i],v->pcm[i],(vb->pcmend+beginW)*sizeof(float));
- vb->pcm[i]=vbi->pcmdelay[i]+beginW;
-
- /* before we added the delay
- vb->pcm[i]=_vorbis_block_alloc(vb,vb->pcmend*sizeof(float));
- memcpy(vb->pcm[i],v->pcm[i]+beginW,ci->blocksizes[v->W]*sizeof(float));
- */
-
- }
- }
-
- /* 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+gi->delaycache;
- 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(float));
-
-
- v->lW=v->W;
- v->W=v->nW;
- v->centerW=new_centerNext;
-
- v->sequence++;
-
- if(v->eofflag){
- v->eofflag-=movementW;
- /* 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_init(vorbis_dsp_state *v,vorbis_info *vi){
- _vds_shared_init(v,vi,0);
-
- v->pcm_returned=-1;
- v->granulepos=-1;
- v->sequence=-1;
-
- 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;
-
- /* Shift out any PCM that we returned previously */
- /* centerW is currently the center of the last block added */
-
- if(v->centerW>ci->blocksizes[1]/2 &&
- /* Quick additional hack; to avoid *alot* of shifts, use an
- oversized buffer. This increases memory usage, but doesn't make
- much difference wrt L1/L2 cache pressure. */
- v->pcm_returned>8192){
-
- /* don't shift too much; we need to have a minimum PCM buffer of
- 1/2 long block */
-
- int shiftPCM=v->centerW-ci->blocksizes[1]/2;
- shiftPCM=(v->pcm_returned<shiftPCM?v->pcm_returned:shiftPCM);
-
- v->pcm_current-=shiftPCM;
- v->centerW-=shiftPCM;
- v->pcm_returned-=shiftPCM;
-
- if(shiftPCM){
- int i;
- for(i=0;i<vi->channels;i++)
- memmove(v->pcm[i],v->pcm[i]+shiftPCM,
- v->pcm_current*sizeof(float));
- }
- }
-
- v->lW=v->W;
- v->W=vb->W;
- v->nW=-1;
-
- 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->sequence+1 != vb->sequence)v->granulepos=-1; /* out of sequence;
- lose count */
-
- v->sequence=vb->sequence;
-
- {
- int sizeW=ci->blocksizes[v->W];
- int centerW=v->centerW+ci->blocksizes[v->lW]/4+sizeW/4;
- int beginW=centerW-sizeW/2;
- int endW=beginW+sizeW;
- int beginSl;
- int endSl;
- int i,j;
-
- /* Do we have enough PCM/mult storage for the block? */
- if(endW>v->pcm_storage){
- /* expand the storage */
- v->pcm_storage=endW+ci->blocksizes[1];
-
- for(i=0;i<vi->channels;i++)
- v->pcm[i]=_ogg_realloc(v->pcm[i],v->pcm_storage*sizeof(float));
- }
-
- /* overlap/add PCM */
-
- switch(v->W){
- case 0:
- beginSl=0;
- endSl=ci->blocksizes[0]/2;
- break;
- case 1:
- beginSl=ci->blocksizes[1]/4-ci->blocksizes[v->lW]/4;
- endSl=beginSl+ci->blocksizes[v->lW]/2;
- break;
- default:
- return(-1);
- }
-
- for(j=0;j<vi->channels;j++){
- static int seq=0;
- float *pcm=v->pcm[j]+beginW;
- float *p=vb->pcm[j];
-
- /* the overlap/add section */
- for(i=beginSl;i<endSl;i++)
- pcm[i]+=p[i];
- /* the remaining section */
- for(;i<sizeW;i++)
- pcm[i]=p[i];
-
- _analysis_output("lapped",seq,pcm,sizeW,0,0);
- _analysis_output("buffered",seq++,v->pcm[j],sizeW+beginW,0,0);
-
- }
-
- /* 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=centerW;
-
- /* 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(v->granulepos==-1)
- if(vb->granulepos==-1){
- v->granulepos=0;
- }else{
- v->granulepos=vb->granulepos;
- }
- else{
- v->granulepos+=(centerW-v->centerW);
- if(vb->granulepos!=-1 && v->granulepos!=vb->granulepos){
-
- if(v->granulepos>vb->granulepos){
- long extra=v->granulepos-vb->granulepos;
-
- if(vb->eofflag){
- /* partial last frame. Strip the extra samples off */
- centerW-=extra;
- }else if(vb->sequence == 1){
- /* ^^^ argh, this can be 1 from seeking! */
-
-
- /* partial first frame. Discard extra leading samples */
- v->pcm_returned+=extra;
- if(v->pcm_returned>centerW)v->pcm_returned=centerW;
-
- }
-
- }/* else{ Shouldn't happen *unless* the bitstream is out of
- spec. Either way, believe the bitstream } */
- v->granulepos=vb->granulepos;
- }
- }
-
- /* Update, cleanup */
-
- v->centerW=centerW;
- v->pcm_current=endW;
-
- 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->centerW){
- 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->centerW-v->pcm_returned);
- }
- return(0);
-}
-
-int vorbis_synthesis_read(vorbis_dsp_state *v,int bytes){
- if(bytes && v->pcm_returned+bytes>v->centerW)return(OV_EINVAL);
- v->pcm_returned+=bytes;
- return(0);
-}
-
diff --git a/lib/books/.cvsignore b/lib/books/.cvsignore
deleted file mode 100644
index 282522db..00000000
--- a/lib/books/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/lib/books/Makefile b/lib/books/Makefile
deleted file mode 100644
index 3d244038..00000000
--- a/lib/books/Makefile
+++ /dev/null
@@ -1,202 +0,0 @@
-# Generated automatically from Makefile.in by configure.
-# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am
-
-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-SHELL = /bin/sh
-
-srcdir = .
-top_srcdir = ../..
-prefix = /usr/local
-exec_prefix = ${prefix}
-
-bindir = ${exec_prefix}/bin
-sbindir = ${exec_prefix}/sbin
-libexecdir = ${exec_prefix}/libexec
-datadir = ${prefix}/share
-sysconfdir = ${prefix}/etc
-sharedstatedir = ${prefix}/com
-localstatedir = ${prefix}/var
-libdir = ${exec_prefix}/lib
-infodir = ${prefix}/info
-mandir = ${prefix}/man
-includedir = ${prefix}/include
-oldincludedir = /usr/include
-
-DESTDIR =
-
-pkgdatadir = $(datadir)/libvorbis
-pkglibdir = $(libdir)/libvorbis
-pkgincludedir = $(includedir)/libvorbis
-
-top_builddir = ../..
-
-ACLOCAL = aclocal
-AUTOCONF = autoconf
-AUTOMAKE = automake
-AUTOHEADER = autoheader
-
-INSTALL = /usr/bin/install -c
-INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS)
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_SCRIPT = ${INSTALL_PROGRAM}
-transform = s,x,x,
-
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-host_alias = powerpc-unknown-linux-gnu
-host_triplet = powerpc-unknown-linux-gnu
-AS = @AS@
-CC = gcc
-CPP = gcc -E
-DEBUG = -g -Wall -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char
-DLLTOOL = @DLLTOOL@
-ECHO = echo
-EXEEXT =
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LN_S = ln -s
-MAKEINFO = makeinfo
-OBJDUMP = @OBJDUMP@
-OBJEXT = o
-OGG_CFLAGS = -I/include
-OGG_LIBS = -L/lib -logg
-PACKAGE = libvorbis
-PROFILE = -pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char
-RANLIB = ranlib
-STRIP = strip
-VERSION = 1.0beta4
-VE_LIB_AGE = 0
-VE_LIB_CURRENT = 0
-VE_LIB_REVISION = 1
-VF_LIB_AGE = 0
-VF_LIB_CURRENT = 0
-VF_LIB_REVISION = 1
-V_LIB_AGE = 0
-V_LIB_CURRENT = 0
-V_LIB_REVISION = 1
-pthread_lib = -lpthread
-
-AUTOMAKE_OPTIONS = foreign
-
-EXTRA_DIST = lsp12_0.vqh lsp12_1.vqh lsp30_0.vqh lsp30_1.vqh lsp9_0.vqh lsp9_1.vqh res0_128_1024_1.vqh res0_128_1024_2.vqh res0_128_1024_3.vqh res0_128_1024_4.vqh res0_128_1024_5.vqh res0_128_1024_6.vqh res0_128_1024_7.vqh res0_128_1024_8.vqh res0_128_1024_9.vqh res0_128_1024aux.vqh res0_128_128_1.vqh res0_128_128_2.vqh res0_128_128_3.vqh res0_128_128_4.vqh res0_128_128_5.vqh res0_128_128aux.vqh res0_160_1024_1.vqh res0_160_1024_2.vqh res0_160_1024_3.vqh res0_160_1024_4.vqh res0_160_1024_5.vqh res0_160_1024_6.vqh res0_160_1024_7.vqh res0_160_1024_8.vqh res0_160_1024_9.vqh res0_160_1024aux.vqh res0_160_128_1.vqh res0_160_128_2.vqh res0_160_128_3.vqh res0_160_128_4.vqh res0_160_128_5.vqh res0_160_128aux.vqh res0_192_1024_1.vqh res0_192_1024_2.vqh res0_192_1024_3.vqh res0_192_1024_4.vqh res0_192_1024_5.vqh res0_192_1024_6.vqh res0_192_1024_7.vqh res0_192_1024_8.vqh res0_192_1024_9.vqh res0_192_1024aux.vqh res0_192_128_1.vqh res0_192_128_2.vqh res0_192_128_3.vqh res0_192_128_4.vqh res0_192_128_5.vqh res0_192_128aux.vqh res0_256_1024_1.vqh res0_256_1024_2.vqh res0_256_1024_3.vqh res0_256_1024_4.vqh res0_256_1024_5.vqh res0_256_1024_6.vqh res0_256_1024_7.vqh res0_256_1024aux.vqh res0_256_128_1.vqh res0_256_128_2.vqh res0_256_128_3.vqh res0_256_128_4.vqh res0_256_128_5.vqh res0_256_128aux.vqh res0_96_1024_1.vqh res0_96_1024_2.vqh res0_96_1024_3.vqh res0_96_1024_4.vqh res0_96_1024_5.vqh res0_96_1024_6.vqh res0_96_1024_7.vqh res0_96_1024_8.vqh res0_96_1024_9.vqh res0_96_1024aux.vqh res0_96_128_1.vqh res0_96_128_2.vqh res0_96_128_3.vqh res0_96_128_4.vqh res0_96_128_5.vqh res0_96_128aux.vqh res0_350_1024_7.vqh
-
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_CLEAN_FILES =
-DIST_COMMON = Makefile.am Makefile.in
-
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
-TAR = tar
-GZIP_ENV = --best
-all: all-redirect
-.SUFFIXES:
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
- cd $(top_srcdir) && $(AUTOMAKE) --foreign lib/books/Makefile
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-tags: TAGS
-TAGS:
-
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-
-subdir = lib/books
-
-distdir: $(DISTFILES)
- here=`cd $(top_builddir) && pwd`; \
- top_distdir=`cd $(top_distdir) && pwd`; \
- distdir=`cd $(distdir) && pwd`; \
- cd $(top_srcdir) \
- && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --foreign lib/books/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
- cp -pr $$d/$$file $(distdir)/$$file; \
- else \
- test -f $(distdir)/$$file \
- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
-info-am:
-info: info-am
-dvi-am:
-dvi: dvi-am
-check-am: all-am
-check: check-am
-installcheck-am:
-installcheck: installcheck-am
-install-exec-am:
-install-exec: install-exec-am
-
-install-data-am:
-install-data: install-data-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-install: install-am
-uninstall-am:
-uninstall: uninstall-am
-all-am: Makefile
-all-redirect: all-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
-installdirs:
-
-
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -rm -f Makefile $(CONFIG_CLEAN_FILES)
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-
-maintainer-clean-generic:
-mostlyclean-am: mostlyclean-generic
-
-mostlyclean: mostlyclean-am
-
-clean-am: clean-generic mostlyclean-am
-
-clean: clean-am
-
-distclean-am: distclean-generic clean-am
- -rm -f libtool
-
-distclean: distclean-am
-
-maintainer-clean-am: maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-maintainer-clean: maintainer-clean-am
-
-.PHONY: tags distdir info-am info dvi-am dvi check check-am \
-installcheck-am installcheck install-exec-am install-exec \
-install-data-am install-data install-am install uninstall-am uninstall \
-all-redirect all-am all installdirs mostlyclean-generic \
-distclean-generic clean-generic maintainer-clean-generic clean \
-mostlyclean distclean maintainer-clean
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/lib/books/Makefile.in b/lib/books/Makefile.in
deleted file mode 100644
index 7d2b905d..00000000
--- a/lib/books/Makefile.in
+++ /dev/null
@@ -1,202 +0,0 @@
-# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am
-
-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-SHELL = @SHELL@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-sbindir = @sbindir@
-libexecdir = @libexecdir@
-datadir = @datadir@
-sysconfdir = @sysconfdir@
-sharedstatedir = @sharedstatedir@
-localstatedir = @localstatedir@
-libdir = @libdir@
-infodir = @infodir@
-mandir = @mandir@
-includedir = @includedir@
-oldincludedir = /usr/include
-
-DESTDIR =
-
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-
-top_builddir = ../..
-
-ACLOCAL = @ACLOCAL@
-AUTOCONF = @AUTOCONF@
-AUTOMAKE = @AUTOMAKE@
-AUTOHEADER = @AUTOHEADER@
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-transform = @program_transform_name@
-
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-host_alias = @host_alias@
-host_triplet = @host@
-AS = @AS@
-CC = @CC@
-CPP = @CPP@
-DEBUG = @DEBUG@
-DLLTOOL = @DLLTOOL@
-ECHO = @ECHO@
-EXEEXT = @EXEEXT@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-MAKEINFO = @MAKEINFO@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OGG_CFLAGS = @OGG_CFLAGS@
-OGG_LIBS = @OGG_LIBS@
-PACKAGE = @PACKAGE@
-PROFILE = @PROFILE@
-RANLIB = @RANLIB@
-STRIP = @STRIP@
-VERSION = @VERSION@
-VE_LIB_AGE = @VE_LIB_AGE@
-VE_LIB_CURRENT = @VE_LIB_CURRENT@
-VE_LIB_REVISION = @VE_LIB_REVISION@
-VF_LIB_AGE = @VF_LIB_AGE@
-VF_LIB_CURRENT = @VF_LIB_CURRENT@
-VF_LIB_REVISION = @VF_LIB_REVISION@
-V_LIB_AGE = @V_LIB_AGE@
-V_LIB_CURRENT = @V_LIB_CURRENT@
-V_LIB_REVISION = @V_LIB_REVISION@
-pthread_lib = @pthread_lib@
-
-AUTOMAKE_OPTIONS = foreign
-
-EXTRA_DIST = lsp12_0.vqh lsp12_1.vqh lsp30_0.vqh lsp30_1.vqh lsp9_0.vqh lsp9_1.vqh res0_128_1024_1.vqh res0_128_1024_2.vqh res0_128_1024_3.vqh res0_128_1024_4.vqh res0_128_1024_5.vqh res0_128_1024_6.vqh res0_128_1024_7.vqh res0_128_1024_8.vqh res0_128_1024_9.vqh res0_128_1024aux.vqh res0_128_128_1.vqh res0_128_128_2.vqh res0_128_128_3.vqh res0_128_128_4.vqh res0_128_128_5.vqh res0_128_128aux.vqh res0_160_1024_1.vqh res0_160_1024_2.vqh res0_160_1024_3.vqh res0_160_1024_4.vqh res0_160_1024_5.vqh res0_160_1024_6.vqh res0_160_1024_7.vqh res0_160_1024_8.vqh res0_160_1024_9.vqh res0_160_1024aux.vqh res0_160_128_1.vqh res0_160_128_2.vqh res0_160_128_3.vqh res0_160_128_4.vqh res0_160_128_5.vqh res0_160_128aux.vqh res0_192_1024_1.vqh res0_192_1024_2.vqh res0_192_1024_3.vqh res0_192_1024_4.vqh res0_192_1024_5.vqh res0_192_1024_6.vqh res0_192_1024_7.vqh res0_192_1024_8.vqh res0_192_1024_9.vqh res0_192_1024aux.vqh res0_192_128_1.vqh res0_192_128_2.vqh res0_192_128_3.vqh res0_192_128_4.vqh res0_192_128_5.vqh res0_192_128aux.vqh res0_256_1024_1.vqh res0_256_1024_2.vqh res0_256_1024_3.vqh res0_256_1024_4.vqh res0_256_1024_5.vqh res0_256_1024_6.vqh res0_256_1024_7.vqh res0_256_1024aux.vqh res0_256_128_1.vqh res0_256_128_2.vqh res0_256_128_3.vqh res0_256_128_4.vqh res0_256_128_5.vqh res0_256_128aux.vqh res0_96_1024_1.vqh res0_96_1024_2.vqh res0_96_1024_3.vqh res0_96_1024_4.vqh res0_96_1024_5.vqh res0_96_1024_6.vqh res0_96_1024_7.vqh res0_96_1024_8.vqh res0_96_1024_9.vqh res0_96_1024aux.vqh res0_96_128_1.vqh res0_96_128_2.vqh res0_96_128_3.vqh res0_96_128_4.vqh res0_96_128_5.vqh res0_96_128aux.vqh res0_350_1024_7.vqh
-
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_CLEAN_FILES =
-DIST_COMMON = Makefile.am Makefile.in
-
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
-TAR = tar
-GZIP_ENV = --best
-all: all-redirect
-.SUFFIXES:
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
- cd $(top_srcdir) && $(AUTOMAKE) --foreign lib/books/Makefile
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-tags: TAGS
-TAGS:
-
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-
-subdir = lib/books
-
-distdir: $(DISTFILES)
- here=`cd $(top_builddir) && pwd`; \
- top_distdir=`cd $(top_distdir) && pwd`; \
- distdir=`cd $(distdir) && pwd`; \
- cd $(top_srcdir) \
- && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --foreign lib/books/Makefile
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- if test -d $$d/$$file; then \
- cp -pr $$d/$$file $(distdir)/$$file; \
- else \
- test -f $(distdir)/$$file \
- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
-info-am:
-info: info-am
-dvi-am:
-dvi: dvi-am
-check-am: all-am
-check: check-am
-installcheck-am:
-installcheck: installcheck-am
-install-exec-am:
-install-exec: install-exec-am
-
-install-data-am:
-install-data: install-data-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-install: install-am
-uninstall-am:
-uninstall: uninstall-am
-all-am: Makefile
-all-redirect: all-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
-installdirs:
-
-
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -rm -f Makefile $(CONFIG_CLEAN_FILES)
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-
-maintainer-clean-generic:
-mostlyclean-am: mostlyclean-generic
-
-mostlyclean: mostlyclean-am
-
-clean-am: clean-generic mostlyclean-am
-
-clean: clean-am
-
-distclean-am: distclean-generic clean-am
- -rm -f libtool
-
-distclean: distclean-am
-
-maintainer-clean-am: maintainer-clean-generic distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-maintainer-clean: maintainer-clean-am
-
-.PHONY: tags distdir info-am info dvi-am dvi check check-am \
-installcheck-am installcheck install-exec-am install-exec \
-install-data-am install-data install-am install uninstall-am uninstall \
-all-redirect all-am all installdirs mostlyclean-generic \
-distclean-generic clean-generic maintainer-clean-generic clean \
-mostlyclean distclean maintainer-clean
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/lib/books/line_1024x31_0sub0.vqh b/lib/books/line_1024x31_0sub0.vqh
deleted file mode 100644
index 07595fc7..00000000
--- a/lib/books/line_1024x31_0sub0.vqh
+++ /dev/null
@@ -1,37 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_1024x31_0sub0_VQH_
-#define _V_line_1024x31_0sub0_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_1024x31_0sub0[] = {
- 4, 3, 4, 4, 3, 4, 4, 4, 4, 4, 4, 5, 4, 5, 5, 5,
-};
-
-static static_codebook _huff_book_line_1024x31_0sub0 = {
- 1, 16,
- _huff_lengthlist_line_1024x31_0sub0,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_1024x31_1sub0.vqh b/lib/books/line_1024x31_1sub0.vqh
deleted file mode 100644
index bcbe5a11..00000000
--- a/lib/books/line_1024x31_1sub0.vqh
+++ /dev/null
@@ -1,37 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_1024x31_1sub0_VQH_
-#define _V_line_1024x31_1sub0_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_1024x31_1sub0[] = {
- 2, 4, 4, 4, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6,
-};
-
-static static_codebook _huff_book_line_1024x31_1sub0 = {
- 1, 16,
- _huff_lengthlist_line_1024x31_1sub0,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_1024x31_1sub1.vqh b/lib/books/line_1024x31_1sub1.vqh
deleted file mode 100644
index 8a91cfbd..00000000
--- a/lib/books/line_1024x31_1sub1.vqh
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_1024x31_1sub1_VQH_
-#define _V_line_1024x31_1sub1_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_1024x31_1sub1[] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 8,
- 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,10,10,10,10,10,10,10,
-};
-
-static static_codebook _huff_book_line_1024x31_1sub1 = {
- 1, 64,
- _huff_lengthlist_line_1024x31_1sub1,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_1024x31_2sub1.vqh b/lib/books/line_1024x31_2sub1.vqh
deleted file mode 100644
index c89989ca..00000000
--- a/lib/books/line_1024x31_2sub1.vqh
+++ /dev/null
@@ -1,37 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_1024x31_2sub1_VQH_
-#define _V_line_1024x31_2sub1_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_1024x31_2sub1[] = {
- 0, 3, 4, 2, 3, 3, 3, 3, 4,
-};
-
-static static_codebook _huff_book_line_1024x31_2sub1 = {
- 1, 9,
- _huff_lengthlist_line_1024x31_2sub1,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_1024x31_2sub2.vqh b/lib/books/line_1024x31_2sub2.vqh
deleted file mode 100644
index 96755592..00000000
--- a/lib/books/line_1024x31_2sub2.vqh
+++ /dev/null
@@ -1,38 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_1024x31_2sub2_VQH_
-#define _V_line_1024x31_2sub2_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_1024x31_2sub2[] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 3, 5, 4, 6,
- 4, 7, 4, 8, 4, 9, 5, 9, 5,
-};
-
-static static_codebook _huff_book_line_1024x31_2sub2 = {
- 1, 25,
- _huff_lengthlist_line_1024x31_2sub2,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_1024x31_2sub3.vqh b/lib/books/line_1024x31_2sub3.vqh
deleted file mode 100644
index aa8341a0..00000000
--- a/lib/books/line_1024x31_2sub3.vqh
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_1024x31_2sub3_VQH_
-#define _V_line_1024x31_2sub3_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_1024x31_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, 8, 1, 8, 3, 8, 3, 8,
- 4, 8, 6, 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,
-};
-
-static static_codebook _huff_book_line_1024x31_2sub3 = {
- 1, 64,
- _huff_lengthlist_line_1024x31_2sub3,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_1024x31_3sub1.vqh b/lib/books/line_1024x31_3sub1.vqh
deleted file mode 100644
index 0e474fbe..00000000
--- a/lib/books/line_1024x31_3sub1.vqh
+++ /dev/null
@@ -1,37 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_1024x31_3sub1_VQH_
-#define _V_line_1024x31_3sub1_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_1024x31_3sub1[] = {
- 0, 2, 3, 3, 3, 3, 4, 3, 4,
-};
-
-static static_codebook _huff_book_line_1024x31_3sub1 = {
- 1, 9,
- _huff_lengthlist_line_1024x31_3sub1,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_1024x31_3sub2.vqh b/lib/books/line_1024x31_3sub2.vqh
deleted file mode 100644
index a28e561a..00000000
--- a/lib/books/line_1024x31_3sub2.vqh
+++ /dev/null
@@ -1,38 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_1024x31_3sub2_VQH_
-#define _V_line_1024x31_3sub2_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_1024x31_3sub2[] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 2, 4, 3, 5, 4,
- 6, 6, 7, 6, 8, 6, 9, 6, 9,
-};
-
-static static_codebook _huff_book_line_1024x31_3sub2 = {
- 1, 25,
- _huff_lengthlist_line_1024x31_3sub2,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_1024x31_3sub3.vqh b/lib/books/line_1024x31_3sub3.vqh
deleted file mode 100644
index 5a7c26f9..00000000
--- a/lib/books/line_1024x31_3sub3.vqh
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_1024x31_3sub3_VQH_
-#define _V_line_1024x31_3sub3_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_1024x31_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, 3, 6, 2, 5, 3, 5, 4,
- 5, 5, 6, 8, 5, 9, 5, 9, 4, 8, 4, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-};
-
-static static_codebook _huff_book_line_1024x31_3sub3 = {
- 1, 64,
- _huff_lengthlist_line_1024x31_3sub3,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_1024x31_class0.vqh b/lib/books/line_1024x31_class0.vqh
deleted file mode 100644
index d416d60e..00000000
--- a/lib/books/line_1024x31_class0.vqh
+++ /dev/null
@@ -1,37 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_1024x31_class0_VQH_
-#define _V_line_1024x31_class0_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_1024x31_class0[] = {
- 1, 3, 3, 4, 3, 5, 6, 6,
-};
-
-static static_codebook _huff_book_line_1024x31_class0 = {
- 1, 8,
- _huff_lengthlist_line_1024x31_class0,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_1024x31_class1.vqh b/lib/books/line_1024x31_class1.vqh
deleted file mode 100644
index f2ca4a89..00000000
--- a/lib/books/line_1024x31_class1.vqh
+++ /dev/null
@@ -1,37 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_1024x31_class1_VQH_
-#define _V_line_1024x31_class1_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_1024x31_class1[] = {
- 1, 2, 4, 4, 7, 7,10,12, 4, 5, 7, 8,10,10,12,11,
-};
-
-static static_codebook _huff_book_line_1024x31_class1 = {
- 1, 16,
- _huff_lengthlist_line_1024x31_class1,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_1024x31_class2.vqh b/lib/books/line_1024x31_class2.vqh
deleted file mode 100644
index 521aaf1e..00000000
--- a/lib/books/line_1024x31_class2.vqh
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_1024x31_class2_VQH_
-#define _V_line_1024x31_class2_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_1024x31_class2[] = {
- 1, 2, 4,10, 8, 5, 6,10,11, 8, 7,15,16,16,13,16,
- 7, 4, 6,12, 8, 6, 7,11,13,10,12,16,16,16,16,16,
- 12, 9,10,14,11, 9,11,15,16,12,13,16,16,16,16,16,
- 16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,15,
-};
-
-static static_codebook _huff_book_line_1024x31_class2 = {
- 1, 64,
- _huff_lengthlist_line_1024x31_class2,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_1024x31_class3.vqh b/lib/books/line_1024x31_class3.vqh
deleted file mode 100644
index daa06835..00000000
--- a/lib/books/line_1024x31_class3.vqh
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_1024x31_class3_VQH_
-#define _V_line_1024x31_class3_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_1024x31_class3[] = {
- 1, 3, 5,11, 6, 4, 5,14, 9, 6, 9,14,14,14,14,14,
- 6, 4, 6, 8, 7, 5, 6,10, 8, 6, 8,11,14,14,14,14,
- 11, 8, 8, 9,10, 7, 7,10,12, 9,10,14,14,14,14,14,
- 14,14,12, 8,14,14,14,12,14,14,14,14,14,14,14,14,
-};
-
-static static_codebook _huff_book_line_1024x31_class3 = {
- 1, 64,
- _huff_lengthlist_line_1024x31_class3,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_128x7_0sub0.vqh b/lib/books/line_128x7_0sub0.vqh
deleted file mode 100644
index 2f41d067..00000000
--- a/lib/books/line_128x7_0sub0.vqh
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_128x7_0sub0_VQH_
-#define _V_line_128x7_0sub0_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_128x7_0sub0[] = {
- 4, 4, 4, 5, 4, 5, 4, 5, 4, 5, 5, 6, 4, 6, 5, 6,
- 5, 6, 5, 7, 5, 7, 5, 8, 5, 9, 5,10, 5,11, 6,11,
- 6,13, 7,13, 7,13, 7,13, 8,13, 8,13, 9,13, 9,12,
- 13,13,11,13,11,12,13,13,13,13,13,13,13,13,13,13,
-};
-
-static static_codebook _huff_book_line_128x7_0sub0 = {
- 1, 64,
- _huff_lengthlist_line_128x7_0sub0,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_128x7_1sub1.vqh b/lib/books/line_128x7_1sub1.vqh
deleted file mode 100644
index 52e0e72e..00000000
--- a/lib/books/line_128x7_1sub1.vqh
+++ /dev/null
@@ -1,37 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_128x7_1sub1_VQH_
-#define _V_line_128x7_1sub1_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_128x7_1sub1[] = {
- 0, 3, 3, 3, 3, 3, 3, 3, 3,
-};
-
-static static_codebook _huff_book_line_128x7_1sub1 = {
- 1, 9,
- _huff_lengthlist_line_128x7_1sub1,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_128x7_1sub2.vqh b/lib/books/line_128x7_1sub2.vqh
deleted file mode 100644
index 6c5793f3..00000000
--- a/lib/books/line_128x7_1sub2.vqh
+++ /dev/null
@@ -1,38 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_128x7_1sub2_VQH_
-#define _V_line_128x7_1sub2_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_128x7_1sub2[] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 4, 4, 4,
- 4, 5, 4, 5, 5, 5, 5, 6, 6,
-};
-
-static static_codebook _huff_book_line_128x7_1sub2 = {
- 1, 25,
- _huff_lengthlist_line_128x7_1sub2,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_128x7_1sub3.vqh b/lib/books/line_128x7_1sub3.vqh
deleted file mode 100644
index 457cd754..00000000
--- a/lib/books/line_128x7_1sub3.vqh
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_128x7_1sub3_VQH_
-#define _V_line_128x7_1sub3_VQH_
-#include "codebook.h"
-
-static long _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, 3, 2, 5, 3, 5, 3, 8,
- 4, 8, 5, 8, 6, 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,
-};
-
-static static_codebook _huff_book_line_128x7_1sub3 = {
- 1, 64,
- _huff_lengthlist_line_128x7_1sub3,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_128x7_2sub1.vqh b/lib/books/line_128x7_2sub1.vqh
deleted file mode 100644
index 461c78d8..00000000
--- a/lib/books/line_128x7_2sub1.vqh
+++ /dev/null
@@ -1,37 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_128x7_2sub1_VQH_
-#define _V_line_128x7_2sub1_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_128x7_2sub1[] = {
- 0, 3, 3, 2, 3, 3, 4, 3, 4,
-};
-
-static static_codebook _huff_book_line_128x7_2sub1 = {
- 1, 9,
- _huff_lengthlist_line_128x7_2sub1,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_128x7_2sub2.vqh b/lib/books/line_128x7_2sub2.vqh
deleted file mode 100644
index 8fe3039f..00000000
--- a/lib/books/line_128x7_2sub2.vqh
+++ /dev/null
@@ -1,38 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_128x7_2sub2_VQH_
-#define _V_line_128x7_2sub2_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_128x7_2sub2[] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 3, 5, 3, 5, 3,
- 6, 4, 7, 4, 8, 4, 9, 5, 9,
-};
-
-static static_codebook _huff_book_line_128x7_2sub2 = {
- 1, 25,
- _huff_lengthlist_line_128x7_2sub2,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_128x7_2sub3.vqh b/lib/books/line_128x7_2sub3.vqh
deleted file mode 100644
index 132a8caa..00000000
--- a/lib/books/line_128x7_2sub3.vqh
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_128x7_2sub3_VQH_
-#define _V_line_128x7_2sub3_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_128x7_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, 2, 7, 2, 8, 3, 7, 3,
- 7, 4, 8, 4, 9, 5, 8, 7, 8, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-};
-
-static static_codebook _huff_book_line_128x7_2sub3 = {
- 1, 64,
- _huff_lengthlist_line_128x7_2sub3,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_128x7_class1.vqh b/lib/books/line_128x7_class1.vqh
deleted file mode 100644
index af52b62a..00000000
--- a/lib/books/line_128x7_class1.vqh
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_128x7_class1_VQH_
-#define _V_line_128x7_class1_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_128x7_class1[] = {
- 2, 4, 3,10, 9, 6, 6,13,13,13,10,13,13,13,13,13,
- 6, 3, 3, 7, 9, 7, 6,13,13,13,11,13,13,13,13,13,
- 7, 4, 4, 8, 8, 6, 4,12,13,13,11,13,13,13,13,13,
- 13,12, 9,12,13,11,10,12,13,13,13,13,13,12,12,12,
-};
-
-static static_codebook _huff_book_line_128x7_class1 = {
- 1, 64,
- _huff_lengthlist_line_128x7_class1,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/line_128x7_class2.vqh b/lib/books/line_128x7_class2.vqh
deleted file mode 100644
index b0f10298..00000000
--- a/lib/books/line_128x7_class2.vqh
+++ /dev/null
@@ -1,40 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_line_128x7_class2_VQH_
-#define _V_line_128x7_class2_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_line_128x7_class2[] = {
- 7, 6, 6,10, 7, 4, 5, 7, 9, 6, 6, 9,13,13,13,13,
- 7, 5, 5, 8, 5, 3, 3, 6, 7, 4, 5, 8,13,13,10,12,
- 10, 7, 6, 8, 7, 4, 3, 5, 8, 5, 5, 8,13,11,10,13,
- 13,11,11,13,11, 8,10,13,12, 9,11,13,13,13,13,13,
-};
-
-static static_codebook _huff_book_line_128x7_class2 = {
- 1, 64,
- _huff_lengthlist_line_128x7_class2,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/lsp12_0.vqh b/lib/books/lsp12_0.vqh
deleted file mode 100644
index ad1a0081..00000000
--- a/lib/books/lsp12_0.vqh
+++ /dev/null
@@ -1,168 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: static codebook autogenerated by vq/somethingorother
-
- ********************************************************************/
-
-#ifndef _V_lsp12_0_VQH_
-#define _V_lsp12_0_VQH_
-#include "codebook.h"
-
-static long _vq_quantlist_lsp12_0[] = {
- 0,
- 5,
- 10,
- 15,
- 20,
- 25,
- 30,
- 35,
- 40,
- 45,
- 50,
- 55,
- 60,
- 65,
- 68,
- 71,
- 74,
- 77,
- 80,
- 83,
- 86,
- 89,
- 92,
- 95,
- 98,
- 101,
- 104,
- 107,
- 110,
- 115,
- 120,
- 125,
- 130,
- 135,
- 145,
- 160,
- 180,
- 205,
- 235,
- 270,
- 310,
- 355,
- 405,
-};
-
-static long _vq_lengthlist_lsp12_0[] = {
- 16,16,16,14,15,14,15,15,12,11,10, 9, 9, 8, 7, 7,
- 7, 5, 4, 3, 3, 2, 3, 4, 4, 5, 6, 7, 6, 5, 6, 8,
- 10,11,13,14,14,14,16,14,16,16,14,
-};
-
-static long _vq_pigeonmap_lsp12_0[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 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, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 6,
- 6, 6, 6, 6, 6, 6, 6, 6,
- 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 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, 11, 11, 11,
- 11, 11, 11, 11, 11, 11, 11, 11,
- 11, 11, 11, 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, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 14, 14, 14,
- 14, 14, 14, 14, 14, 14, 14, 14,
- 14, 14, 14, 14, 14, 14, 14, 14,
- 14, 14, 14, 14, 14,
-};
-
-static long _vq_fitlist_lsp12_0[] = {
- 0, 1, 2, 3, 3, 4, 5, 6,
- 6, 7, 8, 9, 9, 10, 11, 12,
- 12, 13, 14, 15, 15, 16, 17, 18,
- 18, 19, 20, 21, 21, 22, 23, 24,
- 24, 25, 26, 27, 27, 28, 29, 30,
- 30, 31, 32, 33, 33, 34, 35, 36,
- 36, 37, 38, 39, 39, 40, 41, 42,
-};
-
-static long _vq_fitmap_lsp12_0[] = {
- 0, 4, 8, 12, 16, 20, 24, 28,
- 32, 36, 40, 44, 48, 52, 52,
-};
-
-static long _vq_fitlength_lsp12_0[] = {
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4,
-};
-
-static encode_aux_pigeonhole _vq_auxp_lsp12_0 = {
- 0.06, 0.002, 405, 15,
- _vq_pigeonmap_lsp12_0,
- 56,
- _vq_fitlist_lsp12_0,
- _vq_fitmap_lsp12_0,
- _vq_fitlength_lsp12_0
-};
-
-static static_codebook _vq_book_lsp12_0 = {
- 1, 43,
- _vq_lengthlist_lsp12_0,
- 1, 1602140242, 1592812110, 9, 1,
- _vq_quantlist_lsp12_0,
- NULL,
- NULL,
- &_vq_auxp_lsp12_0,
- 0
-};
-
-
-#endif
diff --git a/lib/books/lsp12_1.vqh b/lib/books/lsp12_1.vqh
deleted file mode 100644
index b5e90672..00000000
--- a/lib/books/lsp12_1.vqh
+++ /dev/null
@@ -1,2979 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: static codebook autogenerated by vq/somethingorother
-
- ********************************************************************/
-
-#ifndef _V_lsp12_1_VQH_
-#define _V_lsp12_1_VQH_
-#include "codebook.h"
-
-static long _vq_quantlist_lsp12_1[] = {
- 0,
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
-};
-
-static long _vq_lengthlist_lsp12_1[] = {
- 17,15,17,17,16,16,17,17,17,17,17,16,17,17,17,17,
- 16,16,16,16,17,17,14,17,17,17,17,17,16,16,17,16,
- 15,17,15,15,15,15,17,16,17,17,17,15,14,15,15,15,
- 15,16,15,15,16,17,17,17,15,15,15,14,15,15,15,14,
- 15,16,16,17,17,17,17,16,16,17,16,16,15,15,17,16,
- 16,16,17,17,17,16,17,17,17,15,15,15,17,16,16,17,
- 17,17,17,17,17,15,14,14,14,15,16,16,17,15,15,17,
- 17,17,17,17,17,17,14,13,16,14,15,17,17,17,17,17,
- 17,17,15,14,16,15,15,16,17,17,16,17,17,17,17,16,
- 15,16,14,17,16,15,15,17,17,17,17,17,17,17,17,17,
- 16,17,15,17,15,17,17,16,17,17,17,17,17,17,17,16,
- 17,17,17,17,17,17,17,17,17,17,17,17,16,17,17,16,
- 17,16,17,17,17,17,15,15,17,16,17,17,16,17,17,17,
- 17,17,17,17,15,15,15,16,17,17,17,17,17,17,17,17,
- 17,16,16,15,15,14,15,15,15,15,16,16,17,17,16,16,
- 15,16,14,15,14,14,15,14,16,17,16,17,17,17,15,15,
- 14,14,13,14,14,14,17,17,16,15,16,17,15,15,14,14,
- 14,14,15,15,16,17,16,16,17,17,17,15,13,13,14,13,
- 14,15,15,16,16,17,17,17,17,15,14,14,13,13,14,14,
- 15,17,16,16,17,17,17,17,14,14,13,12,13,14,15,15,
- 15,17,17,17,17,17,15,14,13,12,14,14,16,15,15,16,
- 17,17,17,15,15,15,14,14,15,14,14,15,17,16,17,17,
- 17,17,17,16,14,15,14,16,16,17,17,17,16,17,17,17,
- 17,17,15,14,16,15,17,17,17,17,17,17,17,15,17,17,
- 17,16,15,15,14,16,16,17,17,16,15,16,15,16,15,15,
- 16,17,17,17,17,17,17,17,16,14,15,15,15,15,16,17,
- 17,17,17,17,17,15,15,15,14,14,14,15,15,15,17,17,
- 17,17,17,17,15,14,13,14,13,14,14,15,15,16,17,16,
- 17,17,15,15,12,13,13,12,13,14,15,16,16,17,17,17,
- 16,14,13,13,12,12,13,13,15,16,15,15,17,17,17,14,
- 12,12,11,11,13,13,14,15,16,15,17,17,17,14,13,11,
- 11,11,13,13,14,15,15,17,17,17,17,14,14,12,11,11,
- 13,13,13,14,16,15,17,17,17,15,14,14,12,12,13,13,
- 14,14,15,15,17,17,17,17,15,14,14,13,13,13,14,15,
- 15,16,15,17,17,17,15,14,16,14,13,14,14,14,15,16,
- 17,16,17,17,15,16,15,14,15,16,15,17,17,17,17,17,
- 17,17,15,15,16,15,15,15,15,15,15,17,17,16,15,14,
- 16,17,17,15,17,17,17,16,17,17,17,17,16,14,14,14,
- 15,15,16,17,16,15,17,17,15,17,15,15,14,14,14,14,
- 15,15,15,16,15,15,17,16,15,14,13,13,13,13,13,15,
- 15,16,15,17,17,16,15,13,11,12,12,12,12,13,14,14,
- 16,15,17,17,16,13,11,10,10,11,12,12,13,14,14,17,
- 17,17,17,14,11,10,10,10,11,12,14,14,15,14,17,17,
- 14,16,13,10,10,10,11,12,13,15,15,15,16,17,17,15,
- 13,11,10,10,11,12,13,14,15,17,17,17,17,15,13,12,
- 11,11,11,12,13,14,14,15,17,17,16,15,15,13,12,12,
- 12,12,13,15,14,15,17,16,15,16,16,13,13,13,13,13,
- 14,15,16,16,16,17,17,16,16,14,15,14,14,15,15,15,
- 16,17,16,16,17,15,16,17,15,15,15,16,14,15,16,17,
- 16,16,17,15,15,15,15,17,15,17,16,17,16,17,17,17,
- 16,15,14,13,14,14,16,15,16,15,15,15,17,16,15,13,
- 13,12,12,13,14,13,14,13,13,13,17,17,15,13,11,11,
- 12,12,11,12,12,12,13,14,17,17,15,13,10,10,10,10,
- 10,11,11,12,13,14,17,17,14,13,10, 9, 9,10,10,10,
- 10,12,12,14,17,16,15,13,11, 9, 9, 9, 9,10,11,13,
- 15,14,16,15,15,13,11, 9, 8, 9, 9,10,12,13,14,14,
- 16,15,15,15,12,10, 9, 9, 9,11,12,13,14,15,17,16,
- 16,15,13,11,10,10,10,11,12,13,15,15,15,17,15,15,
- 14,13,11,11,12,12,13,13,14,14,17,16,15,17,14,14,
- 13,12,12,13,13,13,15,15,17,16,15,15,14,14,14,13,
- 14,14,13,14,15,16,17,17,16,17,15,17,15,14,15,15,
- 15,15,17,16,17,17,16,15,16,14,17,15,15,15,16,16,
- 15,16,17,17,16,15,13,13,12,13,14,14,13,14,14,13,
- 17,17,15,12,11,11,10,11,12,12,12,12,12,11,17,15,
- 15,12,10,10,10,10,10,10,11,11,11,12,17,16,13,12,
- 9, 8, 9, 9, 9, 8, 9,10,11,12,16,16,14,12, 9, 7,
- 7, 8, 7, 8, 9,10,12,13,17,15,13,12, 9, 7, 7, 7,
- 7, 9,10,11,12,12,15,15,14,13,10, 8, 7, 7, 8, 9,
- 11,13,13,14,15,15,15,13,11,10, 8, 8, 9,10,11,13,
- 13,13,15,17,15,14,12,11,10, 9,10,11,12,13,13,14,
- 15,17,17,14,14,12,11,11,11,11,13,13,14,15,17,15,
- 16,14,13,13,12,12,12,12,13,15,15,17,17,15,15,14,
- 13,14,13,13,13,13,15,15,17,17,17,16,16,15,15,15,
- 15,14,14,15,15,15,16,17,17,16,17,16,16,14,13,13,
- 13,15,15,16,16,15,17,17,17,15,13,12,12,12,13,14,
- 13,14,14,14,17,16,15,13,11,10,10,11,12,12,12,12,
- 11,12,15,15,13,11, 9, 9, 9,10,10, 9,10,10,11,11,
- 17,15,13,11, 9, 8, 8, 9, 8, 7, 8, 9,11,12,14,14,
- 12,11, 8, 7, 6, 7, 7, 7, 9,10,11,12,14,14,13,10,
- 9, 6, 6, 6, 7, 9,10,11,12,13,15,14,14,12,10, 8,
- 6, 7, 8, 9,10,12,13,15,15,15,14,13,11, 9, 8, 8,
- 9,10,11,12,13,15,15,15,14,13,11,10, 9, 9,10,11,
- 11,13,13,14,15,16,14,14,13,11,10,11,11,11,12,13,
- 14,15,16,17,14,14,12,13,12,11,11,13,13,15,17,15,
- 17,15,17,14,13,14,12,13,14,14,15,15,16,17,17,17,
- 14,14,15,15,14,15,14,15,14,16,15,17,17,17,17,17,
- 15,14,13,14,14,14,15,15,15,14,16,17,17,13,12,12,
- 11,12,13,13,14,14,13,13,17,15,15,12,10,10,11,11,
- 12,12,12,13,12,13,17,14,13,11, 9, 9,10,10,11,10,
- 10,11,12,12,15,14,12,10, 9, 8, 8, 9, 9, 9, 9,10,
- 12,12,17,14,11, 9, 8, 7, 6, 7, 8, 9,10,11,12,13,
- 15,14,11,10, 8, 6, 6, 7, 8, 9,10,11,13,13,16,15,
- 12,11, 9, 8, 7, 7, 8, 9,11,12,13,14,16,14,12,12,
- 10, 9, 8, 8, 9,10,11,13,13,14,15,15,14,13,12,10,
- 10, 9,10,10,11,12,13,14,16,15,14,13,12,11,11,11,
- 11,12,12,14,14,16,17,16,15,14,13,12,12,12,12,13,
- 13,14,15,17,16,17,16,14,15,13,13,13,12,14,15,15,
- 16,16,17,17,15,15,15,14,14,14,14,15,14,15,17,16,
- 17,17,17,17,14,13,14,14,15,13,14,16,14,16,17,17,
- 16,14,12,13,12,13,13,13,14,15,15,15,16,15,15,13,
- 11,11,11,12,13,13,13,14,15,14,17,14,13,12,10, 9,
- 10,11,11,11,12,13,13,13,15,13,12,10, 9, 8, 9, 9,
- 10,10,11,12,12,13,15,13,11,10, 8, 8, 8, 8, 9,10,
- 10,11,13,13,16,12,11,10, 9, 8, 8, 8, 9, 9,11,13,
- 13,14,15,14,12,11, 9, 8, 8, 8, 9,10,11,13,14,14,
- 16,14,13,12,11, 9, 9, 9, 9,10,11,13,14,14,15,15,
- 14,14,11,10,10,10,10,11,12,12,14,14,17,15,14,14,
- 12,11,11,11,11,12,13,13,15,15,17,15,15,14,12,12,
- 12,12,12,12,14,15,15,15,17,16,15,14,13,14,13,13,
- 13,15,15,16,15,17,16,17,15,15,15,15,13,13,14,15,
- 15,15,15,17,17,17,17,17,14,14,16,15,15,16,15,14,
- 17,16,17,17,16,14,13,13,14,14,15,14,15,17,15,15,
- 15,15,14,13,12,12,12,12,13,13,13,14,15,15,16,13,
- 12,12,11,10,11,11,11,11,12,13,13,14,17,13,12,11,
- 10, 9,10,10,10,10,11,12,13,14,15,13,12,11, 9, 9,
- 9, 9, 9,10,11,13,13,14,15,13,11,11,10, 9, 9, 9,
- 9,10,11,13,14,15,15,14,13,11,10,10, 9, 9, 9,10,
- 12,12,14,15,15,15,13,12,11,10,10, 9,10,11,12,13,
- 14,16,15,15,14,13,12,11,10,10,11,11,12,13,14,16,
- 16,16,14,13,12,11,11,11,12,12,13,14,14,15,15,15,
- 14,13,13,12,12,12,13,13,14,14,14,17,16,16,14,15,
- 13,13,13,13,13,13,14,14,15,16,17,16,16,15,15,14,
- 13,13,14,13,14,15,16,16,17,17,17,15,14,15,15,15,
- 15,15,15,16,17,15,16,16,16,15,14,15,15,15,15,14,
- 15,16,16,17,17,14,14,13,12,13,13,13,13,13,14,14,
- 15,17,16,13,13,13,12,11,12,12,12,12,12,13,15,14,
- 15,13,13,12,11,11,10,11,11,11,11,13,15,14,15,13,
- 12,11,10,10,10,10,10,11,11,13,13,15,14,13,12,12,
- 11,10,10, 9,10,11,13,13,14,14,15,13,13,12,11,10,
- 10,10,10,11,12,12,13,14,16,14,14,13,12,11,10,10,
- 10,12,12,13,14,15,16,15,14,13,12,11,10,11,11,11,
- 13,12,14,14,16,15,14,12,12,12,11,11,11,12,12,13,
- 14,15,16,15,14,14,13,12,12,12,12,12,13,13,15,17,
- 17,16,15,14,14,13,12,13,12,12,13,15,15,17,15,16,
- 15,15,14,13,13,13,12,13,14,15,16,17,17,16,15,15,
- 15,15,15,15,15,16,14,15,17,16,17,17,15,14,14,14,
- 15,14,15,14,15,14,17,14,17,14,14,13,14,13,13,14,
- 13,13,13,14,14,15,15,14,14,13,12,12,12,12,12,12,
- 12,13,14,15,15,14,13,12,12,11,11,11,11,11,13,13,
- 14,14,17,14,13,12,11,10,10,10,11,11,12,13,13,14,
- 15,14,13,13,11,10,10,10,10,11,12,12,13,14,16,16,
- 13,12,11,11,11,10,11,11,12,13,14,14,17,15,14,13,
- 11,11,10,11,10,11,12,12,13,14,17,15,14,13,12,12,
- 11,11,11,12,12,13,13,14,15,15,13,14,13,12,11,11,
- 12,12,13,13,15,16,16,16,15,14,13,13,12,12,12,12,
- 13,14,16,16,17,16,15,14,15,13,13,13,13,13,14,15,
- 17,17,16,16,14,14,14,14,13,14,13,14,16,17,17,17,
- 16,17,16,16,17,15,14,17,16,16,15,16,17,17,17,17,
- 14,15,15,14,16,16,15,15,15,15,16,17,17,15,14,15,
- 14,14,13,14,13,13,14,14,15,17,17,14,13,14,14,13,
- 12,12,12,12,13,13,15,15,16,14,13,13,13,12,11,11,
- 11,11,12,13,14,14,17,14,13,13,12,11,11,11,11,12,
- 12,13,13,14,17,16,14,13,12,11,11,11,11,11,12,13,
- 13,14,16,15,13,13,12,11,11,11,11,11,12,13,14,14,
- 16,14,15,13,13,12,11,11,11,12,12,12,14,14,16,15,
- 15,14,13,12,12,11,11,11,12,13,14,14,17,15,15,14,
- 13,12,11,12,11,12,14,15,14,15,15,16,15,15,13,12,
- 12,13,14,14,15,17,16,15,17,16,16,15,15,14,12,14,
- 14,14,15,16,17,17,15,15,14,16,14,14,15,15,16,17,
- 17,16,16,16,17,17,17,16,15,15,16,15,16,16,17,16,
- 17,17,17,17,15,17,14,15,14,14,14,15,15,16,17,16,
- 17,15,15,15,14,14,13,14,13,13,14,16,16,15,16,14,
- 14,14,15,13,12,12,12,12,13,14,14,17,15,14,13,13,
- 14,12,12,11,11,12,13,14,15,15,15,14,14,14,13,12,
- 11,11,11,12,12,13,13,15,16,16,14,14,13,11,11,11,
- 11,11,12,12,13,14,17,16,14,13,12,12,11,11,11,11,
- 11,12,14,14,17,15,14,13,12,11,11,10,11,11,12,12,
- 15,15,17,14,13,13,13,12,11,11,11,11,12,14,15,16,
- 15,16,15,14,12,12,12,12,12,12,14,14,17,15,16,15,
- 14,14,14,13,13,13,13,14,14,17,16,16,14,15,14,14,
- 14,14,14,15,14,15,16,17,17,17,15,16,14,14,14,17,
- 15,15,15,17,17,17,17,17,
-};
-
-static long _vq_pigeonmap_lsp12_1[] = {
- 0, 0, 0, 1, 1, 1, 2, 2,
- 2, 3, 3, 3, 4,
-};
-
-static long _vq_fitlist_lsp12_1[] = {
- 0, 1, 14, 15, 28, 196, 197, 210,
- 392, 2, 16, 29, 198, 211, 224, 393,
- 406, 3, 4, 17, 30, 43, 199, 212,
- 225, 394, 407, 589, 42, 588, 56, 238,
- 420, 602, 31, 44, 200, 213, 226, 239,
- 395, 408, 421, 590, 57, 252, 434, 603,
- 18, 45, 58, 214, 227, 240, 253, 396,
- 409, 422, 435, 591, 604, 617, 785, 784,
- 616, 786, 798, 70, 448, 630, 799, 32,
- 71, 241, 254, 410, 423, 436, 449, 592,
- 605, 618, 631, 787, 800, 813, 981, 980,
- 812, 994, 982, 266, 644, 826, 995, 228,
- 267, 437, 450, 606, 619, 632, 645, 788,
- 801, 814, 827, 983, 996, 3, 4, 16,
- 17, 18, 30, 31, 198, 199, 200, 212,
- 213, 226, 394, 395, 408, 5, 19, 32,
- 201, 214, 227, 396, 409, 591, 6, 7,
- 20, 33, 46, 202, 215, 228, 397, 410,
- 592, 44, 45, 240, 422, 59, 241, 423,
- 605, 34, 47, 203, 216, 229, 242, 398,
- 411, 424, 593, 58, 72, 254, 436, 60,
- 255, 437, 606, 21, 48, 61, 217, 230,
- 243, 256, 399, 412, 425, 438, 594, 607,
- 590, 604, 787, 788, 618, 619, 620, 789,
- 268, 450, 632, 801, 73, 451, 633, 802,
- 35, 74, 244, 257, 413, 426, 439, 452,
- 595, 608, 621, 634, 790, 803, 816, 786,
- 800, 814, 983, 815, 984, 985, 646, 828,
- 997, 269, 647, 829, 998, 231, 270, 440,
- 453, 609, 622, 635, 648, 791, 804, 817,
- 830, 986, 999, 6, 7, 19, 20, 21,
- 33, 34, 201, 202, 203, 215, 216, 229,
- 397, 398, 411, 8, 22, 35, 204, 217,
- 230, 399, 412, 9, 10, 23, 36, 49,
- 205, 218, 231, 400, 413, 595, 47, 48,
- 243, 425, 594, 62, 244, 426, 608, 24,
- 37, 50, 206, 219, 232, 245, 401, 414,
- 427, 596, 61, 75, 257, 439, 621, 63,
- 258, 440, 609, 51, 64, 220, 233, 246,
- 259, 402, 415, 428, 441, 597, 610, 593,
- 607, 790, 791, 622, 623, 792, 271, 453,
- 635, 804, 76, 454, 636, 805, 38, 77,
- 234, 247, 260, 416, 429, 442, 455, 598,
- 611, 624, 637, 793, 806, 819, 789, 803,
- 817, 986, 818, 987, 988, 649, 831, 1000,
- 272, 650, 832, 1001, 273, 430, 443, 456,
- 612, 625, 638, 651, 794, 807, 820, 833,
- 989, 1002, 9, 10, 22, 23, 24, 36,
- 37, 204, 205, 206, 218, 219, 232, 400,
- 401, 414, 11, 25, 38, 207, 220, 233,
- 402, 415, 597, 12, 13, 26, 39, 52,
- 208, 221, 234, 403, 416, 598, 50, 51,
- 246, 428, 65, 247, 429, 611, 27, 40,
- 53, 66, 209, 222, 235, 248, 404, 417,
- 430, 599, 64, 78, 260, 442, 624, 79,
- 261, 443, 612, 625, 54, 67, 223, 236,
- 249, 262, 405, 418, 431, 444, 600, 613,
- 596, 610, 793, 794, 626, 795, 456, 638,
- 807, 457, 639, 808, 41, 80, 237, 250,
- 263, 276, 419, 432, 445, 458, 601, 614,
- 627, 640, 796, 809, 792, 806, 989, 820,
- 821, 990, 822, 991, 274, 652, 834, 1003,
- 275, 471, 653, 835, 1004, 1017, 433, 446,
- 459, 472, 615, 628, 641, 654, 797, 810,
- 823, 836, 992, 1005, 12, 13, 25, 26,
- 27, 39, 40, 207, 208, 209, 221, 222,
- 235, 403, 404, 417, 41, 53, 54, 223,
- 236, 249, 405, 418, 431, 600, 55, 67,
- 68, 81, 237, 250, 263, 419, 432, 445,
- 601, 614, 627, 599, 613, 796, 251, 264,
- 433, 446, 459, 615, 628, 641, 797, 810,
- 795, 809, 823, 992, 277, 447, 460, 629,
- 642, 655, 811, 824, 837, 993, 1006, 15,
- 16, 28, 29, 30, 42, 43, 56, 57,
- 70, 198, 211, 212, 224, 225, 226, 238,
- 239, 252, 394, 407, 408, 420, 421, 434,
- 603, 616, 3, 17, 31, 44, 58, 71,
- 199, 213, 227, 240, 253, 266, 395, 409,
- 422, 435, 448, 591, 604, 617, 630, 18,
- 32, 45, 46, 59, 72, 85, 200, 214,
- 228, 241, 254, 267, 396, 410, 423, 436,
- 449, 592, 605, 618, 631, 84, 98, 280,
- 462, 73, 86, 242, 255, 268, 281, 424,
- 437, 450, 463, 619, 632, 644, 99, 294,
- 476, 645, 60, 87, 100, 256, 269, 282,
- 295, 438, 451, 464, 477, 633, 646, 590,
- 799, 812, 787, 800, 813, 826, 606, 788,
- 801, 814, 827, 658, 620, 659, 815, 828,
- 840, 112, 490, 672, 841, 74, 113, 270,
- 283, 296, 309, 452, 465, 478, 491, 634,
- 647, 660, 673, 816, 829, 842, 855, 786,
- 995, 1008, 996, 1009, 802, 997, 1010, 1022,
- 854, 1023, 1011, 1024, 1036, 308, 686, 868,
- 1037, 479, 492, 648, 661, 674, 687, 830,
- 843, 856, 869, 1025, 1038, 18, 19, 31,
- 32, 33, 45, 46, 58, 59, 60, 72,
- 73, 201, 214, 215, 227, 228, 229, 240,
- 241, 242, 254, 255, 268, 397, 410, 411,
- 423, 424, 436, 437, 450, 606, 619, 6,
- 20, 34, 47, 61, 74, 202, 216, 230,
- 243, 256, 269, 398, 412, 425, 438, 451,
- 607, 620, 7, 21, 35, 48, 49, 62,
- 75, 88, 203, 217, 231, 244, 257, 270,
- 399, 413, 426, 439, 452, 595, 608, 621,
- 634, 86, 87, 282, 464, 633, 101, 283,
- 465, 647, 76, 89, 245, 258, 271, 284,
- 427, 440, 453, 466, 622, 635, 100, 114,
- 296, 478, 660, 102, 297, 479, 648, 63,
- 90, 103, 259, 272, 285, 298, 441, 454,
- 467, 480, 636, 649, 593, 632, 646, 802,
- 815, 594, 790, 803, 816, 829, 609, 791,
- 804, 817, 830, 842, 661, 623, 662, 818,
- 831, 310, 492, 674, 843, 115, 493, 675,
- 844, 77, 116, 273, 286, 299, 312, 455,
- 468, 481, 494, 637, 650, 663, 676, 819,
- 832, 845, 858, 789, 828, 998, 1011, 999,
- 1012, 805, 1000, 1013, 856, 1025, 857, 1026,
- 1014, 1027, 688, 870, 1039, 311, 689, 871,
- 1040, 482, 495, 651, 664, 677, 690, 833,
- 846, 859, 872, 1028, 1041, 21, 22, 34,
- 35, 36, 48, 49, 61, 62, 63, 75,
- 76, 204, 217, 218, 230, 231, 232, 243,
- 244, 245, 257, 258, 271, 400, 413, 414,
- 426, 427, 439, 440, 453, 609, 622, 9,
- 23, 37, 50, 64, 77, 205, 219, 233,
- 246, 259, 272, 401, 415, 428, 441, 454,
- 610, 623, 10, 24, 38, 51, 52, 65,
- 78, 91, 206, 220, 234, 247, 260, 273,
- 402, 416, 429, 442, 455, 598, 611, 624,
- 637, 89, 90, 285, 467, 636, 104, 286,
- 468, 650, 66, 79, 92, 248, 261, 274,
- 287, 430, 443, 456, 469, 612, 625, 638,
- 103, 117, 299, 481, 663, 105, 300, 482,
- 651, 80, 93, 106, 262, 275, 288, 301,
- 444, 457, 470, 483, 626, 639, 652, 596,
- 635, 649, 805, 818, 597, 793, 806, 819,
- 832, 794, 807, 820, 833, 845, 664, 665,
- 821, 834, 313, 495, 677, 846, 118, 496,
- 678, 847, 119, 276, 289, 302, 315, 458,
- 471, 484, 497, 640, 653, 666, 679, 822,
- 835, 848, 861, 792, 831, 1001, 1014, 1002,
- 1015, 808, 1003, 1016, 859, 1028, 860, 1029,
- 1004, 1017, 1030, 691, 873, 1042, 314, 692,
- 874, 1043, 472, 485, 498, 654, 667, 680,
- 693, 836, 849, 862, 875, 1018, 1031, 1044,
- 24, 25, 37, 38, 39, 51, 52, 64,
- 65, 66, 78, 79, 207, 220, 221, 233,
- 234, 235, 246, 247, 248, 260, 261, 274,
- 403, 416, 417, 429, 430, 442, 443, 456,
- 612, 625, 12, 26, 40, 53, 67, 80,
- 208, 222, 236, 249, 262, 275, 404, 418,
- 431, 444, 457, 613, 626, 13, 27, 41,
- 54, 55, 68, 81, 94, 209, 223, 237,
- 250, 263, 276, 405, 419, 432, 445, 458,
- 601, 614, 627, 640, 92, 93, 288, 470,
- 639, 107, 289, 471, 653, 69, 82, 95,
- 108, 251, 264, 277, 290, 433, 446, 459,
- 472, 615, 628, 641, 106, 302, 484, 121,
- 303, 485, 654, 667, 96, 109, 265, 278,
- 291, 304, 447, 460, 473, 486, 629, 642,
- 655, 599, 638, 652, 808, 821, 600, 796,
- 809, 822, 835, 797, 810, 823, 666, 836,
- 849, 668, 824, 837, 120, 498, 680, 317,
- 499, 681, 850, 83, 122, 292, 305, 461,
- 474, 487, 500, 643, 656, 669, 682, 825,
- 838, 851, 795, 834, 848, 1004, 1017, 1005,
- 1018, 811, 1006, 1019, 862, 1031, 863, 1032,
- 864, 1007, 1020, 1033, 316, 694, 876, 1045,
- 513, 695, 877, 1046, 1059, 279, 318, 488,
- 501, 657, 670, 683, 696, 839, 852, 865,
- 878, 1021, 1034, 1047, 27, 40, 41, 54,
- 55, 67, 68, 69, 81, 82, 223, 236,
- 237, 249, 250, 251, 263, 264, 277, 419,
- 432, 433, 445, 446, 459, 615, 628, 83,
- 95, 96, 265, 278, 291, 447, 460, 473,
- 629, 642, 97, 109, 110, 279, 292, 305,
- 461, 474, 487, 643, 656, 641, 655, 811,
- 824, 669, 825, 838, 123, 293, 306, 475,
- 488, 501, 657, 670, 683, 839, 852, 837,
- 851, 1007, 1020, 865, 1021, 1034, 319, 489,
- 502, 671, 684, 697, 853, 866, 879, 1035,
- 1048, 57, 58, 70, 71, 72, 84, 85,
- 98, 99, 112, 240, 253, 254, 266, 267,
- 268, 280, 281, 294, 436, 449, 450, 462,
- 463, 476, 645, 658, 45, 59, 73, 86,
- 100, 113, 241, 255, 269, 282, 295, 308,
- 437, 451, 464, 477, 490, 646, 659, 46,
- 60, 74, 87, 88, 101, 114, 127, 242,
- 256, 270, 283, 296, 309, 438, 452, 465,
- 478, 491, 634, 647, 660, 673, 126, 672,
- 140, 322, 504, 686, 115, 128, 284, 297,
- 310, 323, 466, 479, 492, 505, 661, 674,
- 141, 336, 518, 687, 102, 129, 142, 298,
- 311, 324, 337, 480, 493, 506, 519, 675,
- 688, 632, 841, 854, 633, 829, 842, 855,
- 868, 648, 843, 856, 700, 869, 662, 701,
- 857, 870, 882, 154, 532, 714, 883, 116,
- 155, 312, 325, 338, 351, 494, 507, 520,
- 533, 676, 689, 702, 715, 858, 871, 884,
- 897, 828, 1037, 1050, 1038, 1051, 830, 844,
- 1039, 1052, 1064, 896, 1065, 1053, 1066, 1078,
- 350, 728, 910, 1079, 521, 534, 547, 690,
- 703, 716, 729, 872, 885, 898, 911, 1067,
- 1080, 60, 61, 73, 74, 75, 87, 88,
- 100, 101, 102, 114, 115, 243, 256, 257,
- 269, 270, 271, 282, 283, 284, 296, 297,
- 310, 439, 452, 453, 465, 466, 478, 479,
- 492, 648, 661, 48, 62, 76, 89, 103,
- 116, 244, 258, 272, 285, 298, 311, 440,
- 454, 467, 480, 493, 649, 662, 49, 63,
- 77, 90, 91, 104, 117, 130, 245, 259,
- 273, 286, 299, 312, 441, 455, 468, 481,
- 494, 637, 650, 663, 676, 128, 129, 324,
- 506, 675, 143, 325, 507, 689, 118, 131,
- 287, 300, 313, 326, 469, 482, 495, 508,
- 664, 677, 142, 156, 338, 520, 702, 144,
- 339, 521, 690, 105, 132, 145, 301, 314,
- 327, 340, 483, 496, 509, 522, 678, 691,
- 635, 674, 688, 844, 857, 636, 832, 845,
- 858, 871, 651, 846, 859, 884, 703, 872,
- 665, 704, 860, 873, 352, 534, 716, 885,
- 157, 535, 717, 886, 119, 158, 315, 328,
- 341, 354, 497, 510, 523, 536, 679, 692,
- 705, 718, 861, 874, 887, 900, 831, 870,
- 1040, 1053, 1041, 1054, 833, 847, 1042, 1055,
- 898, 1067, 899, 1068, 1056, 1069, 730, 912,
- 1081, 353, 731, 913, 1082, 524, 537, 550,
- 693, 706, 719, 732, 875, 888, 901, 914,
- 1070, 1083, 63, 64, 76, 77, 78, 90,
- 91, 103, 104, 105, 117, 118, 246, 259,
- 260, 272, 273, 274, 285, 286, 287, 299,
- 300, 313, 442, 455, 456, 468, 469, 481,
- 482, 495, 651, 664, 51, 65, 79, 92,
- 106, 119, 247, 261, 275, 288, 301, 314,
- 443, 457, 470, 483, 496, 652, 665, 52,
- 66, 80, 93, 94, 107, 120, 133, 248,
- 262, 276, 289, 302, 315, 444, 458, 471,
- 484, 497, 640, 653, 666, 679, 131, 132,
- 327, 509, 678, 146, 328, 510, 692, 108,
- 121, 134, 147, 290, 303, 316, 329, 472,
- 485, 498, 511, 654, 667, 680, 693, 145,
- 159, 341, 523, 705, 342, 524, 135, 148,
- 304, 317, 330, 343, 486, 499, 512, 525,
- 668, 681, 694, 638, 677, 691, 847, 860,
- 639, 835, 848, 861, 874, 836, 849, 862,
- 887, 706, 875, 707, 850, 863, 876, 537,
- 719, 888, 160, 538, 720, 889, 122, 161,
- 331, 344, 500, 513, 526, 539, 682, 695,
- 708, 721, 864, 877, 890, 903, 834, 873,
- 1043, 1056, 1044, 1057, 1045, 1058, 901, 1070,
- 902, 1071, 1046, 1059, 1072, 1085, 355, 733,
- 915, 1084, 356, 734, 916, 318, 357, 527,
- 540, 696, 709, 722, 735, 878, 891, 904,
- 917, 1060, 1073, 1086, 66, 67, 79, 80,
- 81, 93, 94, 106, 107, 108, 120, 121,
- 249, 262, 263, 275, 276, 277, 288, 289,
- 290, 302, 303, 316, 445, 458, 459, 471,
- 472, 484, 485, 498, 654, 667, 54, 68,
- 82, 95, 109, 122, 250, 264, 278, 291,
- 304, 317, 446, 460, 473, 486, 499, 655,
- 668, 55, 69, 83, 96, 97, 110, 123,
- 136, 251, 265, 279, 292, 305, 318, 447,
- 461, 474, 487, 500, 643, 656, 669, 682,
- 134, 135, 330, 512, 681, 149, 331, 513,
- 695, 111, 124, 137, 150, 293, 306, 319,
- 332, 475, 488, 501, 514, 670, 683, 148,
- 162, 344, 526, 708, 163, 345, 527, 696,
- 138, 151, 164, 307, 320, 333, 346, 489,
- 502, 515, 528, 684, 697, 641, 680, 694,
- 850, 863, 642, 838, 851, 864, 877, 657,
- 839, 852, 865, 878, 709, 891, 671, 710,
- 866, 879, 358, 540, 722, 904, 359, 541,
- 723, 892, 125, 334, 347, 360, 503, 516,
- 529, 542, 685, 698, 711, 724, 867, 880,
- 893, 906, 837, 876, 890, 1046, 1059, 1047,
- 1060, 853, 1048, 1061, 1073, 905, 1074, 1087,
- 1062, 1075, 736, 918, 555, 737, 919, 1088,
- 321, 530, 543, 556, 699, 712, 725, 738,
- 881, 894, 907, 920, 1076, 1089, 69, 82,
- 83, 96, 97, 109, 110, 111, 123, 124,
- 265, 278, 279, 291, 292, 293, 305, 306,
- 319, 461, 474, 475, 487, 488, 501, 657,
- 670, 125, 137, 138, 307, 320, 333, 489,
- 502, 515, 671, 684, 139, 151, 152, 165,
- 321, 334, 347, 503, 516, 529, 685, 698,
- 711, 683, 697, 853, 866, 867, 880, 335,
- 348, 361, 517, 530, 543, 699, 712, 725,
- 881, 894, 907, 879, 893, 1049, 1062, 1063,
- 1076, 531, 544, 713, 726, 739, 895, 908,
- 921, 1077, 1090, 99, 100, 112, 113, 114,
- 126, 127, 140, 141, 154, 282, 295, 296,
- 308, 309, 310, 322, 323, 336, 478, 491,
- 492, 504, 505, 518, 687, 700, 87, 101,
- 115, 128, 142, 155, 283, 297, 311, 324,
- 337, 350, 479, 493, 506, 519, 532, 688,
- 701, 88, 102, 116, 129, 130, 143, 156,
- 169, 284, 298, 312, 325, 338, 351, 480,
- 494, 507, 520, 533, 676, 689, 702, 715,
- 168, 714, 182, 364, 546, 728, 157, 170,
- 326, 339, 352, 365, 508, 521, 534, 547,
- 703, 716, 183, 378, 560, 729, 144, 171,
- 184, 340, 353, 366, 379, 522, 535, 548,
- 561, 717, 730, 674, 883, 896, 675, 871,
- 884, 897, 910, 690, 885, 898, 742, 911,
- 704, 743, 899, 912, 924, 574, 756, 925,
- 158, 354, 367, 380, 536, 549, 562, 575,
- 718, 731, 744, 757, 900, 913, 926, 870,
- 1079, 1092, 1080, 1093, 872, 886, 1081, 1094,
- 1106, 938, 1107, 939, 1095, 1108, 1120, 770,
- 952, 1121, 550, 563, 576, 732, 745, 758,
- 771, 914, 927, 940, 953, 1109, 1122, 102,
- 103, 115, 116, 117, 129, 130, 142, 143,
- 144, 156, 157, 285, 298, 299, 311, 312,
- 313, 324, 325, 326, 338, 339, 352, 481,
- 494, 495, 507, 508, 520, 521, 534, 690,
- 703, 90, 104, 118, 131, 145, 158, 286,
- 300, 314, 327, 340, 353, 482, 496, 509,
- 522, 535, 691, 704, 91, 105, 119, 132,
- 133, 146, 159, 172, 287, 301, 315, 328,
- 341, 354, 483, 497, 510, 523, 536, 679,
- 692, 705, 718, 170, 171, 366, 548, 717,
- 185, 367, 549, 731, 147, 160, 173, 186,
- 329, 342, 355, 368, 511, 524, 537, 550,
- 693, 706, 719, 732, 184, 380, 562, 744,
- 381, 563, 745, 174, 187, 343, 356, 369,
- 382, 525, 538, 551, 564, 720, 733, 677,
- 716, 730, 886, 899, 678, 874, 887, 900,
- 913, 888, 901, 926, 914, 707, 746, 902,
- 915, 576, 758, 927, 577, 759, 928, 161,
- 370, 383, 539, 552, 565, 578, 721, 734,
- 747, 760, 903, 916, 929, 873, 912, 1082,
- 1095, 1083, 1096, 875, 889, 1084, 1097, 940,
- 1109, 941, 1110, 942, 1085, 1098, 1111, 1124,
- 772, 954, 1123, 773, 955, 1137, 357, 566,
- 579, 735, 748, 761, 774, 917, 930, 943,
- 956, 1112, 1125, 105, 106, 118, 119, 120,
- 132, 133, 145, 146, 147, 159, 160, 288,
- 301, 302, 314, 315, 316, 327, 328, 329,
- 341, 342, 355, 484, 497, 498, 510, 511,
- 523, 524, 537, 693, 706, 107, 121, 134,
- 148, 161, 289, 303, 317, 330, 343, 356,
- 485, 499, 512, 525, 538, 694, 707, 94,
- 108, 122, 135, 136, 149, 162, 175, 290,
- 304, 318, 331, 344, 357, 486, 500, 513,
- 526, 539, 682, 695, 708, 721, 173, 174,
- 369, 551, 720, 188, 370, 552, 734, 150,
- 163, 176, 189, 332, 345, 358, 371, 514,
- 527, 540, 553, 709, 722, 187, 383, 565,
- 747, 384, 566, 735, 164, 177, 190, 346,
- 359, 372, 385, 528, 541, 554, 567, 723,
- 736, 680, 719, 733, 889, 902, 681, 890,
- 903, 696, 878, 891, 904, 917, 916, 748,
- 930, 710, 749, 905, 918, 579, 761, 943,
- 580, 762, 931, 360, 373, 386, 542, 555,
- 568, 581, 724, 737, 750, 763, 906, 919,
- 932, 945, 876, 915, 929, 1085, 1098, 877,
- 1086, 1099, 892, 1074, 1087, 1100, 1113, 1112,
- 944, 1126, 1101, 1114, 775, 957, 776, 958,
- 1127, 556, 569, 582, 738, 751, 764, 777,
- 920, 933, 946, 959, 1115, 1128, 108, 109,
- 121, 122, 123, 135, 136, 148, 149, 150,
- 162, 163, 291, 304, 305, 317, 318, 319,
- 330, 331, 332, 344, 345, 358, 487, 500,
- 501, 513, 514, 526, 527, 540, 696, 709,
- 96, 110, 124, 137, 151, 164, 292, 306,
- 320, 333, 346, 359, 488, 502, 515, 528,
- 541, 697, 710, 97, 111, 125, 138, 139,
- 152, 165, 178, 293, 307, 321, 334, 347,
- 360, 489, 503, 516, 529, 542, 685, 698,
- 711, 724, 176, 177, 372, 554, 723, 191,
- 373, 555, 737, 153, 166, 179, 192, 335,
- 348, 361, 374, 517, 530, 543, 556, 712,
- 725, 190, 386, 568, 387, 569, 738, 167,
- 180, 193, 349, 362, 375, 388, 531, 544,
- 557, 570, 726, 739, 683, 722, 736, 892,
- 905, 684, 880, 893, 906, 919, 699, 881,
- 894, 907, 920, 750, 751, 713, 752, 908,
- 921, 582, 764, 933, 583, 765, 934, 363,
- 376, 389, 545, 558, 571, 584, 727, 740,
- 753, 766, 909, 922, 935, 948, 879, 918,
- 932, 1088, 1101, 1089, 1102, 895, 1077, 1090,
- 1103, 946, 1115, 947, 1116, 1104, 1117, 778,
- 960, 1129, 779, 961, 1130, 559, 572, 585,
- 741, 754, 767, 780, 923, 936, 949, 962,
- 1118, 1131, 111, 124, 125, 138, 139, 151,
- 152, 153, 165, 166, 307, 320, 321, 333,
- 334, 335, 347, 348, 361, 503, 516, 517,
- 529, 530, 543, 699, 712, 167, 179, 180,
- 349, 362, 375, 531, 544, 557, 713, 726,
- 181, 193, 194, 363, 376, 389, 545, 558,
- 571, 727, 740, 725, 739, 895, 908, 753,
- 909, 922, 377, 390, 559, 572, 585, 741,
- 754, 767, 923, 936, 921, 935, 1091, 1104,
- 949, 1105, 1118, 573, 586, 755, 768, 781,
- 937, 950, 963, 1119, 1132, 141, 142, 154,
- 155, 156, 168, 169, 182, 183, 324, 337,
- 338, 350, 351, 352, 364, 365, 378, 520,
- 533, 534, 546, 547, 560, 729, 742, 143,
- 157, 170, 184, 325, 339, 353, 366, 379,
- 521, 535, 548, 561, 574, 730, 743, 130,
- 144, 158, 171, 172, 185, 326, 340, 354,
- 367, 380, 522, 536, 549, 562, 575, 718,
- 731, 744, 757, 716, 756, 925, 938, 717,
- 770, 926, 939, 381, 550, 563, 576, 732,
- 745, 758, 771, 927, 940, 912, 952, 1121,
- 1134, 913, 953, 966, 1122, 1135, 368, 577,
- 746, 759, 772, 914, 928, 941, 954, 967,
- 1123, 1136, 144, 145, 157, 158, 159, 171,
- 172, 184, 185, 186, 327, 340, 341, 353,
- 354, 355, 366, 367, 368, 380, 381, 523,
- 536, 537, 549, 550, 562, 563, 576, 732,
- 745, 146, 160, 173, 187, 328, 342, 356,
- 369, 382, 524, 538, 551, 564, 577, 733,
- 746, 133, 147, 161, 174, 175, 188, 329,
- 343, 357, 370, 383, 525, 539, 552, 565,
- 578, 721, 734, 747, 760, 719, 758, 759,
- 772, 928, 941, 720, 773, 929, 942, 371,
- 384, 553, 566, 579, 735, 748, 761, 774,
- 917, 930, 943, 956, 915, 954, 955, 968,
- 1124, 1137, 916, 969, 1125, 1138, 567, 580,
- 749, 762, 775, 931, 944, 957, 970, 1113,
- 1126, 1139, 1152, 147, 148, 160, 161, 162,
- 174, 175, 187, 188, 189, 330, 343, 344,
- 356, 357, 358, 369, 370, 371, 383, 384,
- 526, 539, 540, 552, 553, 565, 566, 579,
- 735, 748, 149, 163, 176, 190, 331, 345,
- 359, 372, 385, 527, 541, 554, 567, 580,
- 736, 749, 136, 150, 164, 177, 178, 191,
- 332, 346, 360, 373, 386, 528, 542, 555,
- 568, 581, 724, 737, 750, 763, 722, 761,
- 762, 775, 931, 944, 723, 776, 932, 945,
- 374, 387, 556, 569, 582, 738, 751, 764,
- 777, 920, 933, 946, 959, 918, 957, 958,
- 971, 1127, 1140, 919, 972, 1128, 1141, 570,
- 583, 752, 765, 778, 934, 947, 960, 973,
- 1116, 1129, 1142, 1155, 150, 151, 163, 164,
- 165, 177, 178, 190, 191, 192, 333, 346,
- 347, 359, 360, 361, 372, 373, 374, 386,
- 387, 529, 542, 543, 555, 556, 568, 569,
- 582, 738, 751, 138, 152, 166, 179, 193,
- 334, 348, 362, 375, 388, 530, 544, 557,
- 570, 583, 739, 752, 139, 153, 167, 180,
- 181, 194, 335, 349, 363, 376, 389, 531,
- 545, 558, 571, 584, 727, 740, 753, 766,
- 725, 764, 765, 778, 934, 947, 726, 779,
- 922, 935, 948, 961, 377, 390, 559, 572,
- 585, 741, 754, 767, 780, 923, 936, 949,
- 962, 921, 960, 974, 1130, 1143, 975, 1131,
- 1144, 573, 586, 755, 768, 781, 937, 950,
- 963, 976, 1119, 1132, 1145, 153, 166, 167,
- 180, 181, 193, 194, 195, 349, 362, 363,
- 375, 376, 377, 389, 390, 545, 558, 559,
- 571, 572, 585, 741, 754, 391, 573, 586,
- 755, 767, 768, 781, 937, 950, 587, 769,
- 782, 951, 963, 964, 977, 1133, 1146, 15,
- 28, 197, 198, 210, 211, 224, 392, 393,
- 394, 406, 407, 420, 588, 589, 602, 603,
- 616, 784, 785, 798, 980, 16, 29, 199,
- 212, 225, 238, 395, 408, 421, 434, 590,
- 604, 617, 786, 799, 812, 981, 994, 17,
- 30, 200, 213, 226, 239, 396, 409, 422,
- 435, 591, 592, 605, 618, 631, 787, 800,
- 813, 982, 995, 1177, 42, 630, 1176, 43,
- 252, 448, 644, 826, 1008, 1190, 31, 44,
- 214, 227, 240, 253, 410, 423, 436, 449,
- 619, 632, 788, 801, 814, 827, 983, 996,
- 1009, 1178, 56, 57, 266, 462, 645, 840,
- 1022, 1191, 45, 58, 228, 241, 254, 267,
- 424, 437, 450, 463, 606, 633, 646, 802,
- 815, 828, 841, 984, 997, 1010, 1023, 1179,
- 1192, 1373, 1372, 1204, 1205, 1374, 1386, 658,
- 1036, 1218, 1387, 620, 659, 829, 842, 998,
- 1011, 1024, 1037, 1180, 1193, 1206, 1219, 1375,
- 1388, 1401, 1568, 1400, 1569, 1570, 1582, 854,
- 1232, 1414, 1583, 816, 855, 1025, 1038, 1194,
- 1207, 1220, 1233, 1376, 1389, 1402, 1415, 1571,
- 1584, 1597, 18, 31, 200, 201, 213, 214,
- 226, 227, 240, 395, 396, 397, 408, 409,
- 410, 422, 423, 436, 591, 592, 604, 605,
- 606, 618, 619, 786, 787, 788, 800, 801,
- 814, 982, 983, 996, 19, 32, 202, 215,
- 228, 241, 398, 411, 424, 437, 593, 607,
- 620, 789, 802, 815, 984, 997, 7, 20,
- 33, 46, 203, 216, 229, 242, 399, 412,
- 425, 438, 594, 595, 608, 621, 634, 790,
- 803, 816, 985, 998, 1180, 45, 254, 450,
- 632, 633, 828, 1010, 1179, 59, 255, 451,
- 647, 829, 1011, 1193, 34, 47, 217, 230,
- 243, 256, 413, 426, 439, 452, 622, 635,
- 791, 804, 817, 830, 986, 999, 1012, 1181,
- 72, 268, 464, 646, 660, 842, 1024, 60,
- 269, 465, 648, 843, 1025, 1194, 48, 61,
- 231, 244, 257, 270, 427, 440, 453, 466,
- 609, 636, 649, 805, 818, 831, 844, 987,
- 1000, 1013, 1026, 1182, 1195, 1178, 1192, 1375,
- 1376, 1206, 1207, 1208, 1377, 856, 1038, 1220,
- 1389, 661, 1039, 1221, 1390, 623, 662, 832,
- 845, 1001, 1014, 1027, 1040, 1183, 1196, 1209,
- 1222, 1378, 1391, 1404, 1374, 1388, 1571, 1402,
- 1403, 1572, 1573, 1234, 1416, 1585, 857, 1235,
- 1417, 1586, 819, 858, 1028, 1041, 1197, 1210,
- 1223, 1236, 1379, 1392, 1405, 1418, 1574, 1587,
- 1600, 21, 34, 203, 204, 216, 217, 229,
- 230, 243, 398, 399, 400, 411, 412, 413,
- 425, 426, 439, 594, 595, 607, 608, 609,
- 621, 622, 789, 790, 791, 803, 804, 817,
- 985, 986, 999, 22, 35, 205, 218, 231,
- 244, 401, 414, 427, 440, 596, 610, 623,
- 792, 805, 818, 987, 1000, 10, 23, 36,
- 49, 206, 219, 232, 245, 402, 415, 428,
- 441, 597, 598, 611, 624, 637, 793, 806,
- 819, 988, 1001, 1183, 48, 257, 453, 635,
- 636, 831, 1013, 1182, 62, 258, 454, 650,
- 832, 1014, 1196, 37, 50, 220, 233, 246,
- 259, 416, 429, 442, 455, 612, 625, 638,
- 794, 807, 820, 833, 989, 1002, 1015, 1184,
- 75, 271, 467, 649, 663, 845, 1027, 63,
- 272, 468, 651, 846, 1028, 1197, 38, 51,
- 64, 234, 247, 260, 273, 430, 443, 456,
- 469, 626, 639, 652, 808, 821, 834, 847,
- 990, 1003, 1016, 1029, 1185, 1198, 1181, 1195,
- 1378, 1379, 1209, 1210, 1211, 1380, 859, 1041,
- 1223, 1392, 664, 1042, 1224, 1393, 665, 822,
- 835, 848, 1004, 1017, 1030, 1043, 1186, 1199,
- 1212, 1225, 1381, 1394, 1407, 1377, 1391, 1574,
- 1405, 1406, 1575, 1576, 1237, 1419, 1588, 860,
- 1238, 1420, 1589, 861, 1018, 1031, 1044, 1200,
- 1213, 1226, 1239, 1382, 1395, 1408, 1421, 1577,
- 1590, 1603, 24, 37, 206, 207, 219, 220,
- 232, 233, 246, 401, 402, 403, 414, 415,
- 416, 428, 429, 442, 597, 598, 610, 611,
- 612, 624, 625, 792, 793, 794, 806, 807,
- 820, 988, 989, 1002, 12, 25, 38, 51,
- 208, 221, 234, 247, 404, 417, 430, 443,
- 599, 613, 626, 795, 808, 821, 990, 1003,
- 1185, 13, 26, 39, 52, 209, 222, 235,
- 248, 405, 418, 431, 444, 600, 601, 614,
- 627, 640, 796, 809, 822, 991, 1004, 1186,
- 260, 456, 638, 639, 834, 1016, 65, 261,
- 457, 653, 835, 1017, 1199, 40, 53, 223,
- 236, 249, 262, 419, 432, 445, 458, 615,
- 628, 641, 654, 797, 810, 823, 836, 992,
- 1005, 1018, 1187, 274, 470, 652, 848, 1030,
- 66, 275, 471, 667, 849, 1031, 1200, 1213,
- 41, 54, 67, 80, 237, 250, 263, 276,
- 433, 446, 459, 472, 629, 642, 655, 668,
- 811, 824, 837, 850, 993, 1006, 1019, 1032,
- 1188, 1201, 1184, 1198, 1381, 1382, 1212, 1214,
- 1383, 666, 1044, 1226, 1395, 1045, 1227, 1396,
- 825, 838, 851, 864, 1007, 1020, 1033, 1046,
- 1189, 1202, 1215, 1228, 1384, 1397, 1380, 1394,
- 1577, 1408, 1409, 1578, 1410, 1579, 862, 1240,
- 1422, 1591, 863, 1059, 1241, 1423, 1592, 1605,
- 1021, 1034, 1047, 1060, 1203, 1216, 1229, 1242,
- 1385, 1398, 1411, 1424, 1580, 1593, 27, 40,
- 209, 222, 223, 235, 236, 249, 404, 405,
- 417, 418, 419, 431, 432, 445, 600, 601,
- 613, 614, 615, 627, 628, 795, 796, 797,
- 809, 810, 823, 991, 992, 1005, 41, 54,
- 237, 250, 263, 433, 446, 459, 629, 641,
- 642, 811, 824, 837, 993, 1006, 1019, 1188,
- 55, 68, 251, 264, 277, 447, 460, 473,
- 643, 655, 656, 825, 838, 851, 1007, 1020,
- 1033, 1189, 1202, 1187, 1201, 1215, 1384, 669,
- 839, 852, 1021, 1034, 1047, 1203, 1216, 1229,
- 1385, 1398, 1383, 1397, 1411, 1580, 865, 1035,
- 1048, 1217, 1230, 1243, 1399, 1412, 1425, 1581,
- 1594, 57, 70, 226, 239, 240, 252, 253,
- 266, 408, 421, 422, 434, 435, 436, 448,
- 449, 462, 603, 604, 616, 617, 618, 630,
- 631, 644, 645, 658, 786, 799, 800, 812,
- 813, 814, 826, 827, 840, 982, 995, 996,
- 1008, 1009, 1022, 1191, 1204, 58, 71, 227,
- 241, 254, 267, 280, 409, 423, 437, 450,
- 463, 476, 591, 605, 619, 632, 646, 659,
- 787, 801, 815, 828, 841, 854, 983, 997,
- 1010, 1023, 1036, 1192, 1205, 46, 59, 72,
- 85, 228, 242, 255, 268, 281, 410, 424,
- 438, 451, 464, 477, 592, 606, 620, 633,
- 634, 647, 660, 673, 788, 802, 816, 829,
- 842, 855, 984, 998, 1011, 1024, 1037, 1180,
- 1193, 1206, 1219, 84, 672, 1218, 98, 294,
- 490, 686, 868, 1050, 73, 86, 256, 269,
- 282, 295, 452, 465, 478, 491, 661, 674,
- 830, 843, 856, 869, 1012, 1025, 1038, 1051,
- 1207, 1220, 1232, 99, 308, 504, 687, 882,
- 1064, 1233, 74, 87, 100, 113, 270, 283,
- 296, 309, 466, 479, 492, 505, 648, 675,
- 688, 844, 857, 870, 883, 1026, 1039, 1052,
- 1065, 1221, 1234, 1178, 1387, 1400, 1179, 1375,
- 1388, 1401, 1414, 1194, 1376, 1389, 1402, 1415,
- 1246, 1208, 1247, 1403, 1416, 1428, 700, 1078,
- 1260, 1429, 662, 701, 858, 871, 884, 897,
- 1040, 1053, 1066, 1079, 1222, 1235, 1248, 1261,
- 1404, 1417, 1430, 1443, 1374, 1583, 1596, 1571,
- 1584, 1597, 1610, 1390, 1585, 1598, 1442, 1611,
- 1599, 1612, 1624, 896, 1274, 1456, 1625, 1067,
- 1080, 1236, 1249, 1262, 1275, 1418, 1431, 1444,
- 1457, 1600, 1613, 1626, 1639, 60, 73, 229,
- 242, 243, 255, 256, 268, 269, 282, 411,
- 424, 425, 437, 438, 439, 450, 451, 452,
- 464, 465, 478, 606, 607, 619, 620, 621,
- 633, 634, 646, 647, 648, 660, 661, 789,
- 802, 803, 815, 816, 817, 828, 829, 830,
- 842, 843, 856, 985, 998, 999, 1011, 1012,
- 1024, 1025, 1038, 1194, 1207, 61, 74, 230,
- 244, 257, 270, 283, 412, 426, 440, 453,
- 466, 479, 594, 608, 622, 635, 649, 662,
- 790, 804, 818, 831, 844, 857, 986, 1000,
- 1013, 1026, 1039, 1195, 1208, 49, 62, 75,
- 88, 231, 245, 258, 271, 284, 413, 427,
- 441, 454, 467, 480, 595, 609, 623, 636,
- 637, 650, 663, 676, 791, 805, 819, 832,
- 845, 858, 987, 1001, 1014, 1027, 1040, 1183,
- 1196, 1209, 1222, 87, 100, 296, 492, 674,
- 675, 688, 870, 1052, 1221, 101, 297, 493,
- 689, 871, 1053, 76, 89, 259, 272, 285,
- 298, 455, 468, 481, 494, 664, 677, 833,
- 846, 859, 872, 1015, 1028, 1041, 1054, 1210,
- 1223, 114, 310, 506, 702, 884, 1066, 1235,
- 102, 311, 507, 690, 885, 1067, 1236, 77,
- 90, 103, 116, 273, 286, 299, 312, 469,
- 482, 495, 508, 651, 678, 691, 847, 860,
- 873, 886, 1029, 1042, 1055, 1068, 1224, 1237,
- 1181, 1220, 1234, 1390, 1403, 1182, 1378, 1391,
- 1404, 1417, 1197, 1379, 1392, 1405, 1418, 1248,
- 1430, 1249, 1211, 1250, 1406, 1419, 898, 1080,
- 1262, 1431, 703, 1081, 1263, 1432, 665, 704,
- 861, 874, 887, 900, 1043, 1056, 1069, 1082,
- 1225, 1238, 1251, 1264, 1407, 1420, 1433, 1446,
- 1377, 1416, 1586, 1599, 1574, 1587, 1600, 1613,
- 1393, 1588, 1601, 1444, 1626, 1445, 1614, 1602,
- 1615, 1276, 1458, 1627, 899, 1277, 1459, 1628,
- 1070, 1083, 1239, 1252, 1265, 1278, 1421, 1434,
- 1447, 1460, 1603, 1616, 1629, 1642, 63, 76,
- 232, 245, 246, 258, 259, 271, 272, 285,
- 414, 427, 428, 440, 441, 442, 453, 454,
- 455, 467, 468, 481, 609, 610, 622, 623,
- 624, 636, 637, 649, 650, 651, 663, 664,
- 792, 805, 806, 818, 819, 820, 831, 832,
- 833, 845, 846, 859, 988, 1001, 1002, 1014,
- 1015, 1027, 1028, 1041, 1197, 1210, 64, 77,
- 233, 247, 260, 273, 286, 415, 429, 443,
- 456, 469, 482, 597, 611, 625, 638, 652,
- 665, 793, 807, 821, 834, 847, 860, 989,
- 1003, 1016, 1029, 1042, 1198, 1211, 52, 65,
- 78, 91, 234, 248, 261, 274, 287, 416,
- 430, 444, 457, 470, 483, 598, 612, 626,
- 639, 640, 653, 666, 679, 794, 808, 822,
- 835, 848, 861, 990, 1004, 1017, 1030, 1043,
- 1186, 1199, 1212, 1225, 90, 103, 299, 495,
- 677, 678, 691, 873, 1055, 1224, 104, 300,
- 496, 692, 874, 1056, 79, 92, 262, 275,
- 288, 301, 458, 471, 484, 497, 654, 667,
- 680, 836, 849, 862, 875, 1018, 1031, 1044,
- 1057, 1200, 1213, 1226, 117, 313, 509, 705,
- 887, 1069, 1238, 105, 314, 510, 693, 888,
- 1070, 1239, 80, 93, 106, 119, 276, 289,
- 302, 315, 472, 485, 498, 511, 668, 681,
- 694, 850, 863, 876, 889, 1032, 1045, 1058,
- 1071, 1214, 1227, 1240, 1184, 1223, 1237, 1393,
- 1406, 1185, 1381, 1394, 1407, 1420, 1382, 1395,
- 1408, 1421, 1251, 1433, 1252, 1253, 1409, 1422,
- 901, 1083, 1265, 1434, 706, 1084, 1266, 1435,
- 707, 864, 877, 890, 903, 1046, 1059, 1072,
- 1085, 1228, 1241, 1254, 1267, 1410, 1423, 1436,
- 1449, 1380, 1419, 1589, 1602, 1577, 1590, 1603,
- 1616, 1396, 1591, 1604, 1447, 1629, 1448, 1617,
- 1592, 1605, 1618, 1279, 1461, 1630, 902, 1280,
- 1462, 1631, 1060, 1073, 1086, 1242, 1255, 1268,
- 1281, 1424, 1437, 1450, 1463, 1606, 1619, 1632,
- 1645, 66, 79, 235, 248, 249, 261, 262,
- 274, 275, 288, 417, 430, 431, 443, 444,
- 445, 456, 457, 458, 470, 471, 484, 612,
- 613, 625, 626, 627, 639, 640, 652, 653,
- 654, 666, 667, 795, 808, 809, 821, 822,
- 823, 834, 835, 836, 848, 849, 862, 991,
- 1004, 1005, 1017, 1018, 1030, 1031, 1044, 1200,
- 1213, 67, 80, 93, 236, 250, 263, 276,
- 289, 418, 432, 446, 459, 472, 485, 600,
- 614, 628, 641, 655, 668, 796, 810, 824,
- 837, 850, 863, 992, 1006, 1019, 1032, 1045,
- 1201, 1214, 55, 68, 81, 94, 237, 251,
- 264, 277, 290, 419, 433, 447, 460, 473,
- 486, 601, 615, 629, 642, 643, 656, 669,
- 682, 797, 811, 825, 838, 851, 864, 993,
- 1007, 1020, 1033, 1046, 1189, 1202, 1215, 1228,
- 302, 498, 680, 681, 876, 1058, 1227, 107,
- 303, 499, 695, 877, 1059, 1241, 82, 95,
- 265, 278, 291, 304, 461, 474, 487, 500,
- 657, 670, 683, 696, 839, 852, 865, 878,
- 1021, 1034, 1047, 1060, 1203, 1216, 1229, 316,
- 512, 694, 890, 1072, 108, 317, 513, 709,
- 891, 1073, 1242, 1255, 96, 109, 279, 292,
- 305, 318, 475, 488, 501, 514, 684, 697,
- 853, 866, 879, 892, 1035, 1048, 1061, 1074,
- 1217, 1230, 1243, 1187, 1226, 1240, 1396, 1409,
- 1188, 1384, 1397, 1410, 1423, 1385, 1398, 1411,
- 1254, 1424, 1437, 1256, 1412, 1425, 708, 1086,
- 1268, 905, 1087, 1269, 1438, 671, 710, 880,
- 893, 1049, 1062, 1075, 1088, 1231, 1244, 1257,
- 1270, 1413, 1426, 1439, 1383, 1422, 1436, 1592,
- 1605, 1580, 1593, 1606, 1619, 1399, 1594, 1607,
- 1450, 1451, 1620, 1452, 1595, 1608, 1621, 1634,
- 904, 1282, 1464, 1633, 1101, 1283, 1465, 1647,
- 867, 906, 1076, 1089, 1245, 1258, 1271, 1284,
- 1427, 1440, 1453, 1466, 1609, 1622, 1635, 69,
- 82, 251, 264, 265, 277, 278, 291, 433,
- 446, 447, 459, 460, 461, 473, 474, 487,
- 615, 628, 629, 642, 643, 655, 656, 657,
- 669, 670, 811, 824, 825, 837, 838, 839,
- 851, 852, 865, 1007, 1020, 1021, 1033, 1034,
- 1047, 1203, 1216, 83, 96, 279, 292, 305,
- 475, 488, 501, 671, 683, 684, 853, 866,
- 879, 1035, 1048, 1061, 1217, 1230, 97, 110,
- 293, 306, 319, 489, 502, 515, 685, 697,
- 698, 867, 880, 893, 1049, 1062, 1075, 1231,
- 1244, 1229, 1243, 1399, 1412, 1257, 1413, 1426,
- 711, 881, 894, 1063, 1076, 1089, 1245, 1258,
- 1271, 1427, 1440, 1425, 1439, 1595, 1608, 1453,
- 1609, 1622, 907, 1077, 1090, 1259, 1272, 1285,
- 1441, 1454, 1467, 1623, 1636, 99, 112, 268,
- 281, 282, 294, 295, 308, 450, 463, 464,
- 476, 477, 478, 490, 491, 504, 645, 646,
- 658, 659, 660, 672, 673, 686, 687, 700,
- 828, 841, 842, 854, 855, 856, 868, 869,
- 882, 1024, 1037, 1038, 1050, 1051, 1064, 1233,
- 1246, 100, 113, 269, 283, 296, 309, 322,
- 451, 465, 479, 492, 505, 518, 633, 647,
- 661, 674, 688, 701, 829, 843, 857, 870,
- 883, 896, 1025, 1039, 1052, 1065, 1078, 1234,
- 1247, 88, 101, 114, 127, 270, 284, 297,
- 310, 323, 452, 466, 480, 493, 506, 519,
- 648, 662, 675, 676, 689, 702, 715, 830,
- 844, 858, 871, 884, 897, 1026, 1040, 1053,
- 1066, 1079, 1235, 1248, 126, 714, 1260, 336,
- 532, 910, 1092, 1261, 115, 128, 298, 311,
- 324, 337, 494, 507, 520, 533, 703, 716,
- 872, 885, 898, 911, 1054, 1067, 1080, 1093,
- 1249, 1262, 140, 728, 1274, 141, 350, 546,
- 729, 924, 1106, 1275, 116, 129, 142, 155,
- 312, 325, 338, 351, 508, 521, 534, 547,
- 690, 717, 730, 743, 886, 899, 912, 925,
- 1068, 1081, 1094, 1107, 1263, 1276, 1220, 1429,
- 1442, 1221, 1417, 1430, 1443, 1456, 1222, 1236,
- 1431, 1444, 1288, 1457, 1250, 1289, 1445, 1458,
- 1470, 742, 1120, 1302, 1471, 704, 900, 913,
- 926, 939, 1082, 1095, 1108, 1121, 1264, 1277,
- 1290, 1303, 1446, 1459, 1472, 1485, 1416, 1625,
- 1638, 1613, 1626, 1639, 1652, 1418, 1432, 1627,
- 1640, 1484, 1653, 1641, 1654, 1666, 938, 1316,
- 1498, 1667, 1109, 1122, 1135, 1278, 1291, 1304,
- 1317, 1460, 1473, 1486, 1499, 1642, 1655, 1668,
- 1681, 102, 115, 271, 284, 285, 297, 298,
- 310, 311, 324, 453, 466, 467, 479, 480,
- 481, 492, 493, 494, 506, 507, 520, 648,
- 649, 661, 662, 663, 675, 676, 688, 689,
- 690, 702, 703, 831, 844, 845, 857, 858,
- 859, 870, 871, 872, 884, 885, 898, 1027,
- 1040, 1041, 1053, 1054, 1066, 1067, 1080, 1236,
- 1249, 103, 116, 272, 286, 299, 312, 325,
- 454, 468, 482, 495, 508, 521, 636, 650,
- 664, 677, 691, 704, 832, 846, 860, 873,
- 886, 899, 1028, 1042, 1055, 1068, 1081, 1237,
- 1250, 91, 104, 117, 130, 273, 287, 300,
- 313, 326, 455, 469, 483, 496, 509, 522,
- 651, 665, 678, 679, 692, 705, 718, 833,
- 847, 861, 874, 887, 900, 1029, 1043, 1056,
- 1069, 1082, 1238, 1251, 129, 142, 338, 534,
- 716, 717, 730, 912, 1094, 1263, 339, 535,
- 913, 1095, 1264, 118, 131, 301, 314, 327,
- 340, 497, 510, 523, 536, 706, 719, 875,
- 888, 901, 914, 1057, 1070, 1083, 1096, 1252,
- 1265, 143, 156, 352, 548, 731, 744, 926,
- 1108, 1277, 144, 353, 549, 732, 927, 1109,
- 1278, 119, 132, 145, 158, 315, 328, 341,
- 354, 511, 524, 537, 550, 693, 720, 733,
- 746, 889, 902, 915, 928, 1071, 1084, 1097,
- 1110, 1266, 1279, 1223, 1262, 1276, 1432, 1445,
- 1224, 1420, 1433, 1446, 1459, 1225, 1239, 1434,
- 1447, 1290, 1472, 1291, 1460, 1253, 1292, 1448,
- 1461, 940, 1122, 1304, 1473, 745, 1123, 1305,
- 1474, 707, 903, 916, 929, 942, 1085, 1098,
- 1111, 1124, 1267, 1280, 1293, 1306, 1449, 1462,
- 1475, 1488, 1419, 1458, 1628, 1641, 1616, 1629,
- 1642, 1655, 1421, 1435, 1630, 1643, 1486, 1487,
- 1656, 1644, 1657, 1318, 1500, 1669, 941, 1319,
- 1501, 1670, 1112, 1125, 1138, 1281, 1294, 1307,
- 1320, 1463, 1476, 1489, 1502, 1645, 1658, 1671,
- 1684, 105, 118, 274, 287, 288, 300, 301,
- 313, 314, 327, 456, 469, 470, 482, 483,
- 484, 495, 496, 497, 509, 510, 523, 651,
- 652, 664, 665, 666, 678, 679, 691, 692,
- 693, 705, 706, 834, 847, 848, 860, 861,
- 862, 873, 874, 875, 887, 888, 901, 1030,
- 1043, 1044, 1056, 1057, 1069, 1070, 1083, 1239,
- 1252, 106, 119, 275, 289, 302, 315, 328,
- 457, 471, 485, 498, 511, 524, 639, 653,
- 667, 680, 694, 707, 835, 849, 863, 876,
- 889, 902, 1031, 1045, 1058, 1071, 1084, 1240,
- 1253, 94, 107, 120, 276, 290, 303, 316,
- 329, 458, 472, 486, 499, 512, 525, 640,
- 654, 668, 681, 682, 695, 708, 836, 850,
- 864, 877, 890, 903, 1032, 1046, 1059, 1072,
- 1085, 1228, 1241, 1254, 132, 145, 341, 537,
- 719, 720, 733, 915, 1097, 1266, 133, 342,
- 538, 721, 916, 1098, 1267, 121, 134, 304,
- 317, 330, 343, 500, 513, 526, 539, 696,
- 709, 722, 735, 878, 891, 904, 917, 1060,
- 1073, 1086, 1099, 1242, 1255, 1268, 1281, 146,
- 355, 551, 734, 929, 1111, 1280, 147, 356,
- 552, 930, 1112, 135, 148, 318, 331, 344,
- 357, 514, 527, 540, 553, 723, 736, 892,
- 905, 918, 931, 1074, 1087, 1100, 1113, 1256,
- 1269, 1282, 1226, 1265, 1279, 1435, 1448, 1227,
- 1423, 1436, 1449, 1462, 1424, 1437, 1450, 1293,
- 1475, 1294, 1463, 1295, 1438, 1451, 1464, 747,
- 1125, 1307, 1476, 748, 1126, 1308, 1477, 710,
- 749, 919, 932, 1088, 1101, 1114, 1127, 1270,
- 1283, 1296, 1309, 1452, 1465, 1478, 1491, 1422,
- 1461, 1631, 1644, 1619, 1632, 1645, 1658, 1633,
- 1646, 1489, 1490, 1659, 1634, 1647, 1660, 1673,
- 943, 1321, 1503, 1672, 944, 1322, 1504, 906,
- 945, 1115, 1128, 1284, 1297, 1310, 1323, 1466,
- 1479, 1492, 1505, 1648, 1661, 1674, 1687, 108,
- 121, 277, 290, 291, 303, 304, 316, 317,
- 330, 459, 472, 473, 485, 486, 487, 498,
- 499, 500, 512, 513, 526, 654, 655, 667,
- 668, 669, 681, 682, 694, 695, 696, 708,
- 709, 837, 850, 851, 863, 864, 865, 876,
- 877, 878, 890, 891, 904, 1033, 1046, 1047,
- 1059, 1060, 1072, 1073, 1086, 1242, 1255, 109,
- 122, 278, 292, 305, 318, 331, 460, 474,
- 488, 501, 514, 527, 642, 656, 670, 683,
- 697, 710, 838, 852, 866, 879, 892, 905,
- 1034, 1048, 1061, 1074, 1087, 1243, 1256, 97,
- 110, 123, 136, 279, 293, 306, 319, 332,
- 461, 475, 489, 502, 515, 528, 643, 657,
- 671, 684, 685, 698, 711, 724, 839, 853,
- 867, 880, 893, 906, 1035, 1049, 1062, 1075,
- 1088, 1231, 1244, 1257, 1270, 135, 344, 540,
- 722, 723, 918, 1100, 1269, 149, 345, 541,
- 737, 919, 1101, 1283, 124, 137, 307, 320,
- 333, 346, 503, 516, 529, 542, 699, 712,
- 725, 738, 881, 894, 907, 920, 1063, 1076,
- 1089, 1102, 1258, 1271, 162, 358, 554, 736,
- 750, 932, 1114, 1296, 150, 359, 555, 751,
- 933, 1115, 1284, 138, 151, 321, 334, 347,
- 360, 517, 530, 543, 556, 726, 739, 752,
- 895, 908, 921, 934, 1077, 1090, 1103, 1116,
- 1272, 1285, 1229, 1268, 1282, 1438, 1451, 1230,
- 1426, 1439, 1452, 1465, 1245, 1427, 1440, 1453,
- 1466, 1297, 1479, 1259, 1298, 1454, 1467, 946,
- 1128, 1310, 1492, 947, 1129, 1311, 1480, 713,
- 922, 935, 948, 1091, 1104, 1117, 1130, 1273,
- 1286, 1299, 1312, 1455, 1468, 1481, 1494, 1425,
- 1464, 1478, 1634, 1647, 1622, 1635, 1648, 1661,
- 1441, 1636, 1649, 1493, 1662, 1675, 1637, 1650,
- 1663, 1676, 1324, 1506, 1143, 1325, 1507, 1689,
- 909, 1118, 1131, 1144, 1287, 1300, 1313, 1326,
- 1469, 1482, 1495, 1508, 1651, 1664, 1677, 1690,
- 111, 124, 293, 306, 307, 319, 320, 333,
- 475, 488, 489, 501, 502, 503, 515, 516,
- 529, 657, 670, 671, 684, 685, 697, 698,
- 699, 711, 712, 853, 866, 867, 879, 880,
- 881, 893, 894, 907, 1049, 1062, 1063, 1075,
- 1076, 1089, 1245, 1258, 125, 138, 321, 334,
- 347, 517, 530, 543, 713, 725, 726, 895,
- 908, 921, 1077, 1090, 1103, 1259, 1272, 139,
- 152, 165, 335, 348, 361, 531, 544, 557,
- 727, 739, 740, 753, 909, 922, 935, 1091,
- 1104, 1117, 1273, 1286, 1299, 1271, 1285, 1441,
- 1454, 1455, 1468, 923, 936, 949, 1105, 1118,
- 1131, 1287, 1300, 1313, 1469, 1482, 1495, 1467,
- 1481, 1637, 1650, 1651, 1664, 1119, 1132, 1301,
- 1314, 1327, 1483, 1496, 1509, 1665, 1678, 141,
- 154, 310, 323, 324, 336, 337, 350, 492,
- 505, 506, 518, 519, 520, 532, 533, 546,
- 687, 688, 700, 701, 702, 714, 715, 728,
- 729, 742, 870, 883, 884, 896, 897, 898,
- 910, 911, 924, 1066, 1079, 1080, 1092, 1093,
- 1106, 1275, 1288, 142, 155, 311, 325, 338,
- 351, 364, 493, 507, 521, 534, 547, 560,
- 675, 689, 703, 716, 730, 743, 871, 885,
- 899, 912, 925, 938, 1067, 1081, 1094, 1107,
- 1120, 1276, 1289, 130, 143, 156, 169, 312,
- 326, 339, 352, 365, 494, 508, 522, 535,
- 548, 561, 690, 704, 717, 718, 731, 744,
- 757, 872, 886, 900, 913, 926, 939, 1068,
- 1082, 1095, 1108, 1121, 1277, 1290, 168, 756,
- 1302, 378, 574, 952, 1134, 1303, 157, 170,
- 340, 353, 366, 379, 536, 549, 562, 575,
- 745, 758, 914, 927, 940, 953, 1096, 1109,
- 1122, 1135, 1291, 1304, 182, 770, 1316, 183,
- 771, 966, 1148, 1317, 158, 171, 184, 354,
- 367, 380, 550, 563, 576, 732, 746, 759,
- 772, 928, 941, 954, 967, 1110, 1123, 1136,
- 1149, 1305, 1318, 1262, 1471, 1484, 1263, 1459,
- 1472, 1485, 1498, 1264, 1278, 1473, 1486, 1330,
- 1499, 1292, 1331, 1487, 1500, 1512, 1162, 1344,
- 1513, 942, 955, 968, 1124, 1137, 1150, 1163,
- 1306, 1319, 1332, 1345, 1488, 1501, 1514, 1458,
- 1667, 1680, 1655, 1668, 1681, 1694, 1460, 1474,
- 1669, 1682, 1526, 1695, 1527, 1683, 1696, 1708,
- 1358, 1540, 1709, 1138, 1151, 1164, 1320, 1333,
- 1346, 1359, 1502, 1515, 1528, 1541, 1684, 1697,
- 1710, 144, 157, 313, 326, 327, 339, 340,
- 352, 353, 366, 495, 508, 509, 521, 522,
- 523, 534, 535, 536, 548, 549, 562, 690,
- 691, 703, 704, 705, 717, 718, 730, 731,
- 732, 744, 745, 873, 886, 887, 899, 900,
- 901, 912, 913, 914, 926, 927, 940, 1069,
- 1082, 1083, 1095, 1096, 1108, 1109, 1122, 1278,
- 1291, 145, 158, 314, 328, 341, 354, 367,
- 496, 510, 524, 537, 550, 563, 678, 692,
- 706, 719, 733, 746, 874, 888, 902, 915,
- 928, 941, 1070, 1084, 1097, 1110, 1123, 1279,
- 1292, 146, 159, 315, 329, 342, 355, 368,
- 497, 511, 525, 538, 551, 564, 693, 707,
- 720, 734, 747, 875, 889, 903, 916, 929,
- 942, 1071, 1085, 1098, 1111, 1124, 1280, 1293,
- 171, 184, 380, 576, 758, 759, 772, 954,
- 1136, 1305, 172, 381, 577, 760, 955, 1137,
- 1306, 160, 173, 343, 356, 369, 382, 539,
- 552, 565, 578, 721, 735, 748, 761, 774,
- 917, 930, 943, 956, 1099, 1112, 1125, 1138,
- 1281, 1294, 1307, 1320, 185, 773, 968, 1150,
- 1319, 186, 969, 1151, 1333, 174, 187, 357,
- 370, 383, 553, 566, 579, 762, 775, 931,
- 944, 957, 970, 1113, 1126, 1139, 1152, 1308,
- 1321, 1265, 1304, 1318, 1474, 1487, 1266, 1462,
- 1475, 1488, 1501, 1267, 1476, 1489, 1332, 1514,
- 1502, 1295, 1334, 1490, 1503, 1164, 1346, 1515,
- 1165, 1347, 1516, 749, 958, 971, 1127, 1140,
- 1153, 1166, 1309, 1322, 1335, 1348, 1491, 1504,
- 1517, 1461, 1500, 1670, 1683, 1658, 1671, 1684,
- 1697, 1463, 1477, 1672, 1685, 1528, 1529, 1698,
- 1530, 1673, 1686, 1699, 1712, 1360, 1542, 1711,
- 1361, 1543, 1725, 945, 1154, 1167, 1323, 1336,
- 1349, 1362, 1505, 1518, 1531, 1544, 1687, 1700,
- 1713, 147, 160, 316, 329, 330, 342, 343,
- 355, 356, 369, 498, 511, 512, 524, 525,
- 526, 537, 538, 539, 551, 552, 565, 693,
- 694, 706, 707, 708, 720, 721, 733, 734,
- 735, 747, 748, 876, 889, 890, 902, 903,
- 904, 915, 916, 917, 929, 930, 943, 1072,
- 1085, 1086, 1098, 1099, 1111, 1112, 1125, 1281,
- 1294, 148, 161, 317, 331, 344, 357, 370,
- 499, 513, 527, 540, 553, 566, 695, 709,
- 722, 736, 749, 877, 891, 905, 918, 931,
- 944, 1073, 1087, 1100, 1113, 1126, 1282, 1295,
- 136, 149, 162, 175, 318, 332, 345, 358,
- 371, 500, 514, 528, 541, 554, 567, 682,
- 696, 710, 723, 724, 737, 750, 763, 878,
- 892, 906, 919, 932, 945, 1074, 1088, 1101,
- 1114, 1127, 1270, 1283, 1296, 1309, 174, 383,
- 579, 761, 762, 957, 1139, 1308, 188, 384,
- 580, 776, 958, 1140, 1322, 163, 176, 346,
- 359, 372, 385, 542, 555, 568, 581, 738,
- 751, 764, 777, 920, 933, 946, 959, 1102,
- 1115, 1128, 1141, 1297, 1310, 775, 971, 1153,
- 1335, 189, 972, 1154, 1323, 177, 190, 360,
- 373, 386, 556, 569, 582, 752, 765, 778,
- 934, 947, 960, 973, 1116, 1129, 1142, 1155,
- 1311, 1324, 1268, 1307, 1321, 1477, 1490, 1269,
- 1478, 1491, 1284, 1466, 1479, 1492, 1505, 1504,
- 1336, 1518, 1298, 1337, 1493, 1506, 1167, 1349,
- 1531, 1168, 1350, 1519, 948, 961, 974, 1130,
- 1143, 1156, 1169, 1312, 1325, 1338, 1351, 1494,
- 1507, 1520, 1533, 1464, 1503, 1517, 1673, 1686,
- 1465, 1674, 1687, 1480, 1662, 1675, 1688, 1701,
- 1700, 1532, 1714, 1676, 1689, 1702, 1715, 1363,
- 1545, 1364, 1546, 1144, 1157, 1170, 1326, 1339,
- 1352, 1365, 1508, 1521, 1534, 1547, 1690, 1703,
- 1716, 1729, 150, 163, 319, 332, 333, 345,
- 346, 358, 359, 372, 501, 514, 515, 527,
- 528, 529, 540, 541, 542, 554, 555, 568,
- 696, 697, 709, 710, 711, 723, 724, 736,
- 737, 738, 750, 751, 879, 892, 893, 905,
- 906, 907, 918, 919, 920, 932, 933, 946,
- 1075, 1088, 1089, 1101, 1102, 1114, 1115, 1128,
- 1284, 1297, 151, 164, 320, 334, 347, 360,
- 373, 502, 516, 530, 543, 556, 569, 684,
- 698, 712, 725, 739, 752, 880, 894, 908,
- 921, 934, 947, 1076, 1090, 1103, 1116, 1129,
- 1285, 1298, 139, 152, 165, 178, 321, 335,
- 348, 361, 374, 503, 517, 531, 544, 557,
- 570, 685, 699, 713, 726, 727, 740, 753,
- 766, 881, 895, 909, 922, 935, 948, 1077,
- 1091, 1104, 1117, 1130, 1273, 1286, 1299, 1312,
- 177, 386, 582, 764, 765, 960, 1142, 1311,
- 191, 387, 583, 779, 961, 1143, 1325, 166,
- 179, 349, 362, 375, 388, 545, 558, 571,
- 584, 741, 754, 767, 780, 923, 936, 949,
- 962, 1105, 1118, 1131, 1144, 1300, 1313, 778,
- 974, 1156, 192, 975, 1157, 1326, 180, 193,
- 363, 376, 389, 559, 572, 585, 755, 768,
- 781, 937, 950, 963, 976, 1119, 1132, 1145,
- 1158, 1314, 1327, 1271, 1310, 1324, 1480, 1493,
- 1272, 1468, 1481, 1494, 1507, 1287, 1469, 1482,
- 1495, 1508, 1338, 1339, 1301, 1340, 1496, 1509,
- 1170, 1352, 1521, 1171, 1353, 1522, 951, 964,
- 977, 1133, 1146, 1159, 1172, 1315, 1328, 1341,
- 1354, 1510, 1523, 1467, 1506, 1520, 1676, 1689,
- 1664, 1677, 1690, 1703, 1483, 1665, 1678, 1691,
- 1534, 1535, 1704, 1497, 1536, 1692, 1705, 1366,
- 1548, 1717, 1367, 1549, 1718, 1147, 1160, 1173,
- 1329, 1342, 1355, 1368, 1511, 1524, 1537, 1550,
- 1693, 1706, 1719, 153, 166, 335, 348, 349,
- 361, 362, 375, 517, 530, 531, 543, 544,
- 545, 557, 558, 571, 699, 712, 713, 726,
- 727, 739, 740, 741, 753, 754, 895, 908,
- 909, 921, 922, 923, 935, 936, 949, 1091,
- 1104, 1105, 1117, 1118, 1131, 1287, 1300, 167,
- 180, 363, 376, 389, 559, 572, 585, 755,
- 767, 768, 937, 950, 963, 1119, 1132, 1145,
- 1301, 1314, 181, 194, 377, 390, 573, 586,
- 769, 781, 782, 951, 964, 977, 1133, 1146,
- 1159, 1315, 1328, 1313, 1327, 1483, 1496, 1341,
- 1497, 1510, 965, 978, 1147, 1160, 1173, 1329,
- 1342, 1355, 1511, 1524, 1509, 1523, 1679, 1692,
- 1537, 1693, 1706, 1161, 1174, 1343, 1356, 1369,
- 1525, 1538, 1551, 1707, 1720, 183, 352, 365,
- 366, 378, 379, 534, 547, 548, 560, 561,
- 562, 574, 575, 729, 730, 742, 743, 744,
- 756, 757, 770, 771, 912, 925, 926, 938,
- 939, 940, 952, 953, 966, 1108, 1121, 1122,
- 1134, 1135, 1148, 1317, 1330, 184, 353, 367,
- 380, 535, 549, 563, 576, 731, 745, 758,
- 772, 913, 927, 941, 954, 967, 1109, 1123,
- 1136, 1149, 1162, 1318, 1331, 185, 354, 368,
- 381, 536, 550, 564, 577, 732, 746, 759,
- 773, 914, 928, 942, 955, 968, 1110, 1124,
- 1137, 1150, 1163, 1319, 1332, 1304, 1344, 1513,
- 1526, 1305, 1345, 1358, 1514, 1527, 760, 969,
- 1138, 1151, 1164, 1306, 1320, 1333, 1346, 1359,
- 1515, 1528, 1500, 1540, 1709, 1722, 1501, 1541,
- 1554, 1710, 1723, 956, 1165, 1334, 1347, 1360,
- 1502, 1516, 1529, 1542, 1555, 1711, 1724, 186,
- 355, 368, 369, 381, 382, 537, 550, 551,
- 563, 564, 565, 576, 577, 578, 732, 733,
- 745, 746, 747, 759, 760, 772, 773, 774,
- 915, 928, 929, 941, 942, 943, 954, 955,
- 956, 968, 969, 1111, 1124, 1125, 1137, 1138,
- 1150, 1151, 1164, 1320, 1333, 187, 356, 370,
- 383, 538, 552, 566, 579, 734, 748, 761,
- 775, 916, 930, 944, 957, 970, 1112, 1126,
- 1139, 1152, 1165, 1321, 1334, 175, 188, 357,
- 371, 384, 539, 553, 567, 580, 721, 735,
- 749, 762, 763, 776, 917, 931, 945, 958,
- 971, 1113, 1127, 1140, 1153, 1166, 1309, 1322,
- 1335, 1348, 1307, 1346, 1347, 1360, 1516, 1529,
- 1308, 1361, 1517, 1530, 959, 972, 1141, 1154,
- 1167, 1323, 1336, 1349, 1362, 1505, 1518, 1531,
- 1544, 1503, 1542, 1543, 1556, 1712, 1725, 1738,
- 1504, 1557, 1713, 1726, 1155, 1168, 1337, 1350,
- 1363, 1519, 1532, 1545, 1558, 1701, 1714, 1727,
- 1740, 189, 358, 371, 372, 384, 385, 540,
- 553, 554, 566, 567, 568, 579, 580, 581,
- 735, 736, 748, 749, 750, 762, 763, 775,
- 776, 777, 918, 931, 932, 944, 945, 946,
- 957, 958, 959, 971, 972, 1114, 1127, 1128,
- 1140, 1141, 1153, 1154, 1167, 1323, 1336, 190,
- 359, 373, 386, 541, 555, 569, 582, 737,
- 751, 764, 778, 919, 933, 947, 960, 973,
- 1115, 1129, 1142, 1155, 1168, 1324, 1337, 178,
- 191, 360, 374, 387, 542, 556, 570, 583,
- 724, 738, 752, 765, 766, 779, 920, 934,
- 948, 961, 974, 1116, 1130, 1143, 1156, 1169,
- 1312, 1325, 1338, 1351, 1310, 1349, 1350, 1363,
- 1519, 1532, 1311, 1364, 1520, 1533, 962, 975,
- 1144, 1157, 1170, 1326, 1339, 1352, 1365, 1508,
- 1521, 1534, 1547, 1506, 1545, 1546, 1559, 1715,
- 1728, 1507, 1560, 1716, 1729, 1158, 1171, 1340,
- 1353, 1366, 1522, 1535, 1548, 1561, 1704, 1717,
- 1730, 1743, 192, 361, 374, 375, 387, 388,
- 543, 556, 557, 569, 570, 571, 582, 583,
- 584, 738, 739, 751, 752, 753, 765, 766,
- 778, 779, 780, 921, 934, 935, 947, 948,
- 949, 960, 961, 962, 974, 975, 1117, 1130,
- 1131, 1143, 1144, 1156, 1157, 1170, 1326, 1339,
- 193, 362, 376, 389, 544, 558, 572, 585,
- 726, 740, 754, 767, 781, 922, 936, 950,
- 963, 976, 1118, 1132, 1145, 1158, 1171, 1327,
- 1340, 181, 194, 363, 377, 390, 545, 559,
- 573, 586, 727, 741, 755, 768, 782, 923,
- 937, 951, 964, 977, 1119, 1133, 1146, 1159,
- 1172, 1328, 1341, 1313, 1352, 1353, 1366, 1522,
- 1535, 1314, 1354, 1367, 1523, 1536, 769, 965,
- 978, 1147, 1160, 1173, 1315, 1329, 1342, 1355,
- 1368, 1511, 1524, 1537, 1550, 1509, 1548, 1549,
- 1562, 1718, 1731, 1510, 1563, 1706, 1719, 1732,
- 1745, 1161, 1174, 1343, 1356, 1369, 1525, 1538,
- 1551, 1564, 1707, 1720, 1733, 195, 377, 390,
- 391, 559, 572, 573, 585, 586, 587, 741,
- 754, 755, 768, 769, 781, 782, 783, 937,
- 950, 951, 963, 964, 965, 977, 978, 1133,
- 1146, 1147, 1159, 1160, 1173, 1329, 1342, 979,
- 1161, 1174, 1343, 1355, 1356, 1369, 1525, 1538,
- 1175, 1357, 1370, 1539, 1551, 1552, 1565, 1721,
- 1734, 603, 616, 785, 786, 798, 799, 812,
- 980, 981, 982, 994, 995, 1008, 1176, 1177,
- 1190, 1191, 1204, 1372, 1373, 1386, 1568, 604,
- 617, 787, 800, 813, 826, 983, 996, 1009,
- 1022, 1178, 1192, 1205, 1374, 1387, 1400, 1569,
- 1582, 592, 605, 618, 631, 788, 801, 814,
- 827, 984, 997, 1010, 1023, 1179, 1180, 1193,
- 1206, 1219, 1375, 1388, 1401, 1570, 1583, 1765,
- 630, 1218, 1764, 644, 840, 1036, 1232, 1414,
- 1596, 1778, 619, 632, 802, 815, 828, 841,
- 998, 1011, 1024, 1037, 1207, 1220, 1376, 1389,
- 1402, 1415, 1571, 1584, 1597, 1766, 645, 854,
- 1050, 1233, 1428, 1610, 1779, 633, 646, 816,
- 829, 842, 855, 1012, 1025, 1038, 1051, 1194,
- 1221, 1234, 1390, 1403, 1416, 1429, 1572, 1585,
- 1598, 1611, 1767, 1780, 1960, 1961, 1792, 1793,
- 1962, 1974, 1246, 1624, 1806, 1975, 1208, 1247,
- 1417, 1430, 1586, 1599, 1612, 1625, 1768, 1781,
- 1794, 1807, 1963, 1976, 1989, 2157, 2156, 1988,
- 2158, 2171, 2170, 1442, 1638, 1820, 2002, 2184,
- 1404, 1443, 1613, 1626, 1782, 1795, 1808, 1821,
- 1964, 1977, 1990, 2003, 2159, 2172, 2185, 606,
- 619, 788, 789, 801, 802, 814, 815, 828,
- 983, 984, 985, 996, 997, 998, 1010, 1011,
- 1024, 1179, 1180, 1192, 1193, 1194, 1206, 1207,
- 1374, 1375, 1376, 1388, 1389, 1402, 1570, 1571,
- 1584, 607, 620, 790, 803, 816, 829, 986,
- 999, 1012, 1025, 1181, 1195, 1208, 1377, 1390,
- 1403, 1572, 1585, 595, 608, 621, 634, 791,
- 804, 817, 830, 987, 1000, 1013, 1026, 1182,
- 1183, 1196, 1209, 1222, 1378, 1391, 1404, 1573,
- 1586, 1768, 633, 842, 1038, 1220, 1221, 1416,
- 1598, 1767, 647, 843, 1039, 1235, 1417, 1599,
- 1781, 622, 635, 805, 818, 831, 844, 1001,
- 1014, 1027, 1040, 1210, 1223, 1379, 1392, 1405,
- 1418, 1574, 1587, 1600, 1769, 660, 856, 1052,
- 1234, 1248, 1430, 1612, 648, 857, 1053, 1236,
- 1431, 1613, 1782, 636, 649, 819, 832, 845,
- 858, 1015, 1028, 1041, 1054, 1197, 1224, 1237,
- 1393, 1406, 1419, 1432, 1575, 1588, 1601, 1614,
- 1770, 1783, 1766, 1780, 1963, 1964, 1794, 1795,
- 1796, 1965, 1444, 1626, 1808, 1977, 1249, 1627,
- 1809, 1978, 1211, 1250, 1420, 1433, 1589, 1602,
- 1615, 1628, 1771, 1784, 1797, 1810, 1966, 1979,
- 1992, 1962, 1976, 2159, 2160, 1990, 1991, 2161,
- 2174, 1822, 2004, 2173, 1445, 1641, 1823, 2005,
- 2187, 1407, 1446, 1616, 1629, 1785, 1798, 1811,
- 1824, 1967, 1980, 1993, 2006, 2162, 2175, 2188,
- 609, 622, 791, 792, 804, 805, 817, 818,
- 831, 986, 987, 988, 999, 1000, 1001, 1013,
- 1014, 1027, 1182, 1183, 1195, 1196, 1197, 1209,
- 1210, 1377, 1378, 1379, 1391, 1392, 1405, 1573,
- 1574, 1587, 610, 623, 793, 806, 819, 832,
- 989, 1002, 1015, 1028, 1184, 1198, 1211, 1380,
- 1393, 1406, 1575, 1588, 598, 611, 624, 637,
- 794, 807, 820, 833, 990, 1003, 1016, 1029,
- 1185, 1186, 1199, 1212, 1225, 1381, 1394, 1407,
- 1576, 1589, 1771, 636, 845, 1041, 1223, 1224,
- 1419, 1601, 1770, 650, 846, 1042, 1238, 1420,
- 1602, 1784, 625, 638, 808, 821, 834, 847,
- 1004, 1017, 1030, 1043, 1200, 1213, 1226, 1382,
- 1395, 1408, 1421, 1577, 1590, 1603, 1772, 663,
- 859, 1055, 1237, 1251, 1433, 1615, 651, 860,
- 1056, 1239, 1434, 1616, 1785, 639, 652, 822,
- 835, 848, 861, 1018, 1031, 1044, 1057, 1214,
- 1227, 1240, 1396, 1409, 1422, 1435, 1578, 1591,
- 1604, 1617, 1773, 1786, 1769, 1783, 1966, 1967,
- 1797, 1798, 1799, 1968, 1447, 1629, 1811, 1980,
- 1252, 1630, 1812, 1981, 1253, 1410, 1423, 1436,
- 1592, 1605, 1618, 1631, 1774, 1787, 1800, 1813,
- 1969, 1982, 1995, 1965, 1979, 2162, 2163, 1993,
- 1994, 2164, 2177, 1825, 2007, 2176, 1448, 1644,
- 1826, 2008, 2190, 1449, 1606, 1619, 1632, 1788,
- 1801, 1814, 1827, 1970, 1983, 1996, 2009, 2165,
- 2178, 2191, 612, 625, 794, 795, 807, 808,
- 820, 821, 834, 989, 990, 991, 1002, 1003,
- 1004, 1016, 1017, 1030, 1185, 1186, 1198, 1199,
- 1200, 1212, 1213, 1380, 1381, 1382, 1394, 1395,
- 1408, 1576, 1577, 1590, 600, 613, 626, 639,
- 796, 809, 822, 835, 992, 1005, 1018, 1031,
- 1187, 1201, 1214, 1383, 1396, 1409, 1578, 1591,
- 1773, 601, 614, 627, 640, 797, 810, 823,
- 836, 993, 1006, 1019, 1032, 1188, 1189, 1202,
- 1215, 1228, 1384, 1397, 1410, 1579, 1592, 1774,
- 848, 1044, 1226, 1227, 1422, 1604, 653, 849,
- 1045, 1241, 1423, 1605, 1787, 628, 641, 811,
- 824, 837, 850, 1007, 1020, 1033, 1046, 1203,
- 1216, 1229, 1242, 1385, 1398, 1411, 1424, 1580,
- 1593, 1606, 1775, 862, 1058, 1240, 1436, 1618,
- 654, 863, 1059, 1255, 1437, 1619, 1788, 1801,
- 642, 655, 825, 838, 851, 864, 1021, 1034,
- 1047, 1060, 1217, 1230, 1243, 1256, 1399, 1412,
- 1425, 1438, 1581, 1594, 1607, 1620, 1776, 1789,
- 1772, 1786, 1969, 1970, 1800, 1802, 1971, 1254,
- 1632, 1814, 1983, 1633, 1815, 1984, 1413, 1426,
- 1439, 1452, 1595, 1608, 1621, 1634, 1777, 1790,
- 1803, 1816, 1972, 1985, 1968, 1982, 2165, 2166,
- 1996, 1997, 1998, 2167, 2180, 1450, 1828, 2010,
- 2179, 1451, 1647, 1829, 2011, 2193, 1609, 1622,
- 1635, 1648, 1791, 1804, 1817, 1830, 1973, 1986,
- 1999, 2012, 2168, 2181, 615, 628, 797, 810,
- 811, 823, 824, 837, 992, 993, 1005, 1006,
- 1007, 1019, 1020, 1033, 1188, 1189, 1201, 1202,
- 1203, 1215, 1216, 1383, 1384, 1385, 1397, 1398,
- 1411, 1579, 1580, 1593, 629, 642, 825, 838,
- 851, 1021, 1034, 1047, 1217, 1229, 1230, 1399,
- 1412, 1425, 1581, 1594, 1607, 1776, 643, 656,
- 839, 852, 865, 1035, 1048, 1061, 1231, 1243,
- 1244, 1413, 1426, 1439, 1595, 1608, 1621, 1777,
- 1790, 1775, 1789, 1803, 1972, 1257, 1427, 1440,
- 1609, 1622, 1635, 1791, 1804, 1817, 1973, 1986,
- 1971, 1985, 1999, 2168, 1453, 1623, 1636, 1805,
- 1818, 1831, 1987, 2000, 2013, 2169, 2182, 645,
- 658, 814, 827, 828, 840, 841, 854, 996,
- 1009, 1010, 1022, 1023, 1024, 1036, 1037, 1050,
- 1191, 1192, 1204, 1205, 1206, 1218, 1219, 1232,
- 1233, 1246, 1374, 1387, 1388, 1400, 1401, 1402,
- 1414, 1415, 1428, 1570, 1583, 1584, 1596, 1597,
- 1610, 1779, 1792, 646, 659, 815, 829, 842,
- 855, 868, 997, 1011, 1025, 1038, 1051, 1064,
- 1179, 1193, 1207, 1220, 1234, 1247, 1375, 1389,
- 1403, 1416, 1429, 1442, 1571, 1585, 1598, 1611,
- 1624, 1780, 1793, 634, 647, 660, 673, 816,
- 830, 843, 856, 869, 998, 1012, 1026, 1039,
- 1052, 1065, 1180, 1194, 1208, 1221, 1222, 1235,
- 1248, 1261, 1376, 1390, 1404, 1417, 1430, 1443,
- 1572, 1586, 1599, 1612, 1625, 1768, 1781, 1794,
- 1807, 672, 1260, 1806, 686, 882, 1078, 1274,
- 1456, 1638, 661, 674, 844, 857, 870, 883,
- 1040, 1053, 1066, 1079, 1249, 1262, 1418, 1431,
- 1444, 1457, 1600, 1613, 1626, 1639, 1795, 1808,
- 1820, 687, 896, 1092, 1275, 1470, 1652, 1821,
- 662, 675, 688, 701, 858, 871, 884, 897,
- 1054, 1067, 1080, 1093, 1236, 1263, 1276, 1432,
- 1445, 1458, 1471, 1614, 1627, 1640, 1653, 1809,
- 1822, 1766, 1975, 1988, 1767, 1963, 1976, 1989,
- 2002, 1782, 1964, 1977, 1990, 2003, 1834, 1796,
- 1835, 1991, 2004, 2016, 1288, 1666, 1848, 2017,
- 1250, 1289, 1446, 1459, 1472, 1485, 1628, 1641,
- 1654, 1667, 1810, 1823, 1836, 1849, 1992, 2005,
- 2018, 2031, 1962, 2158, 2171, 2184, 2159, 2172,
- 2185, 2198, 1978, 2160, 2173, 2186, 2199, 2030,
- 2174, 2187, 2200, 2213, 2212, 1484, 1680, 1862,
- 2044, 2226, 1642, 1655, 1668, 1681, 1824, 1837,
- 1850, 1863, 2006, 2019, 2032, 2045, 2188, 2201,
- 2214, 2227, 648, 661, 817, 830, 831, 843,
- 844, 856, 857, 870, 999, 1012, 1013, 1025,
- 1026, 1027, 1038, 1039, 1040, 1052, 1053, 1066,
- 1194, 1195, 1207, 1208, 1209, 1221, 1222, 1234,
- 1235, 1236, 1248, 1249, 1377, 1390, 1391, 1403,
- 1404, 1405, 1416, 1417, 1418, 1430, 1431, 1444,
- 1573, 1586, 1587, 1599, 1600, 1612, 1613, 1626,
- 1782, 1795, 649, 662, 818, 832, 845, 858,
- 871, 1000, 1014, 1028, 1041, 1054, 1067, 1182,
- 1196, 1210, 1223, 1237, 1250, 1378, 1392, 1406,
- 1419, 1432, 1445, 1574, 1588, 1601, 1614, 1627,
- 1783, 1796, 637, 650, 663, 676, 819, 833,
- 846, 859, 872, 1001, 1015, 1029, 1042, 1055,
- 1068, 1183, 1197, 1211, 1224, 1225, 1238, 1251,
- 1264, 1379, 1393, 1407, 1420, 1433, 1446, 1575,
- 1589, 1602, 1615, 1628, 1771, 1784, 1797, 1810,
- 675, 884, 1080, 1262, 1263, 1276, 1458, 1640,
- 1809, 689, 885, 1081, 1277, 1459, 1641, 664,
- 677, 847, 860, 873, 886, 1043, 1056, 1069,
- 1082, 1252, 1265, 1421, 1434, 1447, 1460, 1603,
- 1616, 1629, 1642, 1798, 1811, 702, 898, 1094,
- 1290, 1472, 1654, 1823, 690, 899, 1095, 1278,
- 1473, 1655, 1824, 665, 678, 691, 704, 861,
- 874, 887, 900, 1057, 1070, 1083, 1096, 1239,
- 1266, 1279, 1435, 1448, 1461, 1474, 1617, 1630,
- 1643, 1656, 1812, 1825, 1769, 1808, 1822, 1978,
- 1991, 1770, 1966, 1979, 1992, 2005, 1785, 1967,
- 1980, 1993, 2006, 1836, 2018, 1837, 1799, 1838,
- 1994, 2007, 1486, 1668, 1850, 2019, 1291, 1669,
- 1851, 2020, 1253, 1292, 1449, 1462, 1475, 1488,
- 1631, 1644, 1657, 1670, 1813, 1826, 1839, 1852,
- 1995, 2008, 2021, 2034, 1965, 2004, 2161, 2174,
- 2187, 2200, 2162, 2175, 2188, 2201, 1981, 2163,
- 2176, 2189, 2202, 2032, 2214, 2033, 2177, 2190,
- 2203, 2216, 1864, 2046, 2215, 1487, 1683, 1865,
- 2047, 2229, 1645, 1658, 1671, 1684, 1827, 1840,
- 1853, 1866, 2009, 2022, 2035, 2048, 2191, 2204,
- 2217, 2230, 651, 664, 820, 833, 834, 846,
- 847, 859, 860, 873, 1002, 1015, 1016, 1028,
- 1029, 1030, 1041, 1042, 1043, 1055, 1056, 1069,
- 1197, 1198, 1210, 1211, 1212, 1224, 1225, 1237,
- 1238, 1239, 1251, 1252, 1380, 1393, 1394, 1406,
- 1407, 1408, 1419, 1420, 1421, 1433, 1434, 1447,
- 1576, 1589, 1590, 1602, 1603, 1615, 1616, 1629,
- 1785, 1798, 652, 665, 821, 835, 848, 861,
- 874, 1003, 1017, 1031, 1044, 1057, 1070, 1185,
- 1199, 1213, 1226, 1240, 1253, 1381, 1395, 1409,
- 1422, 1435, 1448, 1577, 1591, 1604, 1617, 1630,
- 1786, 1799, 640, 653, 666, 679, 822, 836,
- 849, 862, 875, 1004, 1018, 1032, 1045, 1058,
- 1071, 1186, 1200, 1214, 1227, 1228, 1241, 1254,
- 1267, 1382, 1396, 1410, 1423, 1436, 1449, 1578,
- 1592, 1605, 1618, 1631, 1774, 1787, 1800, 1813,
- 678, 887, 1083, 1265, 1266, 1279, 1461, 1643,
- 1812, 692, 888, 1084, 1280, 1462, 1644, 667,
- 680, 850, 863, 876, 889, 1046, 1059, 1072,
- 1085, 1242, 1255, 1268, 1424, 1437, 1450, 1463,
- 1606, 1619, 1632, 1645, 1788, 1801, 1814, 705,
- 901, 1097, 1293, 1475, 1657, 1826, 693, 902,
- 1098, 1281, 1476, 1658, 1827, 668, 681, 694,
- 707, 864, 877, 890, 903, 1060, 1073, 1086,
- 1099, 1256, 1269, 1282, 1438, 1451, 1464, 1477,
- 1620, 1633, 1646, 1659, 1802, 1815, 1828, 1772,
- 1811, 1825, 1981, 1994, 1773, 1969, 1982, 1995,
- 2008, 1970, 1983, 1996, 2009, 1839, 2021, 1840,
- 1841, 1997, 2010, 1489, 1671, 1853, 2022, 1294,
- 1672, 1854, 2023, 1295, 1452, 1465, 1478, 1491,
- 1634, 1647, 1660, 1673, 1816, 1829, 1842, 1855,
- 1998, 2011, 2024, 2037, 1968, 2007, 2164, 2177,
- 2190, 2203, 2165, 2178, 2191, 2204, 1984, 2166,
- 2179, 2192, 2205, 2035, 2217, 2036, 2180, 2193,
- 2206, 2219, 1867, 2049, 2218, 1490, 1686, 1868,
- 2050, 2232, 1648, 1661, 1674, 1687, 1830, 1843,
- 1856, 1869, 2012, 2025, 2038, 2051, 2194, 2207,
- 2220, 2233, 654, 667, 823, 836, 837, 849,
- 850, 862, 863, 876, 1005, 1018, 1019, 1031,
- 1032, 1033, 1044, 1045, 1046, 1058, 1059, 1072,
- 1200, 1201, 1213, 1214, 1215, 1227, 1228, 1240,
- 1241, 1242, 1254, 1255, 1383, 1396, 1397, 1409,
- 1410, 1411, 1422, 1423, 1424, 1436, 1437, 1450,
- 1579, 1592, 1593, 1605, 1606, 1618, 1619, 1632,
- 1788, 1801, 655, 668, 681, 824, 838, 851,
- 864, 877, 1006, 1020, 1034, 1047, 1060, 1073,
- 1188, 1202, 1216, 1229, 1243, 1256, 1384, 1398,
- 1412, 1425, 1438, 1451, 1580, 1594, 1607, 1620,
- 1633, 1789, 1802, 643, 656, 669, 682, 825,
- 839, 852, 865, 878, 1007, 1021, 1035, 1048,
- 1061, 1074, 1189, 1203, 1217, 1230, 1231, 1244,
- 1257, 1270, 1385, 1399, 1413, 1426, 1439, 1452,
- 1581, 1595, 1608, 1621, 1634, 1777, 1790, 1803,
- 1816, 890, 1086, 1268, 1269, 1464, 1646, 1815,
- 695, 891, 1087, 1283, 1465, 1647, 1829, 670,
- 683, 853, 866, 879, 892, 1049, 1062, 1075,
- 1088, 1245, 1258, 1271, 1284, 1427, 1440, 1453,
- 1466, 1609, 1622, 1635, 1648, 1791, 1804, 1817,
- 904, 1100, 1282, 1478, 1660, 696, 905, 1101,
- 1297, 1479, 1661, 1830, 1843, 684, 697, 867,
- 880, 893, 906, 1063, 1076, 1089, 1102, 1272,
- 1285, 1441, 1454, 1467, 1480, 1623, 1636, 1649,
- 1662, 1805, 1818, 1831, 1775, 1814, 1828, 1984,
- 1997, 1776, 1972, 1985, 1998, 2011, 1973, 1986,
- 1999, 1842, 2012, 1844, 2000, 2013, 1296, 1674,
- 1856, 2025, 1493, 1675, 1857, 2026, 1259, 1298,
- 1468, 1481, 1637, 1650, 1663, 1676, 1819, 1832,
- 1845, 1858, 2001, 2014, 2027, 1971, 2010, 2024,
- 2180, 2193, 2181, 2194, 1987, 2169, 2182, 2195,
- 2038, 2207, 2039, 2208, 2221, 2040, 2183, 2196,
- 2209, 2222, 1492, 1870, 2052, 1689, 1871, 2053,
- 2235, 1455, 1494, 1664, 1677, 1833, 1846, 1859,
- 1872, 2015, 2028, 2041, 2054, 2210, 2223, 657,
- 670, 839, 852, 853, 865, 866, 879, 1021,
- 1034, 1035, 1047, 1048, 1049, 1061, 1062, 1075,
- 1203, 1216, 1217, 1230, 1231, 1243, 1244, 1245,
- 1257, 1258, 1399, 1412, 1413, 1425, 1426, 1427,
- 1439, 1440, 1453, 1595, 1608, 1609, 1621, 1622,
- 1635, 1791, 1804, 671, 684, 867, 880, 893,
- 1063, 1076, 1089, 1259, 1271, 1272, 1441, 1454,
- 1467, 1623, 1636, 1649, 1805, 1818, 685, 698,
- 881, 894, 907, 1077, 1090, 1103, 1273, 1285,
- 1286, 1455, 1468, 1481, 1637, 1650, 1663, 1819,
- 1832, 1817, 1831, 1987, 2000, 1845, 2001, 2014,
- 1299, 1469, 1482, 1651, 1664, 1677, 1833, 1846,
- 1859, 2015, 2028, 2013, 2027, 2183, 2196, 2209,
- 2041, 2197, 2210, 1495, 1665, 1678, 1847, 1860,
- 1873, 2029, 2042, 2055, 2211, 2224, 687, 700,
- 856, 869, 870, 882, 883, 896, 1038, 1051,
- 1052, 1064, 1065, 1066, 1078, 1079, 1092, 1233,
- 1234, 1246, 1247, 1248, 1260, 1261, 1274, 1275,
- 1288, 1416, 1429, 1430, 1442, 1443, 1444, 1456,
- 1457, 1470, 1612, 1625, 1626, 1638, 1639, 1652,
- 1821, 1834, 688, 701, 857, 871, 884, 897,
- 910, 1039, 1053, 1067, 1080, 1093, 1106, 1221,
- 1235, 1249, 1262, 1276, 1289, 1417, 1431, 1445,
- 1458, 1471, 1484, 1613, 1627, 1640, 1653, 1666,
- 1822, 1835, 676, 689, 702, 715, 858, 872,
- 885, 898, 911, 1040, 1054, 1068, 1081, 1094,
- 1107, 1236, 1250, 1263, 1264, 1277, 1290, 1303,
- 1418, 1432, 1446, 1459, 1472, 1485, 1614, 1628,
- 1641, 1654, 1667, 1823, 1836, 714, 1302, 1848,
- 924, 1120, 1498, 1680, 1849, 703, 716, 886,
- 899, 912, 925, 1082, 1095, 1108, 1121, 1291,
- 1304, 1460, 1473, 1486, 1499, 1642, 1655, 1668,
- 1681, 1837, 1850, 728, 1316, 1862, 729, 938,
- 1134, 1317, 1512, 1694, 1863, 704, 717, 730,
- 900, 913, 926, 939, 1096, 1109, 1122, 1135,
- 1278, 1305, 1318, 1331, 1474, 1487, 1500, 1513,
- 1656, 1669, 1682, 1695, 1851, 1864, 1808, 2017,
- 2030, 1809, 2005, 2018, 2031, 2044, 1810, 1824,
- 2019, 2032, 1876, 2045, 1838, 1877, 2033, 2046,
- 2058, 1330, 1708, 1890, 2059, 1292, 1488, 1501,
- 1514, 1527, 1670, 1683, 1696, 1709, 1852, 1865,
- 1878, 1891, 2034, 2047, 2060, 2073, 2004, 2200,
- 2213, 2226, 2201, 2214, 2227, 2240, 2006, 2020,
- 2215, 2228, 2072, 2241, 2216, 2229, 2242, 2255,
- 2254, 1526, 1904, 2086, 1684, 1697, 1710, 1723,
- 1866, 1879, 1892, 1905, 2048, 2061, 2074, 2087,
- 2230, 2243, 2256, 2269, 690, 703, 859, 872,
- 873, 885, 886, 898, 899, 912, 1041, 1054,
- 1055, 1067, 1068, 1069, 1080, 1081, 1082, 1094,
- 1095, 1108, 1236, 1237, 1249, 1250, 1251, 1263,
- 1264, 1276, 1277, 1278, 1290, 1291, 1419, 1432,
- 1433, 1445, 1446, 1447, 1458, 1459, 1460, 1472,
- 1473, 1486, 1615, 1628, 1629, 1641, 1642, 1654,
- 1655, 1668, 1824, 1837, 691, 704, 860, 874,
- 887, 900, 913, 1042, 1056, 1070, 1083, 1096,
- 1109, 1224, 1238, 1252, 1265, 1279, 1292, 1420,
- 1434, 1448, 1461, 1474, 1487, 1616, 1630, 1643,
- 1656, 1669, 1825, 1838, 679, 692, 705, 718,
- 861, 875, 888, 901, 914, 1043, 1057, 1071,
- 1084, 1097, 1110, 1239, 1253, 1266, 1267, 1280,
- 1293, 1306, 1421, 1435, 1449, 1462, 1475, 1488,
- 1617, 1631, 1644, 1657, 1670, 1826, 1839, 717,
- 926, 1122, 1304, 1305, 1318, 1500, 1682, 1851,
- 927, 1123, 1501, 1683, 1852, 706, 719, 889,
- 902, 915, 928, 1085, 1098, 1111, 1124, 1294,
- 1307, 1463, 1476, 1489, 1502, 1645, 1658, 1671,
- 1684, 1840, 1853, 731, 744, 940, 1136, 1319,
- 1332, 1514, 1696, 1865, 732, 941, 1137, 1320,
- 1515, 1697, 1866, 707, 720, 733, 903, 916,
- 929, 942, 1099, 1112, 1125, 1138, 1281, 1308,
- 1321, 1334, 1477, 1490, 1503, 1516, 1659, 1672,
- 1685, 1698, 1854, 1867, 1811, 1850, 1864, 2020,
- 2033, 1812, 2008, 2021, 2034, 2047, 1813, 1827,
- 2022, 2035, 1878, 2060, 1879, 2048, 1841, 1880,
- 2036, 2049, 1528, 1710, 1892, 2061, 1333, 1711,
- 1893, 2062, 1295, 1491, 1504, 1517, 1530, 1673,
- 1686, 1699, 1712, 1855, 1868, 1881, 1894, 2037,
- 2050, 2063, 2076, 2007, 2046, 2203, 2216, 2229,
- 2242, 2204, 2217, 2230, 2243, 2009, 2023, 2218,
- 2231, 2074, 2075, 2244, 2219, 2232, 2245, 2258,
- 1906, 2088, 2257, 1529, 1907, 2089, 1687, 1700,
- 1713, 1726, 1869, 1882, 1895, 1908, 2051, 2064,
- 2077, 2090, 2233, 2246, 2259, 2272, 693, 706,
- 862, 875, 876, 888, 889, 901, 902, 915,
- 1044, 1057, 1058, 1070, 1071, 1072, 1083, 1084,
- 1085, 1097, 1098, 1111, 1239, 1240, 1252, 1253,
- 1254, 1266, 1267, 1279, 1280, 1281, 1293, 1294,
- 1422, 1435, 1436, 1448, 1449, 1450, 1461, 1462,
- 1463, 1475, 1476, 1489, 1618, 1631, 1632, 1644,
- 1645, 1657, 1658, 1671, 1827, 1840, 694, 707,
- 863, 877, 890, 903, 916, 1045, 1059, 1073,
- 1086, 1099, 1112, 1227, 1241, 1255, 1268, 1282,
- 1295, 1423, 1437, 1451, 1464, 1477, 1490, 1619,
- 1633, 1646, 1659, 1672, 1828, 1841, 682, 695,
- 708, 864, 878, 891, 904, 917, 1046, 1060,
- 1074, 1087, 1100, 1113, 1228, 1242, 1256, 1269,
- 1270, 1283, 1296, 1424, 1438, 1452, 1465, 1478,
- 1491, 1620, 1634, 1647, 1660, 1673, 1816, 1829,
- 1842, 720, 929, 1125, 1307, 1308, 1321, 1503,
- 1685, 1854, 721, 930, 1126, 1309, 1504, 1686,
- 1855, 709, 722, 892, 905, 918, 931, 1088,
- 1101, 1114, 1127, 1284, 1297, 1310, 1323, 1466,
- 1479, 1492, 1505, 1648, 1661, 1674, 1687, 1830,
- 1843, 1856, 1869, 734, 943, 1139, 1322, 1517,
- 1699, 1868, 735, 944, 1140, 1518, 1700, 723,
- 736, 906, 919, 932, 945, 1102, 1115, 1128,
- 1141, 1311, 1324, 1480, 1493, 1506, 1519, 1662,
- 1675, 1688, 1701, 1844, 1857, 1870, 1814, 1853,
- 1867, 2023, 2036, 1815, 2011, 2024, 2037, 2050,
- 2012, 2025, 2038, 1881, 2063, 1882, 2051, 1883,
- 2026, 2039, 2052, 1335, 1713, 1895, 2064, 1336,
- 1714, 1896, 2065, 1298, 1337, 1507, 1520, 1676,
- 1689, 1702, 1715, 1858, 1871, 1884, 1897, 2040,
- 2053, 2066, 2079, 2010, 2049, 2206, 2219, 2232,
- 2245, 2207, 2220, 2233, 2246, 2208, 2221, 2234,
- 2077, 2078, 2247, 2222, 2235, 2248, 2261, 1531,
- 1909, 2091, 2260, 1532, 1728, 1910, 2092, 2274,
- 1494, 1533, 1703, 1716, 1872, 1885, 1898, 1911,
- 2054, 2067, 2080, 2093, 2249, 2262, 696, 709,
- 865, 878, 879, 891, 892, 904, 905, 918,
- 1047, 1060, 1061, 1073, 1074, 1075, 1086, 1087,
- 1088, 1100, 1101, 1114, 1242, 1243, 1255, 1256,
- 1257, 1269, 1270, 1282, 1283, 1284, 1296, 1297,
- 1425, 1438, 1439, 1451, 1452, 1453, 1464, 1465,
- 1466, 1478, 1479, 1492, 1621, 1634, 1635, 1647,
- 1648, 1660, 1661, 1674, 1830, 1843, 697, 710,
- 866, 880, 893, 906, 919, 1048, 1062, 1076,
- 1089, 1102, 1115, 1230, 1244, 1258, 1271, 1285,
- 1298, 1426, 1440, 1454, 1467, 1480, 1493, 1622,
- 1636, 1649, 1662, 1675, 1831, 1844, 685, 698,
- 711, 724, 867, 881, 894, 907, 920, 1049,
- 1063, 1077, 1090, 1103, 1116, 1231, 1245, 1259,
- 1272, 1273, 1286, 1299, 1312, 1427, 1441, 1455,
- 1468, 1481, 1494, 1623, 1637, 1650, 1663, 1676,
- 1819, 1832, 1845, 1858, 723, 932, 1128, 1310,
- 1311, 1506, 1688, 1857, 737, 933, 1129, 1325,
- 1507, 1689, 1871, 712, 725, 895, 908, 921,
- 934, 1091, 1104, 1117, 1130, 1287, 1300, 1313,
- 1326, 1469, 1482, 1495, 1508, 1651, 1664, 1677,
- 1690, 1846, 1859, 750, 946, 1142, 1324, 1338,
- 1520, 1702, 1884, 738, 947, 1143, 1339, 1521,
- 1703, 1872, 726, 739, 909, 922, 935, 948,
- 1105, 1118, 1131, 1144, 1314, 1327, 1340, 1483,
- 1496, 1509, 1522, 1665, 1678, 1691, 1704, 1860,
- 1873, 1817, 1856, 1870, 2026, 2039, 1818, 2014,
- 2027, 2040, 2053, 1833, 2015, 2028, 2041, 2054,
- 1885, 2067, 1847, 1886, 2042, 2055, 1716, 1898,
- 1535, 1717, 1899, 2068, 1301, 1510, 1523, 1536,
- 1679, 1692, 1705, 1718, 1861, 1874, 1887, 1900,
- 2056, 2069, 2013, 2052, 2066, 2209, 2222, 2235,
- 2248, 2223, 2236, 2029, 2224, 2237, 2080, 2249,
- 2081, 2250, 2263, 2043, 2082, 2238, 2251, 1534,
- 1912, 2094, 2276, 1731, 1913, 2095, 2264, 1497,
- 1706, 1719, 1732, 1875, 1888, 1901, 1914, 2057,
- 2070, 2083, 2096, 2239, 2252, 2265, 2278, 699,
- 712, 881, 894, 895, 907, 908, 921, 1063,
- 1076, 1077, 1089, 1090, 1091, 1103, 1104, 1117,
- 1245, 1258, 1259, 1272, 1273, 1285, 1286, 1287,
- 1299, 1300, 1441, 1454, 1455, 1467, 1468, 1469,
- 1481, 1482, 1495, 1637, 1650, 1651, 1663, 1664,
- 1677, 1833, 1846, 713, 726, 909, 922, 935,
- 1105, 1118, 1131, 1301, 1313, 1314, 1483, 1496,
- 1509, 1665, 1678, 1691, 1847, 1860, 727, 740,
- 923, 936, 949, 1119, 1132, 1145, 1315, 1327,
- 1328, 1497, 1510, 1523, 1679, 1692, 1705, 1861,
- 1874, 1859, 1873, 2029, 2042, 1887, 2043, 2056,
- 1341, 1511, 1524, 1537, 1693, 1706, 1719, 1875,
- 1888, 1901, 2057, 2070, 2083, 2055, 2069, 2225,
- 2238, 2239, 2252, 1707, 1720, 1889, 1902, 1915,
- 2071, 2084, 2097, 2253, 2266, 2279, 729, 742,
- 898, 911, 912, 924, 925, 938, 1080, 1093,
- 1094, 1106, 1107, 1108, 1120, 1121, 1134, 1275,
- 1276, 1288, 1289, 1290, 1302, 1303, 1316, 1317,
- 1330, 1458, 1471, 1472, 1484, 1485, 1486, 1498,
- 1499, 1512, 1654, 1667, 1668, 1680, 1681, 1694,
- 1863, 1876, 730, 743, 899, 913, 926, 939,
- 952, 1081, 1095, 1109, 1122, 1135, 1148, 1263,
- 1277, 1291, 1304, 1318, 1331, 1459, 1473, 1487,
- 1500, 1513, 1526, 1655, 1669, 1682, 1695, 1708,
- 1864, 1877, 718, 731, 744, 757, 900, 914,
- 927, 940, 953, 1082, 1096, 1110, 1123, 1136,
- 1149, 1278, 1292, 1305, 1306, 1319, 1332, 1345,
- 1460, 1474, 1488, 1501, 1514, 1527, 1656, 1670,
- 1683, 1696, 1709, 1865, 1878, 756, 1344, 1890,
- 966, 1162, 1540, 1722, 1891, 745, 758, 928,
- 941, 954, 967, 1124, 1137, 1150, 1163, 1333,
- 1346, 1502, 1515, 1528, 1541, 1684, 1697, 1710,
- 1723, 1879, 1892, 770, 1358, 1904, 771, 1359,
- 1554, 1736, 1905, 759, 772, 942, 955, 968,
- 1138, 1151, 1164, 1320, 1334, 1347, 1360, 1516,
- 1529, 1542, 1555, 1698, 1711, 1724, 1737, 1893,
- 1906, 1850, 2059, 2072, 1851, 2047, 2060, 2073,
- 2086, 1852, 1866, 2061, 2074, 1918, 2087, 1880,
- 1919, 2075, 2088, 2100, 1750, 1932, 2101, 1530,
- 1543, 1556, 1712, 1725, 1738, 1751, 1894, 1907,
- 1920, 1933, 2076, 2089, 2102, 2046, 2242, 2255,
- 2268, 2243, 2256, 2269, 2282, 2048, 2062, 2257,
- 2270, 2114, 2283, 2115, 2258, 2271, 2284, 2297,
- 2296, 1946, 2128, 1739, 1752, 1908, 1921, 1934,
- 1947, 2090, 2103, 2116, 2129, 2285, 2298, 732,
- 745, 901, 914, 915, 927, 928, 940, 941,
- 954, 1083, 1096, 1097, 1109, 1110, 1111, 1122,
- 1123, 1124, 1136, 1137, 1150, 1278, 1279, 1291,
- 1292, 1293, 1305, 1306, 1318, 1319, 1320, 1332,
- 1333, 1461, 1474, 1475, 1487, 1488, 1489, 1500,
- 1501, 1502, 1514, 1515, 1528, 1657, 1670, 1671,
- 1683, 1684, 1696, 1697, 1710, 1866, 1879, 733,
- 746, 902, 916, 929, 942, 955, 1084, 1098,
- 1112, 1125, 1138, 1151, 1266, 1280, 1294, 1307,
- 1321, 1334, 1462, 1476, 1490, 1503, 1516, 1529,
- 1658, 1672, 1685, 1698, 1711, 1867, 1880, 734,
- 747, 903, 917, 930, 943, 956, 1085, 1099,
- 1113, 1126, 1139, 1152, 1281, 1295, 1308, 1322,
- 1335, 1463, 1477, 1491, 1504, 1517, 1530, 1659,
- 1673, 1686, 1699, 1712, 1868, 1881, 759, 968,
- 1164, 1346, 1347, 1360, 1542, 1724, 1893, 760,
- 969, 1165, 1348, 1543, 1725, 1894, 748, 761,
- 931, 944, 957, 970, 1127, 1140, 1153, 1166,
- 1309, 1323, 1336, 1349, 1362, 1505, 1518, 1531,
- 1544, 1687, 1700, 1713, 1726, 1869, 1882, 1895,
- 1908, 773, 1361, 1556, 1738, 1907, 774, 1557,
- 1739, 1921, 762, 775, 945, 958, 971, 1141,
- 1154, 1167, 1350, 1363, 1519, 1532, 1545, 1558,
- 1701, 1714, 1727, 1740, 1896, 1909, 1853, 1892,
- 1906, 2062, 2075, 1854, 2050, 2063, 2076, 2089,
- 1855, 2064, 2077, 1920, 2102, 2090, 1883, 1922,
- 2078, 2091, 1752, 1934, 2103, 1753, 1935, 2104,
- 1337, 1546, 1559, 1715, 1728, 1741, 1754, 1897,
- 1910, 1923, 1936, 2079, 2092, 2105, 2049, 2088,
- 2245, 2258, 2271, 2284, 2246, 2259, 2272, 2285,
- 2051, 2065, 2260, 2273, 2116, 2117, 2286, 2118,
- 2261, 2274, 2287, 2300, 1948, 2130, 2299, 1949,
- 2131, 2313, 1533, 1742, 1755, 1911, 1924, 1937,
- 1950, 2093, 2106, 2119, 2132, 2288, 2301, 735,
- 748, 904, 917, 918, 930, 931, 943, 944,
- 957, 1086, 1099, 1100, 1112, 1113, 1114, 1125,
- 1126, 1127, 1139, 1140, 1153, 1281, 1282, 1294,
- 1295, 1296, 1308, 1309, 1321, 1322, 1323, 1335,
- 1336, 1464, 1477, 1478, 1490, 1491, 1492, 1503,
- 1504, 1505, 1517, 1518, 1531, 1660, 1673, 1674,
- 1686, 1687, 1699, 1700, 1713, 1869, 1882, 736,
- 749, 905, 919, 932, 945, 958, 1087, 1101,
- 1115, 1128, 1141, 1154, 1283, 1297, 1310, 1324,
- 1337, 1465, 1479, 1493, 1506, 1519, 1532, 1661,
- 1675, 1688, 1701, 1714, 1870, 1883, 724, 737,
- 750, 763, 906, 920, 933, 946, 959, 1088,
- 1102, 1116, 1129, 1142, 1155, 1270, 1284, 1298,
- 1311, 1312, 1325, 1338, 1351, 1466, 1480, 1494,
- 1507, 1520, 1533, 1662, 1676, 1689, 1702, 1715,
- 1858, 1871, 1884, 1897, 762, 971, 1167, 1349,
- 1350, 1545, 1727, 1896, 776, 972, 1168, 1364,
- 1546, 1728, 1910, 751, 764, 934, 947, 960,
- 973, 1130, 1143, 1156, 1169, 1326, 1339, 1352,
- 1365, 1508, 1521, 1534, 1547, 1690, 1703, 1716,
- 1729, 1885, 1898, 1363, 1559, 1741, 1923, 777,
- 1560, 1742, 1911, 765, 778, 948, 961, 974,
- 1144, 1157, 1170, 1340, 1353, 1366, 1522, 1535,
- 1548, 1561, 1704, 1717, 1730, 1743, 1899, 1912,
- 1856, 1895, 1909, 2065, 2078, 1857, 2066, 2079,
- 1872, 2054, 2067, 2080, 2093, 2092, 1924, 1886,
- 1925, 2081, 2094, 1755, 1937, 2106, 1756, 1938,
- 2107, 1536, 1549, 1562, 1718, 1731, 1744, 1757,
- 1900, 1913, 1926, 1939, 2095, 2108, 2052, 2091,
- 2105, 2248, 2261, 2274, 2287, 2053, 2262, 2275,
- 2068, 2250, 2263, 2276, 2289, 2119, 2288, 2120,
- 2302, 2082, 2121, 2277, 2290, 1951, 2133, 2315,
- 1952, 2134, 2303, 1732, 1745, 1758, 1914, 1927,
- 1940, 1953, 2096, 2109, 2122, 2135, 2278, 2291,
- 2304, 2317, 738, 751, 907, 920, 921, 933,
- 934, 946, 947, 960, 1089, 1102, 1103, 1115,
- 1116, 1117, 1128, 1129, 1130, 1142, 1143, 1156,
- 1284, 1285, 1297, 1298, 1299, 1311, 1312, 1324,
- 1325, 1326, 1338, 1339, 1467, 1480, 1481, 1493,
- 1494, 1495, 1506, 1507, 1508, 1520, 1521, 1534,
- 1663, 1676, 1677, 1689, 1690, 1702, 1703, 1716,
- 1872, 1885, 739, 752, 908, 922, 935, 948,
- 961, 1090, 1104, 1118, 1131, 1144, 1157, 1272,
- 1286, 1300, 1313, 1327, 1340, 1468, 1482, 1496,
- 1509, 1522, 1535, 1664, 1678, 1691, 1704, 1717,
- 1873, 1886, 727, 740, 753, 766, 909, 923,
- 936, 949, 962, 1091, 1105, 1119, 1132, 1145,
- 1158, 1273, 1287, 1301, 1314, 1328, 1341, 1469,
- 1483, 1497, 1510, 1523, 1536, 1665, 1679, 1692,
- 1705, 1718, 1874, 1887, 765, 974, 1170, 1352,
- 1353, 1548, 1730, 1899, 779, 975, 1171, 1354,
- 1549, 1731, 1900, 741, 754, 767, 780, 937,
- 950, 963, 976, 1133, 1146, 1159, 1172, 1315,
- 1329, 1342, 1355, 1368, 1511, 1524, 1537, 1550,
- 1693, 1706, 1719, 1732, 1888, 1901, 1366, 1367,
- 1562, 1744, 1913, 1563, 1745, 1914, 768, 781,
- 951, 964, 977, 1147, 1160, 1173, 1343, 1356,
- 1369, 1525, 1538, 1551, 1564, 1707, 1720, 1733,
- 1746, 1902, 1915, 1859, 1898, 1912, 2068, 2081,
- 1860, 2069, 2082, 1861, 1875, 2057, 2070, 2083,
- 2096, 1926, 2095, 1927, 2109, 1889, 1928, 2084,
- 2097, 1758, 1940, 1759, 1941, 2110, 1539, 1552,
- 1565, 1721, 1734, 1747, 1760, 1903, 1916, 1929,
- 1942, 2098, 2111, 2055, 2094, 2108, 2264, 2277,
- 2056, 2252, 2265, 2278, 2291, 2071, 2253, 2266,
- 2279, 2292, 2122, 2123, 2305, 2085, 2124, 2280,
- 2293, 1954, 2136, 1955, 2137, 2306, 1735, 1748,
- 1761, 1917, 1930, 1943, 1956, 2099, 2112, 2125,
- 2138, 2281, 2294, 2307, 2320, 741, 754, 923,
- 936, 937, 949, 950, 963, 1105, 1118, 1119,
- 1131, 1132, 1133, 1145, 1146, 1159, 1287, 1300,
- 1301, 1314, 1315, 1327, 1328, 1329, 1341, 1342,
- 1483, 1496, 1497, 1509, 1510, 1511, 1523, 1524,
- 1537, 1679, 1692, 1693, 1705, 1706, 1719, 1875,
- 1888, 755, 768, 951, 964, 977, 1147, 1160,
- 1173, 1343, 1355, 1356, 1525, 1538, 1551, 1707,
- 1720, 1733, 1889, 1902, 769, 782, 965, 978,
- 1161, 1174, 1357, 1369, 1370, 1539, 1552, 1565,
- 1721, 1734, 1747, 1903, 1916, 1901, 1915, 2071,
- 2084, 1929, 2085, 2098, 1553, 1566, 1735, 1748,
- 1761, 1917, 1930, 1943, 2099, 2112, 2097, 2111,
- 2267, 2280, 2125, 2281, 2294, 1749, 1762, 1931,
- 1944, 1957, 2113, 2126, 2139, 2295, 2308, 771,
- 940, 953, 954, 966, 967, 1122, 1135, 1136,
- 1148, 1149, 1150, 1162, 1163, 1317, 1318, 1330,
- 1331, 1332, 1344, 1345, 1358, 1359, 1500, 1513,
- 1514, 1526, 1527, 1528, 1540, 1541, 1554, 1696,
- 1709, 1710, 1722, 1723, 1736, 1905, 1918, 772,
- 941, 955, 968, 1123, 1137, 1151, 1164, 1319,
- 1333, 1346, 1360, 1501, 1515, 1529, 1542, 1555,
- 1697, 1711, 1724, 1737, 1750, 1906, 1919, 773,
- 942, 956, 969, 1124, 1138, 1152, 1165, 1320,
- 1334, 1347, 1361, 1502, 1516, 1530, 1543, 1556,
- 1698, 1712, 1725, 1738, 1751, 1907, 1920, 1892,
- 1932, 2101, 2114, 1893, 1933, 1946, 2102, 2115,
- 1348, 1557, 1726, 1739, 1752, 1894, 1908, 1921,
- 1934, 1947, 2103, 2116, 2088, 2128, 2297, 2310,
- 2089, 2129, 2142, 2298, 2311, 1544, 1753, 1922,
- 1935, 1948, 2090, 2104, 2117, 2130, 2143, 2299,
- 2312, 774, 943, 956, 957, 969, 970, 1125,
- 1138, 1139, 1151, 1152, 1153, 1164, 1165, 1166,
- 1320, 1321, 1333, 1334, 1335, 1347, 1348, 1360,
- 1361, 1362, 1503, 1516, 1517, 1529, 1530, 1531,
- 1542, 1543, 1544, 1556, 1557, 1699, 1712, 1713,
- 1725, 1726, 1738, 1739, 1752, 1908, 1921, 775,
- 944, 958, 971, 1126, 1140, 1154, 1167, 1322,
- 1336, 1349, 1363, 1504, 1518, 1532, 1545, 1558,
- 1700, 1714, 1727, 1740, 1753, 1909, 1922, 763,
- 776, 945, 959, 972, 1127, 1141, 1155, 1168,
- 1309, 1323, 1337, 1350, 1351, 1364, 1505, 1519,
- 1533, 1546, 1559, 1701, 1715, 1728, 1741, 1754,
- 1897, 1910, 1923, 1936, 1895, 1934, 1935, 1948,
- 2104, 2117, 1896, 1949, 2105, 2118, 1547, 1560,
- 1729, 1742, 1755, 1911, 1924, 1937, 1950, 2093,
- 2106, 2119, 2132, 2091, 2130, 2131, 2144, 2287,
- 2300, 2313, 2326, 2092, 2145, 2301, 2314, 1743,
- 1756, 1925, 1938, 1951, 2107, 2120, 2133, 2146,
- 2289, 2302, 2315, 2328, 777, 946, 959, 960,
- 972, 973, 1128, 1141, 1142, 1154, 1155, 1156,
- 1167, 1168, 1169, 1323, 1324, 1336, 1337, 1338,
- 1350, 1351, 1363, 1364, 1365, 1506, 1519, 1520,
- 1532, 1533, 1534, 1545, 1546, 1547, 1559, 1560,
- 1702, 1715, 1716, 1728, 1729, 1741, 1742, 1755,
- 1911, 1924, 778, 947, 961, 974, 1129, 1143,
- 1157, 1170, 1325, 1339, 1352, 1366, 1507, 1521,
- 1535, 1548, 1561, 1703, 1717, 1730, 1743, 1756,
- 1912, 1925, 766, 779, 948, 962, 975, 1130,
- 1144, 1158, 1171, 1312, 1326, 1340, 1353, 1367,
- 1508, 1522, 1536, 1549, 1562, 1704, 1718, 1731,
- 1744, 1757, 1913, 1926, 1898, 1937, 1938, 1951,
- 2107, 2120, 1899, 1939, 1952, 2108, 2121, 1354,
- 1550, 1563, 1732, 1745, 1758, 1900, 1914, 1927,
- 1940, 1953, 2096, 2109, 2122, 2135, 2094, 2133,
- 2134, 2147, 2303, 2316, 2095, 2148, 2304, 2317,
- 1746, 1759, 1928, 1941, 1954, 2110, 2123, 2136,
- 2149, 2292, 2305, 2318, 2331, 780, 949, 962,
- 963, 975, 976, 1131, 1144, 1145, 1157, 1158,
- 1159, 1170, 1171, 1172, 1326, 1327, 1339, 1340,
- 1341, 1353, 1354, 1366, 1367, 1368, 1509, 1522,
- 1523, 1535, 1536, 1537, 1548, 1549, 1550, 1562,
- 1563, 1705, 1718, 1719, 1731, 1732, 1744, 1745,
- 1758, 1914, 1927, 781, 950, 964, 977, 1132,
- 1146, 1160, 1173, 1314, 1328, 1342, 1355, 1369,
- 1510, 1524, 1538, 1551, 1564, 1706, 1720, 1733,
- 1746, 1759, 1915, 1928, 769, 782, 951, 965,
- 978, 1133, 1147, 1161, 1174, 1315, 1329, 1343,
- 1356, 1370, 1511, 1525, 1539, 1552, 1565, 1707,
- 1721, 1734, 1747, 1760, 1916, 1929, 1901, 1940,
- 1941, 1954, 2110, 2123, 1902, 1942, 1955, 2111,
- 2124, 1357, 1553, 1566, 1735, 1748, 1761, 1903,
- 1917, 1930, 1943, 1956, 2099, 2112, 2125, 2138,
- 2097, 2136, 2137, 2150, 2306, 2319, 2098, 2151,
- 2294, 2307, 2320, 2333, 1749, 1762, 1931, 1944,
- 1957, 2113, 2126, 2139, 2152, 2295, 2308, 2321,
- 2334, 783, 965, 978, 979, 1147, 1160, 1161,
- 1173, 1174, 1175, 1329, 1342, 1343, 1356, 1357,
- 1369, 1370, 1371, 1525, 1538, 1539, 1551, 1552,
- 1553, 1565, 1566, 1721, 1734, 1735, 1747, 1748,
- 1761, 1917, 1930, 1567, 1749, 1762, 1931, 1943,
- 1944, 1957, 2113, 2126, 1763, 1945, 1958, 2127,
- 2139, 2140, 2153, 2309, 2322, 1191, 1204, 1373,
- 1374, 1386, 1387, 1400, 1568, 1569, 1570, 1582,
- 1583, 1596, 1764, 1765, 1778, 1779, 1792, 1960,
- 1961, 1974, 2156, 1192, 1205, 1375, 1388, 1401,
- 1414, 1571, 1584, 1597, 1610, 1766, 1780, 1793,
- 1962, 1975, 1988, 2157, 2170, 1180, 1193, 1206,
- 1219, 1376, 1389, 1402, 1415, 1572, 1585, 1598,
- 1611, 1767, 1768, 1781, 1794, 1807, 1963, 1976,
- 1989, 2158, 2171, 2353, 1218, 1806, 2352, 1232,
- 1428, 1624, 1820, 2002, 2184, 2366, 1207, 1220,
- 1390, 1403, 1416, 1429, 1586, 1599, 1612, 1625,
- 1795, 1808, 1964, 1977, 1990, 2003, 2159, 2172,
- 2185, 2354, 1233, 1442, 1638, 1821, 2016, 2198,
- 2367, 1221, 1234, 1404, 1417, 1430, 1443, 1600,
- 1613, 1626, 1639, 1782, 1809, 1822, 1978, 1991,
- 2004, 2017, 2160, 2173, 2186, 2199, 2355, 2368,
- 2549, 2548, 2380, 2381, 2550, 2562, 1834, 2212,
- 2394, 2563, 1796, 1835, 2005, 2018, 2174, 2187,
- 2200, 2213, 2356, 2369, 2382, 2395, 2551, 2564,
- 2577, 2576, 2030, 2408, 2590, 1992, 2031, 2201,
- 2214, 2370, 2383, 2396, 2409, 2552, 2565, 2578,
- 2591, 1194, 1207, 1376, 1377, 1389, 1390, 1402,
- 1403, 1416, 1571, 1572, 1573, 1584, 1585, 1586,
- 1598, 1599, 1612, 1767, 1768, 1780, 1781, 1782,
- 1794, 1795, 1962, 1963, 1964, 1976, 1977, 1990,
- 2158, 2159, 2172, 1195, 1208, 1378, 1391, 1404,
- 1417, 1574, 1587, 1600, 1613, 1769, 1783, 1796,
- 1965, 1978, 1991, 2160, 2173, 1183, 1196, 1209,
- 1222, 1379, 1392, 1405, 1418, 1575, 1588, 1601,
- 1614, 1770, 1771, 1784, 1797, 1810, 1966, 1979,
- 1992, 2161, 2174, 2356, 1221, 1430, 1626, 1808,
- 1809, 2004, 2186, 2355, 1235, 1431, 1627, 1823,
- 2005, 2187, 2369, 1210, 1223, 1393, 1406, 1419,
- 1432, 1589, 1602, 1615, 1628, 1798, 1811, 1967,
- 1980, 1993, 2006, 2162, 2175, 2188, 2357, 1248,
- 1444, 1640, 1822, 1836, 2018, 2200, 2382, 1236,
- 1445, 1641, 1824, 2019, 2201, 2370, 1224, 1237,
- 1407, 1420, 1433, 1446, 1603, 1616, 1629, 1642,
- 1785, 1812, 1825, 1981, 1994, 2007, 2020, 2163,
- 2176, 2189, 2202, 2358, 2371, 2354, 2368, 2551,
- 2552, 2383, 2384, 2553, 2032, 2214, 2396, 2565,
- 1837, 2215, 2397, 2566, 1799, 1838, 2008, 2021,
- 2177, 2190, 2203, 2216, 2359, 2372, 2385, 2398,
- 2554, 2567, 2580, 2550, 2564, 2578, 2579, 2228,
- 2410, 2592, 2033, 2411, 2593, 1995, 2034, 2204,
- 2217, 2373, 2386, 2399, 2412, 2555, 2568, 2581,
- 2594, 1197, 1210, 1379, 1380, 1392, 1393, 1405,
- 1406, 1419, 1574, 1575, 1576, 1587, 1588, 1589,
- 1601, 1602, 1615, 1770, 1771, 1783, 1784, 1785,
- 1797, 1798, 1965, 1966, 1967, 1979, 1980, 1993,
- 2161, 2162, 2175, 1198, 1211, 1381, 1394, 1407,
- 1420, 1577, 1590, 1603, 1616, 1772, 1786, 1799,
- 1968, 1981, 1994, 2163, 2176, 1186, 1199, 1212,
- 1225, 1382, 1395, 1408, 1421, 1578, 1591, 1604,
- 1617, 1773, 1774, 1787, 1800, 1813, 1969, 1982,
- 1995, 2164, 2177, 2359, 1224, 1433, 1629, 1811,
- 1812, 2007, 2189, 2358, 1238, 1434, 1630, 1826,
- 2008, 2190, 2372, 1213, 1226, 1396, 1409, 1422,
- 1435, 1592, 1605, 1618, 1631, 1788, 1801, 1814,
- 1970, 1983, 1996, 2009, 2165, 2178, 2191, 2360,
- 1251, 1447, 1643, 1825, 1839, 2021, 2203, 2385,
- 1239, 1448, 1644, 1827, 2022, 2204, 2373, 1227,
- 1240, 1410, 1423, 1436, 1449, 1606, 1619, 1632,
- 1645, 1802, 1815, 1828, 1984, 1997, 2010, 2023,
- 2166, 2179, 2192, 2205, 2361, 2374, 2357, 2371,
- 2554, 2555, 2386, 2387, 2556, 2035, 2217, 2399,
- 2568, 1840, 2218, 2400, 2569, 1841, 1998, 2011,
- 2024, 2180, 2193, 2206, 2219, 2362, 2375, 2388,
- 2401, 2557, 2570, 2583, 2553, 2567, 2581, 2582,
- 2231, 2413, 2595, 2036, 2414, 2596, 2037, 2194,
- 2207, 2220, 2376, 2389, 2402, 2415, 2558, 2571,
- 2584, 2597, 1200, 1213, 1382, 1383, 1395, 1396,
- 1408, 1409, 1422, 1577, 1578, 1579, 1590, 1591,
- 1592, 1604, 1605, 1618, 1773, 1774, 1786, 1787,
- 1788, 1800, 1801, 1968, 1969, 1970, 1982, 1983,
- 1996, 2164, 2165, 2178, 1188, 1201, 1214, 1227,
- 1384, 1397, 1410, 1423, 1580, 1593, 1606, 1619,
- 1775, 1789, 1802, 1971, 1984, 1997, 2166, 2179,
- 2361, 1189, 1202, 1215, 1228, 1385, 1398, 1411,
- 1424, 1581, 1594, 1607, 1620, 1776, 1777, 1790,
- 1803, 1816, 1972, 1985, 1998, 2167, 2180, 2362,
- 1436, 1632, 1814, 1815, 2010, 2192, 1241, 1437,
- 1633, 1829, 2011, 2193, 2375, 1216, 1229, 1399,
- 1412, 1425, 1438, 1595, 1608, 1621, 1634, 1791,
- 1804, 1817, 1830, 1973, 1986, 1999, 2012, 2168,
- 2181, 2194, 2363, 1450, 1646, 1828, 2024, 2206,
- 1242, 1451, 1647, 1843, 2025, 2207, 2376, 2389,
- 1230, 1243, 1413, 1426, 1439, 1452, 1609, 1622,
- 1635, 1648, 1805, 1818, 1831, 1844, 1987, 2000,
- 2013, 2026, 2169, 2182, 2195, 2208, 2364, 2377,
- 2360, 2374, 2557, 2558, 2388, 2390, 2559, 1842,
- 2220, 2402, 2571, 2221, 2403, 2572, 2001, 2014,
- 2027, 2040, 2183, 2196, 2209, 2222, 2365, 2378,
- 2391, 2404, 2560, 2573, 2556, 2570, 2584, 2585,
- 2586, 2038, 2416, 2598, 2039, 2235, 2417, 2599,
- 2197, 2210, 2223, 2236, 2379, 2392, 2405, 2418,
- 2561, 2574, 2587, 2600, 1203, 1216, 1385, 1398,
- 1399, 1411, 1412, 1425, 1580, 1581, 1593, 1594,
- 1595, 1607, 1608, 1621, 1776, 1777, 1789, 1790,
- 1791, 1803, 1804, 1971, 1972, 1973, 1985, 1986,
- 1999, 2167, 2168, 2181, 1217, 1230, 1413, 1426,
- 1439, 1609, 1622, 1635, 1805, 1817, 1818, 1987,
- 2000, 2013, 2169, 2182, 2195, 2364, 1231, 1244,
- 1427, 1440, 1453, 1623, 1636, 1649, 1819, 1831,
- 1832, 2001, 2014, 2027, 2183, 2196, 2209, 2365,
- 2378, 2363, 2377, 2391, 2560, 1845, 2015, 2028,
- 2197, 2210, 2223, 2379, 2392, 2405, 2561, 2574,
- 2559, 2573, 2587, 2041, 2211, 2224, 2393, 2406,
- 2419, 2575, 2588, 2601, 1233, 1246, 1402, 1415,
- 1416, 1428, 1429, 1442, 1584, 1597, 1598, 1610,
- 1611, 1612, 1624, 1625, 1638, 1779, 1780, 1792,
- 1793, 1794, 1806, 1807, 1820, 1821, 1834, 1962,
- 1975, 1976, 1988, 1989, 1990, 2002, 2003, 2016,
- 2158, 2171, 2172, 2184, 2185, 2198, 2367, 2380,
- 1234, 1247, 1403, 1417, 1430, 1443, 1456, 1585,
- 1599, 1613, 1626, 1639, 1652, 1767, 1781, 1795,
- 1808, 1822, 1835, 1963, 1977, 1991, 2004, 2017,
- 2030, 2159, 2173, 2186, 2199, 2212, 2368, 2381,
- 1222, 1235, 1248, 1261, 1404, 1418, 1431, 1444,
- 1457, 1586, 1600, 1614, 1627, 1640, 1653, 1768,
- 1782, 1796, 1809, 1810, 1823, 1836, 1849, 1964,
- 1978, 1992, 2005, 2018, 2031, 2160, 2174, 2187,
- 2200, 2213, 2356, 2369, 2382, 2395, 1260, 1848,
- 2394, 1274, 1470, 1666, 1862, 2044, 2226, 2408,
- 1249, 1262, 1432, 1445, 1458, 1471, 1628, 1641,
- 1654, 1667, 1837, 1850, 2006, 2019, 2032, 2045,
- 2188, 2201, 2214, 2227, 2383, 2396, 1275, 1484,
- 1680, 1863, 2058, 2240, 2409, 1250, 1263, 1276,
- 1289, 1446, 1459, 1472, 1485, 1642, 1655, 1668,
- 1681, 1824, 1851, 1864, 2020, 2033, 2046, 2059,
- 2202, 2215, 2228, 2241, 2397, 2410, 2354, 2563,
- 2576, 2355, 2551, 2564, 2577, 2590, 2370, 2552,
- 2565, 2578, 2591, 2422, 2384, 2423, 2579, 2592,
- 2604, 1876, 2254, 2436, 2605, 1838, 1877, 2034,
- 2047, 2060, 2073, 2216, 2229, 2242, 2255, 2398,
- 2411, 2424, 2437, 2580, 2593, 2606, 2619, 2550,
- 2566, 2618, 2072, 2450, 2632, 2230, 2243, 2256,
- 2269, 2412, 2425, 2438, 2451, 2594, 2607, 2620,
- 2633, 1236, 1249, 1405, 1418, 1419, 1431, 1432,
- 1444, 1445, 1458, 1587, 1600, 1601, 1613, 1614,
- 1615, 1626, 1627, 1628, 1640, 1641, 1654, 1782,
- 1783, 1795, 1796, 1797, 1809, 1810, 1822, 1823,
- 1824, 1836, 1837, 1965, 1978, 1979, 1991, 1992,
- 1993, 2004, 2005, 2006, 2018, 2019, 2032, 2161,
- 2174, 2175, 2187, 2188, 2200, 2201, 2214, 2370,
- 2383, 1237, 1250, 1406, 1420, 1433, 1446, 1459,
- 1588, 1602, 1616, 1629, 1642, 1655, 1770, 1784,
- 1798, 1811, 1825, 1838, 1966, 1980, 1994, 2007,
- 2020, 2033, 2162, 2176, 2189, 2202, 2215, 2371,
- 2384, 1225, 1238, 1251, 1264, 1407, 1421, 1434,
- 1447, 1460, 1589, 1603, 1617, 1630, 1643, 1656,
- 1771, 1785, 1799, 1812, 1813, 1826, 1839, 1852,
- 1967, 1981, 1995, 2008, 2021, 2034, 2163, 2177,
- 2190, 2203, 2216, 2359, 2372, 2385, 2398, 1263,
- 1472, 1668, 1850, 1851, 1864, 2046, 2228, 2397,
- 1277, 1473, 1669, 1865, 2047, 2229, 2411, 1252,
- 1265, 1435, 1448, 1461, 1474, 1631, 1644, 1657,
- 1670, 1840, 1853, 2009, 2022, 2035, 2048, 2191,
- 2204, 2217, 2230, 2386, 2399, 1290, 1486, 1682,
- 1878, 2060, 2242, 2424, 1278, 1487, 1683, 1866,
- 2061, 2243, 2412, 1253, 1266, 1279, 1292, 1449,
- 1462, 1475, 1488, 1645, 1658, 1671, 1684, 1827,
- 1854, 1867, 2023, 2036, 2049, 2062, 2205, 2218,
- 2231, 2244, 2400, 2413, 2357, 2396, 2410, 2566,
- 2579, 2358, 2554, 2567, 2580, 2593, 2373, 2555,
- 2568, 2581, 2594, 2606, 2425, 2387, 2426, 2582,
- 2595, 2074, 2256, 2438, 2607, 1879, 2257, 2439,
- 2608, 1841, 1880, 2037, 2050, 2063, 2076, 2219,
- 2232, 2245, 2258, 2401, 2414, 2427, 2440, 2583,
- 2596, 2609, 2622, 2553, 2592, 2569, 2620, 2621,
- 2270, 2452, 2634, 2075, 2453, 2635, 2233, 2246,
- 2259, 2272, 2415, 2428, 2441, 2454, 2597, 2610,
- 2623, 2636, 1239, 1252, 1408, 1421, 1422, 1434,
- 1435, 1447, 1448, 1461, 1590, 1603, 1604, 1616,
- 1617, 1618, 1629, 1630, 1631, 1643, 1644, 1657,
- 1785, 1786, 1798, 1799, 1800, 1812, 1813, 1825,
- 1826, 1827, 1839, 1840, 1968, 1981, 1982, 1994,
- 1995, 1996, 2007, 2008, 2009, 2021, 2022, 2035,
- 2164, 2177, 2178, 2190, 2191, 2203, 2204, 2217,
- 2373, 2386, 1240, 1253, 1409, 1423, 1436, 1449,
- 1462, 1591, 1605, 1619, 1632, 1645, 1658, 1773,
- 1787, 1801, 1814, 1828, 1841, 1969, 1983, 1997,
- 2010, 2023, 2036, 2165, 2179, 2192, 2205, 2218,
- 2374, 2387, 1228, 1241, 1254, 1267, 1410, 1424,
- 1437, 1450, 1463, 1592, 1606, 1620, 1633, 1646,
- 1659, 1774, 1788, 1802, 1815, 1816, 1829, 1842,
- 1855, 1970, 1984, 1998, 2011, 2024, 2037, 2166,
- 2180, 2193, 2206, 2219, 2362, 2375, 2388, 2401,
- 1266, 1475, 1671, 1853, 1854, 1867, 2049, 2231,
- 2400, 1280, 1476, 1672, 1868, 2050, 2232, 2414,
- 1255, 1268, 1438, 1451, 1464, 1477, 1634, 1647,
- 1660, 1673, 1830, 1843, 1856, 2012, 2025, 2038,
- 2051, 2194, 2207, 2220, 2233, 2376, 2389, 2402,
- 1293, 1489, 1685, 1881, 2063, 2245, 2427, 1281,
- 1490, 1686, 1869, 2064, 2246, 2415, 1256, 1269,
- 1282, 1295, 1452, 1465, 1478, 1491, 1648, 1661,
- 1674, 1687, 1844, 1857, 1870, 2026, 2039, 2052,
- 2065, 2208, 2221, 2234, 2247, 2390, 2403, 2416,
- 2360, 2399, 2413, 2569, 2582, 2361, 2557, 2570,
- 2583, 2596, 2558, 2571, 2584, 2597, 2609, 2428,
- 2429, 2585, 2598, 2077, 2259, 2441, 2610, 1882,
- 2260, 2442, 2611, 1883, 2040, 2053, 2066, 2079,
- 2222, 2235, 2248, 2261, 2404, 2417, 2430, 2443,
- 2586, 2599, 2612, 2625, 2556, 2595, 2572, 2623,
- 2624, 2273, 2455, 2637, 2078, 2456, 2638, 2236,
- 2249, 2262, 2275, 2418, 2431, 2444, 2457, 2600,
- 2613, 2626, 2639, 1242, 1255, 1411, 1424, 1425,
- 1437, 1438, 1450, 1451, 1464, 1593, 1606, 1607,
- 1619, 1620, 1621, 1632, 1633, 1634, 1646, 1647,
- 1660, 1788, 1789, 1801, 1802, 1803, 1815, 1816,
- 1828, 1829, 1830, 1842, 1843, 1971, 1984, 1985,
- 1997, 1998, 1999, 2010, 2011, 2012, 2024, 2025,
- 2038, 2167, 2180, 2181, 2193, 2194, 2206, 2207,
- 2220, 2376, 2389, 1243, 1256, 1269, 1412, 1426,
- 1439, 1452, 1465, 1594, 1608, 1622, 1635, 1648,
- 1661, 1776, 1790, 1804, 1817, 1831, 1844, 1972,
- 1986, 2000, 2013, 2026, 2039, 2168, 2182, 2195,
- 2208, 2221, 2377, 2390, 1231, 1244, 1257, 1270,
- 1413, 1427, 1440, 1453, 1466, 1595, 1609, 1623,
- 1636, 1649, 1662, 1777, 1791, 1805, 1818, 1819,
- 1832, 1845, 1858, 1973, 1987, 2001, 2014, 2027,
- 2040, 2169, 2183, 2196, 2209, 2222, 2365, 2378,
- 2391, 2404, 1478, 1674, 1856, 1857, 2052, 2234,
- 2403, 1283, 1479, 1675, 1871, 2053, 2235, 2417,
- 1258, 1271, 1441, 1454, 1467, 1480, 1637, 1650,
- 1663, 1676, 1833, 1846, 1859, 1872, 2015, 2028,
- 2041, 2054, 2197, 2210, 2223, 2236, 2379, 2392,
- 2405, 1492, 1688, 1870, 2066, 2248, 1284, 1493,
- 1689, 1885, 2067, 2249, 2418, 2431, 1272, 1285,
- 1455, 1468, 1481, 1494, 1651, 1664, 1677, 1690,
- 1860, 1873, 2029, 2042, 2055, 2068, 2211, 2224,
- 2237, 2250, 2393, 2406, 2419, 2363, 2402, 2416,
- 2572, 2585, 2364, 2560, 2573, 2586, 2599, 2561,
- 2574, 2587, 2430, 2600, 2432, 2588, 2601, 1884,
- 2262, 2444, 2613, 2081, 2263, 2445, 2614, 1847,
- 1886, 2056, 2069, 2225, 2238, 2251, 2264, 2407,
- 2420, 2433, 2446, 2602, 2615, 2559, 2598, 2612,
- 2575, 2626, 2627, 2589, 2628, 2080, 2458, 2640,
- 2277, 2459, 2641, 2043, 2082, 2252, 2265, 2421,
- 2434, 2447, 2460, 2603, 2616, 2629, 2642, 1245,
- 1258, 1427, 1440, 1441, 1453, 1454, 1467, 1609,
- 1622, 1623, 1635, 1636, 1637, 1649, 1650, 1663,
- 1791, 1804, 1805, 1818, 1819, 1831, 1832, 1833,
- 1845, 1846, 1987, 2000, 2001, 2013, 2014, 2015,
- 2027, 2028, 2041, 2183, 2196, 2197, 2209, 2210,
- 2223, 2379, 2392, 1259, 1272, 1455, 1468, 1481,
- 1651, 1664, 1677, 1847, 1859, 1860, 2029, 2042,
- 2055, 2211, 2224, 2237, 2393, 2406, 1273, 1286,
- 1469, 1482, 1495, 1665, 1678, 1691, 1861, 1873,
- 1874, 2043, 2056, 2069, 2225, 2238, 2251, 2407,
- 2420, 2405, 2419, 2575, 2588, 2433, 2589, 2602,
- 1887, 2057, 2070, 2239, 2252, 2265, 2421, 2434,
- 2447, 2603, 2616, 2601, 2615, 2629, 2083, 2253,
- 2266, 2435, 2448, 2461, 2617, 2630, 2643, 1275,
- 1288, 1444, 1457, 1458, 1470, 1471, 1484, 1626,
- 1639, 1640, 1652, 1653, 1654, 1666, 1667, 1680,
- 1821, 1822, 1834, 1835, 1836, 1848, 1849, 1862,
- 1863, 1876, 2004, 2017, 2018, 2030, 2031, 2032,
- 2044, 2045, 2058, 2200, 2213, 2214, 2226, 2227,
- 2240, 2409, 2422, 1276, 1289, 1445, 1459, 1472,
- 1485, 1498, 1627, 1641, 1655, 1668, 1681, 1694,
- 1809, 1823, 1837, 1850, 1864, 1877, 2005, 2019,
- 2033, 2046, 2059, 2072, 2201, 2215, 2228, 2241,
- 2254, 2410, 2423, 1264, 1277, 1290, 1303, 1446,
- 1460, 1473, 1486, 1499, 1628, 1642, 1656, 1669,
- 1682, 1695, 1824, 1838, 1851, 1852, 1865, 1878,
- 1891, 2006, 2020, 2034, 2047, 2060, 2073, 2202,
- 2216, 2229, 2242, 2255, 2411, 2424, 1302, 1890,
- 2436, 1512, 1708, 2086, 2268, 2437, 1291, 1304,
- 1474, 1487, 1500, 1513, 1670, 1683, 1696, 1709,
- 1879, 1892, 2048, 2061, 2074, 2087, 2230, 2243,
- 2256, 2269, 2425, 2438, 1316, 1904, 2450, 1317,
- 1526, 1722, 1905, 2100, 2282, 2451, 1292, 1305,
- 1318, 1488, 1501, 1514, 1527, 1684, 1697, 1710,
- 1723, 1866, 1893, 1906, 1919, 2062, 2075, 2088,
- 2101, 2244, 2257, 2270, 2283, 2439, 2452, 2396,
- 2605, 2618, 2397, 2593, 2606, 2619, 2632, 2398,
- 2412, 2607, 2620, 2464, 2633, 2426, 2465, 2621,
- 2634, 2646, 1918, 2296, 2478, 2647, 1880, 2076,
- 2089, 2102, 2115, 2258, 2271, 2284, 2297, 2440,
- 2453, 2466, 2479, 2622, 2635, 2648, 2661, 2592,
- 2594, 2608, 2660, 2114, 2492, 2674, 2272, 2285,
- 2298, 2311, 2454, 2467, 2480, 2493, 2636, 2649,
- 2662, 2675, 1278, 1291, 1447, 1460, 1461, 1473,
- 1474, 1486, 1487, 1500, 1629, 1642, 1643, 1655,
- 1656, 1657, 1668, 1669, 1670, 1682, 1683, 1696,
- 1824, 1825, 1837, 1838, 1839, 1851, 1852, 1864,
- 1865, 1866, 1878, 1879, 2007, 2020, 2021, 2033,
- 2034, 2035, 2046, 2047, 2048, 2060, 2061, 2074,
- 2203, 2216, 2217, 2229, 2230, 2242, 2243, 2256,
- 2412, 2425, 1279, 1292, 1448, 1462, 1475, 1488,
- 1501, 1630, 1644, 1658, 1671, 1684, 1697, 1812,
- 1826, 1840, 1853, 1867, 1880, 2008, 2022, 2036,
- 2049, 2062, 2075, 2204, 2218, 2231, 2244, 2257,
- 2413, 2426, 1267, 1280, 1293, 1306, 1449, 1463,
- 1476, 1489, 1502, 1631, 1645, 1659, 1672, 1685,
- 1698, 1827, 1841, 1854, 1855, 1868, 1881, 1894,
- 2009, 2023, 2037, 2050, 2063, 2076, 2205, 2219,
- 2232, 2245, 2258, 2414, 2427, 1305, 1514, 1710,
- 1892, 1893, 1906, 2088, 2270, 2439, 1515, 1711,
- 2089, 2271, 2440, 1294, 1307, 1477, 1490, 1503,
- 1516, 1673, 1686, 1699, 1712, 1882, 1895, 2051,
- 2064, 2077, 2090, 2233, 2246, 2259, 2272, 2428,
- 2441, 1319, 1332, 1528, 1724, 1907, 1920, 2102,
- 2284, 2453, 2466, 1320, 1529, 1725, 1908, 2103,
- 2285, 2454, 1295, 1308, 1321, 1491, 1504, 1517,
- 1530, 1687, 1700, 1713, 1726, 1869, 1896, 1909,
- 1922, 2065, 2078, 2091, 2104, 2247, 2260, 2273,
- 2286, 2442, 2455, 2399, 2438, 2452, 2608, 2621,
- 2400, 2596, 2609, 2622, 2635, 2401, 2415, 2610,
- 2623, 2467, 2636, 2429, 2468, 2624, 2637, 2116,
- 2298, 2480, 2649, 1921, 2299, 2481, 2650, 1883,
- 2079, 2092, 2105, 2118, 2261, 2274, 2287, 2300,
- 2443, 2456, 2469, 2482, 2625, 2638, 2651, 2664,
- 2595, 2634, 2648, 2597, 2611, 2662, 2663, 2312,
- 2494, 2676, 2117, 2495, 2677, 2275, 2288, 2301,
- 2314, 2457, 2470, 2483, 2496, 2639, 2652, 2665,
- 2678, 1281, 1294, 1450, 1463, 1464, 1476, 1477,
- 1489, 1490, 1503, 1632, 1645, 1646, 1658, 1659,
- 1660, 1671, 1672, 1673, 1685, 1686, 1699, 1827,
- 1828, 1840, 1841, 1842, 1854, 1855, 1867, 1868,
- 1869, 1881, 1882, 2010, 2023, 2024, 2036, 2037,
- 2038, 2049, 2050, 2051, 2063, 2064, 2077, 2206,
- 2219, 2220, 2232, 2233, 2245, 2246, 2259, 2415,
- 2428, 1282, 1295, 1451, 1465, 1478, 1491, 1504,
- 1633, 1647, 1661, 1674, 1687, 1700, 1815, 1829,
- 1843, 1856, 1870, 1883, 2011, 2025, 2039, 2052,
- 2065, 2078, 2207, 2221, 2234, 2247, 2260, 2416,
- 2429, 1270, 1283, 1296, 1452, 1466, 1479, 1492,
- 1505, 1634, 1648, 1662, 1675, 1688, 1701, 1816,
- 1830, 1844, 1857, 1858, 1871, 1884, 2012, 2026,
- 2040, 2053, 2066, 2079, 2208, 2222, 2235, 2248,
- 2261, 2404, 2417, 2430, 1308, 1517, 1713, 1895,
- 1896, 1909, 2091, 2273, 2442, 1309, 1518, 1714,
- 1897, 2092, 2274, 2443, 1297, 1310, 1480, 1493,
- 1506, 1519, 1676, 1689, 1702, 1715, 1872, 1885,
- 1898, 1911, 2054, 2067, 2080, 2093, 2236, 2249,
- 2262, 2275, 2418, 2431, 2444, 2457, 1322, 1335,
- 1531, 1727, 1910, 1923, 2105, 2287, 2456, 2469,
- 1323, 1532, 1728, 2106, 2288, 1311, 1324, 1494,
- 1507, 1520, 1533, 1690, 1703, 1716, 1729, 1899,
- 1912, 2068, 2081, 2094, 2107, 2250, 2263, 2276,
- 2289, 2432, 2445, 2458, 2402, 2441, 2455, 2611,
- 2624, 2403, 2599, 2612, 2625, 2638, 2600, 2613,
- 2626, 2470, 2639, 2471, 2614, 2627, 2640, 2301,
- 2483, 2652, 1924, 2302, 2484, 2653, 1886, 1925,
- 2095, 2108, 2264, 2277, 2290, 2303, 2446, 2459,
- 2472, 2485, 2641, 2654, 2598, 2637, 2651, 2665,
- 2666, 2628, 2667, 2119, 2497, 2679, 2120, 2498,
- 2680, 2082, 2121, 2291, 2304, 2460, 2473, 2486,
- 2499, 2642, 2655, 2668, 2681, 1284, 1297, 1453,
- 1466, 1467, 1479, 1480, 1492, 1493, 1506, 1635,
- 1648, 1649, 1661, 1662, 1663, 1674, 1675, 1676,
- 1688, 1689, 1702, 1830, 1831, 1843, 1844, 1845,
- 1857, 1858, 1870, 1871, 1872, 1884, 1885, 2013,
- 2026, 2027, 2039, 2040, 2041, 2052, 2053, 2054,
- 2066, 2067, 2080, 2209, 2222, 2223, 2235, 2236,
- 2248, 2249, 2262, 2418, 2431, 1285, 1298, 1454,
- 1468, 1481, 1494, 1507, 1636, 1650, 1664, 1677,
- 1690, 1703, 1818, 1832, 1846, 1859, 1873, 1886,
- 2014, 2028, 2042, 2055, 2068, 2081, 2210, 2224,
- 2237, 2250, 2263, 2419, 2432, 1286, 1299, 1455,
- 1469, 1482, 1495, 1508, 1637, 1651, 1665, 1678,
- 1691, 1704, 1833, 1847, 1860, 1874, 1887, 2015,
- 2029, 2043, 2056, 2069, 2082, 2211, 2225, 2238,
- 2251, 2264, 2420, 2433, 1311, 1520, 1716, 1898,
- 1899, 2094, 2276, 2445, 1312, 1325, 1521, 1717,
- 1900, 1913, 2095, 2277, 2446, 2459, 1287, 1300,
- 1313, 1326, 1483, 1496, 1509, 1522, 1679, 1692,
- 1705, 1718, 1861, 1875, 1888, 1901, 1914, 2057,
- 2070, 2083, 2096, 2239, 2252, 2265, 2278, 2434,
- 2447, 1338, 1534, 1730, 1912, 2108, 2290, 1339,
- 1535, 1731, 1927, 2109, 2291, 2460, 1314, 1327,
- 1497, 1510, 1523, 1536, 1693, 1706, 1719, 1732,
- 1902, 1915, 1928, 2071, 2084, 2097, 2110, 2253,
- 2266, 2279, 2292, 2448, 2461, 2405, 2444, 2458,
- 2614, 2627, 2406, 2615, 2628, 2407, 2421, 2603,
- 2616, 2629, 2642, 2472, 2641, 2473, 2655, 2435,
- 2474, 2630, 2643, 1926, 2122, 2304, 2486, 2668,
- 2123, 2305, 2487, 2656, 1889, 2098, 2111, 2124,
- 2267, 2280, 2293, 2306, 2449, 2462, 2475, 2488,
- 2644, 2657, 2601, 2640, 2654, 2602, 2617, 2669,
- 2631, 2670, 2318, 2500, 2682, 2319, 2501, 2683,
- 2085, 2294, 2307, 2320, 2463, 2476, 2489, 2502,
- 2645, 2658, 2671, 2684, 1287, 1300, 1469, 1482,
- 1483, 1495, 1496, 1509, 1651, 1664, 1665, 1677,
- 1678, 1679, 1691, 1692, 1705, 1833, 1846, 1847,
- 1860, 1861, 1873, 1874, 1875, 1887, 1888, 2029,
- 2042, 2043, 2055, 2056, 2057, 2069, 2070, 2083,
- 2225, 2238, 2239, 2251, 2252, 2265, 2421, 2434,
- 1301, 1314, 1497, 1510, 1523, 1693, 1706, 1719,
- 1889, 1901, 1902, 2071, 2084, 2097, 2253, 2266,
- 2279, 2435, 2448, 1315, 1328, 1341, 1511, 1524,
- 1537, 1707, 1720, 1733, 1903, 1915, 1916, 2085,
- 2098, 2111, 2267, 2280, 2293, 2449, 2462, 2447,
- 2461, 2617, 2630, 2475, 2631, 2644, 1929, 2099,
- 2112, 2125, 2281, 2294, 2307, 2463, 2476, 2489,
- 2645, 2658, 2671, 2643, 2657, 2295, 2308, 2321,
- 2477, 2490, 2503, 2659, 2672, 2685, 1317, 1330,
- 1486, 1499, 1500, 1512, 1513, 1526, 1668, 1681,
- 1682, 1694, 1695, 1696, 1708, 1709, 1722, 1863,
- 1864, 1876, 1877, 1878, 1890, 1891, 1904, 1905,
- 1918, 2046, 2059, 2060, 2072, 2073, 2074, 2086,
- 2087, 2100, 2242, 2255, 2256, 2268, 2269, 2282,
- 2451, 2464, 1318, 1331, 1487, 1501, 1514, 1527,
- 1540, 1669, 1683, 1697, 1710, 1723, 1736, 1851,
- 1865, 1879, 1892, 1906, 1919, 2047, 2061, 2075,
- 2088, 2101, 2114, 2243, 2257, 2270, 2283, 2296,
- 2452, 2465, 1306, 1319, 1332, 1345, 1488, 1502,
- 1515, 1528, 1541, 1670, 1684, 1698, 1711, 1724,
- 1737, 1866, 1880, 1893, 1894, 1907, 1920, 1933,
- 2048, 2062, 2076, 2089, 2102, 2115, 2244, 2258,
- 2271, 2284, 2297, 2453, 2466, 1344, 1932, 2478,
- 1554, 1750, 2128, 2310, 2479, 1333, 1346, 1516,
- 1529, 1542, 1555, 1712, 1725, 1738, 1751, 1921,
- 1934, 2090, 2103, 2116, 2129, 2272, 2285, 2298,
- 2311, 2467, 2480, 1358, 1946, 2492, 1359, 1947,
- 2142, 2324, 2493, 1347, 1360, 1530, 1543, 1556,
- 1726, 1739, 1752, 1908, 1922, 1935, 1948, 2104,
- 2117, 2130, 2143, 2286, 2299, 2312, 2325, 2481,
- 2494, 2438, 2647, 2660, 2439, 2635, 2648, 2661,
- 2674, 2440, 2454, 2649, 2662, 2506, 2675, 2468,
- 2507, 2663, 2676, 2688, 2338, 2520, 2689, 2118,
- 2131, 2144, 2300, 2313, 2326, 2339, 2482, 2495,
- 2508, 2521, 2664, 2677, 2690, 2634, 2636, 2650,
- 2702, 2703, 2534, 2716, 2327, 2340, 2496, 2509,
- 2522, 2535, 2678, 2691, 2704, 2717, 1320, 1333,
- 1489, 1502, 1503, 1515, 1516, 1528, 1529, 1542,
- 1671, 1684, 1685, 1697, 1698, 1699, 1710, 1711,
- 1712, 1724, 1725, 1738, 1866, 1867, 1879, 1880,
- 1881, 1893, 1894, 1906, 1907, 1908, 1920, 1921,
- 2049, 2062, 2063, 2075, 2076, 2077, 2088, 2089,
- 2090, 2102, 2103, 2116, 2245, 2258, 2259, 2271,
- 2272, 2284, 2285, 2298, 2454, 2467, 1321, 1334,
- 1490, 1504, 1517, 1530, 1543, 1672, 1686, 1700,
- 1713, 1726, 1739, 1854, 1868, 1882, 1895, 1909,
- 1922, 2050, 2064, 2078, 2091, 2104, 2117, 2246,
- 2260, 2273, 2286, 2299, 2455, 2468, 1322, 1335,
- 1491, 1505, 1518, 1531, 1544, 1673, 1687, 1701,
- 1714, 1727, 1740, 1869, 1883, 1896, 1910, 1923,
- 2051, 2065, 2079, 2092, 2105, 2118, 2247, 2261,
- 2274, 2287, 2300, 2456, 2469, 1347, 1556, 1752,
- 1934, 1935, 1948, 2130, 2312, 2481, 1348, 1557,
- 1753, 1936, 2131, 2313, 2482, 1336, 1349, 1519,
- 1532, 1545, 1558, 1715, 1728, 1741, 1754, 1897,
- 1911, 1924, 1937, 1950, 2093, 2106, 2119, 2132,
- 2275, 2288, 2301, 2314, 2457, 2470, 2483, 2496,
- 1361, 1949, 2144, 2326, 2495, 1362, 2145, 2327,
- 2509, 1350, 1363, 1533, 1546, 1559, 1729, 1742,
- 1755, 1938, 1951, 2107, 2120, 2133, 2146, 2289,
- 2302, 2315, 2328, 2484, 2497, 2441, 2480, 2494,
- 2650, 2663, 2442, 2638, 2651, 2664, 2677, 2443,
- 2652, 2665, 2508, 2678, 2471, 2510, 2666, 2679,
- 2340, 2522, 2691, 2341, 2523, 2692, 1925, 2134,
- 2147, 2303, 2316, 2329, 2342, 2485, 2498, 2511,
- 2524, 2680, 2693, 2637, 2676, 2690, 2639, 2653,
- 2704, 2705, 2667, 2706, 2536, 2718, 2537, 2719,
- 2121, 2330, 2343, 2499, 2512, 2525, 2538, 2681,
- 2694, 2707, 2720, 1323, 1336, 1492, 1505, 1506,
- 1518, 1519, 1531, 1532, 1545, 1674, 1687, 1688,
- 1700, 1701, 1702, 1713, 1714, 1715, 1727, 1728,
- 1741, 1869, 1870, 1882, 1883, 1884, 1896, 1897,
- 1909, 1910, 1911, 1923, 1924, 2052, 2065, 2066,
- 2078, 2079, 2080, 2091, 2092, 2093, 2105, 2106,
- 2119, 2248, 2261, 2262, 2274, 2275, 2287, 2288,
- 2301, 2457, 2470, 1324, 1337, 1493, 1507, 1520,
- 1533, 1546, 1675, 1689, 1703, 1716, 1729, 1742,
- 1871, 1885, 1898, 1912, 1925, 2053, 2067, 2081,
- 2094, 2107, 2120, 2249, 2263, 2276, 2289, 2302,
- 2458, 2471, 1312, 1325, 1338, 1351, 1494, 1508,
- 1521, 1534, 1547, 1676, 1690, 1704, 1717, 1730,
- 1743, 1858, 1872, 1886, 1899, 1900, 1913, 1926,
- 1939, 2054, 2068, 2082, 2095, 2108, 2121, 2250,
- 2264, 2277, 2290, 2303, 2446, 2459, 2472, 2485,
- 1350, 1559, 1755, 1937, 1938, 2133, 2315, 2484,
- 1364, 1560, 1756, 1952, 2134, 2316, 2498, 1326,
- 1339, 1352, 1365, 1522, 1535, 1548, 1561, 1718,
- 1731, 1744, 1757, 1914, 1927, 1940, 1953, 2096,
- 2109, 2122, 2135, 2278, 2291, 2304, 2317, 2473,
- 2486, 1951, 2147, 2329, 2148, 2330, 2499, 1353,
- 1366, 1536, 1549, 1562, 1732, 1745, 1758, 1928,
- 1941, 1954, 2110, 2123, 2136, 2149, 2292, 2305,
- 2318, 2331, 2487, 2500, 2444, 2483, 2497, 2653,
- 2666, 2445, 2654, 2667, 2460, 2642, 2655, 2668,
- 2681, 2511, 2680, 2512, 2694, 2474, 2513, 2669,
- 2682, 2343, 2525, 2707, 2344, 2526, 2695, 2124,
- 2137, 2150, 2306, 2319, 2332, 2345, 2488, 2501,
- 2514, 2527, 2683, 2696, 2640, 2679, 2693, 2641,
- 2656, 2708, 2670, 2709, 2539, 2721, 2540, 2722,
- 2320, 2333, 2346, 2502, 2515, 2528, 2541, 2684,
- 2697, 2710, 2723, 1326, 1339, 1495, 1508, 1509,
- 1521, 1522, 1534, 1535, 1548, 1677, 1690, 1691,
- 1703, 1704, 1705, 1716, 1717, 1718, 1730, 1731,
- 1744, 1872, 1873, 1885, 1886, 1887, 1899, 1900,
- 1912, 1913, 1914, 1926, 1927, 2055, 2068, 2069,
- 2081, 2082, 2083, 2094, 2095, 2096, 2108, 2109,
- 2122, 2251, 2264, 2265, 2277, 2278, 2290, 2291,
- 2304, 2460, 2473, 1327, 1340, 1496, 1510, 1523,
- 1536, 1549, 1678, 1692, 1706, 1719, 1732, 1745,
- 1860, 1874, 1888, 1901, 1915, 1928, 2056, 2070,
- 2084, 2097, 2110, 2123, 2252, 2266, 2279, 2292,
- 2305, 2461, 2474, 1315, 1328, 1341, 1354, 1497,
- 1511, 1524, 1537, 1550, 1679, 1693, 1707, 1720,
- 1733, 1746, 1861, 1875, 1889, 1902, 1903, 1916,
- 1929, 2057, 2071, 2085, 2098, 2111, 2124, 2253,
- 2267, 2280, 2293, 2306, 2449, 2462, 2475, 1353,
- 1562, 1758, 1940, 1941, 2136, 2318, 2487, 1367,
- 1563, 1759, 1942, 2137, 2319, 2488, 1329, 1342,
- 1355, 1368, 1525, 1538, 1551, 1564, 1721, 1734,
- 1747, 1760, 1917, 1930, 1943, 1956, 2099, 2112,
- 2125, 2138, 2281, 2294, 2307, 2320, 2476, 2489,
- 1954, 1955, 2150, 2332, 2501, 2151, 2333, 2502,
- 1356, 1369, 1539, 1552, 1565, 1735, 1748, 1761,
- 1931, 1944, 1957, 2113, 2126, 2139, 2152, 2295,
- 2308, 2321, 2334, 2490, 2503, 2447, 2486, 2500,
- 2656, 2669, 2448, 2657, 2670, 2463, 2645, 2658,
- 2671, 2684, 2514, 2683, 2515, 2697, 2477, 2516,
- 2672, 2685, 2346, 2528, 2347, 2529, 2698, 2127,
- 2140, 2153, 2309, 2322, 2335, 2348, 2491, 2504,
- 2517, 2530, 2686, 2699, 2643, 2682, 2696, 2644,
- 2659, 2710, 2711, 2673, 2712, 2542, 2724, 2543,
- 2725, 2323, 2336, 2349, 2505, 2518, 2531, 2544,
- 2687, 2700, 2713, 2726, 1329, 1342, 1511, 1524,
- 1525, 1537, 1538, 1551, 1693, 1706, 1707, 1719,
- 1720, 1721, 1733, 1734, 1747, 1875, 1888, 1889,
- 1902, 1903, 1915, 1916, 1917, 1929, 1930, 2071,
- 2084, 2085, 2097, 2098, 2099, 2111, 2112, 2125,
- 2267, 2280, 2281, 2293, 2294, 2307, 2463, 2476,
- 1343, 1356, 1539, 1552, 1565, 1735, 1748, 1761,
- 1931, 1943, 1944, 2113, 2126, 2139, 2295, 2308,
- 2321, 2477, 2490, 1357, 1370, 1553, 1566, 1749,
- 1762, 1945, 1957, 1958, 2127, 2140, 2153, 2309,
- 2322, 2335, 2491, 2504, 2489, 2503, 2659, 2672,
- 2517, 2673, 2686, 2141, 2154, 2323, 2336, 2349,
- 2505, 2518, 2531, 2687, 2700, 2685, 2699, 2713,
- 2337, 2350, 2519, 2532, 2545, 2701, 2714, 2727,
- 1359, 1528, 1541, 1542, 1554, 1555, 1710, 1723,
- 1724, 1736, 1737, 1738, 1750, 1751, 1905, 1906,
- 1918, 1919, 1920, 1932, 1933, 1946, 1947, 2088,
- 2101, 2102, 2114, 2115, 2116, 2128, 2129, 2142,
- 2284, 2297, 2298, 2310, 2311, 2324, 2493, 2506,
- 1360, 1529, 1543, 1556, 1711, 1725, 1739, 1752,
- 1907, 1921, 1934, 1948, 2089, 2103, 2117, 2130,
- 2143, 2285, 2299, 2312, 2325, 2338, 2494, 2507,
- 1361, 1530, 1544, 1557, 1712, 1726, 1740, 1753,
- 1908, 1922, 1935, 1949, 2090, 2104, 2118, 2131,
- 2144, 2286, 2300, 2313, 2326, 2339, 2495, 2508,
- 2480, 2520, 2689, 2702, 2481, 2521, 2534, 2690,
- 2703, 1936, 2145, 2314, 2327, 2340, 2482, 2496,
- 2509, 2522, 2535, 2691, 2704, 2676, 2716, 2677,
- 2717, 2730, 2132, 2341, 2510, 2523, 2536, 2678,
- 2692, 2705, 2718, 2731, 1362, 1531, 1544, 1545,
- 1557, 1558, 1713, 1726, 1727, 1739, 1740, 1741,
- 1752, 1753, 1754, 1908, 1909, 1921, 1922, 1923,
- 1935, 1936, 1948, 1949, 1950, 2091, 2104, 2105,
- 2117, 2118, 2119, 2130, 2131, 2132, 2144, 2145,
- 2287, 2300, 2301, 2313, 2314, 2326, 2327, 2340,
- 2496, 2509, 1363, 1532, 1546, 1559, 1714, 1728,
- 1742, 1755, 1910, 1924, 1937, 1951, 2092, 2106,
- 2120, 2133, 2146, 2288, 2302, 2315, 2328, 2341,
- 2497, 2510, 1351, 1364, 1533, 1547, 1560, 1715,
- 1729, 1743, 1756, 1897, 1911, 1925, 1938, 1939,
- 1952, 2093, 2107, 2121, 2134, 2147, 2289, 2303,
- 2316, 2329, 2342, 2485, 2498, 2511, 2524, 2483,
- 2522, 2523, 2536, 2692, 2705, 2484, 2537, 2693,
- 2706, 2135, 2148, 2317, 2330, 2343, 2499, 2512,
- 2525, 2538, 2681, 2694, 2707, 2720, 2679, 2718,
- 2719, 2732, 2680, 2733, 2331, 2344, 2513, 2526,
- 2539, 2695, 2708, 2721, 2734, 1365, 1534, 1547,
- 1548, 1560, 1561, 1716, 1729, 1730, 1742, 1743,
- 1744, 1755, 1756, 1757, 1911, 1912, 1924, 1925,
- 1926, 1938, 1939, 1951, 1952, 1953, 2094, 2107,
- 2108, 2120, 2121, 2122, 2133, 2134, 2135, 2147,
- 2148, 2290, 2303, 2304, 2316, 2317, 2329, 2330,
- 2343, 2499, 2512, 1366, 1535, 1549, 1562, 1717,
- 1731, 1745, 1758, 1913, 1927, 1940, 1954, 2095,
- 2109, 2123, 2136, 2149, 2291, 2305, 2318, 2331,
- 2344, 2500, 2513, 1354, 1367, 1536, 1550, 1563,
- 1718, 1732, 1746, 1759, 1900, 1914, 1928, 1941,
- 1942, 1955, 2096, 2110, 2124, 2137, 2150, 2292,
- 2306, 2319, 2332, 2345, 2488, 2501, 2514, 2527,
- 2486, 2525, 2526, 2539, 2695, 2708, 2487, 2540,
- 2696, 2709, 2138, 2151, 2320, 2333, 2346, 2502,
- 2515, 2528, 2541, 2684, 2697, 2710, 2723, 2682,
- 2721, 2722, 2735, 2683, 2736, 2334, 2347, 2516,
- 2529, 2542, 2698, 2711, 2724, 2737, 1368, 1537,
- 1550, 1551, 1563, 1564, 1719, 1732, 1733, 1745,
- 1746, 1747, 1758, 1759, 1760, 1914, 1915, 1927,
- 1928, 1929, 1941, 1942, 1954, 1955, 1956, 2097,
- 2110, 2111, 2123, 2124, 2125, 2136, 2137, 2138,
- 2150, 2151, 2293, 2306, 2307, 2319, 2320, 2332,
- 2333, 2346, 2502, 2515, 1369, 1538, 1552, 1565,
- 1720, 1734, 1748, 1761, 1902, 1916, 1930, 1943,
- 1957, 2098, 2112, 2126, 2139, 2152, 2294, 2308,
- 2321, 2334, 2347, 2503, 2516, 1357, 1370, 1539,
- 1553, 1566, 1721, 1735, 1749, 1762, 1903, 1917,
- 1931, 1944, 1945, 1958, 2099, 2113, 2127, 2140,
- 2153, 2295, 2309, 2322, 2335, 2348, 2491, 2504,
- 2517, 2489, 2528, 2529, 2542, 2698, 2711, 2490,
- 2530, 2543, 2699, 2712, 2141, 2154, 2323, 2336,
- 2349, 2505, 2518, 2531, 2544, 2687, 2700, 2713,
- 2726, 2685, 2724, 2725, 2738, 2686, 2739, 2337,
- 2350, 2519, 2532, 2545, 2701, 2714, 2727, 2740,
- 1371, 1553, 1566, 1567, 1735, 1748, 1749, 1761,
- 1762, 1763, 1917, 1930, 1931, 1944, 1945, 1957,
- 1958, 1959, 2113, 2126, 2127, 2139, 2140, 2141,
- 2153, 2154, 2309, 2322, 2323, 2335, 2336, 2349,
- 2505, 2518, 2155, 2337, 2350, 2519, 2531, 2532,
- 2545, 2701, 2714, 2351, 2533, 2546, 2715, 2727,
- 2728, 2741, 2099, 2112, 2125, 2281, 2294, 2295,
- 2307, 2308, 2321, 2463, 2476, 2477, 2490, 2491,
- 2503, 2504, 2517, 2659, 2672, 2673, 2685, 2686,
- 2687, 2699, 2700, 2713, 1779, 1792, 1961, 1962,
- 1974, 1975, 1988, 2156, 2157, 2158, 2170, 2171,
- 2184, 2352, 2353, 2366, 2367, 2380, 2548, 2549,
- 2562, 1780, 1793, 1963, 1976, 1989, 2002, 2159,
- 2172, 2185, 2198, 2354, 2368, 2381, 2550, 2563,
- 2576, 1768, 1781, 1794, 1807, 1964, 1977, 1990,
- 2003, 2160, 2173, 2186, 2199, 2355, 2356, 2369,
- 2382, 2395, 2551, 2564, 2577, 1806, 2394, 1820,
- 2016, 2212, 2408, 2590, 1795, 1808, 1978, 1991,
- 2004, 2017, 2174, 2187, 2200, 2213, 2383, 2396,
- 2552, 2565, 2578, 2591, 1821, 2030, 2226, 2409,
- 2604, 1809, 1822, 1992, 2005, 2018, 2031, 2188,
- 2201, 2214, 2227, 2370, 2397, 2410, 2566, 2579,
- 2592, 2605, 1782, 1795, 1964, 1965, 1977, 1978,
- 1990, 1991, 2004, 2159, 2160, 2161, 2172, 2173,
- 2174, 2186, 2187, 2200, 2355, 2356, 2368, 2369,
- 2370, 2382, 2383, 2550, 2551, 2552, 2564, 2565,
- 2578, 1783, 1796, 1966, 1979, 1992, 2005, 2162,
- 2175, 2188, 2201, 2357, 2371, 2384, 2553, 2566,
- 2579, 1771, 1784, 1797, 1810, 1967, 1980, 1993,
- 2006, 2163, 2176, 2189, 2202, 2358, 2359, 2372,
- 2385, 2398, 2554, 2567, 2580, 1809, 2018, 2214,
- 2396, 2397, 2592, 1823, 2019, 2215, 2411, 2593,
- 1798, 1811, 1981, 1994, 2007, 2020, 2177, 2190,
- 2203, 2216, 2386, 2399, 2555, 2568, 2581, 2594,
- 1836, 2032, 2228, 2410, 2424, 2606, 1824, 2033,
- 2229, 2412, 2607, 1812, 1825, 1995, 2008, 2021,
- 2034, 2191, 2204, 2217, 2230, 2373, 2400, 2413,
- 2569, 2582, 2595, 2608, 1785, 1798, 1967, 1968,
- 1980, 1981, 1993, 1994, 2007, 2162, 2163, 2164,
- 2175, 2176, 2177, 2189, 2190, 2203, 2358, 2359,
- 2371, 2372, 2373, 2385, 2386, 2553, 2554, 2555,
- 2567, 2568, 2581, 1786, 1799, 1969, 1982, 1995,
- 2008, 2165, 2178, 2191, 2204, 2360, 2374, 2387,
- 2556, 2569, 2582, 1774, 1787, 1800, 1813, 1970,
- 1983, 1996, 2009, 2166, 2179, 2192, 2205, 2361,
- 2362, 2375, 2388, 2401, 2557, 2570, 2583, 1812,
- 2021, 2217, 2399, 2400, 2595, 1826, 2022, 2218,
- 2414, 2596, 1801, 1814, 1984, 1997, 2010, 2023,
- 2180, 2193, 2206, 2219, 2376, 2389, 2402, 2558,
- 2571, 2584, 2597, 1839, 2035, 2231, 2413, 2427,
- 2609, 1827, 2036, 2232, 2415, 2610, 1815, 1828,
- 1998, 2011, 2024, 2037, 2194, 2207, 2220, 2233,
- 2390, 2403, 2416, 2572, 2585, 2598, 2611, 1788,
- 1801, 1970, 1971, 1983, 1984, 1996, 1997, 2010,
- 2165, 2166, 2167, 2178, 2179, 2180, 2192, 2193,
- 2206, 2361, 2362, 2374, 2375, 2376, 2388, 2389,
- 2556, 2557, 2558, 2570, 2571, 2584, 1776, 1789,
- 1802, 1815, 1972, 1985, 1998, 2011, 2168, 2181,
- 2194, 2207, 2363, 2377, 2390, 2559, 2572, 2585,
- 1777, 1790, 1803, 1816, 1973, 1986, 1999, 2012,
- 2169, 2182, 2195, 2208, 2364, 2365, 2378, 2391,
- 2404, 2560, 2573, 2586, 2024, 2220, 2402, 2403,
- 2598, 1829, 2025, 2221, 2417, 2599, 1804, 1817,
- 1987, 2000, 2013, 2026, 2183, 2196, 2209, 2222,
- 2379, 2392, 2405, 2418, 2561, 2574, 2587, 2600,
- 2038, 2234, 2416, 2612, 1830, 2039, 2235, 2431,
- 2613, 1818, 1831, 2001, 2014, 2027, 2040, 2197,
- 2210, 2223, 2236, 2393, 2406, 2419, 2432, 2575,
- 2588, 2601, 2614, 1821, 1834, 1990, 2003, 2004,
- 2016, 2017, 2030, 2172, 2185, 2186, 2198, 2199,
- 2200, 2212, 2213, 2226, 2367, 2368, 2380, 2381,
- 2382, 2394, 2395, 2408, 2409, 2422, 2550, 2563,
- 2564, 2576, 2577, 2578, 2590, 2591, 2604, 1822,
- 1835, 1991, 2005, 2018, 2031, 2044, 2173, 2187,
- 2201, 2214, 2227, 2240, 2355, 2369, 2383, 2396,
- 2410, 2423, 2551, 2565, 2579, 2592, 2605, 2618,
- 1810, 1823, 1836, 1849, 1992, 2006, 2019, 2032,
- 2045, 2174, 2188, 2202, 2215, 2228, 2241, 2356,
- 2370, 2384, 2397, 2398, 2411, 2424, 2437, 2552,
- 2566, 2580, 2593, 2606, 2619, 1848, 2436, 1862,
- 2058, 2254, 2450, 2632, 1837, 1850, 2020, 2033,
- 2046, 2059, 2216, 2229, 2242, 2255, 2425, 2438,
- 2594, 2607, 2620, 2633, 1863, 2072, 2268, 2451,
- 2646, 1838, 1851, 1864, 1877, 2034, 2047, 2060,
- 2073, 2230, 2243, 2256, 2269, 2412, 2439, 2452,
- 2608, 2621, 2634, 2647, 1824, 1837, 1993, 2006,
- 2007, 2019, 2020, 2032, 2033, 2046, 2175, 2188,
- 2189, 2201, 2202, 2203, 2214, 2215, 2216, 2228,
- 2229, 2242, 2370, 2371, 2383, 2384, 2385, 2397,
- 2398, 2410, 2411, 2412, 2424, 2425, 2553, 2566,
- 2567, 2579, 2580, 2581, 2592, 2593, 2594, 2606,
- 2607, 2620, 1825, 1838, 1994, 2008, 2021, 2034,
- 2047, 2176, 2190, 2204, 2217, 2230, 2243, 2358,
- 2372, 2386, 2399, 2413, 2426, 2554, 2568, 2582,
- 2595, 2608, 2621, 1813, 1826, 1839, 1852, 1995,
- 2009, 2022, 2035, 2048, 2177, 2191, 2205, 2218,
- 2231, 2244, 2359, 2373, 2387, 2400, 2401, 2414,
- 2427, 2440, 2555, 2569, 2583, 2596, 2609, 2622,
- 1851, 2060, 2256, 2438, 2439, 2452, 2634, 1865,
- 2061, 2257, 2453, 2635, 1840, 1853, 2023, 2036,
- 2049, 2062, 2219, 2232, 2245, 2258, 2428, 2441,
- 2597, 2610, 2623, 2636, 1878, 2074, 2270, 2466,
- 2648, 1866, 2075, 2271, 2454, 2649, 1841, 1854,
- 1867, 1880, 2037, 2050, 2063, 2076, 2233, 2246,
- 2259, 2272, 2415, 2442, 2455, 2611, 2624, 2637,
- 2650, 1827, 1840, 1996, 2009, 2010, 2022, 2023,
- 2035, 2036, 2049, 2178, 2191, 2192, 2204, 2205,
- 2206, 2217, 2218, 2219, 2231, 2232, 2245, 2373,
- 2374, 2386, 2387, 2388, 2400, 2401, 2413, 2414,
- 2415, 2427, 2428, 2556, 2569, 2570, 2582, 2583,
- 2584, 2595, 2596, 2597, 2609, 2610, 2623, 1828,
- 1841, 1997, 2011, 2024, 2037, 2050, 2179, 2193,
- 2207, 2220, 2233, 2246, 2361, 2375, 2389, 2402,
- 2416, 2429, 2557, 2571, 2585, 2598, 2611, 2624,
- 1816, 1829, 1842, 1855, 1998, 2012, 2025, 2038,
- 2051, 2180, 2194, 2208, 2221, 2234, 2247, 2362,
- 2376, 2390, 2403, 2404, 2417, 2430, 2443, 2558,
- 2572, 2586, 2599, 2612, 2625, 1854, 2063, 2259,
- 2441, 2442, 2455, 2637, 1868, 2064, 2260, 2456,
- 2638, 1843, 1856, 2026, 2039, 2052, 2065, 2222,
- 2235, 2248, 2261, 2418, 2431, 2444, 2600, 2613,
- 2626, 2639, 1881, 2077, 2273, 2469, 2651, 1869,
- 2078, 2274, 2457, 2652, 1844, 1857, 1870, 1883,
- 2040, 2053, 2066, 2079, 2236, 2249, 2262, 2275,
- 2432, 2445, 2458, 2614, 2627, 2640, 2653, 1830,
- 1843, 1999, 2012, 2013, 2025, 2026, 2038, 2039,
- 2052, 2181, 2194, 2195, 2207, 2208, 2209, 2220,
- 2221, 2222, 2234, 2235, 2248, 2376, 2377, 2389,
- 2390, 2391, 2403, 2404, 2416, 2417, 2418, 2430,
- 2431, 2559, 2572, 2573, 2585, 2586, 2587, 2598,
- 2599, 2600, 2612, 2613, 2626, 1831, 1844, 1857,
- 2000, 2014, 2027, 2040, 2053, 2182, 2196, 2210,
- 2223, 2236, 2249, 2364, 2378, 2392, 2405, 2419,
- 2432, 2560, 2574, 2588, 2601, 2614, 2627, 1819,
- 1832, 1845, 2001, 2015, 2028, 2041, 2054, 2183,
- 2197, 2211, 2224, 2237, 2250, 2365, 2379, 2393,
- 2406, 2420, 2433, 2561, 2575, 2589, 2602, 2615,
- 2628, 2066, 2262, 2444, 2445, 2640, 1858, 1871,
- 2067, 2263, 2446, 2641, 1833, 1846, 1859, 1872,
- 2029, 2042, 2055, 2068, 2225, 2238, 2251, 2264,
- 2407, 2421, 2434, 2447, 2460, 2603, 2616, 2629,
- 2642, 2080, 2276, 2458, 2459, 2654, 1885, 2081,
- 2277, 2473, 2655, 1860, 1873, 2043, 2056, 2069,
- 2082, 2239, 2252, 2265, 2278, 2448, 2461, 2617,
- 2630, 2643, 2656, 1833, 1846, 2015, 2028, 2029,
- 2041, 2042, 2055, 2197, 2210, 2211, 2223, 2224,
- 2225, 2237, 2238, 2251, 2379, 2392, 2393, 2406,
- 2407, 2419, 2420, 2421, 2433, 2434, 2575, 2588,
- 2589, 2601, 2602, 2603, 2615, 2616, 2629, 1847,
- 1860, 2043, 2056, 2069, 2239, 2252, 2265, 2435,
- 2447, 2448, 2617, 2630, 2643, 1861, 1874, 2057,
- 2070, 2083, 2253, 2266, 2279, 2449, 2461, 2462,
- 2631, 2644, 2657, 1863, 1876, 2032, 2045, 2046,
- 2058, 2059, 2072, 2214, 2227, 2228, 2240, 2241,
- 2242, 2254, 2255, 2268, 2409, 2410, 2422, 2423,
- 2424, 2436, 2437, 2450, 2451, 2464, 2592, 2605,
- 2606, 2618, 2619, 2620, 2632, 2633, 2646, 1864,
- 1877, 2033, 2047, 2060, 2073, 2086, 2215, 2229,
- 2243, 2256, 2269, 2282, 2397, 2411, 2425, 2438,
- 2452, 2465, 2593, 2607, 2621, 2634, 2647, 2660,
- 1852, 1865, 1878, 1891, 2034, 2048, 2061, 2074,
- 2087, 2216, 2230, 2244, 2257, 2270, 2283, 2412,
- 2426, 2439, 2440, 2453, 2466, 2479, 2594, 2608,
- 2622, 2635, 2648, 2661, 1890, 2478, 2100, 2296,
- 2674, 1879, 1892, 2062, 2075, 2088, 2101, 2258,
- 2271, 2284, 2297, 2467, 2480, 2636, 2649, 2662,
- 2675, 1904, 2492, 1905, 2114, 2310, 2493, 2688,
- 1880, 1893, 1906, 2076, 2089, 2102, 2115, 2272,
- 2285, 2298, 2311, 2454, 2481, 2494, 2507, 2650,
- 2663, 2676, 2689, 1866, 1879, 2035, 2048, 2049,
- 2061, 2062, 2074, 2075, 2088, 2217, 2230, 2231,
- 2243, 2244, 2245, 2256, 2257, 2258, 2270, 2271,
- 2284, 2412, 2413, 2425, 2426, 2427, 2439, 2440,
- 2452, 2453, 2454, 2466, 2467, 2595, 2608, 2609,
- 2621, 2622, 2623, 2634, 2635, 2636, 2648, 2649,
- 2662, 1867, 1880, 2036, 2050, 2063, 2076, 2089,
- 2218, 2232, 2246, 2259, 2272, 2285, 2400, 2414,
- 2428, 2441, 2455, 2468, 2596, 2610, 2624, 2637,
- 2650, 2663, 1855, 1868, 1881, 1894, 2037, 2051,
- 2064, 2077, 2090, 2219, 2233, 2247, 2260, 2273,
- 2286, 2415, 2429, 2442, 2443, 2456, 2469, 2482,
- 2597, 2611, 2625, 2638, 2651, 2664, 1893, 2102,
- 2298, 2480, 2481, 2494, 2676, 2103, 2299, 2677,
- 1882, 1895, 2065, 2078, 2091, 2104, 2261, 2274,
- 2287, 2300, 2470, 2483, 2639, 2652, 2665, 2678,
- 1907, 1920, 2116, 2312, 2495, 2508, 2690, 1908,
- 2117, 2313, 2496, 2691, 1883, 1896, 1909, 2079,
- 2092, 2105, 2118, 2275, 2288, 2301, 2314, 2457,
- 2484, 2497, 2510, 2653, 2666, 2679, 2692, 1869,
- 1882, 2038, 2051, 2052, 2064, 2065, 2077, 2078,
- 2091, 2220, 2233, 2234, 2246, 2247, 2248, 2259,
- 2260, 2261, 2273, 2274, 2287, 2415, 2416, 2428,
- 2429, 2430, 2442, 2443, 2455, 2456, 2457, 2469,
- 2470, 2598, 2611, 2612, 2624, 2625, 2626, 2637,
- 2638, 2639, 2651, 2652, 2665, 1870, 1883, 2039,
- 2053, 2066, 2079, 2092, 2221, 2235, 2249, 2262,
- 2275, 2288, 2403, 2417, 2431, 2444, 2458, 2471,
- 2599, 2613, 2627, 2640, 2653, 2666, 1858, 1871,
- 1884, 2040, 2054, 2067, 2080, 2093, 2222, 2236,
- 2250, 2263, 2276, 2289, 2404, 2418, 2432, 2445,
- 2459, 2472, 2600, 2614, 2628, 2641, 2654, 2667,
- 1896, 2105, 2301, 2483, 2484, 2497, 2679, 1897,
- 2106, 2302, 2485, 2680, 1872, 1885, 1898, 1911,
- 2068, 2081, 2094, 2107, 2264, 2277, 2290, 2303,
- 2446, 2460, 2473, 2486, 2499, 2642, 2655, 2668,
- 2681, 1910, 2119, 2315, 2498, 2693, 2120, 2316,
- 2694, 1899, 1912, 2082, 2095, 2108, 2121, 2278,
- 2291, 2304, 2317, 2487, 2500, 2656, 2669, 2682,
- 2695, 1872, 1885, 2041, 2054, 2055, 2067, 2068,
- 2080, 2081, 2094, 2223, 2236, 2237, 2249, 2250,
- 2251, 2262, 2263, 2264, 2276, 2277, 2290, 2418,
- 2419, 2431, 2432, 2433, 2445, 2446, 2458, 2459,
- 2460, 2472, 2473, 2601, 2614, 2615, 2627, 2628,
- 2629, 2640, 2641, 2642, 2654, 2655, 2668, 1873,
- 1886, 2042, 2056, 2069, 2082, 2095, 2224, 2238,
- 2252, 2265, 2278, 2291, 2406, 2420, 2434, 2447,
- 2461, 2474, 2602, 2616, 2630, 2643, 2656, 2669,
- 1874, 1887, 2043, 2057, 2070, 2083, 2096, 2225,
- 2239, 2253, 2266, 2279, 2292, 2421, 2435, 2448,
- 2462, 2475, 2603, 2617, 2631, 2644, 2657, 2670,
- 1899, 2108, 2304, 2486, 2487, 2682, 1900, 1913,
- 2109, 2305, 2488, 2501, 2683, 1875, 1888, 1901,
- 1914, 2071, 2084, 2097, 2110, 2267, 2280, 2293,
- 2306, 2449, 2463, 2476, 2489, 2502, 2645, 2658,
- 2671, 2684, 1926, 2122, 2318, 2500, 2696, 1927,
- 2123, 2319, 2515, 2697, 1902, 1915, 2085, 2098,
- 2111, 2124, 2281, 2294, 2307, 2320, 2490, 2503,
- 2516, 2659, 2672, 2685, 2698, 1875, 1888, 2057,
- 2070, 2071, 2083, 2084, 2097, 2239, 2252, 2253,
- 2265, 2266, 2267, 2279, 2280, 2293, 2421, 2434,
- 2435, 2448, 2449, 2461, 2462, 2463, 2475, 2476,
- 2617, 2630, 2631, 2643, 2644, 2645, 2657, 2658,
- 2671, 1889, 1902, 2085, 2098, 2111, 2281, 2294,
- 2307, 2477, 2489, 2490, 2659, 2672, 2685, 1903,
- 1916, 1929, 2099, 2112, 2125, 2295, 2308, 2321,
- 2491, 2503, 2504, 2673, 2686, 2699, 1905, 1918,
- 2074, 2087, 2088, 2100, 2101, 2114, 2256, 2269,
- 2270, 2282, 2283, 2284, 2296, 2297, 2310, 2451,
- 2452, 2464, 2465, 2466, 2478, 2479, 2492, 2493,
- 2506, 2634, 2647, 2648, 2660, 2661, 2662, 2674,
- 2675, 2688, 1906, 1919, 2075, 2089, 2102, 2115,
- 2128, 2257, 2271, 2285, 2298, 2311, 2324, 2439,
- 2453, 2467, 2480, 2494, 2507, 2635, 2649, 2663,
- 2676, 2689, 2702, 1894, 1907, 1920, 1933, 2076,
- 2090, 2103, 2116, 2129, 2258, 2272, 2286, 2299,
- 2312, 2325, 2454, 2468, 2481, 2482, 2495, 2508,
- 2521, 2636, 2650, 2664, 2677, 2690, 2703, 1932,
- 2520, 2142, 2338, 2716, 1921, 1934, 2104, 2117,
- 2130, 2143, 2300, 2313, 2326, 2339, 2509, 2522,
- 2678, 2691, 2704, 2717, 1946, 2534, 1947, 2535,
- 2730, 1935, 1948, 2118, 2131, 2144, 2314, 2327,
- 2340, 2496, 2510, 2523, 2536, 2692, 2705, 2718,
- 2731, 1908, 1921, 2077, 2090, 2091, 2103, 2104,
- 2116, 2117, 2130, 2259, 2272, 2273, 2285, 2286,
- 2287, 2298, 2299, 2300, 2312, 2313, 2326, 2454,
- 2455, 2467, 2468, 2469, 2481, 2482, 2494, 2495,
- 2496, 2508, 2509, 2637, 2650, 2651, 2663, 2664,
- 2665, 2676, 2677, 2678, 2690, 2691, 2704, 1909,
- 1922, 2078, 2092, 2105, 2118, 2131, 2260, 2274,
- 2288, 2301, 2314, 2327, 2442, 2456, 2470, 2483,
- 2497, 2510, 2638, 2652, 2666, 2679, 2692, 2705,
- 1910, 1923, 2079, 2093, 2106, 2119, 2132, 2261,
- 2275, 2289, 2302, 2315, 2328, 2457, 2471, 2484,
- 2498, 2511, 2639, 2653, 2667, 2680, 2693, 2706,
- 1935, 2144, 2340, 2522, 2523, 2536, 2718, 1936,
- 2145, 2341, 2524, 2719, 1911, 1924, 1937, 1950,
- 2107, 2120, 2133, 2146, 2303, 2316, 2329, 2342,
- 2485, 2499, 2512, 2525, 2538, 2681, 2694, 2707,
- 2720, 1949, 2537, 2732, 2733, 1938, 1951, 2121,
- 2134, 2147, 2317, 2330, 2343, 2526, 2539, 2695,
- 2708, 2721, 2734, 1911, 1924, 2080, 2093, 2094,
- 2106, 2107, 2119, 2120, 2133, 2262, 2275, 2276,
- 2288, 2289, 2290, 2301, 2302, 2303, 2315, 2316,
- 2329, 2457, 2458, 2470, 2471, 2472, 2484, 2485,
- 2497, 2498, 2499, 2511, 2512, 2640, 2653, 2654,
- 2666, 2667, 2668, 2679, 2680, 2681, 2693, 2694,
- 2707, 1912, 1925, 2081, 2095, 2108, 2121, 2134,
- 2263, 2277, 2291, 2304, 2317, 2330, 2459, 2473,
- 2486, 2500, 2513, 2641, 2655, 2669, 2682, 2695,
- 2708, 1900, 1913, 1926, 1939, 2082, 2096, 2109,
- 2122, 2135, 2264, 2278, 2292, 2305, 2318, 2331,
- 2446, 2460, 2474, 2487, 2488, 2501, 2514, 2527,
- 2642, 2656, 2670, 2683, 2696, 2709, 1938, 2147,
- 2343, 2525, 2526, 2721, 1952, 2148, 2344, 2540,
- 2722, 1914, 1927, 1940, 1953, 2110, 2123, 2136,
- 2149, 2306, 2319, 2332, 2345, 2502, 2515, 2528,
- 2541, 2684, 2697, 2710, 2723, 2539, 2735, 2736,
- 1941, 1954, 2124, 2137, 2150, 2320, 2333, 2346,
- 2516, 2529, 2542, 2698, 2711, 2724, 2737, 1914,
- 1927, 2083, 2096, 2097, 2109, 2110, 2122, 2123,
- 2136, 2265, 2278, 2279, 2291, 2292, 2293, 2304,
- 2305, 2306, 2318, 2319, 2332, 2460, 2461, 2473,
- 2474, 2475, 2487, 2488, 2500, 2501, 2502, 2514,
- 2515, 2643, 2656, 2657, 2669, 2670, 2671, 2682,
- 2683, 2684, 2696, 2697, 2710, 1915, 1928, 2084,
- 2098, 2111, 2124, 2137, 2266, 2280, 2294, 2307,
- 2320, 2333, 2448, 2462, 2476, 2489, 2503, 2516,
- 2644, 2658, 2672, 2685, 2698, 2711, 1903, 1916,
- 1929, 1942, 2085, 2099, 2112, 2125, 2138, 2267,
- 2281, 2295, 2308, 2321, 2334, 2449, 2463, 2477,
- 2490, 2491, 2504, 2517, 2645, 2659, 2673, 2686,
- 2699, 2712, 1941, 2150, 2346, 2528, 2529, 2724,
- 1955, 2151, 2347, 2530, 2725, 1917, 1930, 1943,
- 1956, 2113, 2126, 2139, 2152, 2309, 2322, 2335,
- 2348, 2505, 2518, 2531, 2544, 2687, 2700, 2713,
- 2726, 2542, 2543, 2738, 2739, 1944, 1957, 2127,
- 2140, 2153, 2323, 2336, 2349, 2519, 2532, 2545,
- 2701, 2714, 2727, 2740, 1947, 2116, 2129, 2130,
- 2142, 2143, 2298, 2311, 2312, 2324, 2325, 2326,
- 2338, 2339, 2493, 2494, 2506, 2507, 2508, 2520,
- 2521, 2534, 2535, 2676, 2689, 2690, 2702, 2703,
- 2704, 2716, 2717, 2730, 1948, 2117, 2131, 2144,
- 2299, 2313, 2327, 2340, 2495, 2509, 2522, 2536,
- 2677, 2691, 2705, 2718, 2731, 1949, 2118, 2132,
- 2145, 2300, 2314, 2328, 2341, 2496, 2510, 2523,
- 2537, 2678, 2692, 2706, 2719, 2732, 1950, 2119,
- 2132, 2133, 2145, 2146, 2301, 2314, 2315, 2327,
- 2328, 2329, 2340, 2341, 2342, 2496, 2497, 2509,
- 2510, 2511, 2523, 2524, 2536, 2537, 2538, 2679,
- 2692, 2693, 2705, 2706, 2707, 2718, 2719, 2720,
- 2732, 2733, 1951, 2120, 2134, 2147, 2302, 2316,
- 2330, 2343, 2498, 2512, 2525, 2539, 2680, 2694,
- 2708, 2721, 2734, 1939, 1952, 2121, 2135, 2148,
- 2303, 2317, 2331, 2344, 2485, 2499, 2513, 2526,
- 2527, 2540, 2681, 2695, 2709, 2722, 2735, 1953,
- 2122, 2135, 2136, 2148, 2149, 2304, 2317, 2318,
- 2330, 2331, 2332, 2343, 2344, 2345, 2499, 2500,
- 2512, 2513, 2514, 2526, 2527, 2539, 2540, 2541,
- 2682, 2695, 2696, 2708, 2709, 2710, 2721, 2722,
- 2723, 2735, 2736, 1954, 2123, 2137, 2150, 2305,
- 2319, 2333, 2346, 2501, 2515, 2528, 2542, 2683,
- 2697, 2711, 2724, 2737, 1942, 1955, 2124, 2138,
- 2151, 2306, 2320, 2334, 2347, 2488, 2502, 2516,
- 2529, 2530, 2543, 2684, 2698, 2712, 2725, 2738,
- 1956, 2125, 2138, 2139, 2151, 2152, 2307, 2320,
- 2321, 2333, 2334, 2335, 2346, 2347, 2348, 2502,
- 2503, 2515, 2516, 2517, 2529, 2530, 2542, 2543,
- 2544, 2685, 2698, 2699, 2711, 2712, 2713, 2724,
- 2725, 2726, 2738, 2739, 1957, 2126, 2140, 2153,
- 2308, 2322, 2336, 2349, 2490, 2504, 2518, 2531,
- 2545, 2686, 2700, 2714, 2727, 2740, 1945, 1958,
- 2127, 2141, 2154, 2309, 2323, 2337, 2350, 2491,
- 2505, 2519, 2532, 2533, 2546, 2687, 2701, 2715,
- 2728, 2741, 1959, 2141, 2154, 2155, 2323, 2336,
- 2337, 2349, 2350, 2351, 2505, 2518, 2519, 2532,
- 2533, 2545, 2546, 2547, 2701, 2714, 2715, 2727,
- 2728, 2729, 2741, 2742,
-};
-
-static long _vq_fitmap_lsp12_1[] = {
- 0, 109, 243, 378, 516, 583, 757, 957,
- 1160, 1364, 1449, 1625, 1826, 2028, 2230, 2315,
- 2487, 2683, 2878, 3074, 3157, 3258, 3371, 3484,
- 3597, 3639, 3810, 4017, 4226, 4438, 4537, 4789,
- 5078, 5369, 5655, 5773, 6025, 6313, 6599, 6888,
- 7007, 7249, 7521, 7794, 8067, 8181, 8311, 8457,
- 8602, 8749, 8801, 8975, 9184, 9394, 9604, 9703,
- 9962, 10258, 10554, 10839, 10958, 11212, 11502, 11790,
- 12079, 12198, 12439, 12711, 12986, 13261, 13375, 13505,
- 13652, 13797, 13945, 13997, 14161, 14361, 14562, 14764,
- 14860, 15097, 15370, 15643, 15911, 16023, 16258, 16529,
- 16797, 17068, 17182, 17406, 17659, 17915, 18172, 18280,
- 18404, 18541, 18678, 18816, 18892, 18994, 19116, 19239,
- 15643, 19363, 19500, 19657, 19815, 19971, 20035, 20171,
- 20327, 20481, 20637, 20702, 20833, 20979, 21127, 18816,
- 21276, 21342, 21415, 21488, 21562,
-};
-
-static long _vq_fitlength_lsp12_1[] = {
- 109, 134, 135, 138, 67, 174, 200, 203,
- 204, 85, 176, 201, 202, 202, 85, 172,
- 196, 195, 196, 83, 101, 113, 113, 113,
- 42, 171, 207, 209, 212, 99, 252, 289,
- 291, 286, 118, 252, 288, 286, 289, 119,
- 242, 272, 273, 273, 114, 130, 146, 145,
- 147, 52, 174, 209, 210, 210, 99, 259,
- 296, 296, 285, 119, 254, 290, 288, 289,
- 119, 241, 272, 275, 275, 114, 130, 147,
- 145, 148, 52, 164, 200, 201, 202, 96,
- 237, 273, 273, 268, 112, 235, 271, 268,
- 271, 114, 224, 253, 256, 257, 108, 124,
- 137, 137, 138, 76, 102, 122, 123, 124,
- 268, 137, 157, 158, 156, 64, 136, 156,
- 154, 156, 65, 131, 146, 148, 149, 76,
- 66, 73, 73, 74, 26,
-};
-
-static encode_aux_pigeonhole _vq_auxp_lsp12_1 = {
- 0.202, 0.006, 13, 5,
- _vq_pigeonmap_lsp12_1,
- 21588,
- _vq_fitlist_lsp12_1,
- _vq_fitmap_lsp12_1,
- _vq_fitlength_lsp12_1
-};
-
-static static_codebook _vq_book_lsp12_1 = {
- 3, 2744,
- _vq_lengthlist_lsp12_1,
- 1, 1606015779, 1595446133, 4, 1,
- _vq_quantlist_lsp12_1,
- NULL,
- NULL,
- &_vq_auxp_lsp12_1,
- 0
-};
-
-
-#endif
diff --git a/lib/books/lsp30_0.vqh b/lib/books/lsp30_0.vqh
deleted file mode 100644
index 872fb489..00000000
--- a/lib/books/lsp30_0.vqh
+++ /dev/null
@@ -1,375 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: static codebook autogenerated by vq/somethingorother
-
- ********************************************************************/
-
-#ifndef _V_lsp30_0_VQH_
-#define _V_lsp30_0_VQH_
-#include "codebook.h"
-
-static long _vq_quantlist_lsp30_0[] = {
- 0,
- 2,
- 4,
- 6,
- 8,
- 10,
- 12,
- 14,
- 16,
- 18,
- 20,
- 22,
- 24,
- 26,
- 28,
- 31,
- 35,
- 39,
- 43,
- 47,
- 51,
- 55,
- 63,
- 73,
- 83,
- 93,
-};
-
-static long _vq_lengthlist_lsp30_0[] = {
- 18,18,18,18,18,18,18,18,18,18,18,18,17,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,18,18,17,15,14,17,18,18,18,18,
- 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
- 17,14,14,13,13,15,18,18,18,18,18,18,18,18,18,18,
- 18,18,18,18,18,18,18,15,14,13,13,14,13,13,12,13,
- 16,18,16,18,18,18,18,18,18,18,18,18,18,18,18,18,
- 17,13,12,12,13,15,15,14,12,13,16,15,18,18,18,18,
- 18,18,18,18,18,18,18,18,18,16,17,13,12,13,14,14,
- 13,14,13,14,18,14,17,18,15,18,18,18,18,18,18,18,
- 18,18,18,17,13,11,11,13,15,14,12,12,12,13,13,14,
- 15,14,16,18,18,18,18,18,18,18,18,18,15,15,13,11,
- 11,11,12,12,11,11,12,11,12,13,14,14,13,18,18,18,
- 18,18,18,18,18,18,14,12,11,11,11,12,12,10,10,11,
- 11,10,11,11,13,15,13,18,18,18,18,18,18,18,17,16,
- 14,13,12,12,13,14,12,11,11,11,10,10,10,11,14,16,
- 13,18,18,18,18,18,17,17,16,15,16,15,12,13,13,14,
- 14,13,11,10, 9,10,11,11,13,13,12,18,18,18,18,18,
- 18,18,18,15,15,16,15,13,12,11,11,11,10, 9,10,11,
- 11,11,12,11,13,18,18,18,18,18,16,17,18,15,14,13,
- 12,11,10,11,10,10, 9, 9, 9,10,10,11,11,11,13,18,
- 18,18,18,18,17,18,15,16,13,12,10,11,10,10,10, 9,
- 8, 8, 7, 8, 9,10,12,12,13,18,17,18,18,18,18,17,
- 12,11,10,11,10, 9,10,10, 9, 8, 7, 6, 6, 7, 9,10,
- 11,11,13,16,18,18,18,18,18,16,13,12,12,11,10,10,
- 10, 8, 7, 6, 5, 4, 4, 6, 7, 9,10,11,12,17,18,18,
- 18,16,15,13,13,12,11,11,11,12, 9, 9, 8, 7, 5, 4,
- 3, 5, 7, 8, 9,10,13,16,18,17,16,14,12,12,11,12,
- 11,11,12,11,10, 9, 9, 8, 7, 5, 4, 5, 7, 8, 9,10,
- 14,18,18,18,15,14,12,12,11,10,10,11,11,12,11,11,
- 10, 9, 8, 6, 6, 6, 7, 9,10,11,14,17,18,18,15,14,
- 13,11,11,10,10,10,12,13,12,12,10,10, 9, 8, 7, 7,
- 7, 9,10,11,16,18,17,18,16,16,13,12,12,11,11,11,
- 13,13,12,12,12,11,10, 8, 7, 7, 8, 9,10,12,17,18,
- 14,17,16,15,14,11, 9,10,11,11,12,13,13,13,13,12,
- 12,10,10, 9, 9, 9,10,14,18,18,13,16,16,15,12,10,
- 10,10,11,12,11,11,10, 9, 8, 8, 8, 8, 8, 9,12,15,
- 16,17,17,18,16,18,17,17,18,16,17,15,14,13,12,11,
- 10,10,10, 9, 9,10,14,16,16,17,13,17,18,16,18,17,
- 18,18,18,18,18,18,17,15,14,13,12,12,13,14,17,17,
- 18,17,16,18,17,17,16,15,18,17,18,18,18,18,18,18,
- 17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,16,
- 16,18,18,18,
-};
-
-static long _vq_pigeonmap_lsp30_0[] = {
- 0, 0, 0, 0, 0, 0, 1, 1,
- 1, 1, 1, 1, 2, 2, 2, 2,
- 2, 2, 3, 3, 3, 3, 3, 3,
- 4, 4, 4, 4, 4, 4, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 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, 8,
- 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8,
-};
-
-static long _vq_fitlist_lsp30_0[] = {
- 0, 1, 26, 27, 2, 28, 3, 52,
- 29, 53, 54, 79, 55, 78, 80, 105,
- 81, 106, 3, 4, 29, 5, 30, 6,
- 31, 55, 56, 32, 57, 81, 58, 83,
- 82, 107, 108, 84, 109, 6, 7, 32,
- 8, 33, 9, 34, 59, 35, 60, 58,
- 85, 61, 84, 86, 87, 9, 35, 10,
- 36, 11, 12, 37, 38, 63, 61, 62,
- 87, 64, 89, 88, 113, 114, 90, 115,
- 12, 13, 38, 14, 39, 40, 15, 64,
- 65, 66, 41, 91, 67, 92, 90, 116,
- 117, 93, 118, 15, 41, 67, 16, 42,
- 17, 68, 43, 69, 18, 44, 93, 94,
- 95, 120, 121, 70, 119, 18, 44, 70,
- 19, 45, 71, 20, 46, 21, 72, 96,
- 97, 98, 47, 122, 124, 73, 123, 99,
- 21, 47, 73, 99, 22, 125, 48, 74,
- 100, 126, 23, 49, 75, 101, 127, 24,
- 152, 153, 50, 151, 178, 179, 76, 24,
- 50, 76, 102, 128, 25, 154, 51, 77,
- 180, 103, 206, 129, 232, 155, 258, 181,
- 53, 78, 79, 104, 54, 105, 80, 55,
- 81, 106, 130, 131, 107, 132, 156, 157,
- 133, 158, 183, 159, 56, 81, 82, 107,
- 57, 83, 108, 58, 109, 84, 133, 134,
- 110, 135, 159, 160, 136, 161, 185, 162,
- 187, 59, 84, 85, 110, 60, 86, 111,
- 61, 87, 112, 137, 113, 138, 136, 163,
- 139, 164, 162, 189, 165, 62, 87, 113,
- 88, 63, 89, 114, 64, 90, 115, 139,
- 116, 141, 140, 165, 142, 167, 166, 191,
- 168, 193, 65, 90, 91, 116, 66, 117,
- 92, 118, 67, 93, 144, 142, 143, 119,
- 168, 170, 169, 145, 195, 196, 67, 93,
- 119, 42, 68, 145, 94, 120, 43, 69,
- 146, 95, 121, 44, 70, 147, 96, 122,
- 171, 172, 173, 148, 197, 198, 199, 70,
- 96, 122, 71, 148, 45, 97, 123, 46,
- 72, 149, 98, 124, 47, 73, 150, 99,
- 175, 176, 125, 174, 200, 201, 202, 151,
- 177, 73, 99, 125, 151, 22, 48, 177,
- 74, 100, 126, 152, 178, 23, 49, 204,
- 75, 101, 127, 153, 179, 24, 205, 50,
- 76, 102, 203, 230, 231, 128, 229, 256,
- 257, 154, 131, 156, 157, 182, 132, 183,
- 158, 133, 159, 184, 208, 209, 185, 210,
- 234, 235, 211, 236, 260, 237, 134, 159,
- 160, 185, 135, 186, 161, 136, 187, 162,
- 188, 213, 211, 212, 237, 238, 214, 239,
- 263, 264, 240, 265, 137, 162, 163, 188,
- 138, 164, 189, 139, 165, 190, 214, 215,
- 191, 216, 241, 217, 242, 240, 267, 243,
- 268, 140, 165, 191, 166, 141, 167, 192,
- 142, 168, 193, 217, 194, 218, 219, 243,
- 220, 245, 244, 246, 271, 143, 168, 194,
- 169, 144, 195, 170, 196, 145, 171, 222,
- 221, 197, 220, 246, 247, 248, 223, 272,
- 273, 274, 145, 171, 197, 120, 146, 223,
- 172, 198, 121, 147, 224, 173, 199, 148,
- 174, 225, 249, 250, 251, 200, 275, 277,
- 226, 276, 252, 148, 174, 200, 123, 149,
- 226, 175, 201, 124, 150, 227, 176, 202,
- 125, 151, 228, 177, 203, 252, 253, 254,
- 278, 279, 229, 280, 151, 177, 203, 229,
- 100, 126, 255, 152, 178, 204, 230, 256,
- 101, 127, 282, 75, 153, 179, 205, 231,
- 257, 102, 283, 76, 128, 154, 180, 281,
- 308, 309, 206, 307, 334, 335, 232, 102,
- 128, 154, 180, 206, 232, 258, 103, 129,
- 284, 77, 155, 181, 207, 310, 233, 336,
- 259, 209, 234, 235, 260, 210, 261, 236,
- 211, 237, 262, 287, 263, 286, 288, 313,
- 289, 314, 312, 338, 339, 315, 212, 237,
- 238, 263, 213, 239, 264, 214, 265, 240,
- 289, 266, 291, 290, 315, 316, 292, 317,
- 341, 342, 318, 343, 215, 240, 241, 266,
- 216, 242, 267, 217, 243, 268, 293, 269,
- 292, 294, 295, 318, 319, 320, 345, 321,
- 346, 218, 243, 269, 244, 219, 245, 270,
- 220, 246, 271, 295, 272, 297, 296, 321,
- 322, 298, 323, 347, 324, 349, 221, 246,
- 247, 272, 222, 273, 248, 274, 223, 249,
- 299, 275, 300, 298, 324, 325, 301, 326,
- 352, 350, 351, 223, 249, 275, 224, 301,
- 198, 250, 276, 199, 225, 302, 251, 277,
- 200, 226, 303, 252, 328, 329, 278, 327,
- 353, 354, 355, 304, 330, 226, 252, 278,
- 201, 227, 304, 253, 279, 228, 305, 202,
- 254, 280, 203, 229, 306, 255, 330, 332,
- 281, 331, 307, 356, 357, 358, 229, 255,
- 281, 307, 178, 204, 333, 230, 256, 282,
- 308, 334, 179, 205, 360, 153, 231, 257,
- 283, 309, 335, 180, 361, 154, 206, 232,
- 258, 359, 386, 387, 284, 385, 412, 413,
- 310, 180, 206, 232, 258, 284, 310, 336,
- 181, 207, 362, 155, 233, 259, 285, 388,
- 311, 414, 337, 363, 440, 389, 287, 312,
- 313, 338, 288, 314, 339, 289, 315, 340,
- 364, 365, 341, 366, 367, 390, 391, 392,
- 290, 315, 316, 341, 291, 317, 342, 292,
- 343, 318, 367, 368, 344, 369, 370, 393,
- 394, 395, 392, 293, 318, 344, 319, 294,
- 320, 345, 295, 321, 346, 371, 347, 372,
- 370, 373, 398, 395, 396, 397, 296, 321,
- 322, 347, 297, 323, 348, 298, 324, 349,
- 373, 350, 375, 374, 376, 399, 401, 398,
- 400, 299, 324, 325, 350, 300, 351, 326,
- 352, 301, 327, 376, 378, 377, 353, 402,
- 403, 379, 404, 401, 301, 327, 353, 276,
- 302, 379, 328, 354, 277, 303, 380, 329,
- 355, 278, 304, 381, 330, 356, 406, 407,
- 405, 382, 304, 330, 356, 305, 331, 357,
- 280, 306, 383, 332, 358, 281, 307, 384,
- 333, 382, 359, 408, 410, 385, 409, 307,
- 333, 359, 385, 256, 282, 308, 334, 360,
- 386, 257, 283, 412, 231, 309, 335, 361,
- 387, 258, 413, 232, 284, 310, 411, 336,
- 438, 439, 362, 437, 388, 365, 390, 340,
- 366, 391, 367, 392, 368, 393, 416, 417,
- 418, 394, 419, 442, 443, 444, 420, 445,
- 468, 469, 470, 446, 471, 368, 393, 369,
- 394, 370, 395, 371, 396, 418, 419, 420,
- 421, 397, 422, 444, 445, 446, 447, 423,
- 448, 470, 471, 472, 473, 449, 474, 371,
- 396, 372, 397, 347, 373, 398, 348, 374,
- 399, 421, 422, 423, 424, 400, 425, 447,
- 448, 449, 450, 426, 451, 473, 474, 475,
- 476, 452, 477, 374, 399, 375, 400, 376,
- 401, 377, 402, 424, 425, 426, 427, 403,
- 428, 450, 451, 452, 453, 429, 454, 476,
- 477, 478, 479, 455, 480, 377, 402, 378,
- 403, 404, 379, 405, 430, 427, 428, 429,
- 431, 456, 453, 454, 455, 457, 482, 479,
- 480, 481, 379, 404, 405, 354, 380, 406,
- 355, 381, 407, 356, 382, 431, 432, 408,
- 433, 430, 457, 434, 458, 459, 456, 460,
- 483, 484, 485, 482, 382, 408, 357, 383,
- 409, 358, 384, 410, 359, 385, 411, 434,
- 435, 436, 461, 437, 460, 462, 486, 463,
- 487, 488, 385, 411, 437, 334, 360, 386,
- 412, 438, 335, 361, 309, 387, 413, 439,
- 336, 310, 362, 388, 464, 465, 414, 463,
- 490, 491, 440, 489, 516, 517, 466, 515,
- 336, 362, 388, 414, 440, 337, 363, 311,
- 389, 415, 466, 441, 492, 467, 518, 493,
- 443, 468, 444, 469, 445, 470, 446, 471,
- 494, 495, 496, 472, 497, 520, 521, 522,
- 498, 523, 546, 547, 548, 524, 549, 446,
- 471, 447, 472, 448, 473, 449, 474, 496,
- 497, 498, 499, 475, 500, 522, 523, 524,
- 525, 501, 526, 548, 549, 550, 551, 527,
- 552, 449, 474, 450, 475, 451, 476, 452,
- 477, 499, 500, 501, 502, 478, 503, 525,
- 526, 527, 528, 504, 529, 551, 552, 553,
- 554, 530, 555, 452, 477, 453, 478, 454,
- 479, 455, 480, 502, 503, 504, 505, 481,
- 506, 528, 529, 530, 531, 507, 532, 554,
- 555, 556, 557, 533, 558, 455, 480, 456,
- 481, 482, 457, 483, 508, 505, 506, 507,
- 509, 534, 531, 532, 533, 535, 560, 557,
- 558, 559, 457, 482, 483, 458, 484, 459,
- 485, 460, 486, 511, 509, 510, 508, 536,
- 512, 535, 537, 534, 561, 538, 562, 563,
- 560, 460, 486, 461, 487, 462, 488, 463,
- 489, 512, 513, 514, 515, 540, 538, 539,
- 565, 541, 564, 566, 463, 489, 515, 438,
- 464, 490, 516, 439, 465, 491, 517, 440,
- 466, 542, 543, 492, 541, 568, 569, 518,
- 567, 544, 466, 492, 518, 441, 467, 493,
- 544, 519, 570, 545, 571, 521, 546, 522,
- 547, 523, 548, 524, 549, 550, 573, 572,
- 574, 575, 576, 598, 599, 600, 577, 601,
- 602, 624, 625, 626, 603, 524, 549, 525,
- 550, 526, 551, 527, 552, 553, 574, 575,
- 576, 577, 578, 579, 600, 602, 599, 601,
- 603, 580, 604, 605, 626, 628, 625, 627,
- 629, 606, 527, 552, 528, 553, 529, 554,
- 530, 555, 556, 577, 578, 579, 580, 581,
- 582, 603, 604, 605, 602, 606, 583, 607,
- 608, 629, 628, 630, 631, 632, 609, 555,
- 530, 531, 556, 532, 557, 533, 558, 559,
- 581, 582, 583, 580, 584, 585, 606, 607,
- 608, 605, 609, 586, 610, 611, 632, 633,
- 634, 631, 635, 612, 533, 558, 534, 559,
- 560, 535, 561, 583, 584, 585, 586, 587,
- 610, 611, 608, 609, 612, 613, 636, 637,
- 634, 635, 638, 535, 561, 536, 562, 537,
- 563, 538, 564, 586, 587, 588, 589, 590,
- 611, 612, 613, 614, 615, 616, 638, 639,
- 640, 637, 641, 538, 564, 539, 565, 540,
- 566, 541, 567, 589, 590, 591, 592, 593,
- 615, 616, 617, 618, 619, 641, 642, 643,
- 644, 541, 567, 516, 542, 568, 517, 543,
- 594, 569, 518, 544, 595, 593, 570, 592,
- 620, 621, 596, 619, 618, 622, 647, 646,
- 645, 644, 544, 570, 519, 545, 596, 571,
- 597, 622, 623, 648, 649, 599, 600, 624,
- 601, 625, 602, 626, 627, 628, 650, 651,
- 652, 629, 653, 603, 626, 627, 604, 628,
- 605, 629, 630, 631, 653, 654, 651, 652,
- 655, 632, 656, 606, 629, 630, 607, 631,
- 608, 632, 633, 634, 655, 657, 654, 656,
- 658, 635, 659, 609, 632, 633, 610, 634,
- 611, 635, 636, 637, 658, 657, 659, 660,
- 661, 638, 662, 612, 635, 636, 637, 613,
- 638, 639, 661, 662, 663, 660, 664, 638,
- 614, 639, 615, 640, 616, 641, 642, 663,
- 664, 665, 666, 667, 668, 641, 642, 617,
- 643, 618, 619, 644, 645, 667, 668, 669,
- 670, 671, 644, 645, 620, 646, 621, 647,
- 622, 648, 672, 673, 671, 670, 674, 622,
- 648, 623, 649, 674, 675,
-};
-
-static long _vq_fitmap_lsp30_0[] = {
- 0, 18, 37, 53, 72, 91, 109, 128,
- 151, 168, 188, 209, 229, 250, 270, 295,
- 321, 151, 354, 374, 396, 417, 437, 458,
- 483, 508, 543, 561, 582, 604, 625, 646,
- 667, 693, 718, 753, 774, 792, 811, 830,
- 849, 868, 890, 911, 753, 941, 965, 991,
- 1019, 1045, 1066, 1092, 1114, 1144, 1160, 1183,
- 1209, 1235, 1261, 1282, 1305, 1324, 1346, 1357,
- 1381, 1410, 1439, 1468, 1491, 1515, 1537, 1562,
- 1573, 1587, 1603, 1619, 1635, 1647, 1661, 1674,
- 1687,
-};
-
-static long _vq_fitlength_lsp30_0[] = {
- 18, 19, 16, 19, 19, 18, 19, 23,
- 17, 20, 21, 20, 21, 20, 25, 26,
- 33, 17, 20, 22, 21, 20, 21, 25,
- 25, 35, 18, 21, 22, 21, 21, 21,
- 26, 25, 35, 21, 18, 19, 19, 19,
- 19, 22, 21, 30, 21, 24, 26, 28,
- 26, 21, 26, 22, 30, 16, 23, 26,
- 26, 26, 21, 23, 19, 22, 11, 24,
- 29, 29, 29, 23, 24, 22, 25, 11,
- 14, 16, 16, 16, 12, 14, 13, 13,
- 6,
-};
-
-static encode_aux_pigeonhole _vq_auxp_lsp30_0 = {
- 0.067, 0.001, 93, 9,
- _vq_pigeonmap_lsp30_0,
- 1693,
- _vq_fitlist_lsp30_0,
- _vq_fitmap_lsp30_0,
- _vq_fitlength_lsp30_0
-};
-
-static static_codebook _vq_book_lsp30_0 = {
- 2, 676,
- _vq_lengthlist_lsp30_0,
- 1, 1603348202, 1590714958, 7, 1,
- _vq_quantlist_lsp30_0,
- NULL,
- NULL,
- &_vq_auxp_lsp30_0,
- 0
-};
-
-
-#endif
diff --git a/lib/books/lsp30_1.vqh b/lib/books/lsp30_1.vqh
deleted file mode 100644
index c8672e4c..00000000
--- a/lib/books/lsp30_1.vqh
+++ /dev/null
@@ -1,1575 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: static codebook autogenerated by vq/somethingorother
-
- ********************************************************************/
-
-#ifndef _V_lsp30_1_VQH_
-#define _V_lsp30_1_VQH_
-#include "codebook.h"
-
-static long _vq_quantlist_lsp30_1[] = {
- 0,
- 2,
- 4,
- 6,
- 8,
- 10,
- 12,
- 15,
- 19,
- 23,
- 27,
- 31,
- 35,
- 39,
-};
-
-static long _vq_lengthlist_lsp30_1[] = {
- 19,20,20,19,17,18,20,16,16,19,18,20,19,19,19,19,
- 18,18,18,18,18,17,17,19,19,19,19,19,19,19,19,19,
- 19,19,18,17,17,18,19,19,19,19,19,19,19,19,19,19,
- 17,16,14,19,19,19,19,19,19,19,19,19,19,19,18,13,
- 15,18,19,19,19,19,19,19,19,19,19,19,17,15,15,18,
- 19,19,19,19,19,19,19,19,19,19,17,18,17,18,19,19,
- 19,19,19,19,19,19,19,19,19,19,18,18,19,19,18,18,
- 19,19,19,19,19,19,19,19,18,18,17,16,15,17,19,19,
- 19,19,19,19,19,19,18,16,16,15,15,15,19,19,19,19,
- 19,19,19,18,18,17,16,15,14,16,19,19,19,19,19,19,
- 19,18,17,16,16,14,16,19,19,19,19,19,19,19,18,19,
- 14,15,15,16,19,19,19,18,18,19,18,18,18,15,16,16,
- 16,18,18,19,18,19,19,18,18,17,17,17,18,18,19,19,
- 19,19,19,19,19,17,18,19,18,17,17,19,19,19,19,19,
- 19,19,19,19,19,19,17,17,16,19,19,19,19,19,19,19,
- 19,19,19,19,18,17,16,19,18,19,19,19,19,19,19,19,
- 19,19,18,17,18,16,19,19,19,19,19,19,19,19,19,19,
- 17,17,18,17,19,18,19,18,19,19,19,19,19,19,16,18,
- 18,17,19,18,18,18,19,19,19,19,19,19,18,19,17,16,
- 18,17,16,16,19,19,19,19,19,19,18,15,15,17,16,14,
- 15,14,19,19,19,19,19,19,19,17,14,15,16,15,14,14,
- 19,19,19,19,19,19,19,16,15,15,15,14,14,16,19,19,
- 19,19,18,18,19,17,17,14,15,14,16,18,19,19,17,18,
- 17,17,17,16,13,14,15,15,19,18,17,16,16,17,17,16,
- 16,14,15,14,15,16,18,19,19,19,19,19,18,17,17,17,
- 18,19,19,19,19,19,19,19,19,19,18,17,18,17,17,19,
- 19,17,19,19,19,18,19,19,18,18,17,16,16,18,17,18,
- 17,19,19,19,19,19,19,19,19,16,17,17,17,19,16,18,
- 19,19,19,19,19,19,19,18,17,17,17,18,17,18,19,19,
- 19,19,19,18,19,17,17,16,17,17,17,17,19,19,19,19,
- 19,17,17,18,16,15,17,17,17,17,19,19,19,19,19,19,
- 17,17,15,15,16,16,15,15,19,19,19,19,19,19,19,16,
- 16,16,16,14,15,14,19,19,19,19,19,19,18,15,13,14,
- 15,14,14,15,19,19,19,19,19,17,18,16,15,15,14,14,
- 14,15,19,19,19,18,17,19,19,16,15,14,14,15,16,17,
- 18,16,16,16,16,16,18,15,14,13,15,15,16,19,16,17,
- 17,17,16,16,15,15,14,14,14,16,18,19,19,18,19,19,
- 19,17,17,19,18,19,19,18,19,19,18,19,19,19,19,18,
- 17,17,16,18,19,18,16,17,18,19,19,19,17,16,16,17,
- 16,17,18,17,15,17,19,19,19,19,19,18,17,19,17,16,
- 16,16,15,19,19,19,19,19,19,19,19,19,17,16,16,16,
- 18,16,19,19,19,19,18,18,19,18,16,15,15,17,17,16,
- 19,19,18,18,18,17,17,16,15,15,15,17,16,16,19,19,
- 19,19,19,19,17,15,15,12,15,15,15,14,19,19,19,19,
- 19,19,17,15,13,13,14,14,14,15,19,19,19,19,19,17,
- 15,13,13,14,13,14,15,16,19,19,18,19,18,17,16,15,
- 14,14,13,15,16,16,18,18,17,17,16,17,18,16,14,13,
- 13,16,17,17,15,16,17,17,17,16,16,15,14,13,16,17,
- 17,19,19,19,17,17,16,17,16,15,13,14,15,16,19,19,
- 19,19,19,19,18,17,17,19,18,17,19,16,15,17,18,19,
- 19,19,19,18,17,17,17,19,17,15,15,16,19,19,19,19,
- 19,17,17,17,17,19,16,15,17,17,19,18,19,19,17,16,
- 17,17,18,17,16,17,17,17,19,19,19,19,17,18,17,19,
- 17,14,16,16,18,16,19,19,19,19,19,19,16,17,15,14,
- 14,16,19,16,19,19,19,18,18,16,15,15,14,14,13,15,
- 16,15,19,19,19,18,18,17,15,14,13,12,13,14,13,14,
- 18,19,19,19,19,16,14,12,11,11,12,13,13,15,19,19,
- 18,18,17,15,14,12,12,12,12,13,16,18,19,18,17,16,
- 18,16,16,14,13,13,12,15,17,18,17,18,17,17,17,18,
- 16,14,14,12,14,17,18,19,18,17,17,17,17,17,16,15,
- 14,13,15,17,16,19,19,18,17,17,17,17,17,14,12,14,
- 14,17,19,19,18,19,19,19,18,19,19,17,18,18,17,14,
- 13,17,19,19,19,18,17,15,15,15,16,19,16,14,14,17,
- 18,18,18,18,16,15,14,16,16,17,16,15,15,17,19,18,
- 19,18,18,17,17,16,16,16,15,17,17,17,19,19,18,19,
- 17,19,16,16,16,15,15,17,17,16,19,19,19,18,17,17,
- 15,15,14,14,14,16,16,15,19,19,19,18,17,16,14,13,
- 13,13,14,14,14,14,19,18,18,17,16,14,12,11,11,11,
- 12,13,13,14,19,19,18,15,15,14,12,10,10,11,12,12,
- 13,17,19,19,17,15,14,14,12,11,10,11,11,13,16,18,
- 17,17,17,16,17,15,14,12,12,12,12,16,17,18,18,17,
- 16,16,16,16,15,14,13,12,15,17,19,19,17,16,16,16,
- 16,16,16,15,13,13,15,16,16,19,17,17,15,17,17,16,
- 17,14,13,14,15,18,19,19,14,17,18,18,19,19,18,17,
- 17,17,16,15,15,17,14,16,17,18,16,14,14,16,15,18,
- 17,15,14,18,16,16,17,16,14,16,12,15,15,17,16,15,
- 16,18,19,18,17,17,17,15,15,16,15,15,16,15,17,15,
- 17,18,18,16,16,15,15,15,14,14,14,14,15,14,19,19,
- 18,18,16,14,14,13,13,13,14,14,14,13,17,18,17,17,
- 16,14,12,11,10,11,13,13,13,13,17,17,17,15,13,12,
- 10, 9, 8,10,11,12,12,16,18,16,13,12,11,10, 9, 8,
- 7, 9,10,12,15,17,19,17,16,13,12,12,10, 9, 8,10,
- 11,14,16,17,16,16,16,16,14,14,13,11,11,11,12,15,
- 16,19,19,16,16,15,15,15,14,13,12,12,15,16,17,19,
- 17,16,15,15,15,15,15,14,12,14,15,17,19,19,17,16,
- 16,16,16,16,15,13,13,14,16,17,19,19,18,18,19,19,
- 16,16,15,15,14,14,16,17,17,18,19,16,15,15,16,15,
- 14,13,14,15,15,17,17,19,18,15,15,14,14,14,14,13,
- 14,14,15,16,16,16,17,18,15,13,13,14,14,14,13,14,
- 15,15,13,13,17,15,15,15,15,15,14,13,12,13,13,13,
- 12,13,15,16,16,16,16,15,13,11,11,11,12,11,12,14,
- 15,14,13,14,14,12,10, 9, 8, 9,10,10,12,16,14,12,
- 12,13,11,10, 8, 6, 5, 8, 9,11,13,17,16,15,13,12,
- 10, 9, 7, 4, 4, 7, 9,12,14,16,17,17,15,13,11,10,
- 9, 6, 6, 9,11,13,15,17,19,16,15,14,14,13,11,10,
- 9,11,12,14,16,18,17,15,14,14,14,13,13,12,11,12,
- 15,15,17,19,16,15,14,14,15,15,14,13,12,14,15,15,
- 19,19,16,15,16,15,15,15,14,13,12,14,16,18,18,18,
- 19,19,19,19,17,17,16,15,14,15,17,19,18,17,19,19,
- 18,18,17,18,16,13,14,15,17,16,16,15,18,19,19,17,
- 14,14,14,14,13,14,14,14,14,14,18,18,17,15,15,14,
- 14,13,12,12,13,12,12,13,18,16,14,14,14,14,13,12,
- 11,11,11,11,11,14,17,14,14,14,14,12,11,11,10,10,
- 10,10,12,16,15,15,14,14,13,11,10, 9, 7, 8, 9,10,
- 13,17,16,15,14,13,11,10, 8, 5, 4, 6, 8,11,15,17,
- 15,15,14,13,11, 9, 7, 4, 3, 6, 9,12,14,18,17,15,
- 15,13,12,10, 9, 6, 6, 8,10,12,16,17,16,15,14,14,
- 13,12,10, 9, 9,10,13,14,14,18,13,15,14,14,13,12,
- 11,12,11,13,13,12,15,19,16,15,13,14,13,14,14,13,
- 13,15,16,17,17,19,15,15,15,14,14,13,13,12,13,16,
- 16,17,19,17,19,19,19,19,17,18,18,18,17,17,18,17,
- 18,15,19,19,19,17,17,18,17,15,15,17,16,16,15,14,
- 19,19,18,17,17,16,16,14,14,14,14,14,12,13,19,17,
- 16,16,15,15,15,13,13,12,13,12,12,14,17,15,16,15,
- 15,13,13,12,11,11,11,11,12,16,18,16,15,14,14,13,
- 12,11,10,10,10,11,14,18,17,17,14,13,13,12,11,10,
- 8, 9, 9,11,15,19,18,17,14,13,12,11, 9, 7, 6, 7,
- 10,13,17,18,17,16,14,13,11,10, 9, 6, 6, 7,10,13,
- 16,19,18,17,15,14,12,11,10, 8, 7, 9,11,14,16,19,
- 14,15,16,14,14,12,11,10,10,10,12,13,15,18,15,15,
- 14,14,14,14,13,12,12,12,13,14,18,18,15,15,15,14,
- 15,15,14,13,14,15,14,18,19,19,15,15,14,14,14,12,
- 13,14,14,16,16,18,19,19,19,19,18,19,18,19,19,18,
- 18,19,19,19,17,15,19,19,17,19,18,19,18,17,16,18,
- 17,16,15,14,19,19,18,18,19,18,17,16,15,16,16,14,
- 13,15,19,18,19,18,18,18,16,13,14,14,14,13,14,17,
- 18,19,18,18,17,16,15,13,13,13,12,13,15,18,17,19,
- 18,18,15,14,14,12,12,12,12,13,18,19,18,19,17,15,
- 14,13,12,11,10,10,12,14,17,19,17,17,15,13,13,12,
- 11, 9, 8, 9,12,15,17,19,18,18,15,14,12,11,10, 8,
- 7, 8,11,14,17,19,18,16,15,14,13,12,11, 9, 8, 9,
- 10,13,17,19,15,16,16,15,14,13,12,10,10,10,11,13,
- 19,19,16,16,15,14,14,14,14,13,12,12,12,15,18,19,
- 15,15,14,15,16,16,14,14,13,13,15,17,19,19,17,15,
- 16,15,14,13,14,14,15,15,18,18,19,19,19,18,19,19,
- 19,19,19,18,17,19,19,19,19,17,19,18,19,19,19,19,
- 19,17,17,19,19,19,15,18,19,19,19,19,19,18,18,15,
- 17,17,18,18,15,19,18,19,19,19,19,19,18,14,15,16,
- 16,15,16,19,19,18,19,19,18,18,16,14,14,14,15,15,
- 16,19,19,18,19,17,17,16,15,13,12,13,15,16,17,19,
- 18,19,17,16,15,16,13,11,11,11,14,15,18,19,19,18,
- 16,16,15,13,12,10, 9, 9,13,14,17,19,19,16,15,15,
- 13,12,11, 9, 7, 8,11,13,17,19,17,16,16,15,14,13,
- 12, 9, 8, 8,10,13,18,19,16,16,16,15,15,14,13,11,
- 10, 9,11,14,18,19,16,15,15,15,16,15,14,13,11,11,
- 12,15,19,19,15,16,16,17,17,15,15,14,13,13,14,19,
- 19,19,19,17,17,16,14,14,14,14,15,15,18,19,19,19,
- 19,19,19,19,19,19,19,19,18,19,19,19,19,19,19,19,
- 19,19,19,19,19,19,19,19,19,19,18,19,19,19,19,19,
- 19,19,19,17,18,19,19,19,19,19,19,19,19,19,19,19,
- 19,15,17,18,18,19,19,19,19,19,19,19,19,18,18,15,
- 14,16,17,18,19,19,19,19,19,18,18,18,16,15,14,15,
- 17,16,18,19,18,18,19,18,18,15,15,13,12,13,14,16,
- 18,19,19,19,18,18,15,14,13,11,10,10,13,15,18,19,
- 18,18,17,16,15,14,13,10, 9, 9,11,14,18,19,18,18,
- 18,17,15,14,13,10, 9, 9,11,14,17,19,17,17,16,17,
- 16,16,14,11, 9,10,12,14,19,19,15,16,17,18,17,16,
- 14,12,11,12,14,16,19,19,16,17,17,17,17,16,16,14,
- 14,15,16,18,19,19,18,16,16,15,16,14,15,14,15,16,
- 17,19,19,19,18,19,19,19,19,19,19,19,18,19,19,19,
- 19,19,19,19,19,19,19,19,17,18,18,19,19,19,19,19,
- 19,19,19,19,19,18,18,19,19,18,19,18,18,19,19,19,
- 19,19,19,19,18,19,18,18,19,19,19,19,19,19,19,19,
- 19,19,18,19,18,18,16,19,17,19,19,19,19,19,19,18,
- 18,16,16,16,17,19,19,19,19,19,19,19,18,16,16,15,
- 15,14,16,17,18,18,19,19,19,18,16,15,15,13,13,13,
- 14,17,19,19,19,18,19,18,16,15,15,12,11,12,14,17,
- 17,19,19,18,17,17,16,16,14,12,11,12,13,16,18,19,
- 18,16,17,18,16,15,15,13,12,13,13,16,19,19,16,15,
- 17,19,17,17,16,15,14,13,14,18,19,19,18,17,18,19,
- 19,18,16,15,16,15,16,19,18,19,19,18,17,16,15,15,
- 16,18,17,18,19,19,19,19,
-};
-
-static long _vq_pigeonmap_lsp30_1[] = {
- 0, 0, 0, 0, 0, 0, 1, 1,
- 1, 1, 1, 1, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 4, 4, 4, 4, 4,
-};
-
-static long _vq_fitlist_lsp30_1[] = {
- 0, 14, 196, 1, 15, 197, 2, 16,
- 198, 3, 210, 211, 17, 199, 212, 28,
- 29, 30, 224, 43, 225, 31, 213, 226,
- 42, 44, 238, 57, 239, 45, 58, 227,
- 240, 394, 392, 393, 407, 395, 406, 408,
- 409, 422, 420, 56, 421, 434, 253, 435,
- 241, 254, 423, 436, 590, 588, 589, 603,
- 591, 604, 602, 617, 605, 618, 616, 252,
- 630, 449, 631, 437, 450, 619, 632, 785,
- 786, 784, 798, 799, 787, 800, 813, 801,
- 814, 812, 448, 3, 17, 199, 4, 5,
- 18, 200, 6, 19, 201, 31, 213, 32,
- 214, 20, 33, 202, 215, 45, 227, 228,
- 34, 47, 216, 229, 46, 59, 241, 60,
- 242, 48, 230, 243, 395, 396, 397, 409,
- 410, 398, 411, 424, 412, 423, 425, 61,
- 255, 437, 438, 244, 426, 439, 591, 592,
- 593, 605, 606, 594, 607, 608, 619, 620,
- 256, 621, 257, 633, 634, 440, 622, 635,
- 787, 788, 789, 801, 790, 802, 803, 816,
- 804, 815, 451, 452, 817, 453, 6, 20,
- 202, 7, 216, 21, 203, 217, 399, 8,
- 35, 204, 22, 218, 9, 36, 205, 400,
- 34, 230, 231, 49, 232, 23, 48, 413,
- 50, 219, 244, 245, 63, 246, 428, 37,
- 62, 427, 64, 233, 398, 414, 412, 401,
- 426, 415, 440, 441, 259, 260, 442, 51,
- 595, 610, 609, 624, 258, 429, 594, 596,
- 608, 597, 622, 623, 611, 636, 455, 637,
- 456, 638, 247, 790, 791, 806, 818, 820,
- 454, 625, 807, 805, 792, 804, 793, 819,
- 832, 651, 833, 652, 834, 443, 9, 23,
- 205, 219, 401, 10, 37, 24, 206, 220,
- 11, 38, 207, 402, 25, 221, 12, 39,
- 208, 403, 233, 415, 234, 416, 235, 26,
- 53, 51, 52, 417, 222, 247, 248, 66,
- 249, 40, 67, 404, 65, 429, 430, 431,
- 236, 418, 261, 443, 444, 262, 445, 54,
- 263, 597, 598, 599, 611, 612, 613, 600,
- 625, 626, 627, 432, 614, 639, 457, 640,
- 458, 641, 459, 793, 794, 795, 807, 808,
- 809, 796, 823, 821, 822, 250, 628, 810,
- 835, 653, 836, 654, 655, 837, 12, 26,
- 208, 222, 13, 40, 209, 404, 27, 236,
- 54, 418, 223, 41, 250, 68, 237, 55,
- 405, 432, 419, 264, 446, 600, 628, 433,
- 251, 614, 601, 615, 460, 642, 796, 810,
- 797, 824, 629, 447, 811, 656, 838, 992,
- 1006, 993, 1020, 825, 643, 1007, 852, 1034,
- 1188, 1202, 1216, 1021, 839, 1189, 1203, 1230,
- 1048, 1217, 1035, 1398, 1412, 1244, 29, 42,
- 56, 225, 238, 43, 30, 57, 226, 239,
- 44, 31, 45, 58, 227, 240, 70, 252,
- 71, 253, 59, 72, 241, 254, 84, 266,
- 85, 267, 73, 86, 255, 268, 280, 281,
- 87, 269, 282, 421, 434, 422, 435, 423,
- 436, 448, 449, 437, 450, 462, 463, 451,
- 464, 476, 477, 283, 465, 478, 617, 630,
- 618, 631, 619, 632, 644, 645, 633, 646,
- 658, 647, 659, 660, 672, 673, 479, 661,
- 674, 813, 826, 814, 827, 815, 828, 840,
- 829, 841, 842, 843, 854, 855, 856, 32,
- 45, 46, 59, 228, 241, 33, 47, 60,
- 229, 242, 34, 61, 230, 243, 48, 73,
- 255, 256, 62, 244, 257, 74, 75, 269,
- 270, 76, 258, 271, 87, 88, 89, 283,
- 284, 90, 272, 285, 424, 437, 425, 426,
- 438, 439, 440, 451, 452, 453, 454, 465,
- 466, 467, 479, 480, 286, 468, 481, 620,
- 621, 622, 633, 634, 635, 636, 647, 648,
- 649, 650, 663, 661, 662, 675, 676, 482,
- 664, 677, 816, 829, 817, 818, 831, 830,
- 844, 832, 843, 845, 857, 846, 859, 858,
- 48, 62, 244, 35, 49, 217, 231, 258,
- 413, 63, 245, 36, 218, 259, 50, 232,
- 64, 246, 23, 37, 219, 260, 442, 51,
- 233, 76, 77, 428, 78, 247, 272, 427,
- 454, 273, 455, 274, 65, 429, 90, 91,
- 92, 456, 261, 443, 286, 287, 469, 288,
- 470, 79, 468, 275, 440, 441, 414, 415,
- 457, 482, 105, 483, 484, 93, 106, 609,
- 637, 638, 624, 651, 625, 650, 652, 665,
- 639, 104, 664, 666, 471, 623, 636, 610,
- 611, 653, 678, 301, 679, 680, 289, 302,
- 833, 834, 820, 847, 821, 846, 848, 861,
- 835, 300, 860, 862, 667, 805, 819, 832,
- 806, 807, 849, 874, 875, 497, 876, 485,
- 498, 37, 51, 233, 65, 247, 24, 38,
- 220, 261, 443, 52, 234, 66, 248, 39,
- 221, 262, 53, 80, 235, 417, 67, 249,
- 40, 222, 263, 54, 81, 236, 418, 79,
- 444, 445, 250, 275, 93, 430, 276, 94,
- 431, 277, 68, 457, 458, 95, 264, 446,
- 289, 290, 291, 473, 82, 471, 472, 109,
- 278, 460, 429, 416, 432, 459, 107, 485,
- 486, 108, 487, 612, 613, 639, 640, 628,
- 626, 627, 655, 653, 654, 642, 669, 667,
- 304, 96, 474, 625, 641, 614, 668, 656,
- 303, 681, 682, 305, 683, 292, 808, 809,
- 837, 835, 836, 824, 822, 850, 851, 849,
- 838, 864, 865, 863, 500, 670, 821, 823,
- 810, 852, 499, 877, 878, 879, 488, 501,
- 40, 54, 236, 68, 250, 27, 41, 223,
- 264, 446, 55, 237, 82, 251, 433, 69,
- 278, 460, 96, 265, 447, 83, 292, 474,
- 279, 97, 432, 419, 461, 488, 110, 642,
- 629, 656, 643, 670, 475, 293, 628, 615,
- 657, 684, 306, 838, 825, 852, 839, 866,
- 671, 489, 824, 811, 853, 880, 502, 71,
- 84, 85, 267, 280, 98, 72, 86, 268,
- 281, 73, 269, 282, 87, 100, 476, 99,
- 294, 477, 283, 295, 465, 478, 74, 88,
- 101, 270, 296, 479, 490, 112, 491, 113,
- 297, 492, 114, 308, 309, 102, 310, 493,
- 115, 298, 504, 126, 505, 127, 311, 506,
- 322, 323, 128, 116, 324, 507, 463, 464,
- 284, 129, 312, 672, 673, 661, 674, 466,
- 675, 686, 687, 688, 689, 494, 700, 701,
- 702, 518, 519, 520, 703, 659, 660, 480,
- 325, 508, 855, 868, 869, 857, 870, 662,
- 871, 882, 883, 884, 885, 690, 896, 897,
- 898, 714, 715, 716, 899, 856, 676, 521,
- 704, 74, 87, 270, 283, 88, 101, 75,
- 271, 284, 89, 102, 76, 272, 285, 90,
- 100, 296, 466, 479, 297, 480, 103, 286,
- 298, 481, 104, 299, 482, 114, 493, 115,
- 494, 116, 300, 495, 310, 311, 312, 117,
- 313, 496, 118, 128, 507, 129, 508, 130,
- 314, 509, 131, 324, 325, 326, 327, 510,
- 467, 468, 132, 492, 675, 676, 677, 678,
- 689, 690, 691, 506, 692, 703, 704, 705,
- 520, 521, 522, 523, 706, 662, 663, 664,
- 328, 688, 871, 872, 873, 874, 885, 886,
- 887, 702, 888, 899, 900, 901, 716, 717,
- 718, 719, 902, 858, 859, 860, 524, 90,
- 286, 77, 91, 104, 259, 273, 287, 64,
- 78, 105, 260, 274, 456, 483, 92, 288,
- 65, 79, 106, 261, 275, 457, 484, 93,
- 103, 299, 482, 300, 301, 470, 302, 289,
- 471, 496, 497, 119, 120, 498, 107, 485,
- 117, 118, 315, 316, 303, 313, 314, 510,
- 511, 121, 499, 512, 133, 134, 317, 131,
- 132, 329, 330, 327, 328, 455, 469, 693,
- 513, 652, 679, 653, 680, 495, 678, 666,
- 667, 692, 694, 681, 509, 707, 695, 706,
- 708, 523, 524, 525, 526, 651, 665, 889,
- 890, 903, 709, 875, 848, 849, 876, 691,
- 874, 861, 862, 863, 888, 877, 705, 891,
- 902, 904, 719, 720, 721, 722, 847, 1085,
- 905, 79, 93, 275, 289, 66, 80, 107,
- 262, 276, 485, 94, 458, 290, 67, 81,
- 108, 263, 277, 459, 486, 95, 291, 68,
- 82, 109, 264, 278, 460, 487, 96, 303,
- 304, 305, 292, 474, 472, 121, 499, 500,
- 122, 501, 110, 123, 488, 317, 318, 319,
- 306, 124, 502, 515, 513, 135, 514, 136,
- 137, 320, 331, 332, 333, 471, 473, 696,
- 697, 709, 710, 516, 681, 654, 655, 682,
- 656, 683, 670, 695, 684, 698, 711, 527,
- 528, 529, 667, 668, 669, 892, 893, 905,
- 906, 712, 850, 877, 851, 878, 852, 879,
- 864, 866, 891, 880, 894, 907, 723, 724,
- 725, 863, 865, 1088, 1089, 1101, 1102, 908,
- 82, 96, 278, 292, 69, 83, 110, 265,
- 279, 461, 488, 97, 306, 293, 475, 111,
- 489, 124, 502, 320, 307, 503, 125, 516,
- 138, 321, 334, 517, 474, 699, 712, 139,
- 657, 684, 671, 685, 698, 530, 713, 670,
- 335, 853, 880, 881, 867, 894, 895, 908,
- 726, 909, 866, 531, 1049, 1076, 1077, 1063,
- 1090, 1091, 1104, 922, 1105, 1062, 727, 1245,
- 1272, 1273, 1286, 1287, 1300, 1118, 1301, 1258,
- 1259, 923, 1314, 1441, 1468, 1469, 1455, 1482,
- 1483, 1496, 1119, 1497, 113, 126, 309, 114,
- 127, 310, 322, 505, 115, 128, 311, 323,
- 506, 116, 129, 312, 324, 507, 518, 140,
- 519, 141, 325, 520, 336, 337, 142, 130,
- 338, 521, 143, 326, 532, 154, 533, 155,
- 339, 534, 350, 351, 156, 144, 352, 535,
- 157, 340, 546, 168, 547, 169, 353, 548,
- 170, 364, 365, 158, 366, 549, 171, 354,
- 701, 702, 508, 703, 714, 715, 716, 717,
- 522, 728, 729, 730, 731, 536, 742, 743,
- 744, 560, 561, 562, 745, 367, 550, 897,
- 898, 704, 899, 910, 911, 912, 913, 718,
- 924, 925, 926, 927, 732, 938, 939, 940,
- 756, 757, 758, 941, 563, 746, 116, 129,
- 312, 117, 130, 313, 325, 508, 118, 131,
- 314, 326, 509, 132, 327, 510, 142, 521,
- 143, 522, 144, 328, 523, 145, 338, 339,
- 340, 341, 524, 146, 156, 535, 157, 536,
- 158, 342, 537, 159, 352, 353, 354, 355,
- 538, 160, 170, 549, 171, 550, 172, 356,
- 551, 366, 367, 368, 173, 369, 552, 174,
- 704, 705, 706, 717, 718, 719, 534, 720,
- 731, 732, 733, 548, 734, 745, 746, 747,
- 562, 563, 564, 565, 748, 370, 900, 901,
- 902, 913, 914, 915, 730, 916, 927, 928,
- 929, 744, 930, 941, 942, 943, 758, 759,
- 760, 761, 944, 566, 132, 119, 315, 328,
- 133, 511, 120, 316, 329, 134, 512, 525,
- 121, 317, 330, 513, 524, 147, 526, 135,
- 148, 331, 145, 146, 343, 344, 341, 342,
- 527, 538, 539, 161, 540, 149, 162, 345,
- 159, 160, 357, 358, 355, 356, 552, 163,
- 541, 554, 174, 553, 175, 176, 359, 173,
- 371, 372, 369, 370, 722, 723, 735, 736,
- 749, 555, 707, 708, 709, 720, 721, 537,
- 734, 551, 737, 750, 748, 565, 566, 567,
- 568, 903, 918, 919, 931, 932, 945, 751,
- 904, 905, 916, 917, 733, 930, 747, 933,
- 944, 946, 761, 762, 763, 764, 1101, 1114,
- 1115, 1127, 1128, 1141, 947, 121, 135, 317,
- 513, 122, 318, 331, 514, 136, 123, 319,
- 332, 137, 515, 528, 124, 320, 333, 516,
- 527, 149, 150, 529, 138, 151, 334, 345,
- 346, 347, 541, 530, 163, 542, 164, 543,
- 152, 165, 348, 359, 360, 361, 544, 555,
- 177, 556, 178, 557, 166, 179, 362, 373,
- 374, 375, 710, 712, 723, 725, 726, 738,
- 739, 740, 751, 752, 753, 558, 709, 711,
- 724, 737, 569, 570, 571, 906, 919, 922,
- 935, 936, 948, 949, 754, 905, 907, 908,
- 920, 921, 933, 934, 947, 765, 766, 767,
- 1102, 1115, 1118, 1131, 1132, 1144, 1145, 950,
- 124, 138, 320, 516, 125, 321, 334, 517,
- 139, 530, 152, 335, 348, 531, 153, 544,
- 166, 349, 362, 545, 167, 558, 180, 363,
- 376, 559, 726, 727, 740, 181, 712, 713,
- 741, 754, 572, 755, 922, 923, 936, 937,
- 950, 377, 908, 909, 768, 951, 1105, 1118,
- 1119, 1132, 573, 1104, 1133, 1146, 964, 1147,
- 1301, 1314, 1315, 1328, 769, 1300, 1329, 1342,
- 1160, 1343, 965, 1497, 1510, 1511, 1524, 1356,
- 1496, 1525, 1538, 1161, 1539, 168, 351, 156,
- 169, 352, 364, 547, 157, 170, 353, 365,
- 548, 158, 171, 354, 366, 549, 560, 182,
- 561, 183, 367, 562, 378, 379, 184, 172,
- 380, 563, 185, 368, 574, 575, 381, 576,
- 743, 744, 550, 745, 756, 757, 758, 759,
- 564, 770, 771, 577, 772, 939, 940, 746,
- 941, 952, 953, 954, 955, 760, 966, 967,
- 773, 968, 171, 354, 159, 172, 355, 367,
- 550, 160, 173, 356, 368, 551, 174, 369,
- 552, 184, 563, 185, 564, 186, 370, 565,
- 187, 380, 381, 382, 383, 566, 188, 577,
- 578, 384, 579, 746, 747, 748, 759, 760,
- 761, 576, 762, 773, 774, 580, 775, 942,
- 943, 944, 955, 956, 957, 772, 958, 969,
- 970, 776, 971, 1138, 1139, 1140, 1151, 1152,
- 1153, 968, 1154, 1165, 1166, 972, 1167, 1334,
- 1335, 1336, 1347, 1348, 1349, 1164, 1350, 1361,
- 1362, 1168, 1363, 1360, 1530, 1531, 1532, 1543,
- 1544, 1545, 1546, 1364, 174, 161, 357, 370,
- 175, 553, 566, 162, 358, 371, 176, 554,
- 567, 163, 359, 372, 555, 189, 568, 177,
- 190, 373, 187, 188, 385, 386, 383, 384,
- 569, 749, 751, 764, 580, 581, 582, 191,
- 750, 763, 762, 579, 765, 945, 776, 777,
- 778, 387, 946, 947, 958, 959, 960, 775,
- 961, 1141, 972, 973, 974, 583, 1142, 1155,
- 1143, 1154, 1156, 971, 1157, 1168, 1169, 1170,
- 779, 1337, 1338, 1339, 1350, 1351, 1352, 1167,
- 975, 1353, 1364, 1365, 1366, 1363, 1171, 1533,
- 1534, 1547, 1535, 1546, 1548, 1549, 163, 177,
- 359, 555, 164, 360, 373, 556, 178, 165,
- 361, 374, 557, 179, 166, 362, 375, 180,
- 558, 571, 569, 191, 570, 192, 193, 376,
- 387, 388, 389, 584, 194, 572, 585, 752,
- 753, 765, 766, 583, 751, 754, 767, 779,
- 780, 768, 948, 949, 950, 961, 962, 963,
- 781, 390, 947, 975, 976, 964, 1144, 1145,
- 1157, 1158, 977, 586, 166, 180, 362, 558,
- 167, 363, 376, 181, 559, 572, 194, 377,
- 390, 573, 195, 586, 391, 754, 755, 768,
- 769, 782, 587, 950, 951, 964, 965, 978,
- 783, 1146, 1147, 1160, 1161, 1174, 979, 1342,
- 1343, 1356, 1357, 1370, 1175, 1538, 1539, 1552,
- 1553, 1371, 393, 406, 588, 602, 784, 589,
- 394, 407, 603, 785, 590, 395, 408, 604,
- 786, 591, 420, 798, 421, 799, 409, 422,
- 605, 618, 787, 800, 616, 617, 434, 812,
- 435, 631, 813, 423, 436, 619, 632, 801,
- 814, 630, 448, 826, 449, 645, 827, 437,
- 450, 633, 815, 828, 980, 981, 982, 994,
- 995, 983, 996, 1008, 1009, 997, 644, 1010,
- 646, 840, 1022, 1023, 829, 842, 1011, 1024,
- 1176, 1177, 1178, 1190, 1191, 1179, 1192, 1204,
- 1193, 1205, 841, 1206, 1218, 1219, 1025, 1038,
- 1207, 1220, 1036, 1037, 396, 409, 591, 592,
- 605, 787, 397, 410, 593, 606, 788, 398,
- 411, 607, 789, 594, 423, 619, 801, 424,
- 802, 412, 425, 608, 790, 803, 620, 621,
- 437, 815, 438, 816, 426, 439, 622, 804,
- 817, 633, 634, 635, 451, 829, 452, 830,
- 440, 453, 636, 818, 831, 983, 984, 985,
- 986, 997, 998, 999, 1012, 1000, 1013, 1011,
- 647, 648, 649, 1025, 844, 1026, 832, 845,
- 1014, 1027, 1179, 1180, 1181, 1182, 1193, 1194,
- 1195, 1208, 1196, 1209, 1207, 843, 1039, 1221,
- 1040, 1222, 1028, 1041, 1210, 1223, 412, 594,
- 608, 790, 230, 399, 426, 595, 804, 986,
- 413, 609, 791, 427, 805, 204, 400, 596,
- 623, 414, 610, 792, 232, 428, 806, 988,
- 205, 401, 597, 624, 622, 218, 219, 415,
- 793, 244, 440, 818, 1000, 245, 441, 819,
- 246, 442, 820, 1002, 611, 636, 637, 638,
- 233, 429, 807, 989, 454, 832, 259, 455,
- 833, 1015, 260, 456, 834, 1016, 625, 258,
- 650, 651, 652, 247, 443, 821, 987, 1001,
- 1014, 1003, 1028, 1029, 847, 1030, 639, 848,
- 1182, 1183, 1184, 1198, 1196, 1211, 1185, 846,
- 1212, 1017, 1197, 1210, 1199, 1224, 1043, 1225,
- 1226, 835, 1044, 1042, 1213, 1379, 1394, 1393,
- 1408, 1239, 1031, 1240, 401, 597, 415, 611,
- 793, 233, 429, 807, 989, 206, 402, 598,
- 625, 416, 612, 794, 430, 808, 207, 234,
- 403, 599, 626, 990, 417, 613, 795, 431,
- 809, 208, 404, 600, 627, 220, 235, 991,
- 418, 796, 247, 443, 821, 1003, 444, 822,
- 640, 445, 823, 222, 614, 639, 248, 1004,
- 249, 641, 236, 432, 810, 992, 457, 835,
- 653, 458, 836, 654, 263, 459, 837, 1019,
- 628, 261, 1017, 262, 1018, 655, 250, 446,
- 824, 1006, 1005, 1031, 849, 850, 1032, 851,
- 1033, 1186, 1185, 1199, 1200, 1201, 1188, 1215,
- 1213, 642, 1020, 1202, 1187, 1214, 1227, 1045,
- 1046, 1228, 1047, 1229, 838, 1216, 1381, 1382,
- 1383, 1395, 1396, 1397, 1409, 1241, 1242, 1410,
- 1034, 1243, 1398, 435, 448, 617, 630, 631,
- 644, 813, 826, 436, 449, 618, 632, 645,
- 814, 827, 437, 450, 619, 646, 815, 828,
- 633, 462, 658, 840, 463, 841, 451, 464,
- 647, 829, 842, 659, 660, 476, 854, 477,
- 855, 465, 478, 661, 843, 856, 672, 673,
- 674, 868, 869, 479, 675, 857, 870, 1009,
- 1022, 1010, 1011, 1023, 1024, 1025, 1036, 1037,
- 1038, 1039, 1050, 1051, 1052, 1064, 1065, 871,
- 1053, 1066, 1205, 1206, 1207, 1218, 1219, 1220,
- 1221, 1232, 1233, 1234, 1235, 1248, 1246, 1247,
- 1260, 1261, 1067, 1249, 1262, 438, 451, 620,
- 633, 647, 816, 829, 634, 439, 452, 621,
- 648, 817, 830, 635, 440, 453, 622, 649,
- 818, 831, 636, 465, 843, 466, 844, 454,
- 467, 650, 832, 845, 661, 662, 663, 479,
- 857, 480, 858, 468, 481, 664, 846, 859,
- 675, 676, 677, 871, 872, 482, 678, 860,
- 873, 1012, 1025, 1013, 1026, 1014, 1027, 1039,
- 1040, 1028, 1041, 1053, 1054, 1042, 1055, 1067,
- 1068, 874, 1056, 1069, 1208, 1221, 1209, 1222,
- 1210, 1223, 1235, 1236, 1224, 1237, 1249, 1250,
- 1238, 1251, 1263, 1264, 1070, 1252, 1265, 454,
- 636, 650, 832, 427, 441, 468, 623, 637,
- 805, 819, 846, 455, 651, 833, 273, 428,
- 469, 610, 624, 806, 847, 1029, 442, 638,
- 820, 456, 652, 834, 274, 429, 470, 611,
- 625, 807, 848, 1030, 443, 639, 821, 664,
- 665, 260, 1016, 666, 457, 835, 482, 860,
- 287, 483, 861, 1043, 484, 862, 653, 680,
- 1017, 678, 1042, 679, 288, 1044, 471, 849,
- 874, 875, 1057, 876, 667, 1031, 300, 496,
- 1056, 497, 302, 498, 1058, 485, 863, 1001,
- 1015, 1028, 1002, 1003, 1045, 1070, 1071, 693,
- 1072, 681, 694, 1225, 1226, 1212, 1213, 1238,
- 1239, 1240, 1253, 1227, 692, 1254, 1059, 1197,
- 1211, 1224, 1198, 1199, 1252, 1241, 1266, 1267,
- 889, 1268, 877, 890, 888, 1086, 1255, 1421,
- 1422, 1408, 1409, 1435, 1436, 1434, 1449, 1423,
- 1084, 1448, 1085, 1450, 1073, 443, 625, 639,
- 821, 457, 653, 835, 430, 471, 626, 808,
- 849, 248, 444, 640, 667, 822, 1004, 458,
- 654, 836, 431, 472, 627, 809, 850, 445,
- 641, 823, 459, 655, 837, 277, 432, 473,
- 614, 628, 810, 851, 1033, 446, 642, 824,
- 275, 1031, 276, 668, 1019, 669, 264, 460,
- 838, 1020, 485, 863, 262, 681, 1018, 290,
- 486, 864, 1046, 291, 487, 865, 1047, 656,
- 289, 1045, 682, 683, 278, 474, 852, 1034,
- 877, 878, 1060, 879, 1061, 670, 303, 499,
- 500, 696, 501, 488, 866, 1017, 1032, 1005,
- 1006, 1059, 1048, 695, 1073, 1074, 1075, 684,
- 697, 1200, 1201, 1229, 1202, 1227, 1228, 1215,
- 1216, 1242, 1243, 1256, 1230, 1255, 1257, 1062,
- 1213, 1214, 1241, 1244, 891, 1269, 1270, 892,
- 1271, 880, 893, 1258, 1396, 1425, 1423, 1424,
- 1412, 1410, 1439, 1437, 1426, 1452, 1453, 1087,
- 1451, 1088, 1089, 446, 628, 642, 824, 460,
- 656, 838, 278, 433, 474, 615, 629, 811,
- 852, 1034, 447, 643, 825, 670, 461, 839,
- 657, 488, 866, 684, 1021, 292, 1048, 475,
- 853, 671, 880, 1035, 306, 502, 1062, 489,
- 867, 685, 1020, 1007, 1049, 1076, 698, 1230,
- 1217, 1244, 1063, 881, 1216, 1203, 1231, 1258,
- 1245, 894, 1272, 1090, 1259, 1077, 1426, 1413,
- 1440, 1427, 1454, 477, 659, 672, 855, 868,
- 490, 673, 686, 478, 660, 856, 869, 491,
- 674, 687, 479, 661, 857, 870, 492, 675,
- 294, 1064, 295, 882, 1052, 1065, 296, 688,
- 871, 883, 1066, 297, 480, 493, 676, 689,
- 858, 884, 1067, 308, 504, 1078, 309, 505,
- 700, 1079, 310, 506, 701, 885, 1080, 896,
- 897, 702, 311, 494, 507, 690, 898, 1081,
- 703, 886, 322, 518, 1092, 323, 519, 714,
- 1093, 324, 520, 715, 899, 1094, 910, 911,
- 716, 325, 508, 521, 704, 912, 1095, 1051,
- 1053, 872, 717, 900, 1260, 1261, 1262, 1054,
- 1263, 1274, 1275, 1276, 1277, 1082, 1288, 1289,
- 1290, 1106, 1107, 1108, 1291, 1247, 1248, 1249,
- 1068, 913, 1096, 1250, 1278, 1302, 1303, 1304,
- 1443, 1456, 1457, 1445, 1458, 1264, 1459, 1470,
- 1471, 1472, 1473, 1484, 1485, 1486, 1109, 1292,
- 1487, 480, 662, 675, 858, 871, 493, 676,
- 689, 481, 663, 859, 872, 494, 677, 690,
- 482, 664, 860, 873, 495, 678, 297, 688,
- 884, 1067, 298, 885, 1068, 299, 691, 874,
- 886, 1069, 300, 496, 692, 887, 1070, 311,
- 506, 507, 702, 1081, 312, 508, 703, 1082,
- 313, 509, 704, 888, 1083, 898, 899, 900,
- 705, 314, 510, 901, 1084, 706, 325, 520,
- 521, 716, 1095, 326, 522, 717, 1096, 327,
- 523, 718, 902, 1097, 719, 912, 913, 914,
- 328, 524, 915, 1098, 1054, 1055, 1056, 720,
- 1080, 1263, 1264, 1265, 1266, 1277, 1278, 1279,
- 1094, 1280, 1291, 1292, 1293, 1108, 1109, 1110,
- 1111, 1294, 1250, 1251, 1252, 916, 1276, 1290,
- 1304, 1305, 1306, 1307, 1459, 1460, 1461, 1462,
- 1473, 1474, 1475, 1476, 1487, 1488, 1489, 1112,
- 1490, 678, 874, 469, 483, 496, 665, 679,
- 692, 847, 861, 875, 301, 470, 484, 497,
- 652, 666, 693, 848, 862, 1044, 1071, 288,
- 680, 876, 289, 302, 471, 485, 498, 653,
- 667, 694, 849, 863, 1045, 1072, 681, 300,
- 691, 887, 1070, 888, 889, 890, 877, 1058,
- 499, 314, 510, 1084, 315, 511, 1085, 707,
- 303, 316, 512, 708, 1086, 695, 1073, 509,
- 705, 706, 891, 901, 902, 903, 904, 525,
- 317, 513, 526, 1087, 328, 524, 1098, 329,
- 721, 1099, 330, 1100, 709, 722, 523, 719,
- 720, 905, 915, 916, 917, 918, 1043, 1057,
- 1059, 1281, 1101, 1239, 1267, 1240, 1241, 1268,
- 1083, 1266, 1254, 1255, 1280, 1282, 1269, 1097,
- 1283, 1294, 1295, 1296, 1111, 1112, 1113, 1114,
- 1253, 1297, 1279, 1477, 1293, 1307, 1308, 1309,
- 1310, 1436, 1463, 1437, 1464, 1462, 1450, 1476,
- 1451, 1478, 1465, 1491, 1479, 1490, 1492, 485,
- 667, 681, 863, 877, 290, 303, 472, 486,
- 499, 654, 668, 695, 850, 864, 1046, 1073,
- 682, 878, 291, 304, 473, 487, 500, 655,
- 669, 696, 851, 865, 1047, 1074, 683, 879,
- 305, 474, 488, 501, 656, 670, 697, 852,
- 866, 1075, 292, 684, 1048, 891, 1060, 892,
- 893, 880, 306, 502, 1062, 317, 513, 1087,
- 709, 318, 514, 1061, 1088, 710, 319, 515,
- 711, 1089, 698, 1076, 894, 905, 906, 907,
- 527, 332, 528, 1102, 320, 333, 516, 529,
- 712, 1090, 1103, 331, 1101, 723, 724, 725,
- 908, 919, 920, 921, 1059, 1284, 1285, 1297,
- 1298, 1104, 1242, 1269, 1243, 1270, 1271, 1244,
- 1256, 1283, 1257, 1272, 1286, 1299, 1115, 1116,
- 1117, 1255, 1258, 1300, 1480, 1493, 1311, 1312,
- 1313, 1465, 1439, 1466, 1467, 1440, 1452, 1454,
- 1479, 1481, 1468, 1494, 1482, 1495, 518, 701,
- 714, 897, 323, 519, 702, 715, 898, 910,
- 1093, 324, 520, 703, 716, 899, 911, 1094,
- 325, 521, 704, 717, 900, 912, 1095, 336,
- 532, 1106, 337, 533, 728, 1107, 338, 534,
- 729, 913, 1108, 730, 924, 925, 339, 522,
- 535, 718, 926, 1109, 731, 914, 350, 546,
- 1120, 351, 547, 742, 1121, 743, 352, 548,
- 927, 1122, 744, 938, 939, 353, 536, 549,
- 732, 940, 1123, 745, 928, 364, 560, 1134,
- 756, 365, 561, 1135, 366, 562, 757, 941,
- 1136, 952, 953, 758, 367, 550, 563, 746,
- 954, 1137, 759, 942, 1289, 1290, 1096, 1291,
- 1302, 1303, 1304, 1305, 1110, 1316, 1317, 1318,
- 1319, 1124, 1330, 1331, 1332, 1148, 1149, 1150,
- 1333, 955, 1138, 1292, 1306, 1320, 1344, 1345,
- 1346, 1485, 1486, 1487, 1498, 1499, 1500, 1501,
- 1512, 1513, 1514, 1515, 1526, 1527, 1528, 1151,
- 1334, 1529, 521, 704, 717, 900, 326, 522,
- 705, 718, 901, 913, 1096, 327, 523, 706,
- 719, 902, 914, 1097, 328, 524, 720, 915,
- 1098, 339, 534, 535, 730, 1109, 731, 340,
- 536, 1110, 732, 341, 537, 916, 1111, 926,
- 927, 928, 733, 342, 538, 929, 1112, 734,
- 353, 548, 549, 744, 1123, 354, 550, 745,
- 1124, 355, 551, 746, 930, 1125, 940, 941,
- 942, 747, 356, 552, 943, 1126, 748, 367,
- 562, 563, 758, 1137, 368, 564, 759, 1138,
- 369, 565, 760, 944, 1139, 954, 955, 956,
- 761, 370, 566, 957, 1140, 762, 1292, 1293,
- 1294, 1305, 1306, 1307, 1122, 1308, 1319, 1320,
- 1321, 1136, 1322, 1333, 1334, 1335, 1150, 1151,
- 1152, 1153, 1336, 958, 1318, 1332, 1346, 1347,
- 1348, 1349, 1488, 1489, 1490, 1501, 1502, 1503,
- 1504, 1515, 1516, 1517, 1518, 1529, 1530, 1531,
- 1154, 1532, 524, 720, 525, 707, 903, 916,
- 329, 721, 1099, 708, 904, 917, 330, 526,
- 539, 1100, 722, 709, 905, 918, 331, 527,
- 540, 1101, 342, 538, 1112, 343, 1113, 735,
- 344, 1114, 723, 736, 537, 733, 734, 919,
- 929, 930, 931, 932, 553, 345, 358, 541,
- 554, 737, 1115, 1128, 356, 552, 1126, 357,
- 1127, 749, 750, 551, 747, 748, 933, 943,
- 944, 945, 946, 371, 567, 1141, 359, 372,
- 555, 568, 751, 1129, 1142, 370, 566, 1140,
- 763, 764, 565, 761, 762, 947, 957, 958,
- 959, 960, 1297, 1310, 1311, 1323, 1324, 1337,
- 1143, 1295, 1296, 1308, 1309, 1125, 1322, 1139,
- 1325, 1336, 1338, 1153, 1154, 1155, 1156, 1339,
- 1506, 1321, 1519, 1335, 1349, 1350, 1351, 1352,
- 1491, 1492, 1493, 1504, 1505, 1507, 1520, 1518,
- 1533, 1521, 1534, 1532, 331, 527, 723, 905,
- 1101, 710, 906, 919, 332, 345, 528, 541,
- 724, 1102, 1115, 711, 907, 920, 333, 346,
- 529, 542, 725, 1103, 1116, 712, 908, 921,
- 334, 530, 543, 1104, 737, 738, 347, 1117,
- 726, 739, 922, 933, 934, 935, 359, 555,
- 1129, 556, 348, 544, 557, 1118, 751, 360,
- 1130, 752, 361, 1131, 740, 753, 936, 947,
- 948, 949, 569, 570, 362, 558, 571, 1132,
- 1145, 373, 1143, 765, 374, 1144, 766, 375,
- 754, 767, 950, 961, 962, 963, 1298, 1311,
- 1314, 1327, 1328, 1340, 1341, 1146, 1297, 1299,
- 1300, 1312, 1313, 1325, 1326, 1339, 1157, 1158,
- 1159, 1342, 1510, 1523, 1524, 1536, 1537, 1353,
- 1354, 1355, 1493, 1494, 1507, 1495, 1508, 1496,
- 1509, 1521, 1522, 1535, 560, 756, 939, 365,
- 561, 744, 757, 940, 952, 1135, 366, 562,
- 745, 758, 941, 953, 1136, 367, 563, 746,
- 759, 942, 954, 1137, 378, 574, 1148, 379,
- 575, 770, 1149, 380, 576, 771, 955, 1150,
- 966, 967, 772, 381, 564, 577, 760, 968,
- 1151, 773, 956, 1162, 1163, 969, 1164, 1331,
- 1332, 1138, 1333, 1344, 1345, 1346, 1347, 1152,
- 1358, 1359, 1165, 1360, 1334, 1348, 1527, 1528,
- 1529, 1540, 1541, 1542, 1543, 1361, 373, 569,
- 765, 947, 1143, 752, 948, 961, 374, 570,
- 583, 1144, 766, 753, 949, 962, 375, 571,
- 584, 1145, 1158, 767, 754, 950, 963, 376,
- 572, 585, 768, 1146, 387, 1157, 779, 388,
- 780, 389, 781, 1159, 964, 975, 976, 977,
- 1171, 390, 586, 1160, 1340, 1341, 1353, 1354,
- 1172, 1173, 782, 1339, 1342, 1355, 1367, 1356,
- 1368, 1369, 978, 1536, 1537, 1549, 1550, 1174,
- 1535, 1538, 1551, 1563, 1564, 1552, 981, 994,
- 1176, 1177, 1190, 982, 995, 1178, 1191, 983,
- 996, 1192, 1179, 1374, 1372, 1008, 1204, 1373,
- 1009, 997, 1010, 1193, 1205, 1387, 1206, 1375,
- 1388, 1386, 1022, 1023, 1011, 1024, 1207, 1218,
- 1400, 1219, 1401, 1220, 1389, 1036, 1037, 1402,
- 1025, 1038, 1221, 1234, 984, 1180, 1194, 1376,
- 1232, 1414, 1233, 1415, 1208, 1390, 1403, 1416,
- 1428, 1429, 1417, 1568, 1569, 1570, 1582, 1583,
- 1571, 1584, 1596, 1597, 1585, 1598, 1610, 1611,
- 1404, 1430, 1599, 1612, 1572, 1586, 1624, 1625,
- 1613, 1626, 1764, 1765, 1766, 1778, 1779, 1767,
- 1780, 1792, 1793, 1781, 1794, 1806, 1807, 1600,
- 1795, 1808, 1768, 1782, 984, 997, 1179, 1193,
- 1180, 1375, 985, 998, 1194, 1181, 1376, 986,
- 999, 1182, 1195, 1011, 1207, 1012, 1208, 1377,
- 1000, 1013, 1196, 1209, 1389, 1378, 1025, 1221,
- 1390, 1026, 1391, 1014, 1027, 1210, 1223, 1222,
- 1392, 1403, 1039, 1235, 1404, 1040, 1236, 1405,
- 1028, 1041, 1224, 1237, 1010, 1192, 1206, 1388,
- 1220, 1402, 1234, 1416, 1417, 1418, 1406, 1419,
- 1430, 1431, 1432, 1420, 1571, 1572, 1573, 1585,
- 1586, 1574, 1587, 1599, 1600, 1588, 1601, 1613,
- 1614, 1433, 1602, 1615, 1584, 1598, 1612, 1626,
- 1627, 1628, 1616, 1629, 1767, 1768, 1769, 1781,
- 1782, 1770, 1783, 1795, 1796, 1784, 1797, 1809,
- 1810, 1798, 1811, 1780, 1794, 1808, 1000, 1182,
- 1196, 987, 1014, 1183, 1378, 1001, 1197, 819,
- 1015, 1379, 792, 988, 1184, 1211, 1393, 1002,
- 1198, 1016, 1380, 793, 820, 989, 1185, 1212,
- 1394, 805, 1210, 1392, 1003, 1028, 1029, 1225,
- 1030, 1199, 1226, 1381, 832, 1224, 1406, 1407,
- 834, 1408, 1017, 1042, 1043, 1239, 1044, 821,
- 1213, 1240, 1395, 1238, 1420, 847, 1421, 848,
- 1422, 1031, 1195, 1209, 1391, 1223, 1405, 1237,
- 1419, 1227, 1409, 1433, 1435, 1253, 1436, 1254,
- 1574, 1575, 1576, 1588, 1590, 1577, 1603, 1604,
- 1434, 1589, 1602, 1617, 1591, 1618, 1616, 1423,
- 1587, 1601, 1615, 1449, 1631, 1450, 1605, 1632,
- 1629, 1771, 1772, 1770, 1784, 1785, 1786, 1799,
- 1773, 1630, 1800, 1798, 1813, 1787, 1814, 1812,
- 1619, 1783, 1797, 1811, 1645, 1827, 1646, 1801,
- 1828, 989, 1185, 1003, 1199, 1017, 1381, 794,
- 821, 990, 1186, 1213, 1395, 1004, 1200, 1018,
- 1382, 795, 991, 1187, 1214, 1396, 1005, 1201,
- 823, 1019, 1383, 796, 992, 1188, 1215, 1397,
- 809, 810, 1006, 1031, 836, 1032, 837, 1033,
- 1202, 1229, 1384, 1227, 1409, 1228, 1410, 1411,
- 1020, 1045, 850, 1046, 1242, 1047, 824, 1216,
- 1243, 1398, 1241, 1423, 1424, 851, 1425, 1034,
- 1230, 1412, 1059, 1255, 1437, 1256, 1438, 1439,
- 1257, 1577, 1578, 1579, 1591, 1592, 1580, 1607,
- 1605, 1594, 1593, 1606, 1619, 1620, 1621, 1451,
- 1633, 1452, 1634, 1426, 1453, 1608, 1635, 1773,
- 1774, 1775, 1788, 1787, 1789, 1802, 1776, 1803,
- 1801, 1815, 1816, 1790, 1817, 1622, 1647, 1829,
- 1648, 1830, 1649, 1804, 1831, 992, 1188, 1006,
- 1202, 1020, 1384, 797, 824, 993, 1189, 1216,
- 1398, 1007, 1203, 1034, 811, 1230, 1385, 838,
- 1412, 1021, 1217, 1048, 1244, 1399, 852, 1426,
- 1035, 1231, 1413, 1062, 1258, 1440, 1580, 1594,
- 1608, 1427, 1581, 1595, 1622, 1609, 1454, 1636,
- 1776, 1790, 1777, 1804, 1623, 1791, 1818, 1805,
- 1650, 1832, 1023, 1036, 1205, 1218, 1232, 1219,
- 1401, 1414, 1024, 1037, 1206, 1233, 1220, 1402,
- 1415, 1025, 1038, 1207, 1221, 1234, 1403, 1050,
- 1051, 1416, 1039, 1052, 1235, 1248, 1246, 1428,
- 1247, 1417, 1064, 1260, 1429, 1065, 1261, 1430,
- 1053, 1066, 1249, 1262, 1431, 1442, 1443, 1444,
- 1067, 1263, 1387, 1400, 1388, 1389, 1208, 1222,
- 1404, 1236, 1418, 1456, 1457, 1078, 1079, 1080,
- 1250, 1432, 1445, 1458, 1390, 1274, 1275, 1459,
- 1583, 1596, 1597, 1610, 1584, 1598, 1611, 1585,
- 1599, 1612, 1624, 1625, 1613, 1626, 1638, 1639,
- 1627, 1640, 1652, 1471, 1653, 1446, 1641, 1654,
- 1586, 1600, 1614, 1470, 1472, 1628, 1655, 1779,
- 1792, 1793, 1806, 1780, 1794, 1807, 1781, 1795,
- 1808, 1820, 1821, 1809, 1822, 1834, 1835, 1823,
- 1836, 1848, 1849, 1642, 1837, 1850, 1782, 1796,
- 1810, 1666, 1667, 1668, 1824, 1026, 1039, 1208,
- 1221, 1222, 1235, 1404, 1027, 1040, 1209, 1223,
- 1236, 1405, 1028, 1041, 1210, 1224, 1237, 1406,
- 1417, 1053, 1249, 1418, 1054, 1250, 1419, 1042,
- 1055, 1238, 1251, 1420, 1431, 1067, 1263, 1432,
- 1068, 1264, 1433, 1056, 1069, 1252, 1265, 1434,
- 1447, 1445, 1446, 1070, 1266, 1234, 1248, 1390,
- 1403, 1430, 1391, 1392, 1262, 1444, 1458, 1459,
- 1460, 1081, 1277, 1082, 1083, 1279, 1448, 1461,
- 1276, 1278, 1462, 1586, 1599, 1600, 1613, 1587,
- 1601, 1614, 1588, 1602, 1615, 1627, 1628, 1616,
- 1629, 1641, 1642, 1630, 1643, 1655, 1656, 1644,
- 1657, 1626, 1640, 1654, 1472, 1473, 1474, 1475,
- 1658, 1782, 1795, 1796, 1809, 1783, 1797, 1810,
- 1784, 1798, 1811, 1823, 1824, 1812, 1825, 1837,
- 1838, 1826, 1839, 1669, 1851, 1852, 1671, 1840,
- 1853, 1822, 1836, 1850, 1668, 1670, 1042, 1224,
- 1238, 1015, 1029, 1056, 1211, 1225, 1393, 1407,
- 1420, 1043, 1239, 1016, 1057, 1212, 1421, 834,
- 1030, 1226, 1253, 1394, 1408, 1044, 1240, 1017,
- 1058, 1213, 1422, 1031, 1227, 1395, 1409, 1252,
- 1434, 861, 1435, 1254, 1436, 1045, 847, 874,
- 1070, 1071, 848, 1267, 1072, 1241, 1423, 1266,
- 1448, 875, 1449, 1268, 1450, 863, 1059, 1255,
- 1437, 1084, 1462, 1085, 1463, 1086, 1464, 877,
- 1073, 1282, 1237, 1251, 1406, 1433, 1265, 1447,
- 1461, 1280, 1281, 890, 1269, 1451, 1279, 1617,
- 1618, 1604, 1631, 1605, 1630, 1632, 1645, 1619,
- 1644, 1646, 1602, 1616, 1589, 1603, 1590, 1591,
- 1659, 1633, 1660, 1658, 1476, 1477, 1478, 1629,
- 1643, 1657, 1475, 1465, 1647, 1673, 1786, 1813,
- 1814, 1800, 1827, 1842, 1841, 1674, 1798, 1812,
- 1785, 1799, 1787, 1801, 1828, 1826, 1815, 1840,
- 1855, 1829, 1856, 1672, 1854, 1661, 1825, 1839,
- 1853, 1671, 1843, 1031, 1213, 1227, 1409, 1045,
- 1241, 863, 1018, 1059, 1200, 1214, 1396, 1423,
- 1032, 1228, 1410, 1046, 1242, 864, 1019, 1060,
- 1201, 1215, 1397, 1424, 837, 1033, 1229, 1256,
- 1411, 1047, 1243, 1020, 1061, 1216, 1425, 838,
- 1034, 1230, 1257, 1398, 1412, 1255, 1437, 850,
- 1438, 865, 1439, 1048, 877, 1073, 1269, 1074,
- 1270, 1075, 852, 1244, 1271, 1426, 1451, 878,
- 1452, 879, 1453, 1062, 1258, 1440, 891, 1087,
- 1465, 892, 1088, 1466, 1089, 1467, 880, 1076,
- 1285, 1283, 1284, 893, 1454, 1272, 1592, 1621,
- 1619, 1607, 1608, 1634, 1635, 1622, 1648, 1649,
- 1605, 1606, 1633, 1620, 1593, 1594, 1647, 1479,
- 1661, 1662, 1636, 1663, 1480, 1481, 1468, 1650,
- 1677, 1815, 1789, 1790, 1802, 1816, 1817, 1829,
- 1803, 1804, 1830, 1831, 1818, 1843, 1844, 1845,
- 1801, 1788, 1857, 1858, 1832, 1859, 1675, 1676,
- 1664, 1846, 1034, 1216, 1230, 1412, 1048, 1244,
- 1021, 1062, 1217, 1426, 1035, 1231, 1399, 1413,
- 1258, 1440, 853, 1049, 1245, 880, 1076, 1427,
- 1272, 1454, 867, 1063, 1259, 1441, 1090, 1468,
- 881, 1077, 1286, 1273, 894, 1455, 1622, 1609,
- 1636, 1623, 1650, 1469, 1608, 1595, 1637, 1664,
- 1482, 1651, 1818, 1846, 1678, 1665, 1804, 1791,
- 1805, 1832, 1819, 1833, 1860, 1847, 1065, 1247,
- 1260, 1261, 1078, 1443, 1066, 1248, 1262, 1079,
- 1444, 1067, 1249, 1263, 1080, 1445, 882, 1274,
- 1456, 883, 1275, 1457, 884, 1276, 1458, 1470,
- 1471, 885, 1068, 1081, 1264, 1277, 1459, 1472,
- 896, 1092, 897, 1093, 1288, 898, 1094, 1289,
- 1290, 1473, 899, 1082, 1095, 1278, 1484, 1485,
- 1291, 1486, 910, 1106, 911, 1107, 1302, 1303,
- 912, 1108, 1304, 1487, 913, 1096, 1109, 1292,
- 1429, 1442, 1430, 1431, 1250, 1446, 1460, 1474,
- 1498, 1499, 1305, 1500, 1432, 1488, 1639, 1652,
- 1640, 1653, 1641, 1654, 1655, 1666, 1667, 1668,
- 1669, 1680, 1681, 1682, 1683, 1625, 1638, 1626,
- 1627, 1656, 1501, 1628, 1642, 1670, 1694, 1695,
- 1696, 1684, 1848, 1849, 1850, 1851, 1862, 1863,
- 1864, 1865, 1876, 1877, 1878, 1879, 1821, 1834,
- 1835, 1822, 1836, 1823, 1837, 1697, 1824, 1838,
- 1852, 1866, 1890, 1891, 1892, 1068, 1250, 1263,
- 1264, 1081, 1277, 1446, 1069, 1251, 1082, 1265,
- 1278, 1447, 1460, 1070, 1252, 1083, 1266, 1279,
- 1448, 1461, 885, 1276, 1459, 886, 887, 1473,
- 1474, 888, 1084, 1280, 1462, 1475, 899, 1094,
- 1095, 1290, 1291, 900, 1096, 1292, 901, 1097,
- 1293, 1476, 902, 1098, 1487, 1488, 1294, 1489,
- 913, 1108, 1109, 1304, 1305, 914, 1110, 915,
- 1111, 1306, 1307, 1490, 916, 1112, 1432, 1445,
- 1433, 1434, 1472, 1486, 1500, 1501, 1502, 1308,
- 1503, 1642, 1655, 1643, 1656, 1657, 1658, 1669,
- 1670, 1671, 1672, 1683, 1684, 1685, 1686, 1628,
- 1641, 1629, 1630, 1644, 1504, 1668, 1682, 1696,
- 1697, 1698, 1699, 1851, 1839, 1852, 1853, 1854,
- 1865, 1866, 1867, 1868, 1879, 1880, 1881, 1882,
- 1824, 1837, 1838, 1825, 1826, 1840, 1700, 1864,
- 1878, 1892, 1893, 1894, 1895, 1266, 875, 888,
- 1057, 1071, 1084, 1253, 1267, 1280, 1435, 1449,
- 1462, 876, 889, 1058, 1072, 1085, 1240, 1254,
- 1281, 1436, 1463, 1268, 1450, 877, 890, 1059,
- 1073, 1086, 1241, 1255, 1282, 1437, 1464, 1269,
- 1451, 1279, 1476, 1477, 1478, 891, 1087, 1465,
- 902, 1098, 1293, 1294, 903, 1099, 1295, 904,
- 1100, 1296, 1283, 1097, 1490, 1479, 1491, 917,
- 1113, 1309, 1492, 905, 918, 1101, 1114, 1297,
- 916, 1112, 1307, 1308, 1310, 1111, 1504, 1493,
- 1448, 1475, 1489, 1503, 1505, 1506, 1659, 1660,
- 1673, 1661, 1632, 1645, 1633, 1646, 1631, 1644,
- 1658, 1672, 1647, 1674, 1686, 1687, 1675, 1688,
- 1700, 1701, 1689, 1702, 1671, 1685, 1699, 1856,
- 1869, 1870, 1868, 1871, 1883, 1884, 1882, 1827,
- 1828, 1841, 1855, 1829, 1842, 1840, 1854, 1843,
- 1857, 1896, 1897, 1885, 1898, 1867, 1881, 1895,
- 1073, 1255, 1269, 1451, 891, 1060, 1074, 1087,
- 1242, 1256, 1283, 1438, 1465, 878, 1270, 1452,
- 892, 1061, 1075, 1088, 1243, 1257, 1284, 1439,
- 1466, 1271, 1453, 880, 893, 1062, 1076, 1089,
- 1244, 1258, 1285, 1440, 1467, 1272, 1454, 1479,
- 1480, 1481, 1090, 1468, 905, 1101, 1297, 906,
- 1102, 1298, 894, 907, 1103, 1299, 1286, 1482,
- 1493, 919, 1115, 1494, 920, 1116, 1495, 908,
- 921, 1104, 1117, 1300, 1313, 1311, 1312, 1496,
- 1507, 1508, 1509, 1661, 1663, 1676, 1677, 1689,
- 1690, 1634, 1647, 1635, 1648, 1662, 1636, 1649,
- 1650, 1675, 1664, 1678, 1691, 1703, 1704, 1692,
- 1705, 1857, 1858, 1871, 1872, 1873, 1885, 1874,
- 1886, 1887, 1830, 1843, 1831, 1844, 1832, 1845,
- 1859, 1846, 1860, 1899, 1900, 1888, 1901, 1076,
- 1258, 1272, 1454, 881, 894, 1063, 1077, 1090,
- 1245, 1259, 1286, 1441, 1468, 1273, 1455, 1482,
- 895, 1091, 1469, 1287, 908, 1104, 1300, 1483,
- 909, 1105, 1301, 1496, 922, 1118, 1314, 1497,
- 923, 1119, 1315, 1510, 1664, 1665, 1637, 1650,
- 1651, 1678, 1679, 1692, 1511, 1693, 1706, 1860,
- 1874, 1861, 1875, 1888, 1833, 1846, 1847, 1707,
- 1889, 1902, 1106, 1289, 1302, 911, 1107, 1290,
- 1303, 1485, 1498, 912, 1108, 1291, 1304, 1486,
- 1499, 913, 1109, 1292, 1305, 1487, 1500, 924,
- 1120, 1316, 925, 1121, 1317, 926, 1122, 1318,
- 1501, 927, 1110, 1123, 1306, 1512, 1513, 1319,
- 1514, 938, 1134, 939, 1135, 1330, 940, 1136,
- 1331, 1332, 1515, 941, 1124, 1137, 1320, 1526,
- 1527, 1333, 1528, 952, 1148, 953, 1149, 1344,
- 954, 1150, 1345, 1346, 1529, 955, 1138, 1151,
- 1334, 1488, 1502, 1516, 1540, 1541, 1347, 1542,
- 1530, 1681, 1682, 1683, 1694, 1695, 1696, 1697,
- 1708, 1709, 1710, 1711, 1722, 1723, 1724, 1725,
- 1543, 1684, 1698, 1712, 1736, 1737, 1738, 1726,
- 1877, 1878, 1879, 1890, 1891, 1892, 1893, 1904,
- 1905, 1906, 1907, 1918, 1919, 1920, 1921, 1739,
- 1880, 1894, 1908, 1932, 1933, 1934, 1109, 1305,
- 914, 1110, 1293, 1306, 1488, 1501, 1489, 915,
- 1111, 1294, 1307, 1502, 1490, 916, 1112, 1308,
- 1503, 927, 1122, 1123, 1318, 928, 1124, 1319,
- 929, 1125, 1320, 1321, 1504, 930, 1126, 1515,
- 1516, 1322, 1517, 941, 1136, 1137, 1332, 1333,
- 942, 1138, 943, 1139, 1334, 1335, 1518, 944,
- 1140, 1529, 1530, 1336, 1531, 955, 1150, 1151,
- 1346, 1347, 956, 1152, 1348, 957, 1153, 1349,
- 1532, 958, 1154, 1514, 1528, 1542, 1543, 1544,
- 1350, 1545, 1500, 1684, 1685, 1686, 1697, 1698,
- 1699, 1700, 1711, 1712, 1713, 1714, 1725, 1726,
- 1727, 1728, 1546, 1696, 1710, 1724, 1738, 1739,
- 1740, 1741, 1880, 1881, 1882, 1893, 1894, 1895,
- 1896, 1907, 1908, 1909, 1910, 1921, 1922, 1923,
- 1924, 1742, 1892, 1906, 1920, 1934, 1935, 1936,
- 1937, 1112, 1308, 1113, 1295, 1491, 1504, 917,
- 1309, 1296, 1505, 918, 931, 1100, 1114, 1127,
- 1310, 1492, 1297, 1506, 919, 932, 1101, 1115,
- 1128, 1311, 1493, 930, 1126, 1323, 1324, 1125,
- 1321, 1322, 1518, 1507, 1519, 945, 1141, 1520,
- 933, 946, 1129, 1142, 1325, 944, 1140, 1337,
- 1338, 1139, 1335, 1336, 1532, 1521, 1533, 959,
- 1155, 1534, 947, 960, 1143, 1156, 1339, 1352,
- 958, 1154, 1349, 1350, 1351, 1153, 1546, 1535,
- 1517, 1531, 1545, 1547, 1548, 1503, 1689, 1700,
- 1702, 1703, 1715, 1716, 1729, 1687, 1688, 1701,
- 1714, 1728, 1717, 1730, 1742, 1743, 1731, 1744,
- 1699, 1713, 1727, 1741, 1883, 1884, 1885, 1898,
- 1897, 1896, 1911, 1899, 1912, 1910, 1913, 1925,
- 1926, 1924, 1938, 1939, 1927, 1940, 1895, 1909,
- 1923, 1937, 919, 1115, 1311, 1493, 1298, 1507,
- 920, 933, 1102, 1116, 1129, 1312, 1494, 1299,
- 1508, 921, 934, 1103, 1117, 1130, 1313, 1326,
- 1495, 1300, 1509, 922, 935, 1104, 1118, 1131,
- 1314, 1496, 1325, 1327, 1510, 1521, 947, 1143,
- 1339, 1522, 948, 1144, 1523, 936, 949, 1132,
- 1145, 1328, 1341, 1340, 1524, 1535, 961, 1157,
- 1536, 962, 1158, 1354, 1537, 950, 963, 1146,
- 1159, 1342, 1353, 1355, 1538, 1549, 1550, 1551,
- 1690, 1703, 1706, 1719, 1720, 1732, 1733, 1689,
- 1691, 1704, 1692, 1705, 1717, 1718, 1731, 1745,
- 1746, 1734, 1747, 1885, 1886, 1887, 1888, 1899,
- 1900, 1901, 1902, 1915, 1913, 1914, 1928, 1916,
- 1927, 1929, 1941, 1942, 1930, 1943, 922, 1118,
- 1314, 1496, 1301, 1510, 923, 936, 1105, 1119,
- 1132, 1315, 1328, 1497, 1511, 937, 1133, 1329,
- 1524, 950, 1146, 1342, 1525, 951, 1147, 1343,
- 1538, 964, 1160, 1356, 1539, 965, 1161, 1357,
- 1552, 1693, 1706, 1707, 1720, 1692, 1721, 1734,
- 1553, 1735, 1748, 1888, 1889, 1902, 1903, 1916,
- 1917, 1930, 1749, 1931, 1944, 1148, 1331, 1344,
- 1527, 953, 1149, 1332, 1345, 1540, 954, 1150,
- 1333, 1346, 1528, 1541, 955, 1151, 1334, 1347,
- 1529, 1542, 966, 1162, 967, 1163, 1358, 1359,
- 968, 1164, 1360, 1543, 969, 1152, 1165, 1348,
- 1554, 1555, 1361, 1556, 1530, 1544, 1557, 1723,
- 1724, 1725, 1736, 1737, 1738, 1739, 1750, 1751,
- 1752, 1726, 1740, 1753, 1919, 1920, 1921, 1932,
- 1933, 1934, 1935, 1946, 1947, 1948, 1922, 1936,
- 1151, 1347, 956, 1152, 1335, 1348, 1530, 1543,
- 957, 1153, 1336, 1349, 1531, 1544, 1532, 958,
- 1154, 1350, 1545, 969, 1164, 1165, 1360, 970,
- 1166, 1361, 971, 1167, 1362, 1363, 1546, 972,
- 1168, 1557, 1558, 1364, 1559, 1556, 1542, 1560,
- 1726, 1727, 1728, 1739, 1740, 1741, 1742, 1753,
- 1754, 1755, 1738, 1752, 1756, 1922, 1923, 1924,
- 1935, 1936, 1937, 1938, 1949, 1950, 1951, 1934,
- 1948, 1154, 1350, 1155, 1337, 1533, 1546, 959,
- 1351, 1338, 1547, 960, 973, 1142, 1156, 1169,
- 1352, 1365, 1534, 1339, 1548, 961, 974, 1143,
- 1157, 1170, 1353, 1535, 972, 1168, 1363, 1364,
- 1366, 1167, 1560, 1549, 1561, 1562, 975, 1171,
- 1367, 1559, 1545, 1729, 1742, 1730, 1743, 1731,
- 1744, 1757, 1563, 1745, 1758, 1756, 1741, 1755,
- 1925, 1926, 1927, 1939, 1940, 1938, 1953, 1759,
- 1941, 1954, 1952, 1937, 1951, 961, 1157, 1353,
- 1535, 1340, 1549, 962, 975, 1144, 1158, 1171,
- 1354, 1367, 1536, 1341, 1550, 963, 976, 1145,
- 1159, 1172, 1355, 1537, 1342, 1551, 964, 977,
- 1146, 1160, 1173, 1356, 1369, 1538, 1368, 1552,
- 1563, 1564, 1565, 978, 1174, 1370, 1732, 1733,
- 1745, 1746, 1731, 1734, 1747, 1759, 1760, 1566,
- 1748, 1761, 1927, 1928, 1929, 1941, 1930, 1942,
- 1943, 1955, 1956, 1762, 1944, 1957, 964, 1160,
- 1356, 1538, 1343, 1552, 965, 978, 1147, 1161,
- 1174, 1357, 1539, 1370, 1553, 979, 1175, 1371,
- 1566, 1567, 1734, 1735, 1748, 1749, 1762, 1930,
- 1931, 1944, 1763, 1945, 1958, 1582, 1764, 1569,
- 1583, 1596, 1765, 1778, 1570, 1584, 1597, 1766,
- 1779, 1571, 1585, 1598, 1767, 1780, 1792, 1793,
- 1610, 1611, 1599, 1612, 1768, 1781, 1794, 1806,
- 1807, 1624, 1625, 1613, 1626, 1782, 1795, 1808,
- 1820, 1821, 1809, 1822, 1960, 1961, 1962, 1974,
- 1975, 1963, 1976, 1988, 1989, 1977, 1990, 2002,
- 2003, 1796, 1991, 2004, 1964, 1978, 2016, 2017,
- 2005, 2018, 2156, 2157, 2158, 2170, 2171, 2159,
- 2172, 2184, 2185, 2173, 2186, 2198, 2199, 1992,
- 2187, 2200, 2160, 2174, 2212, 2213, 2201, 2352,
- 2353, 2354, 2366, 2367, 2355, 2368, 2380, 2381,
- 2369, 2382, 2394, 2395, 2188, 2214, 2383, 2396,
- 2356, 2370, 1572, 1585, 1767, 1586, 1599, 1768,
- 1781, 1573, 1587, 1600, 1769, 1782, 1574, 1588,
- 1601, 1770, 1783, 1780, 1794, 1795, 1796, 1613,
- 1614, 1602, 1615, 1784, 1797, 1808, 1809, 1810,
- 1627, 1628, 1616, 1629, 1798, 1811, 1822, 1823,
- 1824, 1812, 1825, 1963, 1964, 1965, 1977, 1978,
- 1966, 1979, 1991, 1992, 1980, 1993, 2005, 2006,
- 1994, 2007, 1976, 1990, 2004, 2018, 2019, 2020,
- 2008, 2159, 2160, 2161, 2173, 2174, 2162, 2175,
- 2187, 2188, 2176, 2189, 2201, 2202, 2021, 2190,
- 2203, 2172, 2186, 2200, 2214, 2215, 2216, 2204,
- 2355, 2356, 2357, 2369, 2370, 2358, 2371, 2383,
- 2384, 2372, 2385, 2397, 2398, 2217, 2386, 2399,
- 2368, 2382, 2396, 1588, 1770, 1575, 1602, 1771,
- 1784, 1589, 1576, 1603, 1785, 1590, 1772, 1799,
- 1577, 1604, 1786, 1591, 1773, 1800, 1783, 1797,
- 1617, 1618, 1616, 1798, 1811, 1813, 1631, 1605,
- 1632, 1787, 1814, 1630, 1812, 1825, 1645, 1827,
- 1619, 1646, 1801, 1828, 1967, 1968, 1966, 1980,
- 1981, 1982, 1826, 1995, 1969, 1996, 1994, 2009,
- 1983, 2010, 2008, 1979, 1993, 2007, 1841, 2023,
- 1815, 1842, 1997, 2024, 2021, 2163, 2164, 2178,
- 2177, 2192, 2022, 2162, 2176, 2191, 2165, 2190,
- 2205, 2179, 2206, 2204, 2011, 2175, 2189, 2203,
- 2037, 2219, 2038, 2193, 2220, 2217, 2358, 2359,
- 2360, 2372, 2374, 2387, 2388, 2218, 2373, 2361,
- 2386, 2401, 2375, 2402, 2400, 2207, 2371, 2385,
- 2399, 2233, 2415, 2234, 2389, 2416, 1577, 1591,
- 1773, 1578, 1605, 1787, 1592, 1774, 1801, 1579,
- 1606, 1788, 1593, 1775, 1802, 1580, 1607, 1789,
- 1594, 1776, 1803, 1619, 1620, 1621, 1790, 1633,
- 1815, 1816, 1634, 1817, 1608, 1635, 1829, 1647,
- 1830, 1648, 1622, 1649, 1804, 1831, 1969, 1970,
- 1971, 1983, 1984, 1985, 1997, 1998, 1972, 1999,
- 2011, 2012, 1986, 2013, 1818, 1843, 2025, 1844,
- 2026, 1845, 2000, 2027, 2165, 2166, 2167, 2179,
- 2180, 2181, 2193, 2194, 2182, 2168, 2195, 2207,
- 2208, 2209, 2039, 2221, 2040, 2222, 2014, 2041,
- 2196, 2223, 2361, 2362, 2363, 2375, 2376, 2364,
- 2391, 2389, 2378, 2377, 2390, 2403, 2404, 2405,
- 2235, 2417, 2236, 2418, 2210, 2237, 2392, 2419,
- 1580, 1594, 1776, 1581, 1608, 1790, 1595, 1777,
- 1804, 1622, 1609, 1791, 1636, 1818, 1623, 1805,
- 1650, 1832, 1972, 1986, 1819, 1973, 2000, 1987,
- 2014, 2001, 1846, 2028, 2168, 2182, 2196, 2015,
- 2169, 2183, 2210, 2197, 2042, 2224, 2364, 2378,
- 2365, 2392, 2211, 2379, 2406, 2393, 2238, 2420,
- 1637, 1664, 1651, 1833, 1860, 1665, 1847, 1678,
- 1874, 2029, 1861, 2056, 2043, 2057, 2225, 2252,
- 2070, 2239, 2407, 2434, 2253, 2421, 2448, 2266,
- 2435, 1611, 1624, 1793, 1806, 1625, 1638, 1780,
- 1794, 1807, 1820, 1612, 1626, 1639, 1781, 1795,
- 1808, 1821, 1613, 1627, 1640, 1782, 1796, 1809,
- 1822, 1834, 1835, 1652, 1653, 1641, 1654, 1810,
- 1823, 1836, 1848, 1849, 1655, 1824, 1837, 1850,
- 1667, 1851, 1975, 1988, 1989, 2002, 1976, 1990,
- 2003, 1977, 1991, 2004, 2016, 2017, 2005, 2018,
- 2030, 2031, 2019, 2032, 2044, 2045, 1838, 2033,
- 2046, 1978, 1992, 2006, 1862, 1863, 1864, 2020,
- 2047, 2171, 2184, 2185, 2198, 2172, 2186, 2199,
- 2173, 2187, 2200, 2212, 2213, 2201, 2214, 2226,
- 2227, 2215, 2228, 2240, 2059, 2241, 2034, 2060,
- 2229, 2242, 2174, 2188, 2202, 2058, 2216, 2243,
- 2367, 2380, 2381, 2394, 2368, 2382, 2395, 2369,
- 2383, 2396, 2408, 2409, 2397, 2410, 2422, 2423,
- 2411, 2424, 2436, 2255, 2437, 2230, 2425, 2438,
- 2370, 2384, 2398, 2254, 2256, 2412, 1627, 1796,
- 1809, 1614, 1628, 1641, 1783, 1797, 1810, 1823,
- 1615, 1629, 1642, 1784, 1798, 1811, 1824, 1616,
- 1630, 1643, 1812, 1825, 1822, 1836, 1837, 1838,
- 1655, 1656, 1644, 1657, 1826, 1839, 1850, 1851,
- 1852, 1658, 1840, 1853, 1668, 1854, 1978, 1991,
- 1992, 2005, 1979, 1993, 2006, 1980, 1994, 2007,
- 2019, 2020, 2008, 2021, 2033, 2034, 2022, 2035,
- 1865, 2047, 2048, 1867, 2036, 2049, 2018, 2032,
- 2046, 1864, 1866, 2050, 2174, 2187, 2188, 2201,
- 2175, 2189, 2202, 2176, 2190, 2203, 2215, 2216,
- 2204, 2217, 2229, 2230, 2218, 2231, 2061, 2243,
- 2244, 2232, 2245, 2214, 2228, 2242, 2060, 2062,
- 2063, 2246, 2370, 2383, 2384, 2397, 2371, 2385,
- 2398, 2372, 2386, 2399, 2411, 2412, 2400, 2413,
- 2425, 2426, 2414, 2427, 2439, 2440, 2428, 2441,
- 2410, 2424, 2438, 2256, 2257, 2258, 2259, 1630,
- 1812, 1617, 1644, 1799, 1826, 1631, 1813, 1604,
- 1618, 1645, 1786, 1800, 1827, 1632, 1814, 1605,
- 1619, 1646, 1787, 1801, 1828, 1825, 1839, 1659,
- 1841, 1633, 1660, 1815, 1842, 1658, 1840, 1853,
- 1855, 1856, 1647, 1829, 1854, 1672, 1673, 1674,
- 1661, 1843, 1981, 1982, 2010, 2009, 1997, 1995,
- 2022, 2024, 2011, 2036, 2037, 2038, 1869, 1994,
- 2008, 1996, 2023, 1983, 2051, 2025, 2052, 2050,
- 1868, 1870, 1857, 2021, 2035, 2049, 1867, 2039,
- 2177, 2205, 2206, 2192, 2219, 2193, 2218, 2220,
- 2233, 2207, 2232, 2234, 2190, 2204, 2191, 2178,
- 2179, 2247, 2221, 2248, 2246, 2064, 2065, 2066,
- 2053, 2217, 2231, 2245, 2063, 2235, 2401, 2402,
- 2388, 2415, 2389, 2414, 2416, 2429, 2403, 2430,
- 2386, 2400, 2373, 2387, 2374, 2375, 2428, 2443,
- 2417, 2444, 2442, 2260, 2261, 2262, 2413, 2427,
- 2441, 2259, 2249, 2431, 1619, 1633, 1801, 1815,
- 1606, 1620, 1647, 1788, 1802, 1829, 1816, 1634,
- 1607, 1621, 1648, 1789, 1803, 1830, 1635, 1817,
- 1608, 1622, 1649, 1790, 1804, 1831, 1843, 1661,
- 1844, 1662, 1636, 1663, 1818, 1845, 1857, 1858,
- 1650, 1832, 1859, 1675, 1676, 1677, 1664, 1846,
- 2011, 1985, 1986, 1998, 2012, 2013, 2025, 1999,
- 2026, 2014, 2041, 2039, 2040, 1873, 2028, 1997,
- 1984, 2000, 2027, 2053, 2054, 2055, 1871, 1872,
- 1860, 2042, 2067, 2180, 2181, 2209, 2207, 2208,
- 2196, 2194, 2223, 2221, 2210, 2236, 2237, 2235,
- 2068, 2193, 2195, 2222, 2182, 2249, 2250, 2224,
- 2251, 2069, 2056, 2238, 2376, 2405, 2403, 2391,
- 2392, 2418, 2419, 2406, 2432, 2433, 2264, 2389,
- 2390, 2417, 2404, 2377, 2378, 2431, 2263, 2445,
- 2446, 2420, 2447, 2265, 2252, 2434, 1835, 1848,
- 1653, 1666, 1822, 1836, 1849, 1654, 1667, 1823,
- 1837, 1850, 1863, 1655, 1668, 1824, 1838, 1851,
- 1862, 1864, 1669, 1852, 1865, 1680, 1681, 1682,
- 1876, 1877, 1878, 1683, 1866, 1879, 1694, 1695,
- 1696, 1890, 1891, 1892, 1697, 1880, 2044, 2045,
- 2046, 2047, 2058, 2059, 2060, 2061, 2072, 2073,
- 2074, 2075, 2017, 2030, 2031, 2018, 2032, 2019,
- 2033, 1893, 2020, 2034, 2048, 2062, 2086, 2087,
- 2088, 2076, 2240, 2241, 2229, 2242, 2243, 2254,
- 2255, 2256, 2257, 2268, 2269, 2270, 2271, 2213,
- 2226, 2227, 2214, 2228, 2215, 2089, 2216, 2230,
- 2244, 2258, 2282, 2283, 2284, 2272, 2423, 2436,
- 2424, 2437, 2425, 2438, 2439, 2450, 2451, 2452,
- 2453, 2464, 2465, 2466, 2467, 2409, 2422, 2410,
- 2411, 2440, 2285, 2412, 2426, 2454, 2478, 2479,
- 2480, 1838, 1851, 1656, 1669, 1825, 1839, 1852,
- 1657, 1670, 1826, 1840, 1853, 1658, 1671, 1854,
- 1864, 1865, 1866, 1867, 1672, 1868, 1683, 1684,
- 1685, 1878, 1879, 1880, 1881, 1686, 1882, 1697,
- 1698, 1699, 1892, 1893, 1894, 1895, 1700, 2034,
- 2047, 2035, 2048, 2036, 2049, 2050, 2061, 2062,
- 2063, 2064, 2075, 2076, 2077, 2078, 2020, 2033,
- 2021, 2022, 1896, 2060, 2074, 2088, 2089, 2090,
- 2091, 2230, 2243, 2244, 2245, 2246, 2257, 2258,
- 2259, 2260, 2271, 2272, 2273, 2274, 2216, 2229,
- 2217, 2231, 2218, 2232, 2092, 2256, 2270, 2284,
- 2285, 2286, 2287, 2426, 2439, 2427, 2440, 2441,
- 2442, 2453, 2454, 2455, 2456, 2467, 2468, 2469,
- 2470, 2412, 2425, 2413, 2414, 2428, 2288, 2452,
- 2466, 2480, 2481, 2482, 2483, 1854, 1659, 1672,
- 1841, 1855, 1868, 1646, 1660, 1673, 1828, 1842,
- 1869, 1856, 1647, 1661, 1674, 1829, 1843, 1870,
- 1857, 1867, 2051, 2052, 1675, 1686, 1687, 1688,
- 1871, 1884, 1881, 1882, 2064, 1883, 2065, 2066,
- 1700, 1701, 1689, 1702, 1897, 1885, 1898, 2067,
- 2080, 1895, 1896, 2079, 2078, 2024, 2037, 2025,
- 2038, 2050, 2039, 2053, 2036, 2023, 2092, 2093,
- 2081, 2094, 2063, 2077, 2091, 2248, 2261, 2262,
- 2260, 2263, 2275, 2276, 2274, 2220, 2233, 2247,
- 2221, 2234, 2219, 2232, 2246, 2235, 2249, 2288,
- 2289, 2277, 2290, 2259, 2273, 2287, 2443, 2444,
- 2456, 2457, 2458, 2445, 2459, 2471, 2472, 2470,
- 2416, 2429, 2417, 2430, 2415, 2428, 2442, 2431,
- 2484, 2485, 2473, 2486, 2455, 2469, 2483, 1661,
- 1843, 1857, 1648, 1662, 1675, 1830, 1844, 1871,
- 1858, 1649, 1663, 1676, 1831, 1845, 1872, 1859,
- 1650, 1664, 1677, 1832, 1846, 1873, 1860, 2053,
- 2054, 2055, 1678, 1689, 1885, 1690, 1691, 1874,
- 2067, 1886, 2068, 1887, 2069, 2056, 1703, 1704,
- 1692, 1705, 1899, 2081, 1900, 1888, 1901, 2070,
- 2082, 2083, 2026, 2039, 2027, 2040, 2028, 2041,
- 2042, 2095, 2096, 2084, 2097, 2250, 2251, 2263,
- 2264, 2265, 2277, 2266, 2278, 2279, 2222, 2235,
- 2249, 2223, 2236, 2224, 2237, 2238, 2252, 2291,
- 2292, 2280, 2293, 2445, 2446, 2447, 2459, 2460,
- 2461, 2473, 2474, 2462, 2475, 2418, 2431, 2419,
- 2432, 2420, 2433, 2434, 2448, 2487, 2488, 2476,
- 2489, 1664, 1846, 1860, 1651, 1665, 1678, 1833,
- 1847, 1874, 1861, 2056, 1679, 1875, 1692, 1888,
- 2070, 1693, 1706, 1889, 2071, 1902, 2084, 1707,
- 2029, 2042, 2043, 2057, 1903, 2085, 2098, 2252,
- 2266, 2267, 2280, 2225, 2238, 2239, 2253, 2099,
- 2281, 2294, 2448, 2462, 2449, 2463, 2476, 2421,
- 2434, 2435, 2295, 2477, 2490, 1694, 1695, 1877,
- 1890, 1878, 1891, 1696, 1879, 1892, 1697, 1880,
- 1893, 1708, 1709, 1710, 1904, 1905, 1906, 1711,
- 1894, 1907, 1722, 1723, 1724, 1918, 1919, 1920,
- 1725, 1908, 1921, 1736, 1737, 1738, 1932, 1933,
- 1934, 1739, 1922, 2073, 2074, 2075, 2086, 2087,
- 2088, 2089, 2100, 2101, 2102, 2103, 2114, 2115,
- 2116, 2117, 1935, 2076, 2090, 2104, 2128, 2129,
- 2130, 2118, 2269, 2270, 2271, 2282, 2283, 2284,
- 2285, 2296, 2297, 2298, 2299, 2310, 2311, 2312,
- 2313, 2131, 2272, 2286, 2300, 2324, 2325, 2326,
- 2314, 2465, 2466, 2467, 2478, 2479, 2480, 2481,
- 2492, 2493, 2494, 2495, 2506, 2507, 2508, 2509,
- 2327, 2468, 2482, 2496, 2520, 2521, 2522, 1697,
- 1698, 1880, 1892, 1893, 1881, 1894, 1699, 1882,
- 1895, 1700, 1896, 1711, 1712, 1713, 1906, 1907,
- 1908, 1909, 1714, 1910, 1725, 1726, 1727, 1920,
- 1921, 1922, 1923, 1728, 1924, 1739, 1740, 1741,
- 1934, 1935, 1936, 1937, 1742, 2076, 2077, 2078,
- 2089, 2090, 2091, 2092, 2103, 2104, 2105, 2106,
- 2117, 2118, 2119, 2120, 1938, 2088, 2102, 2116,
- 2130, 2131, 2132, 2133, 2272, 2273, 2274, 2285,
- 2286, 2287, 2288, 2299, 2300, 2301, 2302, 2313,
- 2314, 2315, 2316, 2134, 2284, 2298, 2312, 2326,
- 2327, 2328, 2329, 2468, 2469, 2470, 2481, 2482,
- 2483, 2484, 2495, 2496, 2497, 2498, 2509, 2510,
- 2511, 2512, 2330, 2480, 2494, 2508, 2522, 2523,
- 2524, 2525, 1700, 1883, 1895, 1896, 1701, 1714,
- 1897, 2079, 1884, 1702, 1715, 1898, 2080, 1885,
- 1703, 1716, 1911, 2093, 1899, 1912, 2081, 2094,
- 1909, 1910, 2092, 1728, 1729, 1717, 1730, 1925,
- 2107, 1913, 1926, 2095, 1923, 1924, 2108, 2106,
- 1742, 1743, 1731, 1744, 1939, 1927, 1940, 2109,
- 1937, 1938, 2120, 2121, 2122, 2134, 2135, 2123,
- 2136, 2091, 2105, 2119, 2133, 2275, 2276, 2277,
- 2290, 2289, 2288, 2303, 2291, 2304, 2302, 2305,
- 2316, 2317, 2318, 2330, 2331, 2319, 2332, 2287,
- 2301, 2315, 2329, 2471, 2472, 2473, 2486, 2484,
- 2485, 2499, 2487, 2500, 2498, 2513, 2501, 2512,
- 2514, 2526, 2527, 2515, 2528, 2483, 2497, 2511,
- 2525, 1703, 1885, 1899, 2081, 1886, 1704, 1717,
- 1900, 2082, 1887, 1705, 1718, 1901, 2083, 1888,
- 1706, 1719, 1913, 1914, 1902, 1915, 2084, 2097,
- 2095, 2096, 1731, 1732, 1720, 1733, 1927, 1928,
- 2110, 1916, 1929, 2098, 2111, 2109, 1745, 1746,
- 1734, 1747, 1941, 2123, 1942, 2124, 1930, 1943,
- 2112, 2125, 2137, 2138, 2126, 2139, 2277, 2278,
- 2279, 2280, 2291, 2292, 2293, 2294, 2307, 2305,
- 2306, 2320, 2308, 2319, 2321, 2333, 2334, 2322,
- 2335, 2473, 2474, 2475, 2487, 2476, 2488, 2489,
- 2490, 2503, 2501, 2502, 2516, 2504, 2517, 2515,
- 2529, 2530, 2518, 2531, 1706, 1888, 1902, 2084,
- 1889, 1707, 1720, 1903, 2085, 1916, 2098, 1721,
- 1734, 1917, 2099, 1930, 2112, 1735, 1748, 1931,
- 2113, 1944, 2126, 1749, 1945, 2127, 2140, 2280,
- 2281, 2294, 2295, 2308, 2309, 2322, 2141, 2323,
- 2336, 2476, 2477, 2490, 2491, 2504, 2505, 2518,
- 2337, 2519, 2532, 1736, 1737, 1919, 1932, 1920,
- 1933, 1738, 1921, 1934, 1739, 1922, 1935, 1750,
- 1751, 1752, 1946, 1947, 1948, 1753, 1936, 1949,
- 2115, 2116, 2117, 2128, 2129, 2130, 2131, 2142,
- 2143, 2144, 2118, 2132, 2145, 2311, 2312, 2313,
- 2324, 2325, 2326, 2327, 2338, 2339, 2340, 2314,
- 2328, 2341, 2507, 2508, 2509, 2520, 2521, 2522,
- 2523, 2534, 2535, 2536, 2510, 2524, 1739, 1740,
- 1922, 1934, 1935, 1923, 1936, 1741, 1924, 1937,
- 1742, 1938, 1753, 1754, 1755, 1948, 1949, 1950,
- 1951, 1756, 1952, 2118, 2119, 2120, 2131, 2132,
- 2133, 2134, 2145, 2146, 2147, 2130, 2144, 2148,
- 2314, 2315, 2316, 2327, 2328, 2329, 2330, 2341,
- 2342, 2343, 2326, 2340, 2344, 2510, 2511, 2512,
- 2523, 2524, 2525, 2526, 2537, 2538, 2539, 2522,
- 2536, 1742, 1925, 1937, 1938, 1743, 1756, 1939,
- 2121, 1926, 1744, 1757, 1940, 2122, 1927, 1745,
- 1758, 1953, 1941, 1954, 2123, 2136, 1951, 1952,
- 2134, 2135, 1759, 2149, 1955, 2137, 2150, 2148,
- 2133, 2147, 2317, 2318, 2319, 2331, 2332, 2330,
- 2345, 2151, 2333, 2346, 2344, 2329, 2343, 2513,
- 2514, 2515, 2527, 2528, 2526, 2541, 2347, 2529,
- 2542, 2540, 2525, 2539, 1745, 1927, 1941, 2123,
- 1928, 1746, 1759, 1942, 2124, 1929, 1747, 1760,
- 1943, 2125, 1930, 1748, 1761, 1955, 2137, 1956,
- 1944, 1957, 2126, 2138, 2139, 1762, 2151, 2152,
- 1958, 2140, 2153, 2319, 2320, 2321, 2333, 2322,
- 2334, 2335, 2347, 2348, 2154, 2336, 2349, 2515,
- 2516, 2517, 2529, 2530, 2518, 2531, 2543, 2544,
- 2350, 2532, 2545, 1748, 1930, 1944, 2126, 1931,
- 1749, 1762, 1945, 2127, 1958, 2140, 1763, 1959,
- 2141, 2154, 2322, 2323, 2336, 2155, 2337, 2350,
- 2518, 2519, 2532, 2351, 2533, 2546, 2157, 2170,
- 2352, 2171, 2184, 2353, 2366, 2158, 2172, 2185,
- 2354, 2367, 2159, 2173, 2186, 2355, 2368, 2380,
- 2381, 2198, 2199, 2187, 2200, 2356, 2369, 2382,
- 2394, 2395, 2212, 2213, 2201, 2214, 2370, 2383,
- 2396, 2408, 2409, 2397, 2410, 2548, 2549, 2550,
- 2562, 2563, 2551, 2564, 2576, 2577, 2565, 2578,
- 2590, 2591, 2384, 2579, 2592, 2552, 2566, 2604,
- 2605, 2173, 2355, 2160, 2174, 2187, 2356, 2369,
- 2161, 2175, 2188, 2357, 2370, 2162, 2176, 2189,
- 2358, 2371, 2368, 2382, 2383, 2384, 2201, 2202,
- 2190, 2203, 2372, 2385, 2396, 2397, 2398, 2215,
- 2216, 2204, 2217, 2386, 2399, 2410, 2411, 2412,
- 2400, 2413, 2551, 2552, 2553, 2565, 2566, 2554,
- 2567, 2579, 2580, 2568, 2581, 2593, 2594, 2582,
- 2595, 2564, 2578, 2592, 2606, 2607, 2608, 2176,
- 2358, 2163, 2190, 2359, 2372, 2177, 2164, 2191,
- 2373, 2178, 2360, 2387, 2165, 2192, 2374, 2179,
- 2361, 2388, 2371, 2385, 2205, 2206, 2204, 2386,
- 2399, 2401, 2219, 2193, 2220, 2375, 2402, 2218,
- 2400, 2413, 2233, 2415, 2207, 2234, 2389, 2416,
- 2555, 2556, 2554, 2568, 2569, 2570, 2557, 2414,
- 2583, 2584, 2582, 2597, 2571, 2598, 2596, 2403,
- 2567, 2581, 2595, 2429, 2611, 2430, 2585, 2612,
- 2609, 2165, 2179, 2361, 2166, 2193, 2375, 2180,
- 2362, 2389, 2167, 2194, 2376, 2181, 2363, 2390,
- 2168, 2195, 2377, 2182, 2364, 2391, 2207, 2208,
- 2209, 2378, 2221, 2403, 2404, 2222, 2405, 2196,
- 2223, 2392, 2235, 2417, 2418, 2236, 2419, 2210,
- 2237, 2557, 2558, 2559, 2572, 2571, 2573, 2560,
- 2586, 2587, 2585, 2599, 2600, 2574, 2601, 2406,
- 2431, 2613, 2432, 2614, 2433, 2588, 2615, 2249,
- 2250, 2224, 2251, 2445, 2446, 2238, 2420, 2447,
- 2263, 2264, 2265, 2252, 2434, 2461, 2602, 2627,
- 2628, 2629, 2641, 2642, 2616, 2643, 2459, 2460,
- 2448, 2630, 2168, 2182, 2364, 2169, 2196, 2378,
- 2183, 2365, 2392, 2210, 2197, 2379, 2224, 2406,
- 2211, 2393, 2238, 2420, 2560, 2574, 2561, 2588,
- 2407, 2575, 2602, 2589, 2434, 2616, 2225, 2252,
- 2239, 2421, 2448, 2253, 2435, 2266, 2630, 2462,
- 2449, 2603, 2617, 2644, 2631, 2212, 2381, 2394,
- 2199, 2213, 2226, 2368, 2382, 2395, 2408, 2200,
- 2214, 2227, 2369, 2383, 2396, 2409, 2201, 2215,
- 2228, 2370, 2384, 2397, 2410, 2422, 2423, 2240,
- 2241, 2229, 2242, 2398, 2411, 2424, 2436, 2437,
- 2243, 2412, 2425, 2438, 2255, 2439, 2563, 2576,
- 2577, 2590, 2564, 2578, 2591, 2565, 2579, 2592,
- 2604, 2605, 2593, 2606, 2618, 2619, 2607, 2620,
- 2632, 2633, 2426, 2621, 2634, 2566, 2580, 2594,
- 2450, 2451, 2452, 2608, 2202, 2215, 2384, 2397,
- 2216, 2229, 2371, 2385, 2398, 2411, 2203, 2217,
- 2230, 2372, 2386, 2399, 2412, 2204, 2218, 2231,
- 2400, 2413, 2410, 2424, 2425, 2426, 2243, 2244,
- 2232, 2245, 2414, 2427, 2438, 2439, 2440, 2246,
- 2428, 2441, 2256, 2257, 2442, 2566, 2579, 2580,
- 2593, 2567, 2581, 2594, 2568, 2582, 2595, 2607,
- 2608, 2596, 2609, 2621, 2622, 2610, 2623, 2453,
- 2635, 2636, 2455, 2624, 2637, 2606, 2620, 2634,
- 2452, 2454, 2218, 2400, 2205, 2232, 2387, 2401,
- 2414, 2219, 2192, 2206, 2233, 2374, 2388, 2415,
- 2220, 2402, 2193, 2207, 2234, 2375, 2389, 2416,
- 2413, 2427, 2247, 2429, 2221, 2248, 2403, 2430,
- 2246, 2428, 2441, 2443, 2235, 2417, 2444, 2442,
- 2259, 2260, 2261, 2457, 2262, 2249, 2431, 2570,
- 2597, 2598, 2583, 2610, 2584, 2611, 2626, 2625,
- 2458, 2582, 2596, 2569, 2571, 2585, 2612, 2599,
- 2624, 2639, 2613, 2640, 2456, 2638, 2445, 2609,
- 2623, 2637, 2455, 2627, 2241, 2423, 2436, 2254,
- 2410, 2424, 2437, 2242, 2255, 2411, 2425, 2438,
- 2451, 2243, 2256, 2412, 2426, 2439, 2450, 2452,
- 2257, 2440, 2453, 2268, 2269, 2270, 2464, 2465,
- 2466, 2271, 2454, 2467, 2282, 2283, 2284, 2478,
- 2479, 2480, 2285, 2468, 2632, 2633, 2634, 2635,
- 2646, 2647, 2648, 2649, 2660, 2661, 2662, 2663,
- 2605, 2618, 2619, 2606, 2620, 2607, 2621, 2481,
- 2608, 2622, 2636, 2650, 2674, 2675, 2676, 2664,
- 2244, 2426, 2439, 2257, 2413, 2427, 2440, 2453,
- 2245, 2258, 2414, 2428, 2441, 2246, 2259, 2442,
- 2452, 2454, 2455, 2260, 2456, 2271, 2272, 2273,
- 2466, 2467, 2468, 2469, 2274, 2470, 2285, 2286,
- 2287, 2480, 2481, 2482, 2483, 2288, 2635, 2623,
- 2636, 2637, 2638, 2649, 2650, 2651, 2652, 2663,
- 2664, 2665, 2666, 2608, 2621, 2622, 2609, 2610,
- 2624, 2484, 2648, 2662, 2676, 2677, 2678, 2679,
- 2442, 2247, 2260, 2429, 2443, 2456, 2234, 2248,
- 2261, 2416, 2430, 2457, 2444, 2235, 2249, 2262,
- 2417, 2431, 2458, 2445, 2455, 2640, 2263, 2274,
- 2275, 2276, 2459, 2472, 2469, 2470, 2471, 2653,
- 2654, 2641, 2652, 2288, 2289, 2277, 2290, 2485,
- 2473, 2486, 2655, 2483, 2484, 2667, 2668, 2666,
- 2611, 2612, 2625, 2639, 2613, 2626, 2624, 2638,
- 2627, 2680, 2681, 2669, 2682, 2651, 2665, 2679,
- 2249, 2431, 2445, 2236, 2250, 2263, 2418, 2432,
- 2459, 2446, 2237, 2251, 2264, 2419, 2433, 2460,
- 2447, 2238, 2252, 2265, 2420, 2434, 2461, 2641,
- 2642, 2448, 2266, 2277, 2473, 2278, 2474, 2279,
- 2462, 2655, 2656, 2475, 2657, 2291, 2292, 2280,
- 2293, 2487, 2669, 2488, 2476, 2489, 2658, 2670,
- 2671, 2614, 2627, 2615, 2628, 2616, 2629, 2643,
- 2630, 2644, 2683, 2684, 2672, 2685, 2252, 2434,
- 2448, 2239, 2253, 2266, 2421, 2435, 2462, 2449,
- 2644, 2267, 2463, 2280, 2476, 2658, 2281, 2294,
- 2477, 2659, 2490, 2672, 2295, 2617, 2630, 2631,
- 2645, 2491, 2673, 2686, 2282, 2283, 2465, 2478,
- 2466, 2479, 2284, 2467, 2480, 2285, 2468, 2481,
- 2296, 2297, 2298, 2492, 2493, 2494, 2299, 2482,
- 2495, 2310, 2311, 2312, 2506, 2507, 2508, 2313,
- 2496, 2509, 2324, 2325, 2326, 2520, 2521, 2522,
- 2327, 2510, 2661, 2662, 2663, 2674, 2675, 2676,
- 2677, 2688, 2689, 2690, 2691, 2702, 2703, 2704,
- 2705, 2523, 2664, 2678, 2692, 2716, 2717, 2718,
- 2706, 2285, 2286, 2468, 2480, 2481, 2469, 2482,
- 2287, 2470, 2483, 2288, 2484, 2299, 2300, 2301,
- 2494, 2495, 2496, 2497, 2302, 2498, 2313, 2314,
- 2315, 2508, 2509, 2510, 2511, 2316, 2512, 2327,
- 2328, 2329, 2522, 2523, 2524, 2525, 2330, 2664,
- 2665, 2666, 2677, 2678, 2679, 2680, 2691, 2692,
- 2693, 2694, 2705, 2706, 2707, 2708, 2526, 2676,
- 2690, 2704, 2718, 2719, 2720, 2721, 2288, 2471,
- 2483, 2484, 2289, 2302, 2485, 2667, 2472, 2290,
- 2303, 2486, 2668, 2473, 2291, 2304, 2499, 2487,
- 2500, 2669, 2682, 2497, 2498, 2680, 2681, 2316,
- 2317, 2305, 2318, 2513, 2695, 2501, 2514, 2683,
- 2511, 2512, 2696, 2694, 2330, 2331, 2319, 2332,
- 2527, 2515, 2528, 2697, 2525, 2526, 2709, 2710,
- 2708, 2722, 2723, 2711, 2724, 2679, 2693, 2707,
- 2721, 2291, 2473, 2487, 2669, 2474, 2292, 2305,
- 2488, 2670, 2475, 2293, 2306, 2489, 2671, 2476,
- 2294, 2307, 2501, 2502, 2490, 2503, 2672, 2683,
- 2684, 2685, 2319, 2320, 2308, 2321, 2515, 2516,
- 2504, 2517, 2686, 2699, 2697, 2698, 2333, 2334,
- 2322, 2335, 2529, 2530, 2712, 2518, 2531, 2700,
- 2711, 2713, 2725, 2726, 2714, 2727, 2294, 2476,
- 2490, 2672, 2477, 2295, 2308, 2491, 2673, 2504,
- 2686, 2309, 2322, 2505, 2687, 2518, 2700, 2323,
- 2336, 2519, 2701, 2532, 2714, 2337, 2533, 2715,
- 2728, 2324, 2325, 2507, 2520, 2508, 2521, 2326,
- 2509, 2522, 2327, 2510, 2523, 2338, 2339, 2340,
- 2534, 2535, 2536, 2341, 2524, 2537, 2703, 2704,
- 2705, 2716, 2717, 2718, 2719, 2730, 2731, 2732,
- 2706, 2720, 2733, 2327, 2328, 2510, 2522, 2523,
- 2511, 2524, 2329, 2512, 2525, 2330, 2526, 2341,
- 2342, 2343, 2536, 2537, 2538, 2539, 2344, 2540,
- 2706, 2707, 2708, 2719, 2720, 2721, 2722, 2733,
- 2734, 2735, 2718, 2732, 2736, 2330, 2513, 2525,
- 2526, 2331, 2344, 2527, 2709, 2514, 2332, 2345,
- 2528, 2710, 2515, 2333, 2346, 2541, 2529, 2542,
- 2711, 2539, 2540, 2723, 2724, 2722, 2347, 2737,
- 2543, 2725, 2738, 2736, 2721, 2735, 2333, 2515,
- 2529, 2711, 2516, 2334, 2347, 2530, 2712, 2517,
- 2335, 2348, 2531, 2713, 2518, 2336, 2349, 2543,
- 2725, 2544, 2532, 2545, 2714, 2726, 2727, 2350,
- 2739, 2740, 2546, 2728, 2741, 2336, 2518, 2532,
- 2714, 2519, 2337, 2350, 2533, 2715, 2546, 2728,
- 2351, 2547, 2729, 2742, 2743,
-};
-
-static long _vq_fitmap_lsp30_1[] = {
- 0, 83, 166, 254, 342, 406, 495, 584,
- 697, 816, 871, 977, 1079, 1193, 1304, 1388,
- 1494, 1596, 1701, 1800, 1877, 1938, 2028, 2118,
- 2180, 2226, 2316, 2406, 2516, 342, 2635, 2725,
- 2815, 2949, 3091, 3155, 3289, 3417, 3559, 1304,
- 3694, 3834, 3970, 4100, 1800, 4220, 1938, 2028,
- 4294, 2180, 4366, 4468, 4574, 4697, 4813, 4866,
- 4997, 5126, 5267, 5402, 5462, 5597, 5725, 5856,
- 5975, 6034, 6158, 6281, 6402, 6510, 6565, 6632,
- 6697, 6765, 6830, 6861, 6962, 7067, 7182, 7288,
- 7361, 7494, 7623, 7756, 7288, 7878, 8001, 8117,
- 8231, 8337, 8389, 8495, 8602, 8705, 8796, 8843,
- 8902, 8961, 9020, 9075, 9102, 9161, 9223, 9289,
- 9378, 9421, 9492, 9562, 9289, 9378, 9636, 9704,
- 9768, 9832, 9894, 9924, 9985, 10046, 10105, 10158,
- 10185, 10219, 10253, 10286, 10317,
-};
-
-static long _vq_fitlength_lsp30_1[] = {
- 83, 83, 88, 88, 64, 89, 89, 113,
- 119, 55, 106, 102, 114, 111, 84, 106,
- 102, 105, 99, 77, 61, 90, 90, 62,
- 46, 90, 90, 110, 119, 64, 90, 90,
- 134, 142, 64, 134, 128, 142, 135, 84,
- 140, 136, 130, 120, 77, 74, 90, 90,
- 72, 46, 102, 106, 123, 116, 53, 131,
- 129, 141, 135, 60, 135, 128, 131, 119,
- 59, 124, 123, 121, 108, 55, 67, 65,
- 68, 65, 31, 101, 105, 115, 106, 73,
- 133, 129, 133, 122, 73, 123, 116, 114,
- 106, 52, 106, 107, 103, 91, 47, 59,
- 59, 59, 55, 27, 59, 62, 66, 89,
- 43, 71, 70, 74, 89, 43, 68, 64,
- 64, 62, 30, 61, 61, 59, 53, 27,
- 34, 34, 33, 31, 16,
-};
-
-static encode_aux_pigeonhole _vq_auxp_lsp30_1 = {
- 0.083, 0.001, 39, 5,
- _vq_pigeonmap_lsp30_1,
- 10333,
- _vq_fitlist_lsp30_1,
- _vq_fitmap_lsp30_1,
- _vq_fitlength_lsp30_1
-};
-
-static static_codebook _vq_book_lsp30_1 = {
- 3, 2744,
- _vq_lengthlist_lsp30_1,
- 1, 1603616637, 1590714958, 6, 1,
- _vq_quantlist_lsp30_1,
- NULL,
- NULL,
- &_vq_auxp_lsp30_1,
- 0
-};
-
-
-#endif
diff --git a/lib/books/lsp9_0.vqh b/lib/books/lsp9_0.vqh
deleted file mode 100644
index fa59ae41..00000000
--- a/lib/books/lsp9_0.vqh
+++ /dev/null
@@ -1,122 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
- * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
- * by the XIPHOPHORUS Company http://www.xiph.org/ *
- ********************************************************************
-
- function: static codebook autogenerated by vq/somethingorother
-
- ********************************************************************/
-
-#ifndef _V_lsp9_0_VQH_
-#define _V_lsp9_0_VQH_
-#include "codebook.h"
-
-static long _vq_quantlist_lsp9_0[] = {
- 0,
- 5,
- 10,
- 15,
- 25,
- 30,
- 35,
- 40,
- 46,
- 52,
- 56,
- 60,
- 65,
- 70,
- 76,
- 82,
- 88,
- 95,
- 102,
- 111,
- 121,
- 132,
- 145,
- 170,
- 220,
-};
-
-static long _vq_lengthlist_lsp9_0[] = {
- 7,10, 8, 7, 6, 7, 9, 5, 5, 5, 5, 4, 3, 3, 3, 3,
- 4, 4, 6, 6, 4, 6, 6,10, 6,
-};
-
-static long _vq_pigeonmap_lsp9_0[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 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, 4, 4,
- 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 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, 7,
- 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 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,
- 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8,
-};
-
-static long _vq_fitlist_lsp9_0[] = {
- 0, 1, 2, 3, 3, 4, 5, 6,
- 6, 7, 8, 9, 9, 10, 11, 12,
- 12, 13, 14, 15, 15, 16, 17, 18,
- 18, 19, 20, 21, 21, 22, 23, 24,
-};
-
-static long _vq_fitmap_lsp9_0[] = {
- 0, 4, 8, 12, 16, 20, 24, 28,
- 28,
-};
-
-static long _vq_fitlength_lsp9_0[] = {
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4,
-};
-
-static encode_aux_pigeonhole _vq_auxp_lsp9_0 = {
- 0.16, 0.002, 220, 9,
- _vq_pigeonmap_lsp9_0,
- 32,
- _vq_fitlist_lsp9_0,
- _vq_fitmap_lsp9_0,
- _vq_fitlength_lsp9_0
-};
-
-static static_codebook _vq_book_lsp9_0 = {
- 1, 25,
- _vq_lengthlist_lsp9_0,
- 1, 1605663457, 1592812110, 8, 1,
- _vq_quantlist_lsp9_0,
- NULL,
- NULL,
- &_vq_auxp_lsp9_0,
- 0
-};
-
-
-#endif
diff --git a/lib/books/lsp9_1.vqh b/lib/books/lsp9_1.vqh
deleted file mode 100644
index 80ae3d3c..00000000
--- a/lib/books/lsp9_1.vqh
+++ /dev/null
@@ -1,880 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
- * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
- * by the XIPHOPHORUS Company http://www.xiph.org/ *
- ********************************************************************
-
- function: static codebook autogenerated by vq/somethingorother
-
- ********************************************************************/
-
-#ifndef _V_lsp9_1_VQH_
-#define _V_lsp9_1_VQH_
-#include "codebook.h"
-
-static long _vq_quantlist_lsp9_1[] = {
- 0,
- 6,
- 10,
- 14,
- 19,
- 24,
- 30,
- 36,
- 42,
- 49,
- 56,
- 65,
-};
-
-static long _vq_lengthlist_lsp9_1[] = {
- 17,17,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
- 16,16,16,16,16,16,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,15,15,14,16,16,16,16,16,16,16,16,16,
- 15,12,14,16,16,15,16,16,16,14,16,16,15,11,13,14,
- 14,15,16,16,14,16,16,16,15,16,15,14,14,16,16,16,
- 16,16,16,16,16,16,14,13,15,16,16,16,16,16,15,15,
- 14,14,14,15,16,16,16,16,16,16,16,15,16,16,14,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,14,15,
- 16,16,16,16,15,14,15,14,14,15,14,16,16,16,15,16,
- 15,11,13,16,14,14,16,16,16,16,15,16,14,11,13,13,
- 13,14,16,15,16,16,16,16,16,13,13,13,14,16,16,16,
- 16,16,16,16,14,13,14,12,14,16,16,16,16,16,16,15,
- 14,14,14,15,14,16,16,16,16,16,15,15,15,16,15,15,
- 14,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,15,16,16,16,16,16,16,16,16,16,16,16,16,
- 16,15,16,15,16,16,16,16,16,16,15,16,16,15,15,16,
- 16,16,16,16,15,12,12,14,15,14,16,15,15,16,16,16,
- 13,10,11,12,13,14,16,16,16,16,16,16,12,11,10,11,
- 12,14,14,16,16,16,16,14,13,11,11,11,12,14,15,16,
- 16,16,16,15,13,11,12,12,14,15,15,16,16,16,16,16,
- 13,13,14,14,15,14,16,16,16,16,15,15,14,16,14,14,
- 16,16,16,16,16,16,16,15,16,16,15,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,15,16,16,16,16,16,15,15,15,
- 15,15,16,15,16,16,16,16,16,16,13,15,13,14,14,16,
- 16,15,16,16,14,11,10,11,12,13,14,16,16,16,16,16,
- 12,10,10,10,11,12,14,15,16,16,16,13,10, 9, 9,10,
- 11,13,15,15,16,14,15,13,10,10, 9,10,11,13,15,16,
- 16,16,14,14,12,10,10,11,13,14,16,16,16,16,16,14,
- 12,12,12,12,14,16,16,16,16,15,16,14,13,14,14,15,
- 16,14,16,16,16,16,16,15,15,16,14,16,16,16,16,16,
- 16,16,16,16,16,16,16,16,16,14,15,15,16,16,16,16,
- 16,16,15,16,13,14,15,16,16,16,16,16,16,16,14,14,
- 13,14,14,15,16,16,16,16,14,12,11,12,11,12,14,16,
- 16,16,16,15,12, 9, 9,10,10,12,13,16,16,15,14,13,
- 10, 9, 8, 9,10,11,13,16,16,16,13,10, 8, 8, 7, 8,
- 9,12,14,15,16,14,12,10, 8, 8, 8, 8,10,12,14,16,
- 16,14,15,11,10, 9, 9, 9,11,13,13,16,14,16,14,13,
- 11,11,11,11,13,13,16,16,16,16,15,13,13,12,12,14,
- 13,14,16,16,16,16,16,15,16,14,15,14,15,16,16,16,
- 16,16,16,16,16,16,15,15,14,16,16,16,16,16,16,16,
- 16,16,15,13,13,14,14,16,16,16,16,16,14,13,12,12,
- 12,12,13,15,16,16,16,15,13,10,10,11,10,11,12,13,
- 16,16,16,14,10, 8, 8, 8, 9,10,11,16,16,16,14,11,
- 8, 8, 7, 8, 9,10,12,16,16,15,10, 8, 7, 7, 6, 6,
- 8,10,12,15,16,14,11, 8, 7, 6, 6, 7, 9,11,12,14,
- 15,14,12,10, 8, 8, 8, 9,10,12,13,16,13,14,13,11,
- 10,10,10,10,11,13,14,15,16,16,14,14,12,12,12,11,
- 13,15,14,16,16,16,16,14,13,13,13,16,16,16,16,16,
- 16,16,16,16,16,16,15,15,14,15,14,16,16,16,16,16,
- 16,16,14,12,12,13,15,11,16,14,16,16,14,12,10,10,
- 10,12,13,13,16,16,16,16,11, 9, 9, 9,10,11,11,12,
- 16,16,14,11, 7, 7, 7, 8, 9,10,10,16,16,16,13, 8,
- 7, 7, 6, 7, 8, 9,12,14,16,15,10, 7, 6, 6, 5, 5,
- 8,10,12,16,14,12,10, 8, 6, 6, 5, 7, 9,10,12,14,
- 15,13,10, 9, 8, 8, 8, 9, 9,11,12,14,16,13,13,12,
- 10,10,10,10,10,12,13,16,16,16,14,13,12,12,11,11,
- 12,14,15,16,16,16,15,16,14,12,13,13,16,15,16,16,
- 16,15,16,16,16,16,16,13,13,15,15,16,16,16,16,16,
- 16,16,11,12,12,13,15,16,16,15,16,15,13,10, 9,10,
- 11,12,16,14,16,16,16,12, 9, 8, 8, 9,10,12,12,14,
- 16,16,13,10, 7, 7, 7, 8, 9,11,12,16,16,15,12, 8,
- 7, 6, 6, 7, 9,10,12,16,16,13,10, 8, 6, 6, 6, 7,
- 9,10,12,14,13,12,10, 8, 7, 7, 7, 8, 9,10,12,15,
- 16,11,10,10, 9, 9, 9, 8, 9,10,13,16,14,12,12,12,
- 11,10, 9, 9,10,12,14,16,15,15,14,12,11,11,10,11,
- 13,13,14,16,16,15,15,15,13,13,13,15,15,16,16,16,
- 16,16,16,16,16,16,15,13,15,16,16,16,16,16,16,16,
- 15,14,12,12,13,15,16,16,16,16,15,16,13,11,10,11,
- 12,13,16,16,16,16,16,12,10, 9, 8, 9,10,13,14,16,
- 16,14,13,11, 9, 8, 8, 9,12,13,14,16,16,12,11,10,
- 8, 7, 8, 9,11,12,13,16,14,13,11, 9, 8, 8, 8, 9,
- 10,11,13,15,14,12,11,10, 9, 9, 9, 9, 9,10,12,16,
- 13,13,12,10,10,10, 9, 9, 9,11,13,15,14,13,12,11,
- 11,10,10,10,10,12,16,16,14,14,13,12,12,11,12,11,
- 13,15,16,16,15,14,14,15,14,14,15,15,16,16,16,16,
- 16,16,16,16,16,16,16,16,16,15,16,15,16,16,16,15,
- 16,14,15,13,14,15,16,16,16,16,16,14,13,12,13,13,
- 13,16,16,16,16,15,15,13,12,11,11,11,14,14,16,16,
- 16,15,12,11,10,10,10,12,13,15,15,16,14,12,12,11,
- 10, 9,10,12,12,14,15,16,14,12,11,10, 9, 9,10,11,
- 11,12,14,16,16,13,11,10,10,10,10, 9, 9,11,13,15,
- 15,13,12,11,11,11,10, 9,10,12,14,16,15,12,12,12,
- 12,11,10,10,11,13,15,16,12,13,14,16,13,14,12,12,
- 14,14,16,16,15,15,16,16,14,14,14,15,16,16,16,16,
- 16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,
- 16,14,16,15,16,16,16,16,16,16,16,14,15,14,14,14,
- 15,16,16,16,15,15,13,15,13,13,12,14,16,16,16,16,
- 14,13,13,12,11,12,14,14,16,16,16,16,13,13,12,11,
- 10,11,13,14,13,14,15,16,15,14,11,11,11,11,12,12,
- 12,13,15,16,16,15,12,11,11,12,11,11,11,13,15,16,
- 16,14,13,13,13,12,11,10,11,14,16,16,14,13,15,16,
- 16,13,11,11,12,15,16,16,15,16,16,16,15,15,12,12,
- 14,16,16,16,15,14,16,16,15,15,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,14,16,16,14,15,15,16,
- 16,16,16,16,16,16,15,14,14,15,16,15,16,16,16,16,
- 16,15,14,13,13,14,16,16,16,16,16,16,16,14,13,12,
- 13,13,14,16,15,16,16,16,16,13,14,13,14,13,16,15,
- 15,16,16,16,16,14,14,14,16,15,16,14,16,16,16,16,
- 16,16,15,13,16,14,14,15,14,15,16,16,16,15,16,16,
- 16,16,15,15,16,16,16,16,15,16,16,16,16,16,16,16,
- 16,16,16,16,16,14,16,16,16,16,16,16,16,16,16,16,
-};
-
-static long _vq_pigeonmap_lsp9_1[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3,
- 3,
-};
-
-static long _vq_fitlist_lsp9_1[] = {
- 0, 1, 12, 144, 2, 3, 145, 146,
- 13, 14, 24, 25, 156, 15, 26, 147,
- 36, 27, 38, 168, 37, 157, 158, 169,
- 159, 170, 180, 181, 39, 171, 182, 48,
- 288, 289, 290, 291, 300, 301, 302, 312,
- 313, 314, 303, 432, 324, 325, 315, 326,
- 433, 434, 435, 444, 446, 445, 456, 447,
- 457, 458, 468, 469, 459, 470, 3, 4,
- 15, 147, 5, 16, 148, 6, 17, 149,
- 14, 26, 27, 28, 29, 18, 150, 161,
- 39, 40, 41, 171, 30, 159, 160, 172,
- 173, 162, 38, 183, 184, 185, 158, 53,
- 174, 291, 292, 293, 294, 303, 304, 305,
- 317, 315, 316, 306, 302, 170, 329, 327,
- 328, 435, 436, 437, 438, 318, 447, 448,
- 449, 461, 459, 460, 450, 446, 314, 473,
- 471, 472, 462, 6, 18, 150, 7, 19,
- 151, 8, 20, 152, 9, 29, 30, 31,
- 32, 162, 163, 164, 21, 44, 42, 43,
- 174, 33, 165, 153, 176, 41, 175, 188,
- 186, 187, 56, 54, 55, 294, 295, 296,
- 173, 306, 307, 308, 297, 320, 318, 319,
- 177, 185, 309, 332, 440, 438, 439, 330,
- 331, 200, 321, 450, 451, 452, 441, 464,
- 462, 463, 453, 476, 317, 474, 475, 344,
- 465, 9, 20, 21, 153, 10, 22, 154,
- 11, 34, 23, 155, 33, 32, 165, 166,
- 46, 178, 45, 35, 44, 58, 190, 167,
- 47, 164, 177, 189, 179, 57, 310, 297,
- 298, 299, 176, 309, 322, 321, 188, 311,
- 334, 333, 202, 320, 191, 323, 441, 442,
- 443, 454, 466, 201, 478, 308, 453, 465,
- 455, 332, 477, 346, 335, 467, 464, 345,
- 36, 25, 37, 26, 38, 27, 39, 48,
- 180, 50, 49, 181, 171, 182, 60, 51,
- 183, 192, 61, 193, 62, 194, 63, 195,
- 72, 204, 205, 206, 73, 74, 169, 170,
- 157, 207, 216, 168, 324, 315, 313, 314,
- 326, 325, 327, 336, 337, 338, 339, 348,
- 349, 350, 217, 218, 351, 360, 468, 469,
- 480, 481, 482, 492, 493, 361, 362, 457,
- 458, 459, 470, 471, 483, 494, 495, 504,
- 505, 506, 27, 39, 28, 40, 29, 41,
- 30, 51, 183, 52, 184, 53, 185, 42,
- 174, 50, 63, 64, 195, 196, 65, 197,
- 54, 186, 62, 75, 207, 76, 208, 77,
- 209, 66, 198, 74, 172, 173, 171, 162,
- 210, 221, 194, 206, 219, 220, 329, 327,
- 316, 328, 317, 318, 339, 340, 341, 330,
- 351, 352, 353, 342, 218, 182, 315, 338,
- 350, 497, 354, 365, 473, 472, 483, 484,
- 485, 474, 495, 496, 486, 363, 362, 364,
- 459, 460, 461, 471, 462, 482, 494, 498,
- 509, 507, 506, 508, 30, 42, 31, 43,
- 32, 44, 33, 56, 54, 186, 55, 187,
- 188, 45, 65, 66, 67, 68, 198, 199,
- 200, 57, 78, 210, 79, 211, 80, 212,
- 69, 201, 53, 174, 175, 176, 177, 189,
- 163, 164, 165, 222, 223, 224, 213, 309,
- 332, 318, 330, 331, 319, 320, 342, 343,
- 344, 333, 354, 355, 356, 345, 197, 321,
- 500, 368, 366, 367, 357, 474, 475, 476,
- 486, 487, 488, 498, 499, 462, 463, 464,
- 453, 465, 477, 489, 510, 511, 501, 512,
- 33, 45, 34, 57, 46, 23, 35, 58,
- 190, 167, 47, 56, 189, 202, 179, 70,
- 59, 191, 69, 68, 201, 214, 71, 203,
- 82, 80, 81, 213, 83, 215, 177, 178,
- 226, 166, 225, 311, 200, 212, 358, 224,
- 94, 310, 333, 334, 321, 322, 323, 346,
- 335, 345, 347, 357, 370, 359, 502, 501,
- 369, 478, 455, 477, 467, 490, 489, 479,
- 491, 227, 465, 454, 466, 344, 356, 514,
- 503, 368, 238, 513, 371, 72, 61, 73,
- 205, 62, 63, 74, 206, 216, 75, 207,
- 84, 217, 218, 85, 86, 228, 87, 219,
- 96, 229, 230, 97, 98, 240, 99, 231,
- 108, 241, 242, 109, 110, 243, 384, 385,
- 386, 252, 349, 350, 351, 360, 361, 362,
- 363, 372, 373, 374, 375, 253, 254, 387,
- 493, 504, 505, 516, 528, 529, 494, 506,
- 517, 518, 396, 397, 530, 495, 507, 519,
- 398, 531, 672, 540, 673, 541, 674, 63,
- 74, 75, 207, 64, 76, 208, 65, 77,
- 209, 66, 219, 220, 78, 210, 221, 87,
- 88, 89, 86, 90, 101, 222, 233, 99,
- 231, 100, 232, 98, 243, 102, 234, 245,
- 244, 113, 110, 111, 112, 246, 218, 242,
- 389, 387, 388, 257, 351, 352, 353, 354,
- 363, 364, 365, 230, 366, 375, 376, 377,
- 378, 254, 255, 362, 386, 256, 374, 522,
- 533, 531, 532, 390, 496, 497, 498, 507,
- 508, 509, 510, 519, 520, 521, 398, 399,
- 401, 495, 400, 506, 530, 518, 534, 677,
- 675, 676, 542, 543, 544, 545, 66, 78,
- 210, 67, 79, 211, 68, 80, 212, 69,
- 90, 222, 223, 224, 91, 92, 81, 213,
- 102, 234, 103, 235, 236, 104, 93, 225,
- 246, 247, 248, 114, 115, 105, 116, 237,
- 113, 390, 391, 392, 258, 259, 249, 260,
- 354, 355, 356, 366, 367, 368, 357, 378,
- 379, 380, 369, 381, 500, 511, 522, 524,
- 534, 535, 536, 525, 404, 499, 498, 510,
- 512, 501, 523, 513, 393, 402, 403, 537,
- 548, 678, 679, 680, 546, 547, 69, 81,
- 213, 70, 82, 214, 71, 83, 215, 92,
- 225, 93, 94, 226, 95, 227, 104, 237,
- 105, 106, 238, 250, 107, 239, 249, 116,
- 117, 118, 251, 224, 236, 248, 262, 203,
- 370, 359, 382, 371, 394, 393, 383, 261,
- 357, 358, 347, 369, 381, 260, 395, 406,
- 501, 502, 514, 503, 526, 525, 515, 538,
- 537, 527, 513, 405, 380, 392, 539, 550,
- 404, 549, 682, 681, 108, 240, 97, 241,
- 98, 109, 99, 242, 110, 252, 111, 120,
- 253, 254, 121, 122, 264, 123, 265, 266,
- 132, 133, 134, 267, 276, 135, 243, 255,
- 277, 278, 408, 409, 410, 385, 386, 387,
- 396, 397, 398, 399, 411, 420, 384, 421,
- 279, 422, 552, 553, 529, 540, 541, 542,
- 554, 530, 555, 564, 531, 543, 423, 566,
- 565, 696, 697, 673, 674, 684, 685, 686,
- 698, 110, 243, 100, 111, 244, 112, 101,
- 245, 113, 102, 246, 255, 114, 257, 256,
- 125, 122, 123, 124, 258, 126, 269, 267,
- 268, 134, 135, 136, 137, 270, 280, 279,
- 138, 281, 413, 411, 412, 278, 414, 254,
- 389, 388, 390, 401, 399, 400, 266, 402,
- 387, 425, 398, 410, 422, 423, 424, 557,
- 555, 556, 282, 531, 533, 532, 534, 545,
- 543, 544, 546, 558, 569, 567, 568, 542,
- 554, 566, 426, 701, 699, 700, 675, 676,
- 677, 678, 689, 687, 688, 690, 102, 113,
- 246, 114, 103, 247, 115, 104, 248, 116,
- 105, 258, 259, 249, 260, 127, 117, 128,
- 126, 125, 270, 271, 261, 272, 129, 140,
- 138, 137, 139, 281, 282, 283, 273, 284,
- 257, 269, 416, 414, 415, 391, 390, 392,
- 393, 404, 402, 403, 405, 426, 427, 141,
- 428, 417, 425, 401, 548, 413, 549, 560,
- 558, 559, 534, 535, 536, 537, 546, 547,
- 570, 571, 572, 561, 569, 285, 557, 545,
- 704, 702, 703, 678, 679, 680, 681, 692,
- 690, 691, 693, 105, 249, 117, 106, 250,
- 118, 107, 251, 119, 116, 128, 260, 261,
- 129, 262, 130, 263, 131, 272, 273, 274,
- 142, 141, 275, 140, 284, 285, 286, 143,
- 418, 419, 407, 417, 430, 393, 394, 395,
- 405, 406, 428, 429, 287, 404, 416, 562,
- 563, 539, 551, 561, 574, 537, 538, 549,
- 550, 572, 573, 548, 560, 431, 706, 707,
- 695, 705, 718, 681, 682, 683, 693, 694,
- 432, 289, 300, 576, 433, 290, 434, 291,
- 435, 444, 301, 577, 302, 578, 445, 446,
- 312, 303, 157, 456, 588, 313, 314, 447,
- 579, 457, 458, 324, 325, 315, 326, 468,
- 600, 469, 459, 470, 589, 590, 591, 601,
- 602, 612, 613, 471, 603, 614, 480, 720,
- 722, 721, 732, 723, 733, 734, 744, 735,
- 745, 746, 756, 757, 615, 747, 758, 624,
- 864, 865, 866, 876, 867, 877, 878, 888,
- 889, 879, 890, 900, 901, 759, 891, 902,
- 768, 291, 435, 292, 303, 436, 579, 293,
- 304, 437, 580, 161, 294, 305, 581, 438,
- 447, 448, 449, 446, 315, 316, 317, 459,
- 460, 306, 461, 582, 591, 592, 593, 450,
- 329, 327, 328, 471, 472, 473, 605, 318,
- 462, 594, 314, 603, 604, 458, 590, 617,
- 615, 616, 606, 485, 723, 724, 725, 726,
- 735, 736, 737, 749, 747, 748, 738, 602,
- 734, 761, 759, 760, 750, 629, 867, 868,
- 869, 746, 879, 880, 870, 881, 893, 891,
- 892, 882, 758, 903, 904, 905, 878, 773,
- 894, 294, 438, 295, 306, 582, 439, 163,
- 296, 307, 583, 440, 164, 308, 584, 297,
- 452, 450, 451, 441, 318, 319, 320, 462,
- 594, 463, 595, 464, 596, 309, 330, 331,
- 332, 453, 476, 474, 606, 475, 607, 608,
- 321, 344, 465, 317, 461, 585, 597, 620,
- 473, 618, 619, 488, 486, 487, 609, 726,
- 727, 728, 605, 738, 739, 740, 617, 750,
- 751, 752, 729, 741, 764, 762, 763, 632,
- 630, 631, 753, 872, 870, 871, 749, 761,
- 882, 883, 884, 894, 896, 885, 873, 895,
- 908, 906, 907, 776, 774, 775, 297, 308,
- 441, 309, 585, 298, 453, 442, 166, 310,
- 586, 454, 299, 155, 443, 452, 322, 466,
- 311, 587, 321, 598, 320, 464, 465, 167,
- 455, 597, 334, 478, 333, 610, 323, 477,
- 467, 609, 476, 346, 599, 345, 490, 622,
- 335, 596, 621, 479, 611, 489, 608, 620,
- 729, 730, 731, 742, 741, 754, 743, 753,
- 634, 766, 740, 765, 623, 755, 633, 752,
- 764, 873, 874, 875, 898, 778, 885, 886,
- 897, 887, 910, 767, 884, 909, 899, 777,
- 324, 468, 313, 336, 457, 325, 469, 458,
- 326, 470, 459, 327, 480, 612, 337, 338,
- 471, 601, 481, 613, 482, 614, 348, 349,
- 339, 350, 483, 492, 624, 493, 625, 494,
- 626, 351, 495, 360, 636, 504, 361, 637,
- 362, 638, 505, 506, 602, 603, 615, 627,
- 639, 648, 600, 649, 650, 745, 746, 756,
- 747, 758, 757, 768, 759, 769, 770, 771,
- 780, 781, 782, 783, 792, 744, 793, 794,
- 913, 900, 889, 890, 901, 902, 903, 912,
- 914, 915, 924, 925, 926, 891, 877, 927,
- 936, 888, 327, 459, 471, 460, 328, 472,
- 461, 329, 473, 318, 341, 462, 339, 340,
- 330, 485, 617, 483, 615, 604, 616, 484,
- 605, 474, 606, 482, 351, 352, 353, 342,
- 495, 627, 496, 628, 497, 629, 486, 618,
- 494, 354, 363, 639, 364, 640, 365, 641,
- 498, 630, 507, 509, 508, 506, 603, 594,
- 642, 626, 638, 651, 652, 653, 650, 614,
- 747, 748, 749, 761, 759, 760, 750, 771,
- 772, 773, 762, 783, 784, 785, 774, 738,
- 786, 795, 796, 797, 770, 782, 794, 758,
- 917, 928, 929, 905, 903, 904, 893, 894,
- 915, 916, 906, 927, 918, 892, 891, 882,
- 930, 941, 914, 926, 939, 940, 330, 462,
- 474, 319, 342, 463, 331, 475, 320, 343,
- 464, 332, 476, 344, 321, 465, 486, 618,
- 487, 619, 488, 620, 607, 608, 333, 477,
- 356, 354, 355, 498, 630, 499, 631, 500,
- 632, 345, 489, 368, 366, 642, 367, 643,
- 224, 644, 357, 510, 511, 512, 501, 633,
- 606, 609, 621, 485, 595, 596, 597, 656,
- 654, 655, 645, 750, 751, 752, 629, 762,
- 763, 764, 774, 775, 776, 786, 787, 788,
- 777, 741, 753, 641, 765, 739, 740, 800,
- 798, 799, 789, 773, 919, 932, 906, 907,
- 908, 896, 785, 918, 920, 930, 931, 921,
- 894, 895, 897, 909, 883, 884, 885, 942,
- 943, 944, 933, 465, 333, 477, 345, 322,
- 466, 334, 478, 346, 490, 622, 323, 455,
- 467, 599, 335, 479, 489, 621, 488, 609,
- 610, 611, 358, 357, 502, 634, 347, 491,
- 623, 500, 501, 633, 370, 646, 359, 226,
- 514, 503, 635, 368, 225, 369, 645, 512,
- 513, 371, 647, 382, 658, 598, 515, 657,
- 656, 743, 632, 644, 790, 753, 754, 766,
- 755, 765, 778, 767, 777, 779, 789, 791,
- 742, 526, 802, 659, 801, 800, 776, 788,
- 887, 910, 899, 922, 921, 911, 934, 933,
- 923, 909, 897, 898, 670, 803, 935, 946,
- 886, 945, 920, 932, 944, 360, 504, 493,
- 361, 637, 494, 505, 362, 495, 506, 363,
- 372, 638, 648, 507, 516, 373, 649, 374,
- 650, 517, 518, 375, 229, 384, 519, 240,
- 660, 528, 385, 661, 386, 662, 529, 530,
- 387, 241, 672, 531, 396, 252, 673, 674,
- 540, 397, 398, 253, 541, 542, 639, 651,
- 663, 675, 684, 816, 685, 781, 782, 792,
- 793, 794, 804, 805, 806, 807, 817, 818,
- 686, 783, 795, 819, 828, 829, 925, 936,
- 937, 948, 960, 961, 962, 830, 926, 927,
- 938, 939, 949, 950, 951, 963, 972, 363,
- 506, 507, 496, 364, 640, 508, 497, 365,
- 641, 509, 498, 222, 366, 377, 642, 653,
- 375, 651, 376, 652, 233, 510, 519, 520,
- 521, 518, 234, 378, 389, 654, 665, 387,
- 663, 388, 664, 245, 522, 531, 532, 533,
- 530, 246, 390, 666, 675, 676, 401, 677,
- 534, 399, 400, 257, 255, 256, 545, 398,
- 542, 543, 544, 639, 650, 662, 678, 674,
- 689, 821, 819, 820, 686, 687, 688, 783,
- 784, 785, 786, 797, 795, 796, 798, 809,
- 807, 808, 810, 794, 806, 822, 833, 818,
- 830, 831, 832, 928, 929, 951, 952, 954,
- 965, 963, 964, 927, 939, 940, 930, 941,
- 942, 953, 966, 950, 962, 977, 366, 498,
- 642, 510, 499, 367, 643, 511, 500, 368,
- 644, 512, 501, 223, 378, 654, 224, 379,
- 655, 380, 234, 235, 656, 369, 524, 645,
- 522, 523, 513, 390, 666, 391, 392, 246,
- 667, 668, 381, 536, 657, 534, 535, 525,
- 679, 402, 678, 403, 404, 680, 249, 260,
- 393, 669, 258, 259, 537, 548, 546, 547,
- 545, 690, 691, 681, 692, 822, 823, 824,
- 786, 787, 788, 798, 799, 800, 789, 811,
- 810, 812, 801, 813, 689, 834, 835, 825,
- 836, 932, 944, 943, 933, 956, 954, 945,
- 957, 968, 966, 967, 930, 931, 942, 955,
- 833, 978, 979, 969, 980, 501, 369, 645,
- 513, 502, 370, 646, 514, 359, 382, 503,
- 658, 371, 647, 225, 380, 381, 238, 515,
- 237, 657, 525, 526, 227, 524, 383, 659,
- 394, 670, 392, 393, 250, 239, 527, 669,
- 537, 538, 536, 395, 671, 682, 406, 251,
- 539, 405, 681, 261, 262, 550, 549, 683,
- 656, 668, 404, 680, 407, 548, 694, 693,
- 826, 825, 815, 789, 790, 802, 791, 801,
- 803, 814, 813, 692, 827, 800, 812, 824,
- 551, 838, 837, 933, 945, 934, 946, 935,
- 958, 957, 947, 969, 970, 959, 836, 695,
- 971, 944, 956, 968, 982, 923, 981, 396,
- 540, 529, 673, 253, 397, 530, 541, 674,
- 398, 531, 542, 675, 399, 408, 684, 543,
- 264, 685, 686, 552, 409, 410, 265, 553,
- 266, 554, 687, 411, 696, 555, 697, 698,
- 276, 420, 421, 564, 277, 565, 422, 566,
- 699, 278, 423, 708, 567, 709, 710, 840,
- 841, 842, 817, 828, 829, 830, 818, 819,
- 831, 843, 852, 711, 816, 853, 854, 984,
- 985, 986, 961, 962, 972, 973, 974, 987,
- 855, 960, 996, 963, 975, 997, 998, 399,
- 531, 542, 675, 532, 543, 676, 400, 533,
- 544, 677, 257, 401, 545, 534, 256, 402,
- 678, 258, 689, 687, 688, 413, 546, 411,
- 412, 269, 267, 268, 557, 410, 554, 555,
- 556, 690, 270, 414, 701, 699, 700, 558,
- 281, 425, 422, 566, 279, 423, 280, 424,
- 568, 567, 569, 702, 426, 282, 713, 711,
- 712, 570, 686, 698, 710, 845, 843, 844,
- 820, 821, 822, 833, 831, 832, 834, 819,
- 846, 857, 855, 856, 714, 830, 854, 842,
- 987, 988, 989, 965, 964, 966, 976, 977,
- 975, 978, 963, 990, 999, 1000, 858, 1001,
- 974, 986, 998, 534, 545, 678, 402, 546,
- 535, 679, 259, 403, 547, 536, 680, 404,
- 548, 537, 258, 260, 414, 690, 415, 691,
- 272, 405, 416, 681, 692, 261, 270, 271,
- 549, 560, 558, 559, 557, 702, 703, 417,
- 693, 704, 273, 284, 428, 561, 282, 426,
- 283, 427, 569, 570, 571, 572, 425, 714,
- 715, 429, 705, 716, 713, 689, 701, 848,
- 846, 847, 823, 822, 824, 825, 836, 834,
- 835, 837, 858, 859, 573, 849, 860, 833,
- 857, 845, 990, 992, 991, 967, 968, 966,
- 969, 980, 978, 979, 981, 717, 993, 1002,
- 1003, 1004, 1001, 861, 977, 989, 1134, 537,
- 681, 261, 405, 549, 538, 682, 262, 406,
- 550, 395, 539, 683, 263, 407, 548, 416,
- 417, 693, 418, 694, 551, 273, 274, 562,
- 561, 695, 275, 419, 560, 705, 706, 563,
- 286, 430, 285, 429, 574, 707, 573, 572,
- 287, 431, 716, 717, 718, 575, 692, 704,
- 850, 851, 839, 849, 862, 825, 826, 827,
- 837, 838, 860, 861, 719, 836, 848, 994,
- 995, 993, 983, 1006, 969, 970, 971, 981,
- 982, 863, 980, 992, 1005, 1004, 1138, 1139,
- 864, 721, 732, 865, 722, 733, 866, 723,
- 734, 867, 876, 877, 878, 744, 745, 735,
- 746, 888, 889, 879, 890, 756, 757, 747,
- 758, 900, 901, 891, 902, 768, 1008, 1009,
- 1010, 1020, 1011, 1032, 1021, 1022, 1033, 1023,
- 1034, 1044, 1045, 903, 1035, 1046, 912, 1152,
- 1153, 1154, 1164, 1155, 1176, 1165, 1166, 1177,
- 1167, 1178, 1188, 1189, 1047, 1179, 1190, 1056,
- 1296, 1297, 1298, 1308, 1299, 1310, 1309, 1320,
- 1321, 1311, 1322, 1191, 1333, 1200, 1332, 1201,
- 1323, 1334, 723, 867, 724, 735, 868, 725,
- 736, 869, 726, 737, 870, 881, 879, 880,
- 878, 746, 747, 748, 749, 738, 891, 892,
- 893, 761, 882, 759, 760, 750, 903, 904,
- 905, 894, 773, 1011, 1013, 1012, 890, 1014,
- 1025, 1035, 1023, 1024, 1036, 1037, 1026, 902,
- 1047, 1048, 1049, 1022, 917, 1038, 1157, 1155,
- 1156, 1034, 1167, 1168, 1158, 1169, 1179, 1180,
- 1181, 1170, 1046, 1191, 1192, 1193, 1166, 1061,
- 1182, 1299, 1300, 1301, 1178, 1302, 1311, 1312,
- 1313, 1323, 1324, 1325, 1314, 1335, 1203, 1336,
- 1204, 1205, 1337, 726, 870, 727, 738, 871,
- 728, 739, 872, 740, 729, 882, 883, 884,
- 752, 873, 750, 751, 895, 896, 893, 894,
- 741, 764, 762, 763, 885, 753, 908, 906,
- 907, 774, 775, 776, 897, 1014, 1015, 1016,
- 905, 1026, 1027, 1028, 1039, 1029, 1017, 1040,
- 1038, 1052, 1050, 1051, 920, 918, 919, 1037,
- 1041, 1158, 1159, 1160, 1049, 1170, 1171, 1172,
- 1182, 1183, 1184, 1173, 1161, 1196, 1194, 1195,
- 1064, 1062, 1063, 1181, 1185, 1193, 1302, 1303,
- 1304, 1314, 1315, 1316, 1328, 1305, 1326, 1327,
- 1317, 1340, 1208, 1205, 1206, 1338, 1207, 1339,
- 729, 740, 873, 741, 730, 874, 742, 731,
- 886, 875, 884, 885, 754, 753, 743, 898,
- 897, 887, 896, 765, 766, 764, 910, 755,
- 909, 899, 908, 778, 777, 767, 1017, 1018,
- 1019, 1042, 922, 1029, 1030, 1031, 1054, 911,
- 1028, 1041, 1053, 1043, 921, 1040, 1052, 1161,
- 1162, 1163, 1174, 1186, 1066, 1175, 1173, 1185,
- 1198, 1055, 1172, 1197, 1187, 1065, 1184, 1196,
- 1210, 1305, 1306, 1307, 1199, 1318, 1317, 1330,
- 1329, 1319, 1342, 1316, 1341, 1209, 1331, 1328,
- 756, 888, 900, 768, 889, 757, 901, 890,
- 758, 902, 891, 759, 769, 770, 903, 912,
- 913, 914, 780, 781, 771, 782, 915, 924,
- 925, 926, 783, 792, 793, 794, 927, 936,
- 937, 938, 1068, 1069, 1070, 1044, 1045, 1035,
- 1046, 1047, 1056, 1057, 1058, 1059, 1033, 1034,
- 1021, 1071, 1080, 1032, 1081, 1082, 1212, 1201,
- 1213, 1214, 1188, 1177, 1178, 1189, 1179, 1190,
- 1191, 1200, 1202, 1203, 1215, 1165, 1224, 1176,
- 1225, 1226, 1332, 1333, 1344, 1345, 1356, 1357,
- 1321, 1334, 1335, 1346, 1347, 1358, 1309, 1322,
- 1323, 1359, 1320, 1310, 1311, 1368, 759, 891,
- 903, 760, 771, 892, 904, 761, 772, 893,
- 905, 773, 894, 762, 915, 916, 917, 906,
- 914, 782, 783, 784, 785, 774, 929, 927,
- 928, 918, 926, 786, 795, 796, 797, 930,
- 941, 939, 940, 938, 902, 1073, 1062, 1071,
- 1072, 1047, 1048, 1049, 1059, 1060, 1061, 1050,
- 1036, 1037, 1038, 1035, 1026, 1074, 1085, 1058,
- 1070, 1083, 1084, 1082, 1046, 1192, 1193, 1204,
- 1205, 1215, 1216, 1217, 1206, 1191, 1181, 1182,
- 1203, 1194, 1180, 1179, 1170, 1218, 1229, 1202,
- 1214, 1227, 1228, 1226, 1190, 1335, 1336, 1337,
- 1347, 1348, 1338, 1349, 1359, 1360, 1361, 1350,
- 1324, 1325, 1326, 1314, 1323, 1312, 1313, 1362,
- 1373, 762, 894, 906, 774, 895, 763, 907,
- 775, 896, 764, 908, 776, 753, 765, 885,
- 897, 920, 918, 919, 909, 788, 786, 787,
- 931, 777, 932, 930, 921, 800, 798, 799,
- 789, 942, 943, 944, 933, 917, 1052, 1062,
- 1074, 1075, 1076, 1050, 1051, 1039, 929, 1063,
- 1064, 1065, 1038, 1040, 1041, 1053, 1027, 1028,
- 1029, 1086, 1087, 1088, 1077, 1061, 1196, 1206,
- 1207, 1208, 1218, 1219, 1220, 1194, 1195, 1183,
- 1184, 1073, 1209, 1182, 1185, 1197, 1171, 1172,
- 1173, 1230, 1231, 1232, 1221, 1205, 1340, 1338,
- 1339, 1217, 1350, 1351, 1352, 1362, 1363, 1364,
- 1327, 1353, 1326, 1315, 1316, 1328, 1317, 1329,
- 1341, 1361, 1374, 1375, 1365, 1376, 765, 897,
- 909, 777, 754, 766, 886, 898, 910, 778,
- 755, 887, 899, 922, 767, 911, 921, 920,
- 790, 789, 779, 934, 923, 933, 932, 802,
- 791, 801, 935, 946, 944, 945, 803, 1031,
- 1054, 1043, 1066, 1055, 1078, 1077, 1067, 1053,
- 1065, 947, 1079, 1041, 1042, 1090, 1030, 1089,
- 1064, 1076, 1088, 1175, 1198, 1197, 1187, 1210,
- 1209, 1199, 1222, 1221, 1211, 1185, 1186, 1091,
- 1223, 1234, 1174, 1233, 1208, 1220, 1232, 1342,
- 1341, 1354, 1343, 1353, 1366, 1355, 1365, 1235,
- 1319, 1329, 1330, 1331, 1367, 1318, 1352, 1364,
- 1378, 1317, 1340, 1376, 1377, 1246, 792, 936,
- 925, 793, 926, 937, 794, 927, 938, 795,
- 804, 805, 806, 939, 948, 949, 950, 807,
- 816, 817, 818, 951, 960, 961, 962, 819,
- 828, 963, 829, 830, 972, 973, 1069, 1070,
- 1080, 1081, 1082, 1092, 1093, 1094, 1104, 1105,
- 1106, 974, 1071, 1083, 1095, 1107, 1116, 1117,
- 1213, 1214, 1224, 1225, 1226, 1236, 1237, 1238,
- 1248, 1249, 1250, 1118, 1215, 1227, 1239, 1251,
- 1260, 1261, 1262, 1357, 1358, 1368, 1369, 1370,
- 1380, 1382, 1381, 1392, 1393, 1359, 1371, 1383,
- 1394, 1395, 1404, 795, 927, 938, 939, 928,
- 796, 940, 929, 797, 941, 930, 798, 809,
- 807, 808, 942, 953, 951, 952, 950, 810,
- 821, 819, 820, 954, 965, 963, 964, 962,
- 822, 833, 831, 832, 966, 974, 975, 976,
- 977, 1071, 1072, 1073, 1074, 1083, 1084, 1085,
- 1086, 1097, 1095, 1096, 1098, 1107, 1109, 1108,
- 1110, 1082, 1106, 1121, 1094, 1118, 1119, 1215,
- 1216, 1217, 1218, 1229, 1227, 1228, 1230, 1239,
- 1240, 1241, 1242, 1253, 1251, 1252, 1120, 1254,
- 1250, 1265, 1226, 1238, 1262, 1263, 1264, 1397,
- 1359, 1360, 1361, 1362, 1371, 1372, 1373, 1374,
- 1383, 1384, 1385, 1386, 1395, 1396, 1398, 1409,
- 798, 930, 942, 931, 799, 943, 932, 800,
- 944, 933, 810, 811, 812, 801, 954, 955,
- 956, 945, 822, 823, 824, 813, 966, 967,
- 957, 968, 834, 835, 825, 836, 980, 979,
- 969, 978, 1074, 1075, 1076, 1087, 1088, 1086,
- 1077, 1099, 1089, 1100, 1098, 1111, 1112, 1110,
- 1101, 977, 1122, 1123, 1113, 1124, 1218, 1219,
- 1220, 1231, 1221, 1232, 1230, 1242, 1243, 1244,
- 1233, 1254, 1255, 1256, 1245, 1121, 1266, 1267,
- 1257, 1268, 1399, 1362, 1363, 1364, 1374, 1375,
- 1376, 1365, 1386, 1387, 1388, 1377, 1398, 1400,
- 1389, 1229, 1241, 1373, 1253, 1385, 1265, 1410,
- 1411, 1401, 1412, 933, 801, 945, 934, 802,
- 946, 791, 814, 935, 803, 813, 947, 812,
- 958, 956, 957, 815, 826, 825, 959, 824,
- 970, 968, 969, 827, 838, 971, 836, 837,
- 982, 981, 1077, 1078, 1079, 1089, 1090, 1091,
- 1101, 1102, 1103, 1113, 1114, 980, 839, 1115,
- 1088, 1100, 1112, 1126, 1067, 1125, 1221, 1222,
- 1223, 1233, 1234, 1235, 1245, 1246, 1247, 1257,
- 1258, 1124, 983, 1259, 1232, 1244, 1256, 1270,
- 1211, 1269, 1379, 1402, 1268, 1401, 1365, 1366,
- 1367, 1378, 1377, 1390, 1389, 1391, 1127, 1376,
- 1388, 1400, 1271, 1403, 1355, 1414, 1412, 1413,
- 828, 972, 961, 829, 962, 973, 830, 963,
- 974, 831, 840, 975, 841, 842, 984, 985,
- 986, 843, 987, 852, 1128, 853, 997, 854,
- 996, 1129, 1130, 998, 855, 1105, 1116, 1117,
- 1118, 1131, 999, 1104, 1106, 1140, 1107, 1119,
- 1141, 1142, 1273, 1272, 1274, 1249, 1250, 1260,
- 1261, 1262, 1275, 1284, 1143, 1248, 1251, 1263,
- 1285, 1286, 1393, 1405, 1416, 1417, 1418, 1287,
- 1394, 1404, 1406, 1419, 1428, 1395, 1407, 1430,
- 1429, 831, 963, 974, 964, 975, 832, 965,
- 976, 833, 977, 966, 834, 845, 843, 844,
- 978, 986, 987, 988, 989, 846, 990, 1133,
- 857, 854, 855, 1131, 856, 998, 999, 1132,
- 1000, 1001, 858, 1108, 1109, 1110, 1121, 1119,
- 1120, 1122, 1002, 1107, 1134, 1143, 1145, 1144,
- 1142, 1118, 1130, 1277, 1275, 1276, 1251, 1252,
- 1253, 1254, 1265, 1263, 1264, 1266, 1146, 1278,
- 1287, 1289, 1288, 1262, 1274, 1286, 1409, 1421,
- 1419, 1420, 1395, 1396, 1397, 1398, 1407, 1408,
- 1410, 1290, 1422, 1433, 1431, 1432, 1430, 966,
- 834, 978, 967, 835, 979, 968, 836, 980,
- 969, 977, 846, 847, 837, 848, 981, 992,
- 990, 991, 989, 849, 860, 993, 858, 1134,
- 859, 1136, 1135, 1004, 1001, 1002, 1003, 861,
- 1110, 1111, 1112, 1122, 1123, 1113, 1124, 1125,
- 1146, 1145, 1137, 1147, 1148, 1121, 1133, 1280,
- 1279, 1278, 1005, 1254, 1255, 1256, 1266, 1267,
- 1257, 1268, 1269, 1281, 1291, 1290, 1292, 1289,
- 1265, 1277, 1149, 1399, 1401, 1412, 1413, 1424,
- 1411, 1422, 1423, 1398, 1400, 1410, 1434, 1435,
- 1425, 1436, 1421, 1433, 1293, 969, 837, 981,
- 970, 838, 982, 827, 971, 839, 848, 980,
- 849, 850, 983, 994, 993, 851, 992, 995,
- 862, 1138, 861, 718, 1127, 1137, 1006, 1005,
- 1004, 863, 1139, 1150, 719, 1007, 1113, 1114,
- 1115, 1125, 1126, 1124, 1136, 1148, 1149, 1282,
- 1283, 1271, 1281, 1294, 1151, 1257, 1258, 1259,
- 1269, 1270, 1268, 1280, 1292, 1293, 1426, 1427,
- 1295, 1401, 1402, 1413, 1414, 1403, 1415, 1425,
- 1438, 1412, 1424, 1436, 1437, 1296, 1153, 1164,
- 1297, 1154, 1165, 1298, 1155, 1166, 1299, 1308,
- 1176, 1309, 1177, 1310, 1167, 1178, 1320, 1188,
- 1189, 1321, 1179, 1190, 1311, 1322, 1333, 1332,
- 1191, 1323, 1334, 1200, 1440, 1441, 1442, 1452,
- 1443, 1454, 1453, 1464, 1465, 1455, 1466, 1335,
- 1344, 1476, 1345, 1477, 1467, 1478, 1584, 1585,
- 1586, 1479, 1587, 1596, 1598, 1608, 1597, 1599,
- 1488, 1609, 1490, 1610, 1620, 1489, 1621, 1611,
- 1622, 1155, 1166, 1299, 1156, 1167, 1300, 1157,
- 1168, 1301, 1158, 1169, 1302, 1311, 1312, 1313,
- 1181, 1178, 1310, 1179, 1180, 1170, 1322, 1325,
- 1191, 1323, 1192, 1324, 1193, 1314, 1182, 1335,
- 1336, 1337, 1194, 1205, 1326, 1445, 1443, 1444,
- 1455, 1456, 1446, 1457, 1467, 1468, 1469, 1458,
- 1479, 1347, 1480, 1348, 1349, 1481, 1454, 1466,
- 1338, 1470, 1589, 1478, 1587, 1588, 1590, 1601,
- 1599, 1600, 1613, 1611, 1612, 1491, 1492, 1493,
- 1602, 1586, 1623, 1624, 1625, 1482, 1598, 1610,
- 1614, 1158, 1302, 1159, 1170, 1303, 1160, 1171,
- 1304, 1172, 1161, 1316, 1314, 1182, 1315, 1183,
- 1184, 1305, 1326, 1327, 1173, 1196, 1328, 1193,
- 1325, 1194, 1195, 1185, 1317, 1340, 1337, 1338,
- 1339, 1206, 1207, 1208, 1329, 1446, 1448, 1447,
- 1313, 1458, 1459, 1460, 1472, 1449, 1470, 1471,
- 1461, 1484, 1352, 1349, 1350, 1482, 1351, 1483,
- 1469, 1481, 1473, 1457, 1590, 1591, 1592, 1496,
- 1601, 1604, 1602, 1603, 1593, 1614, 1615, 1616,
- 1605, 1493, 1494, 1495, 1628, 1626, 1627, 1613,
- 1625, 1617, 1161, 1172, 1305, 1173, 1162, 1306,
- 1174, 1163, 1318, 1307, 1317, 1186, 1184, 1316,
- 1185, 1175, 1330, 1198, 1328, 1197, 1329, 1187,
- 1319, 1196, 1342, 1341, 1210, 1199, 1331, 1340,
- 1208, 1209, 1449, 1450, 1451, 1354, 1343, 1462,
- 1461, 1474, 1473, 1463, 1486, 1460, 1485, 1353,
- 1475, 1472, 1484, 1352, 1498, 1487, 1593, 1594,
- 1595, 1497, 1618, 1630, 1606, 1604, 1605, 1617,
- 1607, 1616, 1629, 1619, 1496, 1628, 1592, 1642,
- 1188, 1320, 1332, 1200, 1189, 1321, 1178, 1310,
- 1322, 1333, 1190, 1323, 1334, 1191, 1201, 1202,
- 1344, 1335, 1212, 1345, 1346, 1203, 1213, 1214,
- 1356, 1357, 1347, 1358, 1215, 1224, 1225, 1226,
- 1359, 1368, 1369, 1370, 1500, 1476, 1477, 1488,
- 1489, 1501, 1465, 1478, 1479, 1490, 1491, 1502,
- 1453, 1466, 1467, 1503, 1464, 1454, 1455, 1512,
- 1513, 1514, 1644, 1645, 1646, 1608, 1597, 1620,
- 1609, 1610, 1621, 1622, 1611, 1623, 1632, 1633,
- 1634, 1635, 1515, 1647, 1598, 1599, 1656, 1657,
- 1658, 1191, 1323, 1335, 1192, 1203, 1324, 1336,
- 1193, 1204, 1325, 1337, 1205, 1194, 1326, 1202,
- 1347, 1348, 1349, 1338, 1217, 1346, 1214, 1215,
- 1216, 1206, 1359, 1360, 1361, 1350, 1358, 1218,
- 1226, 1227, 1228, 1229, 1362, 1371, 1372, 1373,
- 1370, 1334, 1505, 1503, 1504, 1479, 1480, 1481,
- 1491, 1492, 1493, 1494, 1468, 1469, 1482, 1458,
- 1470, 1467, 1456, 1457, 1506, 1517, 1490, 1502,
- 1515, 1516, 1514, 1478, 1649, 1647, 1648, 1611,
- 1600, 1623, 1612, 1601, 1624, 1613, 1602, 1625,
- 1614, 1637, 1635, 1636, 1626, 1638, 1622, 1634,
- 1646, 1518, 1650, 1661, 1659, 1660, 1658, 1194,
- 1326, 1338, 1206, 1195, 1327, 1339, 1207, 1196,
- 1328, 1340, 1208, 1185, 1197, 1317, 1329, 1349,
- 1350, 1351, 1352, 1218, 1219, 1220, 1341, 1209,
- 1361, 1362, 1363, 1364, 1353, 1221, 1232, 1230,
- 1231, 1374, 1375, 1376, 1365, 1507, 1508, 1506,
- 1484, 1482, 1483, 1495, 1496, 1494, 1471, 1497,
- 1470, 1459, 1460, 1472, 1461, 1473, 1485, 1505,
- 1493, 1518, 1519, 1509, 1520, 1650, 1651, 1652,
- 1614, 1603, 1626, 1615, 1604, 1627, 1616, 1628,
- 1605, 1617, 1638, 1639, 1640, 1629, 1641, 1662,
- 1531, 1663, 1637, 1649, 1530, 1664, 1653, 1197,
- 1329, 1341, 1209, 1186, 1198, 1318, 1330, 1342,
- 1210, 1187, 1319, 1331, 1354, 1199, 1222, 1343,
- 1353, 1220, 1352, 1221, 1211, 1366, 1355, 1364,
- 1365, 1234, 1223, 1233, 1378, 1367, 1376, 1377,
- 1246, 1235, 1510, 1509, 1486, 1485, 1498, 1487,
- 1497, 1499, 1379, 1463, 1473, 1474, 1475, 1511,
- 1462, 1496, 1508, 1522, 1461, 1484, 1520, 1521,
- 1390, 1523, 1654, 1642, 1619, 1631, 1653, 1643,
- 1655, 1605, 1617, 1629, 1606, 1618, 1630, 1607,
- 1641, 1534, 1666, 1628, 1640, 1652, 1532, 1664,
- 1665, 1533, 1224, 1368, 1357, 1225, 1358, 1369,
- 1226, 1359, 1370, 1227, 1236, 1237, 1238, 1371,
- 1380, 1381, 1382, 1239, 1248, 1249, 1250, 1383,
- 1392, 1393, 1394, 1251, 1260, 1261, 1262, 1395,
- 1404, 1356, 1405, 1501, 1512, 1513, 1524, 1525,
- 1536, 1406, 1502, 1514, 1526, 1537, 1503, 1515,
- 1527, 1538, 1539, 1548, 1500, 1549, 1550, 1680,
- 1645, 1656, 1657, 1668, 1669, 1658, 1670, 1681,
- 1682, 1646, 1647, 1659, 1671, 1633, 1683, 1644,
- 1692, 1693, 1694, 1227, 1359, 1370, 1360, 1371,
- 1228, 1361, 1372, 1229, 1373, 1362, 1230, 1241,
- 1238, 1239, 1240, 1374, 1383, 1384, 1385, 1382,
- 1242, 1253, 1250, 1251, 1252, 1386, 1395, 1396,
- 1397, 1394, 1254, 1265, 1263, 1264, 1398, 1409,
- 1406, 1407, 1408, 1504, 1505, 1506, 1517, 1515,
- 1516, 1518, 1529, 1527, 1528, 1530, 1541, 1539,
- 1540, 1503, 1542, 1553, 1514, 1526, 1538, 1550,
- 1551, 1552, 1685, 1650, 1661, 1662, 1673, 1674,
- 1683, 1684, 1648, 1649, 1659, 1660, 1671, 1672,
- 1647, 1638, 1658, 1670, 1682, 1686, 1697, 1694,
- 1695, 1696, 1230, 1362, 1374, 1363, 1231, 1375,
- 1364, 1232, 1376, 1365, 1242, 1243, 1244, 1233,
- 1388, 1386, 1387, 1377, 1254, 1255, 1256, 1245,
- 1400, 1398, 1399, 1389, 1266, 1267, 1257, 1268,
- 1410, 1401, 1412, 1411, 1506, 1507, 1508, 1519,
- 1518, 1520, 1530, 1531, 1532, 1542, 1543, 1544,
- 1533, 1509, 1521, 1373, 1385, 1517, 1397, 1529,
- 1409, 1554, 1555, 1545, 1556, 1541, 1688, 1686,
- 1687, 1651, 1652, 1662, 1663, 1664, 1674, 1675,
- 1676, 1677, 1553, 1650, 1653, 1665, 1673, 1639,
- 1640, 1641, 1698, 1699, 1689, 1700, 1661, 1685,
- 1365, 1233, 1377, 1366, 1234, 1378, 1223, 1246,
- 1355, 1367, 1235, 1245, 1244, 1390, 1379, 1389,
- 1388, 1258, 1247, 1257, 1256, 1402, 1391, 1401,
- 1400, 1259, 1270, 1268, 1269, 1403, 1414, 1412,
- 1413, 1509, 1510, 1511, 1522, 1521, 1523, 1534,
- 1533, 1535, 1546, 1545, 1520, 1532, 1544, 1271,
- 1415, 1547, 1499, 1558, 1556, 1557, 1689, 1690,
- 1653, 1654, 1666, 1655, 1665, 1667, 1677, 1678,
- 1679, 1559, 1691, 1664, 1643, 1676, 1688, 1642,
- 1700, 1701, 1702, 1260, 1249, 1393, 1404, 1261,
- 1394, 1405, 1262, 1395, 1406, 1263, 1272, 1273,
- 1274, 1407, 1416, 1417, 1418, 1275, 1419, 1284,
- 1285, 1286, 1429, 1428, 1430, 1287, 1392, 1536,
- 1537, 1548, 1549, 1560, 1561, 1562, 1538, 1550,
- 1563, 1572, 1431, 1539, 1551, 1573, 1574, 1575,
- 1681, 1692, 1693, 1704, 1705, 1682, 1683, 1694,
- 1706, 1716, 1695, 1707, 1717, 1718, 1680, 1719,
- 1263, 1395, 1406, 1396, 1407, 1264, 1397, 1408,
- 1265, 1254, 1398, 1409, 1266, 1277, 1275, 1276,
- 1410, 1421, 1418, 1419, 1420, 1278, 1422, 1287,
- 1288, 1289, 1286, 1430, 1431, 1432, 1433, 1290,
- 1539, 1540, 1541, 1542, 1553, 1551, 1552, 1554,
- 1565, 1563, 1564, 1434, 1566, 1577, 1575, 1576,
- 1574, 1550, 1562, 1697, 1709, 1578, 1684, 1685,
- 1686, 1695, 1696, 1698, 1707, 1708, 1710, 1683,
- 1721, 1719, 1720, 1694, 1706, 1718, 1398, 1266,
- 1255, 1399, 1410, 1267, 1256, 1400, 1411, 1268,
- 1257, 1401, 1412, 1409, 1278, 1279, 1269, 1280,
- 1277, 1423, 1413, 1424, 1422, 1421, 1281, 1292,
- 1290, 1291, 1425, 1436, 1433, 1434, 1435, 1293,
- 1542, 1543, 1544, 1554, 1555, 1545, 1556, 1567,
- 1557, 1568, 1566, 1578, 1579, 1569, 1580, 1553,
- 1437, 1577, 1565, 1686, 1687, 1688, 1689, 1700,
- 1698, 1699, 1701, 1712, 1710, 1711, 1581, 1713,
- 1724, 1722, 1723, 1721, 1697, 1709, 1401, 1269,
- 1258, 1402, 1413, 1270, 1414, 1259, 1403, 1271,
- 1282, 1280, 1412, 1281, 1415, 1426, 1424, 1425,
- 1283, 1294, 1427, 1293, 1292, 1438, 1437, 1295,
- 1436, 1570, 1571, 1439, 1545, 1546, 1547, 1557,
- 1558, 1559, 1569, 1582, 1556, 1568, 1580, 1581,
- 1583, 1689, 1690, 1691, 1701, 1702, 1703, 1713,
- 1714, 1715, 1726, 1724, 1725, 1700, 1712, 1679,
- 1727,
-};
-
-static long _vq_fitmap_lsp9_1[] = {
- 0, 62, 131, 201, 264, 338, 428, 512,
- 589, 663, 758, 838, 908, 977, 1062, 1147,
- 1216, 1297, 1385, 1478, 1560, 1650, 1758, 1867,
- 1965, 2055, 2166, 2269, 2367, 2447, 2547, 2647,
- 2728, 2810, 2899, 2992, 3072, 3166, 3273, 3382,
- 3478, 3563, 3664, 3763, 3856, 3929, 4015, 4101,
- 4173, 4241, 4321, 4402, 4472, 4553, 4647, 4735,
- 4818, 4891, 4978, 5064, 5139, 5200, 5270, 5342,
-};
-
-static long _vq_fitlength_lsp9_1[] = {
- 62, 69, 70, 63, 74, 90, 84, 77,
- 74, 95, 80, 70, 69, 85, 85, 69,
- 81, 88, 93, 82, 90, 108, 109, 98,
- 90, 111, 103, 98, 80, 100, 100, 81,
- 82, 89, 93, 80, 94, 107, 109, 96,
- 85, 101, 99, 93, 73, 86, 86, 72,
- 68, 80, 81, 70, 81, 94, 88, 83,
- 73, 87, 86, 75, 61, 70, 72, 59,
-};
-
-static encode_aux_pigeonhole _vq_auxp_lsp9_1 = {
- 0.252, 0.002, 65, 4,
- _vq_pigeonmap_lsp9_1,
- 5401,
- _vq_fitlist_lsp9_1,
- _vq_fitmap_lsp9_1,
- _vq_fitlength_lsp9_1
-};
-
-static static_codebook _vq_book_lsp9_1 = {
- 3, 1728,
- _vq_lengthlist_lsp9_1,
- 1, 1607475397, 1592812110, 7, 1,
- _vq_quantlist_lsp9_1,
- NULL,
- NULL,
- &_vq_auxp_lsp9_1,
- 0
-};
-
-
-#endif
diff --git a/lib/books/res_Zc_3.vqh b/lib/books/res0_128_1024_1.vqh
index b862e0a6..d24bd98f 100644
--- a/lib/books/res_Zc_3.vqh
+++ b/lib/books/res0_128_1024_1.vqh
@@ -14,11 +14,11 @@
********************************************************************/
-#ifndef _V_res_Zc_3_VQH_
-#define _V_res_Zc_3_VQH_
+#ifndef _V_res0_128_1024_1_VQH_
+#define _V_res0_128_1024_1_VQH_
#include "codebook.h"
-static long _vq_quantlist_res_Zc_3[] = {
+static long _vq_quantlist_res0_128_1024_1[] = {
7,
6,
8,
@@ -36,47 +36,47 @@ static long _vq_quantlist_res_Zc_3[] = {
14,
};
-static long _vq_lengthlist_res_Zc_3[] = {
- 1, 5, 5, 7, 7, 8, 8, 9, 9,11,10,12,11,12,13, 0,
- 4, 4, 7, 7, 8, 8, 9, 9,11,11,11,11,12,12, 0, 4,
- 4, 7, 7, 8, 8, 9,10,11,11,12,12,12,13, 0, 7, 7,
- 8, 8, 8, 8,10,10,11,11,12,12,13,13, 0, 0, 0, 8,
- 8, 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 8, 8,
- 9, 9,10,10,12,11,12,12,13,13, 0, 0, 0, 8, 8, 9,
- 9,11,10,12,11,13,13,13,14, 0, 0, 0, 9, 9,10,10,
- 11,11,12,12,12,13,13,14, 0, 0, 0, 0, 0,10,10,12,
- 11,12,12,13,13,14,14, 0, 0, 0, 0, 0,11,11,11,11,
- 12,12,13,13,14,14, 0, 0, 0, 0, 0,11,11,12,12,14,
- 13,15,13,15,15, 0, 0, 0, 0, 0,12,12,12,12,12,13,
- 13,13,15,14, 0, 0, 0, 0, 0, 0, 0,12,12,14,13,14,
- 15,15,16, 0, 0, 0, 0, 0, 0, 0,13,12,13,13,14,14,
- 15,15, 0, 0, 0, 0, 0, 0, 0,13,13,15,14,14,15,16,
- 15,
+static long _vq_lengthlist_res0_128_1024_1[] = {
+ 1, 5, 4, 8, 8,10,10,11,11,13,12,13,13,14,15, 0,
+ 4, 4, 7, 7,10,10,11,11,13,12,14,13,15,14, 0, 4,
+ 4, 7, 7, 9, 9,11,11,12,12,13,14,13,14, 0, 6, 6,
+ 7, 7, 9, 9,11,11,13,12,14,13,14,15, 0, 0, 0, 7,
+ 8, 9, 9,10,10,11,11,12,12,13,14, 0, 0, 0, 9, 9,
+ 9, 9,11,11,12,13,14,14,16,15, 0, 0, 0, 9, 9,10,
+ 10,11,10,11,11,12,12,13,13, 0, 0, 0,11,10,10,10,
+ 11,11,12,12,13,14,16,14, 0, 0, 0, 0, 0,11,11,11,
+ 11,12,12,12,12,13,13, 0, 0, 0, 0, 0,12,12,12,12,
+ 12,12,13,13,14,14, 0, 0, 0, 0, 0,12,12,13,12,13,
+ 13,13,13,13,13, 0, 0, 0, 0, 0,13,14,13,13,13,13,
+ 13,13,14,14, 0, 0, 0, 0, 0, 0, 0,14,13,14,13,14,
+ 15,14,14, 0, 0, 0, 0, 0, 0, 0,14,14,14,14,13,14,
+ 13,14, 0, 0, 0, 0, 0, 0, 0,14,14,15,14,15,16,15,
+ 16,
};
-static float _vq_quantthresh_res_Zc_3[] = {
+static float _vq_quantthresh_res0_128_1024_1[] = {
-6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5,
1.5, 2.5, 3.5, 4.5, 5.5, 6.5,
};
-static long _vq_quantmap_res_Zc_3[] = {
+static long _vq_quantmap_res0_128_1024_1[] = {
13, 11, 9, 7, 5, 3, 1, 0,
2, 4, 6, 8, 10, 12, 14,
};
-static encode_aux_threshmatch _vq_auxt_res_Zc_3 = {
- _vq_quantthresh_res_Zc_3,
- _vq_quantmap_res_Zc_3,
+static encode_aux_threshmatch _vq_auxt_res0_128_1024_1 = {
+ _vq_quantthresh_res0_128_1024_1,
+ _vq_quantmap_res0_128_1024_1,
15,
15
};
-static long _vq_pigeonmap_res_Zc_3[] = {
+static long _vq_pigeonmap_res0_128_1024_1[] = {
4, 3, 3, 2, 1, 1, 0, 0,
0, 1, 2, 2, 3, 4,
};
-static long _vq_fitlist_res_Zc_3[] = {
+static long _vq_fitlist_res0_128_1024_1[] = {
0, 1, 2, 3, 16, 17, 18, 31,
46, 4, 19, 32, 47, 6, 21, 34,
49, 33, 36, 64, 63, 66, 94, 1,
@@ -210,37 +210,37 @@ static long _vq_fitlist_res_Zc_3[] = {
190, 192, 194, 220, 222, 224,
};
-static long _vq_fitmap_res_Zc_3[] = {
+static long _vq_fitmap_res0_128_1024_1[] = {
0, 23, 63, 109, 155, 187, 217, 267,
332, 397, 443, 471, 508, 567, 632, 678,
704, 731, 782, 846, 892, 916, 939, 971,
1014,
};
-static long _vq_fitlength_res_Zc_3[] = {
+static long _vq_fitlength_res0_128_1024_1[] = {
23, 40, 46, 46, 32, 30, 50, 65,
65, 46, 28, 37, 59, 65, 46, 26,
27, 51, 64, 46, 24, 23, 32, 43,
32,
};
-static encode_aux_pigeonhole _vq_auxp_res_Zc_3 = {
+static encode_aux_pigeonhole _vq_auxp_res0_128_1024_1 = {
-7, 1, 14, 5,
- _vq_pigeonmap_res_Zc_3,
+ _vq_pigeonmap_res0_128_1024_1,
1046,
- _vq_fitlist_res_Zc_3,
- _vq_fitmap_res_Zc_3,
- _vq_fitlength_res_Zc_3
+ _vq_fitlist_res0_128_1024_1,
+ _vq_fitmap_res0_128_1024_1,
+ _vq_fitlength_res0_128_1024_1
};
-static static_codebook _vq_book_res_Zc_3 = {
+static static_codebook _vq_book_res0_128_1024_1 = {
2, 225,
- _vq_lengthlist_res_Zc_3,
+ _vq_lengthlist_res0_128_1024_1,
1, -530841600, 1611661312, 4, 0,
- _vq_quantlist_res_Zc_3,
+ _vq_quantlist_res0_128_1024_1,
NULL,
- &_vq_auxt_res_Zc_3,
- &_vq_auxp_res_Zc_3,
+ &_vq_auxt_res0_128_1024_1,
+ &_vq_auxp_res0_128_1024_1,
0
};
diff --git a/lib/books/res0_128_1024_2.vqh b/lib/books/res0_128_1024_2.vqh
new file mode 100644
index 00000000..9c270f5a
--- /dev/null
+++ b/lib/books/res0_128_1024_2.vqh
@@ -0,0 +1,93 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
+ * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
+ * by the XIPHOPHORUS Company, http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128_1024_2_VQH_
+#define _V_res0_128_1024_2_VQH_
+#include "codebook.h"
+
+static long _vq_quantlist_res0_128_1024_2[] = {
+ 1,
+ 0,
+ 2,
+};
+
+static long _vq_lengthlist_res0_128_1024_2[] = {
+ 1, 5, 6, 0, 4, 4, 0, 5, 5, 6,11, 9, 0, 0, 8, 0,
+ 9,10, 6,11, 0, 0,10,10, 0,11, 9, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 9,12, 0,10, 8, 0, 9,12, 4,12,10,
+ 0, 8, 9, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+ 10, 8, 0, 0, 9, 0,10,10, 5, 9, 0, 0, 9,11, 0, 9,
+ 12,
+};
+
+static float _vq_quantthresh_res0_128_1024_2[] = {
+ -0.5, 0.5,
+};
+
+static long _vq_quantmap_res0_128_1024_2[] = {
+ 1, 0, 2,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128_1024_2 = {
+ _vq_quantthresh_res0_128_1024_2,
+ _vq_quantmap_res0_128_1024_2,
+ 3,
+ 3
+};
+
+static long _vq_pigeonmap_res0_128_1024_2[] = {
+ 0, 0,
+};
+
+static long _vq_fitlist_res0_128_1024_2[] = {
+ 0, 1, 2, 4, 5, 7, 8, 9,
+ 10, 11, 14, 16, 17, 18, 19, 22,
+ 23, 25, 26, 36, 37, 38, 40, 41,
+ 43, 44, 45, 46, 47, 49, 50, 52,
+ 53, 63, 64, 65, 68, 70, 71, 72,
+ 73, 76, 77, 79, 80,
+};
+
+static long _vq_fitmap_res0_128_1024_2[] = {
+ 0,
+};
+
+static long _vq_fitlength_res0_128_1024_2[] = {
+ 45,
+};
+
+static encode_aux_pigeonhole _vq_auxp_res0_128_1024_2 = {
+ -1, 1, 2, 1,
+ _vq_pigeonmap_res0_128_1024_2,
+ 45,
+ _vq_fitlist_res0_128_1024_2,
+ _vq_fitmap_res0_128_1024_2,
+ _vq_fitlength_res0_128_1024_2
+};
+
+static static_codebook _vq_book_res0_128_1024_2 = {
+ 4, 81,
+ _vq_lengthlist_res0_128_1024_2,
+ 1, -535822336, 1611661312, 2, 0,
+ _vq_quantlist_res0_128_1024_2,
+ NULL,
+ &_vq_auxt_res0_128_1024_2,
+ &_vq_auxp_res0_128_1024_2,
+ 0
+};
+
+
+#endif
diff --git a/lib/books/res_Zc_1.vqh b/lib/books/res0_128_1024_3.vqh
index 3fe97da8..138c72bf 100644
--- a/lib/books/res_Zc_1.vqh
+++ b/lib/books/res0_128_1024_3.vqh
@@ -14,45 +14,45 @@
********************************************************************/
-#ifndef _V_res_Zc_1_VQH_
-#define _V_res_Zc_1_VQH_
+#ifndef _V_res0_128_1024_3_VQH_
+#define _V_res0_128_1024_3_VQH_
#include "codebook.h"
-static long _vq_quantlist_res_Zc_1[] = {
+static long _vq_quantlist_res0_128_1024_3[] = {
1,
0,
2,
};
-static long _vq_lengthlist_res_Zc_1[] = {
- 1, 6, 6, 0, 5, 5, 0, 5, 5, 5, 8, 8, 0, 9, 8, 0,
- 8, 8, 5, 8, 9, 0, 8, 9, 0, 8, 9, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 5, 9, 8, 0, 8, 7, 0, 7, 8, 5, 8, 9,
- 0, 7, 8, 0, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
- 9, 8, 0, 8, 7, 0, 8, 7, 5, 8, 9, 0, 7, 8, 0, 7,
- 8,
+static long _vq_lengthlist_res0_128_1024_3[] = {
+ 2, 6, 6, 0, 4, 4, 0, 4, 5, 7,10,10, 0, 9, 8, 0,
+ 8, 9, 7,10,10, 0, 8, 9, 0, 9, 7, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 4, 8, 9, 0, 6, 6, 0, 6, 8, 4, 9, 8,
+ 0, 6, 6, 0, 8, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 9, 8, 0, 8, 6, 0, 6, 7, 4, 8, 9, 0, 6, 8, 0, 7,
+ 7,
};
-static float _vq_quantthresh_res_Zc_1[] = {
+static float _vq_quantthresh_res0_128_1024_3[] = {
-0.5, 0.5,
};
-static long _vq_quantmap_res_Zc_1[] = {
+static long _vq_quantmap_res0_128_1024_3[] = {
1, 0, 2,
};
-static encode_aux_threshmatch _vq_auxt_res_Zc_1 = {
- _vq_quantthresh_res_Zc_1,
- _vq_quantmap_res_Zc_1,
+static encode_aux_threshmatch _vq_auxt_res0_128_1024_3 = {
+ _vq_quantthresh_res0_128_1024_3,
+ _vq_quantmap_res0_128_1024_3,
3,
3
};
-static long _vq_pigeonmap_res_Zc_1[] = {
+static long _vq_pigeonmap_res0_128_1024_3[] = {
0, 0,
};
-static long _vq_fitlist_res_Zc_1[] = {
+static long _vq_fitlist_res0_128_1024_3[] = {
0, 1, 2, 4, 5, 7, 8, 9,
10, 11, 13, 14, 16, 17, 18, 19,
20, 22, 23, 25, 26, 36, 37, 38,
@@ -62,31 +62,31 @@ static long _vq_fitlist_res_Zc_1[] = {
80,
};
-static long _vq_fitmap_res_Zc_1[] = {
+static long _vq_fitmap_res0_128_1024_3[] = {
0,
};
-static long _vq_fitlength_res_Zc_1[] = {
+static long _vq_fitlength_res0_128_1024_3[] = {
49,
};
-static encode_aux_pigeonhole _vq_auxp_res_Zc_1 = {
+static encode_aux_pigeonhole _vq_auxp_res0_128_1024_3 = {
-1, 1, 2, 1,
- _vq_pigeonmap_res_Zc_1,
+ _vq_pigeonmap_res0_128_1024_3,
49,
- _vq_fitlist_res_Zc_1,
- _vq_fitmap_res_Zc_1,
- _vq_fitlength_res_Zc_1
+ _vq_fitlist_res0_128_1024_3,
+ _vq_fitmap_res0_128_1024_3,
+ _vq_fitlength_res0_128_1024_3
};
-static static_codebook _vq_book_res_Zc_1 = {
+static static_codebook _vq_book_res0_128_1024_3 = {
4, 81,
- _vq_lengthlist_res_Zc_1,
+ _vq_lengthlist_res0_128_1024_3,
1, -535822336, 1611661312, 2, 0,
- _vq_quantlist_res_Zc_1,
+ _vq_quantlist_res0_128_1024_3,
NULL,
- &_vq_auxt_res_Zc_1,
- &_vq_auxp_res_Zc_1,
+ &_vq_auxt_res0_128_1024_3,
+ &_vq_auxp_res0_128_1024_3,
0
};
diff --git a/lib/books/res0_128_1024_4.vqh b/lib/books/res0_128_1024_4.vqh
new file mode 100644
index 00000000..15988b1b
--- /dev/null
+++ b/lib/books/res0_128_1024_4.vqh
@@ -0,0 +1,148 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
+ * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
+ * by the XIPHOPHORUS Company, http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128_1024_4_VQH_
+#define _V_res0_128_1024_4_VQH_
+#include "codebook.h"
+
+static long _vq_quantlist_res0_128_1024_4[] = {
+ 2,
+ 1,
+ 3,
+ 0,
+ 4,
+};
+
+static long _vq_lengthlist_res0_128_1024_4[] = {
+ 1, 7, 6, 0,13, 0, 5, 5,10,10, 0, 5, 5,10,10, 0,
+ 6, 6, 8, 8, 0, 0, 0,10, 9, 7,11,11,12, 0, 0,11,
+ 10,13, 0, 0, 9,11,13, 0, 0,13, 9, 0, 0, 0, 0, 0,
+ 11, 0, 7,10,12,11, 0, 0, 9,13,12, 0, 0,11,11,12,
+ 10, 0, 9,11,13,13, 0, 0, 0, 0,11,11, 0, 0, 0, 0,
+ 0, 0,13, 0, 0, 0, 0, 0,13, 0, 0, 0, 0, 0,13, 0,
+ 0, 0,12, 0, 0,12,12, 0,13, 0, 0, 0, 0, 0, 0, 0,
+ 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, 5,10,11, 0, 0, 0, 9, 8,12,11,
+ 0,11,12,11,12, 0,10, 8,11,10, 0, 0, 0,10, 0, 5,
+ 10, 9, 0,13, 0, 8, 9, 0,12, 0,11, 9, 0, 9, 0, 9,
+ 11, 0,11, 0, 0, 0, 0,11,10, 0, 0, 0, 0, 0, 0,12,
+ 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 0,
+ 0,10, 0,11, 0, 0, 0, 0,11, 0, 0, 0, 0,11, 0,12,
+ 0,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, 5,11, 9, 0,12, 0,11,10,12,12, 0, 9, 9,
+ 0,11, 0,11, 9,12, 0, 0, 0, 0,11, 0, 5,10,10,11,
+ 0, 0, 9,10,11, 0, 0,10,10,11, 0, 0, 9,10,11,12,
+ 0, 0, 0,12,11, 9,11,10, 0, 0, 0, 0,10, 0, 0, 0,
+ 10,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0,10,10,
+ 0, 0, 0, 0,11, 0, 0, 0, 0, 0,11, 0, 0, 0,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,
+ 6, 8,11, 0, 0, 0, 9,11, 0, 0, 0, 8,10,12, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,11, 9, 0, 0, 0,11,
+ 8, 0, 0, 0,10, 9, 0,12, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 8,12, 0, 0, 0, 0, 0,11, 0, 0, 0,12, 0, 0,
+ 0, 0,12,12, 0,11, 0, 0, 0, 0, 0, 8,12, 0, 0, 0,
+ 0,11,10, 0, 0, 0, 0,11, 0, 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, 9,
+ 0,11, 0, 0, 0, 0,11, 0, 0, 0,12, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 9,11, 0, 0, 0, 0,11, 0,
+ 0, 0, 0,11,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+static float _vq_quantthresh_res0_128_1024_4[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0_128_1024_4[] = {
+ 3, 1, 0, 2, 4,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128_1024_4 = {
+ _vq_quantthresh_res0_128_1024_4,
+ _vq_quantmap_res0_128_1024_4,
+ 5,
+ 5
+};
+
+static long _vq_pigeonmap_res0_128_1024_4[] = {
+ 1, 0, 0, 0,
+};
+
+static long _vq_fitlist_res0_128_1024_4[] = {
+ 0, 1, 2, 6, 7, 8, 11, 12,
+ 13, 16, 17, 18, 25, 26, 27, 28,
+ 31, 32, 33, 36, 37, 38, 41, 42,
+ 50, 51, 52, 53, 56, 57, 58, 61,
+ 62, 63, 66, 67, 68, 75, 82, 88,
+ 150, 151, 152, 156, 157, 158, 161, 162,
+ 163, 166, 167, 168, 175, 176, 177, 181,
+ 182, 186, 187, 191, 192, 200, 207, 211,
+ 217, 275, 276, 277, 281, 282, 283, 286,
+ 287, 291, 292, 293, 300, 301, 302, 303,
+ 306, 307, 308, 311, 316, 325, 326, 327,
+ 332, 336, 400, 401, 402, 406, 407, 411,
+ 412, 413, 425, 426, 427, 431, 432, 436,
+ 450, 451, 457, 461, 466, 4, 9, 14,
+ 19, 64, 69, 94, 159, 164, 169, 179,
+ 184, 189, 194, 279, 284, 289, 312, 317,
+ 337, 437, 467, 319, 439, 469, 23, 48,
+ 98, 173, 298, 313, 24, 74, 199, 324,
+ 323, 348, 101, 102, 112, 225, 227, 232,
+ 237, 241, 318, 350, 351, 356, 366, 475,
+ 476, 481, 482, 104, 239, 362, 487, 492,
+ 493, 575, 577, 582, 586, 600, 601, 606,
+ 611, 612,
+};
+
+static long _vq_fitmap_res0_128_1024_4[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static long _vq_fitlength_res0_128_1024_4[] = {
+ 178, 178, 178, 178, 178, 178, 178, 178,
+ 178, 178, 178, 178, 178, 178, 178, 178,
+};
+
+static encode_aux_pigeonhole _vq_auxp_res0_128_1024_4 = {
+ -2, 1, 4, 2,
+ _vq_pigeonmap_res0_128_1024_4,
+ 178,
+ _vq_fitlist_res0_128_1024_4,
+ _vq_fitmap_res0_128_1024_4,
+ _vq_fitlength_res0_128_1024_4
+};
+
+static static_codebook _vq_book_res0_128_1024_4 = {
+ 4, 625,
+ _vq_lengthlist_res0_128_1024_4,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0_128_1024_4,
+ NULL,
+ &_vq_auxt_res0_128_1024_4,
+ &_vq_auxp_res0_128_1024_4,
+ 0
+};
+
+
+#endif
diff --git a/lib/books/res0_128_1024_5.vqh b/lib/books/res0_128_1024_5.vqh
new file mode 100644
index 00000000..5d351c50
--- /dev/null
+++ b/lib/books/res0_128_1024_5.vqh
@@ -0,0 +1,268 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
+ * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
+ * by the XIPHOPHORUS Company, http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128_1024_5_VQH_
+#define _V_res0_128_1024_5_VQH_
+#include "codebook.h"
+
+static long _vq_quantlist_res0_128_1024_5[] = {
+ 2,
+ 1,
+ 3,
+ 0,
+ 4,
+};
+
+static long _vq_lengthlist_res0_128_1024_5[] = {
+ 2, 7, 6,14,14, 0, 5, 5,11,11, 0, 5, 5,10,10, 0,
+ 6, 6, 9, 9, 0, 0, 0, 9, 9, 7, 9, 9,15,13, 0, 9,
+ 8,13,12, 0, 8, 9,11,12, 0,11, 9,13,11, 0, 0, 0,
+ 10,13, 6, 9, 9,14,15, 0, 8, 9,12,13, 0, 9, 8,12,
+ 11, 0, 9,11,11,13, 0, 0, 0,12,10,13,13,14, 0, 0,
+ 0,14,14, 0,16, 0,13,14,15,17, 0,17,14, 0,17, 0,
+ 0, 0,14,17,13,15,15, 0,16, 0,13,16, 0, 0, 0,15,
+ 13, 0,14, 0,14, 0,14, 0, 0, 0, 0, 0,16, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5, 8, 9,13,15, 0, 6, 6,11,13,
+ 0, 6, 8,10,13, 0, 9, 8,10,10, 0, 0, 0,10,12, 5,
+ 9, 8,16,13, 0, 6, 6,12,11, 0, 8, 6,13,10, 0, 8,
+ 9,10,10, 0, 0, 0,12,10,10,13,13, 0, 0, 0,12,11,
+ 15,17, 0,11,13,13, 0, 0,16,12,15,14, 0, 0, 0,14,
+ 16,11,13,12, 0,15, 0,11,13,17,14, 0,13,11,16,14,
+ 0,12,14,14,15, 0, 0, 0,16,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, 9, 8,17,13, 0, 8, 6,13,11, 0, 7, 6,
+ 11,10, 0, 9, 8,13,10, 0, 0, 0,10,10, 5, 8, 9,13,
+ 15, 0, 6, 7,11,13, 0, 6, 7,10,12, 0, 8, 9,10,12,
+ 0, 0, 0,10,10,10,12,11, 0,14, 0,13,10,17,14, 0,
+ 10,11,13,14, 0,15,11, 0,13, 0, 0, 0,12,15,10,11,
+ 12,14, 0, 0,10,13,13,15, 0,11,10,13,14, 0,11,17,
+ 14,16, 0, 0, 0,16,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, 9,11,14,17, 0, 8, 9,12,15, 0, 8, 9,11,17, 0,
+ 10,10,12,14, 0, 0, 0,11,14, 6,11, 9,17,14, 0, 8,
+ 8,15,12, 0, 9, 8,15,11, 0,10,10,14,12, 0, 0, 0,
+ 13,11, 9,12,12,15, 0, 0,10,10,13,16, 0,10,12,14,
+ 16, 0,13,11,13,13, 0, 0, 0,13, 0, 9,12,11, 0,15,
+ 0, 9,10,14,14, 0,12,10,17,13, 0,11,12,12,13, 0,
+ 0, 0,16,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, 9,
+ 13,11, 0,14, 0,12,10, 0,13, 0,10,10,14,12, 0,13,
+ 11, 0,14, 0, 0, 0,13,12, 9,10,13,14, 0, 0,10,11,
+ 13,17, 0,10,10,12,15, 0,11,13,14,16, 0, 0, 0,12,
+ 12,
+};
+
+static float _vq_quantthresh_res0_128_1024_5[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0_128_1024_5[] = {
+ 3, 1, 0, 2, 4,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128_1024_5 = {
+ _vq_quantthresh_res0_128_1024_5,
+ _vq_quantmap_res0_128_1024_5,
+ 5,
+ 5
+};
+
+static long _vq_pigeonmap_res0_128_1024_5[] = {
+ 1, 0, 0, 0,
+};
+
+static long _vq_fitlist_res0_128_1024_5[] = {
+ 0, 1, 2, 3, 6, 7, 8, 11,
+ 12, 13, 16, 17, 18, 25, 26, 27,
+ 28, 31, 32, 33, 36, 37, 38, 41,
+ 42, 43, 50, 51, 52, 53, 56, 57,
+ 58, 61, 62, 63, 66, 67, 68, 75,
+ 76, 77, 81, 82, 86, 87, 88, 91,
+ 92, 150, 151, 152, 153, 156, 157, 158,
+ 161, 162, 163, 166, 167, 168, 175, 176,
+ 177, 178, 181, 182, 183, 186, 187, 188,
+ 191, 192, 193, 200, 201, 202, 206, 207,
+ 208, 211, 212, 213, 216, 217, 218, 275,
+ 276, 277, 278, 281, 282, 283, 286, 287,
+ 288, 291, 292, 293, 300, 301, 302, 303,
+ 306, 307, 308, 311, 316, 325, 326, 327,
+ 331, 332, 333, 336, 341, 400, 401, 402,
+ 403, 406, 407, 408, 411, 412, 413, 416,
+ 417, 418, 425, 426, 427, 428, 431, 432,
+ 433, 436, 441, 450, 451, 452, 453, 456,
+ 457, 458, 461, 466, 4, 9, 14, 19,
+ 29, 34, 39, 44, 54, 59, 64, 69,
+ 84, 89, 94, 154, 159, 164, 169, 179,
+ 184, 189, 194, 209, 219, 279, 284, 289,
+ 294, 304, 309, 312, 317, 329, 334, 337,
+ 342, 404, 409, 414, 419, 429, 434, 437,
+ 442, 459, 462, 467, 314, 319, 339, 344,
+ 439, 444, 464, 469, 23, 48, 73, 98,
+ 173, 198, 223, 298, 313, 338, 423, 438,
+ 463, 24, 49, 74, 99, 174, 199, 224,
+ 299, 424, 324, 349, 449, 323, 348, 448,
+ 473, 100, 101, 102, 106, 107, 111, 112,
+ 116, 118, 225, 226, 227, 231, 232, 233,
+ 236, 237, 238, 241, 242, 243, 318, 350,
+ 351, 352, 353, 356, 357, 358, 361, 366,
+ 443, 475, 476, 477, 481, 482, 483, 486,
+ 491, 104, 114, 229, 234, 239, 244, 359,
+ 362, 367, 479, 484, 487, 492, 364, 369,
+ 489, 494, 248, 363, 488, 124, 249, 374,
+ 499, 373, 498, 368, 493, 575, 576, 577,
+ 581, 582, 586, 591, 579, 584, 587, 592,
+ 589, 594, 588, 599, 598, 600, 601, 602,
+ 603, 606, 607, 608, 611, 616, 609, 612,
+ 617, 614, 619, 613, 624, 623, 618, 0,
+ 1, 3, 6, 8, 11, 13, 16, 18,
+ 25, 26, 28, 31, 33, 36, 38, 41,
+ 43, 50, 51, 53, 56, 58, 61, 63,
+ 66, 68, 75, 76, 81, 86, 88, 91,
+ 150, 151, 153, 156, 158, 161, 163, 166,
+ 168, 175, 176, 178, 181, 183, 186, 188,
+ 191, 193, 200, 201, 206, 208, 211, 213,
+ 216, 218, 275, 276, 278, 281, 283, 286,
+ 288, 291, 293, 300, 301, 303, 306, 308,
+ 311, 313, 316, 318, 325, 326, 331, 333,
+ 336, 338, 341, 400, 401, 403, 406, 408,
+ 411, 413, 416, 418, 425, 426, 428, 431,
+ 433, 436, 438, 441, 443, 450, 451, 453,
+ 456, 458, 461, 463, 466, 468, 23, 48,
+ 73, 98, 173, 198, 223, 298, 323, 348,
+ 423, 448, 473, 100, 101, 106, 111, 116,
+ 118, 225, 226, 231, 233, 236, 238, 241,
+ 243, 350, 351, 353, 356, 358, 361, 363,
+ 366, 368, 475, 476, 481, 483, 486, 488,
+ 491, 493, 248, 373, 498, 575, 576, 581,
+ 586, 588, 591, 598, 600, 601, 603, 606,
+ 608, 611, 613, 616, 618, 623, 0, 1,
+ 2, 3, 6, 7, 8, 16, 17, 18,
+ 25, 26, 27, 28, 31, 32, 33, 41,
+ 42, 43, 50, 51, 52, 53, 56, 57,
+ 58, 66, 67, 68, 75, 76, 77, 81,
+ 82, 91, 92, 150, 151, 152, 153, 156,
+ 157, 158, 166, 167, 168, 175, 176, 177,
+ 178, 181, 182, 183, 191, 192, 193, 200,
+ 201, 202, 206, 207, 208, 216, 217, 218,
+ 275, 276, 277, 278, 281, 282, 283, 291,
+ 292, 293, 300, 301, 306, 307, 308, 316,
+ 317, 318, 325, 326, 331, 332, 333, 341,
+ 342, 400, 401, 402, 403, 406, 407, 408,
+ 416, 417, 418, 425, 426, 431, 432, 433,
+ 441, 442, 443, 450, 451, 456, 457, 458,
+ 466, 467, 468, 4, 9, 19, 29, 34,
+ 44, 54, 59, 69, 84, 94, 154, 159,
+ 169, 179, 184, 194, 209, 219, 279, 284,
+ 294, 302, 309, 319, 327, 334, 344, 404,
+ 409, 419, 427, 434, 444, 452, 459, 469,
+ 304, 329, 429, 100, 101, 102, 106, 107,
+ 116, 118, 225, 226, 227, 231, 232, 233,
+ 241, 242, 243, 303, 350, 351, 356, 357,
+ 358, 366, 367, 368, 428, 475, 476, 481,
+ 482, 483, 491, 492, 493, 104, 229, 234,
+ 244, 352, 359, 369, 477, 484, 494, 479,
+ 353, 575, 576, 581, 582, 591, 592, 577,
+ 584, 594, 579, 600, 601, 606, 607, 608,
+ 616, 617, 618, 602, 609, 619, 603, 0,
+ 1, 2, 3, 6, 7, 8, 11, 12,
+ 13, 16, 17, 18, 25, 26, 27, 28,
+ 31, 32, 33, 36, 37, 38, 41, 42,
+ 43, 75, 76, 77, 81, 82, 86, 87,
+ 88, 91, 92, 150, 151, 152, 153, 156,
+ 157, 158, 161, 162, 163, 166, 167, 168,
+ 200, 201, 202, 206, 207, 208, 211, 212,
+ 213, 216, 217, 218, 275, 276, 277, 278,
+ 281, 282, 283, 286, 287, 288, 291, 292,
+ 293, 325, 326, 327, 331, 332, 333, 336,
+ 337, 338, 341, 342, 400, 401, 402, 403,
+ 406, 407, 408, 411, 412, 413, 416, 417,
+ 418, 450, 451, 452, 453, 456, 457, 458,
+ 461, 462, 463, 466, 467, 468, 4, 9,
+ 14, 19, 29, 34, 39, 44, 84, 89,
+ 94, 154, 159, 164, 169, 209, 219, 279,
+ 284, 289, 294, 329, 334, 339, 344, 404,
+ 409, 414, 419, 459, 464, 469, 23, 48,
+ 98, 173, 223, 298, 348, 423, 473, 24,
+ 49, 99, 174, 224, 299, 349, 424, 575,
+ 576, 577, 581, 582, 586, 587, 588, 591,
+ 592, 579, 584, 589, 594, 598, 599, 0,
+ 1, 2, 3, 6, 7, 8, 11, 12,
+ 13, 16, 17, 18, 25, 26, 27, 28,
+ 31, 32, 33, 36, 37, 38, 41, 42,
+ 43, 50, 51, 52, 53, 56, 57, 58,
+ 61, 66, 75, 76, 77, 81, 82, 86,
+ 91, 150, 151, 152, 153, 156, 157, 158,
+ 161, 162, 163, 166, 167, 168, 175, 176,
+ 177, 178, 181, 182, 183, 186, 187, 188,
+ 191, 192, 193, 200, 201, 202, 206, 207,
+ 208, 211, 212, 213, 216, 217, 218, 400,
+ 401, 402, 403, 406, 407, 408, 411, 412,
+ 413, 416, 417, 418, 425, 426, 427, 428,
+ 431, 432, 433, 436, 437, 438, 441, 442,
+ 443, 450, 451, 452, 453, 456, 457, 458,
+ 461, 462, 463, 466, 467, 468, 4, 9,
+ 14, 19, 29, 34, 39, 44, 54, 59,
+ 62, 67, 84, 87, 92, 154, 159, 164,
+ 169, 179, 184, 189, 194, 209, 219, 404,
+ 409, 414, 419, 429, 434, 439, 444, 459,
+ 464, 469, 64, 69, 89, 94, 23, 48,
+ 63, 88, 173, 198, 223, 423, 448, 473,
+ 24, 49, 174, 199, 224, 424, 449, 74,
+ 99, 73, 98, 68, 100, 101, 102, 106,
+ 107, 111, 116, 225, 226, 227, 231, 232,
+ 233, 236, 237, 238, 241, 242, 243, 475,
+ 476, 477, 481, 482, 483, 486, 487, 488,
+ 491, 492, 493, 104, 112, 229, 234, 239,
+ 244, 479, 484, 489, 494, 114, 248, 498,
+ 249, 499, 124, 118,
+};
+
+static long _vq_fitmap_res0_128_1024_5[] = {
+ 0, 335, 510, 335, 735, 335, 735, 335,
+ 911, 335, 911, 335, 735, 335, 735, 335,
+};
+
+static long _vq_fitlength_res0_128_1024_5[] = {
+ 335, 175, 225, 175, 176, 175, 176, 175,
+ 229, 175, 229, 175, 176, 175, 176, 175,
+};
+
+static encode_aux_pigeonhole _vq_auxp_res0_128_1024_5 = {
+ -2, 1, 4, 2,
+ _vq_pigeonmap_res0_128_1024_5,
+ 1140,
+ _vq_fitlist_res0_128_1024_5,
+ _vq_fitmap_res0_128_1024_5,
+ _vq_fitlength_res0_128_1024_5
+};
+
+static static_codebook _vq_book_res0_128_1024_5 = {
+ 4, 625,
+ _vq_lengthlist_res0_128_1024_5,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0_128_1024_5,
+ NULL,
+ &_vq_auxt_res0_128_1024_5,
+ &_vq_auxp_res0_128_1024_5,
+ 0
+};
+
+
+#endif
diff --git a/lib/books/res0_128_1024_6.vqh b/lib/books/res0_128_1024_6.vqh
new file mode 100644
index 00000000..ae0c7ebf
--- /dev/null
+++ b/lib/books/res0_128_1024_6.vqh
@@ -0,0 +1,137 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
+ * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
+ * by the XIPHOPHORUS Company, http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128_1024_6_VQH_
+#define _V_res0_128_1024_6_VQH_
+#include "codebook.h"
+
+static long _vq_quantlist_res0_128_1024_6[] = {
+ 2,
+ 1,
+ 3,
+ 0,
+ 4,
+};
+
+static long _vq_lengthlist_res0_128_1024_6[] = {
+ 1, 6, 6, 0,12, 5, 5, 5, 0,12, 0, 5, 4,10,10, 0,
+ 12,12,12,11, 0,12, 0, 0,12, 6,10, 9, 0, 0,10,12,
+ 9, 0, 0, 0, 9,10,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 12, 0, 7, 9,10, 0, 0,10, 9,11, 0, 0, 0,11, 7, 0,
+ 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,12, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 9, 9,
+ 0, 0, 9,10, 9, 0, 0, 0,10, 9,12, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5, 9,12, 0, 0, 9, 9, 8, 0, 0,
+ 0,10,12,12, 0, 0, 0,12, 0, 0, 0, 0, 0, 0, 0, 5,
+ 12, 8, 0, 0,11,10,10, 0, 0, 0, 0, 9, 0,12, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,10, 7, 0,12, 9,12, 9, 0, 0, 0, 9,10,
+ 0,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 0, 0,
+ 0, 9, 9,12, 0, 0, 0, 9, 9,12, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 9, 0,10, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,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,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,10,
+ 0,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,
+};
+
+static float _vq_quantthresh_res0_128_1024_6[] = {
+ -4.5, -1.5, 1.5, 4.5,
+};
+
+static long _vq_quantmap_res0_128_1024_6[] = {
+ 3, 1, 0, 2, 4,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128_1024_6 = {
+ _vq_quantthresh_res0_128_1024_6,
+ _vq_quantmap_res0_128_1024_6,
+ 5,
+ 5
+};
+
+static long _vq_pigeonmap_res0_128_1024_6[] = {
+ 1, 0, 0, 0,
+};
+
+static long _vq_fitlist_res0_128_1024_6[] = {
+ 0, 1, 2, 5, 6, 7, 11, 12,
+ 13, 16, 17, 18, 25, 26, 27, 30,
+ 31, 32, 36, 37, 38, 50, 51, 52,
+ 55, 56, 57, 61, 62, 77, 125, 126,
+ 127, 130, 131, 132, 136, 137, 138, 150,
+ 151, 152, 155, 156, 157, 161, 162, 163,
+ 167, 175, 176, 177, 180, 181, 182, 187,
+ 200, 275, 276, 277, 280, 281, 282, 286,
+ 287, 300, 301, 305, 306, 307, 311, 325,
+ 327, 427, 4, 9, 14, 19, 64, 189,
+ 279, 289, 312, 21, 48, 313, 24, 100,
+ 105, 350, 351, 575, 577,
+};
+
+static long _vq_fitmap_res0_128_1024_6[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static long _vq_fitlength_res0_128_1024_6[] = {
+ 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 93, 93, 93, 93,
+};
+
+static encode_aux_pigeonhole _vq_auxp_res0_128_1024_6 = {
+ -6, 3, 4, 2,
+ _vq_pigeonmap_res0_128_1024_6,
+ 93,
+ _vq_fitlist_res0_128_1024_6,
+ _vq_fitmap_res0_128_1024_6,
+ _vq_fitlength_res0_128_1024_6
+};
+
+static static_codebook _vq_book_res0_128_1024_6 = {
+ 4, 625,
+ _vq_lengthlist_res0_128_1024_6,
+ 1, -531103744, 1614282752, 3, 0,
+ _vq_quantlist_res0_128_1024_6,
+ NULL,
+ &_vq_auxt_res0_128_1024_6,
+ &_vq_auxp_res0_128_1024_6,
+ 0
+};
+
+
+#endif
diff --git a/lib/books/res0_128_1024_7.vqh b/lib/books/res0_128_1024_7.vqh
new file mode 100644
index 00000000..163b8e6b
--- /dev/null
+++ b/lib/books/res0_128_1024_7.vqh
@@ -0,0 +1,150 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
+ * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
+ * by the XIPHOPHORUS Company, http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128_1024_7_VQH_
+#define _V_res0_128_1024_7_VQH_
+#include "codebook.h"
+
+static long _vq_quantlist_res0_128_1024_7[] = {
+ 2,
+ 1,
+ 3,
+ 0,
+ 4,
+};
+
+static long _vq_lengthlist_res0_128_1024_7[] = {
+ 1, 6, 7,14, 0, 4, 5, 6, 0, 0, 0, 5, 5,10,11, 0,
+ 13,12,11,11, 0,12,11,10,11, 6,11,11, 0, 0, 9,11,
+ 9, 0, 0, 0, 8,10,13, 0, 0, 0,13, 0,13, 0, 0,14,
+ 14, 0, 6,10,11, 0,14, 9, 9,11, 0, 0, 0,10, 9, 0,
+ 13, 0, 0,13,13, 0, 0, 0, 0, 0,13, 0,14, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,14, 0, 0,14, 0, 0, 0, 0, 0, 0,
+ 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 9,
+ 0, 0, 8, 8, 9, 0, 0, 0, 8, 8,14,14, 0,14,14,13,
+ 0, 0,14,12,13,12, 6,10,11, 0, 0, 9, 9, 9,14, 0,
+ 0, 9,11,14, 0, 0, 0,12,14,13, 0,14,14,13, 0, 6,
+ 11,10, 0, 0, 8, 9, 9, 0, 0, 0,11, 9, 0, 0, 0,13,
+ 14,13,14, 0, 0,14, 0,14,13, 0,14, 0, 0, 0, 0,14,
+ 0, 0, 0,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,12, 0, 0, 0, 0,14,14, 0, 0, 0, 0, 0,14, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5,11, 8, 0, 0, 8,12, 9, 0, 0, 0, 9, 8,
+ 0,12, 0, 0, 0, 0, 0, 0,13,13, 0,12, 5, 8,10,14,
+ 0, 8, 9,11,14, 0, 0, 8, 9,14, 0, 0, 0, 0, 0, 0,
+ 0,14,14,13, 0,11, 0,12, 0, 0,13, 0,13, 0,14, 0,
+ 13,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,
+ 13,14, 0,13, 0,14, 0, 0, 0,14, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 11,13, 0, 0, 0, 0,14,14, 0, 0, 0,13, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0,14, 0, 0,12,13,
+ 13, 0,14, 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,12, 0, 0, 0, 0,14,13,13, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,13, 0, 0, 0, 0, 0,11, 0,13, 0, 0,
+ 14,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14, 0, 0,
+ 0,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,14,11,
+ 0, 0,14, 0,14, 0, 0, 0,13,12, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,11,13, 0, 0, 0,13,14, 0, 0, 0,
+ 0,14,14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,
+ 0, 0, 0, 0, 0,14,14, 0, 0, 0, 0,13, 0,14, 0, 0,
+ 0, 0, 0, 0,14,14, 0, 0,11,12,14, 0, 0,14, 0, 0,
+ 0, 0, 0,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+
+static float _vq_quantthresh_res0_128_1024_7[] = {
+ -4.5, -1.5, 1.5, 4.5,
+};
+
+static long _vq_quantmap_res0_128_1024_7[] = {
+ 3, 1, 0, 2, 4,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128_1024_7 = {
+ _vq_quantthresh_res0_128_1024_7,
+ _vq_quantmap_res0_128_1024_7,
+ 5,
+ 5
+};
+
+static long _vq_pigeonmap_res0_128_1024_7[] = {
+ 1, 0, 0, 0,
+};
+
+static long _vq_fitlist_res0_128_1024_7[] = {
+ 0, 1, 2, 3, 5, 6, 7, 11,
+ 12, 13, 16, 17, 18, 25, 26, 27,
+ 30, 31, 32, 36, 37, 38, 42, 50,
+ 51, 52, 55, 56, 57, 61, 62, 67,
+ 68, 76, 125, 126, 127, 130, 131, 132,
+ 136, 137, 138, 141, 142, 143, 150, 151,
+ 152, 155, 156, 157, 158, 161, 162, 163,
+ 167, 168, 175, 176, 177, 180, 181, 182,
+ 186, 187, 191, 192, 193, 200, 202, 207,
+ 211, 275, 276, 277, 280, 281, 282, 286,
+ 287, 300, 301, 302, 303, 305, 306, 307,
+ 308, 311, 325, 327, 330, 332, 336, 400,
+ 401, 406, 407, 411, 425, 427, 430, 431,
+ 432, 436, 450, 455, 456, 457, 14, 19,
+ 44, 54, 64, 139, 169, 194, 289, 312,
+ 334, 337, 434, 437, 469, 21, 22, 23,
+ 47, 48, 146, 147, 148, 171, 172, 173,
+ 197, 296, 297, 313, 321, 24, 74, 149,
+ 199, 299, 322, 323, 102, 105, 112, 225,
+ 230, 231, 237, 350, 351, 352, 353, 355,
+ 357, 361, 475, 477, 480, 481, 372, 497,
+ 493, 525, 526, 527, 530, 532, 536, 537,
+ 550, 551, 555, 556, 561, 575, 581, 582,
+ 562, 587, 589, 596, 597, 600, 601, 602,
+ 605, 611,
+};
+
+static long _vq_fitmap_res0_128_1024_7[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static long _vq_fitlength_res0_128_1024_7[] = {
+ 194, 194, 194, 194, 194, 194, 194, 194,
+ 194, 194, 194, 194, 194, 194, 194, 194,
+};
+
+static encode_aux_pigeonhole _vq_auxp_res0_128_1024_7 = {
+ -6, 3, 4, 2,
+ _vq_pigeonmap_res0_128_1024_7,
+ 194,
+ _vq_fitlist_res0_128_1024_7,
+ _vq_fitmap_res0_128_1024_7,
+ _vq_fitlength_res0_128_1024_7
+};
+
+static static_codebook _vq_book_res0_128_1024_7 = {
+ 4, 625,
+ _vq_lengthlist_res0_128_1024_7,
+ 1, -531103744, 1614282752, 3, 0,
+ _vq_quantlist_res0_128_1024_7,
+ NULL,
+ &_vq_auxt_res0_128_1024_7,
+ &_vq_auxp_res0_128_1024_7,
+ 0
+};
+
+
+#endif
diff --git a/lib/books/res_Zc_9b.vqh b/lib/books/res0_128_1024_7a.vqh
index 38f4d97e..d48b87a7 100644
--- a/lib/books/res_Zc_9b.vqh
+++ b/lib/books/res0_128_1024_7a.vqh
@@ -14,47 +14,47 @@
********************************************************************/
-#ifndef _V_res_Zc_9b_VQH_
-#define _V_res_Zc_9b_VQH_
+#ifndef _V_res0_128_1024_7a_VQH_
+#define _V_res0_128_1024_7a_VQH_
#include "codebook.h"
-static long _vq_quantlist_res_Zc_9b[] = {
+static long _vq_quantlist_res0_128_1024_7a[] = {
1,
0,
2,
};
-static long _vq_lengthlist_res_Zc_9b[] = {
- 5, 6, 6, 7, 6, 6, 7, 6, 7, 6, 6, 6, 7, 6, 6, 7,
- 6, 7, 6, 6, 6, 7, 7, 7, 7, 6, 6, 7, 7, 7, 7, 7,
- 7, 7, 7, 8, 6, 6, 6, 7, 7, 6, 7, 6, 6, 6, 6, 6,
- 7, 6, 6, 7, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6,
- 6, 6, 7, 6, 6, 8, 5, 6, 6, 6, 6, 6, 7, 6, 7, 6,
- 6,
+static long _vq_lengthlist_res0_128_1024_7a[] = {
+ 3, 6, 6, 9, 5, 5,10, 5, 5, 6, 8, 8,10, 7, 7,11,
+ 6, 7, 6, 8, 8, 9, 7, 7,10, 7, 7, 9,10,10,12, 9,
+ 9,11, 9, 9, 5, 7, 7, 9, 6, 6,10, 6, 6, 5, 7, 7,
+ 10, 6, 6,10, 6, 6,10,10,11,13,10, 9,13,10,10, 4,
+ 7, 6, 9, 6, 6, 9, 5, 5, 4, 6, 7, 9, 6, 6,10, 6,
+ 5,
};
-static float _vq_quantthresh_res_Zc_9b[] = {
+static float _vq_quantthresh_res0_128_1024_7a[] = {
-0.5, 0.5,
};
-static long _vq_quantmap_res_Zc_9b[] = {
+static long _vq_quantmap_res0_128_1024_7a[] = {
1, 0, 2,
};
-static encode_aux_threshmatch _vq_auxt_res_Zc_9b = {
- _vq_quantthresh_res_Zc_9b,
- _vq_quantmap_res_Zc_9b,
+static encode_aux_threshmatch _vq_auxt_res0_128_1024_7a = {
+ _vq_quantthresh_res0_128_1024_7a,
+ _vq_quantmap_res0_128_1024_7a,
3,
3
};
-static static_codebook _vq_book_res_Zc_9b = {
+static static_codebook _vq_book_res0_128_1024_7a = {
4, 81,
- _vq_lengthlist_res_Zc_9b,
+ _vq_lengthlist_res0_128_1024_7a,
1, -535822336, 1611661312, 2, 0,
- _vq_quantlist_res_Zc_9b,
+ _vq_quantlist_res0_128_1024_7a,
NULL,
- &_vq_auxt_res_Zc_9b,
+ &_vq_auxt_res0_128_1024_7a,
NULL,
0
};
diff --git a/lib/books/res0_128_1024_8.vqh b/lib/books/res0_128_1024_8.vqh
new file mode 100644
index 00000000..7367e89e
--- /dev/null
+++ b/lib/books/res0_128_1024_8.vqh
@@ -0,0 +1,136 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
+ * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
+ * by the XIPHOPHORUS Company, http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128_1024_8_VQH_
+#define _V_res0_128_1024_8_VQH_
+#include "codebook.h"
+
+static long _vq_quantlist_res0_128_1024_8[] = {
+ 4,
+ 3,
+ 5,
+ 2,
+ 6,
+ 1,
+ 7,
+ 0,
+ 8,
+};
+
+static long _vq_lengthlist_res0_128_1024_8[] = {
+ 1, 4, 4, 7, 7, 9,10,11,11, 5, 4, 4, 7, 7,10,10,
+ 11,11, 6, 5, 5, 7, 6, 9, 9,10,10, 0, 8, 7, 7, 7,
+ 9, 9,12,11, 0, 8, 8, 8, 8, 9, 9,10,10, 0,13,14,
+ 9, 9, 9, 9,10,10, 0,14,13,10,11,11,11,10,10, 0,
+ 0, 0,12,12,10,11,10,10, 0, 0, 0,12,13,12,12,12,
+ 12,
+};
+
+static float _vq_quantthresh_res0_128_1024_8[] = {
+ -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 12.5, 17.5,
+};
+
+static long _vq_quantmap_res0_128_1024_8[] = {
+ 7, 5, 3, 1, 0, 2, 4, 6,
+ 8,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128_1024_8 = {
+ _vq_quantthresh_res0_128_1024_8,
+ _vq_quantmap_res0_128_1024_8,
+ 9,
+ 9
+};
+
+static long _vq_pigeonmap_res0_128_1024_8[] = {
+ 2, 1, 1, 0, 0, 0, 1, 2,
+};
+
+static long _vq_fitlist_res0_128_1024_8[] = {
+ 0, 1, 2, 3, 9, 10, 11, 12,
+ 18, 19, 28, 4, 13, 20, 29, 6,
+ 15, 22, 31, 21, 37, 38, 24, 40,
+ 39, 55, 56, 42, 58, 1, 3, 5,
+ 7, 10, 12, 14, 16, 21, 23, 30,
+ 32, 0, 9, 19, 28, 2, 4, 6,
+ 8, 11, 13, 15, 17, 22, 24, 31,
+ 33, 25, 39, 41, 18, 37, 20, 26,
+ 40, 42, 43, 57, 59, 55, 38, 44,
+ 58, 60, 3, 5, 7, 12, 14, 16,
+ 23, 25, 32, 34, 4, 6, 8, 13,
+ 15, 17, 24, 26, 33, 35, 21, 41,
+ 43, 22, 42, 44, 39, 59, 61, 40,
+ 60, 62, 9, 10, 28, 29, 30, 46,
+ 47, 48, 11, 31, 49, 13, 33, 51,
+ 67, 0, 1, 12, 2, 4, 15, 18,
+ 19, 37, 38, 39, 55, 56, 57, 20,
+ 40, 58, 22, 42, 60, 76, 12, 14,
+ 28, 30, 32, 34, 46, 48, 50, 52,
+ 66, 68, 10, 13, 15, 29, 31, 33,
+ 35, 47, 49, 51, 53, 67, 69, 3,
+ 5, 16, 1, 9, 4, 6, 11, 17,
+ 21, 23, 37, 39, 41, 43, 55, 57,
+ 59, 61, 75, 77, 19, 22, 24, 38,
+ 40, 42, 44, 56, 58, 60, 62, 76,
+ 78, 14, 16, 30, 32, 34, 48, 50,
+ 52, 68, 70, 15, 17, 31, 33, 35,
+ 49, 51, 53, 69, 71, 5, 7, 12,
+ 6, 8, 13, 23, 25, 39, 41, 43,
+ 57, 59, 61, 77, 79, 24, 26, 40,
+ 42, 44, 58, 60, 62, 78, 80, 30,
+ 32, 46, 48, 50, 52, 66, 68, 70,
+ 28, 31, 33, 47, 49, 51, 53, 67,
+ 69, 71, 39, 41, 55, 57, 59, 61,
+ 75, 77, 79, 37, 40, 42, 56, 58,
+ 60, 62, 76, 78, 80, 32, 34, 48,
+ 50, 52, 66, 68, 70, 33, 35, 49,
+ 51, 53, 67, 69, 71, 41, 43, 57,
+ 59, 61, 75, 77, 79, 42, 44, 58,
+ 60, 62, 76, 78, 80,
+};
+
+static long _vq_fitmap_res0_128_1024_8[] = {
+ 0, 29, 74, 106, 142, 201, 142, 247,
+ 285,
+};
+
+static long _vq_fitlength_res0_128_1024_8[] = {
+ 29, 45, 32, 36, 59, 46, 59, 38,
+ 32,
+};
+
+static encode_aux_pigeonhole _vq_auxp_res0_128_1024_8 = {
+ -20, 5, 8, 3,
+ _vq_pigeonmap_res0_128_1024_8,
+ 317,
+ _vq_fitlist_res0_128_1024_8,
+ _vq_fitmap_res0_128_1024_8,
+ _vq_fitlength_res0_128_1024_8
+};
+
+static static_codebook _vq_book_res0_128_1024_8 = {
+ 2, 81,
+ _vq_lengthlist_res0_128_1024_8,
+ 1, -527171584, 1616117760, 4, 0,
+ _vq_quantlist_res0_128_1024_8,
+ NULL,
+ &_vq_auxt_res0_128_1024_8,
+ &_vq_auxp_res0_128_1024_8,
+ 0
+};
+
+
+#endif
diff --git a/lib/books/res0_128_1024_8a.vqh b/lib/books/res0_128_1024_8a.vqh
new file mode 100644
index 00000000..a38676c0
--- /dev/null
+++ b/lib/books/res0_128_1024_8a.vqh
@@ -0,0 +1,61 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
+ * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
+ * by the XIPHOPHORUS Company, http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128_1024_8a_VQH_
+#define _V_res0_128_1024_8a_VQH_
+#include "codebook.h"
+
+static long _vq_quantlist_res0_128_1024_8a[] = {
+ 2,
+ 1,
+ 3,
+ 0,
+ 4,
+};
+
+static long _vq_lengthlist_res0_128_1024_8a[] = {
+ 3, 4, 4, 5, 5, 6, 4, 4, 5, 5, 6, 4, 4, 5, 5, 6,
+ 5, 5, 5, 5, 6, 6, 6, 5, 4,
+};
+
+static float _vq_quantthresh_res0_128_1024_8a[] = {
+ -1.5, -0.5, 0.5, 1.5,
+};
+
+static long _vq_quantmap_res0_128_1024_8a[] = {
+ 3, 1, 0, 2, 4,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128_1024_8a = {
+ _vq_quantthresh_res0_128_1024_8a,
+ _vq_quantmap_res0_128_1024_8a,
+ 5,
+ 5
+};
+
+static static_codebook _vq_book_res0_128_1024_8a = {
+ 2, 25,
+ _vq_lengthlist_res0_128_1024_8a,
+ 1, -533725184, 1611661312, 3, 0,
+ _vq_quantlist_res0_128_1024_8a,
+ NULL,
+ &_vq_auxt_res0_128_1024_8a,
+ NULL,
+ 0
+};
+
+
+#endif
diff --git a/lib/books/res0_128_1024_9.vqh b/lib/books/res0_128_1024_9.vqh
new file mode 100644
index 00000000..2a22c314
--- /dev/null
+++ b/lib/books/res0_128_1024_9.vqh
@@ -0,0 +1,75 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
+ * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
+ * by the XIPHOPHORUS Company, http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128_1024_9_VQH_
+#define _V_res0_128_1024_9_VQH_
+#include "codebook.h"
+
+static long _vq_quantlist_res0_128_1024_9[] = {
+ 5,
+ 4,
+ 6,
+ 3,
+ 7,
+ 2,
+ 8,
+ 1,
+ 9,
+ 0,
+ 10,
+};
+
+static long _vq_lengthlist_res0_128_1024_9[] = {
+ 1, 4, 4,12,12,12,12,12,12,12,12, 4, 5, 4,12,12,
+ 12,12,12,12,12,12, 3, 5, 5,12,12,12,12,12,12,12,
+ 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+ 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+ 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+ 12,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,
+};
+
+static float _vq_quantthresh_res0_128_1024_9[] = {
+ -760.5, -591.5, -422.5, -253.5, -84.5, 84.5, 253.5, 422.5,
+ 591.5, 760.5,
+};
+
+static long _vq_quantmap_res0_128_1024_9[] = {
+ 9, 7, 5, 3, 1, 0, 2, 4,
+ 6, 8, 10,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128_1024_9 = {
+ _vq_quantthresh_res0_128_1024_9,
+ _vq_quantmap_res0_128_1024_9,
+ 11,
+ 11
+};
+
+static static_codebook _vq_book_res0_128_1024_9 = {
+ 2, 121,
+ _vq_lengthlist_res0_128_1024_9,
+ 1, -516265984, 1626677248, 4, 0,
+ _vq_quantlist_res0_128_1024_9,
+ NULL,
+ &_vq_auxt_res0_128_1024_9,
+ NULL,
+ 0
+};
+
+
+#endif
diff --git a/lib/books/res0_128_1024_9a.vqh b/lib/books/res0_128_1024_9a.vqh
new file mode 100644
index 00000000..8bd33663
--- /dev/null
+++ b/lib/books/res0_128_1024_9a.vqh
@@ -0,0 +1,80 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
+ * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
+ * by the XIPHOPHORUS Company, http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128_1024_9a_VQH_
+#define _V_res0_128_1024_9a_VQH_
+#include "codebook.h"
+
+static long _vq_quantlist_res0_128_1024_9a[] = {
+ 6,
+ 5,
+ 7,
+ 4,
+ 8,
+ 3,
+ 9,
+ 2,
+ 10,
+ 1,
+ 11,
+ 0,
+ 12,
+};
+
+static long _vq_lengthlist_res0_128_1024_9a[] = {
+ 1, 5, 5, 7, 7, 9, 9,10,10,11,11,11,10, 6, 4, 5,
+ 7, 7, 9, 9,10,10,11,11,11,11, 7, 5, 5, 7, 7, 8,
+ 8,10,10,11,10,11,11,16, 7, 7, 6, 6, 8, 8,10,10,
+ 11,11,11,11,15, 8, 8, 7, 7, 9, 8, 9,10,11,11,11,
+ 11,16,12,11, 8, 8, 8, 8,10, 9,10,10,12,11,16,12,
+ 12, 8, 8, 9, 9,10,10,11,11,11,11,16,16,16,10,10,
+ 9, 9, 9, 9,10,10,10,10,15,15,16,10,10, 9,10,10,
+ 10,10,11,11,11,16,16,16,13,14,10,10,10,10,10,10,
+ 10,10,16,15,16,13,13,10,10,10,10,10,10,11,11,16,
+ 14,15,15,16,11,11,10,10,10,10,10,10,16,16,16,15,
+ 16,12,12,10,10,10,10,10,10,
+};
+
+static float _vq_quantthresh_res0_128_1024_9a[] = {
+ -71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5,
+ 32.5, 45.5, 58.5, 71.5,
+};
+
+static long _vq_quantmap_res0_128_1024_9a[] = {
+ 11, 9, 7, 5, 3, 1, 0, 2,
+ 4, 6, 8, 10, 12,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128_1024_9a = {
+ _vq_quantthresh_res0_128_1024_9a,
+ _vq_quantmap_res0_128_1024_9a,
+ 13,
+ 13
+};
+
+static static_codebook _vq_book_res0_128_1024_9a = {
+ 2, 169,
+ _vq_lengthlist_res0_128_1024_9a,
+ 1, -523010048, 1618608128, 4, 0,
+ _vq_quantlist_res0_128_1024_9a,
+ NULL,
+ &_vq_auxt_res0_128_1024_9a,
+ NULL,
+ 0
+};
+
+
+#endif
diff --git a/lib/books/res0_128_1024_9b.vqh b/lib/books/res0_128_1024_9b.vqh
new file mode 100644
index 00000000..31629367
--- /dev/null
+++ b/lib/books/res0_128_1024_9b.vqh
@@ -0,0 +1,80 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
+ * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
+ * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
+ * by the XIPHOPHORUS Company, http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: static codebook autogenerated by vq/somethingorother
+
+ ********************************************************************/
+
+#ifndef _V_res0_128_1024_9b_VQH_
+#define _V_res0_128_1024_9b_VQH_
+#include "codebook.h"
+
+static long _vq_quantlist_res0_128_1024_9b[] = {
+ 6,
+ 5,
+ 7,
+ 4,
+ 8,
+ 3,
+ 9,
+ 2,
+ 10,
+ 1,
+ 11,
+ 0,
+ 12,
+};
+
+static long _vq_lengthlist_res0_128_1024_9b[] = {
+ 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 5,
+ 6, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 6, 6, 7, 6, 7,
+ 7, 8, 8, 8, 8, 8, 8, 9, 6, 6, 7, 7, 7, 7, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8,
+ 8, 9, 8, 8, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,
+ 8, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 7, 7,
+ 7, 7, 8, 7, 7, 7, 8, 8, 9, 9, 8, 8, 8, 7, 7, 8,
+ 8, 7, 7, 8, 8, 8, 8, 8, 9, 9, 8, 8, 8, 8, 8, 7,
+ 8, 7, 9, 8, 8, 8, 9, 8, 8, 7, 7, 7, 8, 7, 8, 8,
+ 8, 8, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 9, 9, 8, 9,
+ 9, 9, 8, 8, 8, 7, 7, 7, 7,
+};
+
+static float _vq_quantthresh_res0_128_1024_9b[] = {
+ -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5,
+ 2.5, 3.5, 4.5, 5.5,
+};
+
+static long _vq_quantmap_res0_128_1024_9b[] = {
+ 11, 9, 7, 5, 3, 1, 0, 2,
+ 4, 6, 8, 10, 12,
+};
+
+static encode_aux_threshmatch _vq_auxt_res0_128_1024_9b = {
+ _vq_quantthresh_res0_128_1024_9b,
+ _vq_quantmap_res0_128_1024_9b,
+ 13,
+ 13
+};
+
+static static_codebook _vq_book_res0_128_1024_9b = {
+ 2, 169,
+ _vq_lengthlist_res0_128_1024_9b,
+ 1, -531103744, 1611661312, 4, 0,
+ _vq_quantlist_res0_128_1024_9b,
+ NULL,
+ &_vq_auxt_res0_128_1024_9b,
+ NULL,
+ 0
+};
+
+
+#endif
diff --git a/lib/books/line_1024x31_0sub1.vqh b/lib/books/res0_128_1024aux.vqh
index 23b17001..5c2d33c5 100644
--- a/lib/books/line_1024x31_0sub1.vqh
+++ b/lib/books/res0_128_1024aux.vqh
@@ -15,20 +15,23 @@
********************************************************************/
-#ifndef _V_line_1024x31_0sub1_VQH_
-#define _V_line_1024x31_0sub1_VQH_
+#ifndef _V_res0_128_1024aux_VQH_
+#define _V_res0_128_1024aux_VQH_
#include "codebook.h"
-static long _huff_lengthlist_line_1024x31_0sub1[] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 3, 3, 3, 3, 4, 4, 4, 4, 5, 4, 5, 5, 5, 6, 7, 7,
- 7, 7, 9,10, 9,12, 9,12, 9,12,11,12,12,12,12,12,
- 12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,
+static long _huff_lengthlist_res0_128_1024aux[] = {
+ 13,10,11,11,14,12,14,15,14,15, 9, 2,15,15,15,15,
+ 15,15, 7, 9,11,15, 9, 7,10, 8,10,11,15,15,11,15,
+ 7, 3, 7, 4, 7, 6,13,15,14,15,10, 7,11, 8,11, 9,
+ 15,15,10,15, 8, 4, 8, 3, 7, 5,13,15,14,15,10, 7,
+ 10, 7, 9, 9,13,15,13,15,10, 6,10, 5, 8, 7,12,15,
+ 12, 5,13,13,15,13,12,12, 6, 7,15, 7,15,15,15,15,
+ 15,15, 5, 4,
};
-static static_codebook _huff_book_line_1024x31_0sub1 = {
- 1, 64,
- _huff_lengthlist_line_1024x31_0sub1,
+static static_codebook _huff_book_res0_128_1024aux = {
+ 2, 100,
+ _huff_lengthlist_res0_128_1024aux,
0, 0, 0, 0, 0,
NULL,
NULL,
diff --git a/lib/books/res_Zc_1024aux.vqh b/lib/books/res0_128_128aux.vqh
index 99dca15e..975ccb05 100644
--- a/lib/books/res_Zc_1024aux.vqh
+++ b/lib/books/res0_128_128aux.vqh
@@ -15,23 +15,23 @@
********************************************************************/
-#ifndef _V_res_Zc_1024aux_VQH_
-#define _V_res_Zc_1024aux_VQH_
+#ifndef _V_res0_128_128aux_VQH_
+#define _V_res0_128_128aux_VQH_
#include "codebook.h"
-static long _huff_lengthlist_res_Zc_1024aux[] = {
- 3, 8, 9,11, 4, 7, 8,11,16,16, 8, 4, 5, 7,16,16,
- 16,16,14,16, 8, 4, 5, 6,16,16,16,16,12,16, 9, 5,
- 5, 5,16,16,16,16,10,16, 4,16,16,16, 3, 4, 7,11,
- 16,16, 6,16,16,16, 4, 4, 8,13,16,16, 9,16,16,16,
- 7, 8,10,13,16,16,11,16,16,16,11,13,12,14,16,16,
- 14,11, 9, 6,16,16,16,16, 5,10,16,14,13, 8,16,16,
- 16,16, 8,15,
+static long _huff_lengthlist_res0_128_128aux[] = {
+ 7,11, 7, 7,11, 8,12,10,12,11, 9, 3,11,11,11,11,
+ 11,11, 8,11, 8,11, 6, 5,10, 6,11, 8,11,11, 6,11,
+ 4, 2, 8, 4,11, 7,11,11,11,11,11, 8,11, 9,11,11,
+ 11,11, 8,11, 6, 3,10, 4,10, 7,11,11,10,11,11,10,
+ 10, 9,11,11,11,11,11,11, 9, 7,10, 6,10, 8,11,11,
+ 11, 4,11,11,11,11,11,11, 9,11,11, 6,11,11,11,11,
+ 11,11,10,11,
};
-static static_codebook _huff_book_res_Zc_1024aux = {
+static static_codebook _huff_book_res0_128_128aux = {
2, 100,
- _huff_lengthlist_res_Zc_1024aux,
+ _huff_lengthlist_res0_128_128aux,
0, 0, 0, 0, 0,
NULL,
NULL,
diff --git a/lib/books/res_Zc_128aux.vqh b/lib/books/res_Zc_128aux.vqh
deleted file mode 100644
index c8696618..00000000
--- a/lib/books/res_Zc_128aux.vqh
+++ /dev/null
@@ -1,99 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *
- * PLEASE READ THESE TERMS DISTRIBUTING. *
- * *
- * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *
- * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *
- * http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by huff/huffbuld
-
- ********************************************************************/
-
-#ifndef _V_res_Zc_128aux_VQH_
-#define _V_res_Zc_128aux_VQH_
-#include "codebook.h"
-
-static long _huff_lengthlist_res_Zc_128aux[] = {
- 4,15,15,15, 6, 8,11,11,15,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14, 6,14,14,14, 6, 7,10,12,
- 14,14, 9,14,14,14, 7, 7,10,13,14,14,13,14,14,14,
- 11,11,12,13,14,14,13,14,14,14,13,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,13,13,14,14,10,10,11,13,14,14,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14, 9,14,14,14,
- 7, 6, 8, 9,14,14, 9,14,14,14, 6, 5, 7, 8,14,14,
- 10,14,14,14, 7, 7, 8,10,14,14,12,14,14,14,10,10,
- 11,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14,11,14,14,14, 9,10,12,13,
- 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 9,14,14,14, 7, 7, 9,12,14,14,10,14,14,14, 7, 6,
- 8,11,14,14,11,14,14,14, 9, 8,10,12,14,14,13,14,
- 14,14,13,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,12,14,14,14,
- 10,11,12,13,14,14,14,12,13,13,14,14,14,14,14,14,
- 14,12,12,14,14,14,14,14,14,14,14,13,13,14,14,14,
- 14,14,14,14,10,14,14,14, 9, 9,11,12,14,14,13,14,
- 14,14,10,10,11,14,14,14,13,14,14,14,12,11,14,13,
- 14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 5,14,14,14, 5, 8,11,12,14,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14, 5,14,14,14, 4, 6, 9,12,
- 14,14, 7,14,14,14, 5, 6, 9,12,14,14,10,14,14,14,
- 9, 9,12,14,14,14,14,14,14,14,14,13,14,14,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 14,14,14,14, 7,14,14,14, 7, 8,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, 6,14,14,14,
- 5, 6, 9,13,14,14, 7,14,14,14, 5, 5, 9,13,14,14,
- 11,14,14,14, 9, 9,12,14,14,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14,11,14,14,14,10,12,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 9,14,14,14, 8, 9,11,14,14,14,10,14,14,14, 8, 8,
- 10,14,14,14,12,14,14,14,11,10,13,14,14,14,14,14,
- 14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,
- 12,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 14,14,14,14,13,14,14,14,12,13,14,14,14,14,13,14,
- 14,14,13,12,13,14,14,14,14,14,14,14,13,12,13,14,
- 14,14,14,14,14,14,13,13,14,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 12,14,13,13,12,13,14,14,13,14,14, 6, 5, 6,14,14,
- 14,14,11,14,13, 5, 5, 6,14,14,14,14,10,14,13, 7,
- 7, 6,14,14,14,14,10,14,13,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
- 14,13,14,13,14,14,14,14,14,14,14,14,14,14,14,14,
- 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,
- 10,10,14,14,14,14,14,14,14,10, 9, 9,14,14,14,14,
- 13,14,14,11,11, 8,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,
-};
-
-static static_codebook _huff_book_res_Zc_128aux = {
- 3, 1000,
- _huff_lengthlist_res_Zc_128aux,
- 0, 0, 0, 0, 0,
- NULL,
- NULL,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/res_Zc_2.vqh b/lib/books/res_Zc_2.vqh
deleted file mode 100644
index 385e2c37..00000000
--- a/lib/books/res_Zc_2.vqh
+++ /dev/null
@@ -1,300 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
- * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
- * by the XIPHOPHORUS Company, http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by vq/somethingorother
-
- ********************************************************************/
-
-#ifndef _V_res_Zc_2_VQH_
-#define _V_res_Zc_2_VQH_
-#include "codebook.h"
-
-static long _vq_quantlist_res_Zc_2[] = {
- 2,
- 1,
- 3,
- 0,
- 4,
-};
-
-static long _vq_lengthlist_res_Zc_2[] = {
- 2, 6, 5, 8, 8, 0, 5, 5, 9, 8, 0, 5, 5, 8, 9, 0,
- 7, 7, 9, 9, 0, 0, 0, 9,10, 6, 8, 8,10,10, 0, 8,
- 8,11,10, 0, 8, 8,10,10, 0,10, 9,12,11, 0, 0, 0,
- 11,11, 6, 8, 8,10,10, 0, 8, 9,10,11, 0, 8, 8,10,
- 10, 0, 9,10,11,11, 0, 0, 0,12,12, 8,10,10,12,12,
- 0,11,11,13,12, 0,11,11,12,12, 0,14,14,15,14, 0,
- 0, 0,16,14, 8,10,10,12,12, 0,11,12,12,13, 0,11,
- 11,12,12, 0,12,13,13,14, 0, 0, 0,15,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, 8, 7,10,10,
- 0, 7, 7,10,10, 0, 9, 8,11,11, 0, 0, 0,11,11, 5,
- 8, 8,11,11, 0, 7, 8,10,11, 0, 8, 7,11,10, 0, 8,
- 9,11,11, 0, 0, 0,11,11, 8,10,10,12,12, 0,11,10,
- 12,12, 0,10,10,12,12, 0,13,12,13,13, 0, 0, 0,13,
- 13, 8,10,10,13,14, 0,10,11,12,13, 0,10,10,12,12,
- 0,12,13,14,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, 8, 7,11,10, 0, 7, 7,
- 11,10, 0, 9, 9,11,11, 0, 0, 0,11,11, 5, 8, 8,11,
- 12, 0, 7, 8,10,11, 0, 7, 7,10,11, 0, 9, 9,11,11,
- 0, 0, 0,11,12, 8,11,10,13,12, 0,10,10,13,12, 0,
- 11,10,13,12, 0,13,12,13,13, 0, 0, 0,14,13, 8,10,
- 11,12,13, 0,10,11,12,13, 0,10,10,13,12, 0,12,13,
- 13,13, 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,
- 7, 9,10,12,13, 0, 9, 8,12,13, 0, 8, 9,12,12, 0,
- 11,10,13,13, 0, 0, 0,13,13, 7,10, 9,13,13, 0, 9,
- 9,13,12, 0, 9, 8,14,12, 0,10,11,13,13, 0, 0, 0,
- 13,12, 9,11,11,15,16, 0,12,10,14,14, 0,10,12,12,
- 13, 0,13,12,14,14, 0, 0, 0,13,13, 9,12,11,14,14,
- 0,11,11,13,14, 0,11,10,13,12, 0,13,13,14,14, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,
- 11,11, 0,13, 0,11,11,13,13, 0,11,11,14,13, 0,13,
- 13,14,14, 0, 0, 0,15,14,10,11,12,13,14, 0,11,11,
- 12,14, 0,11,11,13,14, 0,13,13,13,14, 0, 0, 0,14,
- 15,
-};
-
-static float _vq_quantthresh_res_Zc_2[] = {
- -1.5, -0.5, 0.5, 1.5,
-};
-
-static long _vq_quantmap_res_Zc_2[] = {
- 3, 1, 0, 2, 4,
-};
-
-static encode_aux_threshmatch _vq_auxt_res_Zc_2 = {
- _vq_quantthresh_res_Zc_2,
- _vq_quantmap_res_Zc_2,
- 5,
- 5
-};
-
-static long _vq_pigeonmap_res_Zc_2[] = {
- 1, 0, 0, 0,
-};
-
-static long _vq_fitlist_res_Zc_2[] = {
- 0, 1, 2, 3, 6, 7, 8, 11,
- 12, 13, 16, 17, 18, 25, 26, 27,
- 28, 31, 32, 33, 36, 37, 38, 41,
- 42, 43, 50, 51, 52, 53, 56, 57,
- 58, 61, 62, 63, 66, 67, 68, 75,
- 76, 77, 78, 81, 82, 83, 86, 87,
- 88, 91, 92, 93, 150, 151, 152, 153,
- 156, 157, 158, 161, 162, 163, 166, 167,
- 168, 175, 176, 177, 178, 181, 182, 183,
- 186, 187, 188, 191, 192, 193, 200, 201,
- 202, 203, 206, 207, 208, 211, 212, 213,
- 216, 217, 218, 275, 276, 277, 278, 281,
- 282, 283, 286, 287, 288, 291, 292, 293,
- 300, 301, 302, 303, 306, 307, 308, 311,
- 316, 325, 326, 327, 328, 331, 332, 333,
- 336, 341, 400, 401, 402, 403, 406, 407,
- 408, 411, 412, 413, 416, 417, 418, 425,
- 426, 427, 428, 431, 432, 433, 436, 441,
- 450, 451, 452, 453, 456, 457, 458, 461,
- 466, 4, 9, 14, 19, 29, 34, 39,
- 44, 54, 59, 64, 69, 79, 84, 89,
- 94, 154, 159, 164, 169, 179, 184, 189,
- 194, 204, 209, 214, 219, 279, 284, 289,
- 294, 304, 309, 312, 317, 329, 334, 337,
- 342, 404, 409, 414, 419, 429, 434, 437,
- 442, 454, 459, 462, 467, 314, 319, 339,
- 344, 439, 444, 464, 469, 23, 48, 73,
- 98, 173, 198, 223, 298, 313, 338, 423,
- 438, 463, 24, 49, 74, 99, 174, 199,
- 224, 299, 424, 324, 349, 449, 474, 323,
- 348, 448, 473, 100, 101, 102, 103, 106,
- 107, 108, 111, 112, 113, 116, 117, 118,
- 225, 226, 227, 228, 231, 232, 233, 236,
- 237, 238, 241, 242, 243, 318, 350, 351,
- 352, 353, 356, 357, 358, 361, 366, 443,
- 475, 476, 477, 478, 481, 482, 483, 486,
- 491, 104, 109, 114, 119, 229, 234, 239,
- 244, 354, 359, 362, 367, 479, 484, 487,
- 492, 364, 369, 489, 494, 123, 248, 363,
- 488, 124, 249, 374, 499, 373, 498, 368,
- 493, 343, 575, 576, 577, 581, 582, 583,
- 586, 591, 579, 584, 587, 592, 589, 594,
- 588, 599, 598, 600, 601, 602, 603, 606,
- 607, 608, 611, 616, 604, 609, 612, 617,
- 614, 619, 613, 624, 623, 618, 593, 0,
- 1, 3, 6, 8, 11, 13, 16, 18,
- 25, 26, 28, 31, 33, 36, 38, 41,
- 43, 50, 51, 53, 56, 58, 61, 63,
- 66, 68, 75, 76, 78, 81, 83, 86,
- 88, 91, 93, 150, 151, 153, 156, 158,
- 161, 163, 166, 168, 175, 176, 178, 181,
- 183, 186, 188, 191, 193, 200, 201, 203,
- 206, 208, 211, 213, 216, 218, 275, 276,
- 278, 281, 283, 286, 288, 291, 293, 300,
- 301, 303, 306, 308, 311, 313, 316, 318,
- 325, 326, 328, 331, 333, 336, 338, 341,
- 343, 400, 401, 403, 406, 408, 411, 413,
- 416, 418, 425, 426, 428, 431, 433, 436,
- 438, 441, 443, 450, 451, 453, 456, 458,
- 461, 463, 466, 468, 23, 48, 73, 98,
- 173, 198, 223, 298, 323, 348, 423, 448,
- 473, 100, 101, 103, 106, 108, 111, 113,
- 116, 118, 225, 226, 228, 231, 233, 236,
- 238, 241, 243, 350, 351, 353, 356, 358,
- 361, 363, 366, 368, 475, 476, 478, 481,
- 483, 486, 488, 491, 493, 123, 248, 373,
- 498, 575, 576, 581, 583, 586, 588, 591,
- 593, 598, 600, 601, 603, 606, 608, 611,
- 613, 616, 618, 623, 0, 1, 2, 3,
- 6, 7, 8, 16, 17, 18, 25, 26,
- 27, 28, 31, 32, 33, 41, 42, 43,
- 50, 51, 52, 53, 56, 57, 58, 66,
- 67, 68, 75, 76, 77, 78, 81, 82,
- 83, 91, 92, 93, 150, 151, 152, 153,
- 156, 157, 158, 166, 167, 168, 175, 176,
- 177, 178, 181, 182, 183, 191, 192, 193,
- 200, 201, 202, 203, 206, 207, 208, 216,
- 217, 218, 275, 276, 277, 278, 281, 282,
- 283, 291, 292, 293, 300, 301, 306, 307,
- 308, 316, 317, 318, 325, 326, 331, 332,
- 333, 341, 342, 343, 400, 401, 402, 403,
- 406, 407, 408, 416, 417, 418, 425, 426,
- 431, 432, 433, 441, 442, 443, 450, 451,
- 456, 457, 458, 466, 467, 468, 4, 9,
- 19, 29, 34, 44, 54, 59, 69, 79,
- 84, 94, 154, 159, 169, 179, 184, 194,
- 204, 209, 219, 279, 284, 294, 302, 309,
- 319, 327, 334, 344, 404, 409, 419, 427,
- 434, 444, 452, 459, 469, 304, 329, 429,
- 454, 100, 101, 102, 103, 106, 107, 108,
- 116, 117, 118, 225, 226, 227, 228, 231,
- 232, 233, 241, 242, 243, 303, 350, 351,
- 356, 357, 358, 366, 367, 368, 428, 475,
- 476, 481, 482, 483, 491, 492, 493, 104,
- 109, 119, 229, 234, 244, 352, 359, 369,
- 477, 484, 494, 354, 479, 353, 478, 328,
- 575, 576, 581, 582, 583, 591, 592, 593,
- 577, 584, 594, 579, 600, 601, 606, 607,
- 608, 616, 617, 618, 602, 609, 619, 604,
- 603, 0, 1, 2, 3, 6, 7, 8,
- 11, 12, 13, 16, 17, 18, 25, 26,
- 27, 28, 31, 32, 33, 36, 37, 38,
- 41, 42, 43, 75, 76, 77, 78, 81,
- 82, 83, 86, 87, 88, 91, 92, 93,
- 150, 151, 152, 153, 156, 157, 158, 161,
- 162, 163, 166, 167, 168, 200, 201, 202,
- 203, 206, 207, 208, 211, 212, 213, 216,
- 217, 218, 275, 276, 277, 278, 281, 282,
- 283, 286, 287, 288, 291, 292, 293, 325,
- 326, 327, 328, 331, 332, 333, 336, 337,
- 338, 341, 342, 343, 400, 401, 402, 403,
- 406, 407, 408, 411, 412, 413, 416, 417,
- 418, 450, 451, 452, 453, 456, 457, 458,
- 461, 462, 463, 466, 467, 468, 4, 9,
- 14, 19, 29, 34, 39, 44, 79, 84,
- 89, 94, 154, 159, 164, 169, 204, 209,
- 214, 219, 279, 284, 289, 294, 329, 334,
- 339, 344, 404, 409, 414, 419, 454, 459,
- 464, 469, 23, 48, 98, 173, 223, 298,
- 348, 423, 473, 24, 49, 99, 174, 224,
- 299, 349, 424, 474, 575, 576, 577, 581,
- 582, 583, 586, 587, 588, 591, 592, 593,
- 579, 584, 589, 594, 598, 599, 0, 1,
- 2, 3, 6, 7, 8, 11, 12, 13,
- 16, 17, 18, 25, 26, 27, 28, 31,
- 32, 33, 36, 37, 38, 41, 42, 43,
- 50, 51, 52, 53, 56, 57, 58, 61,
- 66, 75, 76, 77, 78, 81, 82, 83,
- 86, 91, 150, 151, 152, 153, 156, 157,
- 158, 161, 162, 163, 166, 167, 168, 175,
- 176, 177, 178, 181, 182, 183, 186, 187,
- 188, 191, 192, 193, 200, 201, 202, 203,
- 206, 207, 208, 211, 212, 213, 216, 217,
- 218, 400, 401, 402, 403, 406, 407, 408,
- 411, 412, 413, 416, 417, 418, 425, 426,
- 427, 428, 431, 432, 433, 436, 437, 438,
- 441, 442, 443, 450, 451, 452, 453, 456,
- 457, 458, 461, 462, 463, 466, 467, 468,
- 4, 9, 14, 19, 29, 34, 39, 44,
- 54, 59, 62, 67, 79, 84, 87, 92,
- 154, 159, 164, 169, 179, 184, 189, 194,
- 204, 209, 214, 219, 404, 409, 414, 419,
- 429, 434, 439, 444, 454, 459, 464, 469,
- 64, 69, 89, 94, 23, 48, 63, 88,
- 173, 198, 223, 423, 448, 473, 24, 49,
- 174, 199, 224, 424, 449, 474, 74, 99,
- 73, 98, 68, 100, 101, 102, 103, 106,
- 107, 108, 111, 116, 225, 226, 227, 228,
- 231, 232, 233, 236, 237, 238, 241, 242,
- 243, 475, 476, 477, 478, 481, 482, 483,
- 486, 487, 488, 491, 492, 493, 104, 109,
- 112, 117, 229, 234, 239, 244, 479, 484,
- 489, 494, 114, 119, 113, 248, 498, 249,
- 499, 124, 123, 118, 0, 1, 2, 3,
- 6, 7, 8, 16, 17, 18, 25, 26,
- 27, 28, 31, 32, 33, 41, 42, 43,
- 50, 51, 56, 57, 58, 66, 67, 68,
- 75, 76, 81, 82, 83, 91, 92, 93,
- 150, 151, 152, 153, 156, 157, 158, 166,
- 167, 168, 175, 176, 177, 178, 181, 182,
- 183, 191, 192, 193, 200, 201, 202, 203,
- 206, 207, 208, 216, 217, 218, 400, 401,
- 402, 403, 406, 407, 408, 416, 417, 418,
- 425, 426, 427, 428, 431, 432, 433, 441,
- 442, 443, 450, 451, 452, 453, 456, 457,
- 458, 466, 467, 468, 4, 9, 19, 29,
- 34, 44, 52, 59, 69, 77, 84, 94,
- 154, 159, 169, 179, 184, 194, 204, 209,
- 219, 404, 409, 419, 429, 434, 444, 454,
- 459, 469, 54, 79, 53, 100, 101, 106,
- 107, 108, 116, 117, 118, 225, 226, 227,
- 228, 231, 232, 233, 241, 242, 243, 475,
- 476, 477, 478, 481, 482, 483, 491, 492,
- 493, 102, 109, 119, 229, 234, 244, 479,
- 484, 494, 104, 103,
-};
-
-static long _vq_fitmap_res_Zc_2[] = {
- 0, 359, 548, 359, 793, 359, 793, 359,
- 982, 359, 1228, 359, 793, 359, 793, 359,
-};
-
-static long _vq_fitlength_res_Zc_2[] = {
- 359, 189, 245, 189, 189, 189, 189, 189,
- 246, 189, 168, 189, 189, 189, 189, 189,
-};
-
-static encode_aux_pigeonhole _vq_auxp_res_Zc_2 = {
- -2, 1, 4, 2,
- _vq_pigeonmap_res_Zc_2,
- 1396,
- _vq_fitlist_res_Zc_2,
- _vq_fitmap_res_Zc_2,
- _vq_fitlength_res_Zc_2
-};
-
-static static_codebook _vq_book_res_Zc_2 = {
- 4, 625,
- _vq_lengthlist_res_Zc_2,
- 1, -533725184, 1611661312, 3, 0,
- _vq_quantlist_res_Zc_2,
- NULL,
- &_vq_auxt_res_Zc_2,
- &_vq_auxp_res_Zc_2,
- 0
-};
-
-
-#endif
diff --git a/lib/books/res_Zc_4.vqh b/lib/books/res_Zc_4.vqh
deleted file mode 100644
index 0a0077a6..00000000
--- a/lib/books/res_Zc_4.vqh
+++ /dev/null
@@ -1,89 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
- * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
- * by the XIPHOPHORUS Company, http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by vq/somethingorother
-
- ********************************************************************/
-
-#ifndef _V_res_Zc_4_VQH_
-#define _V_res_Zc_4_VQH_
-#include "codebook.h"
-
-static long _vq_quantlist_res_Zc_4[] = {
- 1,
- 0,
- 2,
-};
-
-static long _vq_lengthlist_res_Zc_4[] = {
- 1, 3, 3, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 0,
- 0, 0, 3, 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,
-};
-
-static float _vq_quantthresh_res_Zc_4[] = {
- -0.5, 0.5,
-};
-
-static long _vq_quantmap_res_Zc_4[] = {
- 1, 0, 2,
-};
-
-static encode_aux_threshmatch _vq_auxt_res_Zc_4 = {
- _vq_quantthresh_res_Zc_4,
- _vq_quantmap_res_Zc_4,
- 3,
- 3
-};
-
-static long _vq_pigeonmap_res_Zc_4[] = {
- 0, 0,
-};
-
-static long _vq_fitlist_res_Zc_4[] = {
- 0, 1, 2, 9, 10, 11, 18, 19,
- 20,
-};
-
-static long _vq_fitmap_res_Zc_4[] = {
- 0,
-};
-
-static long _vq_fitlength_res_Zc_4[] = {
- 9,
-};
-
-static encode_aux_pigeonhole _vq_auxp_res_Zc_4 = {
- -1, 1, 2, 1,
- _vq_pigeonmap_res_Zc_4,
- 9,
- _vq_fitlist_res_Zc_4,
- _vq_fitmap_res_Zc_4,
- _vq_fitlength_res_Zc_4
-};
-
-static static_codebook _vq_book_res_Zc_4 = {
- 4, 81,
- _vq_lengthlist_res_Zc_4,
- 1, -535822336, 1611661312, 2, 0,
- _vq_quantlist_res_Zc_4,
- NULL,
- &_vq_auxt_res_Zc_4,
- &_vq_auxp_res_Zc_4,
- 0
-};
-
-
-#endif
diff --git a/lib/books/res_Zc_5.vqh b/lib/books/res_Zc_5.vqh
deleted file mode 100644
index 96334f1d..00000000
--- a/lib/books/res_Zc_5.vqh
+++ /dev/null
@@ -1,89 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
- * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
- * by the XIPHOPHORUS Company, http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by vq/somethingorother
-
- ********************************************************************/
-
-#ifndef _V_res_Zc_5_VQH_
-#define _V_res_Zc_5_VQH_
-#include "codebook.h"
-
-static long _vq_quantlist_res_Zc_5[] = {
- 1,
- 0,
- 2,
-};
-
-static long _vq_lengthlist_res_Zc_5[] = {
- 1, 4, 3, 0, 0, 0, 0, 0, 0, 4, 5, 5, 0, 0, 0, 0,
- 0, 0, 3, 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 float _vq_quantthresh_res_Zc_5[] = {
- -0.5, 0.5,
-};
-
-static long _vq_quantmap_res_Zc_5[] = {
- 1, 0, 2,
-};
-
-static encode_aux_threshmatch _vq_auxt_res_Zc_5 = {
- _vq_quantthresh_res_Zc_5,
- _vq_quantmap_res_Zc_5,
- 3,
- 3
-};
-
-static long _vq_pigeonmap_res_Zc_5[] = {
- 0, 0,
-};
-
-static long _vq_fitlist_res_Zc_5[] = {
- 0, 1, 2, 9, 10, 11, 18, 19,
- 20,
-};
-
-static long _vq_fitmap_res_Zc_5[] = {
- 0,
-};
-
-static long _vq_fitlength_res_Zc_5[] = {
- 9,
-};
-
-static encode_aux_pigeonhole _vq_auxp_res_Zc_5 = {
- -1, 1, 2, 1,
- _vq_pigeonmap_res_Zc_5,
- 9,
- _vq_fitlist_res_Zc_5,
- _vq_fitmap_res_Zc_5,
- _vq_fitlength_res_Zc_5
-};
-
-static static_codebook _vq_book_res_Zc_5 = {
- 4, 81,
- _vq_lengthlist_res_Zc_5,
- 1, -535822336, 1611661312, 2, 0,
- _vq_quantlist_res_Zc_5,
- NULL,
- &_vq_auxt_res_Zc_5,
- &_vq_auxp_res_Zc_5,
- 0
-};
-
-
-#endif
diff --git a/lib/books/res_Zc_6.vqh b/lib/books/res_Zc_6.vqh
deleted file mode 100644
index c0987ab4..00000000
--- a/lib/books/res_Zc_6.vqh
+++ /dev/null
@@ -1,129 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
- * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
- * by the XIPHOPHORUS Company, http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by vq/somethingorother
-
- ********************************************************************/
-
-#ifndef _V_res_Zc_6_VQH_
-#define _V_res_Zc_6_VQH_
-#include "codebook.h"
-
-static long _vq_quantlist_res_Zc_6[] = {
- 2,
- 1,
- 3,
- 0,
- 4,
-};
-
-static long _vq_lengthlist_res_Zc_6[] = {
- 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, 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, 6,10, 9,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 6, 6, 7, 8,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,
-};
-
-static float _vq_quantthresh_res_Zc_6[] = {
- -1.5, -0.5, 0.5, 1.5,
-};
-
-static long _vq_quantmap_res_Zc_6[] = {
- 3, 1, 0, 2, 4,
-};
-
-static encode_aux_threshmatch _vq_auxt_res_Zc_6 = {
- _vq_quantthresh_res_Zc_6,
- _vq_quantmap_res_Zc_6,
- 5,
- 5
-};
-
-static long _vq_pigeonmap_res_Zc_6[] = {
- 1, 0, 0, 0,
-};
-
-static long _vq_fitlist_res_Zc_6[] = {
- 0, 1, 2, 3, 25, 26, 27, 28,
- 50, 51, 52, 53, 75, 76, 77, 78,
- 4, 29, 54, 79, 100, 101, 102, 103,
- 104,
-};
-
-static long _vq_fitmap_res_Zc_6[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-
-static long _vq_fitlength_res_Zc_6[] = {
- 25, 25, 25, 25, 25, 25, 25, 25,
- 25, 25, 25, 25, 25, 25, 25, 25,
-};
-
-static encode_aux_pigeonhole _vq_auxp_res_Zc_6 = {
- -2, 1, 4, 2,
- _vq_pigeonmap_res_Zc_6,
- 25,
- _vq_fitlist_res_Zc_6,
- _vq_fitmap_res_Zc_6,
- _vq_fitlength_res_Zc_6
-};
-
-static static_codebook _vq_book_res_Zc_6 = {
- 4, 625,
- _vq_lengthlist_res_Zc_6,
- 1, -533725184, 1611661312, 3, 0,
- _vq_quantlist_res_Zc_6,
- NULL,
- &_vq_auxt_res_Zc_6,
- &_vq_auxp_res_Zc_6,
- 0
-};
-
-
-#endif
diff --git a/lib/books/res_Zc_7.vqh b/lib/books/res_Zc_7.vqh
deleted file mode 100644
index f5a84afd..00000000
--- a/lib/books/res_Zc_7.vqh
+++ /dev/null
@@ -1,119 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
- * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
- * by the XIPHOPHORUS Company, http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by vq/somethingorother
-
- ********************************************************************/
-
-#ifndef _V_res_Zc_7_VQH_
-#define _V_res_Zc_7_VQH_
-#include "codebook.h"
-
-static long _vq_quantlist_res_Zc_7[] = {
- 7,
- 6,
- 8,
- 5,
- 9,
- 4,
- 10,
- 3,
- 11,
- 2,
- 12,
- 1,
- 13,
- 0,
- 14,
-};
-
-static long _vq_lengthlist_res_Zc_7[] = {
- 1, 3, 3, 5, 4, 4, 4, 7, 6, 8, 0, 0, 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,
-};
-
-static float _vq_quantthresh_res_Zc_7[] = {
- -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5,
- 1.5, 2.5, 3.5, 4.5, 5.5, 6.5,
-};
-
-static long _vq_quantmap_res_Zc_7[] = {
- 13, 11, 9, 7, 5, 3, 1, 0,
- 2, 4, 6, 8, 10, 12, 14,
-};
-
-static encode_aux_threshmatch _vq_auxt_res_Zc_7 = {
- _vq_quantthresh_res_Zc_7,
- _vq_quantmap_res_Zc_7,
- 15,
- 15
-};
-
-static long _vq_pigeonmap_res_Zc_7[] = {
- 4, 3, 3, 2, 1, 1, 0, 0,
- 0, 1, 2, 2, 3, 4,
-};
-
-static long _vq_fitlist_res_Zc_7[] = {
- 0, 1, 2, 3, 4, 6, 5, 7,
- 8, 9, 12,
-};
-
-static long _vq_fitmap_res_Zc_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,
-};
-
-static long _vq_fitlength_res_Zc_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,
-};
-
-static encode_aux_pigeonhole _vq_auxp_res_Zc_7 = {
- -7, 1, 14, 5,
- _vq_pigeonmap_res_Zc_7,
- 11,
- _vq_fitlist_res_Zc_7,
- _vq_fitmap_res_Zc_7,
- _vq_fitlength_res_Zc_7
-};
-
-static static_codebook _vq_book_res_Zc_7 = {
- 2, 225,
- _vq_lengthlist_res_Zc_7,
- 1, -530841600, 1611661312, 4, 0,
- _vq_quantlist_res_Zc_7,
- NULL,
- &_vq_auxt_res_Zc_7,
- &_vq_auxp_res_Zc_7,
- 0
-};
-
-
-#endif
diff --git a/lib/books/res_Zc_8.vqh b/lib/books/res_Zc_8.vqh
deleted file mode 100644
index 4644aad6..00000000
--- a/lib/books/res_Zc_8.vqh
+++ /dev/null
@@ -1,1234 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
- * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
- * by the XIPHOPHORUS Company, http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by vq/somethingorother
-
- ********************************************************************/
-
-#ifndef _V_res_Zc_8_VQH_
-#define _V_res_Zc_8_VQH_
-#include "codebook.h"
-
-static long _vq_quantlist_res_Zc_8[] = {
- 22,
- 21,
- 23,
- 20,
- 24,
- 19,
- 25,
- 18,
- 26,
- 17,
- 27,
- 16,
- 28,
- 15,
- 29,
- 14,
- 30,
- 13,
- 31,
- 12,
- 32,
- 11,
- 33,
- 10,
- 34,
- 9,
- 35,
- 8,
- 36,
- 7,
- 37,
- 6,
- 38,
- 5,
- 39,
- 4,
- 40,
- 3,
- 41,
- 2,
- 42,
- 1,
- 43,
- 0,
- 44,
-};
-
-static long _vq_lengthlist_res_Zc_8[] = {
- 3, 5, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 8, 9, 9, 9,
- 9, 9, 9,10, 9,10,10,10,10,11,10,12,11,12,11,13,
- 11,13,12,15,14,15,13,15, 0,15,17, 0,16, 0, 5, 5,
- 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10,
- 10,10,10,10,11,11,11,11,12,11,12,12,12,12,13,15,
- 15,14,14,15,15, 0,17, 0, 0,16, 0, 5, 5, 6, 6, 7,
- 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
- 10,10,10,11,10,11,11,11,11,13,12,13,13,13,13,13,
- 13,14,14,16,16,16, 0, 0, 7, 7, 7, 7, 8, 8, 8, 8,
- 9, 9, 9,10,10,10,10,10,10,10,10,10,11,10,11,11,
- 11,11,11,11,12,12,12,12,14,14,13,14,14,14,15,16,
- 16, 0,16,16, 0, 0, 0, 7, 7, 8, 8, 8, 8, 9, 9, 9,
- 9,10,10,10,10,10,10,11,10,10,11,11,11,11,11,12,
- 12,13,12,12,12,13,12,13,13,14,14,14,15,16, 0,16,
- 16, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9, 9,10,10,10,
- 11,10,11,11,11,11,11,11,12,12,11,12,12,12,13,13,
- 12,13,13,14,14,14,15,15,15,15,15, 0,16, 0, 0, 0,
- 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10,10,10,10,
- 10,10,11,11,11,11,12,12,12,12,12,12,13,14,12,13,
- 13,14,13,14,15,16,16,16, 0,16,15, 0, 0, 0, 8, 9,
- 9, 9, 9, 9,10,10,10,10,10,11,10,10,11,11,12,11,
- 12,12,12,12,12,13,12,14,12,13,13,14,14,14,15,15,
- 14, 0,15,15,16,16, 0,16, 0, 0, 0, 0, 0, 9, 8, 9,
- 9, 9,10,10,10,10,10,10,11,11,11,11,11,11,12,12,
- 12,12,12,13,12,13,13,14,14,13,14,14,13,14,14,15,
- 15,16, 0, 0,16, 0, 0, 0, 0, 0, 9, 9, 9, 9,10,10,
- 11,10,11,10,11,11,11,11,11,11,12,12,13,12,13,13,
- 13,14,14,13,14,14,14,13,16,15,16,15, 0,15, 0,15,
- 16, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9,10,10,10,10,11,
- 11,11,11,11,11,11,11,12,12,12,12,13,13,14,13,14,
- 14,13,14,14,14,15,14,15,16,16,16, 0,16,16, 0, 0,
- 0, 0, 0, 0, 9,10,10,10,10,10,10,10,11,11,11,11,
- 11,11,12,11,12,12,13,12,13,13,14,14,13,14,15,14,
- 15,14,15,14,15, 0, 0, 0,15,16,16,16, 0, 0, 0, 0,
- 0, 0, 0,10,10,11,10,10,10,11,11,11,11,11,11,12,
- 12,12,12,12,13,13,14,13,14,14,14,14,14,13,15,14,
- 15,16, 0, 0, 0,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 10,10,10,11,11,11,11,11,12,11,12,12,11,12,12,12,
- 13,13,13,14,14,14,14,15,15,14,14,15,15,15, 0, 0,
- 16,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,10,
- 10,11,11,11,11,11,11,11,11,13,12,12,12,12,13,13,
- 13,13,14,15,15,14,16,14,15, 0,14,16, 0,16, 0,15,
- 0,15, 0, 0, 0, 0, 0, 0, 0, 0,11,10,11,10,11,11,
- 11,11,11,11,11,12,12,12,12,12,13,13,13,12,13,15,
- 16,13,14,15,16, 0,15,15, 0,16,15, 0, 0,16, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11,11,10,11,11,11,
- 11,12,11,12,12,12,12,13,12,14,14,15,14,14,14,15,
- 0,16,15, 0,15,16,15,15,16,16, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,11,11,11,11,11,11,11,11,12,12,
- 12,12,13,12,13,13,14,13,13,13,15,13,16, 0, 0,15,
- 15, 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,11,11,11,11,11,11,12,11,12,12,12,12,13,
- 13,13,13,13,13,14,16,15,14,16,16, 0, 0, 0,16, 0,
- 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 12,11,12,12,12,12,12,12,12,12,12,13,13,13,13,13,
- 14,13,14,13,15,15,15,15,15,16,15,16,16,15, 0,16,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,
- 12,12,12,12,12,12,12,13,12,12,12,13,13,13,14,14,
- 14,15,15,16,15, 0,16, 0,16,16,16, 0, 0, 0,16, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,
- 12,12,12,12,12,12,13,13,13,13,14,12,14,14,15,14,
- 15,15, 0,16,15,15,15,16, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,
- 13,12,12,13,13,13,13,13,14,15,14,15,15,16,15,16,
- 16, 0,16, 0, 0,16, 0,16, 0,16, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,12,12,13,12,13,12,13,13,13,13,
- 13,13,13,12,13,14,14,14,14,15,15, 0, 0, 0,16, 0,
- 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,13,13,13,12,13,13,12,13,13,12,14,
- 13,14,14,14,15,16,15,15,15,16,16, 0, 0,16, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,13,13,13,13,13,13,14,13,12,13,13,15,14,14,
- 14,14,14,15,15,15, 0,15, 0, 0, 0,16, 0, 0, 0, 0,
- 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,
- 13,13,12,13,14,13,13,13,12,14,13,13,13,14,13,15,
- 15, 0,16, 0, 0,16, 0,16,15, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,13,12,14,
- 13,16,14,13,13,13,14,14,14,13,14,15,16,15,15, 0,
- 15,16,15,16,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,13,13,13,13,
- 13,14,14,14,14,14,14,14,14,16,15,15,15,16,15,15,
- 0, 0, 0, 0, 0, 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,13,14,13,13,13,13,14,13,
- 15,13,13,14,14,14,15,16,15,14, 0,16, 0,15, 0, 0,
- 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,13,13,13,14,13,15,15,14,14,14,14,
- 14,15,15,15,15, 0,15, 0, 0,16, 0,16,16, 0, 0, 0,
- 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,14,13,13,14,14,14,13,14,14,14,14,14,14,16,
- 16,16,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0,13,14,13,13,13,13,14,14,14,15,14,15,14,14,16,
- 15, 0,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,13,13,
- 14,14,14,14,14,15,15,15,16,15,14,16,15,16,16, 0,
- 0, 0, 0,16, 0, 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,16,14,13,13,13,
- 14,15,16,14,15,15, 0, 0,16,15, 0,15,14,16,16,16,
- 0, 0, 0, 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,16,14,14,13,14,14,16,13,
- 15,14,14,16,15,15,16,16, 0,15, 0, 0, 0, 0, 0, 0,
- 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,15,14,15,14,16,13,15,15,14,
- 16,15, 0, 0,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,13,14,15,14,15,15,14,15,15, 0, 0,16,
- 0, 0,15,15, 0,15, 0, 0,16, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0,14,13,15,14,14,15,15,15,16,16,16,16,16, 0,16,
- 16,16, 0, 0,16, 0,16, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14,13,
- 14,15,15,14,16,15,15,15,15,15,15, 0, 0,16, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14,13,16,
- 15,14,15,16,16, 0,15,16,15, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14,14,15,15,15,15,
- 16,15,15, 0, 0,16,16,15,16, 0, 0,16, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,14,14,15,16,15, 0,16,14,16,
- 15, 0, 0,15,16, 0, 0, 0, 0, 0,16, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,12,14,13,16,14,14, 0,15, 0,16, 0,16,
- 16, 0, 0, 0,16, 0, 0, 0,16, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,14,14,16,16,16,16, 0,16,15, 0,15,16, 0,
- 0, 0,16, 0, 0,16, 0, 0,16,
-};
-
-static float _vq_quantthresh_res_Zc_8[] = {
- -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, -15.5, -14.5,
- -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, -7.5, -6.5,
- -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5,
- 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5,
- 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5,
- 18.5, 19.5, 20.5, 21.5,
-};
-
-static long _vq_quantmap_res_Zc_8[] = {
- 43, 41, 39, 37, 35, 33, 31, 29,
- 27, 25, 23, 21, 19, 17, 15, 13,
- 11, 9, 7, 5, 3, 1, 0, 2,
- 4, 6, 8, 10, 12, 14, 16, 18,
- 20, 22, 24, 26, 28, 30, 32, 34,
- 36, 38, 40, 42, 44,
-};
-
-static encode_aux_threshmatch _vq_auxt_res_Zc_8 = {
- _vq_quantthresh_res_Zc_8,
- _vq_quantmap_res_Zc_8,
- 45,
- 45
-};
-
-static long _vq_pigeonmap_res_Zc_8[] = {
- 14, 13, 13, 12, 11, 11, 10, 9,
- 9, 8, 7, 7, 6, 5, 5, 4,
- 3, 3, 2, 1, 1, 0, 0, 0,
- 1, 2, 2, 3, 4, 4, 5, 6,
- 6, 7, 8, 8, 9, 10, 10, 11,
- 12, 12, 13, 14,
-};
-
-static long _vq_fitlist_res_Zc_8[] = {
- 0, 1, 2, 3, 46, 47, 48, 91,
- 136, 4, 49, 92, 137, 6, 51, 94,
- 139, 93, 96, 184, 183, 186, 274, 5,
- 7, 50, 52, 95, 138, 140, 8, 53,
- 141, 97, 185, 98, 187, 273, 275, 188,
- 276, 9, 54, 142, 10, 55, 143, 12,
- 57, 100, 145, 99, 102, 190, 189, 277,
- 278, 192, 280, 7, 9, 11, 13, 52,
- 54, 56, 58, 99, 101, 144, 146, 5,
- 50, 97, 142, 8, 10, 12, 14, 53,
- 55, 57, 59, 100, 102, 145, 147, 103,
- 189, 191, 95, 187, 98, 104, 190, 192,
- 193, 279, 281, 185, 277, 188, 194, 280,
- 282, 15, 60, 148, 16, 61, 149, 18,
- 63, 106, 151, 105, 108, 196, 195, 283,
- 284, 198, 286, 13, 15, 17, 19, 58,
- 60, 62, 64, 105, 107, 150, 152, 11,
- 56, 103, 148, 14, 16, 18, 20, 59,
- 61, 63, 65, 106, 108, 151, 153, 109,
- 195, 197, 101, 193, 104, 110, 196, 198,
- 199, 285, 287, 191, 283, 194, 200, 286,
- 288, 21, 66, 154, 22, 67, 155, 24,
- 69, 112, 157, 111, 114, 202, 201, 289,
- 290, 204, 292, 19, 21, 23, 25, 64,
- 66, 68, 70, 111, 113, 156, 158, 17,
- 62, 109, 154, 20, 22, 24, 26, 65,
- 67, 69, 71, 112, 114, 157, 159, 115,
- 201, 203, 107, 199, 110, 116, 202, 204,
- 205, 291, 293, 197, 289, 200, 206, 292,
- 294, 27, 72, 160, 28, 73, 161, 30,
- 75, 118, 163, 117, 120, 208, 207, 295,
- 296, 210, 298, 25, 27, 29, 31, 70,
- 72, 74, 76, 117, 119, 162, 164, 23,
- 68, 115, 160, 26, 28, 30, 32, 71,
- 73, 75, 77, 118, 120, 163, 165, 121,
- 207, 209, 113, 205, 116, 122, 208, 210,
- 211, 297, 299, 203, 295, 206, 212, 298,
- 300, 33, 78, 166, 34, 79, 167, 36,
- 81, 124, 169, 123, 126, 214, 213, 301,
- 302, 216, 304, 31, 33, 35, 37, 76,
- 78, 80, 82, 123, 125, 168, 170, 29,
- 74, 121, 166, 32, 34, 36, 38, 77,
- 79, 81, 83, 124, 126, 169, 171, 127,
- 213, 215, 119, 211, 122, 128, 214, 216,
- 217, 303, 305, 209, 301, 212, 218, 304,
- 306, 39, 84, 172, 173, 42, 130, 175,
- 129, 132, 220, 219, 307, 308, 310, 37,
- 39, 41, 82, 84, 86, 129, 131, 174,
- 176, 35, 80, 127, 172, 38, 42, 44,
- 83, 89, 130, 132, 175, 133, 219, 221,
- 125, 217, 128, 220, 223, 309, 311, 215,
- 307, 218, 224, 310, 178, 179, 313, 314,
- 262, 264, 266, 268, 354, 356, 170, 260,
- 352, 173, 263, 265, 355, 357, 399, 401,
- 305, 397, 308, 400, 359, 404, 46, 136,
- 137, 138, 228, 47, 139, 229, 49, 141,
- 231, 319, 0, 1, 48, 2, 4, 51,
- 91, 92, 93, 183, 184, 185, 273, 274,
- 275, 94, 186, 276, 50, 140, 142, 230,
- 232, 318, 320, 143, 233, 321, 3, 5,
- 52, 6, 53, 95, 187, 277, 365, 96,
- 188, 278, 366, 322, 410, 323, 411, 367,
- 455, 368, 456, 457, 458, 50, 52, 138,
- 140, 142, 144, 228, 230, 232, 234, 320,
- 322, 51, 53, 139, 141, 143, 145, 229,
- 231, 233, 235, 321, 323, 55, 147, 237,
- 325, 5, 7, 48, 54, 6, 8, 49,
- 10, 57, 95, 97, 183, 185, 187, 189,
- 273, 275, 277, 279, 365, 367, 96, 98,
- 184, 186, 188, 190, 274, 276, 278, 280,
- 366, 368, 100, 192, 282, 370, 54, 56,
- 142, 144, 146, 148, 232, 234, 236, 238,
- 324, 326, 52, 140, 230, 322, 55, 57,
- 143, 145, 147, 149, 233, 235, 237, 239,
- 325, 327, 9, 11, 58, 7, 50, 10,
- 12, 53, 59, 99, 101, 187, 189, 191,
- 193, 277, 279, 281, 283, 369, 371, 97,
- 185, 275, 367, 100, 102, 188, 190, 192,
- 194, 278, 280, 282, 284, 370, 372, 56,
- 58, 144, 146, 148, 150, 234, 236, 238,
- 240, 326, 328, 57, 59, 145, 147, 149,
- 151, 235, 237, 239, 241, 327, 329, 61,
- 153, 243, 331, 11, 13, 54, 60, 12,
- 14, 55, 16, 63, 101, 103, 189, 191,
- 193, 195, 279, 281, 283, 285, 371, 373,
- 102, 104, 190, 192, 194, 196, 280, 282,
- 284, 286, 372, 374, 106, 198, 288, 376,
- 60, 62, 148, 150, 152, 154, 238, 240,
- 242, 244, 330, 332, 58, 146, 236, 328,
- 61, 63, 149, 151, 153, 155, 239, 241,
- 243, 245, 331, 333, 15, 17, 64, 13,
- 56, 16, 18, 59, 65, 105, 107, 193,
- 195, 197, 199, 283, 285, 287, 289, 375,
- 377, 103, 191, 281, 373, 106, 108, 194,
- 196, 198, 200, 284, 286, 288, 290, 376,
- 378, 62, 64, 150, 152, 154, 156, 240,
- 242, 244, 246, 332, 334, 63, 65, 151,
- 153, 155, 157, 241, 243, 245, 247, 333,
- 335, 67, 159, 249, 337, 17, 19, 60,
- 66, 18, 20, 61, 22, 69, 107, 109,
- 195, 197, 199, 201, 285, 287, 289, 291,
- 377, 379, 108, 110, 196, 198, 200, 202,
- 286, 288, 290, 292, 378, 380, 112, 204,
- 294, 382, 66, 68, 154, 156, 158, 160,
- 244, 246, 248, 250, 336, 338, 64, 152,
- 242, 334, 67, 69, 155, 157, 159, 161,
- 245, 247, 249, 251, 337, 339, 21, 23,
- 70, 19, 62, 22, 24, 65, 71, 111,
- 113, 199, 201, 203, 205, 289, 291, 293,
- 295, 381, 383, 109, 197, 287, 379, 112,
- 114, 200, 202, 204, 206, 290, 292, 294,
- 296, 382, 384, 68, 70, 156, 158, 160,
- 162, 246, 248, 250, 252, 338, 340, 69,
- 71, 157, 159, 161, 163, 247, 249, 251,
- 253, 339, 341, 73, 165, 255, 343, 23,
- 25, 66, 72, 24, 26, 67, 28, 75,
- 113, 115, 201, 203, 205, 207, 291, 293,
- 295, 297, 383, 385, 114, 116, 202, 204,
- 206, 208, 292, 294, 296, 298, 384, 386,
- 118, 210, 300, 388, 72, 74, 160, 162,
- 164, 166, 250, 252, 254, 256, 342, 344,
- 70, 158, 248, 340, 73, 75, 161, 163,
- 165, 167, 251, 253, 255, 257, 343, 345,
- 27, 29, 76, 25, 68, 28, 30, 71,
- 77, 117, 119, 205, 207, 209, 211, 295,
- 297, 299, 301, 387, 389, 115, 203, 293,
- 385, 118, 120, 206, 208, 210, 212, 296,
- 298, 300, 302, 388, 390, 74, 76, 162,
- 164, 166, 168, 252, 254, 256, 258, 344,
- 346, 75, 77, 163, 165, 167, 169, 253,
- 255, 257, 259, 345, 347, 79, 171, 261,
- 349, 29, 31, 72, 78, 30, 32, 73,
- 34, 81, 119, 121, 207, 209, 211, 213,
- 297, 299, 301, 303, 389, 391, 120, 122,
- 208, 210, 212, 214, 298, 300, 302, 304,
- 390, 392, 124, 216, 306, 394, 78, 80,
- 166, 168, 170, 172, 256, 258, 260, 262,
- 348, 350, 76, 164, 254, 346, 79, 81,
- 167, 169, 171, 173, 257, 259, 261, 263,
- 349, 351, 33, 35, 82, 31, 74, 34,
- 36, 77, 83, 123, 125, 211, 213, 215,
- 217, 301, 303, 305, 307, 393, 395, 121,
- 209, 299, 391, 124, 126, 212, 214, 216,
- 218, 302, 304, 306, 308, 394, 396, 80,
- 82, 168, 170, 172, 174, 258, 260, 262,
- 264, 350, 352, 81, 83, 169, 171, 173,
- 175, 259, 261, 263, 265, 351, 355, 35,
- 37, 78, 84, 36, 38, 79, 125, 127,
- 213, 215, 217, 219, 303, 305, 307, 309,
- 395, 397, 126, 128, 214, 216, 218, 220,
- 304, 306, 308, 310, 396, 398, 130, 400,
- 46, 136, 137, 138, 228, 229, 230, 318,
- 319, 320, 47, 139, 231, 321, 91, 183,
- 273, 274, 275, 365, 92, 184, 276, 366,
- 455, 456, 368, 458, 410, 500, 411, 501,
- 413, 503, 457, 547, 548, 412, 502, 322,
- 323, 140, 142, 228, 230, 232, 234, 318,
- 320, 322, 324, 410, 412, 141, 143, 229,
- 231, 233, 235, 319, 321, 323, 325, 411,
- 413, 145, 237, 327, 415, 185, 187, 273,
- 275, 277, 279, 365, 367, 369, 455, 457,
- 186, 188, 274, 276, 278, 280, 366, 368,
- 370, 456, 458, 190, 282, 372, 460, 459,
- 547, 548, 462, 550, 144, 146, 232, 234,
- 236, 238, 322, 324, 326, 328, 414, 416,
- 142, 230, 320, 412, 145, 147, 233, 235,
- 237, 239, 323, 325, 327, 329, 415, 417,
- 189, 191, 277, 279, 281, 283, 367, 369,
- 371, 373, 459, 461, 187, 275, 365, 457,
- 190, 192, 278, 280, 282, 284, 368, 370,
- 372, 374, 460, 462, 463, 549, 551, 455,
- 547, 458, 464, 550, 552, 146, 148, 234,
- 236, 238, 240, 324, 326, 328, 330, 416,
- 418, 147, 149, 235, 237, 239, 241, 325,
- 327, 329, 331, 417, 419, 151, 243, 333,
- 421, 191, 193, 279, 281, 283, 285, 369,
- 371, 373, 375, 461, 463, 192, 194, 280,
- 282, 284, 286, 370, 372, 374, 376, 462,
- 464, 196, 288, 378, 466, 459, 465, 551,
- 553, 460, 552, 554, 468, 556, 150, 152,
- 238, 240, 242, 244, 328, 330, 332, 334,
- 420, 422, 148, 236, 326, 418, 151, 153,
- 239, 241, 243, 245, 329, 331, 333, 335,
- 421, 423, 195, 197, 283, 285, 287, 289,
- 373, 375, 377, 379, 465, 467, 193, 281,
- 371, 463, 196, 198, 284, 286, 288, 290,
- 374, 376, 378, 380, 466, 468, 469, 555,
- 557, 461, 553, 464, 470, 556, 558, 152,
- 154, 240, 242, 244, 246, 330, 332, 334,
- 336, 422, 424, 153, 155, 241, 243, 245,
- 247, 331, 333, 335, 337, 423, 425, 157,
- 249, 339, 427, 197, 199, 285, 287, 289,
- 291, 375, 377, 379, 381, 467, 469, 198,
- 200, 286, 288, 290, 292, 376, 378, 380,
- 382, 468, 470, 202, 294, 384, 472, 465,
- 471, 557, 559, 466, 558, 560, 474, 562,
- 156, 158, 244, 246, 248, 250, 334, 336,
- 338, 340, 426, 428, 154, 242, 332, 424,
- 157, 159, 245, 247, 249, 251, 335, 337,
- 339, 341, 427, 429, 201, 203, 289, 291,
- 293, 295, 379, 381, 383, 385, 471, 473,
- 199, 287, 377, 469, 202, 204, 290, 292,
- 294, 296, 380, 382, 384, 386, 472, 474,
- 475, 561, 563, 467, 559, 470, 476, 562,
- 564, 158, 160, 246, 248, 250, 252, 336,
- 338, 340, 342, 428, 430, 159, 161, 247,
- 249, 251, 253, 337, 339, 341, 343, 429,
- 431, 163, 255, 345, 433, 203, 205, 291,
- 293, 295, 297, 381, 383, 385, 387, 473,
- 475, 204, 206, 292, 294, 296, 298, 382,
- 384, 386, 388, 474, 476, 208, 300, 390,
- 478, 471, 477, 563, 565, 472, 564, 566,
- 480, 568, 162, 164, 250, 252, 254, 256,
- 340, 342, 344, 346, 432, 434, 160, 248,
- 338, 430, 163, 165, 251, 253, 255, 257,
- 341, 343, 345, 347, 433, 435, 207, 209,
- 295, 297, 299, 301, 385, 387, 389, 391,
- 477, 479, 205, 293, 383, 475, 208, 210,
- 296, 298, 300, 302, 386, 388, 390, 392,
- 478, 480, 481, 567, 569, 473, 565, 476,
- 482, 568, 570, 164, 166, 252, 254, 256,
- 258, 342, 344, 346, 348, 434, 436, 165,
- 167, 253, 255, 257, 259, 343, 345, 347,
- 349, 435, 437, 169, 261, 351, 439, 209,
- 211, 297, 299, 301, 303, 387, 389, 391,
- 393, 479, 481, 210, 212, 298, 300, 302,
- 304, 388, 390, 392, 394, 480, 482, 214,
- 306, 396, 484, 477, 483, 569, 571, 478,
- 570, 572, 486, 574, 168, 170, 256, 258,
- 260, 262, 346, 348, 350, 352, 438, 440,
- 166, 254, 344, 436, 169, 171, 257, 259,
- 261, 263, 347, 349, 351, 439, 441, 213,
- 215, 301, 303, 305, 307, 391, 393, 395,
- 397, 483, 485, 211, 299, 389, 481, 214,
- 216, 302, 304, 306, 308, 392, 394, 396,
- 398, 484, 486, 487, 573, 575, 479, 571,
- 482, 488, 574, 576, 170, 172, 258, 260,
- 262, 264, 348, 350, 352, 354, 440, 442,
- 171, 173, 259, 261, 263, 265, 349, 351,
- 355, 441, 443, 175, 357, 445, 215, 217,
- 303, 305, 307, 309, 393, 395, 397, 399,
- 485, 487, 216, 218, 304, 306, 308, 310,
- 394, 396, 398, 400, 486, 488, 220, 490,
- 483, 489, 575, 577, 484, 576, 492, 174,
- 176, 262, 264, 266, 268, 352, 354, 356,
- 172, 260, 350, 442, 175, 263, 265, 355,
- 357, 359, 445, 447, 219, 221, 307, 309,
- 311, 313, 397, 399, 401, 489, 217, 305,
- 395, 487, 220, 308, 310, 314, 398, 400,
- 404, 490, 492, 493, 581, 485, 577, 488,
- 582, 178, 448, 179, 223, 224, 320, 322,
- 410, 412, 414, 500, 502, 504, 592, 321,
- 323, 411, 413, 415, 501, 503, 505, 593,
- 325, 417, 507, 595, 230, 232, 318, 324,
- 231, 233, 319, 235, 327, 365, 367, 455,
- 457, 459, 547, 549, 637, 366, 368, 456,
- 458, 460, 548, 550, 638, 370, 462, 552,
- 640, 594, 682, 683, 597, 685, 639, 642,
- 730, 729, 732, 820, 324, 326, 412, 414,
- 416, 418, 502, 504, 506, 508, 594, 596,
- 322, 410, 500, 592, 325, 327, 413, 415,
- 417, 419, 503, 505, 507, 509, 595, 597,
- 234, 236, 328, 232, 320, 235, 237, 323,
- 329, 369, 371, 457, 459, 461, 463, 547,
- 549, 551, 553, 639, 641, 367, 455, 637,
- 370, 372, 458, 460, 462, 464, 548, 550,
- 552, 554, 640, 642, 326, 328, 414, 416,
- 418, 420, 504, 506, 508, 510, 596, 598,
- 327, 329, 415, 417, 419, 421, 505, 507,
- 509, 511, 597, 599, 331, 423, 513, 601,
- 236, 238, 324, 330, 237, 239, 325, 241,
- 333, 371, 373, 459, 461, 463, 465, 549,
- 551, 553, 555, 641, 643, 372, 374, 460,
- 462, 464, 466, 550, 552, 554, 556, 642,
- 644, 376, 468, 558, 646, 330, 332, 418,
- 420, 422, 424, 508, 510, 512, 514, 600,
- 602, 328, 416, 506, 598, 331, 333, 419,
- 421, 423, 425, 509, 511, 513, 515, 601,
- 603, 240, 242, 334, 238, 326, 241, 243,
- 329, 335, 375, 377, 463, 465, 467, 469,
- 553, 555, 557, 559, 645, 647, 373, 461,
- 551, 643, 376, 378, 464, 466, 468, 470,
- 554, 556, 558, 560, 646, 648, 332, 334,
- 420, 422, 424, 426, 510, 512, 514, 516,
- 602, 604, 333, 335, 421, 423, 425, 427,
- 511, 513, 515, 517, 603, 605, 337, 429,
- 519, 607, 242, 244, 330, 336, 243, 245,
- 331, 247, 339, 377, 379, 465, 467, 469,
- 471, 555, 557, 559, 561, 647, 649, 378,
- 380, 466, 468, 470, 472, 556, 558, 560,
- 562, 648, 650, 382, 474, 564, 652, 336,
- 338, 424, 426, 428, 430, 514, 516, 518,
- 520, 606, 608, 334, 422, 512, 604, 337,
- 339, 425, 427, 429, 431, 515, 517, 519,
- 521, 607, 609, 246, 248, 340, 244, 332,
- 247, 249, 335, 341, 381, 383, 469, 471,
- 473, 475, 559, 561, 563, 565, 651, 653,
- 379, 467, 557, 649, 382, 384, 470, 472,
- 474, 476, 560, 562, 564, 566, 652, 654,
- 338, 340, 426, 428, 430, 432, 516, 518,
- 520, 522, 608, 610, 339, 341, 427, 429,
- 431, 433, 517, 519, 521, 523, 609, 611,
- 343, 435, 525, 613, 248, 250, 336, 342,
- 249, 251, 337, 253, 345, 383, 385, 471,
- 473, 475, 477, 561, 563, 565, 567, 653,
- 655, 384, 386, 472, 474, 476, 478, 562,
- 564, 566, 568, 654, 656, 388, 480, 570,
- 658, 342, 344, 430, 432, 434, 436, 520,
- 522, 524, 526, 612, 614, 340, 428, 518,
- 610, 343, 345, 431, 433, 435, 437, 521,
- 523, 525, 527, 613, 615, 252, 254, 346,
- 250, 338, 253, 255, 341, 347, 387, 389,
- 475, 477, 479, 481, 565, 567, 569, 571,
- 657, 659, 385, 473, 563, 655, 388, 390,
- 476, 478, 480, 482, 566, 568, 570, 572,
- 658, 660, 344, 346, 432, 434, 436, 438,
- 522, 524, 526, 528, 614, 616, 345, 347,
- 433, 435, 437, 439, 523, 525, 527, 529,
- 615, 617, 349, 441, 531, 619, 254, 256,
- 342, 348, 255, 257, 343, 259, 351, 389,
- 391, 477, 479, 481, 483, 567, 569, 571,
- 573, 659, 661, 390, 392, 478, 480, 482,
- 484, 568, 570, 572, 574, 660, 662, 394,
- 486, 576, 664, 348, 350, 436, 438, 440,
- 442, 526, 528, 530, 532, 618, 620, 346,
- 434, 524, 616, 349, 351, 437, 439, 441,
- 443, 527, 529, 531, 619, 621, 258, 260,
- 352, 256, 344, 259, 261, 347, 393, 395,
- 481, 483, 485, 487, 571, 573, 575, 577,
- 663, 391, 479, 569, 661, 394, 396, 482,
- 484, 486, 488, 572, 574, 576, 664, 666,
- 350, 352, 438, 440, 442, 528, 530, 532,
- 620, 351, 439, 441, 443, 445, 529, 531,
- 621, 355, 447, 537, 625, 260, 262, 348,
- 354, 261, 263, 349, 265, 357, 395, 397,
- 483, 485, 487, 489, 573, 575, 577, 667,
- 396, 398, 484, 486, 488, 490, 574, 576,
- 666, 400, 492, 582, 354, 356, 442, 448,
- 532, 536, 538, 624, 352, 440, 530, 355,
- 357, 443, 445, 447, 537, 539, 625, 264,
- 266, 262, 350, 265, 359, 399, 401, 487,
- 489, 493, 577, 581, 669, 671, 397, 485,
- 575, 667, 400, 488, 490, 492, 582, 714,
- 620, 717, 673, 759, 761, 757, 760, 851,
- 758, 356, 448, 536, 538, 357, 359, 445,
- 447, 537, 539, 266, 268, 354, 355, 401,
- 489, 493, 581, 671, 673, 404, 490, 492,
- 582, 318, 319, 320, 410, 500, 501, 502,
- 592, 321, 411, 503, 593, 273, 365, 455,
- 456, 457, 547, 637, 274, 366, 458, 548,
- 638, 639, 729, 640, 730, 549, 550, 682,
- 683, 684, 774, 685, 775, 819, 820, 594,
- 595, 687, 777, 865, 505, 597, 731, 821,
- 732, 822, 864, 912, 911, 1001, 1002, 414,
- 416, 502, 504, 506, 508, 592, 594, 596,
- 598, 684, 686, 412, 500, 682, 415, 417,
- 503, 505, 507, 509, 593, 595, 597, 599,
- 685, 687, 459, 461, 547, 549, 551, 553,
- 637, 639, 641, 643, 729, 731, 457, 460,
- 462, 548, 550, 552, 554, 638, 640, 642,
- 644, 730, 732, 733, 819, 821, 734, 820,
- 822, 416, 418, 504, 506, 508, 510, 594,
- 596, 598, 600, 686, 688, 417, 419, 505,
- 507, 509, 511, 595, 597, 599, 601, 687,
- 689, 421, 513, 603, 691, 461, 463, 549,
- 551, 553, 555, 639, 641, 643, 645, 731,
- 733, 462, 464, 550, 552, 554, 556, 640,
- 642, 644, 646, 732, 734, 466, 558, 648,
- 736, 729, 735, 821, 823, 730, 822, 824,
- 738, 826, 420, 422, 508, 510, 512, 514,
- 598, 600, 602, 604, 690, 692, 418, 506,
- 596, 688, 421, 423, 509, 511, 513, 515,
- 599, 601, 603, 605, 691, 693, 465, 467,
- 553, 555, 557, 559, 643, 645, 647, 649,
- 735, 737, 463, 551, 641, 733, 466, 468,
- 554, 556, 558, 560, 644, 646, 648, 650,
- 736, 738, 739, 825, 827, 731, 823, 734,
- 740, 826, 828, 422, 424, 510, 512, 514,
- 516, 600, 602, 604, 606, 692, 694, 423,
- 425, 511, 513, 515, 517, 601, 603, 605,
- 607, 693, 695, 427, 519, 609, 697, 467,
- 469, 555, 557, 559, 561, 645, 647, 649,
- 651, 737, 739, 468, 470, 556, 558, 560,
- 562, 646, 648, 650, 652, 738, 740, 472,
- 564, 654, 742, 735, 741, 827, 829, 736,
- 828, 830, 744, 832, 426, 428, 514, 516,
- 518, 520, 604, 606, 608, 610, 696, 698,
- 424, 512, 602, 694, 427, 429, 515, 517,
- 519, 521, 605, 607, 609, 611, 697, 699,
- 471, 473, 559, 561, 563, 565, 649, 651,
- 653, 655, 741, 743, 469, 557, 647, 739,
- 472, 474, 560, 562, 564, 566, 650, 652,
- 654, 656, 742, 744, 745, 831, 833, 737,
- 829, 740, 746, 832, 834, 428, 430, 516,
- 518, 520, 522, 606, 608, 610, 612, 698,
- 700, 429, 431, 517, 519, 521, 523, 607,
- 609, 611, 613, 699, 701, 433, 525, 615,
- 703, 473, 475, 561, 563, 565, 567, 651,
- 653, 655, 657, 743, 745, 474, 476, 562,
- 564, 566, 568, 652, 654, 656, 658, 744,
- 746, 478, 570, 660, 748, 741, 747, 833,
- 835, 742, 834, 836, 750, 838, 432, 434,
- 520, 522, 524, 526, 610, 612, 614, 616,
- 702, 704, 430, 518, 608, 700, 433, 435,
- 521, 523, 525, 527, 611, 613, 615, 617,
- 703, 705, 477, 479, 565, 567, 569, 571,
- 655, 657, 659, 661, 747, 749, 475, 563,
- 653, 745, 478, 480, 566, 568, 570, 572,
- 656, 658, 660, 662, 748, 750, 751, 837,
- 839, 743, 835, 746, 838, 840, 434, 436,
- 522, 524, 526, 528, 612, 614, 616, 618,
- 704, 706, 435, 437, 523, 525, 527, 529,
- 613, 615, 617, 619, 705, 707, 439, 531,
- 621, 479, 481, 567, 569, 571, 573, 657,
- 659, 661, 663, 749, 751, 480, 482, 568,
- 570, 572, 574, 658, 660, 662, 664, 750,
- 484, 576, 666, 754, 747, 753, 839, 841,
- 748, 840, 842, 756, 438, 440, 526, 528,
- 530, 532, 616, 618, 620, 708, 710, 436,
- 524, 614, 706, 439, 441, 527, 529, 531,
- 617, 619, 621, 711, 483, 485, 571, 573,
- 575, 577, 661, 663, 667, 753, 481, 569,
- 659, 751, 484, 486, 572, 574, 576, 662,
- 664, 666, 754, 756, 757, 749, 841, 758,
- 846, 440, 442, 528, 530, 532, 618, 620,
- 624, 710, 441, 443, 529, 531, 619, 621,
- 625, 711, 713, 445, 537, 485, 487, 573,
- 575, 577, 663, 667, 669, 757, 486, 488,
- 574, 576, 664, 666, 756, 758, 398, 400,
- 490, 492, 582, 760, 753, 759, 754, 846,
- 448, 536, 538, 624, 447, 537, 539, 625,
- 717, 493, 581, 669, 671, 673, 761, 492,
- 582, 759, 851, 758, 760, 942, 714, 804,
- 710, 800, 892, 713, 895, 532, 620, 757,
- 667, 937, 594, 596, 682, 684, 686, 688,
- 774, 776, 778, 864, 866, 592, 595, 597,
- 683, 685, 687, 689, 775, 777, 779, 865,
- 867, 504, 506, 598, 502, 505, 507, 593,
- 599, 639, 641, 729, 731, 733, 819, 821,
- 823, 911, 637, 640, 642, 730, 732, 734,
- 820, 822, 824, 912, 868, 956, 869, 957,
- 913, 1001, 914, 1002, 1003, 1004, 596, 598,
- 684, 686, 688, 690, 774, 776, 778, 780,
- 866, 868, 597, 599, 685, 687, 689, 691,
- 775, 777, 779, 781, 867, 869, 601, 693,
- 783, 871, 506, 508, 594, 600, 507, 509,
- 595, 511, 603, 641, 643, 729, 731, 733,
- 735, 819, 821, 823, 825, 911, 913, 642,
- 644, 730, 732, 734, 736, 820, 822, 824,
- 826, 912, 914, 646, 738, 828, 916, 600,
- 602, 688, 690, 692, 694, 778, 780, 782,
- 784, 870, 872, 598, 686, 776, 868, 601,
- 603, 689, 691, 693, 695, 779, 781, 783,
- 785, 871, 873, 510, 512, 604, 508, 596,
- 511, 513, 599, 605, 645, 647, 733, 735,
- 737, 739, 823, 825, 827, 829, 915, 917,
- 643, 731, 821, 913, 646, 648, 734, 736,
- 738, 740, 824, 826, 828, 830, 916, 918,
- 602, 604, 690, 692, 694, 696, 780, 782,
- 784, 786, 872, 874, 603, 605, 691, 693,
- 695, 697, 781, 783, 785, 787, 873, 875,
- 607, 699, 789, 877, 512, 514, 600, 606,
- 513, 515, 601, 517, 609, 647, 649, 735,
- 737, 739, 741, 825, 827, 829, 831, 917,
- 919, 648, 650, 736, 738, 740, 742, 826,
- 828, 830, 832, 918, 920, 652, 744, 834,
- 922, 606, 608, 694, 696, 698, 700, 784,
- 786, 788, 790, 876, 878, 604, 692, 782,
- 874, 607, 609, 695, 697, 699, 701, 785,
- 787, 789, 791, 877, 879, 516, 518, 610,
- 514, 602, 517, 519, 605, 611, 651, 653,
- 739, 741, 743, 745, 829, 831, 833, 835,
- 921, 923, 649, 737, 827, 919, 652, 654,
- 740, 742, 744, 746, 830, 832, 834, 836,
- 922, 924, 608, 610, 696, 698, 700, 702,
- 786, 788, 790, 792, 878, 880, 609, 611,
- 697, 699, 701, 703, 787, 789, 791, 793,
- 879, 881, 613, 705, 795, 883, 518, 520,
- 606, 612, 519, 521, 607, 523, 615, 653,
- 655, 741, 743, 745, 747, 831, 833, 835,
- 837, 923, 925, 654, 656, 742, 744, 746,
- 748, 832, 834, 836, 838, 924, 926, 658,
- 750, 840, 928, 612, 614, 700, 702, 704,
- 706, 790, 792, 794, 796, 882, 884, 610,
- 698, 788, 880, 613, 615, 701, 703, 705,
- 707, 791, 793, 795, 883, 885, 522, 524,
- 616, 520, 608, 523, 525, 611, 617, 657,
- 659, 745, 747, 749, 751, 835, 837, 839,
- 841, 927, 929, 655, 743, 833, 925, 658,
- 660, 746, 748, 750, 836, 838, 840, 842,
- 928, 930, 614, 616, 702, 704, 706, 708,
- 792, 794, 796, 884, 886, 615, 617, 703,
- 705, 707, 793, 795, 799, 885, 887, 619,
- 711, 889, 524, 526, 612, 618, 525, 527,
- 613, 529, 621, 659, 661, 747, 749, 751,
- 753, 837, 839, 841, 929, 931, 660, 662,
- 748, 750, 754, 838, 840, 842, 930, 932,
- 664, 756, 846, 934, 618, 620, 706, 708,
- 710, 796, 800, 888, 890, 616, 704, 794,
- 886, 619, 621, 707, 711, 713, 799, 889,
- 891, 528, 530, 526, 614, 529, 531, 617,
- 663, 751, 753, 757, 841, 661, 749, 839,
- 931, 664, 666, 754, 756, 758, 842, 846,
- 934, 936, 620, 708, 710, 714, 800, 804,
- 890, 892, 621, 711, 713, 799, 891, 893,
- 625, 717, 895, 530, 532, 618, 624, 531,
- 619, 667, 753, 757, 759, 937, 666, 754,
- 756, 758, 760, 846, 936, 938, 888, 980,
- 982, 889, 981, 983, 934, 1026, 942, 1023,
- 1029, 1117, 1024, 592, 682, 684, 774, 776,
- 864, 866, 593, 683, 685, 775, 777, 865,
- 867, 637, 729, 819, 821, 911, 638, 730,
- 820, 822, 912, 1001, 1002, 914, 1004, 956,
- 1046, 957, 1047, 500, 501, 639, 640, 1003,
- 1093, 1094, 959, 1049, 958, 1048, 868, 869,
- 1183, 1184, 1138, 1139, 1228, 1229, 1185, 1275,
- 1365, 1186, 1276, 1366, 686, 688, 774, 776,
- 778, 780, 864, 866, 868, 870, 956, 958,
- 687, 689, 775, 777, 779, 781, 865, 867,
- 869, 871, 957, 959, 691, 783, 873, 961,
- 731, 733, 819, 821, 823, 825, 911, 913,
- 915, 1001, 1003, 732, 734, 820, 822, 824,
- 826, 912, 914, 916, 1002, 1004, 736, 828,
- 918, 1006, 1005, 1093, 1094, 1008, 1096, 690,
- 692, 778, 780, 782, 784, 868, 870, 872,
- 874, 960, 962, 688, 776, 866, 958, 691,
- 693, 779, 781, 783, 785, 869, 871, 873,
- 875, 961, 963, 735, 737, 823, 825, 827,
- 829, 913, 915, 917, 919, 1005, 1007, 733,
- 821, 911, 1003, 736, 738, 824, 826, 828,
- 830, 914, 916, 918, 920, 1006, 1008, 1009,
- 1095, 1097, 1001, 1093, 1004, 1010, 1096, 1098,
- 692, 694, 780, 782, 784, 786, 870, 872,
- 874, 876, 962, 964, 693, 695, 781, 783,
- 785, 787, 871, 873, 875, 877, 963, 965,
- 697, 789, 879, 967, 737, 739, 825, 827,
- 829, 831, 915, 917, 919, 921, 1007, 1009,
- 738, 740, 826, 828, 830, 832, 916, 918,
- 920, 922, 1008, 1010, 742, 834, 924, 1012,
- 1005, 1011, 1097, 1099, 1006, 1098, 1100, 1014,
- 1102, 696, 698, 784, 786, 788, 790, 874,
- 876, 878, 880, 966, 968, 694, 782, 872,
- 964, 697, 699, 785, 787, 789, 791, 875,
- 877, 879, 881, 967, 969, 741, 743, 829,
- 831, 833, 835, 919, 921, 923, 925, 1011,
- 1013, 739, 827, 917, 1009, 742, 744, 830,
- 832, 834, 836, 920, 922, 924, 926, 1012,
- 1014, 1015, 1101, 1103, 1007, 1099, 1010, 1016,
- 1102, 1104, 698, 700, 786, 788, 790, 792,
- 876, 878, 880, 882, 968, 970, 699, 701,
- 787, 789, 791, 793, 877, 879, 881, 883,
- 969, 971, 703, 795, 885, 973, 743, 745,
- 831, 833, 835, 837, 921, 923, 925, 927,
- 1013, 1015, 744, 746, 832, 834, 836, 838,
- 922, 924, 926, 928, 1014, 1016, 748, 840,
- 930, 1018, 1011, 1017, 1103, 1105, 1012, 1104,
- 1106, 1020, 1108, 702, 704, 790, 792, 794,
- 796, 880, 882, 884, 886, 972, 974, 700,
- 788, 878, 970, 703, 705, 791, 793, 795,
- 881, 883, 885, 887, 973, 975, 747, 749,
- 835, 837, 839, 841, 925, 927, 929, 931,
- 1017, 1019, 745, 833, 923, 1015, 748, 750,
- 836, 838, 840, 842, 926, 928, 930, 932,
- 1018, 1020, 1021, 1107, 1109, 1013, 1105, 1016,
- 1022, 1108, 1110, 704, 706, 792, 794, 796,
- 882, 884, 886, 888, 974, 976, 705, 707,
- 793, 795, 799, 883, 885, 887, 889, 975,
- 977, 891, 979, 749, 751, 837, 839, 841,
- 927, 929, 931, 1019, 1021, 750, 838, 840,
- 842, 928, 930, 932, 934, 1020, 1022, 754,
- 846, 936, 1024, 1017, 1023, 1109, 1111, 1018,
- 1110, 1112, 1026, 1114, 708, 710, 796, 800,
- 886, 888, 890, 892, 980, 706, 794, 884,
- 976, 711, 799, 887, 889, 891, 893, 979,
- 981, 663, 751, 753, 757, 839, 841, 929,
- 931, 937, 1021, 1023, 1113, 754, 756, 842,
- 846, 932, 934, 936, 938, 1024, 1026, 1019,
- 1111, 1022, 1114, 982, 1066, 1070, 974, 1064,
- 1156, 977, 983, 1073, 1159, 1117, 1205, 1109,
- 1112, 714, 804, 892, 800, 890, 982, 717,
- 893, 895, 759, 761, 851, 937, 1029, 1031,
- 757, 760, 938, 942, 1033, 1117, 980, 1070,
- 1168, 981, 983, 1073, 1163, 1207, 1026, 1208,
- 1252, 1250, 1347, 1205, 1304, 1392, 1295, 1387,
- 1388, 891, 979, 888, 889, 1023, 1113, 936,
- 1024, 1114, 866, 868, 956, 958, 960, 1046,
- 1048, 1050, 1138, 867, 869, 957, 959, 961,
- 1047, 1049, 1051, 1139, 871, 963, 1053, 1141,
- 776, 778, 864, 870, 777, 779, 865, 781,
- 873, 911, 913, 1001, 1003, 1005, 1093, 1095,
- 1183, 912, 914, 1002, 1004, 1006, 1094, 1096,
- 1184, 916, 1008, 1098, 1186, 1140, 1228, 1229,
- 1143, 1231, 1185, 1188, 1276, 1275, 1278, 1366,
- 870, 872, 958, 960, 962, 964, 1048, 1050,
- 1052, 1054, 1140, 1142, 868, 956, 1046, 1138,
- 871, 873, 959, 961, 963, 965, 1049, 1051,
- 1053, 1055, 1141, 1143, 780, 782, 874, 778,
- 866, 781, 783, 869, 875, 915, 917, 1003,
- 1005, 1007, 1009, 1093, 1095, 1097, 1099, 1185,
- 1187, 913, 1001, 1183, 916, 918, 1004, 1006,
- 1008, 1010, 1094, 1096, 1098, 1100, 1186, 1188,
- 872, 874, 960, 962, 964, 966, 1050, 1052,
- 1054, 1056, 1142, 1144, 873, 875, 961, 963,
- 965, 967, 1051, 1053, 1055, 1057, 1143, 1145,
- 877, 969, 1059, 1147, 782, 784, 870, 876,
- 783, 785, 871, 787, 879, 917, 919, 1005,
- 1007, 1009, 1011, 1095, 1097, 1099, 1101, 1187,
- 1189, 918, 920, 1006, 1008, 1010, 1012, 1096,
- 1098, 1100, 1102, 1188, 1190, 922, 1014, 1104,
- 1192, 876, 878, 964, 966, 968, 970, 1054,
- 1056, 1058, 1060, 1146, 1148, 874, 962, 1052,
- 1144, 877, 879, 965, 967, 969, 971, 1055,
- 1057, 1059, 1061, 1147, 1149, 786, 788, 880,
- 784, 872, 787, 789, 875, 881, 921, 923,
- 1009, 1011, 1013, 1015, 1099, 1101, 1103, 1105,
- 1191, 1193, 919, 1007, 1097, 1189, 922, 924,
- 1010, 1012, 1014, 1016, 1100, 1102, 1104, 1106,
- 1192, 1194, 878, 880, 966, 968, 970, 972,
- 1056, 1058, 1060, 1062, 1148, 1150, 879, 881,
- 967, 969, 971, 973, 1057, 1059, 1061, 1063,
- 1149, 1151, 883, 975, 1065, 1153, 788, 790,
- 876, 882, 789, 791, 877, 793, 885, 923,
- 925, 1011, 1013, 1015, 1017, 1101, 1103, 1105,
- 1107, 1193, 1195, 924, 926, 1012, 1014, 1016,
- 1018, 1102, 1104, 1106, 1108, 1194, 1196, 928,
- 1020, 1110, 1198, 882, 884, 970, 972, 974,
- 976, 1060, 1062, 1064, 1066, 1152, 1154, 880,
- 968, 1058, 1150, 883, 885, 971, 973, 975,
- 977, 1061, 1063, 1065, 1153, 1155, 792, 794,
- 886, 790, 878, 793, 795, 881, 887, 927,
- 929, 1015, 1017, 1019, 1021, 1105, 1107, 1109,
- 1111, 1197, 1199, 925, 1013, 1103, 1195, 928,
- 930, 1016, 1018, 1020, 1022, 1106, 1108, 1110,
- 1112, 1198, 1200, 884, 886, 972, 974, 976,
- 1062, 1064, 1066, 1154, 1156, 885, 887, 973,
- 975, 977, 979, 1063, 1065, 1155, 1157, 889,
- 981, 1159, 794, 796, 882, 888, 795, 883,
- 799, 891, 929, 931, 1017, 1019, 1021, 1023,
- 1107, 1109, 1111, 1113, 1199, 930, 932, 1018,
- 1020, 1022, 1024, 1108, 1110, 1112, 1114, 1200,
- 1202, 934, 1026, 864, 866, 956, 1046, 1048,
- 1138, 865, 867, 957, 1047, 1049, 1139, 819,
- 911, 1001, 1003, 1093, 1183, 820, 912, 1002,
- 1004, 1094, 1184, 1185, 1275, 1186, 1276, 1095,
- 1096, 1228, 1230, 1320, 1229, 1231, 1321, 1365,
- 1366, 1140, 1141, 1233, 1323, 1411, 1051, 1143,
- 1277, 1367, 1278, 1368, 1410, 1457, 1547, 1458,
- 1548, 1502, 1592, 1503, 1593, 1413, 1412, 1640,
- 1730, 1549, 1639, 1729, 1550, 960, 962, 1048,
- 1050, 1052, 1054, 1138, 1140, 1142, 1144, 1230,
- 1232, 958, 1046, 1228, 961, 963, 1049, 1051,
- 1053, 1055, 1139, 1141, 1143, 1145, 1231, 1233,
- 1005, 1007, 1093, 1095, 1097, 1099, 1183, 1185,
- 1187, 1189, 1275, 1277, 1003, 1006, 1008, 1094,
- 1096, 1098, 1100, 1184, 1186, 1188, 1190, 1276,
- 1278, 1279, 1365, 1367, 1280, 1366, 1368, 962,
- 964, 1050, 1052, 1054, 1056, 1140, 1142, 1144,
- 1146, 1232, 1234, 963, 965, 1051, 1053, 1055,
- 1057, 1141, 1143, 1145, 1147, 1233, 1235, 967,
- 1059, 1149, 1237, 1007, 1009, 1095, 1097, 1099,
- 1101, 1185, 1187, 1189, 1191, 1277, 1279, 1008,
- 1010, 1096, 1098, 1100, 1102, 1186, 1188, 1190,
- 1192, 1278, 1280, 1012, 1104, 1194, 1282, 1275,
- 1281, 1367, 1369, 1276, 1368, 1370, 1284, 1372,
- 966, 968, 1054, 1056, 1058, 1060, 1144, 1146,
- 1148, 1150, 1236, 1238, 964, 1052, 1142, 1234,
- 967, 969, 1055, 1057, 1059, 1061, 1145, 1147,
- 1149, 1151, 1237, 1239, 1011, 1013, 1099, 1101,
- 1103, 1105, 1189, 1191, 1193, 1195, 1281, 1283,
- 1009, 1097, 1187, 1279, 1012, 1014, 1100, 1102,
- 1104, 1106, 1190, 1192, 1194, 1196, 1282, 1284,
- 1285, 1371, 1373, 1277, 1369, 1280, 1286, 1372,
- 1374, 968, 970, 1056, 1058, 1060, 1062, 1146,
- 1148, 1150, 1152, 1238, 1240, 969, 971, 1057,
- 1059, 1061, 1063, 1147, 1149, 1151, 1153, 1239,
- 1241, 973, 1065, 1155, 1243, 1013, 1015, 1101,
- 1103, 1105, 1107, 1191, 1193, 1195, 1197, 1283,
- 1285, 1014, 1016, 1102, 1104, 1106, 1108, 1192,
- 1194, 1196, 1198, 1284, 1286, 1018, 1110, 1200,
- 1288, 1281, 1287, 1373, 1375, 1282, 1374, 1376,
- 1290, 1378, 972, 974, 1060, 1062, 1064, 1066,
- 1150, 1152, 1154, 1156, 1242, 1244, 970, 1058,
- 1148, 1240, 973, 975, 1061, 1063, 1065, 1151,
- 1153, 1155, 1157, 1243, 1245, 1017, 1019, 1105,
- 1107, 1109, 1111, 1195, 1197, 1199, 1287, 1289,
- 1015, 1103, 1193, 1285, 1018, 1020, 1106, 1108,
- 1110, 1112, 1196, 1198, 1200, 1202, 1288, 1290,
- 1291, 1377, 1379, 1283, 1375, 1286, 1292, 1378,
- 1380, 974, 976, 1062, 1064, 1066, 1152, 1154,
- 1156, 1244, 1246, 975, 977, 1063, 1065, 1153,
- 1155, 1157, 1159, 1245, 979, 1249, 1019, 1021,
- 1107, 1109, 1111, 1113, 1197, 1199, 1289, 1291,
- 1020, 1022, 1108, 1110, 1112, 1114, 1198, 1200,
- 1202, 1290, 1292, 1024, 1294, 1287, 1293, 1379,
- 1288, 1380, 1382, 980, 1066, 1070, 1156, 1248,
- 1250, 976, 1064, 1154, 1246, 979, 981, 1073,
- 1157, 1159, 1163, 1249, 1251, 1023, 1111, 1113,
- 1117, 1205, 1207, 1293, 1295, 1021, 1109, 1199,
- 1291, 1024, 1026, 1112, 1114, 1202, 1208, 1294,
- 1385, 1289, 1292, 982, 1252, 983, 1387, 1388,
- 1339, 1341, 1347, 1523, 1392, 1140, 1142, 1228,
- 1230, 1232, 1234, 1320, 1322, 1324, 1410, 1412,
- 1138, 1141, 1143, 1229, 1231, 1233, 1235, 1321,
- 1323, 1325, 1411, 1413, 1050, 1052, 1144, 1048,
- 1051, 1053, 1139, 1145, 1185, 1187, 1275, 1277,
- 1279, 1365, 1367, 1369, 1457, 1183, 1186, 1188,
- 1276, 1278, 1280, 1366, 1368, 1370, 1458, 1414,
- 1502, 1415, 1503, 1459, 1547, 1460, 1548, 1549,
- 1550, 1142, 1144, 1230, 1232, 1234, 1236, 1320,
- 1322, 1324, 1326, 1412, 1414, 1143, 1145, 1231,
- 1233, 1235, 1237, 1321, 1323, 1325, 1327, 1413,
- 1415, 1147, 1239, 1329, 1417, 1052, 1054, 1140,
- 1146, 1053, 1055, 1141, 1057, 1149, 1187, 1189,
- 1275, 1277, 1279, 1281, 1365, 1367, 1369, 1371,
- 1457, 1459, 1188, 1190, 1276, 1278, 1280, 1282,
- 1366, 1368, 1370, 1372, 1458, 1460, 1192, 1284,
- 1374, 1462, 1146, 1148, 1234, 1236, 1238, 1240,
- 1324, 1326, 1328, 1330, 1416, 1418, 1144, 1232,
- 1322, 1414, 1147, 1149, 1235, 1237, 1239, 1241,
- 1325, 1327, 1329, 1331, 1417, 1419, 1056, 1058,
- 1150, 1054, 1142, 1057, 1059, 1145, 1151, 1191,
- 1193, 1279, 1281, 1283, 1285, 1369, 1371, 1373,
- 1375, 1461, 1463, 1189, 1277, 1367, 1459, 1192,
- 1194, 1280, 1282, 1284, 1286, 1370, 1372, 1374,
- 1376, 1462, 1464, 1148, 1150, 1236, 1238, 1240,
- 1242, 1326, 1328, 1330, 1332, 1418, 1420, 1149,
- 1151, 1237, 1239, 1241, 1243, 1327, 1329, 1331,
- 1333, 1419, 1421, 1153, 1245, 1335, 1423, 1058,
- 1060, 1146, 1152, 1059, 1061, 1147, 1063, 1155,
- 1193, 1195, 1281, 1283, 1285, 1287, 1371, 1373,
- 1375, 1377, 1463, 1465, 1194, 1196, 1282, 1284,
- 1286, 1288, 1372, 1374, 1376, 1378, 1464, 1466,
- 1198, 1290, 1380, 1468, 1152, 1154, 1240, 1242,
- 1244, 1246, 1330, 1332, 1334, 1336, 1422, 1424,
- 1150, 1238, 1328, 1420, 1153, 1155, 1241, 1243,
- 1245, 1331, 1333, 1335, 1337, 1423, 1425, 1062,
- 1064, 1156, 1060, 1148, 1063, 1065, 1151, 1157,
- 1197, 1199, 1285, 1287, 1289, 1291, 1375, 1377,
- 1379, 1467, 1469, 1195, 1283, 1373, 1465, 1198,
- 1200, 1286, 1288, 1290, 1292, 1376, 1378, 1380,
- 1382, 1468, 1470, 1154, 1156, 1242, 1244, 1246,
- 1248, 1332, 1334, 1336, 1424, 1426, 1155, 1157,
- 1243, 1245, 1249, 1333, 1335, 1337, 1339, 1425,
- 1427, 1159, 1251, 1341, 1064, 1066, 1152, 1065,
- 1153, 1199, 1287, 1289, 1291, 1293, 1377, 1379,
- 1469, 1471, 1200, 1202, 1288, 1290, 1292, 1294,
- 1378, 1380, 1382, 1470, 1472, 1474, 1246, 1248,
- 1250, 1252, 1336, 1156, 1244, 1334, 1426, 1159,
- 1249, 1251, 1337, 1339, 1341, 1070, 1066, 1154,
- 1157, 1163, 1205, 1291, 1293, 1295, 1385, 1387,
- 1289, 1379, 1471, 1292, 1294, 1382, 1388, 1474,
- 1424, 1516, 1518, 1427, 1563, 1565, 1469, 1561,
- 1472, 1564, 1566, 1567, 1168, 1250, 1252, 1347,
- 1073, 1163, 1251, 1207, 1295, 1385, 1387, 1304,
- 1388, 1392, 1528, 1031, 1033, 1117, 1567, 1565,
- 1566, 1574, 1750, 1138, 1228, 1230, 1320, 1322,
- 1410, 1412, 1139, 1229, 1231, 1321, 1323, 1411,
- 1413, 1183, 1275, 1365, 1367, 1457, 1184, 1276,
- 1366, 1368, 1458, 1547, 1548, 1460, 1550, 1502,
- 1592, 1503, 1593, 1549, 1639, 1640, 1505, 1595,
- 1504, 1594, 1414, 1415, 1684, 1685, 1729, 1730,
- 1731, 1821, 1732, 1822, 1774, 1775, 1046, 1047,
- 1911, 1912, 1866, 1956, 1867, 1957, 1776, 1777,
- 1232, 1234, 1320, 1322, 1324, 1326, 1410, 1412,
- 1414, 1416, 1502, 1504, 1233, 1235, 1321, 1323,
- 1325, 1327, 1411, 1413, 1415, 1417, 1503, 1505,
- 1237, 1329, 1419, 1507, 1277, 1279, 1365, 1367,
- 1369, 1371, 1457, 1459, 1461, 1547, 1549, 1278,
- 1280, 1366, 1368, 1370, 1372, 1458, 1460, 1462,
- 1548, 1550, 1282, 1374, 1464, 1552, 1551, 1639,
- 1640, 1554, 1642, 1236, 1238, 1324, 1326, 1328,
- 1330, 1414, 1416, 1418, 1420, 1506, 1508, 1234,
- 1322, 1412, 1504, 1237, 1239, 1325, 1327, 1329,
- 1331, 1415, 1417, 1419, 1421, 1507, 1509, 1281,
- 1283, 1369, 1371, 1373, 1375, 1459, 1461, 1463,
- 1465, 1551, 1553, 1279, 1367, 1457, 1549, 1282,
- 1284, 1370, 1372, 1374, 1376, 1460, 1462, 1464,
- 1466, 1552, 1554, 1555, 1641, 1643, 1547, 1639,
- 1550, 1556, 1642, 1644, 1238, 1240, 1326, 1328,
- 1330, 1332, 1416, 1418, 1420, 1422, 1508, 1510,
- 1239, 1241, 1327, 1329, 1331, 1333, 1417, 1419,
- 1421, 1423, 1509, 1511, 1243, 1335, 1425, 1513,
- 1283, 1285, 1371, 1373, 1375, 1377, 1461, 1463,
- 1465, 1467, 1553, 1555, 1284, 1286, 1372, 1374,
- 1376, 1378, 1462, 1464, 1466, 1468, 1554, 1556,
- 1288, 1380, 1470, 1551, 1557, 1643, 1645, 1552,
- 1644, 1646, 1560, 1648, 1242, 1244, 1330, 1332,
- 1334, 1336, 1420, 1422, 1424, 1426, 1512, 1514,
- 1240, 1328, 1418, 1510, 1243, 1245, 1331, 1333,
- 1335, 1337, 1421, 1423, 1425, 1427, 1513, 1515,
- 1287, 1289, 1375, 1377, 1379, 1465, 1467, 1469,
- 1471, 1557, 1285, 1373, 1463, 1555, 1288, 1290,
- 1376, 1378, 1380, 1382, 1466, 1468, 1470, 1472,
- 1560, 1561, 1647, 1649, 1553, 1645, 1556, 1648,
- 1244, 1246, 1332, 1334, 1336, 1422, 1424, 1426,
- 1514, 1516, 1245, 1333, 1335, 1337, 1339, 1423,
- 1425, 1427, 1515, 1517, 1249, 1341, 1289, 1291,
- 1377, 1379, 1467, 1469, 1471, 1561, 1290, 1292,
- 1378, 1380, 1382, 1468, 1470, 1472, 1474, 1560,
- 1294, 1564, 1557, 1563, 1649, 1652, 1566, 1512,
- 1518, 1602, 1604, 1606, 1513, 1603, 1605, 1607,
- 1609, 1695, 1699, 1647, 1739, 1741, 1648, 1740,
- 1744, 1248, 1250, 1252, 1336, 1426, 1518, 1251,
- 1339, 1341, 1523, 1163, 1347, 1295, 1385, 1387,
- 1565, 1567, 1388, 1474, 1566, 1392, 1563, 1564,
- 1574, 1748, 1750, 1516, 1606, 1698, 1704, 1609,
- 1701, 1617, 1745, 1528, 1412, 1414, 1502, 1504,
- 1506, 1592, 1594, 1596, 1684, 1413, 1415, 1503,
- 1505, 1507, 1593, 1595, 1597, 1685, 1417, 1509,
- 1599, 1687, 1322, 1324, 1410, 1416, 1323, 1325,
- 1411, 1327, 1419, 1457, 1459, 1547, 1549, 1551,
- 1639, 1641, 1729, 1458, 1460, 1548, 1550, 1552,
- 1640, 1642, 1730, 1462, 1554, 1644, 1732, 1686,
- 1774, 1775, 1689, 1777, 1731, 1734, 1822, 1821,
- 1824, 1912, 1416, 1418, 1504, 1506, 1508, 1510,
- 1594, 1596, 1598, 1600, 1686, 1688, 1414, 1502,
- 1592, 1684, 1417, 1419, 1505, 1507, 1509, 1511,
- 1595, 1597, 1599, 1601, 1687, 1689, 1326, 1328,
- 1420, 1324, 1412, 1327, 1329, 1415, 1421, 1461,
- 1463, 1549, 1551, 1553, 1555, 1639, 1641, 1643,
- 1645, 1731, 1733, 1459, 1547, 1729, 1462, 1464,
- 1550, 1552, 1554, 1556, 1640, 1642, 1644, 1646,
- 1732, 1734, 1418, 1420, 1506, 1508, 1510, 1512,
- 1596, 1598, 1600, 1602, 1688, 1690, 1419, 1421,
- 1507, 1509, 1511, 1513, 1597, 1599, 1601, 1603,
- 1689, 1691, 1423, 1515, 1605, 1328, 1330, 1416,
- 1422, 1329, 1331, 1417, 1333, 1425, 1463, 1465,
- 1551, 1553, 1555, 1557, 1641, 1643, 1645, 1647,
- 1733, 1735, 1464, 1466, 1552, 1554, 1556, 1642,
- 1644, 1646, 1648, 1734, 1736, 1468, 1560, 1738,
- 1422, 1424, 1510, 1512, 1514, 1516, 1600, 1602,
- 1604, 1606, 1692, 1420, 1508, 1598, 1690, 1423,
- 1425, 1511, 1513, 1515, 1517, 1601, 1603, 1605,
- 1607, 1695, 1332, 1334, 1426, 1330, 1418, 1333,
- 1335, 1421, 1427, 1467, 1469, 1555, 1557, 1561,
- 1645, 1647, 1649, 1737, 1739, 1465, 1553, 1643,
- 1735, 1468, 1470, 1556, 1560, 1646, 1648, 1652,
- 1738, 1740, 1516, 1518, 1606, 1698, 1426, 1514,
- 1604, 1517, 1523, 1607, 1609, 1699, 1701, 1336,
- 1424, 1249, 1251, 1337, 1339, 1341, 1425, 1427,
- 1515, 1561, 1563, 1565, 1567, 1743, 1745, 1471,
- 1649, 1741, 1474, 1564, 1566, 1652, 1744, 1786,
- 1789, 1739, 1831, 1748, 1923, 1832, 1924, 1502,
- 1592, 1594, 1684, 1410, 1503, 1593, 1595, 1685,
- 1457, 1547, 1549, 1639, 1641, 1729, 1731, 1458,
- 1548, 1550, 1640, 1642, 1730, 1732, 1821, 1822,
- 1774, 1776, 1866, 1775, 1777, 1867, 1411, 1911,
- 1912, 1686, 1687, 1779, 1869, 1957, 1597, 1689,
- 1823, 1913, 1824, 1914, 1956, 2004, 2003, 1868,
- 1958, 1959, 1506, 1508, 1594, 1596, 1598, 1600,
- 1684, 1686, 1688, 1690, 1776, 1778, 1504, 1592,
- 1774, 1507, 1509, 1595, 1597, 1599, 1601, 1685,
- 1687, 1689, 1691, 1777, 1779, 1551, 1553, 1639,
- 1641, 1643, 1645, 1729, 1731, 1733, 1735, 1821,
- 1823, 1549, 1552, 1554, 1640, 1642, 1644, 1646,
- 1730, 1732, 1734, 1736, 1822, 1824, 1825, 1911,
- 1913, 1826, 1912, 1914, 1508, 1510, 1596, 1598,
- 1600, 1602, 1686, 1688, 1690, 1692, 1778, 1780,
- 1509, 1511, 1597, 1599, 1601, 1603, 1687, 1689,
- 1691, 1779, 1781, 1513, 1605, 1695, 1783, 1553,
- 1555, 1641, 1643, 1645, 1647, 1731, 1733, 1735,
- 1737, 1823, 1825, 1554, 1556, 1642, 1644, 1646,
- 1648, 1732, 1734, 1736, 1738, 1824, 1826, 1740,
- 1828, 1821, 1827, 1913, 1915, 1822, 1914, 1830,
- 1918, 1512, 1514, 1600, 1602, 1604, 1606, 1690,
- 1692, 1782, 1784, 1510, 1598, 1688, 1780, 1513,
- 1515, 1601, 1603, 1605, 1607, 1691, 1695, 1783,
- 1785, 1557, 1645, 1647, 1649, 1735, 1737, 1739,
- 1741, 1827, 1555, 1643, 1733, 1825, 1560, 1646,
- 1648, 1652, 1736, 1738, 1740, 1828, 1830, 1831,
- 1917, 1919, 1823, 1915, 1826, 1832, 1918, 1920,
- 1514, 1516, 1602, 1604, 1606, 1692, 1698, 1784,
- 1786, 1515, 1517, 1603, 1605, 1607, 1609, 1695,
- 1699, 1785, 1701, 1789, 1561, 1647, 1649, 1737,
- 1739, 1741, 1743, 1831, 1560, 1648, 1652, 1738,
- 1740, 1744, 1830, 1832, 1564, 1827, 1919, 1828,
- 1920, 1924, 1782, 1872, 1874, 1878, 1783, 1873,
- 1877, 1879, 1965, 1967, 1917, 1923, 2011, 1918,
- 2010, 2014, 1880, 1968, 1883, 1745, 2013, 1963,
- 2007, 2008, 1518, 1606, 1698, 1704, 1880, 1523,
- 1609, 1699, 1701, 1617, 1883, 1565, 1567, 1743,
- 1745, 1566, 1744, 1748, 1750, 1930, 1878, 1972,
- 1789, 1879, 1786, 1831, 1923, 2013, 1832, 1924,
- 2014, 2018, 1976, 2021, 1968, 2011, 1704, 1617,
- 1565, 1567, 1745, 1743, 1748, 1750, 2021, 1930,
- 1528, 1574, 2024, 1976, 1883, 1686, 1688, 1774,
- 1776, 1778, 1780, 1866, 1868, 1870, 1956, 1958,
- 1684, 1687, 1689, 1775, 1777, 1779, 1781, 1867,
- 1869, 1871, 1957, 1959, 1596, 1598, 1690, 1594,
- 1597, 1599, 1685, 1691, 1731, 1733, 1821, 1823,
- 1825, 1911, 1913, 1915, 2003, 1729, 1732, 1734,
- 1822, 1824, 1826, 1912, 1914, 2004, 1960, 1961,
- 2005, 2006, 1872, 1873, 1963, 1783, 1965, 1917,
- 2007, 1918, 2008, 1828, 1920, 2010, 1688, 1690,
- 1776, 1778, 1780, 1782, 1866, 1868, 1870, 1872,
- 1958, 1960, 1689, 1691, 1777, 1779, 1781, 1783,
- 1867, 1869, 1871, 1873, 1959, 1961, 1785, 1963,
- 1598, 1600, 1686, 1692, 1599, 1601, 1687, 1603,
- 1695, 1733, 1735, 1821, 1823, 1825, 1827, 1911,
- 1913, 1915, 1917, 2003, 2005, 1734, 1736, 1822,
- 1824, 1826, 1828, 1912, 1914, 1918, 2004, 2006,
- 1738, 1830, 1920, 2008, 1692, 1780, 1782, 1784,
- 1786, 1870, 1872, 1874, 1690, 1778, 1868, 1960,
- 1695, 1781, 1783, 1785, 1871, 1873, 1877, 1963,
- 1965, 1602, 1604, 1600, 1688, 1603, 1605, 1691,
- 1737, 1739, 1825, 1827, 1831, 1915, 1917, 1919,
- 2007, 1735, 1823, 1913, 2005, 1738, 1740, 1826,
- 1828, 1830, 1832, 1918, 1920, 2008, 2010, 1958,
- 1961, 1967, 2011, 2003, 2006, 1878, 1880, 1968,
- 1972, 1786, 1874, 1789, 1877, 1879, 1883, 1967,
- 1923, 2011, 2013, 1831, 1919, 1924, 2014, 2018,
- 1972, 1976, 1880, 1883, 2021, 1923, 2013, 1930,
- 2018, 2024,
-};
-
-static long _vq_fitmap_res_Zc_8[] = {
- 0, 0, 0, 59, 59, 123, 123, 187,
- 187, 251, 251, 315, 315, 375, 375, 438,
- 438, 501, 566, 631, 696, 761, 826, 891,
- 956, 1021, 1086, 1151, 375, 375, 1208, 438,
- 1249, 1308, 1373, 1438, 1503, 1568, 1633, 1698,
- 1763, 1828, 1892, 1951, 1951, 1208, 1208, 2006,
- 2068, 2132, 2197, 2262, 2327, 2392, 2457, 2522,
- 2587, 2648, 2700, 2753, 2777, 2777, 2006, 2831,
- 2889, 2954, 3019, 3084, 3149, 3214, 3278, 3340,
- 3393, 2700, 3440, 2777, 2777, 2777, 3474, 3534,
- 3599, 3664, 3729, 3794, 3859, 3922, 3980, 4026,
- 3440, 3440, 2777, 2777, 4075, 3474, 4132, 4191,
- 4256, 4321, 4386, 4451, 4515, 4572, 4026, 4633,
- 4633, 4075, 4075, 4075, 4075, 4682, 4744, 4808,
- 4873, 4938, 5003, 5067, 4572, 4633, 4633, 4633,
- 4075, 4075, 5123, 5123, 4682, 5189, 5247, 5312,
- 5377, 5442, 5505, 5555, 5555, 4633, 4633, 4075,
- 4075, 5123, 5123, 5123, 5605, 5665, 5730, 5795,
- 5860, 5923, 5974, 5555, 6020, 6020, 5123, 5123,
- 5123, 5123, 6043, 5605, 6104, 6163, 6228, 6292,
- 6352, 5974, 6417, 6020, 6020, 5123, 5123, 5123,
- 6043, 6043, 6043, 6452, 6514, 6578, 6640, 6352,
- 6698, 6417, 6417, 6417, 5123, 5123, 5123, 6043,
- 6043, 6743, 6452, 6794, 6852, 6913, 6968, 6698,
- 7034, 7070, 7070, 6043, 6043, 6043, 6043, 6743,
- 6743, 6743, 7085, 7150, 7212, 6968, 6968, 7034,
- 7034, 7070, 6043, 6043, 6043, 6043, 6743, 6743,
- 6743, 7085, 7085, 7212, 6968, 7269, 7034, 7288,
- 7070,
-};
-
-static long _vq_fitlength_res_Zc_8[] = {
- 59, 59, 59, 64, 64, 64, 64, 64,
- 64, 64, 64, 60, 60, 63, 63, 63,
- 63, 65, 65, 65, 65, 65, 65, 65,
- 65, 65, 65, 57, 63, 63, 41, 63,
- 59, 65, 65, 65, 65, 65, 65, 65,
- 65, 64, 59, 55, 55, 41, 41, 62,
- 64, 65, 65, 65, 65, 65, 65, 65,
- 61, 52, 53, 24, 54, 54, 62, 58,
- 65, 65, 65, 65, 65, 64, 62, 53,
- 47, 53, 34, 54, 54, 54, 60, 65,
- 65, 65, 65, 65, 63, 58, 46, 49,
- 34, 34, 54, 54, 57, 60, 59, 65,
- 65, 65, 65, 64, 57, 61, 49, 49,
- 49, 57, 57, 57, 57, 62, 64, 65,
- 65, 65, 64, 56, 61, 49, 49, 49,
- 57, 57, 66, 66, 62, 58, 65, 65,
- 65, 63, 50, 50, 50, 49, 49, 57,
- 57, 66, 66, 66, 60, 65, 65, 65,
- 63, 51, 46, 50, 23, 23, 66, 66,
- 66, 66, 61, 60, 59, 65, 64, 60,
- 65, 46, 35, 23, 23, 66, 66, 66,
- 61, 61, 61, 62, 64, 62, 58, 65,
- 45, 35, 35, 35, 66, 66, 66, 61,
- 61, 51, 62, 58, 61, 55, 66, 45,
- 36, 15, 15, 61, 61, 61, 61, 51,
- 51, 51, 65, 62, 57, 66, 66, 36,
- 36, 15, 61, 61, 61, 61, 51, 51,
- 51, 65, 65, 57, 66, 19, 36, 10,
- 15,
-};
-
-static encode_aux_pigeonhole _vq_auxp_res_Zc_8 = {
- -22, 1, 44, 15,
- _vq_pigeonmap_res_Zc_8,
- 7298,
- _vq_fitlist_res_Zc_8,
- _vq_fitmap_res_Zc_8,
- _vq_fitlength_res_Zc_8
-};
-
-static static_codebook _vq_book_res_Zc_8 = {
- 2, 2025,
- _vq_lengthlist_res_Zc_8,
- 1, -527040512, 1611661312, 6, 0,
- _vq_quantlist_res_Zc_8,
- NULL,
- &_vq_auxt_res_Zc_8,
- &_vq_auxp_res_Zc_8,
- 0
-};
-
-
-#endif
diff --git a/lib/books/res_Zc_9.vqh b/lib/books/res_Zc_9.vqh
deleted file mode 100644
index f6753c47..00000000
--- a/lib/books/res_Zc_9.vqh
+++ /dev/null
@@ -1,99 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
- * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
- * by the XIPHOPHORUS Company, http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by vq/somethingorother
-
- ********************************************************************/
-
-#ifndef _V_res_Zc_9_VQH_
-#define _V_res_Zc_9_VQH_
-#include "codebook.h"
-
-static long _vq_quantlist_res_Zc_9[] = {
- 2,
- 1,
- 3,
- 0,
- 4,
-};
-
-static long _vq_lengthlist_res_Zc_9[] = {
- 1,11,10,11,11, 7,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,11,11,11,11,11,11,11,11,11,11,11,11,11,
- 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
- 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
- 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
- 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
- 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
- 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
- 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
- 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
- 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
- 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
- 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
- 11,11,11,11,11,11,11,11,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,10,10,10,10,10,
- 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
- 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
- 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
- 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
- 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
- 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
- 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
- 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
- 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
- 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
- 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
- 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
- 10,10,10,10,10,10,10,10,10,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 float _vq_quantthresh_res_Zc_9[] = {
- -100.5, -33.5, 33.5, 100.5,
-};
-
-static long _vq_quantmap_res_Zc_9[] = {
- 3, 1, 0, 2, 4,
-};
-
-static encode_aux_threshmatch _vq_auxt_res_Zc_9 = {
- _vq_quantthresh_res_Zc_9,
- _vq_quantmap_res_Zc_9,
- 5,
- 5
-};
-
-static static_codebook _vq_book_res_Zc_9 = {
- 4, 625,
- _vq_lengthlist_res_Zc_9,
- 1, -521093120, 1624293376, 3, 0,
- _vq_quantlist_res_Zc_9,
- NULL,
- &_vq_auxt_res_Zc_9,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/books/res_Zc_9a.vqh b/lib/books/res_Zc_9a.vqh
deleted file mode 100644
index 11e3559d..00000000
--- a/lib/books/res_Zc_9a.vqh
+++ /dev/null
@@ -1,115 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
- * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *
- * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
- * by the XIPHOPHORUS Company, http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: static codebook autogenerated by vq/somethingorother
-
- ********************************************************************/
-
-#ifndef _V_res_Zc_9a_VQH_
-#define _V_res_Zc_9a_VQH_
-#include "codebook.h"
-
-static long _vq_quantlist_res_Zc_9a[] = {
- 11,
- 10,
- 12,
- 9,
- 13,
- 8,
- 14,
- 7,
- 15,
- 6,
- 16,
- 5,
- 17,
- 4,
- 18,
- 3,
- 19,
- 2,
- 20,
- 1,
- 21,
- 0,
- 22,
-};
-
-static long _vq_lengthlist_res_Zc_9a[] = {
- 2, 4, 4, 8, 8, 9,10,10,11,11,14,14,14,13,14,12,
- 12,14,12,14,14,14,14, 5, 5, 5, 7, 8,10,10,11,12,
- 12,12,13,12,14,14,11,12,14,14,14,14,14,14,14, 5,
- 4, 7, 7, 9, 9,10,10,13,13,13,13,12,13,12,12,12,
- 13,13,13,13,13,13, 5, 5, 8, 8, 9, 9,10,11,11,11,
- 12,13,13,13,12,13,13,13,13,13,13,13,13, 5, 5, 7,
- 6, 9, 9,10,10,11,12,13,12,13,13,11,12,13,12,13,
- 13,13,13,13, 8, 9, 6, 7, 9,10,10,11,12,11,13,13,
- 13,13,13,12,13,13,13,13,13,13,13,13,13, 8, 6, 9,
- 8,10,10,11,11,13,12,13,13,13,11,12,12,13,12,13,
- 13,13,13,13, 9, 9, 9, 9, 9,10,11,13,13,13,13,13,
- 13,12,13,13,12,13,13,13,13,13,13, 9, 9, 9, 9,10,
- 11,13,11,13,13,13,13,13,12,13,13,13,13,13,13,13,
- 13,13,12,12, 9, 9,10,10,11,12,13,13,13,13,12,13,
- 13,13,13,13,13,12,13,13,13,13,13,10, 9,11,10,12,
- 12,13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,
- 13,13,11,12,11,10,13,12,13,13,13,13,13,11,12,13,
- 13,13,13,13,13,13,13,13,13,12,12,10,12,12,13,13,
- 12,13,13,12,12,13,13,13,13,13,13,13,13,13,13,13,
- 11,12,11,11,12,12,13,13,13,13,13,12,13,13,13,13,
- 13,13,13,13,13,13,13,13,13,11,11,12,12,12,13,13,
- 13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,
- 7, 9, 9,11,12,12,13,13,13,12,13,13,13,13,13,13,
- 13,13,13,13,13,13,13,10, 7,10, 8,11,11,12,13,13,
- 12,13,13,13,13,13,13,13,13,13,13,13,13,13, 8,12,
- 7,11,11,11,12,12,13,13,13,13,13,13,13,13,13,13,
- 13,13,13,13,13,13,13,10, 7,12,12,12,12,12,13,13,
- 13,12,13,13,13,13,13,13,13,13,13,13,13,13, 9,12,
- 9,12,11,12,12,13,13,13,13,13,13,13,13,13,13,13,
- 13,13,13,13,13,13, 9,10,10,11,13,13,13,13,13,13,
- 13,13,13,13,13,13,13,13,13,13,13,13,11,13,10,11,
- 12,11,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
- 13,13,13,13,13,10,11,11,12,13,13,13,13,13,13,13,
- 13,
-};
-
-static float _vq_quantthresh_res_Zc_9a[] = {
- -31.5, -28.5, -25.5, -22.5, -19.5, -16.5, -13.5, -10.5,
- -7.5, -4.5, -1.5, 1.5, 4.5, 7.5, 10.5, 13.5,
- 16.5, 19.5, 22.5, 25.5, 28.5, 31.5,
-};
-
-static long _vq_quantmap_res_Zc_9a[] = {
- 21, 19, 17, 15, 13, 11, 9, 7,
- 5, 3, 1, 0, 2, 4, 6, 8,
- 10, 12, 14, 16, 18, 20, 22,
-};
-
-static encode_aux_threshmatch _vq_auxt_res_Zc_9a = {
- _vq_quantthresh_res_Zc_9a,
- _vq_quantmap_res_Zc_9a,
- 23,
- 23
-};
-
-static static_codebook _vq_book_res_Zc_9a = {
- 2, 529,
- _vq_lengthlist_res_Zc_9a,
- 1, -525303808, 1614282752, 5, 0,
- _vq_quantlist_res_Zc_9a,
- NULL,
- &_vq_auxt_res_Zc_9a,
- NULL,
- 0
-};
-
-
-#endif
diff --git a/lib/codebook.c b/lib/codebook.c
deleted file mode 100644
index e9f2a794..00000000
--- a/lib/codebook.c
+++ /dev/null
@@ -1,579 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: basic codebook pack/unpack/code/decode operations
- last mod: $Id: codebook.c,v 1.28 2001/08/13 01:36:56 xiphmont Exp $
-
- ********************************************************************/
-
-#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++){
- long this=c->lengthlist[i];
- long last=c->lengthlist[i-1];
- if(this>last){
- for(j=last;j<this;j++){
- oggpack_write(opb,i-count,_ilog(c->entries-count));
- count=i;
- }
- }
- }
- oggpack_write(opb,i-count,_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 *************/
-int vorbis_staticbook_unpack(oggpack_buffer *opb,static_codebook *s){
- long i,j;
- memset(s,0,sizeof(static_codebook));
- s->allocedp=1;
-
- /* make sure alignment is correct */
- if(oggpack_read(opb,24)!=0x564342)goto _eofout;
-
- /* first the basic parameters */
- s->dim=oggpack_read(opb,16);
- s->entries=oggpack_read(opb,24);
- if(s->entries==-1)goto _eofout;
-
- /* codeword ordering.... length ordered or unordered? */
- switch(oggpack_read(opb,1)){
- case 0:
- /* unordered */
- s->lengthlist=_ogg_malloc(sizeof(long)*s->entries);
-
- /* allocated but unused entries? */
- if(oggpack_read(opb,1)){
- /* 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;
- s->lengthlist=_ogg_malloc(sizeof(long)*s->entries);
-
- for(i=0;i<s->entries;){
- long num=oggpack_read(opb,_ilog(s->entries-i));
- if(num==-1)goto _eofout;
- for(j=0;j<num;j++,i++)
- s->lengthlist[i]=length;
- length++;
- }
- }
- break;
- default:
- /* EOF */
- return(-1);
- }
-
- /* 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);
-
- {
- int quantvals;
- switch(s->maptype){
- case 1:
- quantvals=_book_maptype1_quantvals(s);
- break;
- case 2:
- quantvals=s->entries*s->dim;
- break;
- }
-
- /* quantized values */
- s->quantlist=_ogg_malloc(sizeof(long)*quantvals);
- for(i=0;i<quantvals;i++)
- s->quantlist[i]=oggpack_read(opb,s->q_quant);
-
- if(s->quantlist[quantvals-1]==-1)goto _eofout;
- }
- break;
- default:
- goto _errout;
- }
-
- /* all set */
- return(0);
-
- _errout:
- _eofout:
- vorbis_staticbook_clear(s);
- return(-1);
-}
-
-/* returns the number of bits ************************************************/
-int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b){
- oggpack_write(b,book->codelist[a],book->c->lengthlist[a]);
- return(book->c->lengthlist[a]);
-}
-
-/* One the encode side, our vector writers are each designed for a
-specific purpose, and the encoder is not flexible without modification:
-
-The LSP vector coder uses a single stage nearest-match with no
-interleave, so no step and no error return. This is specced by floor0
-and doesn't change.
-
-Residue0 encoding interleaves, uses multiple stages, and each stage
-peels of a specific amount of resolution from a lattice (thus we want
-to match by threshold, not nearest match). Residue doesn't *have* to
-be encoded that way, but to change it, one will need to add more
-infrastructure on the encode side (decode side is specced and simpler) */
-
-/* floor0 LSP (single stage, non interleaved, nearest match) */
-/* returns entry number and *modifies a* to the quantization value *****/
-int vorbis_book_errorv(codebook *book,float *a){
- int dim=book->dim,k;
- int best=_best(book,a,1);
- for(k=0;k<dim;k++)
- a[k]=(book->valuelist+best*dim)[k];
- return(best);
-}
-
-/* returns the number of bits and *modifies a* to the quantization value *****/
-int vorbis_book_encodev(codebook *book,int best,float *a,oggpack_buffer *b){
- int k,dim=book->dim;
- for(k=0;k<dim;k++)
- a[k]=(book->valuelist+best*dim)[k];
- return(vorbis_book_encode(book,best,b));
-}
-
-/* res0 (multistage, interleave, lattice) */
-/* returns the number of bits and *modifies a* to the remainder value ********/
-int vorbis_book_encodevs(codebook *book,float *a,oggpack_buffer *b,
- int step,int addmul){
-
- int best=vorbis_book_besterror(book,a,step,addmul);
- return(vorbis_book_encode(book,best,b));
-}
-
-/* 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 entry number or -1 on eof *************************************/
-long vorbis_book_decode(codebook *book, oggpack_buffer *b){
- long ptr=0;
- decode_aux *t=book->decode_tree;
- int lok = oggpack_look(b, t->tabn);
-
- if (lok >= 0) {
- ptr = t->tab[lok];
- oggpack_adv(b, t->tabl[lok]);
- if (ptr <= 0)
- return -ptr;
- }
-
- do{
- switch(oggpack_read1(b)){
- case 0:
- ptr=t->ptr0[ptr];
- break;
- case 1:
- ptr=t->ptr1[ptr];
- break;
- case -1:
- return(-1);
- }
- }while(ptr>0);
- return(-ptr);
-}
-
-/* returns 0 on OK or -1 on eof *************************************/
-long vorbis_book_decodevs_add(codebook *book,float *a,oggpack_buffer *b,int n){
- int step=n/book->dim;
- long *entry = alloca(sizeof(long)*step);
- float **t = alloca(sizeof(float *)*step);
- int i,j,o;
-
- for (i = 0; i < step; i++) {
- entry[i]=vorbis_book_decode(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;j<step;j++)
- a[o+j]+=t[j][i];
- return(0);
-}
-
-long vorbis_book_decodev_add(codebook *book,float *a,oggpack_buffer *b,int n){
- int i,j=0,entry;
- float *t;
-
- if(book->dim>8){
- for(i=0;i<n;){
- entry = vorbis_book_decode(book,b);
- if(entry==-1)return(-1);
- t = book->valuelist+entry*book->dim;
- for (j=0;j<book->dim;)
- a[i++]+=t[j++];
- }
- }else{
- for(i=0;i<n;){
- entry = vorbis_book_decode(book,b);
- if(entry==-1)return(-1);
- t = book->valuelist+entry*book->dim;
- switch(book->dim){
- case 8:
- a[i++]+=t[j++];
- case 7:
- a[i++]+=t[j++];
- case 6:
- a[i++]+=t[j++];
- case 5:
- a[i++]+=t[j++];
- case 4:
- a[i++]+=t[j++];
- case 3:
- a[i++]+=t[j++];
- case 2:
- a[i++]+=t[j++];
- case 1:
- a[i++]+=t[j++];
- case 0:
- break;
- }
- }
- }
- return(0);
-}
-
-long vorbis_book_decodev_set(codebook *book,float *a,oggpack_buffer *b,int n){
- int i,j,entry;
- float *t;
-
- for(i=0;i<n;){
- entry = vorbis_book_decode(book,b);
- if(entry==-1)return(-1);
- t = book->valuelist+entry*book->dim;
- for (j=0;j<book->dim;)
- a[i++]=t[j++];
- }
- return(0);
-}
-
-long vorbis_book_decodevv_add(codebook *book,float **a,long offset,int ch,
- oggpack_buffer *b,int n){
- long i,j,k,entry;
- int chptr=0;
-
- for(i=offset/ch;i<(offset+n)/ch;){
- entry = vorbis_book_decode(book,b);
- if(entry==-1)return(-1);
- {
- const float *t = book->valuelist+entry*book->dim;
- for (j=0;j<book->dim;j++){
- a[chptr++][i]+=t[j];
- if(chptr==ch){
- chptr=0;
- i++;
- }
- }
- }
- }
- return(0);
-}
-
-#ifdef _V_SELFTEST
-/* Simple enough; pack a few candidate codebooks, unpack them. Code a
- number of vectors through (keeping track of the quantized values),
- and decode using the unpacked book. quantized version of in should
- exactly equal out */
-
-#include <stdio.h>
-
-#include "vorbis/book/lsp20_0.vqh"
-#include "vorbis/book/res0a_13.vqh"
-#define TESTSIZE 40
-
-float test1[TESTSIZE]={
- 0.105939f,
- 0.215373f,
- 0.429117f,
- 0.587974f,
-
- 0.181173f,
- 0.296583f,
- 0.515707f,
- 0.715261f,
-
- 0.162327f,
- 0.263834f,
- 0.342876f,
- 0.406025f,
-
- 0.103571f,
- 0.223561f,
- 0.368513f,
- 0.540313f,
-
- 0.136672f,
- 0.395882f,
- 0.587183f,
- 0.652476f,
-
- 0.114338f,
- 0.417300f,
- 0.525486f,
- 0.698679f,
-
- 0.147492f,
- 0.324481f,
- 0.643089f,
- 0.757582f,
-
- 0.139556f,
- 0.215795f,
- 0.324559f,
- 0.399387f,
-
- 0.120236f,
- 0.267420f,
- 0.446940f,
- 0.608760f,
-
- 0.115587f,
- 0.287234f,
- 0.571081f,
- 0.708603f,
-};
-
-float test3[TESTSIZE]={
- 0,1,-2,3,4,-5,6,7,8,9,
- 8,-2,7,-1,4,6,8,3,1,-9,
- 10,11,12,13,14,15,26,17,18,19,
- 30,-25,-30,-1,-5,-32,4,3,-2,0};
-
-static_codebook *testlist[]={&_vq_book_lsp20_0,
- &_vq_book_res0a_13,NULL};
-float *testvec[]={test1,test3};
-
-int main(){
- oggpack_buffer write;
- oggpack_buffer read;
- long ptr=0,i;
- oggpack_writeinit(&write);
-
- fprintf(stderr,"Testing codebook abstraction...:\n");
-
- while(testlist[ptr]){
- codebook c;
- static_codebook s;
- float *qv=alloca(sizeof(float)*TESTSIZE);
- float *iv=alloca(sizeof(float)*TESTSIZE);
- memcpy(qv,testvec[ptr],sizeof(float)*TESTSIZE);
- memset(iv,0,sizeof(float)*TESTSIZE);
-
- fprintf(stderr,"\tpacking/coding %ld... ",ptr);
-
- /* pack the codebook, write the testvector */
- oggpack_reset(&write);
- vorbis_book_init_encode(&c,testlist[ptr]); /* get it into memory
- we can write */
- vorbis_staticbook_pack(testlist[ptr],&write);
- fprintf(stderr,"Codebook size %ld bytes... ",oggpack_bytes(&write));
- for(i=0;i<TESTSIZE;i+=c.dim){
- int best=_best(&c,qv+i,1);
- vorbis_book_encodev(&c,best,qv+i,&write);
- }
- vorbis_book_clear(&c);
-
- fprintf(stderr,"OK.\n");
- fprintf(stderr,"\tunpacking/decoding %ld... ",ptr);
-
- /* transfer the write data to a read buffer and unpack/read */
- oggpack_readinit(&read,oggpack_get_buffer(&write),oggpack_bytes(&write));
- if(vorbis_staticbook_unpack(&read,&s)){
- fprintf(stderr,"Error unpacking codebook.\n");
- exit(1);
- }
- if(vorbis_book_init_decode(&c,&s)){
- fprintf(stderr,"Error initializing codebook.\n");
- exit(1);
- }
-
- for(i=0;i<TESTSIZE;i+=c.dim)
- if(vorbis_book_decodev_set(&c,iv+i,&read,c.dim)==-1){
- fprintf(stderr,"Error reading codebook test data (EOP).\n");
- exit(1);
- }
- for(i=0;i<TESTSIZE;i++)
- if(fabs(qv[i]-iv[i])>.000001){
- fprintf(stderr,"read (%g) != written (%g) at position (%ld)\n",
- iv[i],qv[i],i);
- exit(1);
- }
-
- fprintf(stderr,"OK\n");
- ptr++;
- }
-
- /* The above is the trivial stuff; now try unquantizing a log scale codebook */
-
- exit(0);
-}
-
-#endif
diff --git a/lib/codebook.h b/lib/codebook.h
deleted file mode 100644
index 7402c708..00000000
--- a/lib/codebook.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: basic shared codebook operations
- last mod: $Id: codebook.h,v 1.8 2001/06/15 21:15:39 xiphmont Exp $
-
- ********************************************************************/
-
-#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 */
- long *lengthlist; /* codeword lengths in bits */
-
- /* mapping ***************************************************************/
- int maptype; /* 0=none
- 1=implicitly populated values from map column
- 2=listed arbitrary values */
-
- /* The below does a linear, single monotonic sequence mapping. */
- long q_min; /* packed 32 bit float; quant value 0 maps to minval */
- long q_delta; /* packed 32 bit float; val 1 - val 0 == delta */
- int q_quant; /* bits: 0 < quant <= 16 */
- int q_sequencep; /* bitflag */
-
- long *quantlist; /* map == 1: (int)(entries^(1/dim)) element column map
- map == 2: list of dim*entries quantized entry vals
- */
-
- /* encode helpers ********************************************************/
- struct encode_aux_nearestmatch *nearest_tree;
- struct encode_aux_threshmatch *thresh_tree;
- struct encode_aux_pigeonhole *pigeon_tree;
-
- int allocedp;
-} static_codebook;
-
-/* this structures an arbitrary trained book to quickly find the
- nearest cell match */
-typedef struct encode_aux_nearestmatch{
- /* pre-calculated partitioning tree */
- long *ptr0;
- long *ptr1;
-
- long *p; /* decision points (each is an entry) */
- long *q; /* decision points (each is an entry) */
- long aux; /* number of tree entries */
- long alloc;
-} encode_aux_nearestmatch;
-
-/* assumes a maptype of 1; encode side only, so that's OK */
-typedef struct encode_aux_threshmatch{
- float *quantthresh;
- long *quantmap;
- int quantvals;
- int threshvals;
-} encode_aux_threshmatch;
-
-typedef struct encode_aux_pigeonhole{
- float min;
- float del;
-
- int mapentries;
- int quantvals;
- long *pigeonmap;
-
- long fittotal;
- long *fitlist;
- long *fitmap;
- long *fitlength;
-} encode_aux_pigeonhole;
-
-typedef struct decode_aux{
- long *tab;
- int *tabl;
- int tabn;
-
- long *ptr0;
- long *ptr1;
- long aux; /* number of tree entries */
-} decode_aux;
-
-typedef struct codebook{
- long dim; /* codebook dimensions (elements per vector) */
- long entries; /* codebook entries */
- const static_codebook *c;
-
- float *valuelist; /* list of dim*entries actual entry values */
- long *codelist; /* list of bitstream codewords for each entry */
- struct decode_aux *decode_tree;
-
- long zeroentry;
-} codebook;
-
-extern void vorbis_staticbook_clear(static_codebook *b);
-extern void vorbis_staticbook_destroy(static_codebook *b);
-extern int vorbis_book_init_encode(codebook *dest,const static_codebook *source);
-extern int vorbis_book_init_decode(codebook *dest,const static_codebook *source);
-extern void vorbis_book_clear(codebook *b);
-
-extern float *_book_unquantize(const static_codebook *b);
-extern float *_book_logdist(const static_codebook *b,float *vals);
-extern float _float32_unpack(long val);
-extern long _float32_pack(float val);
-extern int _best(codebook *book, float *a, int step);
-extern int _ilog(unsigned int v);
-extern long _book_maptype1_quantvals(const static_codebook *b);
-
-extern int vorbis_book_besterror(codebook *book,float *a,int step,int addmul);
-extern long vorbis_book_codeword(codebook *book,int entry);
-extern long vorbis_book_codelen(codebook *book,int entry);
-
-
-
-extern int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *b);
-extern int vorbis_staticbook_unpack(oggpack_buffer *b,static_codebook *c);
-
-extern int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b);
-extern int vorbis_book_errorv(codebook *book, float *a);
-extern int vorbis_book_encodev(codebook *book, int best,float *a,
- oggpack_buffer *b);
-extern int vorbis_book_encodevs(codebook *book, float *a, oggpack_buffer *b,
- int step,int stagetype);
-
-extern long vorbis_book_decode(codebook *book, oggpack_buffer *b);
-extern long vorbis_book_decodevs_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
diff --git a/lib/codec_internal.h b/lib/codec_internal.h
deleted file mode 100644
index 7efbb030..00000000
--- a/lib/codec_internal.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
- ********************************************************************
-
- function: libvorbis codec headers
- last mod: $Id: codec_internal.h,v 1.9 2001/08/13 01:36:56 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_CODECI_H_
-#define _V_CODECI_H_
-
-#include "envelope.h"
-#include "codebook.h"
-
-typedef struct vorbis_block_internal{
- float **pcmdelay; /* this is a pointer into local storage */
- float ampmax;
-} vorbis_block_internal;
-
-typedef void vorbis_look_time;
-typedef void vorbis_look_mapping;
-typedef void vorbis_look_floor;
-typedef void vorbis_look_residue;
-typedef void vorbis_look_transform;
-
-/* mode ************************************************************/
-typedef struct {
- int blockflag;
- int windowtype;
- int transformtype;
- int mapping;
-} vorbis_info_mode;
-
-typedef void vorbis_info_time;
-typedef void vorbis_info_floor;
-typedef void vorbis_info_residue;
-typedef void vorbis_info_mapping;
-
-#include "psy.h"
-
-typedef struct backend_lookup_state {
- /* local lookup storage */
- envelope_lookup *ve; /* envelope lookup */
- float **window[2][2][2]; /* block, leadin, leadout, type */
- vorbis_look_transform **transform[2]; /* block, type */
- codebook *fullbooks;
- vorbis_look_psy_global *psy_g_look;
-
- /* backend lookups are tied to the mode, not the backend or naked mapping */
- int modebits;
- vorbis_look_mapping **mode;
-
- /* local storage, only used on the encoding side. This way the
- application does not need to worry about freeing some packets'
- memory and not others'; packet storage is always tracked.
- Cleared next call to a _dsp_ function */
- unsigned char *header;
- unsigned char *header1;
- unsigned char *header2;
-
-} backend_lookup_state;
-
-/* vorbis_info contains all the setup information specific to the
- specific compression/decompression mode in progress (eg,
- psychoacoustic settings, channel setup, options, codebook
- etc).
-*********************************************************************/
-
-typedef struct codec_setup_info {
-
- /* Vorbis supports only short and long blocks, but allows the
- encoder to choose the sizes */
-
- long blocksizes[2];
-
- /* modes are the primary means of supporting on-the-fly different
- blocksizes, different channel mappings (LR or 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 times;
- int floors;
- int residues;
- int books;
- int psys; /* encode only */
-
- vorbis_info_mode *mode_param[64];
- int map_type[64];
- vorbis_info_mapping *map_param[64];
- int time_type[64];
- vorbis_info_time *time_param[64];
- int floor_type[64];
- vorbis_info_floor *floor_param[64];
- int residue_type[64];
- vorbis_info_residue *residue_param[64];
- static_codebook *book_param[256];
- vorbis_info_psy *psy_param[64]; /* encode only */
- vorbis_info_psy_global *psy_g_param;
-
-} codec_setup_info;
-
-extern vorbis_look_psy_global *_vp_global_look(vorbis_info *vi);
-extern void _vp_global_free(vorbis_look_psy_global *look);
-
-#endif
diff --git a/lib/envelope.c b/lib/envelope.c
deleted file mode 100644
index 24ffeab9..00000000
--- a/lib/envelope.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: PCM data envelope analysis and manipulation
- last mod: $Id: envelope.c,v 1.37 2001/08/13 01:36:56 xiphmont Exp $
-
- Preecho calculation.
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include <math.h>
-#include <ogg/ogg.h>
-#include "vorbis/codec.h"
-#include "codec_internal.h"
-
-#include "os.h"
-#include "scales.h"
-#include "envelope.h"
-#include "misc.h"
-#include "iir.c" /* Yes, ugly, but needed for inlining */
-
-/* Digital filter designed by mkfilter/mkshape/gencode A.J. Fisher */
-
-static int cheb_highpass_stages=6;
-static float cheb_highpass_B[]={1.f,-6.f,15.f,-20.f,15.f,-6.f,1.f};
-
-static int cheb_bandpass_stages=6;
-static float cheb_bandpass_B[]={-1.f,0.f,3.f,0.f,-3.f,0.f,1.f};
-
-
-/* 10kHz Chebyshev highpass */
-static float cheb_highpass10k_gain= 54.34519586f;
-static float cheb_highpass10k_A[]={
- -0.2064797169f,
- -0.5609713214f,
- -1.1352465327f,
- -1.4495555418f,
- -1.7938140760f,
- -0.9473564683f};
-
-/* 6kHz-10kHz Chebyshev bandpass */
-static float cheb_bandpass6k_gain=113.4643935f;
-static float cheb_bandpass6k_A[]={
- -0.5712621337f,
- 1.5626130710f,
- -3.3348854983f,
- 4.0471340821f,
- -4.0051680331f,
- 2.2786325610f};
-
-/* 3kHz-6kHz Chebyshev bandpass */
-static float cheb_bandpass3k_gain= 248.8359377f;
-static float cheb_bandpass3k_A[]={
- -0.6564230022f,
- 3.3747911257f,
- -8.0098635981f,
- 11.0040876874f,
- -9.2250963484f,
- 4.4760355389f};
-
-/* 1.5kHz-3kHz Chebyshev bandpass */
-static float cheb_bandpass1k_gain= 1798.537183f;
-static float cheb_bandpass1k_A[]={
- -0.8097527363f,
- 4.7725742682f,
- -11.9800219408f,
- 16.3770336223f,
- -12.8553129536f,
- 5.4948074309f};
-
-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 window=gi->envelopesa;
- int i;
- e->winlength=window;
- e->minenergy=fromdB(gi->preecho_minenergy);
- e->iir=_ogg_calloc(ch*4,sizeof(IIR_state));
- e->filtered=_ogg_calloc(ch*4,sizeof(float *));
- e->ch=ch;
- e->storage=128;
- for(i=0;i<ch*4;i+=4){
-
- IIR_init(e->iir+i,cheb_highpass_stages,cheb_highpass10k_gain,
- cheb_highpass10k_A,cheb_highpass_B);
- IIR_init(e->iir+i+1,cheb_bandpass_stages,cheb_bandpass6k_gain,
- cheb_bandpass6k_A,cheb_bandpass_B);
- IIR_init(e->iir+i+2,cheb_bandpass_stages,cheb_bandpass3k_gain,
- cheb_bandpass3k_A,cheb_bandpass_B);
- IIR_init(e->iir+i+3,cheb_bandpass_stages,cheb_bandpass1k_gain,
- cheb_bandpass1k_A,cheb_bandpass_B);
-
- e->filtered[i]=_ogg_calloc(e->storage,sizeof(float));
- e->filtered[i+1]=_ogg_calloc(e->storage,sizeof(float));
- e->filtered[i+2]=_ogg_calloc(e->storage,sizeof(float));
- e->filtered[i+3]=_ogg_calloc(e->storage,sizeof(float));
- }
-
-}
-
-void _ve_envelope_clear(envelope_lookup *e){
- int i;
- for(i=0;i<e->ch*4;i++){
- IIR_clear((e->iir+i));
- _ogg_free(e->filtered[i]);
- }
- _ogg_free(e->filtered);
- _ogg_free(e->iir);
- memset(e,0,sizeof(envelope_lookup));
-}
-
-/* straight threshhold based until we find something that works better
- and isn't patented */
-static float _ve_deltai(envelope_lookup *ve,float *pre,float *post){
- long n=ve->winlength;
-
- long i;
-
- /* 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 A=minV*minV*n;
- float B=A;
-
- for(i=0;i<n;i++){
- A+=pre[i]*pre[i];
- B+=post[i]*post[i];
- }
-
- A=todB(&A);
- B=todB(&B);
-
- return(B-A);
-}
-
-long _ve_envelope_search(vorbis_dsp_state *v,long searchpoint){
- vorbis_info *vi=v->vi;
- codec_setup_info *ci=vi->codec_setup;
- vorbis_info_psy_global *gi=ci->psy_g_param;
- envelope_lookup *ve=((backend_lookup_state *)(v->backend_state))->ve;
- long i,j,k;
-
- /* make sure we have enough storage to match the PCM */
- if(v->pcm_storage>ve->storage){
- ve->storage=v->pcm_storage;
- for(i=0;i<ve->ch*4;i++)
- ve->filtered[i]=_ogg_realloc(ve->filtered[i],ve->storage*sizeof(float));
- }
-
- /* catch up the highpass to match the pcm */
- for(i=0;i<ve->ch;i++){
- float *pcm=v->pcm[i];
- float *filtered0=ve->filtered[i*4];
- float *filtered1=ve->filtered[i*4+1];
- float *filtered2=ve->filtered[i*4+2];
- float *filtered3=ve->filtered[i*4+3];
- IIR_state *iir0=ve->iir+i*4;
- IIR_state *iir1=ve->iir+i*4+1;
- IIR_state *iir2=ve->iir+i*4+2;
- IIR_state *iir3=ve->iir+i*4+3;
- int flag=1;
- for(j=ve->current;j<v->pcm_current;j++){
- filtered0[j]=IIR_filter(iir0,pcm[j]);
- filtered1[j]=IIR_filter_Band(iir1,pcm[j]);
- filtered2[j]=IIR_filter_Band(iir2,pcm[j]);
- filtered3[j]=IIR_filter_Band(iir3,pcm[j]);
- if(pcm[j])flag=0;
- }
- if(flag && ve->current+64<v->pcm_current){
- IIR_reset(iir0);
- IIR_reset(iir1);
- IIR_reset(iir2);
- IIR_reset(iir3);
- }
-
- }
-
- ve->current=v->pcm_current;
-
- /* Now search through our cached highpass data for breaking points */
- /* starting point */
- if(v->W)
- j=v->centerW+ci->blocksizes[1]/4-ci->blocksizes[0]/4;
- else
- j=v->centerW;
-
- if(j<ve->lastmark)j=ve->lastmark;
-
- while(j+ve->winlength<=v->pcm_current){
- if(j>=searchpoint)return(1);
-
- ve->lastmark=j;
- for(i=0;i<ve->ch;i++){
- for(k=0;k<4;k++){
- float *filtered=ve->filtered[i*4+k]+j;
- float m=_ve_deltai(ve,filtered-ve->winlength,filtered);
-
- if(m>gi->preecho_thresh[k])return(0);
- if(m<gi->postecho_thresh[k])return(0);
-
- }
- }
-
- j+=min(ci->blocksizes[0],ve->winlength)/2;
-
- }
- if(j>=searchpoint)return(1);
-
- return(-1);
-}
-
-void _ve_envelope_shift(envelope_lookup *e,long shift){
- int i;
- for(i=0;i<e->ch*4;i++)
- memmove(e->filtered[i],e->filtered[i]+shift,(e->current-shift)*
- sizeof(float));
- e->current-=shift;
- e->lastmark-=shift;
-}
-
-
diff --git a/lib/envelope.h b/lib/envelope.h
deleted file mode 100644
index 59079a68..00000000
--- a/lib/envelope.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: PCM data envelope analysis and manipulation
- last mod: $Id: envelope.h,v 1.16 2001/02/26 03:50:41 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_ENVELOPE_
-#define _V_ENVELOPE_
-
-#include "iir.h"
-#include "smallft.h"
-
-typedef struct {
- int ch;
- int winlength;
- int searchstep;
- float minenergy;
-
- IIR_state *iir;
- float **filtered;
-
- long storage;
- long current;
- long lastmark;
-} 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,long searchpoint);
-extern void _ve_envelope_shift(envelope_lookup *e,long shift);
-
-
-#endif
-
diff --git a/lib/floor0.c b/lib/floor0.c
deleted file mode 100644
index f568eb1b..00000000
--- a/lib/floor0.c
+++ /dev/null
@@ -1,468 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: floor backend 0 implementation
- last mod: $Id: floor0.c,v 1.45 2001/08/13 01:36:56 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <ogg/ogg.h>
-#include "vorbis/codec.h"
-#include "codec_internal.h"
-#include "registry.h"
-#include "lpc.h"
-#include "lsp.h"
-#include "codebook.h"
-#include "scales.h"
-#include "misc.h"
-#include "os.h"
-
-#include "misc.h"
-#include <stdio.h>
-
-typedef struct {
- long n;
- int ln;
- int m;
- int *linearmap;
-
- vorbis_info_floor0 *vi;
- lpc_lookup lpclook;
- float *lsp_look;
-
- long bits;
- long frames;
-} vorbis_look_floor0;
-
-/* infrastructure for finding fit */
-static long _f0_fit(codebook *book,
- float *orig,
- float *workfit,
- int cursor){
- int dim=book->dim;
- float norm,base=0.f;
- int i,best=0;
- float *lsp=workfit+cursor;
-
- if(cursor)base=workfit[cursor-1];
- norm=orig[cursor+dim-1]-base;
-
- for(i=0;i<dim;i++)
- lsp[i]=(orig[i+cursor]-base);
- best=_best(book,lsp,1);
-
- memcpy(lsp,book->valuelist+best*dim,dim*sizeof(float));
- for(i=0;i<dim;i++)
- lsp[i]+=base;
- return(best);
-}
-
-/***********************************************/
-
-static vorbis_info_floor *floor0_copy_info (vorbis_info_floor *i){
- vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
- vorbis_info_floor0 *ret=_ogg_malloc(sizeof(vorbis_info_floor0));
- memcpy(ret,info,sizeof(vorbis_info_floor0));
- return(ret);
-}
-
-static void floor0_free_info(vorbis_info_floor *i){
- if(i){
- memset(i,0,sizeof(vorbis_info_floor0));
- _ogg_free(i);
- }
-}
-
-static void floor0_free_look(vorbis_look_floor *i){
- vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
- if(i){
-
- /*fprintf(stderr,"floor 0 bit usage %f\n",
- (float)look->bits/look->frames);*/
-
- if(look->linearmap)_ogg_free(look->linearmap);
- if(look->lsp_look)_ogg_free(look->lsp_look);
- lpc_clear(&look->lpclook);
- memset(look,0,sizeof(vorbis_look_floor0));
- _ogg_free(look);
- }
-}
-
-static void floor0_pack (vorbis_info_floor *i,oggpack_buffer *opb){
- vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
- int j;
- oggpack_write(opb,info->order,8);
- oggpack_write(opb,info->rate,16);
- oggpack_write(opb,info->barkmap,16);
- oggpack_write(opb,info->ampbits,6);
- oggpack_write(opb,info->ampdB,8);
- oggpack_write(opb,info->numbooks-1,4);
- for(j=0;j<info->numbooks;j++)
- oggpack_write(opb,info->books[j],8);
-}
-
-static vorbis_info_floor *floor0_unpack (vorbis_info *vi,oggpack_buffer *opb){
- codec_setup_info *ci=vi->codec_setup;
- int j;
-
- vorbis_info_floor0 *info=_ogg_malloc(sizeof(vorbis_info_floor0));
- info->order=oggpack_read(opb,8);
- info->rate=oggpack_read(opb,16);
- info->barkmap=oggpack_read(opb,16);
- info->ampbits=oggpack_read(opb,6);
- info->ampdB=oggpack_read(opb,8);
- info->numbooks=oggpack_read(opb,4)+1;
-
- if(info->order<1)goto err_out;
- if(info->rate<1)goto err_out;
- if(info->barkmap<1)goto err_out;
- if(info->numbooks<1)goto err_out;
-
- for(j=0;j<info->numbooks;j++){
- info->books[j]=oggpack_read(opb,8);
- if(info->books[j]<0 || info->books[j]>=ci->books)goto err_out;
- }
- return(info);
-
- err_out:
- floor0_free_info(info);
- return(NULL);
-}
-
-/* initialize Bark scale and normalization lookups. We could do this
- with static tables, but Vorbis allows a number of possible
- combinations, so it's best to do it computationally.
-
- The below is authoritative in terms of defining scale mapping.
- Note that the scale depends on the sampling rate as well as the
- linear block and mapping sizes */
-
-static vorbis_look_floor *floor0_look (vorbis_dsp_state *vd,vorbis_info_mode *mi,
- vorbis_info_floor *i){
- int j;
- float scale;
- vorbis_info *vi=vd->vi;
- codec_setup_info *ci=vi->codec_setup;
- vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
- vorbis_look_floor0 *look=_ogg_calloc(1,sizeof(vorbis_look_floor0));
- look->m=info->order;
- look->n=ci->blocksizes[mi->blockflag]/2;
- look->ln=info->barkmap;
- look->vi=info;
-
- if(vd->analysisp)
- lpc_init(&look->lpclook,look->ln,look->m);
-
- /* we choose a scaling constant so that:
- floor(bark(rate/2-1)*C)=mapped-1
- floor(bark(rate/2)*C)=mapped */
- scale=look->ln/toBARK(info->rate/2.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=_ogg_malloc((look->n+1)*sizeof(int));
- for(j=0;j<look->n;j++){
- int val=floor( toBARK((info->rate/2.f)/look->n*j)
- *scale); /* bark numbers represent band edges */
- if(val>=look->ln)val=look->ln; /* guard against the approximation */
- look->linearmap[j]=val;
- }
- look->linearmap[j]=-1;
-
- look->lsp_look=_ogg_malloc(look->ln*sizeof(float));
- for(j=0;j<look->ln;j++)
- look->lsp_look[j]=2*cos(M_PI/look->ln*j);
-
- return look;
-}
-
-/* less efficient than the decode side (written for clarity). We're
- not bottlenecked here anyway */
-
-float _curve_to_lpc(float *curve,float *lpc,
- vorbis_look_floor0 *l){
- /* map the input curve to a bark-scale curve for encoding */
-
- int mapped=l->ln;
- float *work=alloca(sizeof(float)*mapped);
- int i,j,last=0;
- int bark=0;
- static int seq=0;
-
- memset(work,0,sizeof(float)*mapped);
-
- /* Only the decode side is behavior-specced; for now in the encoder,
- we select the maximum value of each band as representative (this
- helps make sure peaks don't go out of range. In error terms,
- selecting min would make more sense, but the codebook is trained
- numerically, so we don't actually lose. We'd still want to
- use the original curve for error and noise estimation */
-
- for(i=0;i<l->n;i++){
- bark=l->linearmap[i];
- if(work[bark]<curve[i])work[bark]=curve[i];
- if(bark>last+1){
- /* If the bark scale is climbing rapidly, some bins may end up
- going unused. This isn't a waste actually; it keeps the
- scale resolution even so that the LPC generator has an easy
- time. However, if we leave the bins empty we lose energy.
- So, fill 'em in. The decoder does not do anything with he
- unused bins, so we can fill them anyway we like to end up
- with a better spectral curve */
-
- /* we'll always have a bin zero, so we don't need to guard init */
- long span=bark-last;
- for(j=1;j<span;j++){
- float del=(float)j/span;
- work[j+last]=work[bark]*del+work[last]*(1.f-del);
- }
- }
- last=bark;
- }
-
- /* If we're over-ranged to avoid edge effects, fill in the end of spectrum gap */
- for(i=bark+1;i<mapped;i++)
- work[i]=work[i-1];
-
-
- /**********************/
-
- for(i=0;i<l->n;i++)
- curve[i]-=150;
-
- _analysis_output("barkfloor",seq,work,bark,0,0);
- _analysis_output("barkcurve",seq++,curve,l->n,1,0);
-
- for(i=0;i<l->n;i++)
- curve[i]+=150;
-
- /**********************/
-
- return vorbis_lpc_from_curve(work,lpc,&(l->lpclook));
-}
-
-static int floor0_forward(vorbis_block *vb,vorbis_look_floor *in,
- float *mdct, const float *logmdct, /* in */
- const float *logmask, const float *logmax, /* in */
- float *codedflr){ /* out */
- long j;
- vorbis_look_floor0 *look=(vorbis_look_floor0 *)in;
- vorbis_info_floor0 *info=look->vi;
- float amp;
- long bits=0;
- long val=0;
- static int seq=0;
-
-#ifdef TRAIN_LSP
- FILE *of;
- FILE *ef;
- char buffer[80];
-
-#if 1
- sprintf(buffer,"lsp0coeff_%d.vqd",vb->mode);
- of=fopen(buffer,"a");
-#endif
-#endif
-
- seq++;
-
-
- /* our floor comes in on a [-Inf...0] dB scale. The curve has to be
- positive, so we offset it. */
-
- for(j=0;j<look->n;j++)
- codedflr[j]=logmask[j]+info->ampdB;
-
- /* use 'out' as temp storage */
- /* Convert our floor to a set of lpc coefficients */
- amp=sqrt(_curve_to_lpc(codedflr,codedflr,look));
-
- /* amp is in the range (0. to ampdB]. Encode that range using
- ampbits bits */
-
- {
- long maxval=(1L<<info->ampbits)-1;
-
- val=rint(amp/info->ampdB*maxval);
-
- if(val<0)val=0; /* likely */
- if(val>maxval)val=maxval; /* not bloody likely */
-
- if(val>0)
- amp=(float)val/maxval*info->ampdB;
- else
- amp=0;
- }
-
- if(val){
- /* LSP <-> LPC is orthogonal and LSP quantizes more stably */
- _analysis_output("lpc",seq-1,codedflr,look->m,0,0);
- if(vorbis_lpc_to_lsp(codedflr,codedflr,look->m))
- val=0;
-
- }
-
- oggpack_write(&vb->opb,val,info->ampbits);
- look->bits+=info->ampbits+1;
- look->frames++;
-
- if(val){
- float *lspwork=alloca(look->m*sizeof(float));
-
- /* the spec supports using one of a number of codebooks. Right
- now, encode using this lib supports only one */
- backend_lookup_state *be=vb->vd->backend_state;
- codebook *b;
- int booknum;
-
- _analysis_output("lsp",seq-1,codedflr,look->m,0,0);
-
- /* which codebook to use? We do it only by range right now. */
- if(info->numbooks>1){
- float last=0.;
- for(j=0;j<look->m;j++){
- float val=codedflr[j]-last;
- if(val<info->lessthan || val>info->greaterthan)break;
- last=codedflr[j];
- }
- if(j<look->m)
- booknum=0;
- else
- booknum=1;
- }else
- booknum=0;
-
- b=be->fullbooks+info->books[booknum];
- oggpack_write(&vb->opb,booknum,_ilog(info->numbooks));
- look->bits+=_ilog(info->numbooks);
-
-#ifdef TRAIN_LSP
- {
- float last=0.f;
- for(j=0;j<look->m;j++){
- fprintf(of,"%.12g, ",codedflr[j]-last);
- last=codedflr[j];
- }
- }
- fprintf(of,"\n");
- fclose(of);
-
- sprintf(buffer,"lsp0ent_m%d_b%d.vqd",vb->mode,booknum);
- ef=fopen(buffer,"a");
-
-#endif
-
- /* code the spectral envelope, and keep track of the actual
- quantized values; we don't want creeping error as each block is
- nailed to the last quantized value of the previous block. */
-
- for(j=0;j<look->m;j+=b->dim){
- int entry=_f0_fit(b,codedflr,lspwork,j);
- look->bits+=vorbis_book_encode(b,entry,&vb->opb);
-
-#ifdef TRAIN_LSP
- fprintf(ef,"%d,\n",entry);
-#endif
-
- }
-
-#ifdef TRAIN_LSP
- fclose(ef);
-#endif
-
- _analysis_output("lsp2",seq-1,lspwork,look->m,0,0);
-
- /* take the coefficients back to a spectral envelope curve */
- for(j=0;j<look->n;j++)
- codedflr[j]=1.f;
- vorbis_lsp_to_curve(codedflr,look->linearmap,look->n,look->ln,
- lspwork,look->m,amp,info->ampdB);
-
- _analysis_output("barklsp",seq-1,codedflr,look->n,1,1);
- _analysis_output("lsp3",seq-1,codedflr,look->n,0,1);
-
- return(val);
- }
-
-#ifdef TRAIN_LSP
- fclose(of);
-#endif
-
- memset(codedflr,0,sizeof(float)*look->n);
- memset(mdct,0,sizeof(float)*look->n);
- return(val);
-}
-
-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,_ilog(info->numbooks));
-
- if(booknum!=-1 && booknum<info->numbooks){ /* be paranoid */
- backend_lookup_state *be=vb->vd->backend_state;
- codebook *b=be->fullbooks+info->books[booknum];
- float last=0.f;
- float *lsp=_vorbis_block_alloc(vb,sizeof(float)*(look->m+1));
-
- for(j=0;j<look->m;j+=b->dim)
- if(vorbis_book_decodev_set(b,lsp+j,&vb->opb,b->dim)==-1)goto eop;
- for(j=0;j<look->m;){
- for(k=0;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;
-
- 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,look->n,look->ln,
- lsp,look->m,amp,info->ampdB);
- return(1);
- }
- memset(out,0,sizeof(float)*look->n);
- return(0);
-}
-
-/* export hooks */
-vorbis_func_floor floor0_exportbundle={
- &floor0_pack,&floor0_unpack,&floor0_look,&floor0_copy_info,&floor0_free_info,
- &floor0_free_look,&floor0_forward,&floor0_inverse1,&floor0_inverse2
-};
-
-
diff --git a/lib/floor1.c b/lib/floor1.c
deleted file mode 100644
index 3387829a..00000000
--- a/lib/floor1.c
+++ /dev/null
@@ -1,1152 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: floor backend 1 implementation
- last mod: $Id: floor1.c,v 1.11 2001/08/13 01:36:56 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <ogg/ogg.h>
-#include "vorbis/codec.h"
-#include "codec_internal.h"
-#include "registry.h"
-#include "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 {
- 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;
-
-typedef struct lsfit_acc{
- long x0;
- long x1;
-
- long xa;
- long ya;
- long x2a;
- long y2a;
- long xya;
- long n;
- long an;
- long un;
- long edgey0;
- long edgey1;
-} lsfit_acc;
-
-/***********************************************/
-
-static vorbis_info_floor *floor1_copy_info (vorbis_info_floor *i){
- vorbis_info_floor1 *info=(vorbis_info_floor1 *)i;
- vorbis_info_floor1 *ret=_ogg_malloc(sizeof(vorbis_info_floor1));
- memcpy(ret,info,sizeof(vorbis_info_floor1));
- return(ret);
-}
-
-static void floor1_free_info(vorbis_info_floor *i){
- if(i){
- memset(i,0,sizeof(vorbis_info_floor1));
- _ogg_free(i);
- }
-}
-
-static void floor1_free_look(vorbis_look_floor *i){
- vorbis_look_floor1 *look=(vorbis_look_floor1 *)i;
- if(i){
- /*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(vorbis_look_floor1));
- free(i);
- }
-}
-
-static int ilog(unsigned int v){
- int ret=0;
- while(v){
- ret++;
- v>>=1;
- }
- return(ret);
-}
-
-static int ilog2(unsigned int v){
- int ret=0;
- while(v>1){
- ret++;
- v>>=1;
- }
- return(ret);
-}
-
-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 */
- oggpack_write(opb,ilog2(maxposit),4);
- rangebits=ilog2(maxposit);
-
- 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 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(vorbis_info_floor1));
- /* 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(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);
-
- for(j=0,k=0;j<info->partitions;j++){
- count+=info->class_dim[info->partitionclass[j]];
- 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;
-
- return(info);
-
- err_out:
- floor1_free_info(info);
- return(NULL);
-}
-
-static int icomp(const void *a,const void *b){
- return(**(int **)a-**(int **)b);
-}
-
-static vorbis_look_floor *floor1_look(vorbis_dsp_state *vd,vorbis_info_mode *mi,
- 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(vorbis_look_floor1));
- int i,j,n=0;
-
- 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(int),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 float FLOOR_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 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);
-
- d[x]*=FLOOR_fromdB_LOOKUP[y];
- while(++x<x1){
- err=err+ady;
- if(err>=adx){
- err-=adx;
- y+=sy;
- }else{
- y+=base;
- }
- d[x]*=FLOOR_fromdB_LOOKUP[y];
- }
-}
-
-static void render_line0(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);
-
- d[x]=FLOOR_fromdB_LOOKUP[y];
- while(++x<x1){
- err=err+ady;
- if(err>=adx){
- err-=adx;
- y+=sy;
- }else{
- y+=base;
- }
- d[x]=FLOOR_fromdB_LOOKUP[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 quantized=vorbis_dBquant(flr);
-
- long 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(lsfit_acc));
- a->x0=x0;
- a->x1=x1;
- a->edgey0=quantized;
- if(x1>n)x1=n;
-
- 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++;
- }
- }
- }
-
- xb+=xa;
- yb+=ya;
- x2b+=x2a;
- y2b+=y2a;
- xyb+=xya;
- nb+=na;
-
- /* weight toward the actually used frequencies if we meet the threshhold */
- {
- int weight;
- if(nb<info->twofitminsize || na<info->twofitminused){
- weight=0;
- }else{
- weight=nb*info->twofitweight/na;
- }
- a->xa=xa*weight+xb;
- a->ya=ya*weight+yb;
- a->x2a=x2a*weight+x2b;
- a->y2a=y2a*weight+y2b;
- a->xya=xya*weight+xyb;
- a->an=na*weight+nb;
- a->n=nb;
- a->un=na;
- if(nb>=info->unusedminsize)a->un++;
- }
-
- a->edgey1=-200;
- if(x1<n){
- int quantized=vorbis_dBquant(flr+i);
- a->edgey1=quantized;
- }
- return(a->n);
-}
-
-/* returns < 0 on too few points to fit, >=0 (meansq error) on success */
-static int fit_line(lsfit_acc *a,int fits,int *y0,int *y1){
- long x=0,y=0,x2=0,y2=0,xy=0,n=0,an=0,i;
- long x0=a[0].x0;
- long x1=a[fits-1].x1;
-
- for(i=0;i<fits;i++){
- if(a[i].un){
- x+=a[i].xa;
- y+=a[i].ya;
- x2+=a[i].x2a;
- y2+=a[i].y2a;
- xy+=a[i].xya;
- n+=a[i].n;
- an+=a[i].an;
- }
- }
-
- if(*y0>=0){ /* hint used to break degenerate cases */
- x+= x0;
- y+= *y0;
- x2+= x0 * x0;
- y2+= *y0 * *y0;
- xy+= *y0 * x0;
- n++;
- an++;
- }
-
- if(*y1>=0){ /* hint used to break degenerate cases */
- x+= x1;
- y+= *y1;
- x2+= x1 * x1;
- y2+= *y1 * *y1;
- xy+= *y1 * x1;
- n++;
- an++;
- }
-
- if(n<2)return(n-2);
-
- {
- /* need 64 bit multiplies, which C doesn't give portably as int */
- double fx=x;
- double fy=y;
- double fx2=x2;
- double fxy=xy;
- double denom=1./(an*fx2-fx*fx);
- double a=(fy*fx2-fxy*fx)*denom;
- double b=(an*fxy-fx*fy)*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);
- }
-}
-
-/*static void fit_line_point(lsfit_acc *a,int fits,int *y0,int *y1){
- long y=0;
- int i;
-
- for(i=0;i<fits && y==0;i++)
- y+=a[i].ya;
-
- *y0=*y1=y;
- }*/
-
-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);
-
- if(mdct[x]+info->twofitatten>=mask[x]){
- if(y+info->maxover<val)return(1);
- if(y-info->maxunder>val)return(1);
- mse=(y-val);
- mse*=mse;
- n++;
- }
-
- while(++x<x1){
- err=err+ady;
- if(err>=adx){
- err-=adx;
- y+=sy;
- }else{
- y+=base;
- }
-
- if(mdct[x]+info->twofitatten>=mask[x]){
- val=vorbis_dBquant(mask+x);
- if(val){
- if(y+info->maxover<val)return(1);
- if(y-info->maxunder>val)return(1);
- mse+=((y-val)*(y-val));
- n++;
- }
- }
- }
-
- if(n){
- 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;
-}
-
-static int floor1_forward(vorbis_block *vb,vorbis_look_floor *in,
- float *mdct, const float *logmdct, /* in */
- const float *logmask, const float *logmax, /* in */
- float *codedflr){ /* out */
- static int seq=0;
- long i,j,k,l;
- vorbis_look_floor1 *look=(vorbis_look_floor1 *)in;
- vorbis_info_floor1 *info=look->vi;
- long n=info->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 fit_flag[VIF_POSIT+2];
-
- int loneighbor[VIF_POSIT+2]; /* sorted index of range list position (+2) */
- int hineighbor[VIF_POSIT+2];
- int memo[VIF_POSIT+2];
- codec_setup_info *ci=vb->vd->vi->codec_setup;
- static_codebook **sbooks=ci->book_param;
- codebook *books=NULL;
- int writeflag=0;
-
- if(vb->vd->backend_state){
- books=((backend_lookup_state *)(vb->vd->backend_state))->
- fullbooks;
- writeflag=1;
- }
-
- memset(fit_flag,0,sizeof(fit_flag));
- 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 */
-
- /* Scan back from high edge to first 'used' frequency */
- for(;n>info->unusedmin_n;n--)
- if(logmdct[n-1]>-floor1_rangedB &&
- logmdct[n-1]+info->twofitatten>logmask[n-1])break;
-
- /* 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,logmax,0,n,fits,n,info);
- }else{
- for(i=0;i<posts-1;i++)
- nonzero+=accumulate_fit(logmask,logmax,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;
- int mse=fit_line(fits,posts-1,&y0,&y1);
- if(mse<0){
- /* Only a single nonzero point */
- y0=-200;
- y1=0;
- fit_line(fits,posts-1,&y0,&y1);
- }
-
- fit_flag[0]=1;
- fit_flag[1]=1;
- fit_valueA[0]=y0;
- fit_valueB[0]=y0;
- fit_valueB[1]=y1;
- fit_valueA[1]=y1;
-
- if(mse>=0){
- /* 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;
-
- /* if this is an empty segment, its endpoints don't matter.
- Mark as such */
- for(j=lsortpos;j<hsortpos;j++)
- if(fits[j].un)break;
- if(j==hsortpos){
- /* empty segment; important to note that this does not
- break 0/n post case */
- fit_valueB[ln]=-200;
- if(fit_valueA[ln]<0)
- fit_flag[ln]=0;
- fit_valueA[hn]=-200;
- if(fit_valueB[hn]<0)
- fit_flag[hn]=0;
-
- }else{
- /* 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(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 lmse=fit_line(fits+lsortpos,sortpos-lsortpos,&ly0,&ly1);
- int hmse=fit_line(fits+sortpos,hsortpos-sortpos,&hy0,&hy1);
-
- /* the boundary/sparsity cases are the hard part. They
- don't happen often given that we use the full mask
- curve (weighted) now, but when they do happen they
- can go boom. Pay them detailed attention */
- /* cases for a segment:
- >=0) normal fit (>=2 unique points)
- -1) one point on x0;
- one point on x1; <-- disallowed by fit_line
- -2) one point in between x0 and x1
- -3) no points */
-
- switch(lmse){
- case -2:
- /* no points in the low segment */
- break;
- case -1:
- ly0=fits[lsortpos].edgey0;
- break;
- /*default:
- break;*/
- }
-
- switch(hmse){
- case -2:
- /* no points in the hi segment */
- break;
- case -1:
- hy0=fits[sortpos].edgey0;
- break;
- }
-
- /* store new edge values */
- fit_valueB[ln]=ly0;
- if(ln==0 && ly0>=0)fit_valueA[ln]=ly0;
- fit_valueA[i]=ly1;
- fit_valueB[i]=hy0;
- fit_valueA[hn]=hy1;
- if(hn==1 && hy1>=0)fit_valueB[hn]=hy1;
-
- if(ly0<0 && fit_valueA[ln]<0)
- fit_flag[ln]=0;
- if(hy1<0 && fit_valueB[hn]<0)
- fit_flag[hn]=0;
-
- 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;
-
- /* store flag (set) */
- fit_flag[i]=1;
- }
- }
- }
- }
- }
- }
-
- /* quantize values to multiplier spec */
- switch(info->mult){
- case 1: /* 1024 -> 256 */
- for(i=0;i<posts;i++)
- if(fit_flag[i])
- fit_valueA[i]=post_Y(fit_valueA,fit_valueB,i)>>2;
- break;
- case 2: /* 1024 -> 128 */
- for(i=0;i<posts;i++)
- if(fit_flag[i])
- fit_valueA[i]=post_Y(fit_valueA,fit_valueB,i)>>3;
- break;
- case 3: /* 1024 -> 86 */
- for(i=0;i<posts;i++)
- if(fit_flag[i])
- fit_valueA[i]=post_Y(fit_valueA,fit_valueB,i)/12;
- break;
- case 4: /* 1024 -> 64 */
- for(i=0;i<posts;i++)
- if(fit_flag[i])
- fit_valueA[i]=post_Y(fit_valueA,fit_valueB,i)>>4;
- break;
- }
-
- /* find prediction values for each post and subtract them */
- for(i=2;i<posts;i++){
- int sp=look->reverse_index[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=fit_valueA[ln];
- int y1=fit_valueA[hn];
-
- int predicted=render_point(x0,x1,y0,y1,info->postlist[i]);
-
- if(fit_flag[i]){
- int headroom=(look->quant_q-predicted<predicted?
- look->quant_q-predicted:predicted);
-
- int val=fit_valueA[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;
-
- fit_valueB[i]=val;
-
- /* unroll the neighbor arrays */
- for(j=sp+1;j<posts;j++)
- if(loneighbor[j]==i)
- loneighbor[j]=loneighbor[sp];
- else
- break;
- for(j=sp-1;j>=0;j--)
- if(hineighbor[j]==i)
- hineighbor[j]=hineighbor[sp];
- else
- break;
-
- }else{
- fit_valueA[i]=predicted;
- fit_valueB[i]=0;
- }
- if(fit_valueB[i]==0)
- fit_valueA[i]|=0x8000;
- else{
- fit_valueA[look->loneighbor[i-2]]&=0x7fff;
- fit_valueA[look->hineighbor[i-2]]&=0x7fff;
- }
- }
-
- /* we have everything we need. pack it out */
- /* mark nontrivial floor */
- if(writeflag){
- oggpack_write(&vb->opb,1,1);
-
- /* beginning/end post */
- look->frames++;
- look->postbits+=ilog(look->quant_q-1)*2;
- oggpack_write(&vb->opb,fit_valueA[0],ilog(look->quant_q-1));
- oggpack_write(&vb->opb,fit_valueA[1],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;
-
- /* generate the partition's first stage cascade value */
- if(csubbits){
- int maxval[8];
- 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=fit_valueB[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,&vb->opb);
-
-#ifdef TRAIN_FLOOR1
- {
- FILE *of;
- char buffer[80];
- sprintf(buffer,"line_%dx%d_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(fit_valueB[j+k]<(books+book)->entries)
- look->postbits+=vorbis_book_encode(books+book,
- fit_valueB[j+k],&vb->opb);
- /*else
- fprintf(stderr,"+!");*/
-
-#ifdef TRAIN_FLOOR1
- {
- FILE *of;
- char buffer[80];
- sprintf(buffer,"line_%dx%d_%dsub%d.vqd",
- vb->pcmend/2,posts-2,class,bookas[k]);
- of=fopen(buffer,"a");
- fprintf(of,"%d\n",fit_valueB[j+k]);
- fclose(of);
- }
-#endif
- }
- }
- j+=cdim;
- }
- }
-
- {
- /* generate quantized floor equivalent to what we'd unpack in decode */
- int hx;
- int lx=0;
- int ly=fit_valueA[0]*info->mult;
-
- for(j=1;j<posts;j++){
- int current=look->forward_index[j];
- if(!(fit_valueA[current]&0x8000)){
- int hy=(fit_valueA[current]&0x7fff)*info->mult;
- hx=info->postlist[current];
-
- render_line0(lx,hx,ly,hy,codedflr);
-
- lx=hx;
- ly=hy;
- }
- }
- for(j=lx;j<vb->pcmend/2;j++)codedflr[j]=codedflr[j-1]; /* be certain */
-
- /* use it to create residue vector. Eliminate mdct elements
- that were below the error training attenuation relative to
- the original mask. This avoids portions of the floor fit
- that were considered 'unused' in fitting from being used in
- coding residue if the unfit values are significantly below
- the original input mask */
-
- for(j=0;j<n;j++)
- if(logmdct[j]+info->twofitatten<logmask[j])
- mdct[j]=0.f;
- for(j=n;j<vb->pcmend/2;j++)mdct[j]=0.f;
-
- }
-
- }else{
- if(writeflag)oggpack_write(&vb->opb,0,1);
- memset(codedflr,0,n*sizeof(float));
- memset(mdct,0,n*sizeof(float));
- }
- seq++;
- return(nonzero);
-}
-
-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=((backend_lookup_state *)(vb->vd->backend_state))->
- fullbooks;
-
- /* unpack wrapped/predicted values from stream */
- if(oggpack_read(&vb->opb,1)==1){
- int *fit_value=_vorbis_block_alloc(vb,(look->posts)*sizeof(int));
-
- fit_value[0]=oggpack_read(&vb->opb,ilog(look->quant_q-1));
- fit_value[1]=oggpack_read(&vb->opb,ilog(look->quant_q-1));
-
- /* partition by partition */
- /* 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;
- 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->mode]/2;
- int j;
-
- if(memo){
- /* render the lines */
- int *fit_value=(int *)memo;
- int hx;
- int lx=0;
- int ly=fit_value[0]*info->mult;
- for(j=1;j<look->posts;j++){
- int current=look->forward_index[j];
- int hy=fit_value[current]&0x7fff;
- if(hy==fit_value[current]){
-
- hy*=info->mult;
- hx=info->postlist[current];
-
- render_line(lx,hx,ly,hy,out);
-
- lx=hx;
- ly=hy;
- }
- }
- for(j=hx;j<n;j++)out[j]*=out[j-1]; /* be certain */
- return(1);
- }
- memset(out,0,sizeof(float)*n);
- return(0);
-}
-
-/* export hooks */
-vorbis_func_floor floor1_exportbundle={
- &floor1_pack,&floor1_unpack,&floor1_look,&floor1_copy_info,&floor1_free_info,
- &floor1_free_look,&floor1_forward,&floor1_inverse1,&floor1_inverse2
-};
-
diff --git a/lib/iir.c b/lib/iir.c
deleted file mode 100644
index 7a4a39e0..00000000
--- a/lib/iir.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: Direct Form II IIR filters, plus some specializations
- last mod: $Id: iir.c,v 1.10 2001/02/26 03:50:41 xiphmont Exp $
-
- ********************************************************************/
-
-/* LPC is actually a degenerate case of form I/II filters, but we need
- both */
-
-#include <ogg/ogg.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include "iir.h"
-
-void IIR_init(IIR_state *s,int stages,float gain, float *A, float *B){
- memset(s,0,sizeof(IIR_state));
- s->stages=stages;
- s->gain=1.f/gain;
- s->coeff_A=_ogg_malloc(stages*sizeof(float));
- s->coeff_B=_ogg_malloc((stages+1)*sizeof(float));
- s->z_A=_ogg_calloc(stages*2,sizeof(float));
-
- memcpy(s->coeff_A,A,stages*sizeof(float));
- memcpy(s->coeff_B,B,(stages+1)*sizeof(float));
-}
-
-void IIR_clear(IIR_state *s){
- if(s){
- _ogg_free(s->coeff_A);
- _ogg_free(s->coeff_B);
- _ogg_free(s->z_A);
- memset(s,0,sizeof(IIR_state));
- }
-}
-
-void IIR_reset(IIR_state *s){
- memset(s->z_A,0,sizeof(float)*s->stages*2);
-}
-
-float IIR_filter(IIR_state *s,float in){
- int stages=s->stages,i;
- float newA= in*s->gain;
- float newB=0;
- float *zA=s->z_A+s->ring;
-
- for(i=0;i<stages;i++){
- newA+= s->coeff_A[i] * zA[i];
- newB+= s->coeff_B[i] * zA[i];
- }
- newB+=newA*s->coeff_B[stages];
-
- zA[0]=zA[stages]=newA;
- if(++s->ring>=stages)s->ring=0;
- return(newB);
-}
-
-/* this assumes the symmetrical structure of the feed-forward stage of
- a typical bandpass to save multiplies */
-float IIR_filter_Band(IIR_state *s,float in){
- int stages=s->stages,i;
- int stages2=stages>>1;
- float newA= in*s->gain;
- float newB=0;
- float *zA=s->z_A+s->ring;
-
- newA+= s->coeff_A[0] * zA[0];
- for(i=1;i<stages2;i++){
- newA+= s->coeff_A[i] * zA[i];
- newB+= s->coeff_B[i] * (zA[i]-zA[stages-i]);
- }
- newB+= s->coeff_B[i] * zA[i];
- for(;i<stages;i++)
- newA+= s->coeff_A[i] * zA[i];
-
- newB+=newA-zA[0];
-
- zA[0]=zA[stages]=newA;
- if(++s->ring>=stages)s->ring=0;
- return(newB);
-}
-
-#ifdef _V_SELFTEST
-
-/* z^-stage, z^-stage+1... */
-static float cheb_bandpass_B[]={-1.f,0.f,5.f,0.f,-10.f,0.f,10.f,0.f,-5.f,0.f,1f};
-static float cheb_bandpass_A[]={-0.6665900311f,
- 1.0070146601f,
- -3.1262875409f,
- 3.5017171569f,
- -6.2779211945f,
- 5.2966481740f,
- -6.7570216587f,
- 4.0760335768f,
- -3.9134284363f,
- 1.3997338886f};
-
-static float data[128]={
- 0.0426331f,
- 0.0384521f,
- 0.0345764f,
- 0.0346069f,
- 0.0314636f,
- 0.0310059f,
- 0.0318604f,
- 0.0336304f,
- 0.036438f,
- 0.0348511f,
- 0.0354919f,
- 0.0343628f,
- 0.0325623f,
- 0.0318909f,
- 0.0263367f,
- 0.0225525f,
- 0.0195618f,
- 0.0160828f,
- 0.0168762f,
- 0.0145569f,
- 0.0126343f,
- 0.0127258f,
- 0.00820923f,
- 0.00787354f,
- 0.00558472f,
- 0.00204468f,
- 3.05176e-05f,
- -0.00357056f,
- -0.00570679f,
- -0.00991821f,
- -0.0101013f,
- -0.00881958f,
- -0.0108948f,
- -0.0110168f,
- -0.0119324f,
- -0.0161438f,
- -0.0194702f,
- -0.0229187f,
- -0.0260315f,
- -0.0282288f,
- -0.0306091f,
- -0.0330505f,
- -0.0364685f,
- -0.0385742f,
- -0.0428772f,
- -0.043457f,
- -0.0425415f,
- -0.0462341f,
- -0.0467529f,
- -0.0489807f,
- -0.0520325f,
- -0.0558167f,
- -0.0596924f,
- -0.0591431f,
- -0.0612793f,
- -0.0618591f,
- -0.0615845f,
- -0.0634155f,
- -0.0639648f,
- -0.0683594f,
- -0.0718079f,
- -0.0729675f,
- -0.0791931f,
- -0.0860901f,
- -0.0885315f,
- -0.088623f,
- -0.089386f,
- -0.0899353f,
- -0.0886841f,
- -0.0910645f,
- -0.0948181f,
- -0.0919495f,
- -0.0891418f,
- -0.0916443f,
- -0.096344f,
- -0.100464f,
- -0.105499f,
- -0.108612f,
- -0.112213f,
- -0.117676f,
- -0.120911f,
- -0.124329f,
- -0.122162f,
- -0.120605f,
- -0.12326f,
- -0.12619f,
- -0.128998f,
- -0.13205f,
- -0.134247f,
- -0.137939f,
- -0.143555f,
- -0.14389f,
- -0.14859f,
- -0.153717f,
- -0.159851f,
- -0.164551f,
- -0.162811f,
- -0.164276f,
- -0.156952f,
- -0.140564f,
- -0.123291f,
- -0.10321f,
- -0.0827637f,
- -0.0652466f,
- -0.053772f,
- -0.0509949f,
- -0.0577698f,
- -0.0818176f,
- -0.114929f,
- -0.148895f,
- -0.181122f,
- -0.200714f,
- -0.21048f,
- -0.203644f,
- -0.179413f,
- -0.145325f,
- -0.104492f,
- -0.0658264f,
- -0.0332031f,
- -0.0106201f,
- -0.00363159f,
- -0.00909424f,
- -0.0244141f,
- -0.0422058f,
- -0.0537415f,
- -0.0610046f,
- -0.0609741f,
- -0.0547791f};
-
-/* comparison test code from http://www-users.cs.york.ac.uk/~fisher/mkfilter/
- (the above page kicks ass, BTW)*/
-
-#define NZEROS 10
-#define NPOLES 10
-#define GAIN 4.599477515e+02f
-
-static float xv[NZEROS+1], yv[NPOLES+1];
-
-static float filterloop(float next){
- xv[0] = xv[1]; xv[1] = xv[2]; xv[2] = xv[3]; xv[3] = xv[4]; xv[4] = xv[5];
- xv[5] = xv[6]; xv[6] = xv[7]; xv[7] = xv[8]; xv[8] = xv[9]; xv[9] = xv[10];
- xv[10] = next / GAIN;
- yv[0] = yv[1]; yv[1] = yv[2]; yv[2] = yv[3]; yv[3] = yv[4]; yv[4] = yv[5];
- yv[5] = yv[6]; yv[6] = yv[7]; yv[7] = yv[8]; yv[8] = yv[9]; yv[9] = yv[10];
- yv[10] = (xv[10] - xv[0]) + 5 * (xv[2] - xv[8]) + 10 * (xv[6] - xv[4])
- + ( -0.6665900311f * yv[0]) + ( 1.0070146601f * yv[1])
- + ( -3.1262875409f * yv[2]) + ( 3.5017171569f * yv[3])
- + ( -6.2779211945f * yv[4]) + ( 5.2966481740f * yv[5])
- + ( -6.7570216587f * yv[6]) + ( 4.0760335768f * yv[7])
- + ( -3.9134284363f * yv[8]) + ( 1.3997338886f * yv[9]);
- return(yv[10]);
-}
-
-#include <stdio.h>
-int main(){
-
- /* run the pregenerated Chebyshev filter, then our own distillation
- through the generic and specialized code */
- float *work=_ogg_malloc(128*sizeof(float));
- IIR_state iir;
- int i;
-
- for(i=0;i<128;i++)work[i]=filterloop(data[i]);
- {
- FILE *out=fopen("IIR_ref.m","w");
- for(i=0;i<128;i++)fprintf(out,"%g\n",work[i]);
- fclose(out);
- }
-
- IIR_init(&iir,NPOLES,GAIN,cheb_bandpass_A,cheb_bandpass_B);
- for(i=0;i<128;i++)work[i]=IIR_filter(&iir,data[i]);
- {
- FILE *out=fopen("IIR_gen.m","w");
- for(i=0;i<128;i++)fprintf(out,"%g\n",work[i]);
- fclose(out);
- }
- IIR_clear(&iir);
-
- IIR_init(&iir,NPOLES,GAIN,cheb_bandpass_A,cheb_bandpass_B);
- for(i=0;i<128;i++)work[i]=IIR_filter_ChebBand(&iir,data[i]);
- {
- FILE *out=fopen("IIR_cheb.m","w");
- for(i=0;i<128;i++)fprintf(out,"%g\n",work[i]);
- fclose(out);
- }
- IIR_clear(&iir);
-
- return(0);
-}
-
-#endif
diff --git a/lib/iir.h b/lib/iir.h
deleted file mode 100644
index a3be4790..00000000
--- a/lib/iir.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: Direct Form I, II IIR filters, plus some specializations
- last mod: $Id: iir.h,v 1.7 2001/02/26 03:50:41 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_IIR_H_
-#define _V_IIR_H_
-
-typedef struct {
- int stages;
- float *coeff_A;
- float *coeff_B;
- float *z_A;
- int ring;
- float gain;
-} IIR_state;
-
-extern void IIR_init(IIR_state *s,int stages,float gain, float *A, float *B);
-extern void IIR_clear(IIR_state *s);
-extern float IIR_filter(IIR_state *s,float in);
-extern float IIR_filter_Band(IIR_state *s,float in);
-extern void IIR_reset(IIR_state *s);
-
-#endif
diff --git a/lib/info.c b/lib/info.c
deleted file mode 100644
index 4aa11a28..00000000
--- a/lib/info.c
+++ /dev/null
@@ -1,588 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: maintain the info structure, info <-> header packets
- last mod: $Id: info.c,v 1.42 2001/08/13 01:36:57 xiphmont Exp $
-
- ********************************************************************/
-
-/* general handling of the header and the vorbis_info structure (and
- substructures) */
-
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.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"
-
-/* helpers */
-static int ilog2(unsigned int v){
- int ret=0;
- while(v>1){
- ret++;
- v>>=1;
- }
- return(ret);
-}
-
-static void _v_writestring(oggpack_buffer *o,char *s){
- while(*s){
- oggpack_write(o,*s++,8);
- }
-}
-
-static void _v_readstring(oggpack_buffer *o,char *buf,int bytes){
- while(bytes--){
- *buf++=oggpack_read(o,8);
- }
-}
-
-void vorbis_comment_init(vorbis_comment *vc){
- memset(vc,0,sizeof(vorbis_comment));
-}
-
-void vorbis_comment_add(vorbis_comment *vc,char *comment){
- vc->user_comments=_ogg_realloc(vc->user_comments,
- (vc->comments+2)*sizeof(char *));
- vc->comment_lengths=_ogg_realloc(vc->comment_lengths,
- (vc->comments+2)*sizeof(int));
- vc->user_comments[vc->comments]=strdup(comment);
- vc->comment_lengths[vc->comments]=strlen(comment);
- vc->comments++;
- vc->user_comments[vc->comments]=NULL;
-}
-
-void vorbis_comment_add_tag(vorbis_comment *vc, char *tag, char *contents){
- char *comment=alloca(strlen(tag)+strlen(contents)+2); /* +2 for = and \0 */
- strcpy(comment, tag);
- strcat(comment, "=");
- strcat(comment, contents);
- vorbis_comment_add(vc, 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(toupper(s1[c]) != toupper(s2[c]))
- return !0;
- c++;
- }
- return 0;
-}
-
-char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count){
- long i;
- int found = 0;
- int taglen = strlen(tag)+1; /* +1 for the = we append */
- char *fulltag = alloca(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 */
- return vc->user_comments[i] + taglen;
- else
- found++;
- }
- }
- return NULL; /* didn't find anything */
-}
-
-int vorbis_comment_query_count(vorbis_comment *vc, char *tag){
- int i,count=0;
- int taglen = strlen(tag)+1; /* +1 for the = we append */
- char *fulltag = alloca(taglen+1);
- strcpy(fulltag,tag);
- strcat(fulltag, "=");
-
- for(i=0;i<vc->comments;i++){
- if(!tagcompare(vc->user_comments[i], fulltag, taglen))
- count++;
- }
-
- return count;
-}
-
-void vorbis_comment_clear(vorbis_comment *vc){
- if(vc){
- long i;
- for(i=0;i<vc->comments;i++)
- if(vc->user_comments[i])_ogg_free(vc->user_comments[i]);
- if(vc->user_comments)_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(vorbis_comment));
-}
-
-/* used by synthesis, which has a full, alloced vi */
-void vorbis_info_init(vorbis_info *vi){
- memset(vi,0,sizeof(vorbis_info));
- vi->codec_setup=_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 */
- _mapping_P[ci->map_type[i]]->free_info(ci->map_param[i]);
-
- for(i=0;i<ci->times;i++) /* unpack does the range checking */
- _time_P[ci->time_type[i]]->free_info(ci->time_param[i]);
-
- for(i=0;i<ci->floors;i++) /* unpack does the range checking */
- _floor_P[ci->floor_type[i]]->free_info(ci->floor_param[i]);
-
- for(i=0;i<ci->residues;i++) /* unpack does the range checking */
- _residue_P[ci->residue_type[i]]->free_info(ci->residue_param[i]);
-
- for(i=0;i<ci->books;i++){
- if(ci->book_param[i]){
- /* knows if the book was not alloced */
- vorbis_staticbook_destroy(ci->book_param[i]);
- }
- }
-
- for(i=0;i<ci->psys;i++)
- _vi_psy_free(ci->psy_param[i]);
-
- _ogg_free(ci);
- }
-
- memset(vi,0,sizeof(vorbis_info));
-}
-
-/* Header packing/unpacking ********************************************/
-
-static int _vorbis_unpack_info(vorbis_info *vi,oggpack_buffer *opb){
- codec_setup_info *ci=vi->codec_setup;
- if(!ci)return(OV_EFAULT);
-
- vi->version=oggpack_read(opb,32);
- if(vi->version!=0)return(OV_EVERSION);
-
- vi->channels=oggpack_read(opb,8);
- vi->rate=oggpack_read(opb,32);
-
- vi->bitrate_upper=oggpack_read(opb,32);
- vi->bitrate_nominal=oggpack_read(opb,32);
- vi->bitrate_lower=oggpack_read(opb,32);
-
- ci->blocksizes[0]=1<<oggpack_read(opb,4);
- ci->blocksizes[1]=1<<oggpack_read(opb,4);
-
- if(vi->rate<1)goto err_out;
- if(vi->channels<1)goto err_out;
- if(ci->blocksizes[0]<8)goto err_out;
- if(ci->blocksizes[1]<ci->blocksizes[0])goto err_out;
-
- if(oggpack_read(opb,1)!=1)goto err_out; /* EOP check */
-
- 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;
- vc->vendor=_ogg_calloc(vendorlen+1,1);
- _v_readstring(opb,vc->vendor,vendorlen);
- vc->comments=oggpack_read(opb,32);
- if(vc->comments<0)goto err_out;
- vc->user_comments=_ogg_calloc(vc->comments+1,sizeof(char **));
- vc->comment_lengths=_ogg_calloc(vc->comments+1, sizeof(int));
-
- for(i=0;i<vc->comments;i++){
- int len=oggpack_read(opb,32);
- if(len<0)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;
- if(!ci)return(OV_EFAULT);
-
- /* codebooks */
- ci->books=oggpack_read(opb,8)+1;
- /*ci->book_param=_ogg_calloc(ci->books,sizeof(static_codebook *));*/
- for(i=0;i<ci->books;i++){
- ci->book_param[i]=_ogg_calloc(1,sizeof(static_codebook));
- if(vorbis_staticbook_unpack(opb,ci->book_param[i]))goto err_out;
- }
-
- /* time backend settings */
- ci->times=oggpack_read(opb,6)+1;
- /*ci->time_type=_ogg_malloc(ci->times*sizeof(int));*/
- /*ci->time_param=_ogg_calloc(ci->times,sizeof(void *));*/
- for(i=0;i<ci->times;i++){
- ci->time_type[i]=oggpack_read(opb,16);
- if(ci->time_type[i]<0 || ci->time_type[i]>=VI_TIMEB)goto err_out;
- ci->time_param[i]=_time_P[ci->time_type[i]]->unpack(vi,opb);
- if(!ci->time_param[i])goto err_out;
- }
-
- /* floor backend settings */
- ci->floors=oggpack_read(opb,6)+1;
- /*ci->floor_type=_ogg_malloc(ci->floors*sizeof(int));*/
- /*ci->floor_param=_ogg_calloc(ci->floors,sizeof(void *));*/
- for(i=0;i<ci->floors;i++){
- ci->floor_type[i]=oggpack_read(opb,16);
- if(ci->floor_type[i]<0 || ci->floor_type[i]>=VI_FLOORB)goto err_out;
- ci->floor_param[i]=_floor_P[ci->floor_type[i]]->unpack(vi,opb);
- if(!ci->floor_param[i])goto err_out;
- }
-
- /* residue backend settings */
- ci->residues=oggpack_read(opb,6)+1;
- /*ci->residue_type=_ogg_malloc(ci->residues*sizeof(int));*/
- /*ci->residue_param=_ogg_calloc(ci->residues,sizeof(void *));*/
- for(i=0;i<ci->residues;i++){
- ci->residue_type[i]=oggpack_read(opb,16);
- if(ci->residue_type[i]<0 || ci->residue_type[i]>=VI_RESB)goto err_out;
- ci->residue_param[i]=_residue_P[ci->residue_type[i]]->unpack(vi,opb);
- if(!ci->residue_param[i])goto err_out;
- }
-
- /* map backend settings */
- ci->maps=oggpack_read(opb,6)+1;
- /*ci->map_type=_ogg_malloc(ci->maps*sizeof(int));*/
- /*ci->map_param=_ogg_calloc(ci->maps,sizeof(void *));*/
- for(i=0;i<ci->maps;i++){
- ci->map_type[i]=oggpack_read(opb,16);
- if(ci->map_type[i]<0 || ci->map_type[i]>=VI_MAPB)goto err_out;
- ci->map_param[i]=_mapping_P[ci->map_type[i]]->unpack(vi,opb);
- if(!ci->map_param[i])goto err_out;
- }
-
- /* mode settings */
- ci->modes=oggpack_read(opb,6)+1;
- /*vi->mode_param=_ogg_calloc(vi->modes,sizeof(void *));*/
- for(i=0;i<ci->modes;i++){
- ci->mode_param[i]=_ogg_calloc(1,sizeof(vorbis_info_mode));
- ci->mode_param[i]->blockflag=oggpack_read(opb,1);
- ci->mode_param[i]->windowtype=oggpack_read(opb,16);
- ci->mode_param[i]->transformtype=oggpack_read(opb,16);
- ci->mode_param[i]->mapping=oggpack_read(opb,8);
-
- if(ci->mode_param[i]->windowtype>=VI_WINDOWB)goto err_out;
- if(ci->mode_param[i]->transformtype>=VI_WINDOWB)goto err_out;
- if(ci->mode_param[i]->mapping>=ci->maps)goto err_out;
- }
-
- if(oggpack_read(opb,1)!=1)goto err_out; /* top level EOP check */
-
- return(0);
- err_out:
- vorbis_info_clear(vi);
- return(OV_EBADHEADER);
-}
-
-/* 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);
- }
-
- 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);
- }
-
- 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)return(OV_EFAULT);
-
- /* preamble */
- oggpack_write(opb,0x01,8);
- _v_writestring(opb,"vorbis");
-
- /* 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,ilog2(ci->blocksizes[0]),4);
- oggpack_write(opb,ilog2(ci->blocksizes[1]),4);
- oggpack_write(opb,1,1);
-
- return(0);
-}
-
-static int _vorbis_pack_comment(oggpack_buffer *opb,vorbis_comment *vc){
- char temp[]="Xiphophorus libVorbis I 20010812";
-
- /* preamble */
- oggpack_write(opb,0x03,8);
- _v_writestring(opb,"vorbis");
-
- /* vendor */
- oggpack_write(opb,strlen(temp),32);
- _v_writestring(opb,temp);
-
- /* 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]);
- }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");
-
- /* 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 */
- oggpack_write(opb,ci->times-1,6);
- for(i=0;i<ci->times;i++){
- oggpack_write(opb,ci->time_type[i],16);
- _time_P[ci->time_type[i]]->pack(ci->time_param[i],opb);
- }
-
- /* floors */
- oggpack_write(opb,ci->floors-1,6);
- for(i=0;i<ci->floors;i++){
- oggpack_write(opb,ci->floor_type[i],16);
- _floor_P[ci->floor_type[i]]->pack(ci->floor_param[i],opb);
- }
-
- /* residues */
- oggpack_write(opb,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)) 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;
-
- 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;
- backend_lookup_state *b=v->backend_state;
-
- if(!b){
- 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;
-
- /* 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;
-
- /* 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;
-
- oggpack_writeclear(&opb);
- return(0);
- err_out:
- oggpack_writeclear(&opb);
- memset(op,0,sizeof(ogg_packet));
- memset(op_comm,0,sizeof(ogg_packet));
- memset(op_code,0,sizeof(ogg_packet));
-
- 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);
-}
-
diff --git a/lib/lookup.c b/lib/lookup.c
deleted file mode 100644
index b1c43366..00000000
--- a/lib/lookup.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: lookup based functions
- last mod: $Id: lookup.c,v 1.7 2001/02/26 03:50:42 xiphmont Exp $
-
- ********************************************************************/
-
-#include <math.h>
-#include "lookup.h"
-#include "lookup_data.h"
-#include "os.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
diff --git a/lib/lookup.h b/lib/lookup.h
deleted file mode 100644
index 126e8286..00000000
--- a/lib/lookup.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: lookup based functions
- last mod: $Id: lookup.h,v 1.5 2001/02/26 03:50:42 xiphmont Exp $
-
- ********************************************************************/
-
-#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
diff --git a/lib/lookup_data.h b/lib/lookup_data.h
deleted file mode 100644
index 5798fb22..00000000
--- a/lib/lookup_data.h
+++ /dev/null
@@ -1,189 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: lookup data; generated by lookups.pl; edit there
- last mod: $Id: lookup_data.h,v 1.7 2001/02/26 03:50:42 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_LOOKUP_DATA_H_
-
-#ifdef FLOAT_LOOKUP
-#define COS_LOOKUP_SZ 128
-static 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 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 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
-static 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 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,
-};
-
-#ifdef INT_LOOKUP
-
-#define INVSQ_LOOKUP_I_SHIFT 10
-#define INVSQ_LOOKUP_I_MASK 1023
-static 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 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
diff --git a/lib/lookups.pl b/lib/lookups.pl
deleted file mode 100755
index 211deea5..00000000
--- a/lib/lookups.pl
+++ /dev/null
@@ -1,142 +0,0 @@
-#!/usr/bin/perl
-print <<'EOD';
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: lookup data; generated by lookups.pl; edit there
- last mod: $Id: lookups.pl,v 1.5 2001/02/26 03:50:42 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_LOOKUP_DATA_H_
-
-#ifdef FLOAT_LOOKUP
-EOD
-
-$cos_sz=128;
-$invsq_sz=32;
-$invsq2exp_min=-32;
-$invsq2exp_max=32;
-
-$fromdB_sz=35;
-$fromdB_shift=5;
-$fromdB2_shift=3;
-
-$invsq_i_shift=10;
-$cos_i_shift=9;
-$delta_shift=6;
-
-print "#define COS_LOOKUP_SZ $cos_sz\n";
-print "static float COS_LOOKUP[COS_LOOKUP_SZ+1]={\n";
-
-for($i=0;$i<=$cos_sz;){
- print "\t";
- for($j=0;$j<4 && $i<=$cos_sz;$j++){
- printf "%+.13f,", cos(3.14159265358979323846*($i++)/$cos_sz) ;
- }
- print "\n";
-}
-print "};\n\n";
-
-print "#define INVSQ_LOOKUP_SZ $invsq_sz\n";
-print "static float INVSQ_LOOKUP[INVSQ_LOOKUP_SZ+1]={\n";
-
-for($i=0;$i<=$invsq_sz;){
- print "\t";
- for($j=0;$j<4 && $i<=$invsq_sz;$j++){
- my$indexmap=$i++/$invsq_sz*.5+.5;
- printf "%.12f,", 1./sqrt($indexmap);
- }
- print "\n";
-}
-print "};\n\n";
-
-print "#define INVSQ2EXP_LOOKUP_MIN $invsq2exp_min\n";
-print "#define INVSQ2EXP_LOOKUP_MAX $invsq2exp_max\n";
-print "static float INVSQ2EXP_LOOKUP[INVSQ2EXP_LOOKUP_MAX-\\\n".
- " INVSQ2EXP_LOOKUP_MIN+1]={\n";
-
-for($i=$invsq2exp_min;$i<=$invsq2exp_max;){
- print "\t";
- for($j=0;$j<4 && $i<=$invsq2exp_max;$j++){
- printf "%15.10g,", 2**($i++*-.5);
- }
- print "\n";
-}
-print "};\n\n#endif\n\n";
-
-
-# 0 to -140 dB
-$fromdB2_sz=1<<$fromdB_shift;
-$fromdB_gran=1<<($fromdB_shift-$fromdB2_shift);
-print "#define FROMdB_LOOKUP_SZ $fromdB_sz\n";
-print "#define FROMdB2_LOOKUP_SZ $fromdB2_sz\n";
-print "#define FROMdB_SHIFT $fromdB_shift\n";
-print "#define FROMdB2_SHIFT $fromdB2_shift\n";
-print "#define FROMdB2_MASK ".((1<<$fromdB_shift)-1)."\n";
-
-print "static float FROMdB_LOOKUP[FROMdB_LOOKUP_SZ]={\n";
-
-for($i=0;$i<$fromdB_sz;){
- print "\t";
- for($j=0;$j<4 && $i<$fromdB_sz;$j++){
- printf "%15.10g,", 10**(.05*(-$fromdB_gran*$i++));
- }
- print "\n";
-}
-print "};\n\n";
-
-print "static float FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ]={\n";
-
-for($i=0;$i<$fromdB2_sz;){
- print "\t";
- for($j=0;$j<4 && $i<$fromdB_sz;$j++){
- printf "%15.10g,", 10**(.05*(-$fromdB_gran/$fromdB2_sz*(.5+$i++)));
- }
- print "\n";
-}
-print "};\n\n#ifdef INT_LOOKUP\n\n";
-
-
-$iisz=0x10000>>$invsq_i_shift;
-print "#define INVSQ_LOOKUP_I_SHIFT $invsq_i_shift\n";
-print "#define INVSQ_LOOKUP_I_MASK ".(0x0ffff>>(16-$invsq_i_shift))."\n";
-print "static long INVSQ_LOOKUP_I[$iisz+1]={\n";
-for($i=0;$i<=$iisz;){
- print "\t";
- for($j=0;$j<4 && $i<=$iisz;$j++){
- my$indexmap=$i++/$iisz*.5+.5;
- printf "%8d,", int(1./sqrt($indexmap)*65536.+.5);
- }
- print "\n";
-}
-print "};\n\n";
-
-$cisz=0x10000>>$cos_i_shift;
-print "#define COS_LOOKUP_I_SHIFT $cos_i_shift\n";
-print "#define COS_LOOKUP_I_MASK ".(0x0ffff>>(16-$cos_i_shift))."\n";
-print "#define COS_LOOKUP_I_SZ $cisz\n";
-print "static long COS_LOOKUP_I[COS_LOOKUP_I_SZ+1]={\n";
-
-for($i=0;$i<=$cisz;){
- print "\t";
- for($j=0;$j<4 && $i<=$cisz;$j++){
- printf "%8d,", int(cos(3.14159265358979323846*($i++)/$cos_sz)*16384.+.5) ;
- }
- print "\n";
-}
-print "};\n\n";
-
-
-print "#endif\n\n#endif\n";
-
-
diff --git a/lib/lpc.c b/lib/lpc.c
deleted file mode 100644
index 6d491cd3..00000000
--- a/lib/lpc.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: LPC low level routines
- last mod: $Id: lpc.c,v 1.31 2001/02/26 03:50:42 xiphmont Exp $
-
- ********************************************************************/
-
-/* 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 *lpc,int n,int m){
- float *aut=alloca(sizeof(float)*(m+1));
- float error;
- int i,j;
-
- /* autocorrelation, p+1 lag coefficients */
-
- j=m+1;
- while(j--){
- float d=0;
- for(i=j;i<n;i++)d+=data[i]*data[i-j];
- aut[j]=d;
- }
-
- /* Generate lpc coefficients from autocorr values */
-
- error=aut[0];
-
- for(i=0;i<m;i++){
- float r=-aut[i+1];
-
- if(error==0){
- memset(lpc,0,m*sizeof(float));
- return 0;
- }
-
- /* 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++){
- float tmp=lpc[j];
- lpc[j]+=r*lpc[i-1-j];
- lpc[i-1-j]+=r*tmp;
- }
- if(i%2)lpc[j]+=lpc[j]*r;
-
- error*=1.f-r*r;
- }
-
- /* we need the error value to know how big an impulse to hit the
- filter with later */
-
- return error;
-}
-
-/* Input : n element envelope spectral curve
- Output: m lpc coefficients, excitation energy */
-
-float vorbis_lpc_from_curve(float *curve,float *lpc,lpc_lookup *l){
- int n=l->ln;
- int m=l->m;
- float *work=alloca(sizeof(float)*(n+n));
- float fscale=.5f/n;
- int i,j;
-
- /* input is a real curve. make it complex-real */
- /* This mixes phase, but the LPC generation doesn't care. */
- for(i=0;i<n;i++){
- work[i*2]=curve[i]*fscale;
- work[i*2+1]=0;
- }
- work[n*2-1]=curve[n-1]*fscale;
-
- n*=2;
- drft_backward(&l->fft,work);
-
- /* The autocorrelation will not be circular. Shift, else we lose
- most of the power in the edges. */
-
- for(i=0,j=n/2;i<n/2;){
- float temp=work[i];
- work[i++]=work[j];
- work[j++]=temp;
- }
-
- /* we *could* shave speed here by skimping on the edges (thus
- speeding up the autocorrelation in vorbis_lpc_from_data) but we
- don't right now. */
-
- return(vorbis_lpc_from_data(work,lpc,n,m));
-}
-
-void lpc_init(lpc_lookup *l,long mapped, int m){
- memset(l,0,sizeof(lpc_lookup));
-
- l->ln=mapped;
- l->m=m;
-
- /* we cheat decoding the LPC spectrum via FFTs */
- drft_init(&l->fft,mapped*2);
-
-}
-
-void lpc_clear(lpc_lookup *l){
- if(l){
- drft_clear(&l->fft);
- }
-}
-
-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(float)*(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;
- }
-}
-
-
-
-
-
diff --git a/lib/lpc.h b/lib/lpc.h
deleted file mode 100644
index 48251738..00000000
--- a/lib/lpc.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: LPC low level routines
- last mod: $Id: lpc.h,v 1.17 2001/02/26 03:50:42 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_LPC_H_
-#define _V_LPC_H_
-
-#include "vorbis/codec.h"
-#include "smallft.h"
-
-typedef struct lpclook{
- /* en/decode lookups */
- drft_lookup fft;
-
- int ln;
- int m;
-
-} lpc_lookup;
-
-extern void lpc_init(lpc_lookup *l,long mapped, int m);
-extern void lpc_clear(lpc_lookup *l);
-
-/* simple linear scale LPC code */
-extern float vorbis_lpc_from_data(float *data,float *lpc,int n,int m);
-extern float vorbis_lpc_from_curve(float *curve,float *lpc,lpc_lookup *l);
-
-extern void vorbis_lpc_predict(float *coeff,float *prime,int m,
- float *data,long n);
-
-#endif
diff --git a/lib/lsp.c b/lib/lsp.c
deleted file mode 100644
index 1854a370..00000000
--- a/lib/lsp.c
+++ /dev/null
@@ -1,457 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: LSP (also called LSF) conversion routines
- last mod: $Id: lsp.c,v 1.18 2001/06/15 21:15:39 xiphmont Exp $
-
- The LSP generation code is taken (with minimal modification and a
- few bugfixes) from "On the Computation of the LSP Frequencies" by
- Joseph Rothweiler <rothwlr@altavista.net>, available at:
-
- http://www2.xtdl.com/~rothwlr/lsfpaper/lsfpage.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
- seperately 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. */
-
-/* undefine both for the 'old' but more 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;
-
- do{
- q*=ftmp[0]-w;
- p*=ftmp[1]-w;
- ftmp+=2;
- }while(--c);
-
- 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 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 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 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(long));
- 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){
- if(*(float *)a<*(float *)b)
- return(1);
- else
- return(-1);
-}
-
-/* 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 lastdelta=0.f;
- double *defl=alloca(sizeof(double)*(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;
- lastdelta=delta;
- }
-
- 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(double));
-
- 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(float)*(order2+1));
- float *g2=alloca(sizeof(float)*(order2+1));
- float *g1r=alloca(sizeof(float)*(order2+1));
- float *g2r=alloca(sizeof(float)*(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(float),comp);
- qsort(g2r,g2_order,sizeof(float),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);
-}
diff --git a/lib/lsp.h b/lib/lsp.h
deleted file mode 100644
index e8fcf6a8..00000000
--- a/lib/lsp.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: LSP (also called LSF) conversion routines
- last mod: $Id: lsp.h,v 1.9 2001/02/26 03:50:42 xiphmont Exp $
-
- ********************************************************************/
-
-
-#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
diff --git a/lib/mapping0.c b/lib/mapping0.c
deleted file mode 100644
index bfbe66af..00000000
--- a/lib/mapping0.c
+++ /dev/null
@@ -1,687 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: channel mapping 0 implementation
- last mod: $Id: mapping0.c,v 1.34 2001/08/13 01:36:57 xiphmont Exp $
-
- ********************************************************************/
-
-#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 "bitbuffer.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 */
-
-extern int analysis_noisy;
-
-typedef struct {
- drft_lookup fft_look;
- vorbis_info_mode *mode;
- vorbis_info_mapping0 *map;
-
- vorbis_look_time **time_look;
- vorbis_look_floor **floor_look;
-
- vorbis_look_residue **residue_look;
- vorbis_look_psy *psy_look[2];
-
- vorbis_func_time **time_func;
- vorbis_func_floor **floor_func;
- vorbis_func_residue **residue_func;
-
- int ch;
- long lastframe; /* if a different mode is called, we need to
- invalidate decay */
-} vorbis_look_mapping0;
-
-static vorbis_info_mapping *mapping0_copy_info(vorbis_info_mapping *vm){
- vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)vm;
- vorbis_info_mapping0 *ret=_ogg_malloc(sizeof(vorbis_info_mapping0));
- memcpy(ret,info,sizeof(vorbis_info_mapping0));
- return(ret);
-}
-
-static void mapping0_free_info(vorbis_info_mapping *i){
- if(i){
- memset(i,0,sizeof(vorbis_info_mapping0));
- _ogg_free(i);
- }
-}
-
-static void mapping0_free_look(vorbis_look_mapping *look){
- int i;
- vorbis_look_mapping0 *l=(vorbis_look_mapping0 *)look;
- if(l){
- drft_clear(&l->fft_look);
-
- for(i=0;i<l->map->submaps;i++){
- l->time_func[i]->free_look(l->time_look[i]);
- l->floor_func[i]->free_look(l->floor_look[i]);
- l->residue_func[i]->free_look(l->residue_look[i]);
- }
- if(l->psy_look[1] && l->psy_look[1]!=l->psy_look[0]){
- _vp_psy_clear(l->psy_look[1]);
- _ogg_free(l->psy_look[1]);
- }
- if(l->psy_look[0]){
- _vp_psy_clear(l->psy_look[0]);
- _ogg_free(l->psy_look[0]);
- }
- _ogg_free(l->time_func);
- _ogg_free(l->floor_func);
- _ogg_free(l->residue_func);
- _ogg_free(l->time_look);
- _ogg_free(l->floor_look);
- _ogg_free(l->residue_look);
- memset(l,0,sizeof(vorbis_look_mapping0));
- _ogg_free(l);
- }
-}
-
-static vorbis_look_mapping *mapping0_look(vorbis_dsp_state *vd,vorbis_info_mode *vm,
- vorbis_info_mapping *m){
- int i;
- vorbis_info *vi=vd->vi;
- codec_setup_info *ci=vi->codec_setup;
- vorbis_look_mapping0 *look=_ogg_calloc(1,sizeof(vorbis_look_mapping0));
- vorbis_info_mapping0 *info=look->map=(vorbis_info_mapping0 *)m;
- look->mode=vm;
-
- look->time_look=_ogg_calloc(info->submaps,sizeof(vorbis_look_time *));
- look->floor_look=_ogg_calloc(info->submaps,sizeof(vorbis_look_floor *));
-
- look->residue_look=_ogg_calloc(info->submaps,sizeof(vorbis_look_residue *));
-
- look->time_func=_ogg_calloc(info->submaps,sizeof(vorbis_func_time *));
- look->floor_func=_ogg_calloc(info->submaps,sizeof(vorbis_func_floor *));
- look->residue_func=_ogg_calloc(info->submaps,sizeof(vorbis_func_residue *));
-
- for(i=0;i<info->submaps;i++){
- int timenum=info->timesubmap[i];
- int floornum=info->floorsubmap[i];
- int resnum=info->residuesubmap[i];
-
- look->time_func[i]=_time_P[ci->time_type[timenum]];
- look->time_look[i]=look->time_func[i]->
- look(vd,vm,ci->time_param[timenum]);
- look->floor_func[i]=_floor_P[ci->floor_type[floornum]];
- look->floor_look[i]=look->floor_func[i]->
- look(vd,vm,ci->floor_param[floornum]);
- look->residue_func[i]=_residue_P[ci->residue_type[resnum]];
- look->residue_look[i]=look->residue_func[i]->
- look(vd,vm,ci->residue_param[resnum]);
-
- }
- if(ci->psys && vd->analysisp){
- if(info->psy[0] != info->psy[1]){
-
- int psynum=info->psy[0];
- look->psy_look[0]=_ogg_calloc(1,sizeof(vorbis_look_psy));
- _vp_psy_init(look->psy_look[0],ci->psy_param[psynum],
- ci->psy_g_param,
- ci->blocksizes[vm->blockflag]/2,vi->rate);
-
- psynum=info->psy[1];
- look->psy_look[1]=_ogg_calloc(1,sizeof(vorbis_look_psy));
- _vp_psy_init(look->psy_look[1],ci->psy_param[psynum],
- ci->psy_g_param,
- ci->blocksizes[vm->blockflag]/2,vi->rate);
- }else{
-
- int psynum=info->psy[0];
- look->psy_look[0]=_ogg_calloc(1,sizeof(vorbis_look_psy));
- look->psy_look[1]=look->psy_look[0];
- _vp_psy_init(look->psy_look[0],ci->psy_param[psynum],
- ci->psy_g_param,
- ci->blocksizes[vm->blockflag]/2,vi->rate);
-
- }
- }
-
- look->ch=vi->channels;
-
- if(vd->analysisp)drft_init(&look->fft_look,ci->blocksizes[vm->blockflag]);
- return(look);
-}
-
-static int ilog2(unsigned int v){
- int ret=0;
- while(v>1){
- ret++;
- v>>=1;
- }
- return(ret);
-}
-
-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],ilog2(vi->channels));
- oggpack_write(opb,info->coupling_ang[i],ilog2(vi->channels));
- }
- }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,info->timesubmap[i],8);
- oggpack_write(opb,info->floorsubmap[i],8);
- oggpack_write(opb,info->residuesubmap[i],8);
- }
-}
-
-/* also responsible for range checking */
-static vorbis_info_mapping *mapping0_unpack(vorbis_info *vi,oggpack_buffer *opb){
- int i;
- vorbis_info_mapping0 *info=_ogg_calloc(1,sizeof(vorbis_info_mapping0));
- codec_setup_info *ci=vi->codec_setup;
- memset(info,0,sizeof(vorbis_info_mapping0));
-
- if(oggpack_read(opb,1))
- info->submaps=oggpack_read(opb,4)+1;
- else
- info->submaps=1;
-
- if(oggpack_read(opb,1)){
- info->coupling_steps=oggpack_read(opb,8)+1;
-
- for(i=0;i<info->coupling_steps;i++){
- int testM=info->coupling_mag[i]=oggpack_read(opb,ilog2(vi->channels));
- int testA=info->coupling_ang[i]=oggpack_read(opb,ilog2(vi->channels));
-
- 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)goto err_out;
- }
- }
- for(i=0;i<info->submaps;i++){
- info->timesubmap[i]=oggpack_read(opb,8);
- if(info->timesubmap[i]>=ci->times)goto err_out;
- info->floorsubmap[i]=oggpack_read(opb,8);
- if(info->floorsubmap[i]>=ci->floors)goto err_out;
- info->residuesubmap[i]=oggpack_read(opb,8);
- if(info->residuesubmap[i]>=ci->residues)goto err_out;
- }
-
- return info;
-
- err_out:
- mapping0_free_info(info);
- return(NULL);
-}
-
-#include "os.h"
-#include "lpc.h"
-#include "lsp.h"
-#include "envelope.h"
-#include "mdct.h"
-#include "psy.h"
-#include "scales.h"
-
-/* no time mapping implementation for now */
-static long seq=0;
-static int mapping0_forward(vorbis_block *vb,vorbis_look_mapping *l){
- vorbis_dsp_state *vd=vb->vd;
- vorbis_info *vi=vd->vi;
- codec_setup_info *ci=vi->codec_setup;
- backend_lookup_state *b=vb->vd->backend_state;
- vorbis_look_mapping0 *look=(vorbis_look_mapping0 *)l;
- vorbis_info_mapping0 *info=look->map;
- vorbis_info_mode *mode=look->mode;
- vorbis_block_internal *vbi=(vorbis_block_internal *)vb->internal;
- int n=vb->pcmend;
- int i,j;
- float *window=b->window[vb->W][vb->lW][vb->nW][mode->windowtype];
- int *nonzero=alloca(sizeof(int)*vi->channels);
-
- float *work=_vorbis_block_alloc(vb,n*sizeof(float));
-
- float global_ampmax=vbi->ampmax;
- float *local_ampmax=alloca(sizeof(float)*vi->channels);
- int blocktype;
-
- /* we differentiate between short and long block types to help the
- masking engine; the window shapes also matter.
- impulse block (a short block in which an impulse occurs)
- padding block (a short block that pads between a transitional
- long block and an impulse block, or vice versa)
- transition block (the wqeird one; a long block with the transition
- window; affects bass/midrange response and that must be
- accounted for in masking)
- long block (run of the mill long block)
- */
-
- if(vb->W){
- if(!vb->lW || !vb->nW)
- blocktype=BLOCKTYPE_TRANSITION;
- else
- blocktype=BLOCKTYPE_LONG;
- }else{
- /* right now we're missing the infrastructure to distingush the
- two short types */
- blocktype=BLOCKTYPE_IMPULSE;
- }
-
- for(i=0;i<vi->channels;i++){
- float scale=4.f/n;
-
- /* the following makes things clearer to *me* anyway */
- float *pcm =vb->pcm[i];
- float *fft =work;
- float *logfft =pcm+n/2;
-
- /*float *res =pcm;
- float *mdct =pcm;
- float *codedflr=pcm+n/2;
- float *logmax =work;
- float *logmask =work+n/2;*/
-
- /* window the PCM data */
- for(j=0;j<n;j++)
- fft[j]=pcm[j]*=window[j];
-
- /* transform the PCM data */
- /* only MDCT right now.... */
- mdct_forward(b->transform[vb->W][0],pcm,pcm);
-
- /* FFT yields more accurate tonal estimation (not phase sensitive) */
- drft_forward(&look->fft_look,fft);
- fft[0]*=scale;
- logfft[0]=todB(fft);
- local_ampmax[i]=logfft[0];
- for(j=1;j<n-1;j+=2){
- float temp=scale*FAST_HYPOT(fft[j],fft[j+1]);
- temp=logfft[(j+1)>>1]=todB(&temp);
- if(temp>local_ampmax[i])local_ampmax[i]=temp;
- }
- if(local_ampmax[i]>global_ampmax)global_ampmax=local_ampmax[i];
-
- _analysis_output("fft",seq+i,logfft,n/2,1,0);
- }
-
- for(i=0;i<vi->channels;i++){
- int submap=info->chmuxlist[i];
-
- /* the following makes things clearer to *me* anyway */
- float *mdct =vb->pcm[i];
- float *res =mdct;
- float *codedflr=mdct+n/2;
- float *logfft =mdct+n/2;
-
- float *logmdct =work;
- float *logmax =mdct+n/2;
- float *logmask =work+n/2;
-
- for(j=0;j<n/2;j++)
- logmdct[j]=todB(mdct+j);
- _analysis_output("mdct",seq+i,logmdct,n/2,1,0);
-
-
- /* perform psychoacoustics; do masking */
- _vp_compute_mask(look->psy_look[blocktype],
- b->psy_g_look,
- i,
- logfft, /* -> logmax */
- logmdct,
- logmask,
- global_ampmax,
- local_ampmax[i],
- ci->blocksizes[vb->lW]/2);
-
- _analysis_output("mask",seq+i,logmask,n/2,1,0);
-
- /* perform floor encoding */
- nonzero[i]=look->floor_func[submap]->
- forward(vb,look->floor_look[submap],
- mdct,
- logmdct,
- logmask,
- logmax,
-
- codedflr);
-
-
- _analysis_output("mdct2",seq+i,mdct,n/2,1,1);
- _vp_remove_floor(look->psy_look[blocktype],
- b->psy_g_look,
- logmdct,
- mdct,
- codedflr,
- res,
- local_ampmax[i]);
-
- for(j=0;j<n/2;j++)
- if(fabs(res[j])>1200){
- analysis_noisy=1;
- /*fprintf(stderr,"%ld ",seq+i);*/
- }
-
- _analysis_output("res",seq+i,res,n/2,1,0);
- _analysis_output("codedflr",seq+i,codedflr,n/2,1,1);
-
- }
-
- vbi->ampmax=global_ampmax;
-
- /* partition based prequantization and channel coupling */
- /* Steps in prequant and coupling:
-
- down-couple/down-quantize from perfect residue -> quantized vector
- classify by this first quantized vector
-
- do{
- encode quantized vector; add encoded values to 'so-far' vector
- more? [not yet at bitrate/not yet at target]
- yes{
- down-couple/down-quantize from perfect-'so-far' ->
- quantized vector; when subtracting coupling,
- account for +/- out-of-phase component
- }no{
- break
- }
- }
- done.
-
- quantization in each iteration is done (after circular normalization
- in coupling) using a by-iteration quantization granule value.
- */
-
- {
- float **pcm=vb->pcm;
- float **quantized=alloca(sizeof(float*)*vi->channels);
- float **sofar=alloca(sizeof(float*)*vi->channels);
-
- long ***classifications=alloca(sizeof(long**)*info->submaps);
- float ***pcmbundle=alloca(sizeof(float **)*info->submaps);
- float ***sobundle=alloca(sizeof(float **)*info->submaps);
- int **zerobundle=alloca(sizeof(int *)*info->submaps);
- int *chbundle=alloca(sizeof(int)*info->submaps);
- int chcounter=0;
-
- /* play a little loose with this abstraction */
- int quant_passes=look->psy_look[blocktype]->vi->coupling_passes;
- int stopflag=0;
-
- for(i=0;i<vi->channels;i++){
- quantized[i]=pcm[i]+n/2;
- sofar[i]=_vorbis_block_alloc(vb,n/2*sizeof(float));
- memset(sofar[i],0,sizeof(float)*n/2);
- }
-
- pcmbundle[0]=alloca(sizeof(float *)*vi->channels);
- sobundle[0]=alloca(sizeof(float *)*vi->channels);
- zerobundle[0]=alloca(sizeof(int)*vi->channels);
-
- /* initial down-quantized coupling */
- _vp_quantize_couple(look->psy_look[blocktype],
- info,
- pcm,
- sofar,
- quantized,
- nonzero,
- 0);
-
- for(i=0;i<vi->channels;i++)
- _analysis_output("quant",seq+i,quantized[i],n/2,1,0);
-
-
- /* classify, by submap */
-
- for(i=0;i<info->submaps;i++){
- int ch_in_bundle=0;
- pcmbundle[i]=pcmbundle[0]+chcounter;
- sobundle[i]=sobundle[0]+chcounter;
- zerobundle[i]=zerobundle[0]+chcounter;
-
- for(j=0;j<vi->channels;j++){
- if(info->chmuxlist[j]==i){
- if(nonzero[j])
- zerobundle[i][ch_in_bundle]=1;
- else
- zerobundle[i][ch_in_bundle]=0;
- pcmbundle[i][ch_in_bundle]=quantized[j];
- sobundle[i][ch_in_bundle++]=sofar[j];
- }
- }
- chbundle[i]=ch_in_bundle;
- chcounter+=ch_in_bundle;
-
- classifications[i]=look->residue_func[i]->
- class(vb,look->residue_look[i],pcmbundle[i],zerobundle[i],chbundle[i]);
- }
-
- /* actual encoding loop */
- for(i=0;!stopflag;){
-
- /* perform residue encoding of this pass's quantized residue
- vector, according residue mapping */
-
- for(j=0;j<info->submaps;j++)
- look->residue_func[j]->
- forward(vb,look->residue_look[j],
- pcmbundle[j],sobundle[j],zerobundle[j],chbundle[j],
- i,classifications[j]);
- i++;
-
- /* bitrate management decision hook; the following if() is where
- we tell progressive encoding to halt, right now it just
- avoids falling off the edge */
- if(i>=quant_passes /* || yadda yadda */)stopflag=1;
-
- if(!stopflag){
- /* down-couple/down-quantize from perfect-'so-far' ->
- new quantized vector */
- _vp_quantize_couple(look->psy_look[blocktype],
- info,
- pcm,
- sofar,
- quantized,
- nonzero,
- i);
- }
- /* steady as she goes */
- }
- seq+=vi->channels;
- }
-
- look->lastframe=vb->sequence;
- return(0);
-}
-
-static int mapping0_inverse(vorbis_block *vb,vorbis_look_mapping *l){
- vorbis_dsp_state *vd=vb->vd;
- vorbis_info *vi=vd->vi;
- codec_setup_info *ci=vi->codec_setup;
- backend_lookup_state *b=vd->backend_state;
- vorbis_look_mapping0 *look=(vorbis_look_mapping0 *)l;
- vorbis_info_mapping0 *info=look->map;
- vorbis_info_mode *mode=look->mode;
- int i,j;
- long n=vb->pcmend=ci->blocksizes[vb->W];
-
- float *window=b->window[vb->W][vb->lW][vb->nW][mode->windowtype];
- float **pcmbundle=alloca(sizeof(float *)*vi->channels);
- int *zerobundle=alloca(sizeof(int)*vi->channels);
-
- int *nonzero =alloca(sizeof(int)*vi->channels);
- void **floormemo=alloca(sizeof(void *)*vi->channels);
-
- /* time domain information decode (note that applying the
- information would have to happen later; we'll probably add a
- function entry to the harness for that later */
- /* NOT IMPLEMENTED */
-
- /* recover the spectral envelope; store it in the PCM vector for now */
- for(i=0;i<vi->channels;i++){
- int submap=info->chmuxlist[i];
- floormemo[i]=look->floor_func[submap]->
- inverse1(vb,look->floor_look[submap]);
- if(floormemo[i])
- nonzero[i]=1;
- else
- nonzero[i]=0;
- memset(vb->pcm[i],0,sizeof(float)*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];
- }
- }
-
- look->residue_func[i]->inverse(vb,look->residue_look[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];
- look->floor_func[submap]->
- inverse2(vb,look->floor_look[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];
- _analysis_output("out",seq+i,pcm,n/2,1,1);
- mdct_backward(b->transform[vb->W][0],pcm,pcm);
- }
-
- /* window the data */
- for(i=0;i<vi->channels;i++){
- float *pcm=vb->pcm[i];
- if(nonzero[i])
- for(j=0;j<n;j++)
- pcm[j]*=window[j];
- else
- for(j=0;j<n;j++)
- pcm[j]=0.f;
- _analysis_output("final",seq++,pcm,n,0,0);
- }
-
- /* now apply the decoded post-window time information */
- /* NOT IMPLEMENTED */
-
- /* all done! */
- return(0);
-}
-
-/* export hooks */
-vorbis_func_mapping mapping0_exportbundle={
- &mapping0_pack,
- &mapping0_unpack,
- &mapping0_look,
- &mapping0_copy_info,
- &mapping0_free_info,
- &mapping0_free_look,
- &mapping0_forward,
- &mapping0_inverse
-};
diff --git a/lib/masking.h b/lib/masking.h
deleted file mode 100644
index eb19c073..00000000
--- a/lib/masking.h
+++ /dev/null
@@ -1,243 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: masking curve data for psychoacoustics
- last mod: $Id: masking.h,v 1.17 2001/06/18 09:07:31 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_MASKING_H_
-#define _V_MASKING_H_
-
-/* Not really an ATH, more a bottom curve to limit LSP dynamic range */
-static float ATH_Bark_dB_lspconservative[]={
- 15, 15, 15, 15, 11, 10, 8, 7, 7, 7,
- 6, 2, 0, 0, -3, -5, -6, -6, -4.5f, 2.5f,
- 10, 15, 15, 15, 15, 15, 15};
-
-/* The below masking curves are straight from the R. Ehmer
- (J. Acoustical Society of America) papers ca 1958-59. I modified
- them slightly as Ehmer does not correct for the Absolute Threshold
- of Hearing, and the low dB portions of the curves are thus highly
- suspect. */
-
-/* Let's all do the Trek thing and just call them 'Ehmer curves' ;-)
- Note these are octaves, not Bark scale. */
-
-#define EHMER_OFFSET 16
-#define EHMER_MAX 56
-
-static float tone_125_40dB_SL[EHMER_MAX]={
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 18, 16, 14, 12, 11, 9, 7, 5, 3, 2, 0, -2, -4, -6, -8,
- -10, -12, -14, -16, -18, -20, -23, -25, -28,-30,-34,-37,-40,-44,-48,-52,
--900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_125_60dB_SL[EHMER_MAX]={
- 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
- 40, 38, 36, 34, 32, 31, 29, 27, 25, 23, 22, 20, 18, 16, 14, 12,
- 10, 8, 6, 4, 2, 0, -3, -5, -8,-10,-14,-17,-20,-24,-28,-32,
--900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_125_80dB_SL[EHMER_MAX]={
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 58, 56, 54, 52, 51, 49, 47, 45, 43, 42, 40, 38, 36, 34, 32,
- 30, 28, 26, 24, 22, 20, 17, 15, 12, 10, 6, 3, 0, -4, -8,-12,
--900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_125_100dB_SL[EHMER_MAX]={
- 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 77, 75, 74, 73, 72, 71, 70, 69, 68, 67, 65, 64, 63, 62, 60,
- 58, 57, 55, 54, 52, 50, 48, 46, 44, 42, 40, 38, 36, 34, 31, 29,
- 27, 24, 22, 20, 18, 15, 13, 11};
-
-static float tone_250_40dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900,-900, -19, -13, -7, -1, 4, 9, 15, 20,
- 22, 23, 22, 19, 18, 18, 16, 13, 9, 7, 3, 1, -1, -3, -6, -8,
- -10, -13, -16, -19, -21, -24, -28, -32, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_250_60dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900, -10, -5, 1, 7, 13, 19, 25, 30, 33,
- 36, 39, 38, 37, 38, 39, 39, 40, 38, 36, 35, 34, 33, 31, 29, 28,
- 28, 28, 25, 20, 14, 10, 5, 0, -5,-10,-15,-20,-25,-30,-35,-40,
--900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_250_80dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900, -10, 10, 17, 24, 30, 37, 41, 48, 49,
- 50, 53, 54, 53, 53, 54, 55, 57, 57, 57, 58, 59, 60, 58, 57, 58,
- 59, 58, 57, 54, 52, 50, 49, 47, 46, 47, 46, 44, 43, 42, 41, 40,
- 38, 32, 27, 22, 17, 11, 6, 0};
-/* no data, just interpolated from 80 */
-static float tone_250_100dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900, -10, 15, 25, 34, 40, 50, 56, 60, 70,
- 70, 73, 74, 73, 73, 74, 75, 77, 77, 77, 78, 79, 80, 78, 77, 78,
- 79, 78, 77, 74, 72, 70, 69, 67, 66, 67, 66, 64, 63, 62, 61, 60,
- 58, 52, 47, 42, 37, 31, 26, 20};
-
-static float tone_500_40dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900, -40, -26, -20, -14, -8, -2, 4, 10, 17,
- 23, 16, 12, 9, 6, 3, 0, -3, -7, -10, -13, -16, -20, -23, -26, -30,
--900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_500_60dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900,-900, -18, -12, -6, 0, 6, 13, 20, 30,
- 39, 34, 31, 29, 29, 27, 24, 21, 18, 16, 13, 8, 6, 3, 1, -1,
- -5, -2, -5, -8, -12, -15, -18, -22, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_500_80dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900,-900, -22,-16,-10, 0, 10, 20, 32, 43,
- 53, 52, 52, 50, 49, 50, 52, 55, 55, 54, 51, 49, 46, 44, 44, 42,
- 38, 34, 32, 29, 29, 28, 25, 23, 20, 16, 10, 7, 4, 2, -1, -4,
- -7, -10, -15, -20, -25, -30, -35, -40};
-static float tone_500_100dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900, -10, -7, 2, 10, 19, 27, 35, 55, 56,
- 62, 61, 60, 58, 57, 57, 59, 63, 65, 66, 62, 60, 57, 57, 58, 58,
- 57, 56, 56, 56, 57, 57, 56, 57, 57, 54, 47, 41, 37, 28, 21, 16,
- 10, 3, -3, -8, -13, -18, -23, -28};
-
-static float tone_1000_40dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900,-900, -55, -40, -30, -20, -10, 0, 9, 20,
- 27, 20, 13, 14, 13, 5, -1, -6, -11, -20, -30,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_1000_60dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900, -43, -33,-23,-13, -3, 7, 17, 25, 37,
- 42, 33, 25, 25, 23, 18, 13, 9, 4, -1, -7,-13,-18, -23, -28, -33,
--900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_1000_80dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900, -35, -25,-14, -4, 6, 16, 27, 33, 50,
- 59, 57, 47, 41, 40, 43, 47, 48, 47, 42, 39, 37, 37, 36, 35, 32,
- 30, 27, 21, 15, 5, -2, -10, -18, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_1000_100dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900, -40, -30, -20,-10, 0, 10, 23, 33, 45, 60,
- 70, 72, 55, 49, 43, 40, 44, 54, 59, 58, 49, 43, 52, 57, 57, 58,
- 58, 54, 49, 47, 42, 39, 33, 28, 20, 15, 5, 0, -5,-15,-20,-25,
--900,-900,-900,-900,-900,-900,-900,-900};
-
-static float tone_2000_40dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, -3, 5, 12, 20,
- 24, 21, 14, 5, -5, -15, -25, -35, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_2000_60dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, -2, 8, 19, 31,
- 38, 34, 24, 17, 14, 13, 11, 7, 3, -2, -6, -10, -14, -20, -26, -32,
--900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_2000_80dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, -2, 13, 28, 40,
- 51, 51, 43, 35, 28, 29, 35, 37, 37, 35, 31, 28, 25, 22, 19, 15,
- 11, 8, 6, 2, -6, -14, -22, -30, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_2000_100dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -10, 6, 25, 42, 60,
- 66, 60, 53, 43, 35, 31, 34, 47, 58, 51, 43, 45, 54, 59, 59, 56,
- 54, 51, 40, 29, 20, 11, 2, -8, -17, -26, -35,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-
-static float tone_4000_40dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, 0, 3, 10, 18,
- 24, 21, 14, 5, -5, -15, -25, -35, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-
-static float tone_4000_60dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, -2, 8, 19, 31,
- 38, 33, 28, 23, 19, 14, 11, 8, 3, -2, -7, -12, -17, -22, -27, -37,
--900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-
-static float tone_4000_80dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900,-900, -60, -50, -40, -29, -12, 5, 19, 37,
- 51, 49, 40, 35, 36, 36, 36, 33, 32, 24, 18, 8, -3, -12, -20, -29,
--900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-
-static float tone_4000_100dB_SL[EHMER_MAX]={
- -20, -12, -8, -4, 0, 4, 8, 11, 15, 22, 26, 28, 32, 36, 43, 52,
- 62, 59, 50, 48, 50, 50, 45, 36, 45, 30, 20, 10, 0, -10, -19, -28,
- -37,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-
-
-static float tone_8000_40dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, 0, 3, 10, 18,
- 24, 21, 14, 5, 0, 0, 5, 10, 15, 25, 30, 45, 50, 55, 60, 65,
- 70, 75, 80, 85, 90, 95, 100, 100, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_8000_60dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900, -10, -21, -18, -14, -10, 0, 3, 15, 30,
- 43, 40, 36, 35, 36, 38, 41, 43, 45, 47, 50, 55, 60, 65, 70, 75,
- 80, 85, 90, 95, 100, 100, 100, 100, -900,-900,-900,-900,-900,-900,-900,-900,
- -900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_8000_80dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900,-900,-900, -10, -1, 2, 6, 10, 13, 19, 25, 35,
- 63, 55, 50, 48, 46, 45, 45, 50, 55, 65, 75, 80, 85, 90, 95, 100,
- 100, 100, 100, 100,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
- -900,-900,-900,-900,-900,-900,-900,-900};
-static float tone_8000_100dB_SL[EHMER_MAX]={
- -18, -12, -7, -3, 0, 2, 6, 9, 12, 19, 22, 21, 19, 21, 40, 40,
- 80, 60, 35, 25, 15, 5, 5, 5, 25, 30, 35, 43, 50, 55, 60, 65,
- 70, 75, 80, 85, 90, 95, 100, 100, -900,-900,-900,-900,-900,-900,-900,-900,
- -900,-900,-900,-900,-900,-900,-900,-900};
-
-#if 0 /* not used for the time being */
-static float noise_500_60dB_SL[EHMER_MAX]={
--900,-900,-900,-900,-900, -20, -11, -2, 7, 16, 25, 34, 43, 52, 61, 66,
- 69, 68, 58, 50, 44, 38, 32, 28, 25, 24, 20, 18, 17, 12, 10, 8,
- 5, 0, -5, -8, -12, -15, -18, -22, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-
-static float noise_500_80dB_SL[EHMER_MAX]={
--900,-900,-900, -20, -10, -1, 8, 17, 26, 35, 44, 53, 62, 70, 79, 83,
- 85, 85, 81, 77, 74, 71, 68, 63, 61, 59, 56, 55, 54, 52, 48, 47,
- 45, 46, 45, 43, 40, 37, 33, 32, 35, 32, 30, 29, 20, 10, 0, -10,
- -20, -30,-900,-900,-900,-900,-900,-900};
-
-static float noise_1000_60dB_SL[EHMER_MAX]={
--900,-900,-900,-900, -24, -15, -6, 3, 12, 21, 28, 34, 40, 48, 57, 60,
- 61, 56, 54, 45, 36, 27, 21, 19, 17, 13, 10, 0, -10, -20, -20,-900,
--900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-
-static float noise_1000_80dB_SL[EHMER_MAX]={
--900, -26, -17, -8, 1, 10, 19, 28, 37, 41, 46, 51, 58, 68, 74, 81,
- 80, 81, 70, 66, 58, 61, 59, 55, 54, 53, 52, 49, 48, 42, 38, 38,
- 39, 34, 30, 27, 20, 10, 0, -10, -20, -30,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-
-static float noise_2000_60dB_SL[EHMER_MAX]={
--900,-900,-900, -34, -25, -16, -7, 2, 11, 18, 23, 30, 35, 42, 51, 58,
- 58, 57, 50, 40,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-
-static float noise_2000_80dB_SL[EHMER_MAX]={
--900, -26, -17, -8, 1, 10, 19, 28, 33, 38, 43, 48, 53, 62, 70, 77,
- 77, 75, 70, 67, 68, 66, 62, 61, 60, 59, 52, 47, 39, 35, 34, 35,
- 35, 33, 30, 27, 20, 10, 0, -10, -20, -30,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-
-static float noise_4000_60dB_SL[EHMER_MAX]={
--900,-900,-900, -34, -25, -16, -7, 2, 11, 20, 25, 31, 37, 45, 56, 62,
- 64, 61,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-
-static float noise_4000_80dB_SL[EHMER_MAX]={
--900, -26, -17, -8, 1, 10, 19, 26, 33, 39, 45, 50, 55, 65, 75, 82,
- 84, 81, 78, 72, 70, 69, 66, 61, 50, 48, 46, 40, 35, 30, 25, 20,
- 15, 10, 5, 0, -10, -20, -30,-900, -900,-900,-900,-900,-900,-900,-900,-900,
--900,-900,-900,-900,-900,-900,-900,-900};
-
-#endif
-#endif
-
-
diff --git a/lib/mdct.c b/lib/mdct.c
deleted file mode 100644
index c145e9cc..00000000
--- a/lib/mdct.c
+++ /dev/null
@@ -1,568 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: normalized modified discrete cosine transform
- power of two length transform only [64 <= n ]
- last mod: $Id: mdct.c,v 1.25 2001/02/26 03:50:42 xiphmont Exp $
-
- 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(2PI*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"
-
-/* 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(int)*(n/4));
- DATA_TYPE *T=_ogg_malloc(sizeof(DATA_TYPE)*(n+n/4));
-
- int i;
- int n2=n>>1;
- int log2n=lookup->log2n=rint(log(n)/log(2));
- 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];
-
- r0 = x[6] + x[2];
- r1 = x[6] - x[2];
- r2 = x[4] + x[0];
- 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(mdct_lookup));
- }
-}
-
-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(DATA_TYPE)); /* 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;
- }
-}
-
diff --git a/lib/mdct.h b/lib/mdct.h
deleted file mode 100644
index d2810deb..00000000
--- a/lib/mdct.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: modified discrete cosine transform prototypes
- last mod: $Id: mdct.h,v 1.18 2001/02/26 03:50:42 xiphmont Exp $
-
- ********************************************************************/
-
-#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
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/lib/misc.c b/lib/misc.c
deleted file mode 100644
index 9bdbe345..00000000
--- a/lib/misc.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************/
-
-#define HEAD_ALIGN 32
-#include <pthread.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include "vorbis/codec.h"
-#define MISC_C
-#include "misc.h"
-
-static pthread_mutex_t memlock=PTHREAD_MUTEX_INITIALIZER;
-void **pointers=NULL;
-long *insertlist=NULL; /* We can't embed this in the pointer list;
- a pointer can have any value... */
-int ptop=0;
-int palloced=0;
-int pinsert=0;
-
-typedef struct {
- char *file;
- long line;
- long ptr;
-} head;
-
-static void *_insert(void *ptr,char *file,long line){
- ((head *)ptr)->file=file;
- ((head *)ptr)->line=line;
- ((head *)ptr)->ptr=pinsert;
-
- pthread_mutex_lock(&memlock);
- if(pinsert>=palloced){
- palloced+=64;
- if(pointers){
- pointers=(void **)realloc(pointers,sizeof(void **)*palloced);
- insertlist=(long *)realloc(insertlist,sizeof(long *)*palloced);
- }else{
- pointers=(void **)malloc(sizeof(void **)*palloced);
- insertlist=(long *)malloc(sizeof(long *)*palloced);
- }
- }
-
- pointers[pinsert]=ptr;
-
- if(pinsert==ptop)
- pinsert=++ptop;
- else
- pinsert=insertlist[pinsert];
-
- pthread_mutex_unlock(&memlock);
- return(ptr+HEAD_ALIGN);
-}
-
-static void _ripremove(void *ptr){
- int insert;
- pthread_mutex_lock(&memlock);
- insert=((head *)ptr)->ptr;
- insertlist[insert]=pinsert;
- pinsert=insert;
- pointers[insert]=NULL;
- pthread_mutex_unlock(&memlock);
-}
-
-void _VDBG_dump(void){
- int i;
- pthread_mutex_lock(&memlock);
- for(i=0;i<ptop;i++){
- head *ptr=pointers[i];
- if(ptr)
- fprintf(stderr,"unfreed bytes from %s:%ld\n",
- ptr->file,ptr->line);
- }
-
- pthread_mutex_unlock(&memlock);
-}
-
-extern void *_VDBG_malloc(void *ptr,long bytes,char *file,long line){
- bytes+=HEAD_ALIGN;
- if(ptr){
- ptr-=HEAD_ALIGN;
- _ripremove(ptr);
- ptr=realloc(ptr,bytes);
- }else{
- ptr=malloc(bytes);
- memset(ptr,0,bytes);
- }
- return _insert(ptr,file,line);
-}
-
-extern void _VDBG_free(void *ptr,char *file,long line){
- if(ptr){
- ptr-=HEAD_ALIGN;
- _ripremove(ptr);
- free(ptr);
- }
-}
-
diff --git a/lib/misc.h b/lib/misc.h
deleted file mode 100644
index 6cb105a0..00000000
--- a/lib/misc.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: miscellaneous prototypes
- last mod: $Id: misc.h,v 1.9 2001/02/26 03:50:42 xiphmont Exp $
-
- ********************************************************************/
-
-#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 void _analysis_output(char *base,int i,float *v,int n,int bark,int dB);
-
-#ifdef DEBUG_LEAKS
-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__ogg_malloc(NULL,(x),__FILE__,__LINE__)
-#define _ogg_calloc(x,y) _VDBG__ogg_malloc(NULL,(x)*(y),__FILE__,__LINE__)
-#define _ogg_realloc(x,y) _VDBG__ogg_malloc((x),(y),__FILE__,__LINE__)
-#define _ogg_free(x) _VDBG__ogg_free((x),__FILE__,__LINE__)
-#endif
-#endif
-
-#endif
diff --git a/lib/modes/.cvsignore b/lib/modes/.cvsignore
deleted file mode 100644
index 282522db..00000000
--- a/lib/modes/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/lib/modes/maskadj_Z.h b/lib/modes/maskadj_Z.h
deleted file mode 100644
index 44ecae2b..00000000
--- a/lib/modes/maskadj_Z.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: predefined encoding modes; masking adjustments for low bitrate
- last mod: $Id $
-
- ********************************************************************/
-
-#ifndef _V_MASKADJ_Z_H_
-#define _V_MASKADJ_Z_H_
-
-#include <stdio.h>
-#include "vorbis/codec.h"
-#include "backends.h"
-
-static vp_attenblock _vp_tonemask_consbass_Z={
- {{-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*63*/
- {-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*88*/
- {-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*125*/
- {-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*175*/
- {-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*250*/
- {-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*350*/
-
- {-35.f,-35.f,-35.f,-45.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f}, /*500*/
- {-35.f,-35.f,-35.f,-45.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f}, /*700*/
-
- {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1000*/
- {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1400*/
-
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*2000*/
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f},
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*2000*/
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f},
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*2000*/
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f},
- {-24.f,-24.f,-26.f,-30.f,-30.f,-35.f,-45.f,-55.f,-65.f,-75.f,-90.f}, /*16000*/
-}};
-
-static vp_attenblock _vp_tonemask_Z={
-
- {{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*63*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*88*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.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*/
-
-
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*2000*/
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f},
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*2000*/
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f},
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*2000*/
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f},
- {-24.f,-24.f,-26.f,-30.f,-30.f,-35.f,-45.f,-55.f,-65.f,-75.f,-90.f}, /*16000*/
-
-}};
-
-static vp_attenblock _vp_peakatt_Z={
- {{-14.f,-16.f,-18.f,-19.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f},/*63*/
- {-14.f,-16.f,-18.f,-19.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f},/*88*/
- {-14.f,-16.f,-18.f,-19.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f},/*125*/
- {-14.f,-16.f,-18.f,-19.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f},/*125*/
- {-14.f,-16.f,-18.f,-19.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f},/*125*/
- {-14.f,-16.f,-18.f,-19.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f},/*125*/
- {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-24.f,-24.f},/*500*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*700*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*1000*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*1400*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*2000*/
- {-10.f,-10.f,-10.f,-12.f,-16.f,-16.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*2400*/
- {-10.f,-10.f,-10.f,-12.f,-16.f,-16.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*4000*/
- {-10.f,-10.f,-10.f,-12.f,-12.f,-14.f,-16.f,-18.f,-22.f,-24.f,-24.f},/*5600*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-14.f,-16.f,-18.f,-22.f,-24.f,-24.f},/*8000*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-14.f,-16.f,-18.f,-22.f,-24.f,-24.f},/*11500*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-12.f,-16.f,-18.f,-22.f,-24.f,-24.f},/*16000*/
-}};
-
-#endif
diff --git a/lib/modes/mode_44c_Z.h b/lib/modes/mode_44c_Z.h
deleted file mode 100644
index 407feb0e..00000000
--- a/lib/modes/mode_44c_Z.h
+++ /dev/null
@@ -1,315 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: predefined encoding modes; 44kHz stereo ~64kbps true VBR
- last mod: $Id: mode_44c_Z.h,v 1.2 2001/08/13 01:37:13 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_MODES_44c_Z_H_
-#define _V_MODES_44c_Z_H_
-
-#include <stdio.h>
-#include "vorbis/codec.h"
-#include "backends.h"
-
-#include "books/line_128x7_class1.vqh"
-#include "books/line_128x7_class2.vqh"
-
-#include "books/line_128x7_0sub0.vqh"
-#include "books/line_128x7_1sub1.vqh"
-#include "books/line_128x7_1sub2.vqh"
-#include "books/line_128x7_1sub3.vqh"
-#include "books/line_128x7_2sub1.vqh"
-#include "books/line_128x7_2sub2.vqh"
-#include "books/line_128x7_2sub3.vqh"
-
-#include "books/line_1024x31_class0.vqh"
-#include "books/line_1024x31_class1.vqh"
-#include "books/line_1024x31_class2.vqh"
-#include "books/line_1024x31_class3.vqh"
-
-#include "books/line_1024x31_0sub0.vqh"
-#include "books/line_1024x31_0sub1.vqh"
-#include "books/line_1024x31_1sub0.vqh"
-#include "books/line_1024x31_1sub1.vqh"
-#include "books/line_1024x31_2sub1.vqh"
-#include "books/line_1024x31_2sub2.vqh"
-#include "books/line_1024x31_2sub3.vqh"
-#include "books/line_1024x31_3sub1.vqh"
-#include "books/line_1024x31_3sub2.vqh"
-#include "books/line_1024x31_3sub3.vqh"
-
-#include "books/res_Zc_128aux.vqh"
-#include "books/res_Zc_1024aux.vqh"
-
-#include "books/res_Zc_1.vqh"
-#include "books/res_Zc_2.vqh"
-#include "books/res_Zc_3.vqh"
-#include "books/res_Zc_4.vqh"
-#include "books/res_Zc_5.vqh"
-#include "books/res_Zc_6.vqh"
-#include "books/res_Zc_7.vqh"
-#include "books/res_Zc_8.vqh"
-#include "books/res_Zc_9.vqh"
-#include "books/res_Zc_9a.vqh"
-#include "books/res_Zc_9b.vqh"
-
-#include "maskadj_Z.h"
-
-static vorbis_info_psy_global _psy_set_44c_ZG={
- 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,
-};
-
-static struct vp_couple_pass _psy_pass_44c_Z0[]={
- {1.f,1.f,
- {{24, 0,0, 0,0, 0,0},
- {9999, 0,0, 7.5f,12, 7.5f,0}}
- },
-};
-
-static vp_couple_pass _psy_pass_44c_Z[]={
- {1.f,1.f,
- {{288, 0,0, 0,0, 0,0},
- {9999, 0,0, 7.5f,12, 7.5f,0}}
- }
-};
-
-static vorbis_info_psy _psy_set_44c_Z0={
- ATH_Bark_dB_lineaggressive,
- -100.,-110.,
-
- /* tonemaskp */
- 3.f, -24.f,&_vp_tonemask_consbass_Z,
- /* peakattp, curvelimitp */
- 1, 0, &_vp_peakatt_Z,
-
- /*noisemaskp */
- 1,-24.f, /* suppress any noise curve over maxspec+n */
- 1.f, 1.f, /* low/high window */
- 2, 2, -1,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-20,-20,-20,-20,-20,-20,-10, -5, 3, 3, 4, 4, 4, 4, 4, 4, 8},
- {1.f,1.f,1.f,1.f,1.f,1.f,.8f,.7f,.7f,.7f,.7f,.7f,.8f,.88f,.89f,.9f,.9f},
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,
- _psy_pass_44c_Z0
-};
-
-static vorbis_info_psy _psy_set_44c_ZT={
- ATH_Bark_dB_lineaggressive,
- -100.f,-110.f,
-
- /* tonemask */
- 3.f,-20.f,&_vp_tonemask_consbass_Z,
- /* peakattp,curvelimitp */
- 1, 0, &_vp_peakatt_Z,
-
- /*noisemaskp */
- 1, -24.f, /* suppress any noise curve over maxspec+n */
- .5f,.5f, /* low/high window */
- 10,10,100,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-20,-20,-20,-20,-20,-20,-20, -6, 3, 3, 4, 5, 5, 5, 5, 6, 10},
- {1.f,1.f,1.f,1.f,1.f,1.f,.8f,.7f,.7f,.7f,.7f,.7f,.8f,.88f,.89f,.9f,.9f},
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_pass_44c_Z
-};
-
-static vorbis_info_psy _psy_set_44c_Z={
- ATH_Bark_dB_lineaggressive,
- -100.f, -110.f,
-
- /* tonemask */
- 3.f,-20.f,&_vp_tonemask_Z,
- /* peakattp, curvelimitp */
- 1, 0, &_vp_peakatt_Z,
-
- /*noisemaskp */
- 1, -24.f, /* suppress any noise curve over maxspec+n */
- .5f,.5f, /* low/high window */
- 10,10,100,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-20,-20,-20,-20,-20,-20,-10,-6, 3, 3, 4, 5, 5, 5, 5, 6, 10},
- {1.f,1.f,1.f,1.f,1.f,1.f,.8f,.7f,.7f,.7f,.7f,.8f,.85f,.88f,.89f,.9f,.9f},
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_pass_44c_Z
-};
-
-static vorbis_info_time0 _time_set_44c_Z={0};
-
-static vorbis_info_floor1 _floor_set_44c_Z0={
- 3,
- {0,1,2},
-
- {1,3,3},
- {0,2,2},
- {-1,0,1},
- {{2},{-1,3,4,5},{-1,6,7,8}},
-
- 4,
-
- {0,128,
-
- 7,
-
- 2,1,4,
- 23,13,45},
-
- 60,30,500,
- 999,999,0,18.,
- 8,70,
- 90};
-
-static vorbis_info_floor1 _floor_set_44c_Z={
- 10,
- {0,1,2,2,2,2,2, 3,3,3},
-
- {3,4,3,3},
- {1,1,2,2},
- {9,10,11,12},
- {{13,14},
- {15,16},
- {-1,17,18,19},
- {-1,20,21,22},
- },
-
- 4,
- {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,
- 720};
-
-static vorbis_info_residue0 _residue_set_44c_Z0={
- 0,180, 12, 10,23,
- {0,1,1,1,1,1,1,1,1,7},
- {25, 26, 27, 28, 29, 30, 31, 32, 33,34,35},
- {9999, 9999, 9999, 9999, 2,9999, 9999, 9999, 9999, 9999},
- {.5, 1.5, 2.5f, 7.5, 1.5f,1.5, 2.5, 7.5, 22.5f},
- {0},
- {99, 4, 4, 4, 99,99, 99, 99, 99},
- {3}};
-
-static vorbis_info_residue0 _residue_set_44c_Z={
- 0,1408, 32, 10,24,
- {0,1,1,1,1,1,1,1,1,7},
- {25, 26, 27, 28, 29, 30, 31, 32, 33,34,35},
- {9999, 9999, 9999, 9999, 3,9999, 9999, 9999, 9999, 9999},
- {.5, 1.5, 2.5f, 7.5, 1.5f,1.5, 2.5, 7.5, 22.5f},
- {0},
- {99, 18, 18, 18, 99,99, 99, 99, 99},
- {3}};
-
-static vorbis_info_mapping0 _mapping_set_44c_Z0={
- 1, {0,0}, {0}, {0}, {0}, {0,0}, 1,{0},{1}};
-static vorbis_info_mapping0 _mapping_set_44c_Z={
- 1, {0,0}, {0}, {1}, {1}, {1,2}, 1,{0},{1}};
-
-static vorbis_info_mode _mode_set_44c_Z0={0,0,0,0};
-static vorbis_info_mode _mode_set_44c_Z={1,0,0,1};
-
-/* CD quality stereo, no channel coupling */
-codec_setup_info info_44c_Z={
-
- /* smallblock, largeblock */
- {256, 2048},
- /* modes,maps,times,floors,residues,books,psys */
- 2, 2, 1, 2, 2, 36, 3,
- /* modes */
- {&_mode_set_44c_Z0,&_mode_set_44c_Z},
- /* maps */
- {0,0},{&_mapping_set_44c_Z0,&_mapping_set_44c_Z},
- /* times */
- {0,0},{&_time_set_44c_Z},
- /* floors */
- {1,1},{&_floor_set_44c_Z0,&_floor_set_44c_Z},
- /* residue */
- {2,2},{&_residue_set_44c_Z0,&_residue_set_44c_Z},
- /* books */
-
- {
- &_huff_book_line_128x7_class1,
- &_huff_book_line_128x7_class2, /* 1 */
-
- &_huff_book_line_128x7_0sub0, /* 2 */
- &_huff_book_line_128x7_1sub1, /* 3 */
- &_huff_book_line_128x7_1sub2,
- &_huff_book_line_128x7_1sub3, /* 5 */
- &_huff_book_line_128x7_2sub1,
- &_huff_book_line_128x7_2sub2, /* 7 */
- &_huff_book_line_128x7_2sub3,
-
- &_huff_book_line_1024x31_class0,
- &_huff_book_line_1024x31_class1, /* 10 */
- &_huff_book_line_1024x31_class2,
- &_huff_book_line_1024x31_class3, /* 12 */
-
- &_huff_book_line_1024x31_0sub0,
- &_huff_book_line_1024x31_0sub1, /* 14 */
- &_huff_book_line_1024x31_1sub0,
- &_huff_book_line_1024x31_1sub1,
- &_huff_book_line_1024x31_2sub1,
- &_huff_book_line_1024x31_2sub2, /* 18 */
- &_huff_book_line_1024x31_2sub3,
- &_huff_book_line_1024x31_3sub1,
- &_huff_book_line_1024x31_3sub2,
- &_huff_book_line_1024x31_3sub3, /* 22 */
-
- &_huff_book_res_Zc_128aux,
- &_huff_book_res_Zc_1024aux,
-
- &_vq_book_res_Zc_1,
- &_vq_book_res_Zc_2,
- &_vq_book_res_Zc_3,
- &_vq_book_res_Zc_4,
- &_vq_book_res_Zc_5,
- &_vq_book_res_Zc_6,
- &_vq_book_res_Zc_7,
- &_vq_book_res_Zc_8,
- &_vq_book_res_Zc_9,
- &_vq_book_res_Zc_9a,
- &_vq_book_res_Zc_9b,
-
- },
- /* psy */
- {&_psy_set_44c_Z0,&_psy_set_44c_ZT,&_psy_set_44c_Z},
- &_psy_set_44c_ZG
-};
-
-#endif
diff --git a/lib/modes/mode_A.h b/lib/modes/mode_A.h
deleted file mode 100644
index cd3344af..00000000
--- a/lib/modes/mode_A.h
+++ /dev/null
@@ -1,412 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: predefined encoding modes
- last mod: $Id: mode_A.h,v 1.17 2001/08/13 01:37:13 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_MODES_A_H_
-#define _V_MODES_A_H_
-
-#include <stdio.h>
-#include "vorbis/codec.h"
-#include "backends.h"
-
-#include "books/line0_class1.vqh"
-#include "books/line0_class2.vqh"
-#include "books/line1_class0.vqh"
-#include "books/line1_class1.vqh"
-#include "books/line1_class2.vqh"
-#include "books/line1_class3.vqh"
-
-#include "books/line0_0sub0.vqh"
-#include "books/line0_1sub1.vqh"
-#include "books/line0_1sub2.vqh"
-#include "books/line0_1sub3.vqh"
-#include "books/line0_2sub1.vqh"
-#include "books/line0_2sub2.vqh"
-#include "books/line0_2sub3.vqh"
-
-#include "books/line1_0sub0.vqh"
-#include "books/line1_0sub1.vqh"
-#include "books/line1_1sub0.vqh"
-#include "books/line1_1sub1.vqh"
-#include "books/line1_2sub1.vqh"
-#include "books/line1_2sub2.vqh"
-#include "books/line1_2sub3.vqh"
-#include "books/line1_3sub1.vqh"
-#include "books/line1_3sub2.vqh"
-#include "books/line1_3sub3.vqh"
-
-#include "books/res0_128_128aux.vqh"
-#include "books/res0_128_1024aux.vqh"
-
-#include "books/res0_128_1024_1.vqh"
-#include "books/res0_128_1024_2.vqh"
-#include "books/res0_128_1024_3.vqh"
-#include "books/res0_128_1024_4.vqh"
-#include "books/res0_128_1024_5.vqh"
-#include "books/res0_128_1024_6.vqh"
-#include "books/res0_128_1024_7.vqh"
-#include "books/res0_128_1024_7a.vqh"
-#include "books/res0_128_1024_8.vqh"
-#include "books/res0_128_1024_8a.vqh"
-#include "books/res0_128_1024_9.vqh"
-#include "books/res0_128_1024_9a.vqh"
-#include "books/res0_128_1024_9b.vqh"
-
-
-static vorbis_info_psy_global _psy_set_AG={
- 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,
-};
-
-static struct vp_couple_pass _psy_passA0[]={
- {1.f,1.f,
- {{24, 0,0, 0,0, 0,0},
- {64, 0,0, 12.5f,12, 0,0},
- {9999, 0,0, 12.5f,12, 2.5f,0}}
- },
-};
-
-static vp_couple_pass _psy_passA[]={
- {1.f,1.f,
- {{288, 0,0, 0,0, 0,0},
- {512, 0,0, 12.5f,12, 0,0},
- {9999, 0,0, 12.5f,12, 2.5f,0}}
- }
-};
-
-static vp_attenblock _vp_tonemask_consbass_A={
- {{-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*63*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*88*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*125*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*175*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*250*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*350*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*500*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*700*/
-
- {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1000*/
- {-35.f,-35.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*/
- {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*4000*/
- {-35.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,-35.f,-45.f,-50.f,-60.f,-70.f,-90.f,-100.f}, /*11500*/
- {-24.f,-24.f,-26.f,-32.f,-32.f,-42.f,-50.f,-60.f,-70.f,-90.f,-100.f}, /*16000*/
-}};
-
-static vp_attenblock _vp_tonemask_A={
-
- {{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*63*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*88*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.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*/
-}};
-
-static vp_attenblock _vp_peakatt_A={
- {{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*63*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*88*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*125*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*175*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*250*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*350*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*500*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-14.f,-20.f,-26.f,-32.f,-40.f},/*700*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-14.f,-20.f,-22.f,-32.f,-40.f},/*1000*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-32.f,-40.f},/*1400*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-32.f,-40.f},/*2000*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-32.f,-40.f},/*2400*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-32.f,-40.f},/*4000*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-12.f,-13.f,-22.f,-32.f,-40.f},/*5600*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-12.f,-13.f,-22.f,-32.f,-40.f},/*8000*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-22.f,-32.f,-40.f},/*11500*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-20.f,-32.f,-40.f},/*16000*/
-}};
-
-static vorbis_info_psy _psy_set_A0={
- ATH_Bark_dB_lineaggressive,
-
- -100.,
- -140.,
-
- /* tonemaskp */
- 0.f, -40.f,&_vp_tonemask_consbass_A,
-
- /* peakattp */
- 1, &_vp_peakatt_A,
-
- 1,/*noisemaskp */
- -30.f, /* suppress any noise curve over maxspec+n */
- .6f, .6f, /* low/high window */
- 5, 5, 10,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-30,-30,-30,-30,-30,-30,-20,-10, 0, 0, 0, 0, 0, 1, 1, 2, 3},
- {.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.7f,.8f,.9f,.9f,.9f},
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,
- _psy_passA0
-};
-
-static vorbis_info_psy _psy_set_A={
- ATH_Bark_dB_lineaggressive,
-
- -100.f,
- -140.f,
-
- /* tonemask */
- 0.f,-40.f,&_vp_tonemask_consbass_A,
- /* peakattp */
- 1, &_vp_peakatt_A,
-
- /*noisemaskp */
- 1, -30.f, /* suppress any noise curve over maxspec+n */
- .4f,.4f, /* low/high window */
- 10,10,100,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- {.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.7f,.75f,.8f,.8f,.85f},
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_passA
-};
-
-static vorbis_info_psy _psy_set_AT={
- ATH_Bark_dB_lineaggressive,
-
- -100.f,
- -140.f,
-
- /* tonemask */
- 0.f,-40.f,&_vp_tonemask_consbass_A,
- /* peakattp */
- 1, &_vp_peakatt_A,
-
- /*noisemaskp */
- 1, -30.f, /* suppress any noise curve over maxspec+n */
- .4f,.4f, /* low/high window */
- 10,10,100,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-30,-30,-30,-30,-30,-30,-30,-20, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- {.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.7f,.75f,.8f,.8f,.85f},
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- 1,_psy_passA
-};
-
-/* with GNUisms, this could be short and readable. Oh well */
-static vorbis_info_time0 _time_set0A={0};
-
-static vorbis_info_floor1 _floor_set0A={6,
- {0,1,1,1,2,2},
-
- {4,3,3},
- {0,2,2},
- {-1,0,1},
- {{2},{-1,3,4,5},{-1,6,7,8}},
-
- 4,
-
- {0,128,
-
- 6,17,30,58,
-
- 2,1,4, 11,8,14, 23,20,26,
- 41,35,48, 84,69,103},
-
- 60,30,500,
- 999,999,1,18.,
- 8,70,
- 96};
-
-static vorbis_info_floor1 _floor_set1A={10,
- {0,1,2,2,2,2,2, 3,3,3},
-
- {3,4,3,3},
- {1,1,2,2},
- {9,10,11,12},
- {{13,14},
- {15,16},
- {-1,17,18,19},
- {-1,20,21,22},
- },
-
- 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,300,
- 20,8,1,18.,
- 20,600,
- 768};
-
-static vorbis_info_residue0 _residue_set0A={0,192,8,10,23,
- {0,1,1,1,1,1,1,3,3,7},
- {25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,32,
- 33,34,
- 35,36,37},
- {9999,9999,9999,9999,9999,9999,
- 9999,9999,9999,9999},
- {.5f,
- 1.5f,1.5f,
- 2.5f,2.5f,2.5f,
- 4.5f,17.5f,80.5f},
- {0},
- {99,16,99,6,16,99,99,99,99,99},
- {3}};
-
-static vorbis_info_residue0 _residue_set1A={0,1536, 32,10,24,
- {0,1,1,1,1,1,1,3,3,7},
- {25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,32,
- 33,34,
- 35,36,37},
- {9999,9999,9999,9999,9999,9999,
- 9999,9999,9999,9999},
- {.5f,
- 1.5f,1.5f,
- 2.5f,2.5f,2.5f,
- 4.5f,17.5f,80.f},
- {0},
- {99,32,99,18,32,99,99,99,99,99},
- {3}};
-
-static vorbis_info_mapping0 _mapping_set0A={1, {0,0}, {0}, {0}, {0}, {0,0},
- 1,{0},{1}};
-static vorbis_info_mapping0 _mapping_set1A={1, {0,0}, {0}, {1}, {1}, {1,2},
- 1,{0},{1}};
-static vorbis_info_mode _mode_set0A={0,0,0,0};
-static vorbis_info_mode _mode_set1A={1,0,0,1};
-
-/* CD quality stereo, no channel coupling */
-codec_setup_info info_A={
-
- /* smallblock, largeblock */
- {256, 2048},
- /* modes,maps,times,floors,residues,books,psys */
- 2, 2, 1, 2, 2, 38, 3,
- /* modes */
- {&_mode_set0A,&_mode_set1A},
- /* maps */
- {0,0},{&_mapping_set0A,&_mapping_set1A},
- /* times */
- {0,0},{&_time_set0A},
- /* floors */
- {1,1},{&_floor_set0A,&_floor_set1A},
- /* residue */
- {2,2},{&_residue_set0A,&_residue_set1A},
- /* books */
-
- {
- &_huff_book_line0_class1,
- &_huff_book_line0_class2, /* 1 */
-
- &_huff_book_line0_0sub0, /* 2 */
- &_huff_book_line0_1sub1, /* 3 */
- &_huff_book_line0_1sub2,
- &_huff_book_line0_1sub3, /* 5 */
- &_huff_book_line0_2sub1,
- &_huff_book_line0_2sub2, /* 7 */
- &_huff_book_line0_2sub3,
-
- &_huff_book_line1_class0,
- &_huff_book_line1_class1, /* 10 */
- &_huff_book_line1_class2,
- &_huff_book_line1_class3, /* 12 */
-
- &_huff_book_line1_0sub0,
- &_huff_book_line1_0sub1, /* 14 */
- &_huff_book_line1_1sub0,
- &_huff_book_line1_1sub1,
- &_huff_book_line1_2sub1,
- &_huff_book_line1_2sub2, /* 18 */
- &_huff_book_line1_2sub3,
- &_huff_book_line1_3sub1,
- &_huff_book_line1_3sub2,
- &_huff_book_line1_3sub3, /* 22 */
-
- &_huff_book_res0_128_128aux,
- &_huff_book_res0_128_1024aux,
-
- &_vq_book_res0_128_1024_1,
- &_vq_book_res0_128_1024_2,
- &_vq_book_res0_128_1024_3,
- &_vq_book_res0_128_1024_4,
- &_vq_book_res0_128_1024_5,
- &_vq_book_res0_128_1024_6,
- &_vq_book_res0_128_1024_7,
- &_vq_book_res0_128_1024_7a,
- &_vq_book_res0_128_1024_8,
- &_vq_book_res0_128_1024_8a,
- &_vq_book_res0_128_1024_9,
- &_vq_book_res0_128_1024_9a,
- &_vq_book_res0_128_1024_9b,
-
- },
- /* psy */
- {&_psy_set_A0,&_psy_set_AT,&_psy_set_A},
- &_psy_set_AG
-};
-
-#endif
diff --git a/lib/modes/mode_AA.h b/lib/modes/mode_AA.h
deleted file mode 100644
index 3663b736..00000000
--- a/lib/modes/mode_AA.h
+++ /dev/null
@@ -1,313 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: predefined encoding modes
- last mod: $Id: mode_AA.h,v 1.12 2001/06/18 09:07:32 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_MODES_AA_H_
-#define _V_MODES_AA_H_
-
-#include <stdio.h>
-#include "vorbis/codec.h"
-#include "backends.h"
-
-#include "books/lsp9_0.vqh"
-#include "books/lsp30_0.vqh"
-#include "books/lsp9_1.vqh"
-#include "books/lsp30_1.vqh"
-
-#include "books/res0_96_128aux.vqh"
-#include "books/res0_96_1024aux.vqh"
-
-#include "books/res0_96_128_1.vqh"
-#include "books/res0_96_128_2.vqh"
-#include "books/res0_96_128_3.vqh"
-#include "books/res0_96_128_4.vqh"
-#include "books/res0_96_128_5.vqh"
-
-#include "books/res0_96_1024_1.vqh"
-#include "books/res0_96_1024_2.vqh"
-#include "books/res0_96_1024_3.vqh"
-#include "books/res0_96_1024_4.vqh"
-#include "books/res0_96_1024_5.vqh"
-#include "books/res0_96_1024_6.vqh"
-#include "books/res0_96_1024_7.vqh"
-#include "books/res0_96_1024_8.vqh"
-#include "books/res0_96_1024_9.vqh"
-
-
-static vorbis_info_psy _psy_set_AA0={
- ATH_Bark_dB_lspconservative,
- 1,/*decayp*/
-
- -100.,
- -140.,
-
- 8,
-
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
- /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */
- /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */
-
- 1,/* tonemaskp */
- /* 0 10 20 30 40 50 60 70 80 90 100 */
- {
- {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*63*/
- {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*88*/
- {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*125*/
- {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*175*/
- {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*250*/
- {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*350*/
- {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*500*/
- {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*700*/
-
- {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*1000*/
- {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*1400*/
- {-40.,-40.,-40.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*2000*/
- {-40.,-40.,-40.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*2800*/
- {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*4000*/
- {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*5600*/
- {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*8000*/
- {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*11500*/
- {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*16000*/
- },
-
- 1,/* peakattp */
- {{-14.f,-16.f,-18.f,-19.f,-20.f,-21.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*63*/
- {-14.f,-16.f,-18.f,-19.f,-20.f,-21.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*88*/
- {-14.f,-16.f,-18.f,-19.f,-20.f,-21.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*125*/
- {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*175*/
- {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*250*/
- {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*350*/
- {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*500*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-14.f,-20.f,-22.f,-22.f,-22.f},/*700*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-14.f,-20.f,-22.f,-22.f,-22.f},/*1000*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*1400*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*2000*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*2400*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*4000*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-12.f,-13.f,-22.f,-22.f,-22.f},/*5600*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-12.f,-13.f,-22.f,-22.f,-22.f},/*8000*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-22.f,-22.f,-22.f},/*11500*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-20.f,-21.f,-22.f},/*16000*/
- },
-
- 1,/*noisemaskp */
- -0.f, /* suppress any noise curve over maxspec+n */
- .5f, /* low window */
- .5f, /* high window */
- 5,
- 5,
- 10,
- {.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*/
- .300f, 0.f,/*700*/
- .500f, 0.f,/*1000*/
- .500f, 0.f,/*1400*/
- .500f, 0.f,/*2000*/
- .500f, 0.f,/*2800*/
- .600f, 0.f,/*4000*/
- .700f, 0.f,/*5600*/
- .850f, 0.f,/*8000*/
- .900f, 2.f,/*11500*/
- .900f, 3.f,/*16000*/
- },
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- -22.,
-};
-
-static vorbis_info_psy _psy_set_AA={
- ATH_Bark_dB_lspconservative,
- 1,/*decayp*/
-
- -100.f,
- -140.f,
-
- 8,
-
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
- /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */
- /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */
- 1,/* tonemaskp */
- /* 0 10 20 30 40 50 60 70 80 90 100 */
- {
- {-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,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*175*/
- {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*250*/
- {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*350*/
- {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*500*/
- {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*700*/
-
- {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1000*/
- {-30.f,-35.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*/
- {-30.f,-35.f,-35.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*/
-
- {-20.f,-25.f,-30.f,-35.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*8000*/
- {-20.f,-25.f,-30.f,-35.f,-35.f,-45.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*11500*/
- {-20.f,-24.f,-26.f,-32.f,-35.f,-45.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*16000*/
-
- },
-
- 1,/* peakattp */
- {{-14.f,-16.f,-18.f,-19.f,-20.f,-21.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*63*/
- {-14.f,-16.f,-18.f,-19.f,-20.f,-21.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*88*/
- {-14.f,-16.f,-18.f,-19.f,-20.f,-21.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*125*/
- {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*175*/
- {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*250*/
- {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*350*/
- {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*500*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*700*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*1000*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*1400*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*2000*/
- {-10.f,-10.f,-10.f,-12.f,-16.f,-16.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*2400*/
- {-10.f,-10.f,-10.f,-12.f,-16.f,-16.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*4000*/
- {-10.f,-10.f,-10.f,-12.f,-12.f,-14.f,-16.f,-18.f,-22.f,-22.f,-22.f},/*5600*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-14.f,-16.f,-18.f,-22.f,-22.f,-22.f},/*8000*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-14.f,-16.f,-18.f,-22.f,-22.f,-22.f},/*11500*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-12.f,-16.f,-18.f,-22.f,-22.f,-22.f},/*16000*/
- },
-
- 1,/*noisemaskp */
- -0.f, /* suppress any noise curve over maxspec+n */
- .7f, /* low window */
- .7f, /* high window */
- 25,
- 25,
- 50,
- {.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*/
- .200f, 0.f, /*700*/
- .300f, 0.f, /*1000*/
- .400f, 0.f, /*1400*/
- .400f, 0.f, /*2000*/
- .400f, 0.f, /*2800*/
- .700f, 0.f, /*4000*/
- .850f, 0.f, /*5600*/
- .900f, 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) */
- -22.,
-
-};
-
-/* with GNUisms, this could be short and readable. Oh well */
-static vorbis_info_time0 _time_set0AA={0};
-static vorbis_info_floor0 _floor_set0AA={9, 44100, 64, 10,130, 2, {0,1},
- 0.246f, .387f};
-static vorbis_info_floor0 _floor_set1AA={30, 44100, 256, 12,150, 2, {2,3},
- .082f, .126f};
-static vorbis_info_residue0 _residue_set0AA={0,192,16,6,4,
- {0,1,1,1,1,1},
- {6,7,8,9,10},
-
- {0,7,9999,9999,9999},
- {999.f,2.f,2.f,9.5f,26.f},
- {4,4,4,4,4},
- {99,99,99,99,99}};
-
-static vorbis_info_residue0 _residue_set1AA={0, 768, 32,10,5,
- {0,1,1,1,1,1,1,1,1,1},
- {11,12,13,14,15,16,17,18,19},
-
- {0,10,9999,16,9999,
- 26,9999,9999,9999},
- {999.f,2.f,2.f,4.f,4.f,
- 9.5f,9.5f,18.f,37.f},
- {5,5,5,5,5,5,5,5,5},
- {99,99,99,99,99,99,99,99,99}};
-
-static vorbis_info_mapping0 _mapping_set0AA={1, {0,0}, {0}, {0}, {0}, {0}};
-static vorbis_info_mapping0 _mapping_set1AA={1, {0,0}, {0}, {1}, {1}, {1}};
-static vorbis_info_mode _mode_set0AA={0,0,0,0};
-static vorbis_info_mode _mode_set1AA={1,0,0,1};
-
-/* CD quality stereo, no channel coupling */
-codec_setup_info info_AA={
-
- /* smallblock, largeblock */
- {512, 2048},
- /* modes,maps,times,floors,residues,books,psys */
- 2, 2, 1, 2, 2, 20, 2,
- /* modes */
- {&_mode_set0AA,&_mode_set1AA},
- /* maps */
- {0,0},{&_mapping_set0AA,&_mapping_set1AA},
- /* times */
- {0,0},{&_time_set0AA},
- /* floors */
- {0,0},{&_floor_set0AA,&_floor_set1AA},
- /* residue */
- {0,0},{&_residue_set0AA,&_residue_set1AA},
- /* books */
- {&_vq_book_lsp9_0, /* 0 */
- &_vq_book_lsp9_1, /* 1 */
- &_vq_book_lsp30_0, /* 2 */
- &_vq_book_lsp30_1, /* 3 */
-
- &_huff_book_res0_96_128aux,
- &_huff_book_res0_96_1024aux,
-
- &_vq_book_res0_96_128_1,
- &_vq_book_res0_96_128_2,
- &_vq_book_res0_96_128_3,
- &_vq_book_res0_96_128_4,
- &_vq_book_res0_96_128_5,
-
- &_vq_book_res0_96_1024_1,
- &_vq_book_res0_96_1024_2,
- &_vq_book_res0_96_1024_3,
- &_vq_book_res0_96_1024_4,
- &_vq_book_res0_96_1024_5,
- &_vq_book_res0_96_1024_6,
- &_vq_book_res0_96_1024_7,
- &_vq_book_res0_96_1024_8,
- &_vq_book_res0_96_1024_9,
-
- },
- /* psy */
- {&_psy_set_AA0,&_psy_set_AA},
- /* thresh sample period, preecho clamp trigger threshhold, range, minenergy */
- 256, {30.f,30.f,30.f,34.f}, {-90.f,-90.f,-90.f,-90.f}, -90.f,
-
- -10.,
-
- 0,
-};
-
-#define PREDEF_INFO_MAX 0
-
-#endif
diff --git a/lib/modes/mode_B.h b/lib/modes/mode_B.h
deleted file mode 100644
index c488947b..00000000
--- a/lib/modes/mode_B.h
+++ /dev/null
@@ -1,424 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: predefined encoding modes
- last mod: $Id: mode_B.h,v 1.16 2001/08/13 01:37:13 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_MODES_B_H_
-#define _V_MODES_B_H_
-
-#include <stdio.h>
-#include "vorbis/codec.h"
-#include "backends.h"
-
-#include "books/line0_class1.vqh"
-#include "books/line0_class2.vqh"
-#include "books/line1_class0.vqh"
-#include "books/line1_class1.vqh"
-#include "books/line1_class2.vqh"
-#include "books/line1_class3.vqh"
-
-#include "books/line0_0sub0.vqh"
-#include "books/line0_1sub1.vqh"
-#include "books/line0_1sub2.vqh"
-#include "books/line0_1sub3.vqh"
-#include "books/line0_2sub1.vqh"
-#include "books/line0_2sub2.vqh"
-#include "books/line0_2sub3.vqh"
-
-#include "books/line1_0sub0.vqh"
-#include "books/line1_0sub1.vqh"
-#include "books/line1_1sub0.vqh"
-#include "books/line1_1sub1.vqh"
-#include "books/line1_2sub1.vqh"
-#include "books/line1_2sub2.vqh"
-#include "books/line1_2sub3.vqh"
-#include "books/line1_3sub1.vqh"
-#include "books/line1_3sub2.vqh"
-#include "books/line1_3sub3.vqh"
-
-#include "books/res0_128_128aux.vqh"
-#include "books/res0_128_1024aux.vqh"
-
-#include "books/res0_128_1024_1.vqh"
-#include "books/res0_128_1024_2.vqh"
-#include "books/res0_128_1024_3.vqh"
-#include "books/res0_128_1024_4.vqh"
-#include "books/res0_128_1024_5.vqh"
-#include "books/res0_128_1024_6.vqh"
-#include "books/res0_128_1024_7.vqh"
-#include "books/res0_128_1024_7a.vqh"
-#include "books/res0_128_1024_8.vqh"
-#include "books/res0_128_1024_8a.vqh"
-#include "books/res0_128_1024_9.vqh"
-#include "books/res0_128_1024_9a.vqh"
-#include "books/res0_128_1024_9b.vqh"
-
-
-static vorbis_info_psy_global _psy_set_BG={
- 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,
-};
-
-static struct vp_couple_pass _psy_passB0[]={
- {1.f,1.f,
- {{24, 0,0, 0,0, 0,0},
- {64, 4.5,0, 0,12, 0,0},
- {9999, 7.5,0, 4.5,12, 1.5,0}}
- },
-};
-
-static vp_couple_pass _psy_passB[]={
- {1.f,1.f,
- {{288, 0,0, 0,0, 0,0},
- {512, 4.5,0, 0,12, 0,0},
- {9999, 7.5,0, 4.5,12, 1.5,0}}
- }
-};
-
-static vp_attenblock _vp_tonemask_consbass_B={
- {{-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*63*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*88*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*125*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*175*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*250*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*350*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*500*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*700*/
-
- {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1000*/
- {-35.f,-35.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*/
- {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*4000*/
- {-35.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,-35.f,-45.f,-50.f,-60.f,-70.f,-90.f,-100.f}, /*11500*/
- {-24.f,-24.f,-26.f,-32.f,-32.f,-42.f,-50.f,-60.f,-70.f,-90.f,-100.f}, /*16000*/
-}};
-
-static vp_attenblock _vp_tonemask_B={
-
- {{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*63*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*88*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.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*/
-}};
-
-
-static vp_attenblock _vp_peakatt_B={
- {{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*63*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*88*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*125*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*175*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*250*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*350*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*500*/
- {-10.f,-10.f,-10.f,-14.f,-20.f,-20.f,-20.f,-24.f,-26.f,-32.f,-40.f},/*700*/
- {-10.f,-10.f,-10.f,-14.f,-20.f,-20.f,-20.f,-24.f,-26.f,-32.f,-40.f},/*1000*/
- {-10.f,-10.f,-10.f,-14.f,-20.f,-20.f,-20.f,-24.f,-26.f,-32.f,-40.f},/*1400*/
- {-10.f,-10.f,-10.f,-14.f,-20.f,-20.f,-20.f,-24.f,-26.f,-32.f,-40.f},/*2000*/
- {-10.f,-10.f,-10.f,-14.f,-20.f,-20.f,-20.f,-24.f,-26.f,-32.f,-40.f},/*2800*/
- {-10.f,-10.f,-10.f,-10.f,-18.f,-20.f,-20.f,-22.f,-24.f,-32.f,-40.f},/*4000*/
- {-10.f,-10.f,-10.f,-10.f,-12.f,-14.f,-16.f,-18.f,-22.f,-32.f,-40.f},/*5600*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-12.f,-13.f,-22.f,-32.f,-40.f},/*8000*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-22.f,-32.f,-40.f},/*11500*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-20.f,-32.f,-40.f},/*16000*/
-}};
-
-static vorbis_info_psy _psy_set_B0={
- ATH_Bark_dB_lineaggressive,
-
- -100.,
- -140.,
-
- /* tonemaskp */
- -3.f, -40.f, &_vp_tonemask_consbass_B,
-
- /* peakattp */
- 1, &_vp_peakatt_B,
-
- /*noisemaskp */
- 1,-10.f, /* suppress any noise curve over maxspec+n */
- .6f, .6f, /* low/high window */
- 5, 5, 10,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-30,-30,-30,-30,-30,-30,-20,-10, 0, 0, 0, 0, 0, 1, 1, 2, 3},
- {.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.6f,.75f,.85f,.85f,.85f},
-
- 105.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,
- _psy_passB0
-};
-
-static vorbis_info_psy _psy_set_B={
- ATH_Bark_dB_lineaggressive,
-
- -100.f,
- -140.f,
-
- /* tonemask */
- -3.f,-40.f,&_vp_tonemask_consbass_B,
- /* peakattp */
- 1, &_vp_peakatt_B,
-
- /*noisemaskp */
- 1, -10.f, /* suppress any noise curve over maxspec+n */
- .4f,.4f, /* low/high window */
- 10,10,100,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- { 0, 0, 0, 0, 0, 0, 0, 0, -6, -6, -6, -6, 0, 0, 0, 0, 0},
- {.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.6f,.7f,.75f,.8f},
-
- 105.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_passB
-};
-
-static vorbis_info_psy _psy_set_BT={
- ATH_Bark_dB_lineaggressive,
-
- -100.f,
- -140.f,
-
- /* tonemask */
- -3.f,-40.f,&_vp_tonemask_consbass_B,
- /* peakattp */
- 1, &_vp_peakatt_B,
-
- /*noisemaskp */
- 1, -10.f, /* suppress any noise curve over maxspec+n */
- .4f,.4f, /* low/high window */
- 10,10,100,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-30,-30,-30,-30,-30,-30,-30,-20, -6, -6, -6, -6, 0, 0, 0, 0, 0},
- {.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.6f,.7f,.75f,.8f},
-
- 105.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_passB
-};
-
-/* with GNUisms, this could be short and readable. Oh well */
-static vorbis_info_time0 _time_set0B={0};
-
-static vorbis_info_floor1 _floor_set0B={6,
- {0,1,1,1,2,2},
-
- {4,3,3},
- {0,2,2},
- {-1,0,1},
- {{2},{-1,3,4,5},{-1,6,7,8}},
-
- 4,
-
- {0,128,
-
- 6,17,30,58,
-
- 2,1,4, 11,8,14, 23,20,26,
- 41,35,48, 84,69,103},
-
- 60,30,500,
- 999,999,1,18.,
- 8,70,
- 112};
-
-static vorbis_info_floor1 _floor_set1B={10,
- {0,1,2,2,2,2,2, 3,3,3},
-
- {3,4,3,3},
- {1,1,2,2},
- {9,10,11,12},
- {{13,14},
- {15,16},
- {-1,17,18,19},
- {-1,20,21,22},
- },
-
- 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,300,
- 20,8,1,18.,
- 20,600,
- 896};
-
-static vorbis_info_residue0 _residue_set0B={0,224,16,10,23,
- {0,1,1,1,1,1,1,3,3,7},
- {25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,32,
- 33,34,
- 35,36,37},
- {9999,
- 7,9999,9999,
- 11,9999,
- 9999,9999,9999,9999},
- {.5f,
- 1.5f,1.5f,1.5f,
- 2.5f,2.5f,
- 4.5f,16.5f,84.5f},
- {0},
- {99,
- 8,8,99,
- 99,99,
- 99,99,99,99},
- {3}};
-
-static vorbis_info_residue0 _residue_set1B={0,1792, 32,10,24,
- {0,1,1,1,1,1,1,3,3,7},
- {25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,32,
- 33,34,
- 35,36,37},
- {9999,
- 10,9999,9999,
- 20,9999,
- 9999,9999,9999,9999},
- {.5f,
- 1.5f,1.5f,1.5f,
- 2.5f,2.5f,
- 4.5f,16.5f,84.f},
- {0},
- {99,
- 32,32,99,
- 99,99,
- 99,99,99,99},
- {3}};
-
-static vorbis_info_mapping0 _mapping_set0B={1, {0,0}, {0}, {0}, {0}, {0,0},
- 1,{0},{1}};
-static vorbis_info_mapping0 _mapping_set1B={1, {0,0}, {0}, {1}, {1}, {1,2},
- 1,{0},{1}};
-static vorbis_info_mode _mode_set0B={0,0,0,0};
-static vorbis_info_mode _mode_set1B={1,0,0,1};
-
-/* CD quality stereo, no channel coupling */
-codec_setup_info info_B={
-
- /* smallblock, largeblock */
- {256, 2048},
- /* modes,maps,times,floors,residues,books,psys */
- 2, 2, 1, 2, 2, 38, 3,
- /* modes */
- {&_mode_set0B,&_mode_set1B},
- /* maps */
- {0,0},{&_mapping_set0B,&_mapping_set1B},
- /* times */
- {0,0},{&_time_set0B},
- /* floors */
- {1,1},{&_floor_set0B,&_floor_set1B},
- /* residue */
- {2,2},{&_residue_set0B,&_residue_set1B},
- /* books */
-
- {
- &_huff_book_line0_class1,
- &_huff_book_line0_class2, /* 1 */
-
- &_huff_book_line0_0sub0, /* 2 */
- &_huff_book_line0_1sub1, /* 3 */
- &_huff_book_line0_1sub2,
- &_huff_book_line0_1sub3, /* 5 */
- &_huff_book_line0_2sub1,
- &_huff_book_line0_2sub2, /* 7 */
- &_huff_book_line0_2sub3,
-
- &_huff_book_line1_class0,
- &_huff_book_line1_class1, /* 10 */
- &_huff_book_line1_class2,
- &_huff_book_line1_class3, /* 12 */
-
- &_huff_book_line1_0sub0,
- &_huff_book_line1_0sub1, /* 14 */
- &_huff_book_line1_1sub0,
- &_huff_book_line1_1sub1,
- &_huff_book_line1_2sub1,
- &_huff_book_line1_2sub2, /* 18 */
- &_huff_book_line1_2sub3,
- &_huff_book_line1_3sub1,
- &_huff_book_line1_3sub2,
- &_huff_book_line1_3sub3, /* 22 */
-
- &_huff_book_res0_128_128aux,
- &_huff_book_res0_128_1024aux,
-
- &_vq_book_res0_128_1024_1,
- &_vq_book_res0_128_1024_2,
- &_vq_book_res0_128_1024_3,
- &_vq_book_res0_128_1024_4,
- &_vq_book_res0_128_1024_5,
- &_vq_book_res0_128_1024_6,
- &_vq_book_res0_128_1024_7,
- &_vq_book_res0_128_1024_7a,
- &_vq_book_res0_128_1024_8,
- &_vq_book_res0_128_1024_8a,
- &_vq_book_res0_128_1024_9,
- &_vq_book_res0_128_1024_9a,
- &_vq_book_res0_128_1024_9b,
-
- },
- /* psy */
- {&_psy_set_B0,&_psy_set_BT,&_psy_set_B},
- &_psy_set_BG
-};
-
-#endif
diff --git a/lib/modes/mode_C.h b/lib/modes/mode_C.h
deleted file mode 100644
index 7494782f..00000000
--- a/lib/modes/mode_C.h
+++ /dev/null
@@ -1,432 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: predefined encoding modes
- last mod: $Id: mode_C.h,v 1.15 2001/08/13 01:37:14 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_MODES_C_H_
-#define _V_MODES_C_H_
-
-#include <stdio.h>
-#include "vorbis/codec.h"
-#include "backends.h"
-
-#include "books/line0_class1.vqh"
-#include "books/line0_class2.vqh"
-#include "books/line1_class0.vqh"
-#include "books/line1_class1.vqh"
-#include "books/line1_class2.vqh"
-#include "books/line1_class3.vqh"
-
-#include "books/line0_0sub0.vqh"
-#include "books/line0_1sub1.vqh"
-#include "books/line0_1sub2.vqh"
-#include "books/line0_1sub3.vqh"
-#include "books/line0_2sub1.vqh"
-#include "books/line0_2sub2.vqh"
-#include "books/line0_2sub3.vqh"
-
-#include "books/line1_0sub0.vqh"
-#include "books/line1_0sub1.vqh"
-#include "books/line1_1sub0.vqh"
-#include "books/line1_1sub1.vqh"
-#include "books/line1_2sub1.vqh"
-#include "books/line1_2sub2.vqh"
-#include "books/line1_2sub3.vqh"
-#include "books/line1_3sub1.vqh"
-#include "books/line1_3sub2.vqh"
-#include "books/line1_3sub3.vqh"
-
-#include "books/res0_128_128aux.vqh"
-#include "books/res0_128_1024aux.vqh"
-
-#include "books/res0_128_1024_1.vqh"
-#include "books/res0_128_1024_2.vqh"
-#include "books/res0_128_1024_3.vqh"
-#include "books/res0_128_1024_4.vqh"
-#include "books/res0_128_1024_5.vqh"
-#include "books/res0_128_1024_6.vqh"
-#include "books/res0_128_1024_7.vqh"
-#include "books/res0_128_1024_8.vqh"
-#include "books/res0_128_1024_8a.vqh"
-#include "books/res0_128_1024_9.vqh"
-#include "books/res0_128_1024_9a.vqh"
-#include "books/res0_128_1024_9b.vqh"
-
-
-static vorbis_info_psy_global _psy_set_CG={
- 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,
-};
-
-static struct vp_couple_pass _psy_passC0[]={
- {1.f,1.f,
- {{24, 0,0, 0,0, 0,0},
- {9999, 4.5,0, 0,12, 0,0}}
- },
-};
-
-static vp_couple_pass _psy_passC[]={
- {1.f,1.f,
- {{512, 0,0, 0,0, 0,0},
- {9999, 4.5,0, 0,12, 0,0}}
- }
-};
-
-static vp_attenblock _vp_tonemask_consbass_C={
- {{-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*63*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*88*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*125*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*175*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*250*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*350*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*500*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*700*/
-
- {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1000*/
- {-35.f,-35.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*/
- {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*4000*/
- {-35.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,-35.f,-45.f,-50.f,-60.f,-70.f,-90.f,-100.f}, /*11500*/
- {-24.f,-24.f,-26.f,-32.f,-32.f,-42.f,-50.f,-60.f,-70.f,-90.f,-100.f}, /*16000*/
-}};
-
-static vp_attenblock _vp_tonemask_C={
-
- {{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*63*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*88*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.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*/
-}};
-
-
-static vp_attenblock _vp_peakatt_C={
- {{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*63*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*88*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*125*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*175*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*250*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*350*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*500*/
- {-10.f,-10.f,-10.f,-14.f,-20.f,-20.f,-20.f,-24.f,-26.f,-32.f,-40.f},/*700*/
- {-10.f,-10.f,-10.f,-14.f,-20.f,-20.f,-20.f,-24.f,-26.f,-32.f,-40.f},/*1000*/
- {-10.f,-10.f,-10.f,-14.f,-20.f,-20.f,-20.f,-24.f,-26.f,-32.f,-40.f},/*1400*/
- {-10.f,-10.f,-10.f,-14.f,-20.f,-20.f,-20.f,-24.f,-26.f,-32.f,-40.f},/*2000*/
- {-10.f,-10.f,-10.f,-14.f,-20.f,-20.f,-20.f,-24.f,-26.f,-32.f,-40.f},/*2800*/
- {-10.f,-10.f,-10.f,-10.f,-18.f,-20.f,-20.f,-22.f,-24.f,-32.f,-40.f},/*4000*/
- {-10.f,-10.f,-10.f,-10.f,-12.f,-14.f,-16.f,-18.f,-22.f,-32.f,-40.f},/*5600*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-12.f,-13.f,-22.f,-32.f,-40.f},/*8000*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-22.f,-32.f,-40.f},/*11500*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-20.f,-32.f,-40.f},/*16000*/
-}};
-
-static vorbis_info_psy _psy_set_C0={
- ATH_Bark_dB_lineaggressive,
-
- -100.,
- -140.,
-
- /* tonemask */
- -3.f, -45.f, &_vp_tonemask_consbass_C,
-
- /* peakattp */
- 0, &_vp_peakatt_C,
-
- /*noisemaskp */
- 1,-30.f, /* suppress any noise curve over maxspec+n */
- .6f, .6f, /* low/high window */
- 5, 5, 10,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-30,-30,-30,-30,-30,-30,-20,-10, 0, 0, 0, 0, 0, 0, 0, 0, 0},
- {.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.6f,.7f,.8f,.8f},
-
- 105.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,
- _psy_passC0
-};
-
-static vorbis_info_psy _psy_set_C={
- ATH_Bark_dB_lineaggressive,
-
- -100.f,
- -140.f,
-
- /* tonemask */
- -6.f,-45.f,&_vp_tonemask_consbass_C,
- /* peakattp */
- 0, &_vp_peakatt_C,
-
- /*noisemaskp */
- 1, -30.f, /* suppress any noise curve over maxspec+n */
- .4f,.4f, /* low/high window */
- 10,10,100,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- { 0, 0, 0, 0, 0, 0, 0, 0, -6, -6, -6, -6, 0, 0, 0, 0, 0},
- {.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.5f,.6f,.7f,.7f},
-
- 105.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_passC
-};
-
-static vorbis_info_psy _psy_set_CT={
- ATH_Bark_dB_lineaggressive,
-
- -100.f,
- -140.f,
-
- /* tonemask */
- -6.f,-45.f,&_vp_tonemask_consbass_C,
- /* peakattp */
- 0, &_vp_peakatt_C,
-
- /*noisemaskp */
- 1, -30.f, /* suppress any noise curve over maxspec+n */
- .4f,.4f, /* low/high window */
- 10,10,100,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-30,-30,-30,-30,-30,-30,-30,-20, -6, -6, -6, -6, 0, 0, 0, 0, 0},
- {.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.5f,.6f,.7f,.7f},
-
- 105.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_passC
-};
-
-/* with GNUisms, this could be short and readable. Oh well */
-static vorbis_info_time0 _time_set0C={0};
-
-static vorbis_info_floor1 _floor_set0C={6,
- {0,1,1,1,2,2},
-
- {4,3,3},
- {0,2,2},
- {-1,0,1},
- {{2},{-1,3,4,5},{-1,6,7,8}},
-
- 4,
-
- {0,128,
-
- 6,17,30,58,
-
- 2,1,4, 11,8,14, 23,20,26,
- 41,35,48, 84,69,103},
-
- 60,30,500,
- 999,999,1,18.,
- 8,70,
- 128};
-
-static vorbis_info_floor1 _floor_set1C={10,
- {0,1,2,2,2,2,2, 3,3,3},
-
- {3,4,3,3},
- {1,1,2,2},
- {9,10,11,12},
- {{13,14},
- {15,16},
- {-1,17,18,19},
- {-1,20,21,22},
- },
-
- 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,300,
- 20,8,1,18.,
- 20,600,
- 1024};
-
-static vorbis_info_residue0 _residue_set0C={0,256,16,10,23,
- {0,1,1,1,1,1,1,1,3,7},
- {25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,32,
- 33,34,
- 35,36},
- {9999,
- 9999,
- 12,9999,
- 18,9999,
- 28,9999,
- 9999,9999},
- {.5f,
- 1.5f,
- 2.5f,2.5f,
- 4.5f,4.5,
- 16.5f,16.5,
- 84.5f},
- {0},
- {99,
- 99,
- 99,99,
- 99,99,
- 99,99,
- 99,99},
- {3}};
-
-static vorbis_info_residue0 _residue_set1C={0,2048, 32,10,24,
- {0,1,1,1,1,1,1,1,3,7},
- {25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,33,
- 34,35,36},
- {9999,
- 9999,
- 22,9999,
- 34,9999,
- 64,999,
- 9999,9999},
- {.5f,
- 1.5f,
- 2.5f,2.5f,
- 4.5f,4.5,
- 16.5f,16.5,
- 84.f},
- {0},
- {99,
- 99,
- 99,99,
- 99,99,
- 99,99,
- 99,99},
- {3}};
-
-static vorbis_info_mapping0 _mapping_set0C={1, {0,0}, {0}, {0}, {0}, {0,0},
- 1,{0},{1}};
-static vorbis_info_mapping0 _mapping_set1C={1, {0,0}, {0}, {1}, {1}, {1,2},
- 1,{0},{1}};
-static vorbis_info_mode _mode_set0C={0,0,0,0};
-static vorbis_info_mode _mode_set1C={1,0,0,1};
-
-/* CD quality stereo, no channel coupling */
-codec_setup_info info_C={
-
- /* smallblock, largeblock */
- {256, 2048},
- /* modes,maps,times,floors,residues,books,psys */
- 2, 2, 1, 2, 2, 37, 3,
- /* modes */
- {&_mode_set0C,&_mode_set1C},
- /* maps */
- {0,0},{&_mapping_set0C,&_mapping_set1C},
- /* times */
- {0,0},{&_time_set0C},
- /* floors */
- {1,1},{&_floor_set0C,&_floor_set1C},
- /* residue */
- {2,2},{&_residue_set0C,&_residue_set1C},
- /* books */
-
- {
- &_huff_book_line0_class1,
- &_huff_book_line0_class2, /* 1 */
-
- &_huff_book_line0_0sub0, /* 2 */
- &_huff_book_line0_1sub1, /* 3 */
- &_huff_book_line0_1sub2,
- &_huff_book_line0_1sub3, /* 5 */
- &_huff_book_line0_2sub1,
- &_huff_book_line0_2sub2, /* 7 */
- &_huff_book_line0_2sub3,
-
- &_huff_book_line1_class0,
- &_huff_book_line1_class1, /* 10 */
- &_huff_book_line1_class2,
- &_huff_book_line1_class3, /* 12 */
-
- &_huff_book_line1_0sub0,
- &_huff_book_line1_0sub1, /* 14 */
- &_huff_book_line1_1sub0,
- &_huff_book_line1_1sub1,
- &_huff_book_line1_2sub1,
- &_huff_book_line1_2sub2, /* 18 */
- &_huff_book_line1_2sub3,
- &_huff_book_line1_3sub1,
- &_huff_book_line1_3sub2,
- &_huff_book_line1_3sub3, /* 22 */
-
- &_huff_book_res0_128_128aux,
- &_huff_book_res0_128_1024aux,
-
- &_vq_book_res0_128_1024_1,
- &_vq_book_res0_128_1024_2,
- &_vq_book_res0_128_1024_3,
- &_vq_book_res0_128_1024_4,
- &_vq_book_res0_128_1024_5,
- &_vq_book_res0_128_1024_6,
- &_vq_book_res0_128_1024_7,
- &_vq_book_res0_128_1024_8,
- &_vq_book_res0_128_1024_8a,
- &_vq_book_res0_128_1024_9,
- &_vq_book_res0_128_1024_9a,
- &_vq_book_res0_128_1024_9b,
-
- },
- /* psy */
- {&_psy_set_C0,&_psy_set_CT,&_psy_set_C},
- &_psy_set_CG
-};
-
-#endif
diff --git a/lib/modes/mode_D.h b/lib/modes/mode_D.h
deleted file mode 100644
index 5ee214e1..00000000
--- a/lib/modes/mode_D.h
+++ /dev/null
@@ -1,429 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: predefined encoding modes
- last mod: $Id: mode_D.h,v 1.16 2001/08/13 01:37:14 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_MODES_D_H_
-#define _V_MODES_D_H_
-
-#include <stdio.h>
-#include "vorbis/codec.h"
-#include "backends.h"
-
-#include "books/line0_class1.vqh"
-#include "books/line0_class2.vqh"
-#include "books/line1_class0.vqh"
-#include "books/line1_class1.vqh"
-#include "books/line1_class2.vqh"
-#include "books/line1_class3.vqh"
-
-#include "books/line0_0sub0.vqh"
-#include "books/line0_1sub1.vqh"
-#include "books/line0_1sub2.vqh"
-#include "books/line0_1sub3.vqh"
-#include "books/line0_2sub1.vqh"
-#include "books/line0_2sub2.vqh"
-#include "books/line0_2sub3.vqh"
-
-#include "books/line1_0sub0.vqh"
-#include "books/line1_0sub1.vqh"
-#include "books/line1_1sub0.vqh"
-#include "books/line1_1sub1.vqh"
-#include "books/line1_2sub1.vqh"
-#include "books/line1_2sub2.vqh"
-#include "books/line1_2sub3.vqh"
-#include "books/line1_3sub1.vqh"
-#include "books/line1_3sub2.vqh"
-#include "books/line1_3sub3.vqh"
-
-#include "books/res0_128_128aux.vqh"
-#include "books/res0_128_1024aux.vqh"
-
-#include "books/res0_128_1024_1.vqh"
-#include "books/res0_128_1024_2.vqh"
-#include "books/res0_128_1024_3.vqh"
-#include "books/res0_128_1024_4.vqh"
-#include "books/res0_128_1024_5.vqh"
-#include "books/res0_128_1024_6.vqh"
-#include "books/res0_128_1024_7.vqh"
-#include "books/res0_128_1024_8.vqh"
-#include "books/res0_128_1024_8a.vqh"
-#include "books/res0_128_1024_9.vqh"
-#include "books/res0_128_1024_9a.vqh"
-#include "books/res0_128_1024_9b.vqh"
-
-
-static vorbis_info_psy_global _psy_set_DG={
- 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,
-};
-
-static struct vp_couple_pass _psy_passD[]={
- {1.f,1.f,
- {{9999, 0,0, 0,0, 0,0}}
- },
-};
-
-static vp_attenblock _vp_tonemask_consbass_D={
- {{-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*63*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*88*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*125*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*175*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*250*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*350*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*500*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*700*/
-
- {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1000*/
- {-35.f,-35.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*/
- {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*4000*/
- {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*5600*/
-
- {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f}, /*8000*/
- {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f},
- {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f},
-}};
-
-static vp_attenblock _vp_tonemask_D={
-
- {{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*63*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*88*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.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*/
- {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f}, /*8000*/
- {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f},
- {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f},
-}};
-
-
-static vp_attenblock _vp_peakatt_D={
- {
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*63*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*88*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*125*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*170*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*250*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*350*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*500*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*700*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*1000*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*1400*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*2000*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*2800*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*4000*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*5600*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*8000*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*11500*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*1600*/
- }};
-
-static vorbis_info_psy _psy_set_D0={
- ATH_Bark_dB_lineconservative,
-
- -100.,
- -140.,
-
- /* tonemaskp */
- -6.f, -45.f,&_vp_tonemask_consbass_D,
-
- /* peakattp */
- 0, &_vp_peakatt_D,
-
- /*noisemaskp */
- 1,-30.f, /* suppress any noise curve over maxspec+n */
- .6f, .6f, /* low/high window */
- 5, 5, 10,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-30,-30,-30,-30,-30,-30,-20,-10, 0, 0, 0, 0, 0, 0, 0, 0, 1},
- {.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.4f,.4f,.5f,.5f,.6f,.7f,.7f},
-
- 105.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,
- _psy_passD
-};
-
-static vorbis_info_psy _psy_set_D={
- ATH_Bark_dB_lineconservative,
-
- -100.f,
- -140.f,
-
- /* tonemask */
- -6.f,-45.f,&_vp_tonemask_consbass_D,
- /* peakattp */
- 0, &_vp_peakatt_D,
-
- /*noisemaskp */
- 1, -30.f, /* suppress any noise curve over maxspec+n */
- .4f,.4f, /* low/high window */
- 10,10,100,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- { 0, 0, 0, 0, 0, 0, 0, -3,-10,-10,-12,-12, -6, -3, -2, -1, -0},
- {.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.5f,.6f,.7f,.7f},
-
- 105.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_passD
-};
-
-static vorbis_info_psy _psy_set_DT={
- ATH_Bark_dB_lineconservative,
-
- -100.f,
- -140.f,
-
- /* tonemask */
- -6.f,-45.f,&_vp_tonemask_consbass_D,
- /* peakattp */
- 0, &_vp_peakatt_D,
-
- /*noisemaskp */
- 1, -30.f, /* suppress any noise curve over maxspec+n */
- .4f,.4f, /* low/high window */
- 10,10,100,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-30,-30,-30,-30,-30,-30,-30,-20,-10,-12,-16,-16, -10, -6, -6, -6, -6},
- {.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.4f,.4f,.4f,.4f,.4f,.5f,.5f,.6f},
-
- 105.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_passD
-};
-
-/* with GNUisms, this could be short and readable. Oh well */
-static vorbis_info_time0 _time_set0D={0};
-/*static vorbis_info_floor0 _floor_set0B={9, 44100, 64, 10,130, 2, {0,1},
- 0.246f, .387f};*/
-/*static vorbis_info_floor0 _floor_set1B={30, 44100, 256, 12,150, 2, {2,3},
- .082f, .126f};*/
-
-static vorbis_info_floor1 _floor_set0D={6,
- {0,1,1,1,2,2},
-
- {4,3,3},
- {0,2,2},
- {-1,0,1},
- {{2},{-1,3,4,5},{-1,6,7,8}},
-
- 4,
-
- {0,128,
-
- 6,17,30,58,
-
- 2,1,4, 11,8,14, 23,20,26,
- 41,35,48, 84,69,103},
-
- 60,30,500,
- 999,999,1,18.,
- 8,70,
- 128};
-
-static vorbis_info_floor1 _floor_set1D={10,
- {0,1,2,2,2,2,2, 3,3,3},
-
- {3,4,3,3},
- {1,1,2,2},
- {9,10,11,12},
- {{13,14},
- {15,16},
- {-1,17,18,19},
- {-1,20,21,22},
- },
-
- 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,300,
- 20,8,1,18.,
- 20,600,
- 1024};
-
-static vorbis_info_residue0 _residue_set0D={0,256,16,10,23,
- {0,1,1,1,1,1,1,1,3,7},
- {25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,32,
- 33,34,
- 35,36},
- {9999,
- 9999,
- 12,9999,
- 18,9999,
- 28,9999,
- 9999,9999},
- {.5f,
- 1.5f,
- 2.5f,2.5f,
- 4.5f,4.5,
- 16.5f,16.5,
- 84.5f},
- {0},
- {99,
- 99,
- 99,99,
- 99,99,
- 99,99,
- 99,99},
- {3}};
-
-static vorbis_info_residue0 _residue_set1D={0,2048, 32,10,24,
- {0,1,1,1,1,1,1,1,3,7},
- {25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,33,
- 34,35,36},
- {9999,
- 9999,
- 22,9999,
- 34,9999,
- 64,999,
- 9999,9999},
- {.5f,
- 1.5f,
- 2.5f,2.5f,
- 4.5f,4.5,
- 16.5f,16.5,
- 84.f},
- {0},
- {99,
- 99,
- 99,99,
- 99,99,
- 99,99,
- 99,99},
- {3}};
-
-static vorbis_info_mapping0 _mapping_set0D={1, {0,0}, {0}, {0}, {0}, {0,0},
- 1,{0},{1}};
-static vorbis_info_mapping0 _mapping_set1D={1, {0,0}, {0}, {1}, {1}, {1,2},
- 1,{0},{1}};
-static vorbis_info_mode _mode_set0D={0,0,0,0};
-static vorbis_info_mode _mode_set1D={1,0,0,1};
-
-/* CD quality stereo, losslesschannel coupling */
-codec_setup_info info_D={
-
- /* smallblock, largeblock */
- {256, 2048},
- /* modes,maps,times,floors,residues,books,psys */
- 2, 2, 1, 2, 2, 37, 3,
- /* modes */
- {&_mode_set0D,&_mode_set1D},
- /* maps */
- {0,0},{&_mapping_set0D,&_mapping_set1D},
- /* times */
- {0,0},{&_time_set0D},
- /* floors */
- {1,1},{&_floor_set0D,&_floor_set1D},
- /* residue */
- {2,2},{&_residue_set0D,&_residue_set1D},
- /* books */
-
- {
- &_huff_book_line0_class1,
- &_huff_book_line0_class2, /* 1 */
-
- &_huff_book_line0_0sub0, /* 2 */
- &_huff_book_line0_1sub1, /* 3 */
- &_huff_book_line0_1sub2,
- &_huff_book_line0_1sub3, /* 5 */
- &_huff_book_line0_2sub1,
- &_huff_book_line0_2sub2, /* 7 */
- &_huff_book_line0_2sub3,
-
- &_huff_book_line1_class0,
- &_huff_book_line1_class1, /* 10 */
- &_huff_book_line1_class2,
- &_huff_book_line1_class3, /* 12 */
-
- &_huff_book_line1_0sub0,
- &_huff_book_line1_0sub1, /* 14 */
- &_huff_book_line1_1sub0,
- &_huff_book_line1_1sub1,
- &_huff_book_line1_2sub1,
- &_huff_book_line1_2sub2, /* 18 */
- &_huff_book_line1_2sub3,
- &_huff_book_line1_3sub1,
- &_huff_book_line1_3sub2,
- &_huff_book_line1_3sub3, /* 22 */
-
- &_huff_book_res0_128_128aux,
- &_huff_book_res0_128_1024aux,
-
- &_vq_book_res0_128_1024_1,
- &_vq_book_res0_128_1024_2,
- &_vq_book_res0_128_1024_3,
- &_vq_book_res0_128_1024_4,
- &_vq_book_res0_128_1024_5,
- &_vq_book_res0_128_1024_6,
- &_vq_book_res0_128_1024_7,
- &_vq_book_res0_128_1024_8,
- &_vq_book_res0_128_1024_8a,
- &_vq_book_res0_128_1024_9,
- &_vq_book_res0_128_1024_9a,
- &_vq_book_res0_128_1024_9b,
-
- },
- /* psy */
- {&_psy_set_D0,&_psy_set_DT,&_psy_set_D},
- &_psy_set_DG
-};
-
-#endif
diff --git a/lib/modes/mode_E.h b/lib/modes/mode_E.h
deleted file mode 100644
index da87f394..00000000
--- a/lib/modes/mode_E.h
+++ /dev/null
@@ -1,384 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: predefined encoding modes
- last mod: $Id: mode_E.h,v 1.15 2001/08/13 01:37:14 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_MODES_E_H_
-#define _V_MODES_E_H_
-
-#include <stdio.h>
-#include "vorbis/codec.h"
-#include "backends.h"
-
-#include "books/line0_class1.vqh"
-#include "books/line0_class2.vqh"
-#include "books/line1_class0.vqh"
-#include "books/line1_class1.vqh"
-#include "books/line1_class2.vqh"
-#include "books/line1_class3.vqh"
-
-#include "books/line0_0sub0.vqh"
-#include "books/line0_1sub1.vqh"
-#include "books/line0_1sub2.vqh"
-#include "books/line0_1sub3.vqh"
-#include "books/line0_2sub1.vqh"
-#include "books/line0_2sub2.vqh"
-#include "books/line0_2sub3.vqh"
-
-#include "books/line1_0sub0.vqh"
-#include "books/line1_0sub1.vqh"
-#include "books/line1_1sub0.vqh"
-#include "books/line1_1sub1.vqh"
-#include "books/line1_2sub1.vqh"
-#include "books/line1_2sub2.vqh"
-#include "books/line1_2sub3.vqh"
-#include "books/line1_3sub1.vqh"
-#include "books/line1_3sub2.vqh"
-#include "books/line1_3sub3.vqh"
-
-#include "books/res0_128_128aux.vqh"
-#include "books/res0_128_1024aux.vqh"
-
-#include "books/res0_128_1024_1.vqh"
-#include "books/res0_128_1024_2.vqh"
-#include "books/res0_128_1024_3.vqh"
-#include "books/res0_128_1024_4.vqh"
-#include "books/res0_128_1024_5.vqh"
-#include "books/res0_128_1024_6.vqh"
-#include "books/res0_128_1024_7.vqh"
-#include "books/res0_128_1024_8.vqh"
-#include "books/res0_128_1024_8a.vqh"
-#include "books/res0_128_1024_9.vqh"
-#include "books/res0_128_1024_9a.vqh"
-#include "books/res0_128_1024_9b.vqh"
-
-
-static vorbis_info_psy_global _psy_set_EG={
- 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,
-};
-
-static struct vp_couple_pass _psy_passE[]={
- {1.f,1.f,
- {{9999, 0,0, 0,0, 0,0}}
- },
-};
-
-static vp_attenblock _vp_tonemask_E={
- {{-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*63*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*88*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*125*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*175*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*250*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*350*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*500*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*700*/
-
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*1k*/
- {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f},
- {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f}, /*2k*/
- {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f},
- {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f}, /*4k*/
- {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f}, /*8000*/
-
- {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f}, /*8000*/
- {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f},
- {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f},
-}};
-
-static vp_attenblock _vp_peakatt_E={
- {
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*63*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*125*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*250*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*500*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*1k*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*2k*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*4k*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*8k*/
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
- {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*16k*/
- }};
-
-static vorbis_info_psy _psy_set_E0={
- ATH_Bark_dB_lineconservative,
-
- -110.,
- -140.,
-
- /* tonemaskp */
- -6.f, -50.f, &_vp_tonemask_E,
-
- /* peakattp */
- 0, &_vp_peakatt_E,
-
- /*noisemaskp */
- 1,-30.f, /* suppress any noise curve over maxspec+n */
- .6f, .6f, /* low/high window */
- 5, 5, 10,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-30,-30,-30,-30,-30,-30,-20,-10,-10,-10,-10,-10,-6,-6,-6,-6,-6},
- {.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.4f,.4f,.5f,.5f,.5f,.5f,.6f},
-
- 105.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,
- _psy_passE
-};
-
-static vorbis_info_psy _psy_set_E={
- ATH_Bark_dB_lineconservative,
-
- -110.f,
- -140.f,
-
- /* tonemask */
- -6.f,-50.f,&_vp_tonemask_E,
- /* peakattp */
- 0, &_vp_peakatt_E,
-
- /*noisemaskp */
- 1, -30.f, /* suppress any noise curve over maxspec+n */
- .4f,.4f, /* low/high window */
- 10,10,100,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-30,-30,-30,-30,-30,-30,-30,-20,-10,-12,-16,-16, -10, -6, -6, -6, -6},
- {.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.4f,.4f,.4f,.4f,.4f,.5f,.5f,.6f},
-
- 105.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_passE
-};
-
-/* with GNUisms, this could be short and readable. Oh well */
-static vorbis_info_time0 _time_set0E={0};
-/*static vorbis_info_floor0 _floor_set0B={9, 44100, 64, 10,130, 2, {0,1},
- 0.246f, .387f};*/
-/*static vorbis_info_floor0 _floor_set1B={30, 44100, 256, 12,150, 2, {2,3},
- .082f, .126f};*/
-
-static vorbis_info_floor1 _floor_set0E={6,
- {0,1,1,1,2,2},
-
- {4,3,3},
- {0,2,2},
- {-1,0,1},
- {{2},{-1,3,4,5},{-1,6,7,8}},
-
- 4,
-
- {0,128,
-
- 6,17,30,58,
-
- 2,1,4, 11,8,14, 23,20,26,
- 41,35,48, 84,69,103},
-
- 60,30,500,
- 999,999,1,18.,
- 8,70,
- 128};
-
-static vorbis_info_floor1 _floor_set1E={10,
- {0,1,2,2,2,2,2, 3,3,3},
-
- {3,4,3,3},
- {1,1,2,2},
- {9,10,11,12},
- {{13,14},
- {15,16},
- {-1,17,18,19},
- {-1,20,21,22},
- },
-
- 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,300,
- 20,8,1,18.,
- 20,600,
- 1024};
-
-static vorbis_info_residue0 _residue_set0E={0,256,16,10,23,
- {0,1,1,1,1,1,1,1,3,7},
- {25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,32,
- 33,34,
- 35,36},
- {9999,
- 9999,
- 9999,
- 9999,
- 40,9999,
- 58,9999,
- 9999,9999},
- {.5f,
- 1.5f,
- 2.5f,
- 4.5f,
- 7.5f,7.5f,
- 16.5f,16.5,
- 84.5f},
- {0},
- {99,
- 99,
- 99,
- 99,
- 99,99,
- 99,99,
- 99,99},
- {3}};
-
-static vorbis_info_residue0 _residue_set1E={0,2048, 32,10,24,
- {0,1,1,1,1,1,1,1,3,7},
- {25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,33,
- 34,35,36},
- {9999,
- 9999,
- 9999,
- 9999,
- 70,9999,
- 110,9999,
- 9999,9999},
- {.5f,
- 1.5f,
- 2.5f,
- 4.5f,
- 7.5,7.5,
- 16.5f,16.5,
- 84.f},
- {0},
- {99,
- 99,
- 99,
- 99,
- 99,99,
- 99,99,
- 99,99},
- {3}};
-
-static vorbis_info_mapping0 _mapping_set0E={1, {0,0}, {0}, {0}, {0}, {0,0},
- 1,{0},{1}};
-static vorbis_info_mapping0 _mapping_set1E={1, {0,0}, {0}, {1}, {1}, {1,1},
- 1,{0},{1}};
-static vorbis_info_mode _mode_set0E={0,0,0,0};
-static vorbis_info_mode _mode_set1E={1,0,0,1};
-
-/* CD quality stereo, losslesschannel coupling */
-codec_setup_info info_E={
-
- /* smallblock, largeblock */
- {256, 2048},
- /* modes,maps,times,floors,residues,books,psys */
- 2, 2, 1, 2, 2, 37, 2,
- /* modes */
- {&_mode_set0E,&_mode_set1E},
- /* maps */
- {0,0},{&_mapping_set0E,&_mapping_set1E},
- /* times */
- {0,0},{&_time_set0E},
- /* floors */
- {1,1},{&_floor_set0E,&_floor_set1E},
- /* residue */
- {2,2},{&_residue_set0E,&_residue_set1E},
- /* books */
-
- {
- &_huff_book_line0_class1,
- &_huff_book_line0_class2, /* 1 */
-
- &_huff_book_line0_0sub0, /* 2 */
- &_huff_book_line0_1sub1, /* 3 */
- &_huff_book_line0_1sub2,
- &_huff_book_line0_1sub3, /* 5 */
- &_huff_book_line0_2sub1,
- &_huff_book_line0_2sub2, /* 7 */
- &_huff_book_line0_2sub3,
-
- &_huff_book_line1_class0,
- &_huff_book_line1_class1, /* 10 */
- &_huff_book_line1_class2,
- &_huff_book_line1_class3, /* 12 */
-
- &_huff_book_line1_0sub0,
- &_huff_book_line1_0sub1, /* 14 */
- &_huff_book_line1_1sub0,
- &_huff_book_line1_1sub1,
- &_huff_book_line1_2sub1,
- &_huff_book_line1_2sub2, /* 18 */
- &_huff_book_line1_2sub3,
- &_huff_book_line1_3sub1,
- &_huff_book_line1_3sub2,
- &_huff_book_line1_3sub3, /* 22 */
-
- &_huff_book_res0_128_128aux,
- &_huff_book_res0_128_1024aux,
-
- &_vq_book_res0_128_1024_1,
- &_vq_book_res0_128_1024_2,
- &_vq_book_res0_128_1024_3,
- &_vq_book_res0_128_1024_4,
- &_vq_book_res0_128_1024_5,
- &_vq_book_res0_128_1024_6,
- &_vq_book_res0_128_1024_7,
- &_vq_book_res0_128_1024_8,
- &_vq_book_res0_128_1024_8a,
- &_vq_book_res0_128_1024_9,
- &_vq_book_res0_128_1024_9a,
- &_vq_book_res0_128_1024_9b,
-
- },
- /* psy */
- {&_psy_set_E0,&_psy_set_E},
- &_psy_set_EG
-};
-
-#endif
diff --git a/lib/modes/mode_Za.h b/lib/modes/mode_Za.h
deleted file mode 100644
index 6159b717..00000000
--- a/lib/modes/mode_Za.h
+++ /dev/null
@@ -1,406 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: predefined encoding modes
- last mod: $Id: mode_Za.h,v 1.2 2001/08/13 01:37:14 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_MODES_ZA_H_
-#define _V_MODES_ZA_H_
-
-#include <stdio.h>
-#include "vorbis/codec.h"
-#include "backends.h"
-
-#include "books/line0_class1.vqh"
-#include "books/line0_class2.vqh"
-#include "books/line1_class0.vqh"
-#include "books/line1_class1.vqh"
-#include "books/line1_class2.vqh"
-#include "books/line1_class3.vqh"
-
-#include "books/line0_0sub0.vqh"
-#include "books/line0_1sub1.vqh"
-#include "books/line0_1sub2.vqh"
-#include "books/line0_1sub3.vqh"
-#include "books/line0_2sub1.vqh"
-#include "books/line0_2sub2.vqh"
-#include "books/line0_2sub3.vqh"
-
-#include "books/line1_0sub0.vqh"
-#include "books/line1_0sub1.vqh"
-#include "books/line1_1sub0.vqh"
-#include "books/line1_1sub1.vqh"
-#include "books/line1_2sub1.vqh"
-#include "books/line1_2sub2.vqh"
-#include "books/line1_2sub3.vqh"
-#include "books/line1_3sub1.vqh"
-#include "books/line1_3sub2.vqh"
-#include "books/line1_3sub3.vqh"
-
-#include "books/res0_128_128aux.vqh"
-#include "books/res0_128_1024aux.vqh"
-
-#include "books/res0_128_1024_1.vqh"
-#include "books/res0_128_1024_2.vqh"
-#include "books/res0_128_1024_3.vqh"
-#include "books/res0_128_1024_4.vqh"
-#include "books/res0_128_1024_5.vqh"
-#include "books/res0_128_1024_5a.vqh"
-#include "books/res0_128_1024_5b.vqh"
-
-
-static vorbis_info_psy_global _psy_set_ZaG={
- 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,
-};
-
-static struct vp_couple_pass _psy_passZa0[]={
- {1.f,1.f,
- {{24, 0,0, 0,0, 0,0},
- {9999, 0,0, 12.5f,12, 4.5f,0}}
- },
-};
-
-static vp_couple_pass _psy_passZa[]={
- {1.f,1.f,
- {{288, 0,0, 0,0, 0,0},
- {9999, 0,0, 12.5f,12, 4.5f,0}}
- }
-};
-
-static vp_attenblock _vp_tonemask_consbass_Za={
-
- {
- {-30.f,-30.f,-35.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*63*/
- {-30.f,-30.f,-35.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f},
- {-30.f,-30.f,-35.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*125*/
-
- {-30.f,-30.f,-35.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f},
- {-30.f,-30.f,-35.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*250*/
- {-30.f,-30.f,-35.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f},
-
- {-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*/
-}};
-
-static vp_attenblock _vp_tonemask_Za={
-
- {{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*63*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*88*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.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*/
-}};
-
-static vp_attenblock _vp_peakatt_Za={
- {{-14.f,-20.f,-20.f,-20.f,-26.f,-22.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*63*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-22.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*88*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-22.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*125*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-22.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*175*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-22.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*250*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-22.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*350*/
- {-14.f,-20.f,-20.f,-20.f,-26.f,-22.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*500*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-14.f,-20.f,-26.f,-22.f,-22.f},/*700*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-14.f,-20.f,-22.f,-22.f,-22.f},/*1000*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*1400*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*2000*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-30.f,-30.f},/*2400*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-30.f,-30.f},/*4000*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-12.f,-13.f,-22.f,-30.f,-30.f},/*5600*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-12.f,-13.f,-22.f,-30.f,-30.f},/*8000*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-22.f,-30.f,-30.f},/*11500*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-20.f,-30.f,-30.f},/*16000*/
-}};
-
-static vorbis_info_psy _psy_set_Za0={
- ATH_Bark_dB_lineaggressive,
-
- -100.,
- -140.,
-
- /* tonemaskp */
- 0.f, -20.f,&_vp_tonemask_consbass_Za,
-
- /* peakattp */
- 1, &_vp_peakatt_Za,
-
- /*noisemaskp */
- 1,-20.f, /* suppress any noise curve over absolute dB */
- .6f, .6f, /* low/high window */
- 5, 5, -1,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-30,-30,-30,-30,-30,-20,-20,-10,-10,-10,-10,-10, -3, 1, 2, 3, 6},
- {.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f},
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,
- _psy_passZa0
-};
-
-static vorbis_info_psy _psy_set_Za={
- ATH_Bark_dB_lineaggressive,
-
- -100.f,
- -140.f,
-
- /* tonemask */
- 0.f,-20.f,&_vp_tonemask_Za,
- /* peakattp */
- 1, &_vp_peakatt_Za,
-
- /*noisemaskp */
- 1, -20.f, /* suppress any noise curve over maxspec+n */
- .4f,.4f, /* low/high window */
- 10,10,-1,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-6,-6,-6,-6,-6,-6, -6, -6,-10,-10,-10,-10,-3, -1, 1, 2, 3},
- {.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f},
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_passZa
-};
-
-static vorbis_info_psy _psy_set_ZaT={
- ATH_Bark_dB_lineaggressive,
-
- -100.f,
- -140.f,
-
- /* tonemask */
- 0.f,-20.f,&_vp_tonemask_Za,
- /* peakattp */
- 1, &_vp_peakatt_Za,
-
- /*noisemaskp */
- 1, -20.f, /* suppress any noise curve over maxspec+n */
- .4f,.4f, /* low/high window */
- 10,10,-1,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-30,-30,-30,-30,-30,-20, -6,-6,-10,-10,-10,-10, -3, -1, 1, 2, 3},
- {.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f,.9f},
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_passZa
-};
-
-/* with GNUisms, this could be short and readable. Oh well */
-static vorbis_info_time0 _time_set0Za={0};
-/*static vorbis_info_floor0 _floor_set0A={9, 44100, 64, 10,130, 2, {0,1},
- 0.246f, .387f};*/
-/*static vorbis_info_floor0 _floor_set1A={30, 44100, 256, 12,150, 2, {2,3},
- .082f, .126f};*/
-
-static vorbis_info_floor1 _floor_set0Zc={3,
- {0,1,2},
-
- {1,3,3},
- {0,2,2},
- {-1,0,1},
- {{2},{-1,3,4,5},{-1,6,7,8}},
-
- 4,
-
- {0,128,
-
- 7,
-
- 2,1,4,
- 23,13,45},
-
- 60,30,500,
- 999,999,0,18.,
- 8,70,
- 90};
-
-
-static vorbis_info_floor1 _floor_set1Za={10,
- {0,1,2,2,2,2,2, 3,3,3},
-
- {3,4,3,3},
- {1,1,2,2},
- {9,10,11,12},
- {{13,14},
- {15,16},
- {-1,17,18,19},
- {-1,20,21,22},
- },
-
- 4,
- {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,500,
- 20,8,1,18.,
- 20,600,
- 704};
-
-static vorbis_info_residue0 _residue_set0Za={0,192,16,5,23,
- {1,1,1,1,7},
- {25,
- 26,
- 27,
- 28,
- 29,30,31},
- {9999,
- 9999,
- 9999,
- 9999,
- 9999},
- {4.5,
- 12.5,
- 1.5f,
- 7.5f},
- {0},
- {3,3,99,99,99},
- {3}};
-
-static vorbis_info_residue0 _residue_set1Za={0,1408, 32,5,24,
- {1,1,1,1,7},
- {25,
- 26,
- 27,
- 28,
- 29,30,31},
- {9999,
- 9999,
- 9999,
- 9999,
- 9999},
- {4.5f,
- 12.5,
- 1.5,
- 7.5},
- {0},
- {18,18,99,99,99},
- {3}};
-
-static vorbis_info_mapping0 _mapping_set0Za={1, {0,0}, {0}, {0}, {0}, {0,0},
- 1,{0},{1}};
-static vorbis_info_mapping0 _mapping_set1Za={1, {0,0}, {0}, {1}, {1}, {1,2},
- 1,{0},{1}};
-static vorbis_info_mode _mode_set0Za={0,0,0,0};
-static vorbis_info_mode _mode_set1Za={1,0,0,1};
-
-/* CD quality stereo, no channel coupling */
-codec_setup_info info_Za={
-
- /* smallblock, largeblock */
- {256, 2048},
- /* modes,maps,times,floors,residues,books,psys */
- 2, 2, 1, 2, 2, 32, 3,
- /* modes */
- {&_mode_set0Za,&_mode_set1Za},
- /* maps */
- {0,0},{&_mapping_set0Za,&_mapping_set1Za},
- /* times */
- {0,0},{&_time_set0Za},
- /* floors */
- {1,1},{&_floor_set0Za,&_floor_set1Za},
- /* residue */
- {2,2},{&_residue_set0Za,&_residue_set1Za},
- /* books */
-
- {
- &_huff_book_line0_class1,
- &_huff_book_line0_class2, /* 1 */
-
- &_huff_book_line0_0sub0, /* 2 */
- &_huff_book_line0_1sub1, /* 3 */
- &_huff_book_line0_1sub2,
- &_huff_book_line0_1sub3, /* 5 */
- &_huff_book_line0_2sub1,
- &_huff_book_line0_2sub2, /* 7 */
- &_huff_book_line0_2sub3,
-
- &_huff_book_line1_class0,
- &_huff_book_line1_class1, /* 10 */
- &_huff_book_line1_class2,
- &_huff_book_line1_class3, /* 12 */
-
- &_huff_book_line1_0sub0,
- &_huff_book_line1_0sub1, /* 14 */
- &_huff_book_line1_1sub0,
- &_huff_book_line1_1sub1,
- &_huff_book_line1_2sub1,
- &_huff_book_line1_2sub2, /* 18 */
- &_huff_book_line1_2sub3,
- &_huff_book_line1_3sub1,
- &_huff_book_line1_3sub2,
- &_huff_book_line1_3sub3, /* 22 */
-
- &_huff_book_res0_128_128aux,
- &_huff_book_res0_128_1024aux,
-
- &_vq_book_res0_128_1024_1,
- &_vq_book_res0_128_1024_2,
- &_vq_book_res0_128_1024_3,
- &_vq_book_res0_128_1024_4,
- &_vq_book_res0_128_1024_5,
- &_vq_book_res0_128_1024_5a,
- &_vq_book_res0_128_1024_5b,
-
- },
- /* psy */
- {&_psy_set_Za0,&_psy_set_ZaT,&_psy_set_Za},
- &_psy_set_ZaG
-};
-
-#endif
diff --git a/lib/modes/mode_Zb.h b/lib/modes/mode_Zb.h
deleted file mode 100644
index 6cf812a6..00000000
--- a/lib/modes/mode_Zb.h
+++ /dev/null
@@ -1,410 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: predefined encoding modes
- last mod: $Id: mode_Zb.h,v 1.2 2001/08/13 01:37:14 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_MODES_Zb_H_
-#define _V_MODES_Zb_H_
-
-#include <stdio.h>
-#include "vorbis/codec.h"
-#include "backends.h"
-
-#include "books/line0_class1.vqh"
-#include "books/line0_class2.vqh"
-#include "books/line1_class0.vqh"
-#include "books/line1_class1.vqh"
-#include "books/line1_class2.vqh"
-#include "books/line1_class3.vqh"
-
-#include "books/line0_0sub0.vqh"
-#include "books/line0_1sub1.vqh"
-#include "books/line0_1sub2.vqh"
-#include "books/line0_1sub3.vqh"
-#include "books/line0_2sub1.vqh"
-#include "books/line0_2sub2.vqh"
-#include "books/line0_2sub3.vqh"
-
-#include "books/line1_0sub0.vqh"
-#include "books/line1_0sub1.vqh"
-#include "books/line1_1sub0.vqh"
-#include "books/line1_1sub1.vqh"
-#include "books/line1_2sub1.vqh"
-#include "books/line1_2sub2.vqh"
-#include "books/line1_2sub3.vqh"
-#include "books/line1_3sub1.vqh"
-#include "books/line1_3sub2.vqh"
-#include "books/line1_3sub3.vqh"
-
-#include "books/res0_128_128aux.vqh"
-#include "books/res0_128_1024aux.vqh"
-
-#include "books/res0_128_1024_1.vqh"
-#include "books/res0_128_1024_2.vqh"
-#include "books/res0_128_1024_3.vqh"
-#include "books/res0_128_1024_4.vqh"
-#include "books/res0_128_1024_5.vqh"
-#include "books/res0_128_1024_5a.vqh"
-#include "books/res0_128_1024_5b.vqh"
-
-
-static vorbis_info_psy_global _psy_set_ZbG={
- 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,
-};
-
-static struct vp_couple_pass _psy_passZb0[]={
- {1.f,1.f,
- {{24, 0,0, 0,0, 0,0},
- {9999, 0,0, 7.5f,12, 7.5f,0}}
- },
-};
-
-static vp_couple_pass _psy_passZb[]={
- {1.f,1.f,
- {{288, 0,0, 0,0, 0,0},
- {9999, 0,0, 7.5f,12, 7.5f,0}}
- }
-};
-
-static vp_attenblock _vp_tonemask_consbass_Zb={
- {{-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*63*/
- {-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*88*/
- {-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*125*/
- {-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*175*/
- {-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*250*/
- {-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*350*/
-
- {-35.f,-35.f,-35.f,-45.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f}, /*500*/
- {-35.f,-35.f,-35.f,-45.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f}, /*700*/
-
- {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1000*/
- {-35.f,-35.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*/
- {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*4000*/
- {-35.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,-35.f,-45.f,-50.f,-60.f,-70.f,-90.f,-100.f}, /*11500*/
- {-24.f,-24.f,-26.f,-32.f,-32.f,-42.f,-50.f,-60.f,-70.f,-90.f,-100.f}, /*16000*/
-}};
-
-static vp_attenblock _vp_tonemask_Zb={
-
- {{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*63*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*88*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.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*/
-}};
-
-static vp_attenblock _vp_peakatt_Zb={
- {{-14.f,-16.f,-18.f,-19.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f},/*63*/
- {-14.f,-16.f,-18.f,-19.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f},/*88*/
- {-14.f,-16.f,-18.f,-19.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f},/*125*/
- {-10.f,-10.f,-10.f,-10.f,-16.f,-20.f,-26.f,-24.f,-24.f,-24.f,-24.f},/*175*/
- {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-26.f,-24.f,-24.f,-24.f},/*250*/
- {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-24.f,-24.f},/*350*/
- {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-24.f,-24.f},/*500*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*700*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*1000*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*1400*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*2000*/
- {-10.f,-10.f,-10.f,-12.f,-16.f,-16.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*2400*/
- {-10.f,-10.f,-10.f,-12.f,-16.f,-16.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*4000*/
- {-10.f,-10.f,-10.f,-12.f,-12.f,-14.f,-16.f,-18.f,-22.f,-24.f,-24.f},/*5600*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-14.f,-16.f,-18.f,-22.f,-24.f,-24.f},/*8000*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-14.f,-16.f,-18.f,-22.f,-24.f,-24.f},/*11500*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-12.f,-16.f,-18.f,-22.f,-24.f,-24.f},/*16000*/
-}};
-
-static vorbis_info_psy _psy_set_Zb0={
- ATH_Bark_dB_lineaggressive,
-
- -90.,
- -140.,
-
- /* tonemaskp */
- 6.f, -20.f,&_vp_tonemask_consbass_Zb,
-
- /* peakattp */
- 1, &_vp_peakatt_Zb,
-
- /*noisemaskp */
- 1,-24.f, /* suppress any noise curve over maxspec+n */
- .5f, .5f, /* low/high window */
- 5, 5, -1,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-20,-20,-20,-20,-20,-20,-10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
- {1.f,1.f,1.f,1.f,1.f,1.f,1.f,.8f,.8f,.8f,.8f,.8f,.85f,.95f,.95f,1.f,1.f},
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,
- _psy_passZb0
-};
-
-static vorbis_info_psy _psy_set_Zb={
- ATH_Bark_dB_lineaggressive,
-
- -90.f,
- -140.f,
-
- /* tonemask */
- 6.f,-20.f,&_vp_tonemask_Zb,
- /* peakattp */
- 1, &_vp_peakatt_Zb,
-
- /*noisemaskp */
- 1, -24.f, /* suppress any noise curve over maxspec+n */
- .5f,.5f, /* low/high window */
- 10,10,-1,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-10,-10,-10,-10,-10,-10,-10, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3},
- {.8f,.8f,.8f,.8f,.8f,.8f,.8f,.8f,.8f,.8f,.8f,.8f,.9f,.9f,.9f,.95f,.95f},
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_passZb
-};
-
-static vorbis_info_psy _psy_set_ZbT={
- ATH_Bark_dB_lineaggressive,
-
- -90.f,
- -140.f,
-
- /* tonemask */
- 6.f,-20.f,&_vp_tonemask_consbass_Zb,
- /* peakattp */
- 1, &_vp_peakatt_Zb,
-
- /*noisemaskp */
- 1, -24.f, /* suppress any noise curve over maxspec+n */
- .5f,.5f, /* low/high window */
- 10,10,-1,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-20,-20,-20,-20,-20,-20,-10, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3},
- {1.f,1.f,1.f,1.f,1.f,1.f,.9f,.8f,.8f,.8f,.8f,.8f,.9f,.9f,.9f,.95f,.95f},
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_passZb
-};
-
-/* with GNUisms, this could be short and readable. Oh well */
-static vorbis_info_time0 _time_set0Zb={0};
-/*static vorbis_info_floor0 _floor_set0Zb={9, 44100, 64, 10,130, 2, {0,1},
- 0.246f, .387f};*/
-/*static vorbis_info_floor0 _floor_set1Zb={30, 44100, 256, 12,150, 2, {2,3},
- .082f, .126f};*/
-
-static vorbis_info_floor1 _floor_set0Zb={3,
- {0,1,2},
-
- {1,3,3},
- {0,2,2},
- {-1,0,1},
- {{2},{-1,3,4,5},{-1,6,7,8}},
-
- 4,
-
- {0,128,
-
- 7,
-
- 2,1,4,
- 23,13,45},
-
- 60,30,500,
- 999,999,0,18.,
- 8,70,
- 90};
-
-static vorbis_info_floor1 _floor_set1Zb={10,
- {0,1,2,2,2,2,2, 3,3,3},
-
- {3,4,3,3},
- {1,1,2,2},
- {9,10,11,12},
- {{13,14},
- {15,16},
- {-1,17,18,19},
- {-1,20,21,22},
- },
-
- 4,
- {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,
- 720};
-
-static vorbis_info_residue0 _residue_set0Zb={0,180,12,5,23,
- {1,1,1,1,7},
- {25,
- 26,
- 27,
- 28,
- 29,30,31},
- {9999,
- 9999,
- 9999,
- 9999,
- 9999},
- {2.5f,
- 7.5,
- 1.5f,
- 22.5f},
- {0},
- {2,
- 2,
- 99,
- 99,
- 99},
- {3}};
-
-static vorbis_info_residue0 _residue_set1Zb={0,1440, 32,5,24,
- {1,1,1,1,7},
- {25,
- 26,
- 27,
- 28,
- 29,30,31},
- {9999,
- 9999,
- 9999,
- 9999,
- 9999},
- {2.5f,
- 7.5f,
- 1.5f,
- 22.5f},
- {0},
- {18,
- 18,
- 99,
- 99,
- 99},
- {3}};
-
-static vorbis_info_mapping0 _mapping_set0Zb={1, {0,0}, {0}, {0}, {0}, {0,0},
- 1,{0},{1}};
-static vorbis_info_mapping0 _mapping_set1Zb={1, {0,0}, {0}, {1}, {1}, {1,2},
- 1,{0},{1}};
-static vorbis_info_mode _mode_set0Zb={0,0,0,0};
-static vorbis_info_mode _mode_set1Zb={1,0,0,1};
-
-/* CD quality stereo, no channel coupling */
-codec_setup_info info_Zb={
-
- /* smallblock, largeblock */
- {256, 2048},
- /* modes,maps,times,floors,residues,books,psys */
- 2, 2, 1, 2, 2, 32, 3,
- /* modes */
- {&_mode_set0Zb,&_mode_set1Zb},
- /* maps */
- {0,0},{&_mapping_set0Zb,&_mapping_set1Zb},
- /* times */
- {0,0},{&_time_set0Zb},
- /* floors */
- {1,1},{&_floor_set0Zb,&_floor_set1Zb},
- /* residue */
- {2,2},{&_residue_set0Zb,&_residue_set1Zb},
- /* books */
-
- {
- &_huff_book_line0_class1,
- &_huff_book_line0_class2, /* 1 */
-
- &_huff_book_line0_0sub0, /* 2 */
- &_huff_book_line0_1sub1, /* 3 */
- &_huff_book_line0_1sub2,
- &_huff_book_line0_1sub3, /* 5 */
- &_huff_book_line0_2sub1,
- &_huff_book_line0_2sub2, /* 7 */
- &_huff_book_line0_2sub3,
-
- &_huff_book_line1_class0,
- &_huff_book_line1_class1, /* 10 */
- &_huff_book_line1_class2,
- &_huff_book_line1_class3, /* 12 */
-
- &_huff_book_line1_0sub0,
- &_huff_book_line1_0sub1, /* 14 */
- &_huff_book_line1_1sub0,
- &_huff_book_line1_1sub1,
- &_huff_book_line1_2sub1,
- &_huff_book_line1_2sub2, /* 18 */
- &_huff_book_line1_2sub3,
- &_huff_book_line1_3sub1,
- &_huff_book_line1_3sub2,
- &_huff_book_line1_3sub3, /* 22 */
-
- &_huff_book_res0_128_128aux,
- &_huff_book_res0_128_1024aux,
-
- &_vq_book_res0_128_1024_1,
- &_vq_book_res0_128_1024_2,
- &_vq_book_res0_128_1024_3,
- &_vq_book_res0_128_1024_4,
- &_vq_book_res0_128_1024_5,
- &_vq_book_res0_128_1024_5a,
- &_vq_book_res0_128_1024_5b,
-
- },
- /* psy */
- {&_psy_set_Zb0,&_psy_set_ZbT,&_psy_set_Zb},
- &_psy_set_ZbG
-};
-
-#endif
diff --git a/lib/modes/mode_Zc.h b/lib/modes/mode_Zc.h
deleted file mode 100644
index fc5d4c12..00000000
--- a/lib/modes/mode_Zc.h
+++ /dev/null
@@ -1,451 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: predefined encoding modes
- last mod: $Id: mode_Zc.h,v 1.2 2001/08/13 01:37:14 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_MODES_Zc_H_
-#define _V_MODES_Zc_H_
-
-#include <stdio.h>
-#include "vorbis/codec.h"
-#include "backends.h"
-
-#include "books/line0_class1.vqh"
-#include "books/line0_class2.vqh"
-#include "books/line1_class0.vqh"
-#include "books/line1_class1.vqh"
-#include "books/line1_class2.vqh"
-#include "books/line1_class3.vqh"
-
-#include "books/line0_0sub0.vqh"
-#include "books/line0_1sub1.vqh"
-#include "books/line0_1sub2.vqh"
-#include "books/line0_1sub3.vqh"
-#include "books/line0_2sub1.vqh"
-#include "books/line0_2sub2.vqh"
-#include "books/line0_2sub3.vqh"
-
-#include "books/line1_0sub0.vqh"
-#include "books/line1_0sub1.vqh"
-#include "books/line1_1sub0.vqh"
-#include "books/line1_1sub1.vqh"
-#include "books/line1_2sub1.vqh"
-#include "books/line1_2sub2.vqh"
-#include "books/line1_2sub3.vqh"
-#include "books/line1_3sub1.vqh"
-#include "books/line1_3sub2.vqh"
-#include "books/line1_3sub3.vqh"
-
-#include "books/res0_128_128aux.vqh"
-#include "books/res0_128_1024aux.vqh"
-
-#include "books/res0_128_1024_1.vqh"
-#include "books/res0_128_1024_2.vqh"
-#include "books/res0_128_1024_3.vqh"
-#include "books/res0_128_1024_4.vqh"
-#include "books/res0_128_1024_5.vqh"
-#include "books/res0_128_1024_6.vqh"
-#include "books/res0_128_1024_7.vqh"
-#include "books/res0_128_1024_8.vqh"
-#include "books/res0_128_1024_9.vqh"
-#include "books/res0_128_1024_9a.vqh"
-#include "books/res0_128_1024_9b.vqh"
-
-
-static vorbis_info_psy_global _psy_set_ZcG={
- 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,
-};
-
-static struct vp_couple_pass _psy_passZc0[]={
- {1.f,1.f,
- {{24, 0,0, 0,0, 0,0},
- {9999, 0,0, 7.5f,12, 7.5f,0}}
- },
-};
-
-static vp_couple_pass _psy_passZc[]={
- {1.f,1.f,
- {{288, 0,0, 0,0, 0,0},
- {9999, 0,0, 7.5f,12, 7.5f,0}}
- }
-};
-
-static vp_attenblock _vp_tonemask_consbass_Zc={
- {{-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*63*/
- {-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*88*/
- {-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*125*/
- {-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*175*/
- {-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*250*/
- {-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f,-110.f}, /*350*/
-
- {-35.f,-35.f,-35.f,-45.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f}, /*500*/
- {-35.f,-35.f,-35.f,-45.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f}, /*700*/
-
- {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1000*/
- {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1400*/
-
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*2000*/
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f},
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*2000*/
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f},
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*2000*/
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f},
- {-24.f,-24.f,-26.f,-30.f,-30.f,-35.f,-45.f,-55.f,-65.f,-75.f,-90.f}, /*16000*/
-}};
-
-static vp_attenblock _vp_tonemask_Zc={
-
- {{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*63*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*88*/
- {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.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*/
-
-
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*2000*/
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f},
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*2000*/
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f},
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*2000*/
- {-30.f,-30.f,-30.f,-30.f,-30.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f},
- {-24.f,-24.f,-26.f,-30.f,-30.f,-35.f,-45.f,-55.f,-65.f,-75.f,-90.f}, /*16000*/
-
-}};
-
-static vp_attenblock _vp_peakatt_Zc={
- {{-14.f,-16.f,-18.f,-19.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f},/*63*/
- {-14.f,-16.f,-18.f,-19.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f},/*88*/
- {-14.f,-16.f,-18.f,-19.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f},/*125*/
- {-14.f,-16.f,-18.f,-19.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f},/*125*/
- {-14.f,-16.f,-18.f,-19.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f},/*125*/
- {-14.f,-16.f,-18.f,-19.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f,-24.f},/*125*/
- {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-24.f,-24.f},/*500*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*700*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*1000*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*1400*/
- {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*2000*/
- {-10.f,-10.f,-10.f,-12.f,-16.f,-16.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*2400*/
- {-10.f,-10.f,-10.f,-12.f,-16.f,-16.f,-16.f,-20.f,-22.f,-24.f,-24.f},/*4000*/
- {-10.f,-10.f,-10.f,-12.f,-12.f,-14.f,-16.f,-18.f,-22.f,-24.f,-24.f},/*5600*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-14.f,-16.f,-18.f,-22.f,-24.f,-24.f},/*8000*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-14.f,-16.f,-18.f,-22.f,-24.f,-24.f},/*11500*/
- {-10.f,-10.f,-10.f,-10.f,-10.f,-12.f,-16.f,-18.f,-22.f,-24.f,-24.f},/*16000*/
-}};
-
-static vorbis_info_psy _psy_set_Zc0={
- ATH_Bark_dB_lineaggressive,
-
- -100.,
- -110.,
-
- /* tonemaskp */
- 3.f, -24.f,&_vp_tonemask_consbass_Zc,
-
- /* peakattp */
- 1, &_vp_peakatt_Zc,
-
- /*noisemaskp */
- 1,-24.f, /* suppress any noise curve over maxspec+n */
- 1.f, 1.f, /* low/high window */
- 2, 2, -1,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-20,-20,-20,-20,-20,-20,-10, -5, 3, 3, 4, 4, 4, 4, 4, 4, 8},
- {1.f,1.f,1.f,1.f,1.f,1.f,.8f,.7f,.7f,.7f,.7f,.7f,.8f,.88f,.89f,.9f,.9f},
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,
- _psy_passZc0
-};
-
-static vorbis_info_psy _psy_set_ZcT={
- ATH_Bark_dB_lineaggressive,
-
- -100.f,
- -110.f,
-
- /* tonemask */
- 3.f,-20.f,&_vp_tonemask_consbass_Zc,
- /* peakattp */
- 1, &_vp_peakatt_Zc,
-
- /*noisemaskp */
- 1, -24.f, /* suppress any noise curve over maxspec+n */
- .5f,.5f, /* low/high window */
- 10,10,100,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-20,-20,-20,-20,-20,-20,-20, -6, 3, 3, 4, 5, 5, 5, 5, 6, 10},
- {1.f,1.f,1.f,1.f,1.f,1.f,.8f,.7f,.7f,.7f,.7f,.7f,.8f,.88f,.89f,.9f,.9f},
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_passZc
-};
-
-static vorbis_info_psy _psy_set_Zc={
- ATH_Bark_dB_lineaggressive,
-
- -100.f,
- -110.f,
-
- /* tonemask */
- -3.f,-20.f,&_vp_tonemask_Zc,
- /* peakattp */
- 1, &_vp_peakatt_Zc,
-
- /*noisemaskp */
- 1, -24.f, /* suppress any noise curve over maxspec+n */
- .5f,.5f, /* low/high window */
- 10,10,100,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- {-20,-20,-20,-20,-20,-20,-10, 0, 3, 3, 4, 5, 5, 5, 5, 6, 10},
- {1.f,1.f,1.f,1.f,1.f,1.f,.8f,.7f,.7f,.7f,.7f,.8f,.85f,.88f,.89f,.9f,.9f},
-
- 95.f, /* even decade + 5 is important; saves an rint() later in a
- tight loop) */
- 1,_psy_passZc
-};
-
-/* with GNUisms, this could be short and readable. Oh well */
-static vorbis_info_time0 _time_set0Zc={0};
-/*static vorbis_info_floor0 _floor_set0Zc={9, 44100, 64, 10,130, 2, {0,1},
- 0.246f, .387f};*/
-/*static vorbis_info_floor0 _floor_set1Zc={30, 44100, 256, 12,150, 2, {2,3},
- .082f, .126f};*/
-
-static vorbis_info_floor1 _floor_set0Zc={3,
- {0,1,2},
-
- {1,3,3},
- {0,2,2},
- {-1,0,1},
- {{2},{-1,3,4,5},{-1,6,7,8}},
-
- 4,
-
- {0,128,
-
- 7,
-
- 2,1,4,
- 23,13,45},
-
- 60,30,500,
- 999,999,0,18.,
- 8,70,
- 90};
-
-static vorbis_info_floor1 _floor_set1Zc={10,
- {0,1,2,2,2,2,2, 3,3,3},
-
- {3,4,3,3},
- {1,1,2,2},
- {9,10,11,12},
- {{13,14},
- {15,16},
- {-1,17,18,19},
- {-1,20,21,22},
- },
-
- 4,
- {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,
- 720};
-
-static vorbis_info_residue0 _residue_set0Zc={0,180,12,10,23,
- {0,1,1,1,1,1,1,1,1,7},
- {25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,34,35},
- {9999,
- 9999,
- 9999,
- 9999,
- 2,9999,
- 9999,
- 9999,
- 9999,
- 9999},
- {.5,
- 1.5,
- 2.5f,
- 7.5,
- 1.5f,
- 1.5,
- 2.5,
- 7.5,
- 22.5f},
- {0},
- {99,
- 4,
- 4,
- 4,
- 99,99,
- 99,
- 99,
- 99},
- {3}};
-
-static vorbis_info_residue0 _residue_set1Zc={0,1408, 32,10,24,
- {0,1,1,1,1,1,1,1,1,7},
- {25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,34,35},
- {9999,
- 9999,
- 9999,
- 9999,
- 3,9999,
- 9999,
- 9999,
- 9999,
- 9999},
- {.5,
- 1.5,
- 2.5f,
- 7.5,
- 1.5f,
- 1.5,
- 2.5,
- 7.5,
- 22.5f},
- {0},
- {99,
- 18,
- 18,
- 18,
- 99,99,
- 99,
- 99,
- 99},
- {3}};
-
-static vorbis_info_mapping0 _mapping_set0Zc={1, {0,0}, {0}, {0}, {0}, {0,0},
- 1,{0},{1}};
-static vorbis_info_mapping0 _mapping_set1Zc={1, {0,0}, {0}, {1}, {1}, {1,2},
- 1,{0},{1}};
-static vorbis_info_mode _mode_set0Zc={0,0,0,0};
-static vorbis_info_mode _mode_set1Zc={1,0,0,1};
-
-/* CD quality stereo, no channel coupling */
-codec_setup_info info_Zc={
-
- /* smallblock, largeblock */
- {256, 2048},
- /* modes,maps,times,floors,residues,books,psys */
- 2, 2, 1, 2, 2, 36, 3,
- /* modes */
- {&_mode_set0Zc,&_mode_set1Zc},
- /* maps */
- {0,0},{&_mapping_set0Zc,&_mapping_set1Zc},
- /* times */
- {0,0},{&_time_set0Zc},
- /* floors */
- {1,1},{&_floor_set0Zc,&_floor_set1Zc},
- /* residue */
- {2,2},{&_residue_set0Zc,&_residue_set1Zc},
- /* books */
-
- {
- &_huff_book_line0_class1,
- &_huff_book_line0_class2, /* 1 */
-
- &_huff_book_line0_0sub0, /* 2 */
- &_huff_book_line0_1sub1, /* 3 */
- &_huff_book_line0_1sub2,
- &_huff_book_line0_1sub3, /* 5 */
- &_huff_book_line0_2sub1,
- &_huff_book_line0_2sub2, /* 7 */
- &_huff_book_line0_2sub3,
-
- &_huff_book_line1_class0,
- &_huff_book_line1_class1, /* 10 */
- &_huff_book_line1_class2,
- &_huff_book_line1_class3, /* 12 */
-
- &_huff_book_line1_0sub0,
- &_huff_book_line1_0sub1, /* 14 */
- &_huff_book_line1_1sub0,
- &_huff_book_line1_1sub1,
- &_huff_book_line1_2sub1,
- &_huff_book_line1_2sub2, /* 18 */
- &_huff_book_line1_2sub3,
- &_huff_book_line1_3sub1,
- &_huff_book_line1_3sub2,
- &_huff_book_line1_3sub3, /* 22 */
-
- &_huff_book_res0_128_128aux,
- &_huff_book_res0_128_1024aux,
-
- &_vq_book_res0_128_1024_1,
- &_vq_book_res0_128_1024_2,
- &_vq_book_res0_128_1024_3,
- &_vq_book_res0_128_1024_4,
- &_vq_book_res0_128_1024_5,
- &_vq_book_res0_128_1024_6,
- &_vq_book_res0_128_1024_7,
- &_vq_book_res0_128_1024_8,
- &_vq_book_res0_128_1024_9,
- &_vq_book_res0_128_1024_9a,
- &_vq_book_res0_128_1024_9b,
-
- },
- /* psy */
- {&_psy_set_Zc0,&_psy_set_ZcT,&_psy_set_Zc},
- &_psy_set_ZcG
-};
-
-#endif
diff --git a/lib/modes/modes.h b/lib/modes/modes.h
deleted file mode 100644
index 0e133132..00000000
--- a/lib/modes/modes.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: predefined encoding modes
- last mod: $Id: modes.h,v 1.9 2001/08/13 01:37:14 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_MODES_H_
-#define _V_MODES_H_
-
-#include "masking.h"
-#include "modes/mode_44c_Z.h"
-
-#endif
diff --git a/lib/os.h b/lib/os.h
deleted file mode 100644
index f93e579a..00000000
--- a/lib/os.h
+++ /dev/null
@@ -1,163 +0,0 @@
-#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-2001 *
- * by the XIPHOPHORUS Company http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: #ifdef jail to whip a few platforms into the UNIX ideal.
- last mod: $Id: os.h,v 1.27 2001/08/13 01:36:57 xiphmont Exp $
-
- ********************************************************************/
-
-#include <math.h>
-#include <ogg/os_types.h>
-
-#ifndef _V_IFDEFJAIL_H_
-# define _V_IFDEFJAIL_H_
-
-# ifdef __GNUC__
-# define STIN static inline
-# elif _WIN32
-# define STIN static __inline
-#else
-# define STIN static
-#endif
-
-#ifndef M_PI
-# define M_PI (3.1415926536f)
-#endif
-
-#ifdef _WIN32
-# 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
-
-#ifdef HAVE_SQRTF
-# define sqrt sqrtf
-#endif
-#ifdef HAVE_LOGF
-# define log logf
-#endif
-#ifdef HAVE_EXPF
-# define exp expf
-#endif
-#ifdef HAVE_ACOSF
-# define acos acosf
-#endif
-#ifdef HAVE_ATANF
-# define atan atanf
-#endif
-#ifdef HAVE_FREXPF
-# define frexp frexpf
-#endif
-#ifdef HAVE_RINTF
-# define rint rintf
-#endif
-
-#ifndef FAST_HYPOT
-# define FAST_HYPOT hypot
-#endif
-
-#endif
-
-#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
-
-#if defined(__i386__) && defined(__GNUC__) && !defined(__BEOS__)
-# 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"
- "orw $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
-
-
-#if defined(_WIN32) && !defined(__GNUC__)
-# 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){
-}
-
-static __inline void vorbis_fpu_restore(vorbis_fpu_control fpu){
-}
-
-#endif
-
-
-#ifndef VORBIS_FPU_CONTROL
-
-typedef int vorbis_fpu_control;
-
-static int vorbis_ftoi(double f){
- return (int)(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
-
-#endif /* _OS_H */
diff --git a/lib/psy.c b/lib/psy.c
deleted file mode 100644
index eac3bd81..00000000
--- a/lib/psy.c
+++ /dev/null
@@ -1,1077 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: psychoacoustics not including preecho
- last mod: $Id: psy.c,v 1.50 2001/08/13 01:36:57 xiphmont Exp $
-
- ********************************************************************/
-
-#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
-
-/* Why Bark scale for encoding but not masking computation? Because
- masking has a strong harmonic dependancy */
-
-vorbis_look_psy_global *_vp_global_look(vorbis_info *vi){
- int i,j;
- 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(vorbis_look_psy_global));
-
- int shiftoc=rint(log(gi->eighth_octave_lines*8)/log(2))-1;
- look->decaylines=toOC(96000.f)*(1<<(shiftoc+1))+.5f; /* max sample
- rate of
- 192000kHz
- for now */
- look->decay=_ogg_calloc(vi->channels,sizeof(float *));
- for(i=0;i<vi->channels;i++){
- look->decay[i]=_ogg_calloc(look->decaylines,sizeof(float));
- for(j=0;j<look->decaylines;j++)
- look->decay[i][j]=-9999.;
- }
- look->channels=vi->channels;
-
- look->ampmax=-9999.;
- look->gi=gi;
- return(look);
-}
-
-void _vp_global_free(vorbis_look_psy_global *look){
- int i;
- if(look->decay){
- for(i=0;i<look->channels;i++)
- _ogg_free(look->decay[i]);
- _ogg_free(look->decay);
- }
- memset(look,0,sizeof(vorbis_look_psy_global));
- _ogg_free(look);
-}
-
-void _vi_psy_free(vorbis_info_psy *i){
- if(i){
- memset(i,0,sizeof(vorbis_info_psy));
- _ogg_free(i);
- }
-}
-
-vorbis_info_psy *_vi_psy_copy(vorbis_info_psy *i){
- vorbis_info_psy *ret=_ogg_malloc(sizeof(vorbis_info_psy));
- memcpy(ret,i,sizeof(vorbis_info_psy));
- return(ret);
-}
-
-/* Set up decibel threshold slopes on a Bark frequency scale */
-/* ATH is the only bit left on a Bark scale. No reason to change it
- right now */
-static void set_curve(float *ref,float *c,int n, float crate){
- int i,j=0;
-
- for(i=0;i<MAX_BARK-1;i++){
- int endpos=rint(fromBARK(i+1)*2*n/crate);
- float base=ref[i];
- if(j<endpos){
- float delta=(ref[i+1]-base)/(endpos-j);
- for(;j<endpos && j<n;j++){
- c[j]=base;
- base+=delta;
- }
- }
- }
-}
-
-static void min_curve(float *c,
- float *c2){
- int i;
- for(i=0;i<EHMER_MAX;i++)if(c2[i]<c[i])c[i]=c2[i];
-}
-static void max_curve(float *c,
- float *c2){
- int i;
- for(i=0;i<EHMER_MAX;i++)if(c2[i]>c[i])c[i]=c2[i];
-}
-
-static void attenuate_curve(float *c,float att){
- int i;
- for(i=0;i<EHMER_MAX;i++)
- c[i]+=att;
-}
-
-static void interp_curve(float *c,float *c1,float *c2,float del){
- int i;
- for(i=0;i<EHMER_MAX;i++)
- c[i]=c2[i]*del+c1[i]*(1.f-del);
-}
-
-extern int analysis_noisy;
-static void setup_curve(float **c,
- int band,
- float *curveatt_dB){
- int i,j;
- float ath[EHMER_MAX];
- float tempc[P_LEVELS][EHMER_MAX];
- float *ATH=ATH_Bark_dB_lspconservative; /* just for limiting here */
-
- memcpy(c[0]+2,c[4]+2,sizeof(float)*EHMER_MAX);
- memcpy(c[2]+2,c[4]+2,sizeof(float)*EHMER_MAX);
-
- /* we add back in the ATH to avoid low level curves falling off to
- -infinity and unneccessarily cutting off high level curves in the
- curve limiting (last step). But again, remember... a half-band's
- settings must be valid over the whole band, and it's better to
- mask too little than too much, so be pessimal. */
-
- for(i=0;i<EHMER_MAX;i++){
- float oc_min=band*.5+(i-EHMER_OFFSET)*.125;
- float oc_max=band*.5+(i-EHMER_OFFSET+1)*.125;
- float bark=toBARK(fromOC(oc_min));
- int ibark=floor(bark);
- float del=bark-ibark;
- float ath_min,ath_max;
-
- if(ibark<26)
- ath_min=ATH[ibark]*(1.f-del)+ATH[ibark+1]*del;
- else
- ath_min=ATH[25];
-
- bark=toBARK(fromOC(oc_max));
- ibark=floor(bark);
- del=bark-ibark;
-
- if(ibark<26)
- ath_max=ATH[ibark]*(1.f-del)+ATH[ibark+1]*del;
- else
- ath_max=ATH[25];
-
- ath[i]=min(ath_min,ath_max);
- }
-
- /* The c array is comes in as dB curves at 20 40 60 80 100 dB.
- interpolate intermediate dB curves */
- for(i=1;i<P_LEVELS;i+=2){
- interp_curve(c[i]+2,c[i-1]+2,c[i+1]+2,.5);
- }
-
- /* normalize curves so the driving amplitude is 0dB */
- /* make temp curves with the ATH overlayed */
- for(i=0;i<P_LEVELS;i++){
- attenuate_curve(c[i]+2,curveatt_dB[i]);
- memcpy(tempc[i],ath,EHMER_MAX*sizeof(float));
- attenuate_curve(tempc[i],-i*10.f);
- max_curve(tempc[i],c[i]+2);
- }
-
- /* 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(tempc[j],tempc[j-1]);
- min_curve(c[j]+2,tempc[j]);
- }
-
- /* add fenceposts */
- for(j=0;j<P_LEVELS;j++){
-
- for(i=0;i<EHMER_OFFSET;i++)
- if(c[j][i+2]>-200.f)break;
- c[j][0]=i;
-
- for(i=EHMER_MAX-1;i>EHMER_OFFSET+1;i--)
- if(c[j][i+2]>-200.f)
- break;
- c[j][1]=i;
-
- }
-}
-
-void _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,
- vorbis_info_psy_global *gi,int n,long rate){
- long i,j,k,lo=0,hi=0;
- long maxoc;
- memset(p,0,sizeof(vorbis_look_psy));
-
-
- p->eighth_octave_lines=gi->eighth_octave_lines;
- p->shiftoc=rint(log(gi->eighth_octave_lines*8)/log(2))-1;
-
- p->firstoc=toOC(.25f*rate/n)*(1<<(p->shiftoc+1))-gi->eighth_octave_lines;
- maxoc=toOC((n*.5f-.25f)*rate/n)*(1<<(p->shiftoc+1))+.5f;
- p->total_octave_lines=maxoc-p->firstoc+1;
-
- if(vi->ath)
- p->ath=_ogg_malloc(n*sizeof(float));
- p->octave=_ogg_malloc(n*sizeof(long));
- p->bark=_ogg_malloc(n*sizeof(unsigned long));
- p->vi=vi;
- p->n=n;
- p->rate=rate;
-
- /* set up the lookups for a given blocksize and sample rate */
- if(vi->ath)
- set_curve(vi->ath, p->ath,n,rate);
- 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]=(hi<<16)+lo;
-
- }
-
- for(i=0;i<n;i++)
- p->octave[i]=toOC((i*.5f+.25f)*rate/n)*(1<<(p->shiftoc+1))+.5f;
-
- p->tonecurves=_ogg_malloc(P_BANDS*sizeof(float **));
- p->noisethresh=_ogg_malloc(n*sizeof(float));
- p->noiseoffset=_ogg_malloc(n*sizeof(float));
- for(i=0;i<P_BANDS;i++)
- p->tonecurves[i]=_ogg_malloc(P_LEVELS*sizeof(float *));
-
- for(i=0;i<P_BANDS;i++)
- for(j=0;j<P_LEVELS;j++)
- p->tonecurves[i][j]=_ogg_malloc((EHMER_MAX+2)*sizeof(float));
-
-
- /* OK, yeah, this was a silly way to do it */
- memcpy(p->tonecurves[0][4]+2,tone_125_40dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[0][6]+2,tone_125_60dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[0][8]+2,tone_125_80dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[0][10]+2,tone_125_100dB_SL,sizeof(float)*EHMER_MAX);
-
- memcpy(p->tonecurves[2][4]+2,tone_125_40dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[2][6]+2,tone_125_60dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[2][8]+2,tone_125_80dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[2][10]+2,tone_125_100dB_SL,sizeof(float)*EHMER_MAX);
-
- memcpy(p->tonecurves[4][4]+2,tone_250_40dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[4][6]+2,tone_250_60dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[4][8]+2,tone_250_80dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[4][10]+2,tone_250_100dB_SL,sizeof(float)*EHMER_MAX);
-
- memcpy(p->tonecurves[6][4]+2,tone_500_40dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[6][6]+2,tone_500_60dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[6][8]+2,tone_500_80dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[6][10]+2,tone_500_100dB_SL,sizeof(float)*EHMER_MAX);
-
- memcpy(p->tonecurves[8][4]+2,tone_1000_40dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[8][6]+2,tone_1000_60dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[8][8]+2,tone_1000_80dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[8][10]+2,tone_1000_100dB_SL,sizeof(float)*EHMER_MAX);
-
- memcpy(p->tonecurves[10][4]+2,tone_2000_40dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[10][6]+2,tone_2000_60dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[10][8]+2,tone_2000_80dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[10][10]+2,tone_2000_100dB_SL,sizeof(float)*EHMER_MAX);
-
- memcpy(p->tonecurves[12][4]+2,tone_4000_40dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[12][6]+2,tone_4000_60dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[12][8]+2,tone_4000_80dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[12][10]+2,tone_4000_100dB_SL,sizeof(float)*EHMER_MAX);
-
- memcpy(p->tonecurves[14][4]+2,tone_8000_40dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[14][6]+2,tone_8000_60dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[14][8]+2,tone_8000_80dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[14][10]+2,tone_8000_100dB_SL,sizeof(float)*EHMER_MAX);
-
- memcpy(p->tonecurves[16][4]+2,tone_8000_40dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[16][6]+2,tone_8000_60dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[16][8]+2,tone_8000_80dB_SL,sizeof(float)*EHMER_MAX);
- memcpy(p->tonecurves[16][10]+2,tone_8000_100dB_SL,sizeof(float)*EHMER_MAX);
-
- /* value limit the tonal masking curves; the peakatt not only
- optionally specifies maximum dynamic depth, but also [always]
- limits the masking curves to a minimum depth */
- for(i=0;i<P_BANDS;i+=2)
- for(j=4;j<P_LEVELS;j+=2)
- for(k=2;k<EHMER_MAX+2;k++)
- p->tonecurves[i][j][k]+=vi->tone_masteratt;
-
- /* interpolate curves between */
- for(i=1;i<P_BANDS;i+=2)
- for(j=4;j<P_LEVELS;j+=2){
- memcpy(p->tonecurves[i][j]+2,p->tonecurves[i-1][j]+2,EHMER_MAX*sizeof(float));
- /*interp_curve(p->tonecurves[i][j],
- p->tonecurves[i-1][j],
- p->tonecurves[i+1][j],.5);*/
- min_curve(p->tonecurves[i][j]+2,p->tonecurves[i+1][j]+2);
- }
-
- /* set up the final curves */
- for(i=0;i<P_BANDS;i++)
- setup_curve(p->tonecurves[i],i,vi->toneatt->block[i]);
-
- if(vi->curvelimitp){
- /* value limit the tonal masking curves; the peakatt not only
- optionally specifies maximum dynamic depth, but also [always]
- limits the masking curves to a minimum depth */
- for(i=0;i<P_BANDS;i++)
- for(j=0;j<P_LEVELS;j++){
- for(k=2;k<EHMER_OFFSET+2+vi->curvelimitp;k++)
- if(p->tonecurves[i][j][k]> vi->peakatt->block[i][j])
- p->tonecurves[i][j][k]= vi->peakatt->block[i][j];
- else
- break;
- }
- }
-
- if(vi->peakattp) /* we limit depth only optionally */
- for(i=0;i<P_BANDS;i++)
- for(j=0;j<P_LEVELS;j++)
- if(p->tonecurves[i][j][EHMER_OFFSET+2]< vi->peakatt->block[i][j])
- p->tonecurves[i][j][EHMER_OFFSET+2]= vi->peakatt->block[i][j];
-
- /* but guarding is mandatory */
- for(i=0;i<P_BANDS;i++)
- for(j=0;j<P_LEVELS;j++)
- if(p->tonecurves[i][j][EHMER_OFFSET+2]< vi->tone_maxatt)
- p->tonecurves[i][j][EHMER_OFFSET+2]= vi->tone_maxatt;
-
- /* set up rolling noise median */
- 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;
-
- p->noisethresh[i]=((p->vi->noisethresh[inthalfoc]*(1.-del) +
- p->vi->noisethresh[inthalfoc+1]*del))*2.f-1.f;
- p->noiseoffset[i]=
- p->vi->noiseoff[inthalfoc]*(1.-del) +
- p->vi->noiseoff[inthalfoc+1]*del;
- }
-
- analysis_noisy=1;
- _analysis_output("noiseoff",0,p->noiseoffset,n,1,0);
- _analysis_output("noisethresh",0,p->noisethresh,n,1,0);
-
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_63Hz",i,p->tonecurves[0][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_88Hz",i,p->tonecurves[1][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_125Hz",i,p->tonecurves[2][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_170Hz",i,p->tonecurves[3][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_250Hz",i,p->tonecurves[4][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_350Hz",i,p->tonecurves[5][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_500Hz",i,p->tonecurves[6][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_700Hz",i,p->tonecurves[7][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_1kHz",i,p->tonecurves[8][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_1.4Hz",i,p->tonecurves[9][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_2kHz",i,p->tonecurves[10][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_2.4kHz",i,p->tonecurves[11][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_4kHz",i,p->tonecurves[12][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_5.6kHz",i,p->tonecurves[13][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_8kHz",i,p->tonecurves[14][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_11.5kHz",i,p->tonecurves[15][i]+2,EHMER_MAX,0,0);
- for(i=0;i<P_LEVELS;i++)
- _analysis_output("curve_16kHz",i,p->tonecurves[16][i]+2,EHMER_MAX,0,0);
- analysis_noisy=1;
-
-}
-
-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);
- _ogg_free(p->noiseoffset);
- }
- memset(p,0,sizeof(vorbis_look_psy));
- }
-}
-
-/* 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)*.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]-16)*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(long));
- float *ampstack=alloca(n*sizeof(float));
- 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 */
-static void max_seeds(vorbis_look_psy *p,
- vorbis_look_psy_global *g,
- int channel,
- 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;
- while(pos+1<=end){
- pos++;
- if((seed[pos]>NEGINF && seed[pos]<minV) || minV==NEGINF)
- minV=seed[pos];
- }
-
- /* seed scale is log. Floor is linear. Map back to it */
- 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_pointmp(int n,const long *b,
- const float *f,
- float *noise,
- const int fixed){
- long i,hi=0,lo=0,hif=0,lof=0;
- double xa=0,xb=0;
- double ya=0,yb=0;
- double x2a=0,x2b=0;
- double y2a=0,y2b=0;
- double xya=0,xyb=0;
- double na=0,nb=0;
-
- for(i=0;i<n;i++){
- if(hi<n){
- /* find new lo/hi */
- int bi=b[i]>>16;
- for(;hi<bi;hi++){
- double bin=(f[hi]<-140.f?0.:f[hi]+140.);
- double nn= bin*bin;
- na += nn;
- xa += hi*nn;
- ya += bin*nn;
- x2a += hi*hi*nn;
- y2a += bin*bin*nn;
- xya += hi*bin*nn;
- }
- bi=b[i]&0xffff;
- for(;lo<bi;lo++){
- double bin=(f[lo]<-140.f?0.:f[lo]+140.);
- double nn= bin*bin;
- na -= nn;
- xa -= lo*nn;
- ya -= bin*nn;
- x2a -= lo*lo*nn;
- y2a -= bin*bin*nn;
- xya -= lo*bin*nn;
- }
- }
-
- if(hif<n && fixed>0){
- int bi=i+fixed/2;
- if(bi>n)bi=n;
- for(;hif<bi;hif++){
- double bin=(f[hif]<-140.f?0.:f[hif]+140.);
- double nn= bin*bin;
- nb += nn;
- xb += hif*nn;
- yb += bin*nn;
- x2b += hif*hif*nn;
- y2b += bin*bin*nn;
- xyb += hif*bin*nn;
- }
- bi=i-(fixed+1)/2;
- if(bi<0)bi=0;
- for(;lof<bi;lof++){
- double bin=(f[lof]<-140.f?0.:f[lof]+140.);
- double nn= bin*bin;
- nb -= nn;
- xb -= lof*nn;
- yb -= bin*nn;
- x2b -= lof*lof*nn;
- y2b -= bin*bin*nn;
- xyb -= lof*bin*nn;
- }
- }
-
- {
- double denom=1./(na*x2a-xa*xa);
- double a=(ya*x2a-xya*xa)*denom;
- double b=(na*xya-xa*ya)*denom;
- double va=a+b*i;
-
- if(fixed>0){
- double denomf=1./(nb*x2b-xb*xb);
- double af=(yb*x2b-xyb*xb)*denomf;
- double bf=(nb*xyb-xb*yb)*denomf;
- double vb=af+bf*i;
- if(va>vb)va=vb;
- }
-
- noise[i]=va-140.f;
- }
- }
-}
-
-static void bark_noise_hybridmp(int n,const long *b,
- const float *f,
- float *noise,
- const int fixed){
- long i,hi=0,lo=0,hif=0,lof=0;
- double xa=0,xb=0;
- double ya=0,yb=0;
- double x2a=0,x2b=0;
- double y2a=0,y2b=0;
- double xya=0,xyb=0;
- double na=0,nb=0;
- int first=-1,firstf=-1;
- int last=0,lastf=0;
- int rna=0,rnb=0;
-
- for(i=0;i<n;i++){
- if(hi<n){
- /* find new lo/hi */
- int bi=b[i]>>16;
- for(;hi<bi;hi++){
- double bin=f[hi];
- if(bin>0.f){
- double nn= bin*bin;
- nn*=nn;
- na += nn;
- xa += hi*nn;
- ya += bin*nn;
- x2a += hi*hi*nn;
- y2a += bin*bin*nn;
- xya += hi*bin*nn;
- last=hi;
- rna++;
- if(first==-1)first=hi;
- }
- }
- bi=b[i]&0xffff;
- for(;lo<bi;lo++){
- double bin=f[lo];
- if(bin>0.f){
- double nn= bin*bin;
- nn*=nn;
- na -= nn;
- xa -= lo*nn;
- ya -= bin*nn;
- x2a -= lo*lo*nn;
- y2a -= bin*bin*nn;
- xya -= lo*bin*nn;
- rna--;
- }
- if(first<lo)first=-1;
- if(last<lo){
- first=-1;
- }else{
- for(first=lo;first<hi;first++)
- if(f[first]>0.f)break;
- if(first==hi)first=-1;
- }
- }
- }
-
- if(hif<n && fixed>0){
- int bi=i+fixed/2;
- if(bi>n)bi=n;
-
- for(;hif<bi;hif++){
- double bin=f[hif];
- if(bin>0.f){
- double nn= bin*bin;
- nn*=nn;
- nb += nn;
- xb += hif*nn;
- yb += bin*nn;
- x2b += hif*hif*nn;
- y2b += bin*bin*nn;
- xyb += hif*bin*nn;
- lastf=hif;
- rnb++;
- if(firstf==-1)firstf=hif;
- }
- }
- bi=i-(fixed+1)/2;
- if(bi<0)bi=0;
- for(;lof<bi;lof++){
- double bin=f[lof];
- if(bin>0.f){
- double nn= bin*bin;
- nn*=nn;
- nb -= nn;
- xb -= lof*nn;
- yb -= bin*nn;
- x2b -= lof*lof*nn;
- y2b -= bin*bin*nn;
- xyb -= lof*bin*nn;
- rnb--;
- }
- if(firstf<lof)firstf=-1;
- if(lastf<lof){
- firstf=-1;
- }else{
- for(firstf=lof;firstf<hif;firstf++)
- if(f[firstf]>0.f)break;
- if(firstf==hif)firstf=-1;
- }
- }
- }
-
- {
- double va;
-
- if(rna>2 && (last-first)*3/2>hi-lo){
- double denom=1./(na*x2a-xa*xa);
- double a=(ya*x2a-xya*xa)*denom;
- double b=(na*xya-xa*ya)*denom;
- va=a+b*i;
- }else{
- va=0.f;
- if(na>.5)va=ya/na;
- }
- if(va<0.)va=0.;
-
- if(fixed>0){
- double vb;
-
- if(rnb>2 && (lastf-firstf)*3/2>hif-lof){
- double denomf=1./(nb*x2b-xb*xb);
- double af=(yb*x2b-xyb*xb)*denomf;
- double bf=(nb*xyb-xb*yb)*denomf;
- vb=af+bf*i;
- }else{
- vb=0.f;
- if(nb>.5)vb=yb/nb;
- }
-
- if(vb<0.)vb=0.;
- if(va>vb && vb>0.)va=vb;
-
- }
-
- noise[i]=va;
- }
- }
-}
-
-
-void _vp_remove_floor(vorbis_look_psy *p,
- vorbis_look_psy_global *g,
- float *logmdct,
- float *mdct,
- float *codedflr,
- float *residue,
- float local_specmax){
- int i,n=p->n;
-
- for(i=0;i<n;i++)
- if(mdct[i]!=0.f)
- residue[i]=mdct[i]/codedflr[i];
- else
- residue[i]=0.f;
-}
-
-
-void _vp_compute_mask(vorbis_look_psy *p,
- vorbis_look_psy_global *g,
- int channel,
- float *logfft,
- float *logmdct,
- float *logmask,
- float global_specmax,
- float local_specmax,
- int lastsize){
- int i,n=p->n;
- static int seq=0;
-
- float *seed=alloca(sizeof(float)*p->total_octave_lines);
- for(i=0;i<p->total_octave_lines;i++)seed[i]=NEGINF;
-
- /* noise masking */
- if(p->vi->noisemaskp){
- float *work=alloca(n*sizeof(float));
-
- bark_noise_pointmp(n,p->bark,logmdct,logmask,
- -1);
-
- for(i=0;i<n;i++)work[i]=logmdct[i]-logmask[i];
-
- _analysis_output("medianmdct",seq,work,n,1,0);
- bark_noise_hybridmp(n,p->bark,work,logmask,
- p->vi->noisewindowfixed);
-
- for(i=0;i<n;i++)work[i]=logmdct[i]-work[i];
-
- /* work[i] holds the median line (.5), logmask holds the upper
- envelope line (1.) */
-
- _analysis_output("median",seq,work,n,1,0);
- _analysis_output("envelope",seq,logmask,n,1,0);
-
- for(i=0;i<n;i++)logmask[i]=
- work[i]+
- p->noisethresh[i]*logmask[i]+p->noiseoffset[i];
-
- _analysis_output("noise",seq,logmask,n,1,0);
-
- }else{
- for(i=0;i<n;i++)logmask[i]=NEGINF;
- }
-
- /* set the ATH (floating below localmax, not global max by a
- specified att) */
- if(p->vi->ath){
- float att=local_specmax+p->vi->ath_adjatt;
- if(att<p->vi->ath_maxatt)att=p->vi->ath_maxatt;
-
- for(i=0;i<n;i++){
- float av=p->ath[i]+att;
- if(av>logmask[i])logmask[i]=av;
- }
- }
-
- /* tone/peak masking */
- seed_loop(p,(const float ***)p->tonecurves,logfft,logmask,seed,global_specmax);
- max_seeds(p,g,channel,seed,logmask);
-
- /* suppress any curve > p->vi->noisemaxsupp */
- if(p->vi->noisemaxsupp<0.f)
- for(i=0;i<n;i++)
- if(logmask[i]>p->vi->noisemaxsupp)
- logmask[i]=p->vi->noisemaxsupp;
-
-
- /* doing this here is clean, but we need to find a faster way to do
- it than to just tack it on */
-
- for(i=0;i<n;i++)if(logmdct[i]>=logmask[i])break;
- if(i==n)
- for(i=0;i<n;i++)logmask[i]=NEGINF;
- else
- for(i=0;i<n;i++)
- logfft[i]=max(logmdct[i],logfft[i]);
-
- seq++;
-
-}
-
-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 void couple_lossless(float A, float B, float *mag, float *ang){
- if(fabs(A)>fabs(B)){
- *mag=A; *ang=(A>0.f?A-B:B-A);
- }else{
- *mag=B; *ang=(B>0.f?A-B:B-A);
- }
-}
-
-static void couple_8phase(float A, float B, float *mag, float *ang){
- if(fabs(A)>fabs(B)){
- *mag=A; *ang=(A>0?A-B:B-A);
- }else{
- *mag=B; *ang=(B>0?A-B:B-A);
- }
-
- if(*mag!=0.f)
- switch((int)(rint(*ang / *mag))){
- case 0:
- *ang=0;
- break;
- case 2:case -2:
- *ang=-2*fabs(*mag);
- break;
- case 1:
- *ang= *mag;
- break;
- case -1:
- *ang= -*mag;
- break;
- }
-}
-
-static void couple_6phase(float A, float B, float *mag, float *ang){
- if(fabs(A)>fabs(B)){
- *mag=A; *ang=(A>0?A-B:B-A);
- }else{
- *mag=B; *ang=(B>0?A-B:B-A);
- }
-
- if(*mag!=0.f)
- switch((int)(rint(*ang / *mag))){
- case -2:case 2:
- *mag=0;
- /*fall*/
- case 0:
- *ang=0;
- break;
- case 1:
- *ang= *mag;
- break;
- case -1:
- *ang= -*mag;
- break;
- }
-}
-
-static void couple_point(float A, float B, float *mag, float *ang){
- if(fabs(A)>fabs(B)){
- *mag=A; *ang=(A>0?A-B:B-A);
- }else{
- *mag=B; *ang=(B>0?A-B:B-A);
- }
-
- if(*mag!=0.f)
- switch((int)(rint(*ang / *mag))){
- case -2:case 2:
- *mag=0;
- /* fall */
- case 0:case 1: case -1:
- *ang=0;
- break;
- }
-}
-
-void _vp_quantize_couple(vorbis_look_psy *p,
- vorbis_info_mapping0 *vi,
- float **pcm,
- float **sofar,
- float **quantized,
- int *nonzero,
- int passno){
-
- int i,j,k,n=p->n;
- vorbis_info_psy *info=p->vi;
-
- /* perform any requested channel coupling */
- for(i=0;i<vi->coupling_steps;i++){
- float granulem=info->couple_pass[passno].granulem;
- float igranulem=info->couple_pass[passno].igranulem;
-
- /* 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]]){
-
- float *pcmM=pcm[vi->coupling_mag[i]];
- float *pcmA=pcm[vi->coupling_ang[i]];
- float *sofarM=sofar[vi->coupling_mag[i]];
- float *sofarA=sofar[vi->coupling_ang[i]];
- float *qM=quantized[vi->coupling_mag[i]];
- float *qA=quantized[vi->coupling_ang[i]];
-
- nonzero[vi->coupling_mag[i]]=1;
- nonzero[vi->coupling_ang[i]]=1;
-
- for(j=0,k=0;j<n;k++){
- vp_couple *part=info->couple_pass[passno].couple_pass+k;
-
- for(;j<part->limit && j<p->n;j++){
- /* partition by partition; k is our by-location partition
- class counter */
-
- float Am=rint(pcmM[j]*igranulem)*granulem;
- float Bm=rint(pcmA[j]*igranulem)*granulem;
- float ang,mag,fmag=max(fabs(Am),fabs(Bm));
-
- if(fmag<part->amppost_point){
- couple_point(Am,Bm,&mag,&ang);
- }else{
- if(fmag<part->amppost_6phase){
- couple_6phase(Am,Bm,&mag,&ang);
- }else{
- if(fmag<part->amppost_8phase){
- couple_8phase(Am,Bm,&mag,&ang);
- }else{
- couple_lossless(Am,Bm,&mag,&ang);
- }
- }
- }
- fmag=rint(fmag);
- if(ang>fmag*1.9999f)ang=-fmag*2.f;
-
- qM[j]=mag-sofarM[j];
- qA[j]=ang-sofarA[j];
- }
- }
- }
- }
-}
diff --git a/lib/psy.h b/lib/psy.h
deleted file mode 100644
index 6c97deaa..00000000
--- a/lib/psy.h
+++ /dev/null
@@ -1,183 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: random psychoacoustics (not including preecho)
- last mod: $Id: psy.h,v 1.22 2001/08/13 01:36:57 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_PSY_H_
-#define _V_PSY_H_
-#include "smallft.h"
-
-#include "backends.h"
-
-#define BLOCKTYPE_IMPULSE 0
-#define BLOCKTYPE_PADDING 1
-#define BLOCKTYPE_TRANSITION 0
-#define BLOCKTYPE_LONG 1
-
-
-#ifndef EHMER_MAX
-#define EHMER_MAX 56
-#endif
-
-/* psychoacoustic setup ********************************************/
-#define MAX_BARK 27
-#define P_BANDS 17
-#define P_LEVELS 11
-
-typedef struct vp_couple{
- int limit; /* sample post */
-
- float amppost_8phase;
- float thresh_8phase;
-
- float amppost_6phase;
- float thresh_6phase;
-
- float amppost_point;
- float thresh_point;
-
-} vp_couple;
-
-typedef struct vp_couple_pass{
- float granulem;
- float igranulem;
-
- vp_couple couple_pass[8];
-} vp_couple_pass;
-
-typedef struct vp_attenblock{
- float block[P_BANDS][P_LEVELS];
-} vp_attenblock;
-
-typedef struct vorbis_info_psy{
- float *ath;
-
- float ath_adjatt;
- float ath_maxatt;
-
- /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
- /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */
- /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */
-
- float tone_masteratt;
- float tone_maxatt;
- vp_attenblock *toneatt;
-
- int peakattp;
- int curvelimitp;
- vp_attenblock *peakatt;
-
- int noisemaskp;
- float noisemaxsupp;
- float noisewindowlo;
- float noisewindowhi;
- int noisewindowlomin;
- int noisewindowhimin;
- int noisewindowfixed;
- float noiseoff[P_BANDS];
- float noisethresh[P_BANDS];
-
- float max_curve_dB;
-
- int coupling_passes;
- vp_couple_pass *couple_pass;
-
-} vorbis_info_psy;
-
-typedef struct{
- float decaydBpms;
- int eighth_octave_lines;
-
- /* for block long/short tuning; encode only */
- int envelopesa;
- float preecho_thresh[4];
- float postecho_thresh[4];
- float preecho_minenergy;
-
- float ampmax_att_per_sec;
-
- /* delay caching... how many samples to keep around prior to our
- current block to aid in analysis? */
- int delaycache;
-} vorbis_info_psy_global;
-
-typedef struct {
- float ampmax;
- float **decay;
- int decaylines;
- int channels;
-
- vorbis_info_psy_global *gi;
-} vorbis_look_psy_global;
-
-
-typedef struct {
- int n;
- struct vorbis_info_psy *vi;
-
- float ***tonecurves;
- float *noisethresh;
- float *noiseoffset;
-
- float *ath;
- long *octave; /* in n.ocshift format */
- unsigned long *bark;
-
- long firstoc;
- long shiftoc;
- int eighth_octave_lines; /* power of two, please */
- int total_octave_lines;
- long rate; /* cache it */
-} 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_remove_floor(vorbis_look_psy *p,
- vorbis_look_psy_global *g,
- float *logmdct,
- float *mdct,
- float *codedflr,
- float *residue,
- float local_specmax);
-
-extern void _vp_compute_mask(vorbis_look_psy *p,
- vorbis_look_psy_global *g,
- int channel,
- float *fft,
- float *mdct,
- float *mask,
- float global_specmax,
- float local_specmax,
- int lastsize);
-
-extern void _vp_quantize_couple(vorbis_look_psy *p,
- vorbis_info_mapping0 *vi,
- float **pcm,
- float **sofar,
- float **quantized,
- int *nonzero,
- int passno);
-
-extern float _vp_ampmax_decay(float amp,vorbis_dsp_state *vd);
-
-#endif
-
-
diff --git a/lib/psytune.c b/lib/psytune.c
deleted file mode 100644
index 4f2e59c9..00000000
--- a/lib/psytune.c
+++ /dev/null
@@ -1,520 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: simple utility that runs audio through the psychoacoustics
- without encoding
- last mod: $Id: psytune.c,v 1.16 2001/08/13 01:36:57 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-
-#include "vorbis/codec.h"
-#include "codec_internal.h"
-#include "os.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(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;
-}
diff --git a/lib/registry.c b/lib/registry.c
deleted file mode 100644
index b8a5d511..00000000
--- a/lib/registry.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: registry for time, floor, res backends and channel mappings
- last mod: $Id: registry.c,v 1.9 2001/08/13 01:36:57 xiphmont Exp $
-
- ********************************************************************/
-
-#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 vorbis_func_time time0_exportbundle;
-extern vorbis_func_floor floor0_exportbundle;
-extern vorbis_func_floor floor1_exportbundle;
-extern vorbis_func_residue residue0_exportbundle;
-extern vorbis_func_residue residue1_exportbundle;
-extern vorbis_func_residue residue2_exportbundle;
-extern vorbis_func_mapping mapping0_exportbundle;
-
-vorbis_func_time *_time_P[]={
- &time0_exportbundle,
-};
-
-vorbis_func_floor *_floor_P[]={
- &floor0_exportbundle,
- &floor1_exportbundle,
-};
-
-vorbis_func_residue *_residue_P[]={
- &residue0_exportbundle,
- &residue1_exportbundle,
- &residue2_exportbundle,
-};
-
-vorbis_func_mapping *_mapping_P[]={
- &mapping0_exportbundle,
-};
-
diff --git a/lib/registry.h b/lib/registry.h
deleted file mode 100644
index 1c53b4a4..00000000
--- a/lib/registry.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: registry for time, floor, res backends and channel mappings
- last mod: $Id: registry.h,v 1.8 2001/08/13 01:36:57 xiphmont Exp $
-
- ********************************************************************/
-
-#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 vorbis_func_time *_time_P[];
-extern vorbis_func_floor *_floor_P[];
-extern vorbis_func_residue *_residue_P[];
-extern vorbis_func_mapping *_mapping_P[];
-
-#endif
diff --git a/lib/res0.c b/lib/res0.c
deleted file mode 100644
index 303d3edd..00000000
--- a/lib/res0.c
+++ /dev/null
@@ -1,867 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: residue backend 0, 1 and 2 implementation
- last mod: $Id: res0.c,v 1.33 2001/08/13 01:36:57 xiphmont Exp $
-
- ********************************************************************/
-
-/* Slow, slow, slow, simpleminded and did I mention it was slow? The
- encode/decode loops are coded for clarity and performance is not
- yet even a nagging little idea lurking in the shadows. Oh and BTW,
- it's slow. */
-
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <stdio.h>
-#include <ogg/ogg.h>
-#include "vorbis/codec.h"
-#include "codec_internal.h"
-#include "registry.h"
-#include "codebook.h"
-#include "misc.h"
-#include "os.h"
-
-typedef struct {
- vorbis_info_residue0 *info;
- int map;
-
- int parts;
- int stages;
- codebook *fullbooks;
- codebook *phrasebook;
- codebook ***partbooks;
-
- int partvals;
- int **decodemap;
-
- long postbits;
- long phrasebits;
- long frames;
-
-} vorbis_look_residue0;
-
-vorbis_info_residue *res0_copy_info(vorbis_info_residue *vr){
- vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr;
- vorbis_info_residue0 *ret=_ogg_malloc(sizeof(vorbis_info_residue0));
- memcpy(ret,info,sizeof(vorbis_info_residue0));
- return(ret);
-}
-
-void res0_free_info(vorbis_info_residue *i){
- if(i){
- memset(i,0,sizeof(vorbis_info_residue0));
- _ogg_free(i);
- }
-}
-
-void res0_free_look(vorbis_look_residue *i){
- int j;
- if(i){
-
- vorbis_look_residue0 *look=(vorbis_look_residue0 *)i;
-
- /*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);*/
-
- /*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(i,0,sizeof(vorbis_look_residue0));
- _ogg_free(i);
- }
-}
-
-static int ilog(unsigned int v){
- int ret=0;
- while(v){
- ret++;
- v>>=1;
- }
- return(ret);
-}
-
-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(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(vorbis_info_residue0));
- codec_setup_info *ci=vi->codec_setup;
-
- info->begin=oggpack_read(opb,24);
- info->end=oggpack_read(opb,24);
- info->grouping=oggpack_read(opb,24)+1;
- info->partitions=oggpack_read(opb,6)+1;
- info->groupbook=oggpack_read(opb,8);
-
- for(j=0;j<info->partitions;j++){
- int cascade=oggpack_read(opb,3);
- if(oggpack_read(opb,1))
- cascade|=(oggpack_read(opb,5)<<3);
- info->secondstages[j]=cascade;
-
- acc+=icount(cascade);
- }
- for(j=0;j<acc;j++)
- info->booklist[j]=oggpack_read(opb,8);
-
- if(info->groupbook>=ci->books)goto errout;
- for(j=0;j<acc;j++)
- if(info->booklist[j]>=ci->books)goto errout;
-
- return(info);
- errout:
- res0_free_info(info);
- return(NULL);
-}
-
-vorbis_look_residue *res0_look (vorbis_dsp_state *vd,vorbis_info_mode *vm,
- vorbis_info_residue *vr){
- vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr;
- vorbis_look_residue0 *look=_ogg_calloc(1,sizeof(vorbis_look_residue0));
- backend_lookup_state *be=vd->backend_state;
-
- int j,k,acc=0;
- int dim;
- int maxstage=0;
- look->info=info;
- look->map=vm->mapping;
-
- look->parts=info->partitions;
- look->fullbooks=be->fullbooks;
- look->phrasebook=be->fullbooks+info->groupbook;
- dim=look->phrasebook->dim;
-
- look->partbooks=_ogg_calloc(look->parts,sizeof(codebook **));
-
- for(j=0;j<look->parts;j++){
- int stages=ilog(info->secondstages[j]);
- if(stages){
- if(stages>maxstage)maxstage=stages;
- look->partbooks[j]=_ogg_calloc(stages,sizeof(codebook *));
- for(k=0;k<stages;k++)
- if(info->secondstages[j]&(1<<k))
- look->partbooks[j][k]=be->fullbooks+info->booklist[acc++];
- }
- }
-
- look->partvals=rint(pow(look->parts,dim));
- look->stages=maxstage;
- look->decodemap=_ogg_malloc(look->partvals*sizeof(int *));
- for(j=0;j<look->partvals;j++){
- long val=j;
- long mult=look->partvals/look->parts;
- look->decodemap[j]=_ogg_malloc(dim*sizeof(int));
- for(k=0;k<dim;k++){
- long deco=val/mult;
- val-=deco*mult;
- mult/=look->parts;
- look->decodemap[j][k]=deco;
- }
- }
-
- return(look);
-}
-
-
-/* does not guard against invalid settings; eg, a subn of 16 and a
- subgroup request of 32. Max subn of 128 */
-static int _interleaved_testhack(float *vec,int n,vorbis_look_residue0 *look,
- int auxparts,int auxpartnum){
- vorbis_info_residue0 *info=look->info;
- int i,j=0;
- float max,localmax=0.f;
- float temp[128];
- float entropy[8];
-
- /* setup */
- for(i=0;i<n;i++)temp[i]=fabs(vec[i]);
-
- /* handle case subgrp==1 outside */
- for(i=0;i<n;i++)
- if(temp[i]>localmax)localmax=temp[i];
- max=localmax;
-
- for(i=0;i<n;i++)temp[i]=rint(temp[i]);
-
- while(1){
- entropy[j]=localmax;
- n>>=1;
- if(!n)break;
- j++;
-
- for(i=0;i<n;i++){
- temp[i]+=temp[i+n];
- }
- localmax=0.f;
- for(i=0;i<n;i++)
- if(temp[i]>localmax)localmax=temp[i];
- }
-
- for(i=0;i<auxparts-1;i++)
- if(auxpartnum<info->blimit[i] &&
- entropy[info->subgrp[i]]<=info->entmax[i] &&
- max<=info->ampmax[i])
- break;
-
- return(i);
-}
-
-static int _testhack(float *vec,int n,vorbis_look_residue0 *look,
- int auxparts,int auxpartnum){
- vorbis_info_residue0 *info=look->info;
- int i;
- float max=0.f;
- float temp[128];
- float entropy=0.f;
-
- /* setup */
- for(i=0;i<n;i++)temp[i]=fabs(vec[i]);
-
- for(i=0;i<n;i++)
- if(temp[i]>max)max=temp[i];
-
- for(i=0;i<n;i++)temp[i]=rint(temp[i]);
-
- for(i=0;i<n;i++)
- entropy+=temp[i];
-
- for(i=0;i<auxparts-1;i++)
- if(auxpartnum<info->blimit[i] &&
- entropy<=info->entmax[i] &&
- max<=info->ampmax[i])
- break;
-
- return(i);
-}
-
-static int _interleaved_encodepart(oggpack_buffer *opb,float *vec, int n,
- codebook *book,vorbis_look_residue0 *look){
- int i,bits=0;
- int dim=book->dim;
- int step=n/dim;
-#ifdef TRAIN_RESENT
- char buf[80];
- FILE *f;
- sprintf(buf,"res0_b%d.vqd",book-look->fullbooks);
- f=fopen(buf,"a");
-#endif
-
- for(i=0;i<step;i++){
- int entry=vorbis_book_besterror(book,vec+i,step,0);
-
-#ifdef TRAIN_RESENT
- fprintf(f,"%d\n",entry);
-#endif
-
- bits+=vorbis_book_encode(book,entry,opb);
- }
-
-#ifdef TRAIN_RESENT
- fclose(f);
-#endif
- return(bits);
-}
-
-static int _encodepart(oggpack_buffer *opb,float *vec, int n,
- codebook *book,vorbis_look_residue0 *look){
- int i,bits=0;
- int dim=book->dim;
- int step=n/dim;
-#ifdef TRAIN_RESENT
- char buf[80];
- FILE *f;
- sprintf(buf,"res0_b%d.vqd",book-look->fullbooks);
- f=fopen(buf,"a");
-#endif
-
- for(i=0;i<step;i++){
- int entry=vorbis_book_besterror(book,vec+i*dim,1,0);
-
-#ifdef TRAIN_RESENT
- fprintf(f,"%d\n",entry);
-#endif
-
- bits+=vorbis_book_encode(book,entry,opb);
- }
-
-#ifdef TRAIN_RESENT
- fclose(f);
-#endif
- return(bits);
-}
-
-static long **_01class(vorbis_block *vb,vorbis_look_residue *vl,
- float **in,int ch,
- int (*classify)(float *,int,vorbis_look_residue0 *,
- int,int)){
- long i,j;
- 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(long *));
-
- /* 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(long));
- memset(partword[i],0,n/samples_per_partition*sizeof(long));
- }
-
- for(i=0;i<partvals;i++){
- for(j=0;j<ch;j++)
- /* do the partition decision based on the 'entropy'
- int the block */
- partword[j][i]=
- classify(in[j]+i*samples_per_partition+info->begin,
- samples_per_partition,look,possible_partitions,i);
-
- }
-
-#ifdef TRAIN_RES
- {
- FILE *of;
- char buffer[80];
-
- for(i=0;i<ch;i++){
- sprintf(buffer,"resaux_%d.vqd",vb->mode);
- 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);
-}
-
-static long **_2class(vorbis_block *vb,vorbis_look_residue *vl,
- float **in,int ch,
- int (*classify)(float *,int,vorbis_look_residue0 *,
- int,int)){
- 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(long *));
- float *work=alloca(sizeof(float)*samples_per_partition);
-
- partword[0]=_vorbis_block_alloc(vb,n*ch/samples_per_partition*sizeof(long));
- memset(partword[0],0,n*ch/samples_per_partition*sizeof(long));
-
- for(i=0,j=0,k=0,l=info->begin;i<partvals;i++){
- for(k=0;k<samples_per_partition;k++){
- work[k]=in[j][l];
- j++;
- if(j>=ch){
- j=0;
- l++;
- }
- }
- partword[0][i]=
- classify(work,samples_per_partition,look,possible_partitions,i);
- }
-
-#ifdef TRAIN_RES
- {
- FILE *of;
- char buffer[80];
-
- sprintf(buffer,"resaux_%d.vqd",vb->mode);
- 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(vorbis_block *vb,vorbis_look_residue *vl,
- float **in,int ch,
- int pass,long **partword,
- int (*encode)(oggpack_buffer *,float *,int,
- codebook *,vorbis_look_residue0 *)){
- long i,j,k,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 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
- FILE *of;
- char buffer[80];
- int m;
-
- for(i=0;i<ch;i++){
- sprintf(buffer,"residue_%d#%d.vqd",vb->mode,pass);
- of=fopen(buffer,"a");
- for(m=0;m<info->end;m++)
- fprintf(of,"%.2f, ",in[i][m]);
- fprintf(of,"\n");
- fclose(of);
- }
-#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=(pass==0?0:info->passlimit[pass-1]);s<info->passlimit[pass];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];
- long ret;
- 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)
- ret=vorbis_book_encode(look->phrasebook,val,&vb->opb);
- /*else
- fprintf(stderr,"!");*/
-
- look->phrasebits+=ret;
-
- }
- }
-
- /* 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=encode(&vb->opb,in[j]+offset,samples_per_partition,
- statebook,look);
- look->postbits+=ret;
- resbits[partword[j][i]]+=ret;
- }
- }
- }
- }
- }
- }
-
- /*{
- long total=0;
- long totalbits=0;
- fprintf(stderr,"%d :: ",vb->mode);
- for(k=0;k<possible_partitions;k++){
- fprintf(stderr,"%ld/%1.2g, ",resvals[k],(float)resbits[k]/resvals[k]);
- total+=resvals[k];
- totalbits+=resbits[k];
- }
-
- fprintf(stderr,":: %ld:%1.2g\n",total,(double)totalbits/total);
- }*/
- 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 n=info->end-info->begin;
-
- int partvals=n/samples_per_partition;
- int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
- int ***partword=alloca(ch*sizeof(int **));
-
- for(j=0;j<ch;j++)
- partword[j]=_vorbis_block_alloc(vb,partwords*sizeof(int *));
-
- for(s=0;s<look->stages;s++){
-
- /* each loop decodes on partition codeword containing
- partitions_pre_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)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);
-}
-
-/* residue 0 and 1 are just slight variants of one another. 0 is
- interleaved, 1 is not */
-long **res0_class(vorbis_block *vb,vorbis_look_residue *vl,
- float **in,int *nonzero,int ch){
- /* we encode only the nonzero parts of a bundle */
- 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,_interleaved_testhack));
- else
- return(0);
-}
-
-int res0_forward(vorbis_block *vb,vorbis_look_residue *vl,
- float **in,float **out,int *nonzero,int ch,
- int pass, long **partword){
- /* we encode only the nonzero parts of a bundle */
- int i,j,used=0,n=vb->pcmend/2;
- for(i=0;i<ch;i++)
- if(nonzero[i]){
- for(j=0;j<n;j++)
- out[i][j]+=in[i][j];
- in[used++]=in[i];
- }
- if(used){
- int ret=_01forward(vb,vl,in,used,pass,partword,
- _interleaved_encodepart);
- used=0;
- for(i=0;i<ch;i++)
- if(nonzero[i]){
- for(j=0;j<n;j++)
- out[i][j]-=in[used][j];
- used++;
- }
- return(ret);
- }else
- 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(vorbis_block *vb,vorbis_look_residue *vl,
- float **in,float **out,int *nonzero,int ch,
- int pass, long **partword){
- int i,j,used=0,n=vb->pcmend/2;
- for(i=0;i<ch;i++)
- if(nonzero[i]){
- for(j=0;j<n;j++)
- out[i][j]+=in[i][j];
- in[used++]=in[i];
- }
-
- if(used){
- int ret=_01forward(vb,vl,in,used,pass,partword,_encodepart);
- used=0;
- for(i=0;i<ch;i++)
- if(nonzero[i]){
- for(j=0;j<n;j++)
- out[i][j]-=in[used][j];
- used++;
- }
- return(ret);
- }else
- return(0);
-}
-
-long **res1_class(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(_01class(vb,vl,in,used,_testhack));
- 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,
- 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(_2class(vb,vl,in,used,_testhack));
- else
- return(0);
-}
-
-/* res2 is slightly more different; all the channels are interleaved
- into a single vector and encoded. */
-
-int res2_forward(vorbis_block *vb,vorbis_look_residue *vl,
- float **in,float **out,int *nonzero,int ch,
- int pass,long **partword){
- 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 :-( */
- float *work=_vorbis_block_alloc(vb,ch*n*sizeof(float));
- for(i=0;i<ch;i++){
- float *pcm=in[i];
- if(nonzero[i])used++;
- for(j=0,k=i;j<n;j++,k+=ch)
- work[k]=pcm[j];
- }
-
- if(used){
- int ret=_01forward(vb,vl,&work,1,pass,partword,_encodepart);
- /* update the sofar vector */
- for(i=0;i<ch;i++){
- float *pcm=in[i];
- float *sofar=out[i];
- for(j=0,k=i;j<n;j++,k+=ch)
- sofar[j]+=pcm[j]-work[k];
- }
-
- return(ret);
- }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 n=info->end-info->begin;
-
- int partvals=n/samples_per_partition;
- int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
- int **partword=_vorbis_block_alloc(vb,partwords*sizeof(int *));
-
- 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)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);
-}
-
-
-vorbis_func_residue residue0_exportbundle={
- &res0_pack,
- &res0_unpack,
- &res0_look,
- &res0_copy_info,
- &res0_free_info,
- &res0_free_look,
- &res0_class,
- &res0_forward,
- &res0_inverse
-};
-
-vorbis_func_residue residue1_exportbundle={
- &res0_pack,
- &res0_unpack,
- &res0_look,
- &res0_copy_info,
- &res0_free_info,
- &res0_free_look,
- &res1_class,
- &res1_forward,
- &res1_inverse
-};
-
-vorbis_func_residue residue2_exportbundle={
- &res0_pack,
- &res0_unpack,
- &res0_look,
- &res0_copy_info,
- &res0_free_info,
- &res0_free_look,
- &res2_class,
- &res2_forward,
- &res2_inverse
-};
diff --git a/lib/scales.h b/lib/scales.h
deleted file mode 100644
index 1f44889d..00000000
--- a/lib/scales.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: linear scale -> dB, Bark and Mel scales
- last mod: $Id: scales.h,v 1.16 2001/05/27 06:44:01 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_SCALE_H_
-#define _V_SCALES_H_
-
-#include <math.h>
-#include "os.h"
-
-/* 20log10(x) */
-#ifdef VORBIS_IEEE_FLOAT32
-static float todB_LOOKUP[256]={
- -140.277330f, -139.633636f, -139.034372f, -138.473797f,
- -137.450747f, -136.535597f, -135.707743f, -134.951972f,
- -134.256730f, -133.613036f, -133.013772f, -132.453198f,
- -131.430147f, -130.514997f, -129.687144f, -128.931372f,
- -128.236130f, -127.592437f, -126.993172f, -126.432598f,
- -125.409547f, -124.494397f, -123.666544f, -122.910772f,
- -122.215530f, -121.571837f, -120.972572f, -120.411998f,
- -119.388947f, -118.473797f, -117.645944f, -116.890173f,
- -116.194930f, -115.551237f, -114.951972f, -114.391398f,
- -113.368347f, -112.453198f, -111.625344f, -110.869573f,
- -110.174331f, -109.530637f, -108.931372f, -108.370798f,
- -107.347748f, -106.432598f, -105.604744f, -104.848973f,
- -104.153731f, -103.510037f, -102.910773f, -102.350198f,
- -101.327148f, -100.411998f, -99.584144f, -98.828373f,
- -98.133131f, -97.489437f, -96.890173f, -96.329598f,
- -95.306548f, -94.391398f, -93.563544f, -92.807773f,
- -92.112531f, -91.468837f, -90.869573f, -90.308998f,
- -89.285948f, -88.370798f, -87.542944f, -86.787173f,
- -86.091931f, -85.448237f, -84.848973f, -84.288398f,
- -83.265348f, -82.350198f, -81.522344f, -80.766573f,
- -80.071331f, -79.427637f, -78.828373f, -78.267799f,
- -77.244748f, -76.329598f, -75.501745f, -74.745973f,
- -74.050731f, -73.407038f, -72.807773f, -72.247199f,
- -71.224148f, -70.308998f, -69.481145f, -68.725373f,
- -68.030131f, -67.386438f, -66.787173f, -66.226599f,
- -65.203548f, -64.288399f, -63.460545f, -62.704774f,
- -62.009531f, -61.365838f, -60.766573f, -60.205999f,
- -59.182948f, -58.267799f, -57.439945f, -56.684174f,
- -55.988932f, -55.345238f, -54.745973f, -54.185399f,
- -53.162349f, -52.247199f, -51.419345f, -50.663574f,
- -49.968332f, -49.324638f, -48.725374f, -48.164799f,
- -47.141749f, -46.226599f, -45.398745f, -44.642974f,
- -43.947732f, -43.304038f, -42.704774f, -42.144199f,
- -41.121149f, -40.205999f, -39.378145f, -38.622374f,
- -37.927132f, -37.283438f, -36.684174f, -36.123599f,
- -35.100549f, -34.185399f, -33.357545f, -32.601774f,
- -31.906532f, -31.262838f, -30.663574f, -30.102999f,
- -29.079949f, -28.164799f, -27.336945f, -26.581174f,
- -25.885932f, -25.242238f, -24.642974f, -24.082400f,
- -23.059349f, -22.144199f, -21.316346f, -20.560574f,
- -19.865332f, -19.221639f, -18.622374f, -18.061800f,
- -17.038749f, -16.123599f, -15.295746f, -14.539974f,
- -13.844732f, -13.201039f, -12.601774f, -12.041200f,
- -11.018149f, -10.103000f, -9.275146f, -8.519375f,
- -7.824132f, -7.180439f, -6.581174f, -6.020600f,
- -4.997549f, -4.082400f, -3.254546f, -2.498775f,
- -1.803533f, -1.159839f, -0.560574f, 0.000000f,
- 1.023050f, 1.938200f, 2.766054f, 3.521825f,
- 4.217067f, 4.860761f, 5.460025f, 6.020600f,
- 7.043650f, 7.958800f, 8.786654f, 9.542425f,
- 10.237667f, 10.881361f, 11.480625f, 12.041200f,
- 13.064250f, 13.979400f, 14.807254f, 15.563025f,
- 16.258267f, 16.901961f, 17.501225f, 18.061800f,
- 19.084850f, 20.000000f, 20.827854f, 21.583625f,
- 22.278867f, 22.922561f, 23.521825f, 24.082400f,
- 25.105450f, 26.020600f, 26.848453f, 27.604225f,
- 28.299467f, 28.943161f, 29.542425f, 30.102999f,
- 31.126050f, 32.041200f, 32.869053f, 33.624825f,
- 34.320067f, 34.963760f, 35.563025f, 36.123599f,
- 37.146650f, 38.061800f, 38.889653f, 39.645424f,
- 40.340667f, 40.984360f, 41.583625f, 42.144199f,
- 43.167250f, 44.082399f, 44.910253f, 45.666024f,
- 46.361266f, 47.004960f, 47.604225f, 48.164799f,
- 49.187850f, 50.102999f, 50.930853f, 51.686624f
-};
-
-static float todB(const float *x){
- ogg_int32_t *i=(ogg_int32_t *)x;
- ogg_int32_t temp=((*i&0x7fffffff)-0x33cfffff)>>20;
- if(temp<0)return -400.f;
- return(todB_LOOKUP[temp]);
-}
-
-#define todB_nn(x) todB(x)
-
-#else
-
-#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
-
diff --git a/lib/sharedbook.c b/lib/sharedbook.c
deleted file mode 100644
index 95371ccd..00000000
--- a/lib/sharedbook.c
+++ /dev/null
@@ -1,677 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: basic shared codebook operations
- last mod: $Id: sharedbook.c,v 1.17 2001/08/13 01:36:57 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-#include <ogg/ogg.h>
-#include "os.h"
-#include "vorbis/codec.h"
-#include "codebook.h"
-#include "scales.h"
-
-/**** pack/unpack helpers ******************************************/
-int _ilog(unsigned int v){
- int ret=0;
- while(v){
- ret++;
- v>>=1;
- }
- return(ret);
-}
-
-/* 32 bit float (not IEEE; nonnormalized mantissa +
- biased exponent) : neeeeeee eeemmmmm mmmmmmmm mmmmmmmm
- Why not IEEE? It's just not that important here. */
-
-#define VQ_FEXP 10
-#define VQ_FMAN 21
-#define VQ_FEXP_BIAS 768 /* bias toward values smaller than 1. */
-
-/* doesn't currently guard under/overflow */
-long _float32_pack(float val){
- int sign=0;
- long exp;
- long mant;
- if(val<0){
- sign=0x80000000;
- val= -val;
- }
- exp= floor(log(val)/log(2));
- mant=rint(ldexp(val,(VQ_FMAN-1)-exp));
- exp=(exp+VQ_FEXP_BIAS)<<VQ_FMAN;
-
- return(sign|exp|mant);
-}
-
-float _float32_unpack(long val){
- double mant=val&0x1fffff;
- int sign=val&0x80000000;
- long exp =(val&0x7fe00000L)>>VQ_FMAN;
- if(sign)mant= -mant;
- return(ldexp(mant,exp-(VQ_FMAN-1)-VQ_FEXP_BIAS));
-}
-
-/* given a list of word lengths, generate a list of codewords. Works
- for length ordered or unordered, always assigns the lowest valued
- codewords first. Extended to handle unused entries (length 0) */
-long *_make_words(long *l,long n){
- long i,j;
- long marker[33];
- long *r=_ogg_malloc(n*sizeof(long));
- memset(marker,0,sizeof(marker));
-
- for(i=0;i<n;i++){
- long length=l[i];
- if(length>0){
- long entry=marker[length];
-
- /* when we claim a node for an entry, we also claim the nodes
- below it (pruning off the imagined tree that may have dangled
- from it) as well as blocking the use of any nodes directly
- above for leaves */
-
- /* update ourself */
- if(length<32 && (entry>>length)){
- /* error condition; the lengths must specify an overpopulated tree */
- _ogg_free(r);
- return(NULL);
- }
- r[i]=entry;
-
- /* Look to see if the next shorter marker points to the node
- above. if so, update it and repeat. */
- {
- for(j=length;j>0;j--){
-
- if(marker[j]&1){
- /* have to jump branches */
- if(j==1)
- marker[1]++;
- else
- marker[j]=marker[j-1]<<1;
- break; /* invariant says next upper marker would already
- have been moved if it was on the same path */
- }
- marker[j]++;
- }
- }
-
- /* prune the tree; the implicit invariant says all the longer
- markers were dangling from our just-taken node. Dangle them
- from our *new* node. */
- for(j=length+1;j<33;j++)
- if((marker[j]>>1) == entry){
- entry=marker[j];
- marker[j]=marker[j-1]<<1;
- }else
- break;
- }
- }
-
- /* bitreverse the words because our bitwise packer/unpacker is LSb
- endian */
- for(i=0;i<n;i++){
- long temp=0;
- for(j=0;j<l[i];j++){
- temp<<=1;
- temp|=(r[i]>>j)&1;
- }
- r[i]=temp;
- }
-
- return(r);
-}
-
-/* build the decode helper tree from the codewords */
-decode_aux *_make_decode_tree(codebook *c){
- const static_codebook *s=c->c;
- long top=0,i,j,n;
- decode_aux *t=_ogg_malloc(sizeof(decode_aux));
- long *ptr0=t->ptr0=_ogg_calloc(c->entries*2,sizeof(long));
- long *ptr1=t->ptr1=_ogg_calloc(c->entries*2,sizeof(long));
- long *codelist=_make_words(s->lengthlist,s->entries);
-
- if(codelist==NULL)return(NULL);
- t->aux=c->entries*2;
-
- for(i=0;i<c->entries;i++){
- if(s->lengthlist[i]>0){
- long ptr=0;
- for(j=0;j<s->lengthlist[i]-1;j++){
- int bit=(codelist[i]>>j)&1;
- if(!bit){
- if(!ptr0[ptr])
- ptr0[ptr]= ++top;
- ptr=ptr0[ptr];
- }else{
- if(!ptr1[ptr])
- ptr1[ptr]= ++top;
- ptr=ptr1[ptr];
- }
- }
- if(!((codelist[i]>>j)&1))
- ptr0[ptr]=-i;
- else
- ptr1[ptr]=-i;
- }
- }
- _ogg_free(codelist);
-
- t->tabn = _ilog(c->entries)-4; /* this is magic */
- if(t->tabn<5)t->tabn=5;
- n = 1<<t->tabn;
- t->tab = _ogg_malloc(n*sizeof(long));
- t->tabl = _ogg_malloc(n*sizeof(int));
- for (i = 0; i < n; i++) {
- long p = 0;
- for (j = 0; j < t->tabn && (p > 0 || j == 0); j++) {
- if (i & (1 << j))
- p = ptr1[p];
- else
- p = ptr0[p];
- }
- /* now j == length, and p == -code */
- t->tab[i] = p;
- t->tabl[i] = j;
- }
-
- return(t);
-}
-
-/* there might be a straightforward one-line way to do the below
- that's portable and totally safe against roundoff, but I haven't
- thought of it. Therefore, we opt on the side of caution */
-long _book_maptype1_quantvals(const static_codebook *b){
- long vals=floor(pow(b->entries,1.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 */
- while(1){
- long acc=1;
- long acc1=1;
- int i;
- for(i=0;i<b->dim;i++){
- acc*=vals;
- acc1*=vals+1;
- }
- if(acc<=b->entries && acc1>b->entries){
- return(vals);
- }else{
- if(acc>b->entries){
- vals--;
- }else{
- vals++;
- }
- }
- }
-}
-
-/* unpack the quantized list of values for encode/decode ***********/
-/* we need to deal with two map types: in map type 1, the values are
- generated algorithmically (each column of the vector counts through
- the values in the quant vector). in map type 2, all the values came
- in in an explicit list. Both value lists must be unpacked */
-float *_book_unquantize(const static_codebook *b){
- long j,k;
- if(b->maptype==1 || b->maptype==2){
- int quantvals;
- float mindel=_float32_unpack(b->q_min);
- float delta=_float32_unpack(b->q_delta);
- float *r=_ogg_calloc(b->entries*b->dim,sizeof(float));
-
- /* maptype 1 and 2 both use a quantized value vector, but
- different sizes */
- switch(b->maptype){
- case 1:
- /* most of the time, entries%dimensions == 0, but we need to be
- well defined. We define that the possible vales at each
- scalar is values == entries/dim. If entries%dim != 0, we'll
- have 'too few' values (values*dim<entries), which means that
- we'll have 'left over' entries; left over entries use zeroed
- values (and are wasted). So don't generate codebooks like
- that */
- quantvals=_book_maptype1_quantvals(b);
- for(j=0;j<b->entries;j++){
- float last=0.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;
- r[j*b->dim+k]=val;
- indexdiv*=quantvals;
- }
- }
- break;
- case 2:
- for(j=0;j<b->entries;j++){
- 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;
- r[j*b->dim+k]=val;
- }
- }
- break;
- }
-
- return(r);
- }
- return(NULL);
-}
-
-void vorbis_staticbook_clear(static_codebook *b){
- if(b->allocedp){
- if(b->quantlist)_ogg_free(b->quantlist);
- if(b->lengthlist)_ogg_free(b->lengthlist);
- if(b->nearest_tree){
- _ogg_free(b->nearest_tree->ptr0);
- _ogg_free(b->nearest_tree->ptr1);
- _ogg_free(b->nearest_tree->p);
- _ogg_free(b->nearest_tree->q);
- memset(b->nearest_tree,0,sizeof(encode_aux_nearestmatch));
- _ogg_free(b->nearest_tree);
- }
- if(b->thresh_tree){
- _ogg_free(b->thresh_tree->quantthresh);
- _ogg_free(b->thresh_tree->quantmap);
- memset(b->thresh_tree,0,sizeof(encode_aux_threshmatch));
- _ogg_free(b->thresh_tree);
- }
-
- memset(b,0,sizeof(static_codebook));
- }
-}
-
-void vorbis_staticbook_destroy(static_codebook *b){
- if(b->allocedp){
- vorbis_staticbook_clear(b);
- _ogg_free(b);
- }
-}
-
-void vorbis_book_clear(codebook *b){
- /* static book is not cleared; we're likely called on the lookup and
- the static codebook belongs to the info struct */
- if(b->decode_tree){
- _ogg_free(b->decode_tree->tab);
- _ogg_free(b->decode_tree->tabl);
-
- _ogg_free(b->decode_tree->ptr0);
- _ogg_free(b->decode_tree->ptr1);
- memset(b->decode_tree,0,sizeof(decode_aux));
- _ogg_free(b->decode_tree);
- }
- if(b->valuelist)_ogg_free(b->valuelist);
- if(b->codelist)_ogg_free(b->codelist);
- memset(b,0,sizeof(codebook));
-}
-
-int vorbis_book_init_encode(codebook *c,const static_codebook *s){
- long j,k;
- memset(c,0,sizeof(codebook));
- c->c=s;
- c->entries=s->entries;
- c->dim=s->dim;
- c->codelist=_make_words(s->lengthlist,s->entries);
- c->valuelist=_book_unquantize(s);
-
- /* set the 'zero entry' */
- c->zeroentry=-1;
- if(c->valuelist){
- for(j=0;j<s->entries;j++){
- int flag=1;
- for(k=0;k<s->dim;k++){
- if(fabs(c->valuelist[j*s->dim+k])>1e-12f){
- flag=0;
- break;
- }
- }
- if(flag)
- c->zeroentry=j;
- }
- }
-
- return(0);
-}
-
-int vorbis_book_init_decode(codebook *c,const static_codebook *s){
- memset(c,0,sizeof(codebook));
- c->c=s;
- c->entries=s->entries;
- c->dim=s->dim;
- c->valuelist=_book_unquantize(s);
- c->decode_tree=_make_decode_tree(c);
- if(c->decode_tree==NULL)goto err_out;
- return(0);
- err_out:
- vorbis_book_clear(c);
- return(-1);
-}
-
-static float _dist(int el,float *ref, float *b,int step){
- int i;
- float acc=0.f;
- for(i=0;i<el;i++){
- float val=(ref[i]-b[i*step]);
- acc+=val*val;
- }
- return(acc);
-}
-
-#include <stdio.h>
-int _best(codebook *book, float *a, int step){
- encode_aux_nearestmatch *nt=book->c->nearest_tree;
- encode_aux_threshmatch *tt=book->c->thresh_tree;
- encode_aux_pigeonhole *pt=book->c->pigeon_tree;
- int dim=book->dim;
- int ptr=0,k,o;
- /*int savebest=-1;
- float saverr;*/
-
- /* do we have a threshhold encode hint? */
- if(tt){
- int index=0;
- /* find the quant val of each scalar */
- for(k=0,o=step*(dim-1);k<dim;k++,o-=step){
- int i;
- /* linear search the quant list for now; it's small and although
- with > ~8 entries, it would be faster to bisect, this would be
- a misplaced optimization for now */
- for(i=0;i<tt->threshvals-1;i++)
- if(a[o]<tt->quantthresh[i])break;
-
- index=(index*tt->quantvals)+tt->quantmap[i];
- }
- /* regular lattices are easy :-) */
- if(book->c->lengthlist[index]>0) /* is this unused? If so, we'll
- use a decision tree after all
- and fall through*/
- return(index);
- }
-
- /* do we have a pigeonhole encode hint? */
- if(pt){
- const static_codebook *c=book->c;
- int i,besti=-1;
- float best;
- int entry=0;
-
- /* dealing with sequentialness is a pain in the ass */
- if(c->q_sequencep){
- int pv;
- long mul=1;
- float qlast=0;
- for(k=0,o=0;k<dim;k++,o+=step){
- pv=(int)((a[o]-qlast-pt->min)/pt->del);
- if(pv<0 || pv>=pt->mapentries)break;
- entry+=pt->pigeonmap[pv]*mul;
- mul*=pt->quantvals;
- qlast+=pv*pt->del+pt->min;
- }
- }else{
- for(k=0,o=step*(dim-1);k<dim;k++,o-=step){
- int pv=(int)((a[o]-pt->min)/pt->del);
- if(pv<0 || pv>=pt->mapentries)break;
- entry=entry*pt->quantvals+pt->pigeonmap[pv];
- }
- }
-
- /* must be within the pigeonholable range; if we quant outside (or
- in an entry that we define no list for), brute force it */
- if(k==dim && pt->fitlength[entry]){
- /* search the abbreviated list */
- long *list=pt->fitlist+pt->fitmap[entry];
- for(i=0;i<pt->fitlength[entry];i++){
- float this=_dist(dim,book->valuelist+list[i]*dim,a,step);
- if(besti==-1 || this<best){
- best=this;
- besti=list[i];
- }
- }
-
- return(besti);
- }
- }
-
- if(nt){
- /* optimized using the decision tree */
- while(1){
- float c=0.f;
- float *p=book->valuelist+nt->p[ptr];
- float *q=book->valuelist+nt->q[ptr];
-
- for(k=0,o=0;k<dim;k++,o+=step)
- c+=(p[k]-q[k])*(a[o]-(p[k]+q[k])*.5);
-
- if(c>0.f) /* in A */
- ptr= -nt->ptr0[ptr];
- else /* in B */
- ptr= -nt->ptr1[ptr];
- if(ptr<=0)break;
- }
- return(-ptr);
- }
-
- /* brute force it! */
- {
- const static_codebook *c=book->c;
- int i,besti=-1;
- float best;
- float *e=book->valuelist;
- for(i=0;i<book->entries;i++){
- if(c->lengthlist[i]>0){
- float this=_dist(dim,e,a,step);
- if(besti==-1 || this<best){
- best=this;
- besti=i;
- }
- }
- e+=dim;
- }
-
- /*if(savebest!=-1 && savebest!=besti){
- fprintf(stderr,"brute force/pigeonhole disagreement:\n"
- "original:");
- for(i=0;i<dim*step;i+=step)fprintf(stderr,"%g,",a[i]);
- fprintf(stderr,"\n"
- "pigeonhole (entry %d, err %g):",savebest,saverr);
- for(i=0;i<dim;i++)fprintf(stderr,"%g,",
- (book->valuelist+savebest*dim)[i]);
- fprintf(stderr,"\n"
- "bruteforce (entry %d, err %g):",besti,best);
- for(i=0;i<dim;i++)fprintf(stderr,"%g,",
- (book->valuelist+besti*dim)[i]);
- fprintf(stderr,"\n");
- }*/
- return(besti);
- }
-}
-
-/* returns the entry number and *modifies a* to the remainder value ********/
-int vorbis_book_besterror(codebook *book,float *a,int step,int addmul){
- int dim=book->dim,i,o;
- int best=_best(book,a,step);
- switch(addmul){
- case 0:
- for(i=0,o=0;i<dim;i++,o+=step)
- a[o]-=(book->valuelist+best*dim)[i];
- break;
- case 1:
- for(i=0,o=0;i<dim;i++,o+=step){
- float val=(book->valuelist+best*dim)[i];
- if(val==0){
- a[o]=0;
- }else{
- a[o]/=val;
- }
- }
- break;
- }
- return(best);
-}
-
-long vorbis_book_codeword(codebook *book,int entry){
- return book->codelist[entry];
-}
-
-long vorbis_book_codelen(codebook *book,int entry){
- return book->c->lengthlist[entry];
-}
-
-#ifdef _V_SELFTEST
-
-/* Unit tests of the dequantizer; this stuff will be OK
- cross-platform, I simply want to be sure that special mapping cases
- actually work properly; a bug could go unnoticed for a while */
-
-#include <stdio.h>
-
-/* cases:
-
- no mapping
- full, explicit mapping
- algorithmic mapping
-
- nonsequential
- sequential
-*/
-
-static long full_quantlist1[]={0,1,2,3, 4,5,6,7, 8,3,6,1};
-static long partial_quantlist1[]={0,7,2};
-
-/* no mapping */
-static_codebook test1={
- 4,16,
- NULL,
- 0,
- 0,0,0,0,
- NULL,
- NULL,NULL
-};
-static float *test1_result=NULL;
-
-/* linear, full mapping, nonsequential */
-static_codebook test2={
- 4,3,
- NULL,
- 2,
- -533200896,1611661312,4,0,
- full_quantlist1,
- NULL,NULL
-};
-static float test2_result[]={-3,-2,-1,0, 1,2,3,4, 5,0,3,-2};
-
-/* linear, full mapping, sequential */
-static_codebook test3={
- 4,3,
- NULL,
- 2,
- -533200896,1611661312,4,1,
- full_quantlist1,
- NULL,NULL
-};
-static float test3_result[]={-3,-5,-6,-6, 1,3,6,10, 5,5,8,6};
-
-/* linear, algorithmic mapping, nonsequential */
-static_codebook test4={
- 3,27,
- NULL,
- 1,
- -533200896,1611661312,4,0,
- partial_quantlist1,
- NULL,NULL
-};
-static float test4_result[]={-3,-3,-3, 4,-3,-3, -1,-3,-3,
- -3, 4,-3, 4, 4,-3, -1, 4,-3,
- -3,-1,-3, 4,-1,-3, -1,-1,-3,
- -3,-3, 4, 4,-3, 4, -1,-3, 4,
- -3, 4, 4, 4, 4, 4, -1, 4, 4,
- -3,-1, 4, 4,-1, 4, -1,-1, 4,
- -3,-3,-1, 4,-3,-1, -1,-3,-1,
- -3, 4,-1, 4, 4,-1, -1, 4,-1,
- -3,-1,-1, 4,-1,-1, -1,-1,-1};
-
-/* linear, algorithmic mapping, sequential */
-static_codebook test5={
- 3,27,
- NULL,
- 1,
- -533200896,1611661312,4,1,
- partial_quantlist1,
- NULL,NULL
-};
-static float test5_result[]={-3,-6,-9, 4, 1,-2, -1,-4,-7,
- -3, 1,-2, 4, 8, 5, -1, 3, 0,
- -3,-4,-7, 4, 3, 0, -1,-2,-5,
- -3,-6,-2, 4, 1, 5, -1,-4, 0,
- -3, 1, 5, 4, 8,12, -1, 3, 7,
- -3,-4, 0, 4, 3, 7, -1,-2, 2,
- -3,-6,-7, 4, 1, 0, -1,-4,-5,
- -3, 1, 0, 4, 8, 7, -1, 3, 2,
- -3,-4,-5, 4, 3, 2, -1,-2,-3};
-
-void run_test(static_codebook *b,float *comp){
- float *out=_book_unquantize(b);
- int i;
-
- if(comp){
- if(!out){
- fprintf(stderr,"_book_unquantize incorrectly returned NULL\n");
- exit(1);
- }
-
- for(i=0;i<b->entries*b->dim;i++)
- if(fabs(out[i]-comp[i])>.0001){
- fprintf(stderr,"disagreement in unquantized and reference data:\n"
- "position %d, %g != %g\n",i,out[i],comp[i]);
- exit(1);
- }
-
- }else{
- if(out){
- fprintf(stderr,"_book_unquantize returned a value array: \n"
- " correct result should have been NULL\n");
- exit(1);
- }
- }
-}
-
-int main(){
- /* run the nine dequant tests, and compare to the hand-rolled results */
- fprintf(stderr,"Dequant test 1... ");
- run_test(&test1,test1_result);
- fprintf(stderr,"OK\nDequant test 2... ");
- run_test(&test2,test2_result);
- fprintf(stderr,"OK\nDequant test 3... ");
- run_test(&test3,test3_result);
- fprintf(stderr,"OK\nDequant test 4... ");
- run_test(&test4,test4_result);
- fprintf(stderr,"OK\nDequant test 5... ");
- run_test(&test5,test5_result);
- fprintf(stderr,"OK\n\n");
-
- return(0);
-}
-
-#endif
diff --git a/lib/smallft.c b/lib/smallft.c
deleted file mode 100644
index 60609a2f..00000000
--- a/lib/smallft.c
+++ /dev/null
@@ -1,1254 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: *unnormalized* fft transform
- last mod: $Id: smallft.c,v 1.14 2001/02/26 03:50:43 xiphmont Exp $
-
-********************************************************************/
-
-/* 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 "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(float));
- l->splitcache=_ogg_calloc(32,sizeof(int));
- 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(drft_lookup));
- }
-}
diff --git a/lib/smallft.h b/lib/smallft.h
deleted file mode 100644
index 2dd9b38d..00000000
--- a/lib/smallft.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: fft transform
- last mod: $Id: smallft.h,v 1.10 2001/02/26 03:50:43 xiphmont Exp $
-
-********************************************************************/
-
-#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
diff --git a/lib/synthesis.c b/lib/synthesis.c
deleted file mode 100644
index 57c6f1d6..00000000
--- a/lib/synthesis.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: single-block PCM synthesis
- last mod: $Id: synthesis.c,v 1.23 2001/08/13 01:36:57 xiphmont Exp $
-
- ********************************************************************/
-
-#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->vd;
- backend_lookup_state *b=vd->backend_state;
- vorbis_info *vi=vd->vi;
- codec_setup_info *ci=vi->codec_setup;
- oggpack_buffer *opb=&vb->opb;
- int type,mode,i;
-
- /* first things first. Make sure decode is ready */
- _vorbis_block_ripcord(vb);
- 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;
- 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-3; /* first block is third packet */
- vb->eofflag=op->e_o_s;
-
- /* alloc pcm passback storage */
- vb->pcmend=ci->blocksizes[vb->W];
- vb->pcm=_vorbis_block_alloc(vb,sizeof(float *)*vi->channels);
- for(i=0;i<vi->channels;i++)
- vb->pcm[i]=_vorbis_block_alloc(vb,vb->pcmend*sizeof(float));
-
- /* unpack_header enforces range checking */
- type=ci->map_type[ci->mode_param[mode]->mapping];
-
- return(_mapping_P[type]->inverse(vb,b->mode[mode]));
-}
-
-long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op){
- codec_setup_info *ci=vi->codec_setup;
- oggpack_buffer opb;
- int mode;
-
- 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);
- }
-
- {
- int modebits=0;
- int v=ci->modes;
- while(v>1){
- modebits++;
- v>>=1;
- }
-
- /* read our mode and pre/post windowsize */
- mode=oggpack_read(&opb,modebits);
- }
- if(mode==-1)return(OV_EBADPACKET);
- return(ci->blocksizes[ci->mode_param[mode]->blockflag]);
-}
-
-
diff --git a/lib/time0.c b/lib/time0.c
deleted file mode 100644
index 7ef9d657..00000000
--- a/lib/time0.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: time backend 0 (dummy)
- last mod: $Id: time0.c,v 1.10 2001/08/13 01:36:57 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <string.h>
-#include "vorbis/codec.h"
-#include "codec_internal.h"
-#include "registry.h"
-#include "misc.h"
-
-static void time0_pack (vorbis_info_time *i,oggpack_buffer *opb){
-}
-static vorbis_info_time *time0_unpack (vorbis_info *vi,oggpack_buffer *opb){
- return "";
-
-}
-static vorbis_info_time *time0_copy_info (vorbis_info_time *vi){
- return "";
-}
-static vorbis_look_time *time0_look (vorbis_dsp_state *vd,vorbis_info_mode *mi,
- vorbis_info_time *i){
- return "";
-}
-static void time0_free_info(vorbis_info_time *i){
-}
-static void time0_free_look(vorbis_look_time *i){
-}
-static int time0_forward(vorbis_block *vb,vorbis_look_time *i,
- float *in,float *out){
- return(0);
-}
-static int time0_inverse(vorbis_block *vb,vorbis_look_time *i,
- float *in,float *out){
- return(0);
-}
-
-/* export hooks */
-vorbis_func_time time0_exportbundle={
- &time0_pack,&time0_unpack,&time0_look,&time0_copy_info,&time0_free_info,
- &time0_free_look,&time0_forward,&time0_inverse
-};
diff --git a/lib/tone.c b/lib/tone.c
deleted file mode 100644
index 3760344d..00000000
--- a/lib/tone.c
+++ /dev/null
@@ -1,54 +0,0 @@
-#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(float)*(argc-1));
- amp=alloca(sizeof(float)*(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);
-}
-
diff --git a/lib/vorbisenc.c b/lib/vorbisenc.c
deleted file mode 100644
index 1e0dc5b8..00000000
--- a/lib/vorbisenc.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: simple programmatic interface for encoder mode setup
- last mod: $Id: vorbisenc.c,v 1.8 2001/08/13 01:36:58 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-
-#include "vorbis/codec.h"
-#include "vorbis/vorbisenc.h"
-
-#include "codec_internal.h"
-#include "registry.h"
-#include "modes/modes.h"
-
-#include "os.h"
-#include "misc.h"
-
-
-/* deepcopy all but the codebooks; in this usage, they're static
- (don't copy as they could be big) */
-static void codec_setup_partialcopy(codec_setup_info *ci,
- codec_setup_info *cs){
- int i;
-
- memcpy(ci,cs,sizeof(codec_setup_info)); /* to get the flat numbers */
-
- /* codebooks */
- for(i=0;i<ci->books;i++){
- ci->book_param[i]=cs->book_param[i];
- }
-
- /* time backend settings */
- for(i=0;i<ci->times;i++){
- ci->time_param[i]=_time_P[ci->time_type[i]]->
- copy_info(cs->time_param[i]);
- }
-
- /* floor backend settings */
- for(i=0;i<ci->floors;i++){
- ci->floor_param[i]=_floor_P[ci->floor_type[i]]->
- copy_info(cs->floor_param[i]);
- }
-
- /* residue backend settings */
- for(i=0;i<ci->residues;i++){
- ci->residue_param[i]=_residue_P[ci->residue_type[i]]->
- copy_info(cs->residue_param[i]);
- }
-
- /* map backend settings */
- for(i=0;i<ci->maps;i++){
- ci->map_param[i]=_mapping_P[ci->map_type[i]]->
- copy_info(cs->map_param[i]);
- }
-
- /* mode settings */
- for(i=0;i<ci->modes;i++){
- ci->mode_param[i]=_ogg_calloc(1,sizeof(vorbis_info_mode));
- ci->mode_param[i]->blockflag=cs->mode_param[i]->blockflag;
- ci->mode_param[i]->windowtype=cs->mode_param[i]->windowtype;
- ci->mode_param[i]->transformtype=cs->mode_param[i]->transformtype;
- ci->mode_param[i]->mapping=cs->mode_param[i]->mapping;
- }
-
- /* psy settings */
- for(i=0;i<ci->psys;i++){
- ci->psy_param[i]=_vi_psy_copy(cs->psy_param[i]);
- }
-
-}
-
-/* encoders will need to use vorbis_info_init beforehand and call
- vorbis_info clear when all done */
-
-int vorbis_encode_init_vbr(vorbis_info *vi,
- long channels,
- long rate,
-
- float base_quality /* 0. to 1. */
- ){
-
-
-
-
-}
-
-
-int vorbis_encode_init(vorbis_info *vi,
- long channels,
- long rate,
-
- long max_bitrate,
- long nominal_bitrate,
- long min_bitrate){
-
- long bpch;
- int i,j;
- codec_setup_info *ci=vi->codec_setup;
- codec_setup_info *mode=NULL;
- if(!ci)return(OV_EFAULT);
-
- vi->version=0;
- vi->channels=channels;
- vi->rate=rate;
-
- vi->bitrate_upper=max_bitrate;
- vi->bitrate_nominal=nominal_bitrate;
- vi->bitrate_lower=min_bitrate;
- vi->bitrate_window=2;
-
- /* copy a mode into our allocated storage */
- bpch=nominal_bitrate/channels;
-
- mode=&info_44c_Z;
-
-#if 0
- if(bpch<60000){
- /* mode AA */
- mode=&info_AA;
- }else if(bpch<75000){
- /* mode A */
- mode=&info_A;
- }else if(bpch<90000){
- /* mode B */
- mode=&info_B;
- }else if(bpch<110000){
- /* mode C */
- mode=&info_C;
- }else if(bpch<160000){
- /* mode D */
- mode=&info_D;
- }else{
- /* mode E */
- mode=&info_E;
- }
-#endif
-
- /* now we have to deepcopy */
- codec_setup_partialcopy(ci,mode);
-
- /* adjust for sample rate */
- for(i=0;i<ci->floors;i++)
- if(ci->floor_type[i]==0)
- ((vorbis_info_floor0 *)(ci->floor_param[i]))->rate=rate;
-
- /* adjust for channels; all our mappings use submap zero now */
- /* yeah, OK, _ogg_calloc did this for us. But it's a reminder/placeholder */
- for(i=0;i<ci->maps;i++)
- for(j=0;j<channels;j++)
- ((vorbis_info_mapping0 *)ci->map_param[i])->chmuxlist[j]=0;
-
- return(0);
-}
-
-int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg){
- return(OV_EIMPL);
-}
-
diff --git a/lib/vorbisfile.c b/lib/vorbisfile.c
deleted file mode 100644
index 07e4ac26..00000000
--- a/lib/vorbisfile.c
+++ /dev/null
@@ -1,1499 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: stdio-based convenience library for opening/seeking/decoding
- last mod: $Id: vorbisfile.c,v 1.48 2001/06/02 11:38:14 msmith Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <math.h>
-
-#include "vorbis/codec.h"
-#include "vorbis/vorbisfile.h"
-
-#include "os.h"
-#include "codec_internal.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 8500 /* a shade over 8k; anyone using pages well
- over 8k gets what they deserve */
-static long _get_data(OggVorbis_File *vf){
- errno=0;
- if(vf->datasource){
- char *buffer=ogg_sync_buffer(&vf->oy,CHUNKSIZE);
- long bytes=(vf->callbacks.read_func)(buffer,1,CHUNKSIZE,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 void _seek_helper(OggVorbis_File *vf,long offset){
- if(vf->datasource){
- (vf->callbacks.seek_func)(vf->datasource, offset, SEEK_SET);
- vf->offset=offset;
- ogg_sync_reset(&vf->oy);
- }else{
- /* shouldn't happen unless someone writes a broken callback */
- return;
- }
-}
-
-/* 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 long _get_next_page(OggVorbis_File *vf,ogg_page *og,int 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 */
- long ret=vf->offset;
- vf->offset+=more;
- return(ret);
-
- }
- }
- }
-}
-
-/* find the latest page beginning before the current stream cursor
- 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 long _get_prev_page(OggVorbis_File *vf,ogg_page *og){
- long begin=vf->offset;
- long ret;
- int offset=-1;
-
- while(offset==-1){
- begin-=CHUNKSIZE;
- _seek_helper(vf,begin);
- while(vf->offset<begin+CHUNKSIZE){
- ret=_get_next_page(vf,og,begin+CHUNKSIZE-vf->offset);
- if(ret==OV_EREAD)return(OV_EREAD);
- if(ret<0){
- break;
- }else{
- offset=ret;
- }
- }
- }
-
- /* we have the offset. Actually snork and hold the page now */
- _seek_helper(vf,offset);
- ret=_get_next_page(vf,og,CHUNKSIZE);
- if(ret<0)
- /* this shouldn't be possible */
- return(OV_EFAULT);
-
- return(offset);
-}
-
-/* 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,
- long begin,
- long searched,
- long end,
- long currentno,
- long m){
- long endsearched=end;
- long next=end;
- ogg_page og;
- long ret;
-
- /* the below guards against garbage seperating the last and
- first pages of two links. */
- while(searched<endsearched){
- long bisect;
-
- if(endsearched-searched<CHUNKSIZE){
- bisect=searched;
- }else{
- bisect=(searched+endsearched)/2;
- }
-
- _seek_helper(vf,bisect);
- ret=_get_next_page(vf,&og,-1);
- if(ret==OV_EREAD)return(OV_EREAD);
- if(ret<0 || ogg_page_serialno(&og)!=currentno){
- endsearched=bisect;
- if(ret>=0)next=ret;
- }else{
- searched=ret+og.header_len+og.body_len;
- }
- }
-
- _seek_helper(vf,next);
- ret=_get_next_page(vf,&og,-1);
- if(ret==OV_EREAD)return(OV_EREAD);
-
- if(searched>=end || ret<0){
- vf->links=m+1;
- vf->offsets=_ogg_malloc((m+2)*sizeof(ogg_int64_t));
- vf->offsets[m+1]=searched;
- }else{
- ret=_bisect_forward_serialno(vf,next,vf->offset,
- end,ogg_page_serialno(&og),m+1);
- if(ret==OV_EREAD)return(OV_EREAD);
- }
-
- vf->offsets[m]=begin;
- return(0);
-}
-
-/* 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,ogg_page *og_ptr){
- ogg_page og;
- ogg_packet op;
- int i,ret=0;
-
- if(!og_ptr){
- ret=_get_next_page(vf,&og,CHUNKSIZE);
- if(ret==OV_EREAD)return(OV_EREAD);
- if(ret<0)return OV_ENOTVORBIS;
- og_ptr=&og;
- }
-
- if(serialno)*serialno=ogg_page_serialno(og_ptr);
- ogg_stream_init(&vf->os,ogg_page_serialno(og_ptr));
- vf->ready_state=STREAMSET;
-
- /* extract the initial header from the first page and verify that the
- Ogg bitstream is in fact Vorbis data */
-
- vorbis_info_init(vi);
- vorbis_comment_init(vc);
-
- i=0;
- while(i<3){
- ogg_stream_pagein(&vf->os,og_ptr);
- while(i<3){
- 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++;
- }
- if(i<3)
- if(_get_next_page(vf,og_ptr,1)<0){
- ret=OV_EBADHEADER;
- goto bail_header;
- }
- }
- return 0;
-
- bail_header:
- vorbis_info_clear(vi);
- vorbis_comment_clear(vc);
- ogg_stream_clear(&vf->os);
- return ret;
-}
-
-/* last step of the OggVorbis_File initialization; get all the
- vorbis_info structs and PCM positions. Only called by the seekable
- initialization (local stream storage is hacked slightly; pay
- attention to how that's done) */
-
-/* this is void and does not propogate errors up because we want to be
- able to open and use damaged bitstreams as well as we can. Just
- watch out for missing information for links in the OggVorbis_File
- struct */
-static void _prefetch_all_headers(OggVorbis_File *vf, long dataoffset){
- ogg_page og;
- int i,ret;
-
- vf->vi=_ogg_realloc(vf->vi,vf->links*sizeof(vorbis_info));
- vf->vc=_ogg_realloc(vf->vc,vf->links*sizeof(vorbis_info));
- vf->dataoffsets=_ogg_malloc(vf->links*sizeof(ogg_int64_t));
- vf->pcmlengths=_ogg_malloc(vf->links*sizeof(ogg_int64_t));
- vf->serialnos=_ogg_malloc(vf->links*sizeof(long));
-
- for(i=0;i<vf->links;i++){
- if(i==0){
- /* we already grabbed the initial header earlier. Just set the offset */
- vf->dataoffsets[i]=dataoffset;
- }else{
-
- /* seek to the location of the initial header */
-
- _seek_helper(vf,vf->offsets[i]);
- if(_fetch_headers(vf,vf->vi+i,vf->vc+i,NULL,NULL)<0){
- vf->dataoffsets[i]=-1;
- }else{
- vf->dataoffsets[i]=vf->offset;
- ogg_stream_clear(&vf->os);
- }
- }
-
- /* get the serial number and PCM length of this link. To do this,
- get the last page of the stream */
- {
- long end=vf->offsets[i+1];
- _seek_helper(vf,end);
-
- while(1){
- ret=_get_prev_page(vf,&og);
- if(ret<0){
- /* this should not be possible */
- vorbis_info_clear(vf->vi+i);
- vorbis_comment_clear(vf->vc+i);
- break;
- }
- if(ogg_page_granulepos(&og)!=-1){
- vf->serialnos[i]=ogg_page_serialno(&og);
- vf->pcmlengths[i]=ogg_page_granulepos(&og);
- break;
- }
- vf->offset=ret;
- }
- }
- }
-}
-
-static void _make_decode_ready(OggVorbis_File *vf){
- if(vf->ready_state!=STREAMSET)return;
- if(vf->seekable){
- vorbis_synthesis_init(&vf->vd,vf->vi+vf->current_link);
- }else{
- vorbis_synthesis_init(&vf->vd,vf->vi);
- }
- vorbis_block_init(&vf->vd,&vf->vb);
- vf->ready_state=INITSET;
- return;
-}
-
-static int _open_seekable2(OggVorbis_File *vf){
- long serialno=vf->current_serialno,end;
- long dataoffset=vf->offset;
- ogg_page og;
-
- /* we're partially open and have a first link header state in
- storage in vf */
- /* we can seek, so set out learning all about this file */
- (vf->callbacks.seek_func)(vf->datasource,0,SEEK_END);
- vf->offset=vf->end=(vf->callbacks.tell_func)(vf->datasource);
-
- /* We get the offset for the last page of the physical bitstream.
- Most OggVorbis files will contain a single logical bitstream */
- end=_get_prev_page(vf,&og);
- if(end<0){
- ov_clear(vf);
- return(end);
- }
-
- /* more than one logical bitstream? */
- if(ogg_page_serialno(&og)!=serialno){
-
- /* Chained bitstream. Bisect-search each logical bitstream
- section. Do so based on serial number only */
- if(_bisect_forward_serialno(vf,0,0,end+1,serialno,0)<0){
- ov_clear(vf);
- return(OV_EREAD);
- }
-
- }else{
-
- /* Only one logical bitstream */
- if(_bisect_forward_serialno(vf,0,end,end+1,serialno,0)){
- ov_clear(vf);
- return(OV_EREAD);
- }
-
- }
-
- /* the initial header memory is referenced by vf after; don't free it */
- _prefetch_all_headers(vf,dataoffset);
- return(ov_raw_seek(vf,0));
-}
-
-/* clear out the current logical bitstream decoder */
-static void _decode_clear(OggVorbis_File *vf){
- ogg_stream_clear(&vf->os);
- vorbis_dsp_clear(&vf->vd);
- vorbis_block_clear(&vf->vb);
- vf->ready_state=OPENED;
-
- vf->bittrack=0.f;
- vf->samptrack=0.f;
-}
-
-/* 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 _process_packet(OggVorbis_File *vf,int readp){
- ogg_page og;
-
- /* handle one packet. Try to fetch it from current stream state */
- /* extract packets from page */
- while(1){
-
- /* process a packet if we can. If the machine isn't loaded,
- neither is a page */
- if(vf->ready_state==INITSET){
- ogg_packet op;
- int result=ogg_stream_packetout(&vf->os,&op);
- ogg_int64_t granulepos;
-
- if(result==-1)return(OV_HOLE); /* hole in the data. */
- if(result>0){
- /* got a packet. process it */
- granulepos=op.granulepos;
- if(!vorbis_synthesis(&vf->vb,&op)){ /* 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);
- vorbis_synthesis_blockin(&vf->vd,&vf->vb);
- vf->samptrack+=vorbis_synthesis_pcmout(&vf->vd,NULL)-oldsamples;
- vf->bittrack+=op.bytes*8;
- }
-
- /* update the pcm offset. */
- if(granulepos!=-1 && !op.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.e_o_s clause
- above */
-
- samples=vorbis_synthesis_pcmout(&vf->vd,NULL);
-
- granulepos-=samples;
- for(i=0;i<link;i++)
- granulepos+=vf->pcmlengths[i];
- vf->pcm_offset=granulepos;
- }
- return(1);
- }
- }
- }
-
- if(vf->ready_state>=STREAMSET){
- if(!readp)return(0);
- if(_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;
-
- /* has our decoding just traversed a bitstream boundary? */
- if(vf->ready_state==INITSET){
- if(vf->current_serialno!=ogg_page_serialno(&og)){
- _decode_clear(vf);
-
- if(!vf->seekable){
- vorbis_info_clear(vf->vi);
- vorbis_comment_clear(vf->vc);
- }
- }
- }
- }
-
- /* 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){
- vf->current_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]==vf->current_serialno)break;
- if(link==vf->links)return(OV_EBADLINK); /* sign of a bogus
- stream. error out,
- leave machine
- uninitialized */
-
- vf->current_link=link;
-
- ogg_stream_init(&vf->os,vf->current_serialno);
- ogg_stream_reset(&vf->os);
- vf->ready_state=STREAMSET;
-
- }else{
- /* we're streaming */
- /* fetch the three header packets, build the info struct */
-
- _fetch_headers(vf,vf->vi,vf->vc,&vf->current_serialno,&og);
- vf->current_link++;
- link=0;
- }
- }
-
- _make_decode_ready(vf);
- }
- ogg_stream_pagein(&vf->os,&og);
- }
-}
-
-static int _fseek64_wrap(FILE *f,ogg_int64_t off,int whence){
- if(f==NULL)return(-1);
- return fseek(f,(int)off,whence);
-}
-
-static int _ov_open1(void *f,OggVorbis_File *vf,char *initial,
- long ibytes, ov_callbacks callbacks){
- long offset=(f?callbacks.seek_func(f,0,SEEK_CUR):-1);
- int ret;
-
- memset(vf,0,sizeof(OggVorbis_File));
- 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 (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(offset!=-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(vorbis_info));
- vf->vc=_ogg_calloc(vf->links,sizeof(vorbis_info));
-
- /* Try to fetch the headers, maintaining all the storage */
- if((ret=_fetch_headers(vf,vf->vi,vf->vc,&vf->current_serialno,NULL))<0){
- vf->datasource=NULL;
- ov_clear(vf);
- }else if(vf->ready_state < PARTOPEN)
- vf->ready_state=PARTOPEN;
- return(ret);
-}
-
-static int _ov_open2(OggVorbis_File *vf){
- if(vf->ready_state < OPENED)
- vf->ready_state=OPENED;
- if(vf->seekable){
- int ret=_open_seekable2(vf);
- if(ret){
- vf->datasource=NULL;
- ov_clear(vf);
- }
- return(ret);
- }
- 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->datasource);
- memset(vf,0,sizeof(OggVorbis_File));
- }
-#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,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,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);
-}
-
-/* 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. */
-
-int ov_test_callbacks(void *f,OggVorbis_File *vf,char *initial,long ibytes,
- ov_callbacks callbacks)
-{
- return _ov_open1(f,vf,initial,ibytes,callbacks);
-}
-
-int ov_test(FILE *f,OggVorbis_File *vf,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;
- for(i=0;i<vf->links;i++)
- bits+=(vf->offsets[i+1]-vf->dataoffsets[i])*8;
- return(rint(bits/ov_time_total(vf,-1)));
- }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){
- long 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]);
- }
-}
-
-/* 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((float)(vf->pcmlengths[i])/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,long 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->offsets[vf->links])return(OV_EINVAL);
-
- /* clear out decoding machine state */
- vf->pcm_offset=-1;
- _decode_clear(vf);
-
- _seek_helper(vf,pos);
-
- /* 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
- a 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;
- int eosflag;
-
- memset(&work_os,0,sizeof(work_os));/* so that it's safe to clear
- it later even if we don't
- init it */
-
- 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(eosflag)
- 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;
-
- for(i=0;i<link;i++)
- granulepos+=vf->pcmlengths[i];
- vf->pcm_offset=granulepos-accblock;
- break;
- }
- lastblock=thisblock;
- continue;
- }
- }
-
- if(!lastblock){
- if(_get_next_page(vf,&og,-1)<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)){
- _decode_clear(vf); /* clear out stream state */
- ogg_stream_clear(&work_os);
- }
-
- if(vf->ready_state<STREAMSET){
- int link;
-
- vf->current_serialno=ogg_page_serialno(&og);
- for(link=0;link<vf->links;link++)
- if(vf->serialnos[link]==vf->current_serialno)break;
- if(link==vf->links)goto seek_error; /* sign of a bogus stream.
- error out, leave
- machine uninitialized */
- vf->current_link=link;
-
- ogg_stream_init(&vf->os,vf->current_serialno);
- ogg_stream_reset(&vf->os);
- ogg_stream_init(&work_os,vf->current_serialno);
- ogg_stream_reset(&work_os);
- vf->ready_state=STREAMSET;
-
- }
-
- ogg_stream_pagein(&vf->os,&og);
- ogg_stream_pagein(&work_os,&og);
- eosflag=ogg_page_eos(&og);
- }
- }
-
- ogg_stream_clear(&work_os);
- return(0);
-
- seek_error:
- /* dump the machine so we're in a known state */
- vf->pcm_offset=-1;
- ogg_stream_clear(&work_os);
- _decode_clear(vf);
- return OV_EBADLINK;
-}
-
-/* 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 preceeding 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;
- long ret;
- 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];
- if(pos>=total)break;
- }
-
- /* search within the logical bitstream for the page with the highest
- pcm_pos preceeding (or equal to) pos. 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 by HB (Nicholas Vinen) */
- {
- ogg_int64_t target=pos-total;
- long end=vf->offsets[link+1];
- long begin=vf->offsets[link];
- ogg_int64_t endtime = vf->pcmlengths[link];
- ogg_int64_t begintime = 0;
- long best=begin;
-
- ogg_page og;
- while(begin<end){
- long bisect;
-
- if(end-begin<CHUNKSIZE){
- bisect=begin;
- }else{
- /* take a (pretty decent) guess. */
- bisect=begin +
- (target-begintime)*(end-begin)/(endtime-begintime) - CHUNKSIZE;
- if(bisect<=begin)
- bisect=begin+1;
- }
- _seek_helper(vf,bisect);
-
- while(begin<end){
- ret=_get_next_page(vf,&og,end-bisect);
- if(ret==OV_EREAD) goto seek_error;
- if(ret<0){
- if(bisect<=begin+1)
- end=begin; /* found it */
- else{
- if(bisect==0)goto seek_error;
- bisect-=CHUNKSIZE;
- if(bisect<=begin)bisect=begin+1;
- _seek_helper(vf,bisect);
- }
- }else{
- ogg_int64_t granulepos=ogg_page_granulepos(&og);
- if(granulepos<target){
- best=ret; /* raw offset of packet with granulepos */
- begin=vf->offset; /* raw offset of next page */
- begintime=granulepos;
-
- if(target-begin>44100)break;
- bisect=begin; /* *not* begin + 1 */
- }else{
- if(bisect<=begin+1)
- end=begin; /* found it */
- else{
- if(end==vf->offset){ /* we're pretty close - we'd be stuck in */
- end=ret;
- bisect-=CHUNKSIZE; /* an endless loop otherwise. */
- if(bisect<=begin)bisect=begin+1;
- _seek_helper(vf,bisect);
- }else{
- end=ret;
- endtime=granulepos;
- break;
- }
- }
- }
- }
- }
- }
-
- /* found our page. seek to it, update pcm offset. Easier case than
- raw_seek, don't keep packets preceeding granulepos. */
- {
- ogg_page og;
- ogg_packet op;
- /* clear out decoding machine state */
- _decode_clear(vf);
- /* seek */
- _seek_helper(vf,best);
-
- if(_get_next_page(vf,&og,-1)<0)return(OV_EOF); /* shouldn't happen */
- vf->current_serialno=ogg_page_serialno(&og);
- vf->current_link=link;
-
- ogg_stream_init(&vf->os,vf->current_serialno);
- ogg_stream_reset(&vf->os);
- vf->ready_state=STREAMSET;
- ogg_stream_pagein(&vf->os,&og);
-
- /* pull out all but last packet; the one with granulepos */
- while(1){
- ret=ogg_stream_packetpeek(&vf->os,&op);
- if(ret==0){
- /* !!! the packet finishing this page originated on a
- preceeding 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. */
- while(1){
- ret=_get_prev_page(vf,&og);
- if(ret<0)goto seek_error;
- if(ogg_page_granulepos(&og)>-1 ||
- !ogg_page_continued(&og)){
- return ov_raw_seek(vf,ret);
- }
- vf->offset=ret;
- }
- }
- if(ret<0)goto seek_error;
- if(op.granulepos!=-1){
- vf->pcm_offset=op.granulepos+total;
- break;
- }else
- ret=ogg_stream_packetout(&vf->os,NULL);
- }
- }
- }
-
- /* verify result */
- if(vf->pcm_offset>pos || pos>ov_pcm_total(vf,-1)){
- ret=OV_EFAULT;
- goto seek_error;
- }
- return(0);
-
- seek_error:
- /* dump machine so we're in a known state */
- vf->pcm_offset=-1;
- _decode_clear(vf);
- return ret;
-}
-
-/* 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);
- codec_setup_info *ci=vf->vi->codec_setup;
- if(ret<0)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(lastblock)vf->pcm_offset+=(lastblock+thisblock)>>2;
-
- if(vf->pcm_offset+((thisblock+ci->blocksizes[1])>>2)>=pos)break;
-
- ogg_stream_packetout(&vf->os,NULL);
-
-
- /* 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;
- for(i=0;i<vf->current_link;i++)
- vf->pcm_offset+=vf->pcmlengths[i];
- }
-
- 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(vf->current_serialno!=ogg_page_serialno(&og))_decode_clear(vf);
-
- if(vf->ready_state<STREAMSET){
- int link;
-
- vf->current_serialno=ogg_page_serialno(&og);
- for(link=0;link<vf->links;link++)
- if(vf->serialnos[link]==vf->current_serialno)break;
- if(link==vf->links)return(OV_EBADLINK);
- vf->current_link=link;
-
- ogg_stream_init(&vf->os,vf->current_serialno);
- ogg_stream_reset(&vf->os);
- vf->ready_state=STREAMSET;
- lastblock=0;
- }
- ogg_stream_pagein(&vf->os,&og);
- }
- }
-
- /* discard samples until we reach the desired position. Crossing a
- logical bitstream boundary with abandon is OK. */
- _make_decode_ready(vf);
- while(vf->pcm_offset<pos){
- float **pcm;
- long target=pos-vf->pcm_offset;
- long samples=vorbis_synthesis_pcmout(&vf->vd,&pcm);
-
- if(samples>target)samples=target;
- vorbis_synthesis_read(&vf->vd,samples);
- vf->pcm_offset+=samples;
-
- if(samples<target)
- if(_process_packet(vf,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=ov_pcm_total(vf,-1);
- double time_total=ov_time_total(vf,-1);
-
- if(vf->ready_state<OPENED)return(OV_EINVAL);
- if(!vf->seekable)return(OV_ENOSEEK);
- if(seconds<0 || seconds>time_total)return(OV_EINVAL);
-
- /* which bitstream section does this time offset occur in? */
- for(link=vf->links-1;link>=0;link--){
- pcm_total-=vf->pcmlengths[link];
- time_total-=ov_time_total(vf,link);
- if(seconds>=time_total)break;
- }
-
- /* 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=ov_pcm_total(vf,-1);
- double time_total=ov_time_total(vf,-1);
-
- if(vf->ready_state<OPENED)return(OV_EINVAL);
- if(!vf->seekable)return(OV_ENOSEEK);
- if(seconds<0 || seconds>time_total)return(OV_EINVAL);
-
- /* which bitstream section does this time offset occur in? */
- for(link=vf->links-1;link>=0;link--){
- pcm_total-=vf->pcmlengths[link];
- time_total-=ov_time_total(vf,link);
- if(seconds>=time_total)break;
- }
-
- /* 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){
- /* translate time to PCM position and call ov_pcm_seek */
-
- int link=-1;
- 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];
- 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;
- }
-}
-
-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).
-
- 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(OggVorbis_File *vf,char *buffer,int length,
- int bigendianp,int word,int sgned,int *bitstream){
- int i,j;
- int host_endian = host_is_big_endian();
-
- if(vf->ready_state<OPENED)return(OV_EINVAL);
- if(vf->ready_state==OPENED)return(OV_EOF); /* stream is always
- initialized after
- other calls (after
- open)... unless there
- was no page at the end
- to initialize state
- with. */
-
- while(1){
- if(vf->ready_state>=STREAMSET){
- float **pcm;
- long samples=vorbis_synthesis_pcmout(&vf->vd,&pcm);
- if(samples){
- /* 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(samples>length/bytespersample)samples=length/bytespersample;
-
- /* 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);
- vf->pcm_offset+=samples;
- if(bitstream)*bitstream=vf->current_link;
- return(samples*bytespersample);
- }
- }
-
- /* suck in another packet */
- switch(_process_packet(vf,1)){
- case 0:case OV_EOF:
- return(0);
- case OV_HOLE:
- return(OV_HOLE);
- case OV_EBADLINK:
- return(OV_EBADLINK);
- }
- }
-}
-
-
-
-
diff --git a/lib/window.c b/lib/window.c
deleted file mode 100644
index fe4cb269..00000000
--- a/lib/window.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: window functions
- last mod: $Id: window.c,v 1.13 2001/02/26 03:50:43 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <math.h>
-#include "os.h"
-#include "misc.h"
-
-float *_vorbis_window(int type, int window,int left,int right){
- float *ret=_ogg_calloc(window,sizeof(float));
-
- switch(type){
- case 0:
- /* The 'vorbis window' (window 0) is sin(sin(x)*sin(x)*2pi) */
- {
- int leftbegin=window/4-left/2;
- int rightbegin=window-window/4-right/2;
- int i;
-
- for(i=0;i<left;i++){
- float x=(i+.5f)/left*M_PI/2.;
- x=sin(x);
- x*=x;
- x*=M_PI/2.f;
- x=sin(x);
- ret[i+leftbegin]=x;
- }
-
- for(i=leftbegin+left;i<rightbegin;i++)
- ret[i]=1.f;
-
- for(i=0;i<right;i++){
- float x=(right-i-.5f)/right*M_PI/2.;
- x=sin(x);
- x*=x;
- x*=M_PI/2.f;
- x=sin(x);
- ret[i+rightbegin]=x;
- }
- }
- break;
- default:
- _ogg_free(ret);
- return(NULL);
- }
- return(ret);
-}
-
diff --git a/lib/window.h b/lib/window.h
deleted file mode 100644
index 541045b9..00000000
--- a/lib/window.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: window functions
- last mod: $Id: window.h,v 1.8 2001/02/26 03:50:43 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_WINDOW_
-#define _V_WINDOW_
-
-extern float *_vorbis_window(int type,int window,int left,int right);
-
-#endif
diff --git a/mac/compat/strdup.c b/mac/compat/strdup.c
deleted file mode 100644
index 2ef4279c..00000000
--- a/mac/compat/strdup.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include <ogg/os_types.h>
-#include <sys/types.h>
-#include <string.h>
-#include <stdlib.h>
-
-char *strdup(const char *inStr)
-{
- char *outStr = NULL;
-
- if (inStr == NULL) {
- return NULL;
- }
-
- outStr = _ogg_malloc(strlen(inStr) + 1);
-
- if (outStr != NULL) {
- strcpy(outStr, inStr);
- }
-
- return outStr;
-}
diff --git a/mac/compat/sys/types.h b/mac/compat/sys/types.h
deleted file mode 100644
index b0d4f920..00000000
--- a/mac/compat/sys/types.h
+++ /dev/null
@@ -1 +0,0 @@
-#ifndef __SYS_TYPES_H__ #define __SYS_TYPES_H__ 1 #include <MacTypes.h> #include <alloca.h> #include <string.h> typedef short int16_t; typedef long int32_t; typedef long long int64_t; #define vorbis_size32_t long #if defined(__cplusplus) extern "C" { #endif #pragma options align=power char *strdup(const char *inStr); #pragma options align=reset #if defined(__cplusplus) } #endif #endif /* __SYS_TYPES_H__ */ \ No newline at end of file
diff --git a/mac/decoder_example.mcp b/mac/decoder_example.mcp
deleted file mode 100644
index 693a4d94..00000000
--- a/mac/decoder_example.mcp
+++ /dev/null
Binary files differ
diff --git a/mac/encoder_example.mcp b/mac/encoder_example.mcp
deleted file mode 100644
index 8f055e8b..00000000
--- a/mac/encoder_example.mcp
+++ /dev/null
Binary files differ
diff --git a/mac/libvorbis.mcp b/mac/libvorbis.mcp
deleted file mode 100644
index efdc8674..00000000
--- a/mac/libvorbis.mcp
+++ /dev/null
Binary files differ
diff --git a/mac/libvorbis.mcp.exp b/mac/libvorbis.mcp.exp
deleted file mode 100644
index 88d6e539..00000000
--- a/mac/libvorbis.mcp.exp
+++ /dev/null
@@ -1,52 +0,0 @@
-### From "vorbis/codec.h"
-
-# Vorbis PRIMITIVES: general
-
-vorbis_info_init
-vorbis_info_clear
-vorbis_comment_init
-vorbis_comment_add
-vorbis_comment_add_tag
-vorbis_comment_query
-vorbis_comment_query_count
-vorbis_comment_clear
-
-vorbis_block_init
-vorbis_block_clear
-vorbis_dsp_clear
-
-# Vorbis PRIMITIVES: analysis/DSP layer
-
-vorbis_analysis_init
-vorbis_analysis_headerout
-vorbis_analysis_buffer
-vorbis_analysis_wrote
-vorbis_analysis_blockout
-vorbis_analysis
-
-# Vorbis PRIMITIVES: synthesis layer
-
-vorbis_synthesis_headerin
-vorbis_synthesis_init
-vorbis_synthesis
-vorbis_synthesis_blockin
-vorbis_synthesis_pcmout
-vorbis_synthesis_read
-
-### From "psy.h" (for VorbisEncLib)
-
-_vp_psy_init
-_vp_psy_clear
-#_vi_psy_dup
-
-_vi_psy_free
-_vi_psy_copy
-
-_vp_compute_mask
-_vp_apply_floor
-
-### From "xxx.h" (for VorbisEncLib)
-_time_P
-_floor_P
-_residue_P
-_mapping_P
diff --git a/mac/libvorbisenc.mcp b/mac/libvorbisenc.mcp
deleted file mode 100755
index 81ad175f..00000000
--- a/mac/libvorbisenc.mcp
+++ /dev/null
Binary files differ
diff --git a/mac/libvorbisenc.mcp.exp b/mac/libvorbisenc.mcp.exp
deleted file mode 100755
index d586a1b1..00000000
--- a/mac/libvorbisenc.mcp.exp
+++ /dev/null
@@ -1,5 +0,0 @@
-### From "vorbis/vorbisenc.h"
-
-vorbis_encode_init
-
-vorbis_encode_ctl
diff --git a/mac/libvorbisfile.mcp b/mac/libvorbisfile.mcp
deleted file mode 100755
index a8741579..00000000
--- a/mac/libvorbisfile.mcp
+++ /dev/null
Binary files differ
diff --git a/mac/libvorbisfile.mcp.exp b/mac/libvorbisfile.mcp.exp
deleted file mode 100755
index 8e3c1124..00000000
--- a/mac/libvorbisfile.mcp.exp
+++ /dev/null
@@ -1,30 +0,0 @@
-### From "vorbis/vorbisfile.h"
-
-ov_clear
-ov_open
-ov_open_callbacks
-
-ov_bitrate
-ov_bitrate_instant
-ov_streams
-ov_seekable
-ov_serialnumber
-
-ov_raw_total
-ov_pcm_total
-ov_time_total
-
-ov_raw_seek
-ov_pcm_seek
-ov_pcm_seek_page
-ov_time_seek
-ov_time_seek_page
-
-ov_raw_tell
-ov_pcm_tell
-ov_time_tell
-
-ov_info
-ov_comment
-
-ov_read
diff --git a/todo.txt b/todo.txt
deleted file mode 100644
index d0e1665c..00000000
--- a/todo.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Development hit list for 1.0:
-
-libvorbis:
-
-Meaningful error code returns
-
-still some padding at EOS
-
-Option for brute-forcing vq search on maptype 2 (helps on undertrained
-sets).
-
-encoder switch interface for binary compat through changes; ioctl()-like?
-
-API changes:
- break up some of the more monolithic calls (eg, allow access
- to MDCT domain data, additional low level framing capability)
- convenience calls for text comments
-
-other:
-
-command line suite
-'crashme' \ No newline at end of file
diff --git a/vorbis.m4 b/vorbis.m4
deleted file mode 100644
index 1c0d8460..00000000
--- a/vorbis.m4
+++ /dev/null
@@ -1,100 +0,0 @@
-# Configure paths for libvorbis
-# Jack Moffitt <jack@icecast.org> 10-21-2000
-# Shamelessly stolen from Owen Taylor and Manish Singh
-
-dnl AM_PATH_VORBIS([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-dnl Test for libvorbis, and define VORBIS_CFLAGS and VORBIS_LIBS
-dnl
-AC_DEFUN(AM_PATH_VORBIS,
-[dnl
-dnl Get the cflags and libraries
-dnl
-AC_ARG_WITH(vorbis-prefix,[ --with-vorbis-prefix=PFX Prefix where libvorbis is installed (optional)], vorbis_prefix="$withval", vorbis_prefix="")
-AC_ARG_ENABLE(vorbistest, [ --disable-vorbistest Do not try to compile and run a test Vorbis program],, enable_vorbistest=yes)
-
- if test "x$vorbis_prefix" != "xNONE" ; then
- vorbis_args="$vorbis_args --prefix=$vorbis_prefix"
- VORBIS_CFLAGS="-I$vorbis_prefix/include"
- VORBIS_LIBDIR="-L$vorbis_prefix/lib"
- elif test "$prefix" != ""; then
- vorbis_args="$vorbis_args --prefix=$prefix"
- VORBIS_CFLAGS="-I$prefix/include"
- VORBIS_LIBDIR="-L$prefix/lib"
- fi
-
- VORBIS_LIBS="$VORBIS_LIBDIR -lvorbis -lm"
- VORBISFILE_LIBS="-lvorbisfile"
- VORBISENC_LIBS="-lvorbisenc"
-
- AC_MSG_CHECKING(for Vorbis)
- no_vorbis=""
-
-
- if test "x$enable_vorbistest" = "xyes" ; then
- ac_save_CFLAGS="$CFLAGS"
- ac_save_LIBS="$LIBS"
- CFLAGS="$CFLAGS $VORBIS_CFLAGS"
- LIBS="$LIBS $VORBIS_LIBS $OGG_LIBS"
-dnl
-dnl Now check if the installed Vorbis is sufficiently new.
-dnl
- rm -f conf.vorbistest
- AC_TRY_RUN([
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <vorbis/codec.h>
-
-int main ()
-{
- system("touch conf.vorbistest");
- return 0;
-}
-
-],, no_vorbis=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
-
- if test "x$no_vorbis" = "x" ; then
- AC_MSG_RESULT(yes)
- ifelse([$1], , :, [$1])
- else
- AC_MSG_RESULT(no)
- if test -f conf.vorbistest ; then
- :
- else
- echo "*** Could not run Vorbis test program, checking why..."
- CFLAGS="$CFLAGS $VORBIS_CFLAGS"
- LIBS="$LIBS $VORBIS_LIBS $OGG_LIBS"
- AC_TRY_LINK([
-#include <stdio.h>
-#include <vorbis/codec.h>
-], [ return 0; ],
- [ echo "*** The test program compiled, but did not run. This usually means"
- echo "*** that the run-time linker is not finding Vorbis or finding the wrong"
- echo "*** version of Vorbis. If it is not finding Vorbis, you'll need to set your"
- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
- echo "*** to the installed location Also, make sure you have run ldconfig if that"
- echo "*** is required on your system"
- echo "***"
- echo "*** If you have an old version installed, it is best to remove it, although"
- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
- [ echo "*** The test program failed to compile or link. See the file config.log for the"
- echo "*** exact error that occured. This usually means Vorbis was incorrectly installed"
- echo "*** or that you have moved Vorbis since it was installed." ])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
- VORBIS_CFLAGS=""
- VORBIS_LIBS=""
- VORBISFILE_LIBS=""
- VORBISENC_LIBS=""
- ifelse([$2], , :, [$2])
- fi
- AC_SUBST(VORBIS_CFLAGS)
- AC_SUBST(VORBIS_LIBS)
- AC_SUBST(VORBISFILE_LIBS)
- AC_SUBST(VORBISENC_LIBS)
- rm -f conf.vorbistest
-])
diff --git a/vq/.cvsignore b/vq/.cvsignore
deleted file mode 100644
index 02b05239..00000000
--- a/vq/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-Makefile
-Makefile.in
-.deps
-.libs
diff --git a/vq/Makefile.am b/vq/Makefile.am
deleted file mode 100644
index 232b64c2..00000000
--- a/vq/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-AUTOMAKE_OPTIONS = foreign
-
-INCLUDES = -I../lib -I$(top_srcdir)/include @OGG_CFLAGS@
-
-EXTRA_PROGRAMS = lspvqtrain genericvqtrain residuevqtrain vqbuild\
- vqcascade vqmetrics latticebuild latticepare latticehint\
- latticetune huffbuild residuesplit distribution
-CLEANFILES = $(EXTRA_PROGRAMS)
-
-LDFLAGS = -static
-LDADD = ../lib/libvorbis.la
-
-lspvqtrain_SOURCES = lspdata.c train.c vqgen.c bookutil.c\
- vqgen.h bookutil.h vqext.h
-genericvqtrain_SOURCES = genericdata.c train.c vqgen.c bookutil.c\
- vqgen.h bookutil.h vqext.h
-residuevqtrain_SOURCES = residuedata.c train.c vqgen.c bookutil.c\
- vqgen.h bookutil.h vqext.h
-vqbuild_SOURCES = build.c vqgen.c bookutil.c vqsplit.c\
- vqgen.h bookutil.h vqext.h
-vqcascade_SOURCES = run.c cascade.c vqgen.c bookutil.c\
- vqgen.h bookutil.h
-vqmetrics_SOURCES = run.c metrics.c vqgen.c bookutil.c\
- vqgen.h bookutil.h
-latticebuild_SOURCES = latticebuild.c vqgen.c bookutil.c\
- vqgen.h bookutil.h
-latticepare_SOURCES = latticepare.c vqgen.c bookutil.c vqsplit.c\
- vqgen.h bookutil.h
-latticehint_SOURCES = latticehint.c bookutil.c\
- bookutil.h
-latticetune_SOURCES = latticetune.c vqgen.c bookutil.c\
- vqgen.h bookutil.h
-huffbuild_SOURCES = huffbuild.c vqgen.c bookutil.c\
- vqgen.h bookutil.h
-residuesplit_SOURCES = residuesplit.c vqgen.c bookutil.c\
- vqgen.h bookutil.h
-distribution_SOURCES = distribution.c bookutil.c\
- bookutil.h
-
-EXTRA_DIST = residue_entropy auxpartition.pl
-
-debugvq:
- $(MAKE) vq CFLAGS="@DEBUG@"
-
-profilevq:
- $(MAKE) vq CFLAGS="@PROFILE@"
-
-vq:
- $(MAKE) $(EXTRA_PROGRAMS)
diff --git a/vq/auxpartition.pl b/vq/auxpartition.pl
deleted file mode 100755
index 05c5ed94..00000000
--- a/vq/auxpartition.pl
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/perl
-
-if($#ARGV<0){
- &usage;
-}
-
-$|=1;
-
-$bands=0;
-
-foreach $arg (@ARGV){
- ($entries[$bands],$file[$bands])=split(/,/,$arg);
- $bands++;
-}
-
-# no time to deal with globs right now
-if($bands>0){
- die unless open(ONE,"<".$file[0]);
-}
-if($bands>1){
- die unless open(TWO,"<".$file[1]);
-}
-if($bands>2){
- die unless open(THREE,"<".$file[2]);
-}
-
-
-while (<ONE>) {
- my@nums = ();
- @nums = split(/,/);
- my$cols=$#nums;
- for($i=0;$i<$cols;$i++){
- print 0+$nums[$i].", ";
- }
- if($bands>1){
- $_=<TWO>;
- @nums = ();
- @nums = split(/,/);
- $cols=$#nums;
- for($i=0;$i<$cols;$i++){
- print $nums[$i]+$entries[0].", ";
- }
- if($bands>2){
- $_=<THREE>;
- @nums = ();
- @nums = split(/,/);
- $cols=$#nums;
- for($i=0;$i<$cols;$i++){
- print $nums[$i]+$entries[0]+$entries[1].", ";
- }
- }
- }
- print "\n";
-
-}
-
-if($bands>0){
- close ONE;
-}
-if($bands>1){
- close TWO;
-}
-if($bands>2){
- close THREE;
-}
-
-sub usage{
- print "\nOggVorbis auxbook spectral partitioner\n\n";
- print "auxpartition.pl <part_entries>,file [<part_entries>,file...]\n\n";
- exit(1);
-}
diff --git a/vq/bookutil.c b/vq/bookutil.c
deleted file mode 100644
index 9523739d..00000000
--- a/vq/bookutil.c
+++ /dev/null
@@ -1,738 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: utility functions for loading .vqh and .vqd files
- last mod: $Id: bookutil.c,v 1.24 2001/05/27 06:44:07 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <string.h>
-#include <errno.h>
-#include "bookutil.h"
-
-/* A few little utils for reading files */
-/* read a line. Use global, persistent buffering */
-static char *linebuffer=NULL;
-static int lbufsize=0;
-char *get_line(FILE *in){
- long sofar=0;
- if(feof(in))return NULL;
-
- while(1){
- int gotline=0;
-
- while(!gotline){
- if(sofar+1>=lbufsize){
- if(!lbufsize){
- lbufsize=1024;
- linebuffer=_ogg_malloc(lbufsize);
- }else{
- lbufsize*=2;
- linebuffer=_ogg_realloc(linebuffer,lbufsize);
- }
- }
- {
- long c=fgetc(in);
- switch(c){
- case EOF:
- if(sofar==0)return(NULL);
- /* fallthrough correct */
- case '\n':
- linebuffer[sofar]='\0';
- gotline=1;
- break;
- default:
- linebuffer[sofar++]=c;
- linebuffer[sofar]='\0';
- break;
- }
- }
- }
-
- if(linebuffer[0]=='#'){
- sofar=0;
- }else{
- return(linebuffer);
- }
- }
-}
-
-/* read the next numerical value from the given file */
-static char *value_line_buff=NULL;
-
-int get_line_value(FILE *in,float *value){
- char *next;
-
- if(!value_line_buff)return(-1);
-
- *value=strtod(value_line_buff, &next);
- if(next==value_line_buff){
- value_line_buff=NULL;
- return(-1);
- }else{
- value_line_buff=next;
- while(*value_line_buff>44)value_line_buff++;
- if(*value_line_buff==44)value_line_buff++;
- return(0);
- }
-}
-
-int get_next_value(FILE *in,float *value){
- while(1){
- if(get_line_value(in,value)){
- value_line_buff=get_line(in);
- if(!value_line_buff)return(-1);
- }else{
- return(0);
- }
- }
-}
-
-int get_next_ivalue(FILE *in,long *ivalue){
- float value;
- int ret=get_next_value(in,&value);
- *ivalue=value;
- return(ret);
-}
-
-static float sequence_base=0.f;
-static int v_sofar=0;
-void reset_next_value(void){
- value_line_buff=NULL;
- sequence_base=0.f;
- v_sofar=0;
-}
-
-char *setup_line(FILE *in){
- reset_next_value();
- value_line_buff=get_line(in);
- return(value_line_buff);
-}
-
-
-int get_vector(codebook *b,FILE *in,int start, int n,float *a){
- int i;
- const static_codebook *c=b->c;
-
- while(1){
-
- if(v_sofar==n || get_line_value(in,a)){
- reset_next_value();
- if(get_next_value(in,a))
- break;
- for(i=0;i<start;i++){
- sequence_base=*a;
- get_line_value(in,a);
- }
- }
-
- for(i=1;i<c->dim;i++)
- if(get_line_value(in,a+i))
- break;
-
- if(i==c->dim){
- float temp=a[c->dim-1];
- for(i=0;i<c->dim;i++)a[i]-=sequence_base;
- if(c->q_sequencep)sequence_base=temp;
- v_sofar++;
- return(0);
- }
- sequence_base=0.f;
- }
-
- return(-1);
-}
-
-/* read lines fromt he beginning until we find one containing the
- specified string */
-char *find_seek_to(FILE *in,char *s){
- rewind(in);
- while(1){
- char *line=get_line(in);
- if(line){
- if(strstr(line,s))
- return(line);
- }else
- return(NULL);
- }
-}
-
-
-/* this reads the format as written by vqbuild/latticebuild; innocent
- (legal) tweaking of the file that would not affect its valid
- header-ness will break this routine */
-
-codebook *codebook_load(char *filename){
- codebook *b=_ogg_calloc(1,sizeof(codebook));
- static_codebook *c=(static_codebook *)(b->c=_ogg_calloc(1,sizeof(static_codebook)));
- encode_aux_nearestmatch *a=NULL;
- encode_aux_threshmatch *t=NULL;
- encode_aux_pigeonhole *p=NULL;
- int quant_to_read=0;
- FILE *in=fopen(filename,"r");
- char *line;
- long i;
-
- if(in==NULL){
- fprintf(stderr,"Couldn't open codebook %s\n",filename);
- exit(1);
- }
-
- /* find the codebook struct */
- find_seek_to(in,"static static_codebook _");
-
- /* get the major important values */
- line=get_line(in);
- if(sscanf(line,"%ld, %ld,",
- &(c->dim),&(c->entries))!=2){
- fprintf(stderr,"1: syntax in %s in line:\t %s",filename,line);
- exit(1);
- }
- line=get_line(in);
- line=get_line(in);
- if(sscanf(line,"%d, %ld, %ld, %d, %d,",
- &(c->maptype),&(c->q_min),&(c->q_delta),&(c->q_quant),
- &(c->q_sequencep))!=5){
- fprintf(stderr,"1: syntax in %s in line:\t %s",filename,line);
- exit(1);
- }
-
- /* find the auxiliary encode struct[s] (if any) */
- if(find_seek_to(in,"static encode_aux_nearestmatch _vq_aux")){
- /* how big? */
- c->nearest_tree=a=_ogg_calloc(1,sizeof(encode_aux_nearestmatch));
- line=get_line(in);
- line=get_line(in);
- line=get_line(in);
- line=get_line(in);
- line=get_line(in);
- if(sscanf(line,"%ld, %ld",&(a->aux),&(a->alloc))!=2){
- fprintf(stderr,"2: syntax in %s in line:\t %s",filename,line);
- exit(1);
- }
-
- /* load ptr0 */
- find_seek_to(in,"static long _vq_ptr0");
- reset_next_value();
- a->ptr0=_ogg_malloc(sizeof(long)*a->aux);
- for(i=0;i<a->aux;i++)
- if(get_next_ivalue(in,a->ptr0+i)){
- fprintf(stderr,"out of data while reading codebook %s\n",filename);
- exit(1);
- }
-
- /* load ptr1 */
- find_seek_to(in,"static long _vq_ptr1");
- reset_next_value();
- a->ptr1=_ogg_malloc(sizeof(long)*a->aux);
- for(i=0;i<a->aux;i++)
- if(get_next_ivalue(in,a->ptr1+i)){
- fprintf(stderr,"out of data while reading codebook %s\n",filename);
- exit(1);
- }
-
-
- /* load p */
- find_seek_to(in,"static long _vq_p_");
- reset_next_value();
- a->p=_ogg_malloc(sizeof(long)*a->aux);
- for(i=0;i<a->aux;i++)
- if(get_next_ivalue(in,a->p+i)){
- fprintf(stderr,"out of data while reading codebook %s\n",filename);
- exit(1);
- }
-
- /* load q */
- find_seek_to(in,"static long _vq_q_");
- reset_next_value();
- a->q=_ogg_malloc(sizeof(long)*a->aux);
- for(i=0;i<a->aux;i++)
- if(get_next_ivalue(in,a->q+i)){
- fprintf(stderr,"out of data while reading codebook %s\n",filename);
- exit(1);
- }
- }
-
- if(find_seek_to(in,"static encode_aux_threshmatch _vq_aux")){
- /* how big? */
- c->thresh_tree=t=_ogg_calloc(1,sizeof(encode_aux_threshmatch));
- line=get_line(in);
- line=get_line(in);
- line=get_line(in);
- if(sscanf(line,"%d",&(t->quantvals))!=1){
- fprintf(stderr,"3: syntax in %s in line:\t %s",filename,line);
- exit(1);
- }
- line=get_line(in);
- if(sscanf(line,"%d",&(t->threshvals))!=1){
- fprintf(stderr,"4: syntax in %s in line:\t %s",filename,line);
- exit(1);
- }
- /* load quantthresh */
- find_seek_to(in,"static float _vq_quantthresh_");
- reset_next_value();
- t->quantthresh=_ogg_malloc(sizeof(float)*t->threshvals);
- for(i=0;i<t->threshvals-1;i++)
- if(get_next_value(in,t->quantthresh+i)){
- fprintf(stderr,"out of data 1 while reading codebook %s\n",filename);
- exit(1);
- }
- /* load quantmap */
- find_seek_to(in,"static long _vq_quantmap_");
- reset_next_value();
- t->quantmap=_ogg_malloc(sizeof(long)*t->threshvals);
- for(i=0;i<t->threshvals;i++)
- if(get_next_ivalue(in,t->quantmap+i)){
- fprintf(stderr,"out of data 2 while reading codebook %s\n",filename);
- exit(1);
- }
- }
-
- if(find_seek_to(in,"static encode_aux_pigeonhole _vq_aux")){
- int pigeons=1,i;
- /* how big? */
- c->pigeon_tree=p=_ogg_calloc(1,sizeof(encode_aux_pigeonhole));
- line=get_line(in);
- if(sscanf(line,"%f, %f, %d, %d",&(p->min),&(p->del),
- &(p->mapentries),&(p->quantvals))!=4){
- fprintf(stderr,"5: syntax in %s in line:\t %s",filename,line);
- exit(1);
- }
- line=get_line(in);
- line=get_line(in);
- if(sscanf(line,"%ld",&(p->fittotal))!=1){
- fprintf(stderr,"6: syntax in %s in line:\t %s",filename,line);
- exit(1);
- }
- /* load pigeonmap */
- find_seek_to(in,"static long _vq_pigeonmap_");
- reset_next_value();
- p->pigeonmap=_ogg_malloc(sizeof(long)*p->mapentries);
- for(i=0;i<p->mapentries;i++)
- if(get_next_ivalue(in,p->pigeonmap+i)){
- fprintf(stderr,"out of data (pigeonmap) while reading codebook %s\n",filename);
- exit(1);
- }
- /* load fitlist */
- find_seek_to(in,"static long _vq_fitlist_");
- reset_next_value();
- p->fitlist=_ogg_malloc(sizeof(long)*p->fittotal);
- for(i=0;i<p->fittotal;i++)
- if(get_next_ivalue(in,p->fitlist+i)){
- fprintf(stderr,"out of data (fitlist) while reading codebook %s\n",filename);
- exit(1);
- }
- /* load fitmap */
- find_seek_to(in,"static long _vq_fitmap_");
- reset_next_value();
- for(i=0;i<c->dim;i++)pigeons*=p->quantvals;
- p->fitmap=_ogg_malloc(sizeof(long)*pigeons);
- for(i=0;i<pigeons;i++)
- if(get_next_ivalue(in,p->fitmap+i)){
- fprintf(stderr,"out of data (fitmap) while reading codebook %s\n",filename);
- exit(1);
- }
-
- /* load fitlength */
- find_seek_to(in,"static long _vq_fitlength_");
- reset_next_value();
- p->fitlength=_ogg_malloc(sizeof(long)*pigeons);
- for(i=0;i<pigeons;i++)
- if(get_next_ivalue(in,p->fitlength+i)){
- fprintf(stderr,"out of data (fitlength) while reading codebook %s\n",filename);
- exit(1);
- }
- }
-
- switch(c->maptype){
- case 0:
- quant_to_read=0;
- break;
- case 1:
- quant_to_read=_book_maptype1_quantvals(c);
- break;
- case 2:
- quant_to_read=c->entries*c->dim;
- break;
- }
-
- /* load the quantized entries */
- find_seek_to(in,"static long _vq_quantlist_");
- reset_next_value();
- c->quantlist=_ogg_malloc(sizeof(long)*quant_to_read);
- for(i=0;i<quant_to_read;i++)
- if(get_next_ivalue(in,c->quantlist+i)){
- fprintf(stderr,"out of data while reading codebook %s\n",filename);
- exit(1);
- }
-
- /* load the lengthlist */
- find_seek_to(in,"_lengthlist");
- reset_next_value();
- c->lengthlist=_ogg_malloc(sizeof(long)*c->entries);
- for(i=0;i<c->entries;i++)
- if(get_next_ivalue(in,c->lengthlist+i)){
- fprintf(stderr,"out of data while reading codebook %s\n",filename);
- exit(1);
- }
-
- /* got it all */
- fclose(in);
-
- vorbis_book_init_encode(b,c);
-
- return(b);
-}
-
-void spinnit(char *s,int n){
- static int p=0;
- static long lasttime=0;
- long test;
- struct timeval thistime;
-
- gettimeofday(&thistime,NULL);
- test=thistime.tv_sec*10+thistime.tv_usec/100000;
- if(lasttime!=test){
- lasttime=test;
-
- fprintf(stderr,"%s%d ",s,n);
-
- p++;if(p>3)p=0;
- switch(p){
- case 0:
- fprintf(stderr,"| \r");
- break;
- case 1:
- fprintf(stderr,"/ \r");
- break;
- case 2:
- fprintf(stderr,"- \r");
- break;
- case 3:
- fprintf(stderr,"\\ \r");
- break;
- }
- fflush(stderr);
- }
-}
-
-void build_tree_from_lengths(int vals, long *hist, long *lengths){
- int i,j;
- long *membership=_ogg_malloc(vals*sizeof(long));
- long *histsave=alloca(vals*sizeof(long));
- memcpy(histsave,hist,vals*sizeof(long));
-
- for(i=0;i<vals;i++)membership[i]=i;
-
- /* find codeword lengths */
- /* much more elegant means exist. Brute force n^2, minimum thought */
- for(i=vals;i>1;i--){
- int first=-1,second=-1;
- long least=-1;
-
- spinnit("building... ",i);
-
- /* find the two nodes to join */
- for(j=0;j<vals;j++)
- if(least==-1 || hist[j]<least){
- least=hist[j];
- first=membership[j];
- }
- least=-1;
- for(j=0;j<vals;j++)
- if((least==-1 || hist[j]<least) && membership[j]!=first){
- least=hist[j];
- second=membership[j];
- }
- if(first==-1 || second==-1){
- fprintf(stderr,"huffman fault; no free branch\n");
- exit(1);
- }
-
- /* join them */
- least=hist[first]+hist[second];
- for(j=0;j<vals;j++)
- if(membership[j]==first || membership[j]==second){
- membership[j]=first;
- hist[j]=least;
- lengths[j]++;
- }
- }
- for(i=0;i<vals-1;i++)
- if(membership[i]!=membership[i+1]){
- fprintf(stderr,"huffman fault; failed to build single tree\n");
- exit(1);
- }
-
- /* for sanity check purposes: how many bits would it have taken to
- encode the training set? */
- {
- long bitsum=0;
- long samples=0;
- for(i=0;i<vals;i++){
- bitsum+=(histsave[i]-1)*lengths[i];
- samples+=histsave[i]-1;
- }
-
- if(samples){
- fprintf(stderr,"\rTotal samples in training set: %ld \n",samples);
- fprintf(stderr,"\rTotal bits used to represent training set: %ld\n",
- bitsum);
- }
- }
-
- free(membership);
-}
-
-/* wrap build_tree_from_lengths to allow zero entries in the histogram */
-void build_tree_from_lengths0(int vals, long *hist, long *lengths){
-
- /* pack the 'sparse' hit list into a dense list, then unpack
- the lengths after the build */
-
- int upper=0,i;
- long *lengthlist=_ogg_calloc(vals,sizeof(long));
- long *newhist=alloca(vals*sizeof(long));
-
- for(i=0;i<vals;i++)
- if(hist[i]>0)
- newhist[upper++]=hist[i];
-
- if(upper != vals){
- fprintf(stderr,"\rEliminating %d unused entries; %d entries remain\n",
- vals-upper,upper);
- }
-
- build_tree_from_lengths(upper,newhist,lengthlist);
-
- upper=0;
- for(i=0;i<vals;i++)
- if(hist[i]>0)
- lengths[i]=lengthlist[upper++];
- else
- lengths[i]=0;
-
- free(lengthlist);
-}
-
-void write_codebook(FILE *out,char *name,const static_codebook *c){
- encode_aux_pigeonhole *p=c->pigeon_tree;
- encode_aux_threshmatch *t=c->thresh_tree;
- encode_aux_nearestmatch *n=c->nearest_tree;
- int i,j,k;
-
- /* save the book in C header form */
- fprintf(out,
- "/********************************************************************\n"
- " * *\n"
- " * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *\n"
- " * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *\n"
- " * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH *\n"
- " * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *\n"
- " * *\n"
- " * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *\n"
- " * by the XIPHOPHORUS Company, http://www.xiph.org/ *\n"
- " * *\n"
- " ********************************************************************\n"
- "\n"
- " function: static codebook autogenerated by vq/somethingorother\n"
- "\n"
- " ********************************************************************/\n\n");
-
- fprintf(out,"#ifndef _V_%s_VQH_\n#define _V_%s_VQH_\n",name,name);
- fprintf(out,"#include \"codebook.h\"\n\n");
-
- /* first, the static vectors, then the book structure to tie it together. */
- /* quantlist */
- if(c->quantlist){
- long vals=(c->maptype==1?_book_maptype1_quantvals(c):c->entries*c->dim);
- fprintf(out,"static long _vq_quantlist_%s[] = {\n",name);
- for(j=0;j<vals;j++){
- fprintf(out,"\t%ld,\n",c->quantlist[j]);
- }
- fprintf(out,"};\n\n");
- }
-
- /* lengthlist */
- fprintf(out,"static long _vq_lengthlist_%s[] = {\n",name);
- for(j=0;j<c->entries;){
- fprintf(out,"\t");
- for(k=0;k<16 && j<c->entries;k++,j++)
- fprintf(out,"%2ld,",c->lengthlist[j]);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
-
- if(t){
- /* quantthresh */
- fprintf(out,"static float _vq_quantthresh_%s[] = {\n",name);
- for(j=0;j<t->threshvals-1;){
- fprintf(out,"\t");
- for(k=0;k<8 && j<t->threshvals-1;k++,j++)
- fprintf(out,"%.5g, ",t->quantthresh[j]);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
-
- /* quantmap */
- fprintf(out,"static long _vq_quantmap_%s[] = {\n",name);
- for(j=0;j<t->threshvals;){
- fprintf(out,"\t");
- for(k=0;k<8 && j<t->threshvals;k++,j++)
- fprintf(out,"%5ld,",t->quantmap[j]);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
-
- fprintf(out,"static encode_aux_threshmatch _vq_auxt_%s = {\n",name);
- fprintf(out,"\t_vq_quantthresh_%s,\n",name);
- fprintf(out,"\t_vq_quantmap_%s,\n",name);
- fprintf(out,"\t%d,\n",t->quantvals);
- fprintf(out,"\t%d\n};\n\n",t->threshvals);
- }
-
- if(p){
- int pigeons=1;
- for(i=0;i<c->dim;i++)pigeons*=p->quantvals;
-
- /* pigeonmap */
- fprintf(out,"static long _vq_pigeonmap_%s[] = {\n",name);
- for(j=0;j<p->mapentries;){
- fprintf(out,"\t");
- for(k=0;k<8 && j<p->mapentries;k++,j++)
- fprintf(out,"%5ld, ",p->pigeonmap[j]);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
- /* fitlist */
- fprintf(out,"static long _vq_fitlist_%s[] = {\n",name);
- for(j=0;j<p->fittotal;){
- fprintf(out,"\t");
- for(k=0;k<8 && j<p->fittotal;k++,j++)
- fprintf(out,"%5ld, ",p->fitlist[j]);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
- /* fitmap */
- fprintf(out,"static long _vq_fitmap_%s[] = {\n",name);
- for(j=0;j<pigeons;){
- fprintf(out,"\t");
- for(k=0;k<8 && j<pigeons;k++,j++)
- fprintf(out,"%5ld, ",p->fitmap[j]);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
- /* fitlength */
- fprintf(out,"static long _vq_fitlength_%s[] = {\n",name);
- for(j=0;j<pigeons;){
- fprintf(out,"\t");
- for(k=0;k<8 && j<pigeons;k++,j++)
- fprintf(out,"%5ld, ",p->fitlength[j]);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
-
- fprintf(out,"static encode_aux_pigeonhole _vq_auxp_%s = {\n",name);
- fprintf(out,"\t%g, %g, %d, %d,\n",
- p->min,p->del,p->mapentries,p->quantvals);
-
- fprintf(out,"\t_vq_pigeonmap_%s,\n",name);
-
- fprintf(out,"\t%ld,\n",p->fittotal);
- fprintf(out,"\t_vq_fitlist_%s,\n",name);
- fprintf(out,"\t_vq_fitmap_%s,\n",name);
- fprintf(out,"\t_vq_fitlength_%s\n};\n\n",name);
- }
-
- if(n){
-
- /* ptr0 */
- fprintf(out,"static long _vq_ptr0_%s[] = {\n",name);
- for(j=0;j<n->aux;){
- fprintf(out,"\t");
- for(k=0;k<8 && j<n->aux;k++,j++)
- fprintf(out,"%6ld,",n->ptr0[j]);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
-
- /* ptr1 */
- fprintf(out,"static long _vq_ptr1_%s[] = {\n",name);
- for(j=0;j<n->aux;){
- fprintf(out,"\t");
- for(k=0;k<8 && j<n->aux;k++,j++)
- fprintf(out,"%6ld,",n->ptr1[j]);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
-
- /* p */
- fprintf(out,"static long _vq_p_%s[] = {\n",name);
- for(j=0;j<n->aux;){
- fprintf(out,"\t");
- for(k=0;k<8 && j<n->aux;k++,j++)
- fprintf(out,"%6ld,",n->p[j]*c->dim);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
-
- /* q */
- fprintf(out,"static long _vq_q_%s[] = {\n",name);
- for(j=0;j<n->aux;){
- fprintf(out,"\t");
- for(k=0;k<8 && j<n->aux;k++,j++)
- fprintf(out,"%6ld,",n->q[j]*c->dim);
- fprintf(out,"\n");
- }
- fprintf(out,"};\n\n");
-
- fprintf(out,"static encode_aux_nearestmatch _vq_auxn_%s = {\n",name);
- fprintf(out,"\t_vq_ptr0_%s,\n",name);
- fprintf(out,"\t_vq_ptr1_%s,\n",name);
- fprintf(out,"\t_vq_p_%s,\n",name);
- fprintf(out,"\t_vq_q_%s,\n",name);
- fprintf(out,"\t%ld, %ld\n};\n\n",n->aux,n->aux);
- }
-
- /* tie it all together */
-
- fprintf(out,"static static_codebook _vq_book_%s = {\n",name);
-
- fprintf(out,"\t%ld, %ld,\n",c->dim,c->entries);
- fprintf(out,"\t_vq_lengthlist_%s,\n",name);
- fprintf(out,"\t%d, %ld, %ld, %d, %d,\n",
- c->maptype,c->q_min,c->q_delta,c->q_quant,c->q_sequencep);
- if(c->quantlist)
- fprintf(out,"\t_vq_quantlist_%s,\n",name);
- else
- fprintf(out,"\tNULL,\n");
-
- if(n)
- fprintf(out,"\t&_vq_auxn_%s,\n",name);
- else
- fprintf(out,"\tNULL,\n");
- if(t)
- fprintf(out,"\t&_vq_auxt_%s,\n",name);
- else
- fprintf(out,"\tNULL,\n");
- if(p)
- fprintf(out,"\t&_vq_auxp_%s,\n",name);
- else
- fprintf(out,"\tNULL,\n");
-
- fprintf(out,"\t0\n};\n\n");
-
- fprintf(out,"\n#endif\n");
-}
diff --git a/vq/bookutil.h b/vq/bookutil.h
deleted file mode 100644
index b9b16b5b..00000000
--- a/vq/bookutil.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: utility functions for loading .vqh and .vqd files
- last mod: $Id: bookutil.h,v 1.11 2001/02/26 03:51:12 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_BOOKUTIL_H_
-#define _V_BOOKUTIL_H_
-
-#include <stdio.h>
-#include <sys/time.h>
-
-#include "codebook.h"
-
-extern char *get_line(FILE *in);
-extern char *setup_line(FILE *in);
-extern int get_line_value(FILE *in,float *value);
-extern int get_next_value(FILE *in,float *value);
-extern int get_next_ivalue(FILE *in,long *ivalue);
-extern void reset_next_value(void);
-extern int get_vector(codebook *b,FILE *in,int start,int num,float *a);
-extern char *find_seek_to(FILE *in,char *s);
-
-extern codebook *codebook_load(char *filename);
-extern void write_codebook(FILE *out,char *name,const static_codebook *c);
-
-extern void spinnit(char *s,int n);
-extern void build_tree_from_lengths(int vals, long *hist, long *lengths);
-extern void build_tree_from_lengths0(int vals, long *hist, long *lengths);
-
-#endif
-
diff --git a/vq/build.c b/vq/build.c
deleted file mode 100644
index bfc0f339..00000000
--- a/vq/build.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: utility main for building codebooks from training sets
- last mod: $Id: build.c,v 1.20 2001/02/26 03:51:12 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <string.h>
-#include <errno.h>
-#include "bookutil.h"
-
-#include "vqgen.h"
-#include "vqsplit.h"
-
-static char *linebuffer=NULL;
-static int lbufsize=0;
-static char *rline(FILE *in,FILE *out){
- long sofar=0;
- if(feof(in))return NULL;
-
- while(1){
- int gotline=0;
-
- while(!gotline){
- if(sofar>=lbufsize){
- if(!lbufsize){
- lbufsize=1024;
- linebuffer=_ogg_malloc(lbufsize);
- }else{
- lbufsize*=2;
- linebuffer=_ogg_realloc(linebuffer,lbufsize);
- }
- }
- {
- long c=fgetc(in);
- switch(c){
- case '\n':
- case EOF:
- gotline=1;
- break;
- default:
- linebuffer[sofar++]=c;
- linebuffer[sofar]='\0';
- break;
- }
- }
- }
-
- if(linebuffer[0]=='#'){
- sofar=0;
- }else{
- return(linebuffer);
- }
- }
-}
-
-/* command line:
- buildvq file
-*/
-
-int main(int argc,char *argv[]){
- vqgen v;
- static_codebook c;
- codebook b;
- quant_meta q;
-
- long *quantlist=NULL;
- int entries=-1,dim=-1,aux=-1;
- FILE *out=NULL;
- FILE *in=NULL;
- char *line,*name;
- long i,j,k;
-
- b.c=&c;
-
- if(argv[1]==NULL){
- fprintf(stderr,"Need a trained data set on the command line.\n");
- exit(1);
- }
-
- {
- char *ptr;
- char *filename=strdup(argv[1]);
-
- in=fopen(filename,"r");
- if(!in){
- fprintf(stderr,"Could not open input file %s\n",filename);
- exit(1);
- }
-
- ptr=strrchr(filename,'-');
- if(ptr){
- *ptr='\0';
- name=strdup(filename);
- sprintf(ptr,".vqh");
- }else{
- name=strdup(filename);
- strcat(filename,".vqh");
- }
-
- out=fopen(filename,"w");
- if(out==NULL){
- fprintf(stderr,"Unable to open %s for writing\n",filename);
- exit(1);
- }
- }
-
- /* suck in the trained book */
-
- /* read book type, but it doesn't matter */
- line=rline(in,out);
-
- line=rline(in,out);
- if(sscanf(line,"%d %d %d",&entries,&dim,&aux)!=3){
- fprintf(stderr,"Syntax error reading book file\n");
- exit(1);
- }
-
- /* just use it to allocate mem */
- vqgen_init(&v,dim,0,entries,0.f,NULL,NULL,0);
-
- /* quant */
- line=rline(in,out);
- if(sscanf(line,"%ld %ld %d %d",&q.min,&q.delta,
- &q.quant,&q.sequencep)!=4){
- fprintf(stderr,"Syntax error reading book file\n");
- exit(1);
- }
-
- /* quantized entries */
- /* save quant data; we don't want to requantize later as our method
- is currently imperfect wrt repeated application */
- i=0;
- quantlist=_ogg_malloc(sizeof(long)*v.elements*v.entries);
- for(j=0;j<entries;j++){
- float a;
- for(k=0;k<dim;k++){
- line=rline(in,out);
- sscanf(line,"%f",&a);
- v.entrylist[i]=a;
- quantlist[i++]=rint(a);
- }
- }
-
- /* ignore bias */
- for(j=0;j<entries;j++)line=rline(in,out);
- free(v.bias);
- v.bias=NULL;
-
- /* training points */
- {
- float *b=alloca(sizeof(float)*(dim+aux));
- i=0;
- v.entries=0; /* hack to avoid reseeding */
- while(1){
- for(k=0;k<dim+aux;k++){
- line=rline(in,out);
- if(!line)break;
- sscanf(line,"%f",b+k);
- }
- if(feof(in))break;
- vqgen_addpoint(&v,b,NULL);
- }
- v.entries=entries;
- }
-
- fclose(in);
- vqgen_unquantize(&v,&q);
-
- /* build the book */
- vqsp_book(&v,&b,quantlist);
- c.q_min=q.min;
- c.q_delta=q.delta;
- c.q_quant=q.quant;
- c.q_sequencep=q.sequencep;
-
- /* save the book in C header form */
- write_codebook(out,name,b.c);
-
- fclose(out);
- exit(0);
-}
diff --git a/vq/cascade.c b/vq/cascade.c
deleted file mode 100644
index 0a5eedcb..00000000
--- a/vq/cascade.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: function call to do simple data cascading
- last mod: $Id: cascade.c,v 1.12 2001/02/26 03:51:12 xiphmont Exp $
-
- ********************************************************************/
-
-/* this one outputs residue to stdout. */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <math.h>
-#include "bookutil.h"
-
-/* set up metrics */
-
-float count=0.f;
-
-
-void process_preprocess(codebook **bs,char *basename){
-}
-
-void process_postprocess(codebook **b,char *basename){
- fprintf(stderr,"Done. \n");
-}
-
-float process_one(codebook *b,float *a,int dim,int step,int addmul,
- float base){
- int j;
-
- if(b->c->q_sequencep){
- float temp;
- for(j=0;j<dim;j++){
- temp=a[j*step];
- a[j*step]-=base;
- }
- base=temp;
- }
-
- vorbis_book_besterror(b,a,step,addmul);
-
- return base;
-}
-
-void process_vector(codebook **bs,int *addmul,int inter,float *a,int n){
- int i,bi=0;
- int booknum=0;
-
- while(*bs){
- float base=0.f;
- codebook *b=*bs;
- int dim=b->dim;
-
- if(inter){
- for(i=0;i<n/dim;i++)
- base=process_one(b,a+i,dim,n/dim,addmul[bi],base);
- }else{
- for(i=0;i<=n-dim;i+=dim)
- base=process_one(b,a+i,dim,1,addmul[bi],base);
- }
-
- bs++;
- booknum++;
- bi++;
- }
-
- for(i=0;i<n;i++)
- fprintf(stdout,"%f, ",a[i]);
- fprintf(stdout,"\n");
-
- if((long)(count++)%100)spinnit("working.... lines: ",count);
-}
-
-void process_usage(void){
- fprintf(stderr,
- "usage: vqcascade [-i] +|*<codebook>.vqh [ +|*<codebook.vqh> ]... \n"
- " datafile.vqd [datafile.vqd]...\n\n"
- " data can be taken on stdin. residual error data sent to\n"
- " stdout.\n\n");
-
-}
diff --git a/vq/distribution.c b/vq/distribution.c
deleted file mode 100644
index 716296d1..00000000
--- a/vq/distribution.c
+++ /dev/null
@@ -1,241 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: utility for finding the distribution in a data set
- last mod: $Id: distribution.c,v 1.7 2001/08/13 01:37:16 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <string.h>
-#include <errno.h>
-#include "bookutil.h"
-
-/* command line:
- distribution file.vqd
-*/
-
-int ascend(const void *a,const void *b){
- return(**((long **)a)-**((long **)b));
-}
-
-int main(int argc,char *argv[]){
- FILE *in;
- long lines=0;
- float min;
- float max;
- long bins=-1;
- int flag=0;
- long *countarray;
- long total=0;
- char *line;
-
- if(argv[1]==NULL){
- fprintf(stderr,"Usage: distribution {data.vqd [bins]| book.vqh} \n\n");
- exit(1);
- }
- if(argv[2]!=NULL)
- bins=atoi(argv[2])-1;
-
- in=fopen(argv[1],"r");
- if(!in){
- fprintf(stderr,"Could not open input file %s\n",argv[1]);
- exit(1);
- }
-
- if(strrchr(argv[1],'.') && strcmp(strrchr(argv[1],'.'),".vqh")==0){
- /* load/decode a book */
-
- codebook *b=codebook_load(argv[1]);
- static_codebook *c=(static_codebook *)(b->c);
- float delta;
- int i;
- fclose(in);
-
- switch(c->maptype){
- case 0:
- printf("entropy codebook only; no mappings\n");
- exit(0);
- break;
- case 1:
- bins=_book_maptype1_quantvals(c);
- break;
- case 2:
- bins=c->entries*c->dim;
- break;
- }
-
- max=min=_float32_unpack(c->q_min);
- delta=_float32_unpack(c->q_delta);
-
- for(i=0;i<bins;i++){
- float val=c->quantlist[i]*delta+min;
- if(val>max)max=val;
- }
-
- printf("Minimum scalar value: %f\n",min);
- printf("Maximum scalar value: %f\n",max);
-
- switch(c->maptype){
- case 1:
- {
- /* lattice codebook. dump it. */
- int j,k;
- long maxcount=0;
- long **sort=calloc(bins,sizeof(long *));
- long base=c->lengthlist[0];
- countarray=calloc(bins,sizeof(long));
-
- for(i=0;i<bins;i++)sort[i]=c->quantlist+i;
- qsort(sort,bins,sizeof(long *),ascend);
-
- for(i=0;i<b->entries;i++)
- if(c->lengthlist[i]>base)base=c->lengthlist[i];
-
- /* dump a full, correlated count */
- for(j=0;j<b->entries;j++){
- if(c->lengthlist[j]){
- int indexdiv=1;
- printf("%4d: ",j);
- for(k=0;k<b->dim;k++){
- int index= (j/indexdiv)%bins;
- printf("%+3.1f,", c->quantlist[index]*_float32_unpack(c->q_delta)+
- _float32_unpack(c->q_min));
- indexdiv*=bins;
- }
- printf("\t|");
- for(k=0;k<base-c->lengthlist[j];k++)printf("*");
- printf("\n");
- }
- }
-
- /* do a rough count */
- for(j=0;j<b->entries;j++){
- int indexdiv=1;
- for(k=0;k<b->dim;k++){
- if(c->lengthlist[j]){
- int index= (j/indexdiv)%bins;
- countarray[index]+=(1<<(base-c->lengthlist[j]));
- indexdiv*=bins;
- }
- }
- }
-
- /* dump the count */
-
- {
- long maxcount=0,i,j;
- for(i=0;i<bins;i++)
- if(countarray[i]>maxcount)maxcount=countarray[i];
-
- for(i=0;i<bins;i++){
- int ptr=sort[i]-c->quantlist;
- int stars=rint(50./maxcount*countarray[ptr]);
- printf("%+08f (%8ld) |",c->quantlist[ptr]*delta+min,countarray[ptr]);
- for(j=0;j<stars;j++)printf("*");
- printf("\n");
- }
- }
- }
- break;
- case 2:
- {
- /* trained, full mapping codebook. */
- printf("Can't do probability dump of a trained [type 2] codebook (yet)\n");
- }
- break;
- }
- }else{
- /* load/count a data file */
-
- /* do it the simple way; two pass. */
- line=setup_line(in);
- while(line){
- float code;
- lines++;
- if(!(lines&0xff))spinnit("getting min/max. lines so far...",lines);
-
- while(!flag && sscanf(line,"%f",&code)==1){
- line=strchr(line,',');
- min=max=code;
- flag=1;
- }
-
- while(line && sscanf(line,"%f",&code)==1){
- line=strchr(line,',');
- if(line)line++;
- if(code<min)min=code;
- if(code>max)max=code;
- }
-
- line=setup_line(in);
- }
-
- if(bins<1){
- if((int)(max-min)==min-max){
- bins=max-min;
- }else{
- bins=25;
- }
- }
-
- printf("\r \r");
- printf("Minimum scalar value: %f\n",min);
- printf("Maximum scalar value: %f\n",max);
-
- printf("\n counting hits into %ld bins...\n",bins+1);
- countarray=calloc(bins+1,sizeof(long));
-
- rewind(in);
- line=setup_line(in);
- while(line){
- float code;
- lines--;
- if(!(lines&0xff))spinnit("counting distribution. lines so far...",lines);
-
- while(line && sscanf(line,"%f",&code)==1){
- line=strchr(line,',');
- if(line)line++;
-
- code-=min;
- code/=(max-min);
- code*=bins;
- countarray[(int)rint(code)]++;
- total++;
- }
-
- line=setup_line(in);
- }
-
- fclose(in);
-
- /* make a pretty graph */
- {
- long maxcount=0,i,j;
- for(i=0;i<bins+1;i++)
- if(countarray[i]>maxcount)maxcount=countarray[i];
-
- printf("\r \r");
- printf("Total scalars: %ld\n",total);
- for(i=0;i<bins+1;i++){
- int stars=rint(50./maxcount*countarray[i]);
- printf("%08f (%8ld) |",(max-min)/bins*i+min,countarray[i]);
- for(j=0;j<stars;j++)printf("*");
- printf("\n");
- }
- }
- }
- printf("\nDone.\n");
- exit(0);
-}
diff --git a/vq/genericdata.c b/vq/genericdata.c
deleted file mode 100644
index 10b3bf13..00000000
--- a/vq/genericdata.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: generic euclidian distance metric for VQ codebooks
- last mod: $Id: genericdata.c,v 1.10 2001/02/26 03:51:12 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <math.h>
-#include <stdio.h>
-#include "vqgen.h"
-#include "vqext.h"
-
-char *vqext_booktype="GENERICdata";
-int vqext_aux=0;
-quant_meta q={0,0,0,0}; /* non sequence data; each scalar
- independent */
-
-void vqext_quantize(vqgen *v,quant_meta *q){
- vqgen_quantize(v,q);
-}
-
-float *vqext_weight(vqgen *v,float *p){
- /*noop*/
- return(p);
-}
-
- /* candidate,actual */
-float vqext_metric(vqgen *v,float *e, float *p){
- int i;
- float acc=0.f;
- for(i=0;i<v->elements;i++){
- float val=p[i]-e[i];
- acc+=val*val;
- }
- return sqrt(acc/v->elements);
-}
-
-void vqext_addpoint_adj(vqgen *v,float *b,int start,int dim,int cols,int num){
- vqgen_addpoint(v,b+start,NULL);
-}
-
-void vqext_preprocess(vqgen *v){
- /* noop */
-}
-
-
-
-
-
-
diff --git a/vq/huffbuild.c b/vq/huffbuild.c
deleted file mode 100644
index 28e106d4..00000000
--- a/vq/huffbuild.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: hufftree builder
- last mod: $Id: huffbuild.c,v 1.10 2001/06/04 05:50:12 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <stdio.h>
-#include "bookutil.h"
-
-static int nsofar=0;
-static int getval(FILE *in,int begin,int n,int group,int max){
- float v;
- int i;
- long val=0;
-
- if(nsofar>=n || get_line_value(in,&v)){
- reset_next_value();
- nsofar=0;
- if(get_next_value(in,&v))
- return(-1);
- for(i=1;i<=begin;i++)
- get_line_value(in,&v);
- }
-
- val=(int)v;
- nsofar++;
-
- for(i=1;i<group;i++,nsofar++)
- if(nsofar>=n || get_line_value(in,&v))
- return(getval(in,begin,n,group,max));
- else
- val = val*max+(int)v;
- return(val);
-}
-
-static void usage(){
- fprintf(stderr,
- "usage:\n"
- "huffbuild <input>.vqd <begin,n,group>|<lorange-hirange> [noguard]\n"
- " where begin,n,group is first scalar, \n"
- " number of scalars of each in line,\n"
- " number of scalars in a group\n"
- "eg: huffbuild reslongaux.vqd 0,1024,4\n"
- "produces reslongaux.vqh\n\n");
- exit(1);
-}
-
-int main(int argc, char *argv[]){
- char *base;
- char *infile;
- int i,j,k,begin,n,subn,guard=1;
- FILE *file;
- int maxval=0;
- int loval=0;
-
- if(argc<3)usage();
- if(argc==4)guard=0;
-
- infile=strdup(argv[1]);
- base=strdup(infile);
- if(strrchr(base,'.'))
- strrchr(base,'.')[0]='\0';
-
- {
- char *pos=strchr(argv[2],',');
- char *dpos=strchr(argv[2],'-');
- if(dpos){
- loval=atoi(argv[2]);
- maxval=atoi(dpos+1);
- subn=1;
- begin=0;
- }else{
- begin=atoi(argv[2]);
- if(!pos)
- usage();
- else
- n=atoi(pos+1);
- pos=strchr(pos+1,',');
- if(!pos)
- usage();
- else
- subn=atoi(pos+1);
- if(n/subn*subn != n){
- fprintf(stderr,"n must be divisible by group\n");
- exit(1);
- }
- }
- }
-
- /* scan the file for maximum value */
- file=fopen(infile,"r");
- if(!file){
- fprintf(stderr,"Could not open file %s\n",infile);
- if(!maxval)
- exit(1);
- else
- fprintf(stderr," making untrained books.\n");
-
- }
-
- if(!maxval){
- i=0;
- while(1){
- long v;
- if(get_next_ivalue(file,&v))break;
- if(v>maxval)maxval=v;
-
- if(!(i++&0xff))spinnit("loading... ",i);
- }
- rewind(file);
- maxval++;
- }
-
- {
- long vals=pow(maxval,subn);
- long *hist=_ogg_malloc(vals*sizeof(long));
- long *lengths=_ogg_malloc(vals*sizeof(long));
-
- for(j=loval;j<vals;j++)hist[j]=guard;
-
- if(file){
- reset_next_value();
- i/=subn;
- while(!feof(file)){
- long val=getval(file,begin,n,subn,maxval);
- if(val==-1 || val>=vals)break;
- hist[val]++;
- if(!(i--&0xff))spinnit("loading... ",i*subn);
- }
- fclose(file);
- }
-
- /* we have the probabilities, build the tree */
- fprintf(stderr,"Building tree for %ld entries\n",vals);
- build_tree_from_lengths0(vals,hist,lengths);
-
- /* save the book */
- {
- char *buffer=alloca(strlen(base)+5);
- strcpy(buffer,base);
- strcat(buffer,".vqh");
- file=fopen(buffer,"w");
- if(!file){
- fprintf(stderr,"Could not open file %s\n",buffer);
- exit(1);
- }
- }
-
- fprintf(file,
- "/********************************************************************\n"
- " * *\n"
- " * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *\n"
- " * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *\n"
- " * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *\n"
- " * PLEASE READ THESE TERMS DISTRIBUTING. *\n"
- " * *\n"
- " * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *\n"
- " * by 1999 Monty <monty@xiph.org> and The XIPHOPHORUS Company *\n"
- " * http://www.xiph.org/ *\n"
- " * *\n"
- " ********************************************************************\n"
- "\n"
- " function: static codebook autogenerated by huff/huffbuld\n"
- "\n"
- " ********************************************************************/\n\n");
-
- fprintf(file,"#ifndef _V_%s_VQH_\n#define _V_%s_VQH_\n",base,base);
- fprintf(file,"#include \"codebook.h\"\n\n");
-
- /* first, the static vectors, then the book structure to tie it together. */
- /* lengthlist */
- fprintf(file,"static long _huff_lengthlist_%s[] = {\n",base);
- for(j=0;j<vals;){
- fprintf(file,"\t");
- for(k=0;k<16 && j<vals;k++,j++)
- fprintf(file,"%2ld,",lengths[j]);
- fprintf(file,"\n");
- }
- fprintf(file,"};\n\n");
-
- /* the toplevel book */
- fprintf(file,"static static_codebook _huff_book_%s = {\n",base);
- fprintf(file,"\t%d, %ld,\n",subn,vals);
- fprintf(file,"\t_huff_lengthlist_%s,\n",base);
- fprintf(file,"\t0, 0, 0, 0, 0,\n");
- fprintf(file,"\tNULL,\n");
- fprintf(file,"\tNULL,\n");
- fprintf(file,"\tNULL,\n");
- fprintf(file,"\t0\n};\n\n");
-
- fprintf(file,"\n#endif\n");
- fclose(file);
- fprintf(stderr,"Done. \n\n");
- }
- exit(0);
-}
-
-
diff --git a/vq/latticebuild.c b/vq/latticebuild.c
deleted file mode 100644
index 9b40feff..00000000
--- a/vq/latticebuild.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: utility main for building codebooks from lattice descriptions
- last mod: $Id: latticebuild.c,v 1.11 2001/02/26 03:51:12 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <string.h>
-#include <errno.h>
-#include "bookutil.h"
-
-/* The purpose of this util is just to finish packaging the
- description into a static codebook. It used to count hits for a
- histogram, but I've divorced that out to add some flexibility (it
- currently generates an equal probability codebook)
-
- command line:
- latticebuild description.vql
-
- the lattice description file contains two lines:
-
- <n> <dim> <multiplicitavep> <sequentialp>
- <value_0> <value_1> <value_2> ... <value_n-1>
-
- a threshmap (or pigeonmap) struct is generated by latticehint;
- there are fun tricks one can do with the threshmap and cascades,
- but the utils don't know them...
-
- entropy encoding is done by feeding an entry list collected from a
- training set and feeding it to latticetune along with the book.
-
- latticebuild produces a codebook on stdout */
-
-static int ilog(unsigned int v){
- int ret=0;
- while(v){
- ret++;
- v>>=1;
- }
- return(ret);
-}
-
-int main(int argc,char *argv[]){
- codebook b;
- static_codebook c;
- double *quantlist;
- long *hits;
-
- int entries=-1,dim=-1,quantvals=-1,addmul=-1,sequencep=0;
- FILE *in=NULL;
- char *line,*name;
- long i,j;
-
- memset(&b,0,sizeof(b));
- memset(&c,0,sizeof(c));
-
- if(argv[1]==NULL){
- fprintf(stderr,"Need a lattice description file on the command line.\n");
- exit(1);
- }
-
- {
- char *ptr;
- char *filename=_ogg_calloc(strlen(argv[1])+4,1);
-
- strcpy(filename,argv[1]);
- in=fopen(filename,"r");
- if(!in){
- fprintf(stderr,"Could not open input file %s\n",filename);
- exit(1);
- }
-
- ptr=strrchr(filename,'.');
- if(ptr){
- *ptr='\0';
- name=strdup(filename);
- }else{
- name=strdup(filename);
- }
-
- }
-
- /* read the description */
- line=get_line(in);
- if(sscanf(line,"%d %d %d %d",&quantvals,&dim,&addmul,&sequencep)!=4){
- if(sscanf(line,"%d %d %d",&quantvals,&dim,&addmul)!=3){
- fprintf(stderr,"Syntax error reading description file (line 1)\n");
- exit(1);
- }
- }
- entries=pow(quantvals,dim);
- c.dim=dim;
- c.entries=entries;
- c.lengthlist=_ogg_malloc(entries*sizeof(long));
- c.maptype=1;
- c.q_sequencep=sequencep;
- c.quantlist=_ogg_calloc(quantvals,sizeof(long));
-
- quantlist=_ogg_malloc(sizeof(double)*c.dim*c.entries);
- hits=_ogg_malloc(c.entries*sizeof(long));
- for(j=0;j<entries;j++)hits[j]=1;
- for(j=0;j<entries;j++)c.lengthlist[j]=1;
-
- reset_next_value();
- line=setup_line(in);
- for(j=0;j<quantvals;j++){
- char *temp;
- if(!line || sscanf(line,"%lf",quantlist+j)!=1){
- fprintf(stderr,"Ran out of data on line 2 of description file\n");
- exit(1);
- }
- temp=strchr(line,',');
- if(!temp)temp=strchr(line,' ');
- if(temp)temp++;
- line=temp;
- }
-
- /* gen a real quant list from the more easily human-grokked input */
- {
- double min=quantlist[0];
- double mindel=-1;
- int fac=1;
- for(j=1;j<quantvals;j++)if(quantlist[j]<min)min=quantlist[j];
- for(j=0;j<quantvals;j++)
- for(i=j+1;i<quantvals;i++)
- if(mindel==-1 || fabs(quantlist[j]-quantlist[i])<mindel)
- mindel=fabs(quantlist[j]-quantlist[i]);
-
- j=0;
- while(j<quantvals){
- for(j=0;j<quantvals;j++){
- double test=fac*(quantlist[j]-min)/mindel;
- if( fabs(rint(test)-test)>.00001f) break;
- }
- if(fac>100)break;
- if(j<quantvals)fac++;
- }
-
- mindel/=fac;
- fprintf(stderr,"min=%g mindel=%g\n",min,mindel);
-
- c.q_min=_float32_pack(min);
- c.q_delta=_float32_pack(mindel);
- c.q_quant=0;
-
- min=_float32_unpack(c.q_min);
- mindel=_float32_unpack(c.q_delta);
- for(j=0;j<quantvals;j++){
- c.quantlist[j]=rint((quantlist[j]-min)/mindel);
- if(ilog(c.quantlist[j])>c.q_quant)c.q_quant=ilog(c.quantlist[j]);
- }
- }
-
- /* build the [default] codeword lengths */
- memset(c.lengthlist,0,sizeof(long)*entries);
- for(i=0;i<entries;i++)hits[i]=1;
- build_tree_from_lengths(entries,hits,c.lengthlist);
-
- /* save the book in C header form */
- write_codebook(stdout,name,&c);
- fprintf(stderr,"\r "
- "\nDone.\n");
- exit(0);
-}
diff --git a/vq/latticehint.c b/vq/latticehint.c
deleted file mode 100644
index a960e60c..00000000
--- a/vq/latticehint.c
+++ /dev/null
@@ -1,428 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: utility main for building thresh/pigeonhole encode hints
- last mod: $Id: latticehint.c,v 1.10 2001/08/13 01:37:17 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <string.h>
-#include <errno.h>
-#include "../lib/scales.h"
-#include "bookutil.h"
-#include "vqgen.h"
-#include "vqsplit.h"
-
-/* The purpose of this util is to build encode hints for lattice
- codebooks so that brute forcing each codebook entry isn't needed.
- Threshhold hints are for books in which each scalar in the vector
- is independant (eg, residue) and pigeonhole lookups provide a
- minimum error fit for words where the scalars are interdependant
- (each affecting the fit of the next in sequence) as in an LSP
- sequential book (or can be used along with a sparse threshhold map,
- like a splitting tree that need not be trained)
-
- If the input book is non-sequential, a threshhold hint is built.
- If the input book is sequential, a pigeonholing hist is built.
- If the book is sparse, a pigeonholing hint is built, possibly in addition
- to the threshhold hint
-
- command line:
- latticehint book.vqh [threshlist]
-
- latticehint produces book.vqh on stdout */
-
-static int longsort(const void *a, const void *b){
- return(**((long **)a)-**((long **)b));
-}
-
-static int addtosearch(int entry,long **tempstack,long *tempcount,int add){
- long *ptr=tempstack[entry];
- long i=tempcount[entry];
-
- if(ptr){
- while(i--)
- if(*ptr++==add)return(0);
- tempstack[entry]=_ogg_realloc(tempstack[entry],
- (tempcount[entry]+1)*sizeof(long));
- }else{
- tempstack[entry]=_ogg_malloc(sizeof(long));
- }
-
- tempstack[entry][tempcount[entry]++]=add;
- return(1);
-}
-
-static void setvals(int dim,encode_aux_pigeonhole *p,
- long *temptrack,float *tempmin,float *tempmax,
- int seqp){
- int i;
- float last=0.f;
- for(i=0;i<dim;i++){
- tempmin[i]=(temptrack[i])*p->del+p->min+last;
- tempmax[i]=tempmin[i]+p->del;
- if(seqp)last=tempmin[i];
- }
-}
-
-/* note that things are currently set up such that input fits that
- quantize outside the pigeonmap are dropped and brute-forced. So we
- can ignore the <0 and >=n boundary cases in min/max error */
-
-static float minerror(int dim,float *a,encode_aux_pigeonhole *p,
- long *temptrack,float *tempmin,float *tempmax){
- int i;
- float err=0.f;
- for(i=0;i<dim;i++){
- float eval=0.f;
- if(a[i]<tempmin[i]){
- eval=tempmin[i]-a[i];
- }else if(a[i]>tempmax[i]){
- eval=a[i]-tempmax[i];
- }
- err+=eval*eval;
- }
- return(err);
-}
-
-static float maxerror(int dim,float *a,encode_aux_pigeonhole *p,
- long *temptrack,float *tempmin,float *tempmax){
- int i;
- float err=0.f,eval;
- for(i=0;i<dim;i++){
- if(a[i]<tempmin[i]){
- eval=tempmax[i]-a[i];
- }else if(a[i]>tempmax[i]){
- eval=a[i]-tempmin[i];
- }else{
- float t1=a[i]-tempmin[i];
- eval=tempmax[i]-a[i];
- if(t1>eval)eval=t1;
- }
- err+=eval*eval;
- }
- return(err);
-}
-
-int main(int argc,char *argv[]){
- codebook *b;
- static_codebook *c;
- int entries=-1,dim=-1;
- float min,del;
- char *name;
- long i,j;
- float *suggestions;
- int suggcount=0;
-
- if(argv[1]==NULL){
- fprintf(stderr,"Need a lattice book on the command line.\n");
- exit(1);
- }
-
- {
- char *ptr;
- char *filename=strdup(argv[1]);
-
- b=codebook_load(filename);
- c=(static_codebook *)(b->c);
-
- ptr=strrchr(filename,'.');
- if(ptr){
- *ptr='\0';
- name=strdup(filename);
- }else{
- name=strdup(filename);
- }
- }
-
- if(c->maptype!=1){
- fprintf(stderr,"Provided book is not a latticebook.\n");
- exit(1);
- }
-
- entries=b->entries;
- dim=b->dim;
- min=_float32_unpack(c->q_min);
- del=_float32_unpack(c->q_delta);
-
- /* Do we want to gen a threshold hint? */
- if(c->q_sequencep==0){
- /* yes. Discard any preexisting threshhold hint */
- long quantvals=_book_maptype1_quantvals(c);
- long **quantsort=alloca(quantvals*sizeof(long *));
- encode_aux_threshmatch *t=_ogg_calloc(1,sizeof(encode_aux_threshmatch));
- c->thresh_tree=t;
-
- fprintf(stderr,"Adding threshold hint to %s...\n",name);
-
- /* partial/complete suggestions */
- if(argv[2]){
- char *ptr=strdup(argv[2]);
- suggestions=alloca(sizeof(float)*quantvals);
-
- for(suggcount=0;ptr && suggcount<quantvals;suggcount++){
- char *ptr2=strchr(ptr,',');
- if(ptr2)*ptr2++='\0';
- suggestions[suggcount]=atof(ptr);
- ptr=ptr2;
- }
- }
-
- /* simplest possible threshold hint only */
- t->quantthresh=_ogg_calloc(quantvals-1,sizeof(float));
- t->quantmap=_ogg_calloc(quantvals,sizeof(int));
- t->threshvals=quantvals;
- t->quantvals=quantvals;
-
- /* the quantvals may not be in order; sort em first */
- for(i=0;i<quantvals;i++)quantsort[i]=c->quantlist+i;
- qsort(quantsort,quantvals,sizeof(long *),longsort);
-
- /* ok, gen the map and thresholds */
- for(i=0;i<quantvals;i++)t->quantmap[i]=quantsort[i]-c->quantlist;
- for(i=0;i<quantvals-1;i++){
- float v1=*(quantsort[i])*del+min;
- float v2=*(quantsort[i+1])*del+min;
-
- for(j=0;j<suggcount;j++)
- if(v1<suggestions[j] && suggestions[j]<v2){
- t->quantthresh[i]=suggestions[j];
- break;
- }
-
- if(j==suggcount){
- t->quantthresh[i]=(v1+v2)*.5;
- }
- }
- }
-
- /* Do we want to gen a pigeonhole hint? */
- for(i=0;i<entries;i++)if(c->lengthlist[i]==0)break;
- if(c->q_sequencep || i<entries){
- long **tempstack;
- long *tempcount;
- long *temptrack;
- float *tempmin;
- float *tempmax;
- long totalstack=0;
- long pigeons;
- long subpigeons;
- long quantvals=_book_maptype1_quantvals(c);
- int changep=1,factor;
-
- encode_aux_pigeonhole *p=_ogg_calloc(1,sizeof(encode_aux_pigeonhole));
- c->pigeon_tree=p;
-
- fprintf(stderr,"Adding pigeonhole hint to %s...\n",name);
-
- /* the idea is that we quantize uniformly, even in a nonuniform
- lattice, so that quantization of one scalar has a predictable
- result on the next sequential scalar in a greedy matching
- algorithm. We generate a lookup based on the quantization of
- the vector (pigeonmap groups quantized entries together) and
- list the entries that could possible be the best fit for any
- given member of that pigeonhole. The encode process then has a
- much smaller list to brute force */
-
- /* find our pigeonhole-specific quantization values, fill in the
- quant value->pigeonhole map */
- factor=3;
- p->del=del;
- p->min=min;
- p->quantvals=quantvals;
- {
- int max=0;
- for(i=0;i<quantvals;i++)if(max<c->quantlist[i])max=c->quantlist[i];
- p->mapentries=max;
- }
- p->pigeonmap=_ogg_malloc(p->mapentries*sizeof(long));
- p->quantvals=(quantvals+factor-1)/factor;
-
- /* pigeonhole roughly on the boundaries of the quantvals; the
- exact pigeonhole grouping is an optimization issue, not a
- correctness issue */
- for(i=0;i<p->mapentries;i++){
- float thisval=del*i+min; /* middle of the quant zone */
- int quant=0;
- float err=fabs(c->quantlist[0]*del+min-thisval);
- for(j=1;j<quantvals;j++){
- float thiserr=fabs(c->quantlist[j]*del+min-thisval);
- if(thiserr<err){
- quant=j/factor;
- err=thiserr;
- }
- }
- p->pigeonmap[i]=quant;
- }
-
- /* pigeonmap complete. Now do the grungy business of finding the
- entries that could possibly be the best fit for a value appearing
- in the pigeonhole. The trick that allows the below to work is the
- uniform quantization; even though the scalars may be 'sequential'
- (each a delta from the last), the uniform quantization means that
- the error variance is *not* dependant. Given a pigeonhole and an
- entry, we can find the minimum and maximum possible errors
- (relative to the entry) for any point that could appear in the
- pigeonhole */
-
- /* must iterate over both pigeonholes and entries */
- /* temporarily (in order to avoid thinking hard), we grow each
- pigeonhole seperately, the build a stack of 'em later */
- pigeons=1;
- subpigeons=1;
- for(i=0;i<dim;i++)subpigeons*=p->mapentries;
- for(i=0;i<dim;i++)pigeons*=p->quantvals;
- temptrack=_ogg_calloc(dim,sizeof(long));
- tempmin=_ogg_calloc(dim,sizeof(float));
- tempmax=_ogg_calloc(dim,sizeof(float));
- tempstack=_ogg_calloc(pigeons,sizeof(long *));
- tempcount=_ogg_calloc(pigeons,sizeof(long));
-
- while(1){
- float errorpost=-1;
- char buffer[80];
-
- /* map our current pigeonhole to a 'big pigeonhole' so we know
- what list we're after */
- int entry=0;
- for(i=dim-1;i>=0;i--)entry=entry*p->quantvals+p->pigeonmap[temptrack[i]];
- setvals(dim,p,temptrack,tempmin,tempmax,c->q_sequencep);
- sprintf(buffer,"Building pigeonhole search list [%ld]...",totalstack);
-
-
- /* Search all entries to find the one with the minimum possible
- maximum error. Record that error */
- for(i=0;i<entries;i++){
- if(c->lengthlist[i]>0){
- float this=maxerror(dim,b->valuelist+i*dim,p,
- temptrack,tempmin,tempmax);
- if(errorpost==-1 || this<errorpost)errorpost=this;
- spinnit(buffer,subpigeons);
- }
- }
-
- /* Our search list will contain all entries with a minimum
- possible error <= our errorpost */
- for(i=0;i<entries;i++)
- if(c->lengthlist[i]>0){
- spinnit(buffer,subpigeons);
- if(minerror(dim,b->valuelist+i*dim,p,
- temptrack,tempmin,tempmax)<errorpost)
- totalstack+=addtosearch(entry,tempstack,tempcount,i);
- }
-
- for(i=0;i<dim;i++){
- temptrack[i]++;
- if(temptrack[i]<p->mapentries)break;
- temptrack[i]=0;
- }
- if(i==dim)break;
- subpigeons--;
- }
-
- fprintf(stderr,"\r "
- "\rTotal search list size (all entries): %ld\n",totalstack);
-
- /* pare the index of lists for improbable quantizations (where
- improbable is determined by c->lengthlist; we assume that
- pigeonholing is in sync with the codeword cells, which it is */
- /*for(i=0;i<entries;i++){
- float probability= 1.f/(1<<c->lengthlist[i]);
- if(c->lengthlist[i]==0 || probability*entries<cutoff){
- totalstack-=tempcount[i];
- tempcount[i]=0;
- }
- }*/
-
- /* pare the list of shortlists; merge contained and similar lists
- together */
- p->fitmap=_ogg_malloc(pigeons*sizeof(long));
- for(i=0;i<pigeons;i++)p->fitmap[i]=-1;
- while(changep){
- char buffer[80];
- changep=0;
-
- for(i=0;i<pigeons;i++){
- if(p->fitmap[i]<0 && tempcount[i]){
- for(j=i+1;j<pigeons;j++){
- if(p->fitmap[j]<0 && tempcount[j]){
- /* is one list a superset, or are they sufficiently similar? */
- int amiss=0,bmiss=0,ii,jj;
- for(ii=0;ii<tempcount[i];ii++){
- for(jj=0;jj<tempcount[j];jj++)
- if(tempstack[i][ii]==tempstack[j][jj])break;
- if(jj==tempcount[j])amiss++;
- }
- for(jj=0;jj<tempcount[j];jj++){
- for(ii=0;ii<tempcount[i];ii++)
- if(tempstack[i][ii]==tempstack[j][jj])break;
- if(ii==tempcount[i])bmiss++;
- }
- if(amiss==0 ||
- bmiss==0 ||
- (amiss*2<tempcount[i] && bmiss*2<tempcount[j] &&
- tempcount[i]+bmiss<entries/30)){
-
- /*superset/similar Add all of one to the other. */
- for(jj=0;jj<tempcount[j];jj++)
- totalstack+=addtosearch(i,tempstack,tempcount,
- tempstack[j][jj]);
- totalstack-=tempcount[j];
- p->fitmap[j]=i;
- changep=1;
- }
- }
- }
- sprintf(buffer,"Consolidating [%ld total, %s]... ",totalstack,
- changep?"reit":"nochange");
- spinnit(buffer,pigeons-i);
- }
- }
- }
-
- /* repack the temp stack in final form */
- fprintf(stderr,"\r "
- "\rFinal total list size: %ld\n",totalstack);
-
-
- p->fittotal=totalstack;
- p->fitlist=_ogg_malloc((totalstack+1)*sizeof(long));
- p->fitlength=_ogg_malloc(pigeons*sizeof(long));
- {
- long usage=0;
- for(i=0;i<pigeons;i++){
- if(p->fitmap[i]==-1){
- if(tempcount[i])
- memcpy(p->fitlist+usage,tempstack[i],tempcount[i]*sizeof(long));
- p->fitmap[i]=usage;
- p->fitlength[i]=tempcount[i];
- usage+=tempcount[i];
- if(usage>totalstack){
- fprintf(stderr,"Internal error; usage>totalstack\n");
- exit(1);
- }
- }else{
- p->fitlength[i]=p->fitlength[p->fitmap[i]];
- p->fitmap[i]=p->fitmap[p->fitmap[i]];
- }
- }
- }
- }
-
- write_codebook(stdout,name,c);
- fprintf(stderr,"\r "
- "\nDone.\n");
- exit(0);
-}
diff --git a/vq/latticepare.c b/vq/latticepare.c
deleted file mode 100644
index 80cc2663..00000000
--- a/vq/latticepare.c
+++ /dev/null
@@ -1,595 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: utility for paring low hit count cells from lattice codebook
- last mod: $Id: latticepare.c,v 1.10 2001/02/26 03:51:12 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <string.h>
-#include <errno.h>
-#include "../lib/scales.h"
-#include "bookutil.h"
-#include "vqgen.h"
-#include "vqsplit.h"
-#include "../lib/os.h"
-
-/* Lattice codebooks have two strengths: important fetaures that are
- poorly modelled by global error minimization training (eg, strong
- peaks) are not neglected 2) compact quantized representation.
-
- A fully populated lattice codebook, however, swings point 1 too far
- in the opposite direction; rare features need not be modelled quite
- so religiously and as such, we waste bits unless we eliminate the
- least common cells. The codebook rep supports unused cells, so we
- need to tag such cells and build an auxiliary (non-thresh) search
- mechanism to find the proper match quickly */
-
-/* two basic steps; first is pare the cell for which dispersal creates
- the least additional error. This will naturally choose
- low-population cells and cells that have not taken on points from
- neighboring paring (but does not result in the lattice collapsing
- inward and leaving low population ares totally unmodelled). After
- paring has removed the desired number of cells, we need to build an
- auxiliary search for each culled point */
-
-/* Although lattice books (due to threshhold-based matching) do not
- actually use error to make cell selections (in fact, it need not
- bear any relation), the 'secondbest' entry finder here is in fact
- error/distance based, so latticepare is only useful on such books */
-
-/* command line:
- latticepare latticebook.vqh input_data.vqd <target_cells>
-
- produces a new output book on stdout
-*/
-
-static float _dist(int el,float *a, float *b){
- int i;
- float acc=0.f;
- for(i=0;i<el;i++){
- float val=(a[i]-b[i]);
- acc+=val*val;
- }
- return(acc);
-}
-
-static float *pointlist;
-static long points=0;
-
-void add_vector(codebook *b,float *vec,long n){
- int dim=b->dim,i,j;
- int step=n/dim;
- for(i=0;i<step;i++){
- for(j=i;j<n;j+=step){
- pointlist[points++]=vec[j];
- }
- }
-}
-
-static int bestm(codebook *b,float *vec){
- encode_aux_threshmatch *tt=b->c->thresh_tree;
- int dim=b->dim;
- int i,k,o;
- int best=0;
-
- /* what would be the closest match if the codebook was fully
- populated? */
-
- for(k=0,o=dim-1;k<dim;k++,o--){
- int i;
- for(i=0;i<tt->threshvals-1;i++)
- if(vec[o]<tt->quantthresh[i])break;
- best=(best*tt->quantvals)+tt->quantmap[i];
- }
- return(best);
-}
-
-static int closest(codebook *b,float *vec,int current){
- encode_aux_threshmatch *tt=b->c->thresh_tree;
- int dim=b->dim;
- int i,k,o;
-
- float bestmetric=0;
- int bestentry=-1;
- int best=bestm(b,vec);
-
- if(current<0 && b->c->lengthlist[best]>0)return best;
-
- for(i=0;i<b->entries;i++){
- if(b->c->lengthlist[i]>0 && i!=best && i!=current){
- float thismetric=_dist(dim, vec, b->valuelist+i*dim);
- if(bestentry==-1 || thismetric<bestmetric){
- bestentry=i;
- bestmetric=thismetric;
- }
- }
- }
-
- return(bestentry);
-}
-
-static float _heuristic(codebook *b,float *ppt,int secondbest){
- float *secondcell=b->valuelist+secondbest*b->dim;
- int best=bestm(b,ppt);
- float *firstcell=b->valuelist+best*b->dim;
- float error=_dist(b->dim,firstcell,secondcell);
- float *zero=alloca(b->dim*sizeof(float));
- float fromzero;
-
- memset(zero,0,b->dim*sizeof(float));
- fromzero=sqrt(_dist(b->dim,firstcell,zero));
-
- return(error/fromzero);
-}
-
-static int longsort(const void *a, const void *b){
- return **(long **)b-**(long **)a;
-}
-
-void usage(void){
- fprintf(stderr,"Ogg/Vorbis lattice codebook paring utility\n\n"
- "usage: latticepare book.vqh data.vqd <target_cells> <protected_cells> base\n"
- "where <target_cells> is the desired number of final cells (or -1\n"
- " for no change)\n"
- " <protected_cells> is the number of highest-hit count cells\n"
- " to protect from dispersal\n"
- " base is the base name (not including .vqh) of the new\n"
- " book\n\n");
- exit(1);
-}
-
-int main(int argc,char *argv[]){
- char *basename;
- codebook *b=NULL;
- int entries=0;
- int dim=0;
- long i,j,target=-1,protect=-1;
- FILE *out=NULL;
-
- int argnum=0;
-
- argv++;
- if(*argv==NULL){
- usage();
- exit(1);
- }
-
- while(*argv){
- if(*argv[0]=='-'){
-
- argv++;
-
- }else{
- switch (argnum++){
- case 0:case 1:
- {
- /* yes, this is evil. However, it's very convenient to parse file
- extentions */
-
- /* input file. What kind? */
- char *dot;
- char *ext=NULL;
- char *name=strdup(*argv++);
- dot=strrchr(name,'.');
- if(dot)
- ext=dot+1;
- else{
- ext="";
-
- }
-
-
- /* codebook */
- if(!strcmp(ext,"vqh")){
-
- basename=strrchr(name,'/');
- if(basename)
- basename=strdup(basename)+1;
- else
- basename=strdup(name);
- dot=strrchr(basename,'.');
- if(dot)*dot='\0';
-
- b=codebook_load(name);
- dim=b->dim;
- entries=b->entries;
- }
-
- /* data file; we do actually need to suck it into memory */
- /* we're dealing with just one book, so we can de-interleave */
- if(!strcmp(ext,"vqd") && !points){
- int cols;
- long lines=0;
- char *line;
- float *vec;
- FILE *in=fopen(name,"r");
- if(!in){
- fprintf(stderr,"Could not open input file %s\n",name);
- exit(1);
- }
-
- reset_next_value();
- line=setup_line(in);
- /* count cols before we start reading */
- {
- char *temp=line;
- while(*temp==' ')temp++;
- for(cols=0;*temp;cols++){
- while(*temp>32)temp++;
- while(*temp==' ')temp++;
- }
- }
- vec=alloca(cols*sizeof(float));
- /* count, then load, to avoid fragmenting the hell out of
- memory */
- while(line){
- lines++;
- for(j=0;j<cols;j++)
- if(get_line_value(in,vec+j)){
- fprintf(stderr,"Too few columns on line %ld in data file\n",lines);
- exit(1);
- }
- if((lines&0xff)==0)spinnit("counting samples...",lines*cols);
- line=setup_line(in);
- }
- pointlist=_ogg_malloc((cols*lines+entries*dim)*sizeof(float));
-
- rewind(in);
- line=setup_line(in);
- while(line){
- lines--;
- for(j=0;j<cols;j++)
- if(get_line_value(in,vec+j)){
- fprintf(stderr,"Too few columns on line %ld in data file\n",lines);
- exit(1);
- }
- /* deinterleave, add to heap */
- add_vector(b,vec,cols);
- if((lines&0xff)==0)spinnit("loading samples...",lines*cols);
-
- line=setup_line(in);
- }
- fclose(in);
- }
- }
- break;
- case 2:
- target=atol(*argv++);
- if(target==0)target=entries;
- break;
- case 3:
- protect=atol(*argv++);
- break;
- case 4:
- {
- char *buff=alloca(strlen(*argv)+5);
- sprintf(buff,"%s.vqh",*argv);
- basename=*argv++;
-
- out=fopen(buff,"w");
- if(!out){
- fprintf(stderr,"unable ot open %s for output",buff);
- exit(1);
- }
- }
- break;
- default:
- usage();
- }
- }
- }
- if(!entries || !points || !out)usage();
- if(target==-1)usage();
-
- /* add guard points */
- for(i=0;i<entries;i++)
- for(j=0;j<dim;j++)
- pointlist[points++]=b->valuelist[i*dim+j];
-
- points/=dim;
-
- /* set up auxiliary vectors for error tracking */
- {
- encode_aux_nearestmatch *nt=NULL;
- long pointssofar=0;
- long *pointindex;
- long indexedpoints=0;
- long *entryindex;
- long *reventry;
- long *membership=_ogg_malloc(points*sizeof(long));
- long *firsthead=_ogg_malloc(entries*sizeof(long));
- long *secondary=_ogg_malloc(points*sizeof(long));
- long *secondhead=_ogg_malloc(entries*sizeof(long));
-
- long *cellcount=_ogg_calloc(entries,sizeof(long));
- long *cellcount2=_ogg_calloc(entries,sizeof(long));
- float *cellerror=_ogg_calloc(entries,sizeof(float));
- float *cellerrormax=_ogg_calloc(entries,sizeof(float));
- long cellsleft=entries;
- for(i=0;i<points;i++)membership[i]=-1;
- for(i=0;i<entries;i++)firsthead[i]=-1;
- for(i=0;i<points;i++)secondary[i]=-1;
- for(i=0;i<entries;i++)secondhead[i]=-1;
-
- for(i=0;i<points;i++){
- /* assign vectors to the nearest cell. Also keep track of second
- nearest for error statistics */
- float *ppt=pointlist+i*dim;
- int firstentry=closest(b,ppt,-1);
- int secondentry=closest(b,ppt,firstentry);
- float firstmetric=_dist(dim,b->valuelist+dim*firstentry,ppt);
- float secondmetric=_dist(dim,b->valuelist+dim*secondentry,ppt);
-
- if(!(i&0xff))spinnit("initializing... ",points-i);
-
- membership[i]=firsthead[firstentry];
- firsthead[firstentry]=i;
- secondary[i]=secondhead[secondentry];
- secondhead[secondentry]=i;
-
- if(i<points-entries){
- cellerror[firstentry]+=secondmetric-firstmetric;
- cellerrormax[firstentry]=max(cellerrormax[firstentry],
- _heuristic(b,ppt,secondentry));
- cellcount[firstentry]++;
- cellcount2[secondentry]++;
- }
- }
-
- /* which cells are most heavily populated? Protect as many from
- dispersal as the user has requested */
- {
- long **countindex=_ogg_calloc(entries,sizeof(long *));
- for(i=0;i<entries;i++)countindex[i]=cellcount+i;
- qsort(countindex,entries,sizeof(long *),longsort);
- for(i=0;i<protect;i++){
- int ptr=countindex[i]-cellcount;
- cellerrormax[ptr]=9e50f;
- }
- }
-
- {
- fprintf(stderr,"\r");
- for(i=0;i<entries;i++){
- /* decompose index */
- int entry=i;
- for(j=0;j<dim;j++){
- fprintf(stderr,"%d:",entry%b->c->thresh_tree->quantvals);
- entry/=b->c->thresh_tree->quantvals;
- }
-
- fprintf(stderr,":%ld/%ld, ",cellcount[i],cellcount2[i]);
- }
- fprintf(stderr,"\n");
- }
-
- /* do the automatic cull request */
- while(cellsleft>target){
- int bestcell=-1;
- float besterror=0;
- float besterror2=0;
- long head=-1;
- char spinbuf[80];
- sprintf(spinbuf,"cells left to eliminate: %ld : ",cellsleft-target);
-
- /* find the cell with lowest removal impact */
- for(i=0;i<entries;i++){
- if(b->c->lengthlist[i]>0){
- if(bestcell==-1 || cellerrormax[i]<=besterror2){
- if(bestcell==-1 || cellerrormax[i]<besterror2 ||
- besterror>cellerror[i]){
- besterror=cellerror[i];
- besterror2=cellerrormax[i];
- bestcell=i;
- }
- }
- }
- }
-
- fprintf(stderr,"\reliminating cell %d \n"
- " dispersal error of %g max/%g total (%ld hits)\n",
- bestcell,besterror2,besterror,cellcount[bestcell]);
-
- /* disperse it. move each point out, adding it (properly) to
- the second best */
- b->c->lengthlist[bestcell]=0;
- head=firsthead[bestcell];
- firsthead[bestcell]=-1;
- while(head!=-1){
- /* head is a point number */
- float *ppt=pointlist+head*dim;
- int firstentry=closest(b,ppt,-1);
- int secondentry=closest(b,ppt,firstentry);
- float firstmetric=_dist(dim,b->valuelist+dim*firstentry,ppt);
- float secondmetric=_dist(dim,b->valuelist+dim*secondentry,ppt);
- long next=membership[head];
-
- if(head<points-entries){
- cellcount[firstentry]++;
- cellcount[bestcell]--;
- cellerror[firstentry]+=secondmetric-firstmetric;
- cellerrormax[firstentry]=max(cellerrormax[firstentry],
- _heuristic(b,ppt,secondentry));
- }
-
- membership[head]=firsthead[firstentry];
- firsthead[firstentry]=head;
- head=next;
- if(cellcount[bestcell]%128==0)
- spinnit(spinbuf,cellcount[bestcell]+cellcount2[bestcell]);
-
- }
-
- /* now see that all points that had the dispersed cell as second
- choice have second choice reassigned */
- head=secondhead[bestcell];
- secondhead[bestcell]=-1;
- while(head!=-1){
- float *ppt=pointlist+head*dim;
- /* who are we assigned to now? */
- int firstentry=closest(b,ppt,-1);
- /* what is the new second closest match? */
- int secondentry=closest(b,ppt,firstentry);
- /* old second closest is the cell being disbanded */
- float oldsecondmetric=_dist(dim,b->valuelist+dim*bestcell,ppt);
- /* new second closest error */
- float secondmetric=_dist(dim,b->valuelist+dim*secondentry,ppt);
- long next=secondary[head];
-
- if(head<points-entries){
- cellcount2[secondentry]++;
- cellcount2[bestcell]--;
- cellerror[firstentry]+=secondmetric-oldsecondmetric;
- cellerrormax[firstentry]=max(cellerrormax[firstentry],
- _heuristic(b,ppt,secondentry));
- }
-
- secondary[head]=secondhead[secondentry];
- secondhead[secondentry]=head;
- head=next;
-
- if(cellcount2[bestcell]%128==0)
- spinnit(spinbuf,cellcount2[bestcell]);
- }
-
- cellsleft--;
- }
-
- /* paring is over. Build decision trees using points that now fall
- through the thresh matcher. */
- /* we don't free membership; we flatten it in order to use in lp_split */
-
- for(i=0;i<entries;i++){
- long head=firsthead[i];
- spinnit("rearranging membership cache... ",entries-i);
- while(head!=-1){
- long next=membership[head];
- membership[head]=i;
- head=next;
- }
- }
-
- free(secondhead);
- free(firsthead);
- free(cellerror);
- free(cellerrormax);
- free(secondary);
-
- pointindex=_ogg_malloc(points*sizeof(long));
- /* make a point index of fall-through points */
- for(i=0;i<points;i++){
- int best=_best(b,pointlist+i*dim,1);
- if(best==-1)
- pointindex[indexedpoints++]=i;
- spinnit("finding orphaned points... ",points-i);
- }
-
- /* make an entry index */
- entryindex=_ogg_malloc(entries*sizeof(long));
- target=0;
- for(i=0;i<entries;i++){
- if(b->c->lengthlist[i]>0)
- entryindex[target++]=i;
- }
-
- /* make working space for a reverse entry index */
- reventry=_ogg_malloc(entries*sizeof(long));
-
- /* do the split */
- nt=b->c->nearest_tree=
- _ogg_calloc(1,sizeof(encode_aux_nearestmatch));
-
- nt->alloc=4096;
- nt->ptr0=_ogg_malloc(sizeof(long)*nt->alloc);
- nt->ptr1=_ogg_malloc(sizeof(long)*nt->alloc);
- nt->p=_ogg_malloc(sizeof(long)*nt->alloc);
- nt->q=_ogg_malloc(sizeof(long)*nt->alloc);
- nt->aux=0;
-
- fprintf(stderr,"Leaves added: %d \n",
- lp_split(pointlist,points,
- b,entryindex,target,
- pointindex,indexedpoints,
- membership,reventry,
- 0,&pointssofar));
- free(membership);
- free(reventry);
- free(pointindex);
-
- /* hack alert. I should just change the damned splitter and
- codebook writer */
- for(i=0;i<nt->aux;i++)nt->p[i]*=dim;
- for(i=0;i<nt->aux;i++)nt->q[i]*=dim;
-
- /* recount hits. Build new lengthlist. reuse entryindex storage */
- for(i=0;i<entries;i++)entryindex[i]=1;
- for(i=0;i<points-entries;i++){
- int best=_best(b,pointlist+i*dim,1);
- float *a=pointlist+i*dim;
- if(!(i&0xff))spinnit("counting hits...",i);
- if(best==-1){
- fprintf(stderr,"\nINTERNAL ERROR; a point count not be matched to a\n"
- "codebook entry. The new decision tree is broken.\n");
- exit(1);
- }
- entryindex[best]++;
- }
- for(i=0;i<nt->aux;i++)nt->p[i]/=dim;
- for(i=0;i<nt->aux;i++)nt->q[i]/=dim;
-
- /* the lengthlist builder doesn't actually deal with 0 hit entries.
- So, we pack the 'sparse' hit list into a dense list, then unpack
- the lengths after the build */
- {
- int upper=0;
- long *lengthlist=_ogg_calloc(entries,sizeof(long));
- for(i=0;i<entries;i++){
- if(b->c->lengthlist[i]>0)
- entryindex[upper++]=entryindex[i];
- else{
- if(entryindex[i]>1){
- fprintf(stderr,"\nINTERNAL ERROR; _best matched to unused entry\n");
- exit(1);
- }
- }
- }
-
- /* sanity check */
- if(upper != target){
- fprintf(stderr,"\nINTERNAL ERROR; packed the wrong number of entries\n");
- exit(1);
- }
-
- build_tree_from_lengths(upper,entryindex,lengthlist);
-
- upper=0;
- for(i=0;i<entries;i++){
- if(b->c->lengthlist[i]>0)
- b->c->lengthlist[i]=lengthlist[upper++];
- }
-
- }
- }
- /* we're done. write it out. */
- write_codebook(out,basename,b->c);
-
- fprintf(stderr,"\r \nDone.\n");
- return(0);
-}
-
-
-
-
diff --git a/vq/latticetune.c b/vq/latticetune.c
deleted file mode 100644
index c56f6cb0..00000000
--- a/vq/latticetune.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: utility main for setting entropy encoding parameters
- for lattice codebooks
- last mod: $Id: latticetune.c,v 1.9 2001/06/15 21:15:43 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <string.h>
-#include <errno.h>
-#include "bookutil.h"
-
-static char *strrcmp_i(char *s,char *cmp){
- return(strncmp(s+strlen(s)-strlen(cmp),cmp,strlen(cmp)));
-}
-
-/* This util takes a training-collected file listing codewords used in
- LSP fitting, then generates new codeword lengths for maximally
- efficient integer-bits entropy encoding.
-
- command line:
- latticetune book.vqh input.vqd [unused_entriesp]
-
- latticetune produces book.vqh on stdout */
-
-int main(int argc,char *argv[]){
- codebook *b;
- static_codebook *c;
- long *lengths;
- long *hits;
-
- int entries=-1,dim=-1,guard=1;
- FILE *in=NULL;
- char *line,*name;
- long j;
-
- if(argv[1]==NULL){
- fprintf(stderr,"Need a lattice codebook on the command line.\n");
- exit(1);
- }
- if(argv[2]==NULL){
- fprintf(stderr,"Need a codeword data file on the command line.\n");
- exit(1);
- }
- if(argv[3]!=NULL)guard=0;
-
- {
- char *ptr;
- char *filename=strdup(argv[1]);
-
- b=codebook_load(filename);
- c=(static_codebook *)(b->c);
-
- ptr=strrchr(filename,'.');
- if(ptr){
- *ptr='\0';
- name=strdup(filename);
- }else{
- name=strdup(filename);
- }
- }
-
- if(c->maptype!=1){
- fprintf(stderr,"Provided book is not a latticebook.\n");
- exit(1);
- }
-
- entries=b->entries;
- dim=b->dim;
-
- hits=_ogg_malloc(entries*sizeof(long));
- lengths=_ogg_calloc(entries,sizeof(long));
- for(j=0;j<entries;j++)hits[j]=guard;
-
- in=fopen(argv[2],"r");
- if(!in){
- fprintf(stderr,"Could not open input file %s\n",argv[2]);
- exit(1);
- }
-
- if(!strrcmp_i(argv[0],"latticetune")){
- long lines=0;
- line=setup_line(in);
- while(line){
- long code;
- lines++;
- if(!(lines&0xfff))spinnit("codewords so far...",lines);
-
- if(sscanf(line,"%ld",&code)==1)
- hits[code]++;
-
- line=setup_line(in);
- }
- }
-
- if(!strrcmp_i(argv[0],"res0tune") || !strrcmp_i(argv[0],"res1tune")){
- long step,adv,max;
- long lines=0;
- long cols=-1;
- float *vec;
- long interleave=1;
- if(!strrcmp_i(argv[0],"res1tune"))
- interleave=0;
-
- line=setup_line(in);
- while(line){
- int code;
- if(!(lines&0xfff))spinnit("codewords so far...",lines);
-
- if(cols==-1){
- char *temp=line;
- while(*temp==' ')temp++;
- for(cols=0;*temp;cols++){
- while(*temp>32)temp++;
- while(*temp==' ')temp++;
- }
- vec=alloca(sizeof(float)*cols);
- if(interleave){
- step=cols/dim;
- adv=1;
- max=step;
- }else{
- step=1;
- adv=dim;
- max=cols-dim+1;
- }
- }
-
- for(j=0;j<cols;j++)
- if(get_line_value(in,vec+j)){
- fprintf(stderr,"Too few columns on line %ld in data file\n",lines);
- exit(1);
- }
-
- for(j=0;j<max;j+=adv){
- lines++;
- code=_best(b,vec+j,step);
- hits[code]++;
- }
-
- line=setup_line(in);
- }
- }
-
- fclose(in);
-
- /* build the codeword lengths */
- build_tree_from_lengths0(entries,hits,lengths);
-
- c->lengthlist=lengths;
- write_codebook(stdout,name,c);
-
- {
- long bins=_book_maptype1_quantvals(c);
- long i,k,base=c->lengthlist[0];
- for(i=0;i<entries;i++)
- if(c->lengthlist[i]>base)base=c->lengthlist[i];
-
- for(j=0;j<entries;j++){
- if(c->lengthlist[j]){
- int indexdiv=1;
- fprintf(stderr,"%4ld: ",j);
- for(k=0;k<c->dim;k++){
- int index= (j/indexdiv)%bins;
- fprintf(stderr,"%+3.1f,", c->quantlist[index]*_float32_unpack(c->q_delta)+
- _float32_unpack(c->q_min));
- indexdiv*=bins;
- }
- fprintf(stderr,"\t|",(1<<(base-c->lengthlist[j])));
- for(k=0;k<base-c->lengthlist[j];k++)fprintf(stderr,"*");
- fprintf(stderr,"\n");
- }
- }
- }
-
- fprintf(stderr,"\r "
- "\nDone.\n");
- exit(0);
-}
diff --git a/vq/lsp12_0.vql b/vq/lsp12_0.vql
deleted file mode 100644
index b323ab37..00000000
--- a/vq/lsp12_0.vql
+++ /dev/null
@@ -1,2 +0,0 @@
-43 1 0 1
-.06,.07,.08,.09,.10,.11,.12,.13,.14,.15,.16,.17,.18,.19,.196,.202,.208,.214,.22,.226,.232,.238,.244,.25,.256,.262,.268,.274,.28,.29,.3,.31,.32,.33,.35,.38,.42,.47,.53,.6,.68,.77,.87
diff --git a/vq/lsp12_1.vql b/vq/lsp12_1.vql
deleted file mode 100644
index be9b7e13..00000000
--- a/vq/lsp12_1.vql
+++ /dev/null
@@ -1,2 +0,0 @@
-14 3 0 1
-.202,.208,.214,.22,.226,.232,.238,.244,.25,.256,.262,.268,.274,.28
diff --git a/vq/lsp30_0.vql b/vq/lsp30_0.vql
deleted file mode 100644
index 13b67b29..00000000
--- a/vq/lsp30_0.vql
+++ /dev/null
@@ -1,2 +0,0 @@
-26 2 0 1
-.067,.069,.071,.073,.075,.077,.079,.081,.083,.085,.087,.089,.091,.093,.095,.098,.102,.106,.110,.114,.118,.122,.13,.14,.15,.16
diff --git a/vq/lsp30_1.vql b/vq/lsp30_1.vql
deleted file mode 100644
index ab4e1856..00000000
--- a/vq/lsp30_1.vql
+++ /dev/null
@@ -1,2 +0,0 @@
-14 3 0 1
-.083,.085,.087,.089,.091,.093,.095,.098,.102,.106,.110,.114,.118,.122
diff --git a/vq/lsp9_0.vql b/vq/lsp9_0.vql
deleted file mode 100644
index e0acd546..00000000
--- a/vq/lsp9_0.vql
+++ /dev/null
@@ -1,2 +0,0 @@
-25 1 0 1
-.16,.17,.18,.19,.21,.22,.23,.24,.252,.264,.272,.28,.29,.30,.312,.324,.336,.35,.364,.382,.402,.424,.45,.5,.6
diff --git a/vq/lsp9_1.vql b/vq/lsp9_1.vql
deleted file mode 100644
index 54a0d296..00000000
--- a/vq/lsp9_1.vql
+++ /dev/null
@@ -1,2 +0,0 @@
-12 3 0 1
-.252,.264,.272,.28,.29,.30,.312,.324,.336,.35,.364,.382
diff --git a/vq/lspdata.c b/vq/lspdata.c
deleted file mode 100644
index b8fabf16..00000000
--- a/vq/lspdata.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: metrics and quantization code for LSP VQ codebooks
- last mod: $Id: lspdata.c,v 1.18 2001/02/26 03:51:12 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <math.h>
-#include <stdio.h>
-#include "vqgen.h"
-#include "vqext.h"
-#include "codebook.h"
-
-char *vqext_booktype="LSPdata";
-quant_meta q={0,0,0,1}; /* set sequence data */
-int vqext_aux=1;
-
-float global_maxdel=M_PI;
-float global_mindel=M_PI;
-#if 0
-void vqext_quantize(vqgen *v,quant_meta *q){
- float delta,mindel;
- float maxquant=((1<<q->quant)-1);
- int j,k;
-
- /* first find the basic delta amount from the maximum span to be
- encoded. Loosen the delta slightly to allow for additional error
- during sequence quantization */
-
- delta=(global_maxdel-global_mindel)/((1<<q->quant)-1.5f);
-
- q->min=_float32_pack(global_mindel);
- q->delta=_float32_pack(delta);
-
- mindel=_float32_unpack(q->min);
- delta=_float32_unpack(q->delta);
-
- for(j=0;j<v->entries;j++){
- float last=0;
- for(k=0;k<v->elements;k++){
- float val=_now(v,j)[k];
- float now=rint((val-last-mindel)/delta);
-
- _now(v,j)[k]=now;
- if(now<0){
- /* be paranoid; this should be impossible */
- fprintf(stderr,"fault; quantized value<0\n");
- exit(1);
- }
-
- if(now>maxquant){
- /* be paranoid; this should be impossible */
- fprintf(stderr,"fault; quantized value>max\n");
- exit(1);
- }
- last=(now*delta)+mindel+last;
- }
- }
-
-}
-#else
-void vqext_quantize(vqgen *v,quant_meta *q){
- vqgen_quantize(v,q);
-}
-#endif
-
-float *weight=NULL;
-#if 0
-/* LSP training metric. We weight error proportional to distance
- *between* LSP vector values. The idea of this metric is not to set
- final cells, but get the midpoint spacing into a form conducive to
- what we want, which is weighting toward preserving narrower
- features. */
-
-#define FUDGE (global_maxdel-weight[i])
-
-float *vqext_weight(vqgen *v,float *p){
- int i;
- int el=v->elements;
- float lastp=0.f;
- for(i=0;i<el;i++){
- float predist=(p[i]-lastp);
- float postdist=(p[i+1]-p[i]);
- weight[i]=(predist<postdist?predist:postdist);
- lastp=p[i];
- }
- return p;
-}
-#else
-#define FUDGE 1.f
-float *vqext_weight(vqgen *v,float *p){
- return p;
-}
-#endif
-
- /* candidate,actual */
-float vqext_metric(vqgen *v,float *e, float *p){
- int i;
- int el=v->elements;
- float acc=0.f;
- for(i=0;i<el;i++){
- float val=(p[i]-e[i])*FUDGE;
- acc+=val*val;
- }
- return sqrt(acc/v->elements);
-}
-
-/* Data files are line-vectors, now just deltas. The codebook entries
- want to be monotonically increasing, so we adjust */
-
-/* assume vqext_aux==1 */
-void vqext_addpoint_adj(vqgen *v,float *b,int start,int dim,int cols,int num){
- float *a=alloca(sizeof(float)*(dim+1)); /* +aux */
- float base=0;
- int i;
-
- for(i=0;i<dim;i++)
- base=a[i]=b[i+start]+base;
-
- if(start+dim+1>cols) /* +aux */
- a[i]=M_PI;
- else
- a[i]=b[i+start]+base;
-
- vqgen_addpoint(v,a,a+dim);
-}
-
-/* we just need to calc the global_maxdel from the training set */
-void vqext_preprocess(vqgen *v){
- long j,k;
-
- global_maxdel=0.f;
- global_mindel=M_PI;
- for(j=0;j<v->points;j++){
- float last=0.;
- for(k=0;k<v->elements+v->aux;k++){
- float p=_point(v,j)[k];
- if(p-last>global_maxdel)global_maxdel=p-last;
- if(p-last<global_mindel)global_mindel=p-last;
- last=p;
- }
- }
-
- weight=_ogg_malloc(sizeof(float)*v->elements);
-}
-
diff --git a/vq/make_residue_books.pl b/vq/make_residue_books.pl
deleted file mode 100755
index e76fd8ed..00000000
--- a/vq/make_residue_books.pl
+++ /dev/null
@@ -1,288 +0,0 @@
-#!/usr/bin/perl
-
-# quick, very dirty little script so that we can put all the
-# information for building a residue book set (except the original
-# partitioning) in one spec file.
-
-#eg:
-
-# >res0_128_128 interleaved
-# haux res0_96_128aux.vqd 0,4,2
-# :1 res0_128_128_1.vqd, 4, nonseq cull, 0 +- 1
-# +1a, 4, nonseq, 0 +- .25 .5
-# :2 res0_128_128_2.vqd, 4, nonseq, 0 +- 1(.7) 2
-# :3 res0_128_128_3.vqd, 4, nonseq, 0 +- 1(.7) 3 5
-# :4 res0_128_128_4.vqd, 2, nonseq, 0 +- 1(.7) 3 5 8 11
-# :5 res0_128_128_5.vqd, 1, nonseq, 0 +- 1 3 5 8 11 14 17 20 24 28 31 35 39
-
-
-die "Could not open $ARGV[0]: $!" unless open (F,$ARGV[0]);
-
-$goflag=0;
-while($line=<F>){
-
- print "#### $line";
- if($line=~m/^GO/){
- $goflag=1;
- next;
- }
-
- if($goflag==0){
- if($line=~m/\S+/ && !($line=~m/^\#/) ){
- my $command=$line;
- print ">>> $command";
- die "Couldn't shell command.\n\tcommand:$command\n"
- if syst($command);
- }
- next;
- }
-
- # >res0_128_128
- if($line=~m/^>(\S+)\s+(\S*)/){
- # set the output name
- $globalname=$1;
- $interleave=$2;
- next;
- }
-
- # haux res0_96_128aux.vqd 0,4,2
- if($line=~m/^h(.*)/){
- # build a huffman book (no mapping)
- my($name,$datafile,$arg)=split(' ',$1);
-
- my $command="huffbuild $datafile $arg";
- print ">>> $command\n";
- die "Couldn't build huffbook.\n\tcommand:$command\n"
- if syst($command);
- next;
- }
-
- # :1 res0_128_128_1.vqd, 4, nonseq, 0 +- 1
- if($line=~m/^:(.*)/){
- my($namedata,$dim,$seqp,$vals)=split(',',$1);
- my($name,$datafile)=split(' ',$namedata);
- # build value list
- my$plusminus="+";
- my$list;
- my$thlist;
- my$count=0;
- foreach my$val (split(' ',$vals)){
- if($val=~/\-?\+?\d+/){
- my$th;
-
- # got an explicit threshhint?
- if($val=~/([0-9\.]+)\(([^\)]+)/){
- $val=$1;
- $th=$2;
- }
-
- if($plusminus=~/-/){
- $list.="-$val ";
- if(defined($th)){
- $thlist.="," if(defined($thlist));
- $thlist.="-$th";
- }
- $count++;
- }
- if($plusminus=~/\+/){
- $list.="$val ";
- if(defined($th)){
- $thlist.="," if(defined($thlist));
- $thlist.="$th";
- }
- $count++;
- }
- }else{
- $plusminus=$val;
- }
- }
- die "Couldn't open temp file temp$$.vql: $!" unless
- open(G,">temp$$.vql");
- print G "$count $dim 0 ";
- if($seqp=~/non/){
- print G "0\n$list\n";
- }else{
- print G "1\n$list\n";
- }
- close(G);
-
- my $command="latticebuild temp$$.vql > $globalname$name.vqh";
- print ">>> $command\n";
- die "Couldn't build latticebook.\n\tcommand:$command\n"
- if syst($command);
-
- my $command="latticehint $globalname$name.vqh $thlist > temp$$.vqh";
- print ">>> $command\n";
- die "Couldn't pre-hint latticebook.\n\tcommand:$command\n"
- if syst($command);
-
- if($interleave=~/non/){
- $restune="res1tune";
- }else{
- $restune="res0tune";
- }
-
- if($seqp=~/cull/){
- my $command="$restune temp$$.vqh $datafile 1 > $globalname$name.vqh";
- print ">>> $command\n";
- die "Couldn't tune latticebook.\n\tcommand:$command\n"
- if syst($command);
- }else{
- my $command="$restune temp$$.vqh $datafile > $globalname$name.vqh";
- print ">>> $command\n";
- die "Couldn't tune latticebook.\n\tcommand:$command\n"
- if syst($command);
- }
-
- my $command="latticehint $globalname$name.vqh $thlist > temp$$.vqh";
- print ">>> $command\n";
- die "Couldn't post-hint latticebook.\n\tcommand:$command\n"
- if syst($command);
-
- my $command="mv temp$$.vqh $globalname$name.vqh";
- print ">>> $command\n";
- die "Couldn't rename latticebook.\n\tcommand:$command\n"
- if syst($command);
-
- # run the training data through book to cascade
- if($interleave=~/non/){
- $vqcascade="vqcascade";
- }else{
- $vqcascade="vqcascade -i";
- }
-
- my $command="$vqcascade +$globalname$name.vqh $datafile > temp$$.vqd";
- print ">>> $command\n";
- die "Couldn't cascade latticebook.\n\tcommand:$command\n"
- if syst($command);
-
-
- my $command="rm temp$$.vql";
- print ">>> $command\n";
- die "Couldn't remove temp files.\n\tcommand:$command\n"
- if syst($command);
-
- next;
- }
- # +a 4, nonseq, 0 +- 1
- if($line=~m/^\+(.*)/){
- my($name,$dim,$seqp,$vals)=split(',',$1);
-
- # build value list
- my$plusminus="+";
- my$list;
- my$thlist;
- my$count=0;
- foreach my$val (split(' ',$vals)){
- if($val=~/\-?\+?\d+/){
- my$th;
-
- # got an explicit threshhint?
- if($val=~/([0-9\.]+)\(([^\)]+)/){
- $val=$1;
- $th=$2;
- }
-
- if($plusminus=~/-/){
- $list.="-$val ";
- if(defined($th)){
- $thlist.="," if(defined($thlist));
- $thlist.="-$th";
- }
- $count++;
- }
- if($plusminus=~/\+/){
- $list.="$val ";
- if(defined($th)){
- $thlist.="," if(defined($thlist));
- $thlist.="$th";
- }
- $count++;
- }
- }else{
- $plusminus=$val;
- }
- }
- die "Couldn't open temp file temp$$.vql: $!" unless
- open(G,">temp$$.vql");
- print G "$count $dim 0 ";
- if($seqp=~/non/){
- print G "0\n$list\n";
- }else{
- print G "1\n$list\n";
- }
- close(G);
-
- my $command="latticebuild temp$$.vql > $globalname$name.vqh";
- print ">>> $command\n";
- die "Couldn't build latticebook.\n\tcommand:$command\n"
- if syst($command);
-
- my $command="latticehint $globalname$name.vqh $thlist > temp$$.vqh";
- print ">>> $command\n";
- die "Couldn't pre-hint latticebook.\n\tcommand:$command\n"
- if syst($command);
-
- if($interleave=~/non/){
- $restune="res1tune";
- }else{
- $restune="res0tune";
- }
-
- if($seqp=~/cull/){
- my $command="$restune temp$$.vqh temp$$.vqd 1 > $globalname$name.vqh";
- print ">>> $command\n";
- die "Couldn't tune latticebook.\n\tcommand:$command\n"
- if syst($command);
- }else{
- my $command="$restune temp$$.vqh temp$$.vqd > $globalname$name.vqh";
- print ">>> $command\n";
- die "Couldn't tune latticebook.\n\tcommand:$command\n"
- if syst($command);
- }
-
- my $command="latticehint $globalname$name.vqh $thlist > temp$$.vqh";
- print ">>> $command\n";
- die "Couldn't post-hint latticebook.\n\tcommand:$command\n"
- if syst($command);
-
- my $command="mv temp$$.vqh $globalname$name.vqh";
- print ">>> $command\n";
- die "Couldn't rename latticebook.\n\tcommand:$command\n"
- if syst($command);
-
- # run the training data through book to cascade
- if($interleave=~/non/){
- $vqcascade="vqcascade";
- }else{
- $vqcascade="vqcascade -i";
- }
-
- my $command="$vqcascade +$globalname$name.vqh temp$$.vqd > tempa$$.vqd";
- print ">>> $command\n";
- die "Couldn't cascade latticebook.\n\tcommand:$command\n"
- if syst($command);
-
-
- my $command="rm temp$$.vql";
- print ">>> $command\n";
- die "Couldn't remove temp files.\n\tcommand:$command\n"
- if syst($command);
-
- my $command="mv tempa$$.vqd temp$$.vqd";
- print ">>> $command\n";
- die "Couldn't rename temp file.\n\tcommand:$command\n"
- if syst($command);
-
- next;
- }
-}
-
-$command="rm temp$$.vqd";
-print ">>> $command\n";
-die "Couldn't remove temp files.\n\tcommand:$command\n"
- if syst($command);
-
-sub syst{
- system(@_)/256;
-}
diff --git a/vq/metrics.c b/vq/metrics.c
deleted file mode 100644
index 5ba67992..00000000
--- a/vq/metrics.c
+++ /dev/null
@@ -1,295 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: function calls to collect codebook metrics
- last mod: $Id: metrics.c,v 1.14 2001/02/26 03:51:12 xiphmont Exp $
-
- ********************************************************************/
-
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <math.h>
-#include "bookutil.h"
-
-/* collect the following metrics:
-
- mean and mean squared amplitude
- mean and mean squared error
- mean and mean squared error (per sample) by entry
- worst case fit by entry
- entry cell size
- hits by entry
- total bits
- total samples
- (average bits per sample)*/
-
-
-/* set up metrics */
-
-float meanamplitude_acc=0.f;
-float meanamplitudesq_acc=0.f;
-float meanerror_acc=0.f;
-float meanerrorsq_acc=0.f;
-
-float **histogram=NULL;
-float **histogram_error=NULL;
-float **histogram_errorsq=NULL;
-float **histogram_hi=NULL;
-float **histogram_lo=NULL;
-float bits=0.f;
-float count=0.f;
-
-static float *_now(codebook *c, int i){
- return c->valuelist+i*c->c->dim;
-}
-
-int books=0;
-
-void process_preprocess(codebook **bs,char *basename){
- int i;
- while(bs[books])books++;
-
- if(books){
- histogram=_ogg_calloc(books,sizeof(float *));
- histogram_error=_ogg_calloc(books,sizeof(float *));
- histogram_errorsq=_ogg_calloc(books,sizeof(float *));
- histogram_hi=_ogg_calloc(books,sizeof(float *));
- histogram_lo=_ogg_calloc(books,sizeof(float *));
- }else{
- fprintf(stderr,"Specify at least one codebook\n");
- exit(1);
- }
-
- for(i=0;i<books;i++){
- codebook *b=bs[i];
- histogram[i]=_ogg_calloc(b->entries,sizeof(float));
- histogram_error[i]=_ogg_calloc(b->entries*b->dim,sizeof(float));
- histogram_errorsq[i]=_ogg_calloc(b->entries*b->dim,sizeof(float));
- histogram_hi[i]=_ogg_calloc(b->entries*b->dim,sizeof(float));
- histogram_lo[i]=_ogg_calloc(b->entries*b->dim,sizeof(float));
- }
-}
-
-static float _dist(int el,float *a, float *b){
- int i;
- float acc=0.f;
- for(i=0;i<el;i++){
- float val=(a[i]-b[i]);
- acc+=val*val;
- }
- return acc;
-}
-
-void cell_spacing(codebook *c){
- int j,k;
- float min=-1.f,max=-1.f,mean=0.f,meansq=0.f;
- long total=0;
-
- /* minimum, maximum, mean, ms cell spacing */
- for(j=0;j<c->c->entries;j++){
- if(c->c->lengthlist[j]>0){
- float localmin=-1.;
- for(k=0;k<c->c->entries;k++){
- if(c->c->lengthlist[k]>0){
- float this=_dist(c->c->dim,_now(c,j),_now(c,k));
- if(j!=k &&
- (localmin==-1 || this<localmin))
- localmin=this;
- }
- }
-
- if(min==-1 || localmin<min)min=localmin;
- if(max==-1 || localmin>max)max=localmin;
- mean+=sqrt(localmin);
- meansq+=localmin;
- total++;
- }
- }
-
- fprintf(stderr,"\tminimum cell spacing (closest side): %g\n",sqrt(min));
- fprintf(stderr,"\tmaximum cell spacing (closest side): %g\n",sqrt(max));
- fprintf(stderr,"\tmean closest side spacing: %g\n",mean/total);
- fprintf(stderr,"\tmean sq closest side spacing: %g\n",sqrt(meansq/total));
-}
-
-void process_postprocess(codebook **bs,char *basename){
- int i,k,book;
- char *buffer=alloca(strlen(basename)+80);
-
- fprintf(stderr,"Done. Processed %ld data points:\n\n",
- (long)count);
-
- fprintf(stderr,"Global statistics:******************\n\n");
-
- fprintf(stderr,"\ttotal samples: %ld\n",(long)count);
- fprintf(stderr,"\ttotal bits required to code: %ld\n",(long)bits);
- fprintf(stderr,"\taverage bits per sample: %g\n\n",bits/count);
-
- fprintf(stderr,"\tmean sample amplitude: %g\n",
- meanamplitude_acc/count);
- fprintf(stderr,"\tmean squared sample amplitude: %g\n\n",
- sqrt(meanamplitudesq_acc/count));
-
- fprintf(stderr,"\tmean code error: %g\n",
- meanerror_acc/count);
- fprintf(stderr,"\tmean squared code error: %g\n\n",
- sqrt(meanerrorsq_acc/count));
-
- for(book=0;book<books;book++){
- FILE *out;
- codebook *b=bs[book];
- int n=b->c->entries;
- int dim=b->c->dim;
-
- fprintf(stderr,"Book %d statistics:------------------\n",book);
-
- cell_spacing(b);
-
- sprintf(buffer,"%s-%d-mse.m",basename,book);
- out=fopen(buffer,"w");
- if(!out){
- fprintf(stderr,"Could not open file %s for writing\n",buffer);
- exit(1);
- }
-
- for(i=0;i<n;i++){
- for(k=0;k<dim;k++){
- fprintf(out,"%d, %g, %g\n",
- i*dim+k,(b->valuelist+i*dim)[k],
- sqrt((histogram_errorsq[book]+i*dim)[k]/histogram[book][i]));
- }
- }
- fclose(out);
-
- sprintf(buffer,"%s-%d-me.m",basename,book);
- out=fopen(buffer,"w");
- if(!out){
- fprintf(stderr,"Could not open file %s for writing\n",buffer);
- exit(1);
- }
-
- for(i=0;i<n;i++){
- for(k=0;k<dim;k++){
- fprintf(out,"%d, %g, %g\n",
- i*dim+k,(b->valuelist+i*dim)[k],
- (histogram_error[book]+i*dim)[k]/histogram[book][i]);
- }
- }
- fclose(out);
-
- sprintf(buffer,"%s-%d-worst.m",basename,book);
- out=fopen(buffer,"w");
- if(!out){
- fprintf(stderr,"Could not open file %s for writing\n",buffer);
- exit(1);
- }
-
- for(i=0;i<n;i++){
- for(k=0;k<dim;k++){
- fprintf(out,"%d, %g, %g, %g\n",
- i*dim+k,(b->valuelist+i*dim)[k],
- (b->valuelist+i*dim)[k]+(histogram_lo[book]+i*dim)[k],
- (b->valuelist+i*dim)[k]+(histogram_hi[book]+i*dim)[k]);
- }
- }
- fclose(out);
- }
-}
-
-float process_one(codebook *b,int book,float *a,int dim,int step,int addmul,
- float base){
- int j,entry;
- float amplitude=0.f;
-
- if(book==0){
- float last=base;
- for(j=0;j<dim;j++){
- amplitude=a[j*step]-(b->c->q_sequencep?last:0);
- meanamplitude_acc+=fabs(amplitude);
- meanamplitudesq_acc+=amplitude*amplitude;
- count++;
- last=a[j*step];
- }
- }
-
- if(b->c->q_sequencep){
- float temp;
- for(j=0;j<dim;j++){
- temp=a[j*step];
- a[j*step]-=base;
- }
- base=temp;
- }
-
- entry=vorbis_book_besterror(b,a,step,addmul);
-
- if(entry==-1){
- fprintf(stderr,"Internal error: _best returned -1.\n");
- exit(1);
- }
-
- histogram[book][entry]++;
- bits+=vorbis_book_codelen(b,entry);
-
- for(j=0;j<dim;j++){
- float error=a[j*step];
-
- if(book==books-1){
- meanerror_acc+=fabs(error);
- meanerrorsq_acc+=error*error;
- }
- histogram_errorsq[book][entry*dim+j]+=error*error;
- histogram_error[book][entry*dim+j]+=fabs(error);
- if(histogram[book][entry]==0 || histogram_hi[book][entry*dim+j]<error)
- histogram_hi[book][entry*dim+j]=error;
- if(histogram[book][entry]==0 || histogram_lo[book][entry*dim+j]>error)
- histogram_lo[book][entry*dim+j]=error;
- }
- return base;
-}
-
-
-void process_vector(codebook **bs,int *addmul,int inter,float *a,int n){
- int bi;
- int i;
-
- for(bi=0;bi<books;bi++){
- codebook *b=bs[bi];
- int dim=b->dim;
- float base=0.f;
-
- if(inter){
- for(i=0;i<n/dim;i++)
- base=process_one(b,bi,a+i,dim,n/dim,addmul[bi],base);
- }else{
- for(i=0;i<=n-dim;i+=dim)
- base=process_one(b,bi,a+i,dim,1,addmul[bi],base);
- }
- }
-
- if((long)(count)%100)spinnit("working.... samples: ",count);
-}
-
-void process_usage(void){
- fprintf(stderr,
- "usage: vqmetrics [-i] +|*<codebook>.vqh [ +|*<codebook.vqh> ]... \n"
- " datafile.vqd [datafile.vqd]...\n\n"
- " data can be taken on stdin. -i indicates interleaved coding.\n"
- " Output goes to output files:\n"
- " basename-me.m: gnuplot: mean error by entry value\n"
- " basename-mse.m: gnuplot: mean square error by entry value\n"
- " basename-worst.m: gnuplot: worst error by entry value\n"
- " basename-distance.m: gnuplot file showing distance probability\n"
- "\n");
-
-}
diff --git a/vq/res_128c.vqs b/vq/res_128c.vqs
deleted file mode 100644
index dce5024b..00000000
--- a/vq/res_128c.vqs
+++ /dev/null
@@ -1,62 +0,0 @@
-huffbuild line0_class1.vqd 0-64
-huffbuild line0_class2.vqd 0-64
-
-huffbuild line0_0sub0.vqd 0-64
-huffbuild line0_1sub1.vqd 1-9
-huffbuild line0_1sub2.vqd 9-25
-huffbuild line0_1sub3.vqd 25-64
-huffbuild line0_2sub1.vqd 1-9
-huffbuild line0_2sub2.vqd 9-25
-huffbuild line0_2sub3.vqd 25-64
-
-huffbuild line1_class0.vqd 0-8
-huffbuild line1_class1.vqd 0-16
-huffbuild line1_class2.vqd 0-64
-huffbuild line1_class3.vqd 0-64
-
-huffbuild line1_0sub0.vqd 0-32
-huffbuild line1_0sub1.vqd 32-128
-
-huffbuild line1_1sub0.vqd 0-32
-huffbuild line1_1sub1.vqd 32-128
-
-huffbuild line1_2sub1.vqd 1-18
-huffbuild line1_2sub2.vqd 18-50
-huffbuild line1_2sub3.vqd 50-128
-huffbuild line1_3sub1.vqd 1-18
-huffbuild line1_3sub2.vqd 18-50
-huffbuild line1_3sub3.vqd 50-128
-
-residuesplit residue_0#0.vqd 0,192,8 res0_128_128 ,.7, ,1.5,16 ,1.5 ,2.5,6 ,2.5,16 ,2.5 ,4.5 ,17.5 ,80.5
-
-residuesplit residue_1#0.vqd 0,1536,32 res0_128_1024 ,.7, ,1.5,32 ,1.5 ,2.5,18 ,2.5,32 ,2.5 ,4.5 ,17.5 ,80.5
-
-GO
-
->res0_128_128 noninterleaved
-haux res0_128_128aux.vqd 0,24,2
-
->res0_128_1024 noninterleaved
-haux res0_128_1024aux.vqd 0,48,2
-
-:_1 res0_128_1024_1.vqd, 4, nonseq cull, 0 +- 1
-:_2 res0_128_1024_2.vqd, 4, nonseq cull, 0 +- 1
-:_3 res0_128_1024_3.vqd, 4, nonseq cull, 0 +- 1 2
-:_4 res0_128_1024_4.vqd, 4, nonseq cull, 0 +- 1 2
-:_5 res0_128_1024_5.vqd, 4, nonseq cull, 0 +- 1 2
-:_6 res0_128_1024_6.vqd, 2, nonseq cull, 0 +- 1 2 3 4
-:_7 res0_128_1024_7.vqd, 2, nonseq cull, 0 +- 5 10 15
-+_7a, 4, nonseq cull, 0 +- 1 2
-
-:_8 res0_128_1024_8.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78
-+_8a, 2, nonseq cull, 0 +- 1 2 3 4 5 6
-
-:_9 res0_128_1024_9.vqd, 2, nonseq, 0 +- 169 338
-+_9a, 2, nonseq, 0 +- 13 26 39 52 65 78
-+_9b, 2, nonseq, 0 +- 1 2 3 4 5 6
-
-
-
-
-
-
diff --git a/vq/res_128k.vqs b/vq/res_128k.vqs
deleted file mode 100644
index 597165ab..00000000
--- a/vq/res_128k.vqs
+++ /dev/null
@@ -1,19 +0,0 @@
->res0_128_128 noninterleave
-haux res0_128_128aux.vqd 0,6,3
-:_1 res0_128_128_1.vqd, 4, nonseq, 0 +- 1
-:_2 res0_128_128_2.vqd, 2, nonseq, 0 +- 1 2 3
-:_3 res0_128_128_3.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
-:_4 res0_128_128_4.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
-:_5 res0_128_128_5.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
-
->res0_128_1024 noninterleave
-haux res0_128_1024aux.vqd 0,30,2
-:_1 res0_128_1024_1.vqd, 4, nonseq, 0 +- 1
-:_2 res0_128_1024_2.vqd, 4, nonseq, 0 +- 1
-:_3 res0_128_1024_3.vqd, 4, nonseq, 0 +- 1 2
-:_4 res0_128_1024_4.vqd, 4, nonseq, 0 +- 1 2
-:_5 res0_128_1024_5.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6
-:_6 res0_128_1024_6.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6
-:_7 res0_128_1024_7.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12
-:_8 res0_128_1024_8.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
-:_9 res0_128_1024_9.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
diff --git a/vq/res_160c.vqs b/vq/res_160c.vqs
deleted file mode 100644
index 188f7d36..00000000
--- a/vq/res_160c.vqs
+++ /dev/null
@@ -1,64 +0,0 @@
-huffbuild line0_class1.vqd 0-64
-huffbuild line0_class2.vqd 0-64
-
-huffbuild line0_0sub0.vqd 0-64
-huffbuild line0_1sub1.vqd 1-9
-huffbuild line0_1sub2.vqd 9-25
-huffbuild line0_1sub3.vqd 25-64
-huffbuild line0_2sub1.vqd 1-9
-huffbuild line0_2sub2.vqd 9-25
-huffbuild line0_2sub3.vqd 25-64
-
-huffbuild line1_class0.vqd 0-8
-huffbuild line1_class1.vqd 0-16
-huffbuild line1_class2.vqd 0-64
-huffbuild line1_class3.vqd 0-64
-
-huffbuild line1_0sub0.vqd 0-32
-huffbuild line1_0sub1.vqd 32-128
-
-huffbuild line1_1sub0.vqd 0-32
-huffbuild line1_1sub1.vqd 32-128
-
-huffbuild line1_2sub1.vqd 1-18
-huffbuild line1_2sub2.vqd 18-50
-huffbuild line1_2sub3.vqd 50-128
-huffbuild line1_3sub1.vqd 1-18
-huffbuild line1_3sub2.vqd 18-50
-huffbuild line1_3sub3.vqd 50-128
-
-
-
-residuesplit residue_0#0.vqd 0,224,16 res0_128_128 ,.7, 7,1.5,8 ,1.5,8 ,1.5 11,2.5 ,2.5 ,4.5 ,16.5 ,84.5
-
-residuesplit residue_1#0.vqd 0,1792,32 res0_128_1024 ,.7, 10,1.5,32 ,1.5,32 ,1.5 20,2.5 ,2.5 ,4.5 ,16.5 ,84.5
-
-GO
-
->res0_128_128 noninterleaved
-haux res0_128_128aux.vqd 0,14,2
-
->res0_128_1024 noninterleaved
-haux res0_128_1024aux.vqd 0,56,2
-
-:_1 res0_128_1024_1.vqd, 4, nonseq cull, 0 +- 1
-:_2 res0_128_1024_2.vqd, 4, nonseq cull, 0 +- 1
-:_3 res0_128_1024_3.vqd, 4, nonseq cull, 0 +- 1
-:_4 res0_128_1024_4.vqd, 4, nonseq cull, 0 +- 1 2
-:_5 res0_128_1024_5.vqd, 4, nonseq cull, 0 +- 1 2
-:_6 res0_128_1024_6.vqd, 2, nonseq cull, 0 +- 1 2 3 4
-:_7 res0_128_1024_7.vqd, 2, nonseq cull, 0 +- 3 6 9 12 15
-+_7a, 4, nonseq cull, 0 +- 1
-
-:_8 res0_128_1024_8.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78
-+_8a, 2, nonseq cull, 0 +- 1 2 3 4 5 6
-
-:_9 res0_128_1024_9.vqd, 2, nonseq, 0 +- 169 338
-+_9a, 2, nonseq, 0 +- 13 26 39 52 65 78
-+_9b, 2, nonseq, 0 +- 1 2 3 4 5 6
-
-
-
-
-
-
diff --git a/vq/res_160k.vqs b/vq/res_160k.vqs
deleted file mode 100644
index b641dda7..00000000
--- a/vq/res_160k.vqs
+++ /dev/null
@@ -1,20 +0,0 @@
->res0_160_128
-haux res0_160_128aux.vqd 0,6,3
-:_1 res0_160_128_1.vqd, 4, nonseq, 0 +- 1
-:_2 res0_160_128_2.vqd, 2, nonseq, 0 +- 1 2 3
-:_3 res0_160_128_3.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
-:_4 res0_160_128_4.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
-:_5 res0_160_128_5.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
-
->res0_160_1024
-haux res0_160_1024aux.vqd 0,30,2
-:_1 res0_160_1024_1.vqd, 4, nonseq, 0 +- 1
-:_2 res0_160_1024_2.vqd, 4, nonseq, 0 +- 1
-:_3 res0_160_1024_3.vqd, 4, nonseq, 0 +- 1 2
-:_4 res0_160_1024_4.vqd, 4, nonseq, 0 +- 1 2
-:_5 res0_160_1024_5.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6
-:_6 res0_160_1024_6.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6
-:_7 res0_160_1024_7.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14
-:_8 res0_160_1024_8.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
-:_9 res0_160_1024_9.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
-
diff --git a/vq/res_192c.vqs b/vq/res_192c.vqs
deleted file mode 100644
index 7a846e3d..00000000
--- a/vq/res_192c.vqs
+++ /dev/null
@@ -1,63 +0,0 @@
-huffbuild line0_class1.vqd 0-64
-huffbuild line0_class2.vqd 0-64
-
-huffbuild line0_0sub0.vqd 0-64
-huffbuild line0_1sub1.vqd 1-9
-huffbuild line0_1sub2.vqd 9-25
-huffbuild line0_1sub3.vqd 25-64
-huffbuild line0_2sub1.vqd 1-9
-huffbuild line0_2sub2.vqd 9-25
-huffbuild line0_2sub3.vqd 25-64
-
-huffbuild line1_class0.vqd 0-8
-huffbuild line1_class1.vqd 0-16
-huffbuild line1_class2.vqd 0-64
-huffbuild line1_class3.vqd 0-64
-
-huffbuild line1_0sub0.vqd 0-32
-huffbuild line1_0sub1.vqd 32-128
-
-huffbuild line1_1sub0.vqd 0-32
-huffbuild line1_1sub1.vqd 32-128
-
-huffbuild line1_2sub1.vqd 1-18
-huffbuild line1_2sub2.vqd 18-50
-huffbuild line1_2sub3.vqd 50-128
-huffbuild line1_3sub1.vqd 1-18
-huffbuild line1_3sub2.vqd 18-50
-huffbuild line1_3sub3.vqd 50-128
-
-
-
-residuesplit residue_0#0.vqd 0,256,16 res0_128_128 ,.7, ,1.5 12,2.5 ,2.5 18,4.5 ,4.5 28,16.5 ,16.5 ,84.5
-
-residuesplit residue_1#0.vqd 0,2048,32 res0_128_1024 ,.7, ,1.5 22,2.5 ,2.5 34,4.5 ,4.5 64,16.5 ,16.5 ,84.5
-
-GO
-
->res0_128_128 noninterleaved
-haux res0_128_128aux.vqd 0,16,2
-
->res0_128_1024 noninterleaved
-haux res0_128_1024aux.vqd 0,64,2
-
-:_1 res0_128_1024_1.vqd, 4, nonseq cull, 0 +- 1
-:_2 res0_128_1024_2.vqd, 4, nonseq cull, 0 +- 1 2
-:_3 res0_128_1024_3.vqd, 4, nonseq cull, 0 +- 1 2
-:_4 res0_128_1024_4.vqd, 2, nonseq cull, 0 +- 1 2 3 4
-:_5 res0_128_1024_5.vqd, 2, nonseq cull, 0 +- 1 2 3 4
-:_6 res0_128_1024_6.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
-:_7 res0_128_1024_7.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
-
-:_8 res0_128_1024_8.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78
-+_8a, 2, nonseq cull, 0 +- 1 2 3 4 5 6
-
-:_9 res0_128_1024_9.vqd, 2, nonseq, 0 +- 169 338 507 676 845 1014 1183 1352
-+_9a, 2, nonseq, 0 +- 13 26 39 52 65 78
-+_9b, 2, nonseq, 0 +- 1 2 3 4 5 6
-
-
-
-
-
-
diff --git a/vq/res_192k.vqs b/vq/res_192k.vqs
deleted file mode 100644
index e1ee6b14..00000000
--- a/vq/res_192k.vqs
+++ /dev/null
@@ -1,19 +0,0 @@
->res0_192_128
-haux res0_192_128aux.vqd 0,8,4
-:_1 res0_192_128_1.vqd, 4, nonseq, 0 +- 1
-:_2 res0_192_128_2.vqd, 2, nonseq, 0 +- 1 2 3
-:_3 res0_192_128_3.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
-:_4 res0_192_128_4.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
-:_5 res0_192_128_5.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
-
->res0_192_1024
-haux res0_192_1024aux.vqd 0,30,2
-:_1 res0_192_1024_1.vqd, 4, nonseq, 0 +- 1
-:_2 res0_192_1024_2.vqd, 4, nonseq, 0 +- 1
-:_3 res0_192_1024_3.vqd, 4, nonseq, 0 +- 1 2
-:_4 res0_192_1024_4.vqd, 4, nonseq, 0 +- 1 2
-:_5 res0_192_1024_5.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6
-:_6 res0_192_1024_6.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6
-:_7 res0_192_1024_7.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
-:_8 res0_192_1024_8.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
-:_9 res0_192_1024_9.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280
diff --git a/vq/res_256k.vqs b/vq/res_256k.vqs
deleted file mode 100644
index de6371e3..00000000
--- a/vq/res_256k.vqs
+++ /dev/null
@@ -1,17 +0,0 @@
->res0_256_128
-haux res0_256_128aux.vqd 0,8,2
-:_1 res0_256_128_1.vqd, 4, nonseq, 0 +- 1
-:_2 res0_256_128_2.vqd, 4, nonseq, 0 +- 1 2
-:_3 res0_256_128_3.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6
-:_4 res0_256_128_4.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
-:_5 res0_256_128_5.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
-
->res0_256_1024
-haux res0_256_1024aux.vqd 0,32,2
-:_1 res0_256_1024_1.vqd, 4, nonseq, 0 +- 1 2
-:_2 res0_256_1024_2.vqd, 2, nonseq, 0 +- 1 2 3 4
-:_3 res0_256_1024_3.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10
-:_4 res0_256_1024_4.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10
-:_5 res0_256_1024_5.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
-:_6 res0_256_1024_6.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
-:_7 res0_256_1024_7.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310
diff --git a/vq/res_350c.vqs b/vq/res_350c.vqs
deleted file mode 100644
index d0d1ae48..00000000
--- a/vq/res_350c.vqs
+++ /dev/null
@@ -1,63 +0,0 @@
-huffbuild line0_class1.vqd 0-64
-huffbuild line0_class2.vqd 0-64
-
-huffbuild line0_0sub0.vqd 0-64
-huffbuild line0_1sub1.vqd 1-9
-huffbuild line0_1sub2.vqd 9-25
-huffbuild line0_1sub3.vqd 25-64
-huffbuild line0_2sub1.vqd 1-9
-huffbuild line0_2sub2.vqd 9-25
-huffbuild line0_2sub3.vqd 25-64
-
-huffbuild line1_class0.vqd 0-8
-huffbuild line1_class1.vqd 0-16
-huffbuild line1_class2.vqd 0-64
-huffbuild line1_class3.vqd 0-64
-
-huffbuild line1_0sub0.vqd 0-32
-huffbuild line1_0sub1.vqd 32-128
-
-huffbuild line1_1sub0.vqd 0-32
-huffbuild line1_1sub1.vqd 32-128
-
-huffbuild line1_2sub1.vqd 1-18
-huffbuild line1_2sub2.vqd 18-50
-huffbuild line1_2sub3.vqd 50-128
-huffbuild line1_3sub1.vqd 1-18
-huffbuild line1_3sub2.vqd 18-50
-huffbuild line1_3sub3.vqd 50-128
-
-
-
-residuesplit residue_0#0.vqd 0,256,16 res0_128_128 ,.7, ,1.5 ,2.5 ,4.5 40,7.5 ,7.5 58,16.5 ,16.5 ,84.5
-
-residuesplit residue_1#0.vqd 0,2048,32 res0_128_1024 ,.7, ,1.5 ,2.5 ,4.5 70,7.5 ,7.5 110,16.5 ,16.5 ,84.5
-
-GO
-
->res0_128_128 noninterleaved
-haux res0_128_128aux.vqd 0,16,2
-
->res0_128_1024 noninterleaved
-haux res0_128_1024aux.vqd 0,64,2
-
-:_1 res0_128_1024_1.vqd, 4, nonseq cull, 0 +- 1
-:_2 res0_128_1024_2.vqd, 4, nonseq cull, 0 +- 1 2
-:_3 res0_128_1024_3.vqd, 2, nonseq cull, 0 +- 1 2 3 4
-:_4 res0_128_1024_4.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7
-:_5 res0_128_1024_5.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7
-:_6 res0_128_1024_6.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
-:_7 res0_128_1024_7.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
-
-:_8 res0_128_1024_8.vqd, 2, nonseq cull, 0 +- 13 26 39 52 65 78
-+_8a, 2, nonseq cull, 0 +- 1 2 3 4 5 6
-
-:_9 res0_128_1024_9.vqd, 2, nonseq, 0 +- 169 338 507 676 845 1014 1183 1352
-+_9a, 2, nonseq, 0 +- 13 26 39 52 65 78
-+_9b, 2, nonseq, 0 +- 1 2 3 4 5 6
-
-
-
-
-
-
diff --git a/vq/res_350k.vqs b/vq/res_350k.vqs
deleted file mode 100644
index 0d2be680..00000000
--- a/vq/res_350k.vqs
+++ /dev/null
@@ -1,2 +0,0 @@
->res0_350_1024
-:_7 res0_350_1024_7.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310
diff --git a/vq/res_64c.vqs b/vq/res_64c.vqs
deleted file mode 100644
index ec65ae29..00000000
--- a/vq/res_64c.vqs
+++ /dev/null
@@ -1,61 +0,0 @@
-huffbuild line0_class1.vqd 0-64
-huffbuild line0_class2.vqd 0-64
-
-huffbuild line0_0sub0.vqd 0-64
-huffbuild line0_1sub1.vqd 1-9
-huffbuild line0_1sub2.vqd 9-25
-huffbuild line0_1sub3.vqd 25-64
-huffbuild line0_2sub1.vqd 1-9
-huffbuild line0_2sub2.vqd 9-25
-huffbuild line0_2sub3.vqd 25-64
-
-huffbuild line1_class0.vqd 0-8
-huffbuild line1_class1.vqd 0-16
-huffbuild line1_class2.vqd 0-64
-huffbuild line1_class3.vqd 0-64
-
-huffbuild line1_0sub0.vqd 0-16
-huffbuild line1_0sub1.vqd 16-64
-
-huffbuild line1_1sub0.vqd 0-16
-huffbuild line1_1sub1.vqd 16-64
-
-huffbuild line1_2sub1.vqd 1-9
-huffbuild line1_2sub2.vqd 9-25
-huffbuild line1_2sub3.vqd 25-64
-huffbuild line1_3sub1.vqd 1-9
-huffbuild line1_3sub2.vqd 9-25
-huffbuild line1_3sub3.vqd 25-64
-
-residuesplit residue_0#0.vqd 0,180,12 res0_128_128 ,.5 ,1.5,4 ,2.5,4 ,7.5,4 2,1.5 ,1.5 ,2.5 ,7.5 ,22.5
-
-residuesplit residue_1#0.vqd 0,1408,32 res0_128_1024 ,.5 ,1.5,18 ,2.5,18 ,7.5,18 3,1.5 ,1.5 ,2.5 ,7.5 ,22.5
-
-GO
-
->res0_128_128 noninterleaved
-haux res0_128_128aux.vqd 0,15,3
-
->res0_128_1024 noninterleaved
-haux res0_128_1024aux.vqd 0,44,2
-
-:_1 res0_128_1024_1.vqd, 4, nonseq cull, 0 +- 1
-:_2 res0_128_1024_2.vqd, 4, nonseq cull, 0 +- 1 2
-:_3 res0_128_1024_3.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7
-
-:_4 res0_128_1024_4.vqd, 4, nonseq cull, 0 +- 1
-:_5 res0_128_1024_5.vqd, 4, nonseq cull, 0 +- 1
-:_6 res0_128_1024_6.vqd, 4, nonseq cull, 0 +- 1 2
-:_7 res0_128_1024_7.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7
-:_8 res0_128_1024_8.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
-
-:_9 res0_128_1024_9.vqd, 4, nonseq, 0 +- 67 134
-+_9a, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33
-+_9b, 4, nonseq, 0 +- 1
-
-
-
-
-
-
-
diff --git a/vq/res_96Zc.vqs b/vq/res_96Zc.vqs
deleted file mode 100644
index 8c9ac2fe..00000000
--- a/vq/res_96Zc.vqs
+++ /dev/null
@@ -1,42 +0,0 @@
-huffbuild line0_0sub0.vqd 0-64
-huffbuild line0_1sub0.vqd 0-64
-huffbuild line0_2sub0.vqd 0-64
-
-huffbuild line1_0sub0.vqd 0-64
-huffbuild line1_1sub0.vqd 0-64
-huffbuild line1_2sub0.vqd 0-64
-huffbuild line1_3sub0.vqd 0-64
-
-
-residuesplit residue_0#0.vqd 0,192,8 res0_128_128 ,.7, 2,1.5, ,1.5 4,2.5 ,2.5 10,4.5 ,4.5 22,16.5 ,16.5
-
-residuesplit residue_1#0.vqd 0,1408,32 res0_128_1024 ,.7, 7,1.5 ,1.5 12,2.5 ,2.5 32,4.5 ,4.5 42,16.5 ,16.5
-
-GO
-
->res0_128_128 noninterleaved
-haux res0_128_128aux.vqd 0,12,2
-
->res0_128_1024 noninterleaved
-haux res0_128_1024aux.vqd 0,44,2
-
-:_1 res0_128_1024_1.vqd, 4, nonseq cull, 0 +- 1
-:_2 res0_128_1024_2.vqd, 4, nonseq cull, 0 +- 1
-:_3 res0_128_1024_3.vqd, 4, nonseq cull, 0 +- 1 2
-:_4 res0_128_1024_4.vqd, 4, nonseq cull, 0 +- 1 2
-:_5 res0_128_1024_5.vqd, 2, nonseq cull, 0 +- 1 2 3 4
-:_6 res0_128_1024_6.vqd, 2, nonseq cull, 0 +- 1 2 3 4
-:_7 res0_128_1024_7.vqd, 2, nonseq cull, 0 +- 3 6 9 12 15
-+_7a, 4, nonseq cull, 0 +- 1
-:_8 res0_128_1024_8.vqd, 2, nonseq cull, 0 +- 3 6 9 12 15
-+_8a, 4, nonseq cull, 0 +- 1
-
-:_9 res0_128_1024_9.vqd, 4, nonseq, 0 +- 67 134
-+_9a, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33
-+_9b, 4, nonseq, 0 +- 1
-
-
-
-
-
-
diff --git a/vq/res_96c.vqs b/vq/res_96c.vqs
deleted file mode 100644
index f96152e5..00000000
--- a/vq/res_96c.vqs
+++ /dev/null
@@ -1,56 +0,0 @@
-huffbuild line0_class1.vqd 0-64
-huffbuild line0_class2.vqd 0-64
-
-huffbuild line0_0sub0.vqd 0-64
-huffbuild line0_1sub1.vqd 1-9
-huffbuild line0_1sub2.vqd 9-25
-huffbuild line0_1sub3.vqd 25-64
-huffbuild line0_2sub1.vqd 1-9
-huffbuild line0_2sub2.vqd 9-25
-huffbuild line0_2sub3.vqd 25-64
-
-huffbuild line1_class0.vqd 0-8
-huffbuild line1_class1.vqd 0-16
-huffbuild line1_class2.vqd 0-64
-huffbuild line1_class3.vqd 0-64
-
-huffbuild line1_0sub0.vqd 0-16
-huffbuild line1_0sub1.vqd 16-64
-
-huffbuild line1_1sub0.vqd 0-16
-huffbuild line1_1sub1.vqd 16-64
-
-huffbuild line1_2sub1.vqd 1-9
-huffbuild line1_2sub2.vqd 9-25
-huffbuild line1_2sub3.vqd 25-64
-huffbuild line1_3sub1.vqd 1-9
-huffbuild line1_3sub2.vqd 9-25
-huffbuild line1_3sub3.vqd 25-64
-
-residuesplit residue_0#0.vqd 0,180,12 res0_128_128 ,2.5,2 ,7.5,2 ,1.5 ,22.5
-
-residuesplit residue_1#0.vqd 0,1440,32 res0_128_1024 ,2.5,18 ,7.5,18 ,1.5 ,22.5
-
-GO
-
->res0_128_128 noninterleaved
-haux res0_128_128aux.vqd 0,15,3
-
->res0_128_1024 noninterleaved
-haux res0_128_1024aux.vqd 0,45,3
-
-:_1 res0_128_1024_0.vqd, 4, nonseq cull, 0 +- 1 2
-:_2 res0_128_1024_1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7
-
-:_3 res0_128_1024_2.vqd, 4, nonseq cull, 0 +- 1
-:_4 res0_128_1024_3.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
-
-:_5 res0_128_1024_4.vqd, 4, nonseq, 0 +- 67 134
-+_5a, 2, nonseq, 0 +- 3 6 9 12 15 18 21 24 27 30 33
-+_5b, 4, nonseq, 0 +- 1
-
-
-
-
-
-
diff --git a/vq/res_96k.vqs b/vq/res_96k.vqs
deleted file mode 100644
index 8a76d5d1..00000000
--- a/vq/res_96k.vqs
+++ /dev/null
@@ -1,19 +0,0 @@
->res0_96_128
-haux res0_96_128aux.vqd 0,12,3
-:_1 res0_96_128_1.vqd, 4, nonseq cull, 0 +- 1
-:_2 res0_96_128_2.vqd, 4, nonseq, 0 +- 1
-:_3 res0_96_128_3.vqd, 2, nonseq, 0 +- 1 3 5 8
-:_4 res0_96_128_4.vqd, 2, nonseq, 0 +- 1 3 5 8 11 14 17 20 24
-:_5 res0_96_128_5.vqd, 1, nonseq, 0 +- 1 3 5 8 11 14 17 20 24 28 31 35 39 43 47 51 56 61
-
->res0_96_1024
-haux res0_96_1024aux.vqd 0,24,3
-:_1 res0_96_1024_1.vqd, 4, nonseq cull, 0 +- 1
-:_2 res0_96_1024_2.vqd, 4, nonseq cull, 0 +- 1
-:_3 res0_96_1024_3.vqd, 4, nonseq cull, 0 +- 1 3
-:_4 res0_96_1024_4.vqd, 4, nonseq, 0 +- 1 3
-:_5 res0_96_1024_5.vqd, 2, nonseq, 0 +- 1 3 5 8
-:_6 res0_96_1024_6.vqd, 2, nonseq, 0 +- 1 3 5 8
-:_7 res0_96_1024_7.vqd, 2, nonseq, 0 +- 1 3 5 8 11 14 17
-:_8 res0_96_1024_8.vqd, 2, nonseq, 0 +- 1 3 5 8 11 14 17 20 24 28 31 35
-:_9 res0_96_1024_9.vqd, 1, nonseq, 0 +- 1 3 5 8 11 14 17 20 24 28 31 35 39 43 47 51 56 61 66 71 72 78 84 90 96 102 108 115 123
diff --git a/vq/residue_entropy b/vq/residue_entropy
deleted file mode 100755
index 49c55a53..00000000
--- a/vq/residue_entropy
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/perl
-
-@quant=(
- 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6,
- 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
- 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 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
-);
-
-
-use POSIX;
-my($groupn)=@ARGV;
-my%hash;
-my$count=0;
-my$lines=0;
-
-if(!defined($groupn)){
- print "Usage: residue_entropy <groupsize> \n";
- exit(1);
-}
-$|=1;
-
-while (<STDIN>) {
- chop;
- my@nums = ();
- @nums = split(/,/);
- $lines++;
-
- my$step=$#nums/$groupn;
- for(my$i=0;$i<$step;$i++){
- my$key="";
- for(my$j=$i;$j<$#nums;$j+=$step){
- if($nums[$j]<0){
- $num=-$quant[int(-$nums[$j]*2)];
- }else{
- $num=$quant[int($nums[$j]*2)];
- }
- $key.=":$num";
- }
-
- if(!defined($hash{$key})){
- $count++;
- $hash{$key}=1;
- }
- }
-
- if(($lines % 1000)==0){
- print "\rworking... $lines lines, found $count values so far";
- }
-}
-
-foreach $key (keys %hash){
- print "\t$key\n";
-}
-
-print "\r$count values total \n";
-print "Done.\n\n";
diff --git a/vq/residuedata.c b/vq/residuedata.c
deleted file mode 100644
index 5fed0d37..00000000
--- a/vq/residuedata.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: metrics and quantization code for residue VQ codebooks
- last mod: $Id: residuedata.c,v 1.9 2001/02/26 03:51:12 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <math.h>
-#include <stdio.h>
-#include <string.h>
-#include "vqgen.h"
-#include "bookutil.h"
-#include "../lib/scales.h"
-#include "vqext.h"
-
-float scalequant=3.f;
-char *vqext_booktype="RESdata";
-quant_meta q={0,0,0,0}; /* set sequence data */
-int vqext_aux=0;
-
-static float *quant_save=NULL;
-
-float *vqext_weight(vqgen *v,float *p){
- return p;
-}
-
-/* quantize aligned on unit boundaries. Because our grid is likely
- very coarse, play 'shuffle the blocks'; don't allow multiple
- entries to fill the same spot as is nearly certain to happen. */
-
-void vqext_quantize(vqgen *v,quant_meta *q){
- int j,k;
- long dim=v->elements;
- long n=v->entries;
- float max=-1;
- float *test=alloca(sizeof(float)*dim);
- int moved=0;
-
-
- /* allow movement only to unoccupied coordinates on the coarse grid */
- for(j=0;j<n;j++){
- for(k=0;k<dim;k++){
- float val=_now(v,j)[k];
- float norm=rint(fabs(val)/scalequant);
- if(norm>max)max=norm;
- test[k]=norm;
- }
-
- /* allow move only if unoccupied */
- if(quant_save){
- for(k=0;k<n;k++)
- if(j!=k && memcmp(test,quant_save+dim*k,dim*sizeof(float))==0)
- break;
- if(k==n){
- if(memcmp(test,quant_save+dim*j,dim*sizeof(float)))
- moved++;
- memcpy(quant_save+dim*j,test,sizeof(float)*dim);
- }
- }else{
- memcpy(_now(v,j),test,sizeof(float)*dim);
- }
- }
-
- /* unlike the other trainers, we fill in our quantization
- information (as we know granularity beforehand and don't need to
- maximize it) */
-
- q->min=_float32_pack(0.f);
- q->delta=_float32_pack(scalequant);
- q->quant=_ilog(max);
-
- if(quant_save){
- memcpy(_now(v,0),quant_save,sizeof(float)*dim*n);
- fprintf(stderr,"cells shifted this iteration: %d\n",moved);
- }
-}
-
- /* candidate,actual */
-float vqext_metric(vqgen *v,float *e, float *p){
- int i;
- float acc=0.f;
- for(i=0;i<v->elements;i++){
- float val=p[i]-e[i];
- acc+=val*val;
- }
- return sqrt(acc);
-}
-
-/* We don't interleave here; we assume that the interleave is provided
- for us by residuesplit in vorbis/huff/ */
-void vqext_addpoint_adj(vqgen *v,float *b,int start,int dim,int cols,int num){
- vqgen_addpoint(v,b+start,NULL);
-}
-
-/* need to reseed because of the coarse quantization we tend to use on
- residuals (which causes lots & lots of dupes) */
-void vqext_preprocess(vqgen *v){
- long i,j,k,l;
- float *test=alloca(sizeof(float)*v->elements);
- scalequant=q.quant;
-
- vqext_quantize(v,&q);
- vqgen_unquantize(v,&q);
-
- /* if there are any dupes, reseed */
- for(k=0;k<v->entries;k++){
- for(l=0;l<k;l++){
- if(memcmp(_now(v,k),_now(v,l),sizeof(float)*v->elements)==0)
- break;
- }
- if(l<k)break;
- }
-
- if(k<v->entries){
- fprintf(stderr,"reseeding with quantization....\n");
-
- /* seed the inputs to input points, but points on unit boundaries,
- ignoring quantbits for now, making sure each seed is unique */
-
- for(i=0,j=0;i<v->points && j<v->entries;i++){
- for(k=0;k<v->elements;k++){
- float val=_point(v,i)[k];
- test[k]=rint(val/scalequant)*scalequant;
- }
-
- for(l=0;l<j;l++){
- for(k=0;k<v->elements;k++)
- if(test[k]!=_now(v,l)[k])
- break;
- if(k==v->elements)break;
- }
- if(l==j){
- memcpy(_now(v,j),test,v->elements*sizeof(float));
- j++;
- }
- }
-
- if(j<v->elements){
- fprintf(stderr,"Not enough unique entries after prequantization\n");
- exit(1);
- }
- }
- vqext_quantize(v,&q);
- quant_save=_ogg_malloc(sizeof(float)*v->elements*v->entries);
- memcpy(quant_save,_now(v,0),sizeof(float)*v->elements*v->entries);
- vqgen_unquantize(v,&q);
-
-}
-
diff --git a/vq/residuesplit.c b/vq/residuesplit.c
deleted file mode 100644
index e81312bc..00000000
--- a/vq/residuesplit.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: residue backend 0 partitioner/classifier
- last mod: $Id: residuesplit.c,v 1.11 2001/08/13 01:37:17 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <stdio.h>
-#include "bookutil.h"
-
-/* does not guard against invalid settings; eg, a subn of 16 and a
- subgroup request of 32. Max subn of 128 */
-static float _testhack(float *vec,int n){
- int i,j=0;
- float max=0.f;
- float temp[128];
- float entropy=0.;
-
- /* setup */
- for(i=0;i<n;i++)temp[i]=fabs(vec[i]);
-
- /* handle case subgrp==1 outside */
- for(i=0;i<n;i++)
- if(temp[i]>max)max=temp[i];
-
- for(i=0;i<n;i++)temp[i]=rint(temp[i]);
-
- for(i=0;i<n;i++)
- entropy+=temp[i];
- return entropy;
-
- /*while(1){
- entropy[j]=max;
- n>>=1;
- j++;
-
- if(n<=0)break;
- for(i=0;i<n;i++){
- temp[i]+=temp[i+n];
- }
- max=0.f;
- for(i=0;i<n;i++)
- if(temp[i]>max)max=temp[i];
- }*/
-}
-
-static FILE *of;
-static FILE **or;
-
-/* we evaluate the the entropy measure for each interleaved subgroup */
-/* This is currently a bit specific to/hardwired for mapping 0; things
- will need to change in the future when we get real multichannel
- mappings */
-int quantaux(float *res,int n,float *ebound,float *mbound,int *subgrp,int parts, int subn){
- long i,j,part=0;
- int aux;
-
- for(i=0;i<=n-subn;i+=subn,part++){
- float max=0.f;
- float lentropy=0.f;
-
- lentropy=_testhack(res+i,subn);
-
- for(j=0;j<subn;j++)
- if(fabs(res[i+j])>max)max=fabs(res[i+j]);
-
- for(j=0;j<parts-1;j++)
- if(lentropy<=ebound[j] &&
- max<=mbound[j] &&
- part<subgrp[j])
- break;
- aux=j;
-
- fprintf(of,"%d, ",aux);
-
- for(j=0;j<subn;j++)
- fprintf(or[aux],"%g, ",res[j+i]);
-
- fprintf(or[aux],"\n");
- }
-
- fprintf(of,"\n");
-
- return(0);
-}
-
-static int getline(FILE *in,float *vec,int begin,int n){
- int i,next=0;
-
- reset_next_value();
- if(get_next_value(in,vec))return(0);
- if(begin){
- for(i=1;i<begin;i++)
- get_line_value(in,vec);
- next=0;
- }else{
- next=1;
- }
-
- for(i=next;i<n;i++)
- if(get_line_value(in,vec+i)){
- fprintf(stderr,"ran out of columns in input data\n");
- exit(1);
- }
-
- return(1);
-}
-
-static void usage(){
- fprintf(stderr,
- "usage:\n"
- "residuesplit <res> <begin,n,group> <baseout> <ent,peak,sub> [<ent,peak,sub>]...\n"
- " where begin,n,group is first scalar, \n"
- " number of scalars of each in line,\n"
- " number of scalars in a group\n"
- " ent is the maximum entropy value allowed for membership in a group\n"
- " peak is the maximum amplitude value allowed for membership in a group\n"
- " subn is the maximum subpartiton number allowed in the group\n"
-
- "eg: residuesplit mask.vqd floor.vqd 0,1024,16 res 0,.5,2 3,1.5,4 \n"
- "produces resaux.vqd and res_0...n.vqd\n\n");
- exit(1);
-}
-
-int main(int argc, char *argv[]){
- char *buffer;
- char *base;
- int i,parts,begin,n,subn,*subgrp;
- FILE *res;
- float *ebound,*mbound,*vec;
- long c=0;
- if(argc<5)usage();
-
- base=strdup(argv[3]);
- buffer=alloca(strlen(base)+20);
- {
- char *pos=strchr(argv[2],',');
- begin=atoi(argv[2]);
- if(!pos)
- usage();
- else
- n=atoi(pos+1);
- pos=strchr(pos+1,',');
- if(!pos)
- usage();
- else
- subn=atoi(pos+1);
- if(n/subn*subn != n){
- fprintf(stderr,"n must be divisible by group\n");
- exit(1);
- }
- }
-
- /* how many parts?... */
- parts=argc-3;
-
- ebound=_ogg_malloc(sizeof(float)*parts);
- mbound=_ogg_malloc(sizeof(float)*parts);
- subgrp=_ogg_malloc(sizeof(int)*parts);
-
- for(i=0;i<parts-1;i++){
- char *pos=strchr(argv[4+i],',');
- subgrp[i]=0;
- if(*argv[4+i]==',')
- ebound[i]=1e50f;
- else
- ebound[i]=atof(argv[4+i]);
-
- if(!pos){
- mbound[i]=1e50f;
- }else{
- if(*(pos+1)==',')
- mbound[i]=1e50f;
- else
- mbound[i]=atof(pos+1);
- pos=strchr(pos+1,',');
-
- if(pos)
- subgrp[i]=atoi(pos+1);
-
- }
- if(subgrp[i]<=0)subgrp[i]=99999;
- }
-
- ebound[i]=1e50f;
- mbound[i]=1e50f;
- subgrp[i]=9999999;
-
- res=fopen(argv[1],"r");
- if(!res){
- fprintf(stderr,"Could not open file %s\n",argv[1]);
- exit(1);
- }
-
- or=alloca(parts*sizeof(FILE*));
- sprintf(buffer,"%saux.vqd",base);
- of=fopen(buffer,"w");
- if(!of){
- fprintf(stderr,"Could not open file %s for writing\n",buffer);
- exit(1);
- }
- for(i=0;i<parts;i++){
- sprintf(buffer,"%s_%d.vqd",base,i);
- or[i]=fopen(buffer,"w");
- if(!or[i]){
- fprintf(stderr,"Could not open file %s for writing\n",buffer);
- exit(1);
- }
- }
-
- vec=_ogg_malloc(sizeof(float)*n);
- /* get the input line by line and process it */
- while(!feof(res)){
- if(getline(res,vec,begin,n))
- quantaux(vec,n,ebound,mbound,subgrp,parts,subn);
- c++;
- if(!(c&0xf)){
- spinnit("kB so far...",(int)(ftell(res)/1024));
- }
- }
- fclose(res);
- fclose(of);
- for(i=0;i<parts;i++)
- fclose(or[i]);
- fprintf(stderr,"\rDone \n");
- return(0);
-}
-
-
-
-
diff --git a/vq/run.c b/vq/run.c
deleted file mode 100644
index 72c56f94..00000000
--- a/vq/run.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: utility main for loading and operating on codebooks
- last mod: $Id: run.c,v 1.14 2001/02/26 03:51:12 xiphmont Exp $
-
- ********************************************************************/
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <fcntl.h>
-
-#include "bookutil.h"
-
-/* command line:
- utilname [-i] +|* input_book.vqh [+|* input_book.vqh]
- input_data.vqd [input_data.vqd]
-
- produces output data on stdout
- (may also take input data from stdin)
-
- */
-
-extern void process_preprocess(codebook **b,char *basename);
-extern void process_postprocess(codebook **b,char *basename);
-extern void process_vector(codebook **b,int *addmul, int inter,float *a,int n);
-extern void process_usage(void);
-
-int main(int argc,char *argv[]){
- char *basename;
- codebook **b=_ogg_calloc(1,sizeof(codebook *));
- int *addmul=_ogg_calloc(1,sizeof(int));
- int books=0;
- int input=0;
- int interleave=0;
- int j;
- int start=0;
- int num=-1;
- argv++;
-
- if(*argv==NULL){
- process_usage();
- exit(1);
- }
-
- /* yes, this is evil. However, it's very convenient to parse file
- extentions */
-
- while(*argv){
- if(*argv[0]=='-'){
- /* option */
- if(argv[0][1]=='s'){
- /* subvector */
- if(sscanf(argv[1],"%d,%d",&start,&num)!=2){
- num= -1;
- if(sscanf(argv[1],"%d",&start)!=1){
- fprintf(stderr,"Syntax error using -s\n");
- exit(1);
- }
- }
- argv+=2;
- }
- if(argv[0][1]=='i'){
- /* interleave */
- interleave=1;
- argv+=1;
- }
- }else{
- /* input file. What kind? */
- char *dot;
- char *ext=NULL;
- char *name=strdup(*argv++);
- dot=strrchr(name,'.');
- if(dot)
- ext=dot+1;
- else
- ext="";
-
- /* codebook */
- if(!strcmp(ext,"vqh")){
- int multp=0;
- if(input){
- fprintf(stderr,"specify all input data (.vqd) files following\n"
- "codebook header (.vqh) files\n");
- exit(1);
- }
- /* is it additive or multiplicative? */
- if(name[0]=='*'){
- multp=1;
- name++;
- }
- if(name[0]=='+')name++;
-
- basename=strrchr(name,'/');
- if(basename)
- basename=strdup(basename)+1;
- else
- basename=strdup(name);
- dot=strrchr(basename,'.');
- if(dot)*dot='\0';
-
- b=_ogg_realloc(b,sizeof(codebook *)*(books+2));
- b[books]=codebook_load(name);
- addmul=_ogg_realloc(addmul,sizeof(int)*(books+1));
- addmul[books++]=multp;
- b[books]=NULL;
- }
-
- /* data file */
- if(!strcmp(ext,"vqd")){
- int cols;
- long lines=0;
- char *line;
- float *vec;
- FILE *in=fopen(name,"r");
- if(!in){
- fprintf(stderr,"Could not open input file %s\n",name);
- exit(1);
- }
-
- if(!input){
- process_preprocess(b,basename);
- input++;
- }
-
- reset_next_value();
- line=setup_line(in);
- /* count cols before we start reading */
- {
- char *temp=line;
- while(*temp==' ')temp++;
- for(cols=0;*temp;cols++){
- while(*temp>32)temp++;
- while(*temp==' ')temp++;
- }
- }
- vec=alloca(cols*sizeof(float));
- while(line){
- lines++;
- for(j=0;j<cols;j++)
- if(get_line_value(in,vec+j)){
- fprintf(stderr,"Too few columns on line %ld in data file\n",lines);
- exit(1);
- }
- /* ignores -s for now */
- process_vector(b,addmul,interleave,vec,cols);
-
- line=setup_line(in);
- }
- fclose(in);
- }
- }
- }
-
- /* take any data from stdin */
- {
- struct stat st;
- if(fstat(STDIN_FILENO,&st)==-1){
- fprintf(stderr,"Could not stat STDIN\n");
- exit(1);
- }
- if((S_IFIFO|S_IFREG|S_IFSOCK)&st.st_mode){
- int cols;
- char *line;
- long lines=0;
- float *vec;
- if(!input){
- process_preprocess(b,basename);
- input++;
- }
-
- line=setup_line(stdin);
- /* count cols before we start reading */
- {
- char *temp=line;
- while(*temp==' ')temp++;
- for(cols=0;*temp;cols++){
- while(*temp>32)temp++;
- while(*temp==' ')temp++;
- }
- }
- vec=alloca(cols*sizeof(float));
- while(line){
- lines++;
- for(j=0;j<cols;j++)
- if(get_line_value(stdin,vec+j)){
- fprintf(stderr,"Too few columns on line %ld in data file\n",lines);
- exit(1);
- }
- /* ignores -s for now */
- process_vector(b,addmul,interleave,vec,cols);
-
- line=setup_line(stdin);
- }
- }
- }
-
- process_postprocess(b,basename);
-
- return 0;
-}
diff --git a/vq/train.c b/vq/train.c
deleted file mode 100644
index 49bc6ad6..00000000
--- a/vq/train.c
+++ /dev/null
@@ -1,364 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: utility main for training codebooks
- last mod: $Id: train.c,v 1.23 2001/02/26 03:51:12 xiphmont Exp $
-
- ********************************************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <string.h>
-#include <errno.h>
-#include <signal.h>
-#include "vqgen.h"
-#include "vqext.h"
-#include "bookutil.h"
-
-static char *rline(FILE *in,FILE *out,int pass){
- while(1){
- char *line=get_line(in);
- if(line && line[0]=='#'){
- if(pass)fprintf(out,"%s\n",line);
- }else{
- return(line);
- }
- }
-}
-
-/* command line:
- trainvq vqfile [options] trainfile [trainfile]
-
- options: -params entries,dim,quant
- -subvector start[,num]
- -error desired_error
- -iterations iterations
-*/
-
-static void usage(void){
- fprintf(stderr, "\nOggVorbis %s VQ codebook trainer\n\n"
- "<foo>vqtrain vqfile [options] [datasetfile] [datasetfile]\n"
- "options: -p[arams] <entries,dim,quant>\n"
- " -s[ubvector] <start[,num]>\n"
- " -e[rror] <desired_error>\n"
- " -i[terations] <maxiterations>\n"
- " -d[istance] quantization mesh spacing for density limitation\n"
- " -b <dummy> eliminate cell size biasing; use normal LBG\n\n"
- " -c <dummy> Use centroid (not median) midpoints\n"
-
- "examples:\n"
- " train a new codebook to 1%% tolerance on datafile 'foo':\n"
- " xxxvqtrain book -p 256,6,8 -e .01 foo\n"
- " (produces a trained set in book-0.vqi)\n\n"
- " continue training 'book-0.vqi' (produces book-1.vqi):\n"
- " xxxvqtrain book-0.vqi\n\n"
- " add subvector from element 1 to <dimension> from files\n"
- " data*.m to the training in progress, prodicing book-1.vqi:\n"
- " xxxvqtrain book-0.vqi -s 1,1 data*.m\n\n",vqext_booktype);
-}
-
-int exiting=0;
-void setexit(int dummy){
- fprintf(stderr,"\nexiting... please wait to finish this iteration\n");
- exiting=1;
-}
-
-int main(int argc,char *argv[]){
- vqgen v;
-
- int entries=-1,dim=-1;
- int start=0,num=-1;
- float desired=.05f,mindist=0.f;
- int iter=1000;
- int biasp=1;
- int centroid=0;
-
- FILE *out=NULL;
- char *line;
- long i,j,k;
- int init=0;
- q.quant=-1;
-
- argv++;
- if(!*argv){
- usage();
- exit(0);
- }
-
- /* get the book name, a preexisting book to continue training */
- {
- FILE *in=NULL;
- char *filename=alloca(strlen(*argv)+30),*ptr;
-
- strcpy(filename,*argv);
- in=fopen(filename,"r");
- ptr=strrchr(filename,'-');
- if(ptr){
- int num;
- ptr++;
- num=atoi(ptr);
- sprintf(ptr,"%d.vqi",num+1);
- }else
- strcat(filename,"-0.vqi");
-
- out=fopen(filename,"w");
- if(out==NULL){
- fprintf(stderr,"Unable to open %s for writing\n",filename);
- exit(1);
- }
-
- if(in){
- /* we wish to suck in a preexisting book and continue to train it */
- float a;
-
- line=rline(in,out,1);
- if(strcmp(line,vqext_booktype)){
- fprintf(stderr,"wrong book type; %s!=%s\n",line,vqext_booktype);
- exit(1);
- }
-
- line=rline(in,out,1);
- if(sscanf(line,"%d %d %d",&entries,&dim,&vqext_aux)!=3){
- fprintf(stderr,"Syntax error reading book file\n");
- exit(1);
- }
-
- vqgen_init(&v,dim,vqext_aux,entries,mindist,
- vqext_metric,vqext_weight,centroid);
- init=1;
-
- /* quant setup */
- line=rline(in,out,1);
- if(sscanf(line,"%ld %ld %d %d",&q.min,&q.delta,
- &q.quant,&q.sequencep)!=4){
- fprintf(stderr,"Syntax error reading book file\n");
- exit(1);
- }
-
- /* quantized entries */
- i=0;
- for(j=0;j<entries;j++){
- for(k=0;k<dim;k++){
- line=rline(in,out,0);
- sscanf(line,"%f",&a);
- v.entrylist[i++]=a;
- }
- }
- vqgen_unquantize(&v,&q);
-
- /* bias */
- i=0;
- for(j=0;j<entries;j++){
- line=rline(in,out,0);
- sscanf(line,"%f",&a);
- v.bias[i++]=a;
- }
-
- v.seeded=1;
- {
- float *b=alloca((dim+vqext_aux)*sizeof(float));
- i=0;
- while(1){
- for(k=0;k<dim+vqext_aux;k++){
- line=rline(in,out,0);
- if(!line)break;
- sscanf(line,"%f",b+k);
- }
- if(feof(in))break;
- vqgen_addpoint(&v,b,b+dim);
- }
- }
-
- fclose(in);
- }
- }
-
- /* get the rest... */
- argv=argv++;
- while(*argv){
- if(argv[0][0]=='-'){
- /* it's an option */
- if(!argv[1]){
- fprintf(stderr,"Option %s missing argument.\n",argv[0]);
- exit(1);
- }
- switch(argv[0][1]){
- case 'p':
- if(sscanf(argv[1],"%d,%d,%d",&entries,&dim,&q.quant)!=3)
- goto syner;
- break;
- case 's':
- if(sscanf(argv[1],"%d,%d",&start,&num)!=2){
- num= -1;
- if(sscanf(argv[1],"%d",&start)!=1)
- goto syner;
- }
- break;
- case 'e':
- if(sscanf(argv[1],"%f",&desired)!=1)
- goto syner;
- break;
- case 'd':
- if(sscanf(argv[1],"%f",&mindist)!=1)
- goto syner;
- if(init)v.mindist=mindist;
- break;
- case 'i':
- if(sscanf(argv[1],"%d",&iter)!=1)
- goto syner;
- break;
- case 'b':
- biasp=0;
- break;
- case 'c':
- centroid=1;
- break;
- default:
- fprintf(stderr,"Unknown option %s\n",argv[0]);
- exit(1);
- }
- argv+=2;
- }else{
- /* it's an input file */
- char *file=strdup(*argv++);
- FILE *in;
- int cols=-1;
-
- if(!init){
- if(dim==-1 || entries==-1 || q.quant==-1){
- fprintf(stderr,"-p required when training a new set\n");
- exit(1);
- }
- vqgen_init(&v,dim,vqext_aux,entries,mindist,
- vqext_metric,vqext_weight,centroid);
- init=1;
- }
-
- in=fopen(file,"r");
- if(in==NULL){
- fprintf(stderr,"Could not open input file %s\n",file);
- exit(1);
- }
- fprintf(out,"# training file entry: %s\n",file);
-
- while((line=rline(in,out,0))){
- if(cols==-1){
- char *temp=line;
- while(*temp==' ')temp++;
- for(cols=0;*temp;cols++){
- while(*temp>32)temp++;
- while(*temp==' ')temp++;
- }
-
- fprintf(stderr,"%d colums per line in file %s\n",cols,file);
-
- }
- {
- int i;
- float b[cols];
- if(start+num*dim>cols){
- fprintf(stderr,"ran out of columns reading %s\n",file);
- exit(1);
- }
- while(*line==' ')line++;
- for(i=0;i<cols;i++){
-
- /* static length buffer bug workaround */
- char *temp=line;
- char old;
- while(*temp>32)temp++;
-
- old=temp[0];
- temp[0]='\0';
- b[i]=atof(line);
- temp[0]=old;
-
- while(*line>32)line++;
- while(*line==' ')line++;
- }
- if(num<=0)num=(cols-start)/dim;
- for(i=0;i<num;i++)
- vqext_addpoint_adj(&v,b,start+i*dim,dim,cols,num);
-
- }
- }
- fclose(in);
- }
- }
-
- if(!init){
- fprintf(stderr,"No input files!\n");
- exit(1);
- }
-
- vqext_preprocess(&v);
-
- /* train the book */
- signal(SIGTERM,setexit);
- signal(SIGINT,setexit);
-
- for(i=0;i<iter && !exiting;i++){
- float result;
- if(i!=0){
- vqgen_unquantize(&v,&q);
- vqgen_cellmetric(&v);
- }
- result=vqgen_iterate(&v,biasp);
- vqext_quantize(&v,&q);
- if(result<desired)break;
- }
-
- /* save the book */
-
- fprintf(out,"# OggVorbis VQ codebook trainer, intermediate file\n");
- fprintf(out,"%s\n",vqext_booktype);
- fprintf(out,"%d %d %d\n",entries,dim,vqext_aux);
- fprintf(out,"%ld %ld %d %d\n",
- q.min,q.delta,q.quant,q.sequencep);
-
- /* quantized entries */
- fprintf(out,"# quantized entries---\n");
- i=0;
- for(j=0;j<entries;j++)
- for(k=0;k<dim;k++)
- fprintf(out,"%d\n",(int)(rint(v.entrylist[i++])));
-
- fprintf(out,"# biases---\n");
- i=0;
- for(j=0;j<entries;j++)
- fprintf(out,"%f\n",v.bias[i++]);
-
- /* we may have done the density limiting mesh trick; refetch the
- training points from the temp file */
-
- rewind(v.asciipoints);
- fprintf(out,"# points---\n");
- {
- /* sloppy, no error handling */
- long bytes;
- char buff[4096];
- while((bytes=fread(buff,1,4096,v.asciipoints)))
- while(bytes)bytes-=fwrite(buff,1,bytes,out);
- }
-
- fclose(out);
- fclose(v.asciipoints);
-
- vqgen_unquantize(&v,&q);
- vqgen_cellmetric(&v);
- exit(0);
-
- syner:
- fprintf(stderr,"Syntax error in argument '%s'\n",*argv);
- exit(1);
-}
diff --git a/vq/vqext.h b/vq/vqext.h
deleted file mode 100644
index 69e3d157..00000000
--- a/vq/vqext.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: prototypes for extermal metrics specific to data type
- last mod: $Id: vqext.h,v 1.13 2001/02/26 03:51:13 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _V_VQEXT_
-#define _V_VQEXT_
-
-#include "vqgen.h"
-
-extern char *vqext_booktype;
-extern quant_meta q;
-extern int vqext_aux;
-
-extern float vqext_metric(vqgen *v,float *e, float *p);
-extern float *vqext_weight(vqgen *v,float *p);
-extern void vqext_addpoint_adj(vqgen *v,float *b,int start,int dim,int cols,int num);
-extern void vqext_preprocess(vqgen *v);
-extern void vqext_quantize(vqgen *v,quant_meta *);
-
-
-#endif
diff --git a/vq/vqgen.c b/vq/vqgen.c
deleted file mode 100644
index 79022ae1..00000000
--- a/vq/vqgen.c
+++ /dev/null
@@ -1,568 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: train a VQ codebook
- last mod: $Id: vqgen.c,v 1.39 2001/02/26 03:51:13 xiphmont Exp $
-
- ********************************************************************/
-
-/* This code is *not* part of libvorbis. It is used to generate
- trained codebooks offline and then spit the results into a
- pregenerated codebook that is compiled into libvorbis. It is an
- expensive (but good) algorithm. Run it on big iron. */
-
-/* There are so many optimizations to explore in *both* stages that
- considering the undertaking is almost withering. For now, we brute
- force it all */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <string.h>
-
-#include "vqgen.h"
-#include "bookutil.h"
-
-/* Codebook generation happens in two steps:
-
- 1) Train the codebook with data collected from the encoder: We use
- one of a few error metrics (which represent the distance between a
- given data point and a candidate point in the training set) to
- divide the training set up into cells representing roughly equal
- probability of occurring.
-
- 2) Generate the codebook and auxiliary data from the trained data set
-*/
-
-/* Codebook training ****************************************************
- *
- * The basic idea here is that a VQ codebook is like an m-dimensional
- * foam with n bubbles. The bubbles compete for space/volume and are
- * 'pressurized' [biased] according to some metric. The basic alg
- * iterates through allowing the bubbles to compete for space until
- * they converge (if the damping is dome properly) on a steady-state
- * solution. Individual input points, collected from libvorbis, are
- * used to train the algorithm monte-carlo style. */
-
-/* internal helpers *****************************************************/
-#define vN(data,i) (data+v->elements*i)
-
-/* default metric; squared 'distance' from desired value. */
-float _dist(vqgen *v,float *a, float *b){
- int i;
- int el=v->elements;
- float acc=0.f;
- for(i=0;i<el;i++){
- float val=(a[i]-b[i]);
- acc+=val*val;
- }
- return sqrt(acc);
-}
-
-float *_weight_null(vqgen *v,float *a){
- return a;
-}
-
-/* *must* be beefed up. */
-void _vqgen_seed(vqgen *v){
- long i;
- for(i=0;i<v->entries;i++)
- memcpy(_now(v,i),_point(v,i),sizeof(float)*v->elements);
- v->seeded=1;
-}
-
-int directdsort(const void *a, const void *b){
- float av=*((float *)a);
- float bv=*((float *)b);
- if(av>bv)return(-1);
- return(1);
-}
-
-void vqgen_cellmetric(vqgen *v){
- int j,k;
- float min=-1.f,max=-1.f,mean=0.f,acc=0.f;
- long dup=0,unused=0;
- #ifdef NOISY
- int i;
- char buff[80];
- float spacings[v->entries];
- int count=0;
- FILE *cells;
- sprintf(buff,"cellspace%d.m",v->it);
- cells=fopen(buff,"w");
-#endif
-
- /* minimum, maximum, cell spacing */
- for(j=0;j<v->entries;j++){
- float localmin=-1.;
-
- for(k=0;k<v->entries;k++){
- if(j!=k){
- float this=_dist(v,_now(v,j),_now(v,k));
- if(this>0){
- if(v->assigned[k] && (localmin==-1 || this<localmin))
- localmin=this;
- }else{
- if(k<j){
- dup++;
- break;
- }
- }
- }
- }
- if(k<v->entries)continue;
-
- if(v->assigned[j]==0){
- unused++;
- continue;
- }
-
- localmin=v->max[j]+localmin/2; /* this gives us rough diameter */
- if(min==-1 || localmin<min)min=localmin;
- if(max==-1 || localmin>max)max=localmin;
- mean+=localmin;
- acc++;
-#ifdef NOISY
- spacings[count++]=localmin;
-#endif
- }
-
- fprintf(stderr,"cell diameter: %.03g::%.03g::%.03g (%ld unused/%ld dup)\n",
- min,mean/acc,max,unused,dup);
-
-#ifdef NOISY
- qsort(spacings,count,sizeof(float),directdsort);
- for(i=0;i<count;i++)
- fprintf(cells,"%g\n",spacings[i]);
- fclose(cells);
-#endif
-
-}
-
-/* External calls *******************************************************/
-
-/* We have two forms of quantization; in the first, each vector
- element in the codebook entry is orthogonal. Residues would use this
- quantization for example.
-
- In the second, we have a sequence of monotonically increasing
- values that we wish to quantize as deltas (to save space). We
- still need to quantize so that absolute values are accurate. For
- example, LSP quantizes all absolute values, but the book encodes
- distance between values because each successive value is larger
- than the preceeding value. Thus the desired quantibits apply to
- the encoded (delta) values, not abs positions. This requires minor
- additional encode-side trickery. */
-
-void vqgen_quantize(vqgen *v,quant_meta *q){
-
- float maxdel;
- float mindel;
-
- float delta;
- float maxquant=((1<<q->quant)-1);
-
- int j,k;
-
- mindel=maxdel=_now(v,0)[0];
-
- for(j=0;j<v->entries;j++){
- float last=0.f;
- for(k=0;k<v->elements;k++){
- if(mindel>_now(v,j)[k]-last)mindel=_now(v,j)[k]-last;
- if(maxdel<_now(v,j)[k]-last)maxdel=_now(v,j)[k]-last;
- if(q->sequencep)last=_now(v,j)[k];
- }
- }
-
-
- /* first find the basic delta amount from the maximum span to be
- encoded. Loosen the delta slightly to allow for additional error
- during sequence quantization */
-
- delta=(maxdel-mindel)/((1<<q->quant)-1.5f);
-
- q->min=_float32_pack(mindel);
- q->delta=_float32_pack(delta);
-
- mindel=_float32_unpack(q->min);
- delta=_float32_unpack(q->delta);
-
- for(j=0;j<v->entries;j++){
- float last=0;
- for(k=0;k<v->elements;k++){
- float val=_now(v,j)[k];
- float now=rint((val-last-mindel)/delta);
-
- _now(v,j)[k]=now;
- if(now<0){
- /* be paranoid; this should be impossible */
- fprintf(stderr,"fault; quantized value<0\n");
- exit(1);
- }
-
- if(now>maxquant){
- /* be paranoid; this should be impossible */
- fprintf(stderr,"fault; quantized value>max\n");
- exit(1);
- }
- if(q->sequencep)last=(now*delta)+mindel+last;
- }
- }
-}
-
-/* much easier :-). Unlike in the codebook, we don't un-log log
- scales; we just make sure they're properly offset. */
-void vqgen_unquantize(vqgen *v,quant_meta *q){
- long j,k;
- float mindel=_float32_unpack(q->min);
- float delta=_float32_unpack(q->delta);
-
- for(j=0;j<v->entries;j++){
- float last=0.f;
- for(k=0;k<v->elements;k++){
- float now=_now(v,j)[k];
- now=fabs(now)*delta+last+mindel;
- if(q->sequencep)last=now;
- _now(v,j)[k]=now;
- }
- }
-}
-
-void vqgen_init(vqgen *v,int elements,int aux,int entries,float mindist,
- float (*metric)(vqgen *,float *, float *),
- float *(*weight)(vqgen *,float *),int centroid){
- memset(v,0,sizeof(vqgen));
-
- v->centroid=centroid;
- v->elements=elements;
- v->aux=aux;
- v->mindist=mindist;
- v->allocated=32768;
- v->pointlist=_ogg_malloc(v->allocated*(v->elements+v->aux)*sizeof(float));
-
- v->entries=entries;
- v->entrylist=_ogg_malloc(v->entries*v->elements*sizeof(float));
- v->assigned=_ogg_malloc(v->entries*sizeof(long));
- v->bias=_ogg_calloc(v->entries,sizeof(float));
- v->max=_ogg_calloc(v->entries,sizeof(float));
- if(metric)
- v->metric_func=metric;
- else
- v->metric_func=_dist;
- if(weight)
- v->weight_func=weight;
- else
- v->weight_func=_weight_null;
-
- v->asciipoints=tmpfile();
-
-}
-
-void vqgen_addpoint(vqgen *v, float *p,float *a){
- int k;
- for(k=0;k<v->elements;k++)
- fprintf(v->asciipoints,"%.12g\n",p[k]);
- for(k=0;k<v->aux;k++)
- fprintf(v->asciipoints,"%.12g\n",a[k]);
-
- if(v->points>=v->allocated){
- v->allocated*=2;
- v->pointlist=_ogg_realloc(v->pointlist,v->allocated*(v->elements+v->aux)*
- sizeof(float));
- }
-
- memcpy(_point(v,v->points),p,sizeof(float)*v->elements);
- if(v->aux)memcpy(_point(v,v->points)+v->elements,a,sizeof(float)*v->aux);
-
- /* quantize to the density mesh if it's selected */
- if(v->mindist>0.f){
- /* quantize to the mesh */
- for(k=0;k<v->elements+v->aux;k++)
- _point(v,v->points)[k]=
- rint(_point(v,v->points)[k]/v->mindist)*v->mindist;
- }
- v->points++;
- if(!(v->points&0xff))spinnit("loading... ",v->points);
-}
-
-/* yes, not threadsafe. These utils aren't */
-static int sortit=0;
-static int sortsize=0;
-static int meshcomp(const void *a,const void *b){
- if(((sortit++)&0xfff)==0)spinnit("sorting mesh...",sortit);
- return(memcmp(a,b,sortsize));
-}
-
-void vqgen_sortmesh(vqgen *v){
- sortit=0;
- if(v->mindist>0.f){
- long i,march=1;
-
- /* sort to make uniqueness detection trivial */
- sortsize=(v->elements+v->aux)*sizeof(float);
- qsort(v->pointlist,v->points,sortsize,meshcomp);
-
- /* now march through and eliminate dupes */
- for(i=1;i<v->points;i++){
- if(memcmp(_point(v,i),_point(v,i-1),sortsize)){
- /* a new, unique entry. march it down */
- if(i>march)memcpy(_point(v,march),_point(v,i),sortsize);
- march++;
- }
- spinnit("eliminating density... ",v->points-i);
- }
-
- /* we're done */
- fprintf(stderr,"\r%ld training points remining out of %ld"
- " after density mesh (%ld%%)\n",march,v->points,march*100/v->points);
- v->points=march;
-
- }
- v->sorted=1;
-}
-
-float vqgen_iterate(vqgen *v,int biasp){
- long i,j,k;
-
- float fdesired;
- long desired;
- long desired2;
-
- float asserror=0.f;
- float meterror=0.f;
- float *new;
- float *new2;
- long *nearcount;
- float *nearbias;
- #ifdef NOISY
- char buff[80];
- FILE *assig;
- FILE *bias;
- FILE *cells;
- sprintf(buff,"cells%d.m",v->it);
- cells=fopen(buff,"w");
- sprintf(buff,"assig%d.m",v->it);
- assig=fopen(buff,"w");
- sprintf(buff,"bias%d.m",v->it);
- bias=fopen(buff,"w");
- #endif
-
-
- if(v->entries<2){
- fprintf(stderr,"generation requires at least two entries\n");
- exit(1);
- }
-
- if(!v->sorted)vqgen_sortmesh(v);
- if(!v->seeded)_vqgen_seed(v);
-
- fdesired=(float)v->points/v->entries;
- desired=fdesired;
- desired2=desired*2;
- new=_ogg_malloc(sizeof(float)*v->entries*v->elements);
- new2=_ogg_malloc(sizeof(float)*v->entries*v->elements);
- nearcount=_ogg_malloc(v->entries*sizeof(long));
- nearbias=_ogg_malloc(v->entries*desired2*sizeof(float));
-
- /* fill in nearest points for entry biasing */
- /*memset(v->bias,0,sizeof(float)*v->entries);*/
- memset(nearcount,0,sizeof(long)*v->entries);
- memset(v->assigned,0,sizeof(long)*v->entries);
- if(biasp){
- for(i=0;i<v->points;i++){
- float *ppt=v->weight_func(v,_point(v,i));
- float firstmetric=v->metric_func(v,_now(v,0),ppt)+v->bias[0];
- float secondmetric=v->metric_func(v,_now(v,1),ppt)+v->bias[1];
- long firstentry=0;
- long secondentry=1;
-
- if(!(i&0xff))spinnit("biasing... ",v->points+v->points+v->entries-i);
-
- if(firstmetric>secondmetric){
- float temp=firstmetric;
- firstmetric=secondmetric;
- secondmetric=temp;
- firstentry=1;
- secondentry=0;
- }
-
- for(j=2;j<v->entries;j++){
- float thismetric=v->metric_func(v,_now(v,j),ppt)+v->bias[j];
- if(thismetric<secondmetric){
- if(thismetric<firstmetric){
- secondmetric=firstmetric;
- secondentry=firstentry;
- firstmetric=thismetric;
- firstentry=j;
- }else{
- secondmetric=thismetric;
- secondentry=j;
- }
- }
- }
-
- j=firstentry;
- for(j=0;j<v->entries;j++){
-
- float thismetric,localmetric;
- float *nearbiasptr=nearbias+desired2*j;
- long k=nearcount[j];
-
- localmetric=v->metric_func(v,_now(v,j),ppt);
- /* 'thismetric' is to be the bias value necessary in the current
- arrangement for entry j to capture point i */
- if(firstentry==j){
- /* use the secondary entry as the threshhold */
- thismetric=secondmetric-localmetric;
- }else{
- /* use the primary entry as the threshhold */
- thismetric=firstmetric-localmetric;
- }
-
- /* support the idea of 'minimum distance'... if we want the
- cells in a codebook to be roughly some minimum size (as with
- the low resolution residue books) */
-
- /* a cute two-stage delayed sorting hack */
- if(k<desired){
- nearbiasptr[k]=thismetric;
- k++;
- if(k==desired){
- spinnit("biasing... ",v->points+v->points+v->entries-i);
- qsort(nearbiasptr,desired,sizeof(float),directdsort);
- }
-
- }else if(thismetric>nearbiasptr[desired-1]){
- nearbiasptr[k]=thismetric;
- k++;
- if(k==desired2){
- spinnit("biasing... ",v->points+v->points+v->entries-i);
- qsort(nearbiasptr,desired2,sizeof(float),directdsort);
- k=desired;
- }
- }
- nearcount[j]=k;
- }
- }
-
- /* inflate/deflate */
-
- for(i=0;i<v->entries;i++){
- float *nearbiasptr=nearbias+desired2*i;
-
- spinnit("biasing... ",v->points+v->entries-i);
-
- /* due to the delayed sorting, we likely need to finish it off....*/
- if(nearcount[i]>desired)
- qsort(nearbiasptr,nearcount[i],sizeof(float),directdsort);
-
- v->bias[i]=nearbiasptr[desired-1];
-
- }
- }else{
- memset(v->bias,0,v->entries*sizeof(float));
- }
-
- /* Now assign with new bias and find new midpoints */
- for(i=0;i<v->points;i++){
- float *ppt=v->weight_func(v,_point(v,i));
- float firstmetric=v->metric_func(v,_now(v,0),ppt)+v->bias[0];
- long firstentry=0;
-
- if(!(i&0xff))spinnit("centering... ",v->points-i);
-
- for(j=0;j<v->entries;j++){
- float thismetric=v->metric_func(v,_now(v,j),ppt)+v->bias[j];
- if(thismetric<firstmetric){
- firstmetric=thismetric;
- firstentry=j;
- }
- }
-
- j=firstentry;
-
-#ifdef NOISY
- fprintf(cells,"%g %g\n%g %g\n\n",
- _now(v,j)[0],_now(v,j)[1],
- ppt[0],ppt[1]);
-#endif
-
- firstmetric-=v->bias[j];
- meterror+=firstmetric;
-
- if(v->centroid==0){
- /* set up midpoints for next iter */
- if(v->assigned[j]++){
- for(k=0;k<v->elements;k++)
- vN(new,j)[k]+=ppt[k];
- if(firstmetric>v->max[j])v->max[j]=firstmetric;
- }else{
- for(k=0;k<v->elements;k++)
- vN(new,j)[k]=ppt[k];
- v->max[j]=firstmetric;
- }
- }else{
- /* centroid */
- if(v->assigned[j]++){
- for(k=0;k<v->elements;k++){
- if(vN(new,j)[k]>ppt[k])vN(new,j)[k]=ppt[k];
- if(vN(new2,j)[k]<ppt[k])vN(new2,j)[k]=ppt[k];
- }
- if(firstmetric>v->max[firstentry])v->max[j]=firstmetric;
- }else{
- for(k=0;k<v->elements;k++){
- vN(new,j)[k]=ppt[k];
- vN(new2,j)[k]=ppt[k];
- }
- v->max[firstentry]=firstmetric;
- }
- }
- }
-
- /* assign midpoints */
-
- for(j=0;j<v->entries;j++){
-#ifdef NOISY
- fprintf(assig,"%ld\n",v->assigned[j]);
- fprintf(bias,"%g\n",v->bias[j]);
-#endif
- asserror+=fabs(v->assigned[j]-fdesired);
- if(v->assigned[j]){
- if(v->centroid==0){
- for(k=0;k<v->elements;k++)
- _now(v,j)[k]=vN(new,j)[k]/v->assigned[j];
- }else{
- for(k=0;k<v->elements;k++)
- _now(v,j)[k]=(vN(new,j)[k]+vN(new2,j)[k])/2.f;
- }
- }
- }
-
- asserror/=(v->entries*fdesired);
-
- fprintf(stderr,"Pass #%d... ",v->it);
- fprintf(stderr,": dist %g(%g) metric error=%g \n",
- asserror,fdesired,meterror/v->points);
- v->it++;
-
- free(new);
- free(nearcount);
- free(nearbias);
-#ifdef NOISY
- fclose(assig);
- fclose(bias);
- fclose(cells);
-#endif
- return(asserror);
-}
-
diff --git a/vq/vqgen.h b/vq/vqgen.h
deleted file mode 100644
index 70286a73..00000000
--- a/vq/vqgen.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: build a VQ codebook
- last mod: $Id: vqgen.h,v 1.18 2001/02/26 03:51:13 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _VQGEN_H_
-#define _VQGEN_H_
-
-typedef struct vqgen{
- int seeded;
- int sorted;
-
- int it;
- int elements;
-
- int aux;
- float mindist;
- int centroid;
-
- /* point cache */
- float *pointlist;
- long points;
- long allocated;
-
- /* entries */
- float *entrylist;
- long *assigned;
- float *bias;
- long entries;
- float *max;
-
- float (*metric_func) (struct vqgen *v,float *entry,float *point);
- float *(*weight_func) (struct vqgen *v,float *point);
-
- FILE *asciipoints;
-} vqgen;
-
-typedef struct {
- long min; /* packed 24 bit float */
- long delta; /* packed 24 bit float */
- int quant; /* 0 < quant <= 16 */
- int sequencep; /* bitflag */
-} quant_meta;
-
-static inline float *_point(vqgen *v,long ptr){
- return v->pointlist+((v->elements+v->aux)*ptr);
-}
-
-static inline float *_aux(vqgen *v,long ptr){
- return _point(v,ptr)+v->aux;
-}
-
-static inline float *_now(vqgen *v,long ptr){
- return v->entrylist+(v->elements*ptr);
-}
-
-extern void vqgen_init(vqgen *v,
- int elements,int aux,int entries,float mindist,
- float (*metric)(vqgen *,float *, float *),
- float *(*weight)(vqgen *,float *),int centroid);
-extern void vqgen_addpoint(vqgen *v, float *p,float *aux);
-
-extern float vqgen_iterate(vqgen *v,int biasp);
-extern void vqgen_unquantize(vqgen *v,quant_meta *q);
-extern void vqgen_quantize(vqgen *v,quant_meta *q);
-extern void vqgen_cellmetric(vqgen *v);
-
-#endif
-
-
-
-
-
diff --git a/vq/vqsplit.c b/vq/vqsplit.c
deleted file mode 100644
index b3392947..00000000
--- a/vq/vqsplit.c
+++ /dev/null
@@ -1,612 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: build a VQ codebook and the encoding decision 'tree'
- last mod: $Id: vqsplit.c,v 1.25 2001/02/26 03:51:13 xiphmont Exp $
-
- ********************************************************************/
-
-/* This code is *not* part of libvorbis. It is used to generate
- trained codebooks offline and then spit the results into a
- pregenerated codebook that is compiled into libvorbis. It is an
- expensive (but good) algorithm. Run it on big iron. */
-
-/* There are so many optimizations to explore in *both* stages that
- considering the undertaking is almost withering. For now, we brute
- force it all */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <string.h>
-#include <sys/time.h>
-
-#include "vqgen.h"
-#include "vqsplit.h"
-#include "bookutil.h"
-
-/* Codebook generation happens in two steps:
-
- 1) Train the codebook with data collected from the encoder: We use
- one of a few error metrics (which represent the distance between a
- given data point and a candidate point in the training set) to
- divide the training set up into cells representing roughly equal
- probability of occurring.
-
- 2) Generate the codebook and auxiliary data from the trained data set
-*/
-
-/* Building a codebook from trained set **********************************
-
- The codebook in raw form is technically finished once it's trained.
- However, we want to finalize the representative codebook values for
- each entry and generate auxiliary information to optimize encoding.
- We generate the auxiliary coding tree using collected data,
- probably the same data as in the original training */
-
-/* At each recursion, the data set is split in half. Cells with data
- points on side A go into set A, same with set B. The sets may
- overlap. If the cell overlaps the deviding line only very slightly
- (provided parameter), we may choose to ignore the overlap in order
- to pare the tree down */
-
-long *isortvals;
-int iascsort(const void *a,const void *b){
- long av=isortvals[*((long *)a)];
- long bv=isortvals[*((long *)b)];
- return(av-bv);
-}
-
-static float _Ndist(int el,float *a, float *b){
- int i;
- float acc=0.f;
- for(i=0;i<el;i++){
- float val=(a[i]-b[i]);
- acc+=val*val;
- }
- return sqrt(acc);
-}
-
-#define _Npoint(i) (pointlist+dim*(i))
-#define _Nnow(i) (entrylist+dim*(i))
-
-
-/* goes through the split, but just counts it and returns a metric*/
-int vqsp_count(float *entrylist,float *pointlist,int dim,
- long *membership,long *reventry,
- long *entryindex,long entries,
- long *pointindex,long points,int splitp,
- long *entryA,long *entryB,
- long besti,long bestj,
- long *entriesA,long *entriesB,long *entriesC){
- long i,j;
- long A=0,B=0,C=0;
- long pointsA=0;
- long pointsB=0;
- long *temppointsA=NULL;
- long *temppointsB=NULL;
-
- if(splitp){
- temppointsA=_ogg_malloc(points*sizeof(long));
- temppointsB=_ogg_malloc(points*sizeof(long));
- }
-
- memset(entryA,0,sizeof(long)*entries);
- memset(entryB,0,sizeof(long)*entries);
-
- /* Do the points belonging to this cell occur on sideA, sideB or
- both? */
-
- for(i=0;i<points;i++){
- float *ppt=_Npoint(pointindex[i]);
- long firstentry=membership[pointindex[i]];
-
- if(firstentry==besti){
- entryA[reventry[firstentry]]=1;
- if(splitp)temppointsA[pointsA++]=pointindex[i];
- continue;
- }
- if(firstentry==bestj){
- entryB[reventry[firstentry]]=1;
- if(splitp)temppointsB[pointsB++]=pointindex[i];
- continue;
- }
- {
- float distA=_Ndist(dim,ppt,_Nnow(besti));
- float distB=_Ndist(dim,ppt,_Nnow(bestj));
- if(distA<distB){
- entryA[reventry[firstentry]]=1;
- if(splitp)temppointsA[pointsA++]=pointindex[i];
- }else{
- entryB[reventry[firstentry]]=1;
- if(splitp)temppointsB[pointsB++]=pointindex[i];
- }
- }
- }
-
- /* The entry splitting isn't total, so that storage has to be
- allocated for recursion. Reuse the entryA/entryB vectors */
- /* keep the entries in ascending order (relative to the original
- list); we rely on that stability when ordering p/q choice */
- for(j=0;j<entries;j++){
- if(entryA[j] && entryB[j])C++;
- if(entryA[j])entryA[A++]=entryindex[j];
- if(entryB[j])entryB[B++]=entryindex[j];
- }
- *entriesA=A;
- *entriesB=B;
- *entriesC=C;
- if(splitp){
- memcpy(pointindex,temppointsA,sizeof(long)*pointsA);
- memcpy(pointindex+pointsA,temppointsB,sizeof(long)*pointsB);
- free(temppointsA);
- free(temppointsB);
- }
- return(pointsA);
-}
-
-int lp_split(float *pointlist,long totalpoints,
- codebook *b,
- long *entryindex,long entries,
- long *pointindex,long points,
- long *membership,long *reventry,
- long depth, long *pointsofar){
-
- encode_aux_nearestmatch *t=b->c->nearest_tree;
-
- /* The encoder, regardless of book, will be using a straight
- euclidian distance-to-point metric to determine closest point.
- Thus we split the cells using the same (we've already trained the
- codebook set spacing and distribution using special metrics and
- even a midpoint division won't disturb the basic properties) */
-
- int dim=b->dim;
- float *entrylist=b->valuelist;
- long ret;
- long *entryA=_ogg_calloc(entries,sizeof(long));
- long *entryB=_ogg_calloc(entries,sizeof(long));
- long entriesA=0;
- long entriesB=0;
- long entriesC=0;
- long pointsA=0;
- long i,j,k;
-
- long besti=-1;
- long bestj=-1;
-
- char spinbuf[80];
- sprintf(spinbuf,"splitting [%ld left]... ",totalpoints-*pointsofar);
-
- /* one reverse index needed */
- for(i=0;i<b->entries;i++)reventry[i]=-1;
- for(i=0;i<entries;i++)reventry[entryindex[i]]=i;
-
- /* We need to find the dividing hyperplane. find the median of each
- axis as the centerpoint and the normal facing farthest point */
-
- /* more than one way to do this part. For small sets, we can brute
- force it. */
-
- if(entries<8 || (float)points*entries*entries<16.f*1024*1024){
- /* try every pair possibility */
- float best=0;
- float this;
- for(i=0;i<entries-1;i++){
- for(j=i+1;j<entries;j++){
- spinnit(spinbuf,entries-i);
- vqsp_count(b->valuelist,pointlist,dim,
- membership,reventry,
- entryindex,entries,
- pointindex,points,0,
- entryA,entryB,
- entryindex[i],entryindex[j],
- &entriesA,&entriesB,&entriesC);
- this=(entriesA-entriesC)*(entriesB-entriesC);
-
- /* when choosing best, we also want some form of stability to
- make sure more branches are pared later; secondary
- weighting isn;t needed as the entry lists are in ascending
- order, and we always try p/q in the same sequence */
-
- if( (besti==-1) ||
- (this>best) ){
-
- best=this;
- besti=entryindex[i];
- bestj=entryindex[j];
-
- }
- }
- }
- }else{
- float *p=alloca(dim*sizeof(float));
- float *q=alloca(dim*sizeof(float));
- float best=0.f;
-
- /* try COG/normal and furthest pairs */
- /* meanpoint */
- /* eventually, we want to select the closest entry and figure n/c
- from p/q (because storing n/c is too large */
- for(k=0;k<dim;k++){
- spinnit(spinbuf,entries);
-
- p[k]=0.f;
- for(j=0;j<entries;j++)
- p[k]+=b->valuelist[entryindex[j]*dim+k];
- p[k]/=entries;
-
- }
-
- /* we go through the entries one by one, looking for the entry on
- the other side closest to the point of reflection through the
- center */
-
- for(i=0;i<entries;i++){
- float *ppi=_Nnow(entryindex[i]);
- float ref_best=0.f;
- float ref_j=-1;
- float this;
- spinnit(spinbuf,entries-i);
-
- for(k=0;k<dim;k++)
- q[k]=2*p[k]-ppi[k];
-
- for(j=0;j<entries;j++){
- if(j!=i){
- float this=_Ndist(dim,q,_Nnow(entryindex[j]));
- if(ref_j==-1 || this<=ref_best){ /* <=, not <; very important */
- ref_best=this;
- ref_j=entryindex[j];
- }
- }
- }
-
- vqsp_count(b->valuelist,pointlist,dim,
- membership,reventry,
- entryindex,entries,
- pointindex,points,0,
- entryA,entryB,
- entryindex[i],ref_j,
- &entriesA,&entriesB,&entriesC);
- this=(entriesA-entriesC)*(entriesB-entriesC);
-
- /* when choosing best, we also want some form of stability to
- make sure more branches are pared later; secondary
- weighting isn;t needed as the entry lists are in ascending
- order, and we always try p/q in the same sequence */
-
- if( (besti==-1) ||
- (this>best) ){
-
- best=this;
- besti=entryindex[i];
- bestj=ref_j;
-
- }
- }
- if(besti>bestj){
- long temp=besti;
- besti=bestj;
- bestj=temp;
- }
-
- }
-
- /* find cells enclosing points */
- /* count A/B points */
-
- pointsA=vqsp_count(b->valuelist,pointlist,dim,
- membership,reventry,
- entryindex,entries,
- pointindex,points,1,
- entryA,entryB,
- besti,bestj,
- &entriesA,&entriesB,&entriesC);
-
- /* fprintf(stderr,"split: total=%ld depth=%ld set A=%ld:%ld:%ld=B\n",
- entries,depth,entriesA-entriesC,entriesC,entriesB-entriesC);*/
- {
- long thisaux=t->aux++;
- if(t->aux>=t->alloc){
- t->alloc*=2;
- t->ptr0=_ogg_realloc(t->ptr0,sizeof(long)*t->alloc);
- t->ptr1=_ogg_realloc(t->ptr1,sizeof(long)*t->alloc);
- t->p=_ogg_realloc(t->p,sizeof(long)*t->alloc);
- t->q=_ogg_realloc(t->q,sizeof(long)*t->alloc);
- }
-
- t->p[thisaux]=besti;
- t->q[thisaux]=bestj;
-
- if(entriesA==1){
- ret=1;
- t->ptr0[thisaux]=entryA[0];
- *pointsofar+=pointsA;
- }else{
- t->ptr0[thisaux]= -t->aux;
- ret=lp_split(pointlist,totalpoints,b,entryA,entriesA,pointindex,pointsA,
- membership,reventry,depth+1,pointsofar);
- }
- if(entriesB==1){
- ret++;
- t->ptr1[thisaux]=entryB[0];
- *pointsofar+=points-pointsA;
- }else{
- t->ptr1[thisaux]= -t->aux;
- ret+=lp_split(pointlist,totalpoints,b,entryB,entriesB,pointindex+pointsA,
- points-pointsA,membership,reventry,
- depth+1,pointsofar);
- }
- }
- free(entryA);
- free(entryB);
- return(ret);
-}
-
-static int _node_eq(encode_aux_nearestmatch *v, long a, long b){
- long Aptr0=v->ptr0[a];
- long Aptr1=v->ptr1[a];
- long Bptr0=v->ptr0[b];
- long Bptr1=v->ptr1[b];
-
- /* the possibility of choosing the same p and q, but switched, can;t
- happen because we always look for the best p/q in the same search
- order and the search is stable */
-
- if(Aptr0==Bptr0 && Aptr1==Bptr1)
- return(1);
-
- return(0);
-}
-
-void vqsp_book(vqgen *v, codebook *b, long *quantlist){
- long i,j;
- static_codebook *c=(static_codebook *)b->c;
- encode_aux_nearestmatch *t;
-
- memset(b,0,sizeof(codebook));
- memset(c,0,sizeof(static_codebook));
- b->c=c;
- t=c->nearest_tree=_ogg_calloc(1,sizeof(encode_aux_nearestmatch));
- c->maptype=2;
-
- /* make sure there are no duplicate entries and that every
- entry has points */
-
- for(i=0;i<v->entries;){
- /* duplicate? if so, eliminate */
- for(j=0;j<i;j++){
- if(_Ndist(v->elements,_now(v,i),_now(v,j))==0.f){
- fprintf(stderr,"found a duplicate entry! removing...\n");
- v->entries--;
- memcpy(_now(v,i),_now(v,v->entries),sizeof(float)*v->elements);
- memcpy(quantlist+i*v->elements,quantlist+v->entries*v->elements,
- sizeof(long)*v->elements);
- break;
- }
- }
- if(j==i)i++;
- }
-
- {
- v->assigned=_ogg_calloc(v->entries,sizeof(long));
- for(i=0;i<v->points;i++){
- float *ppt=_point(v,i);
- float firstmetric=_Ndist(v->elements,_now(v,0),ppt);
- long firstentry=0;
-
- if(!(i&0xff))spinnit("checking... ",v->points-i);
-
- for(j=0;j<v->entries;j++){
- float thismetric=_Ndist(v->elements,_now(v,j),ppt);
- if(thismetric<firstmetric){
- firstmetric=thismetric;
- firstentry=j;
- }
- }
-
- v->assigned[firstentry]++;
- }
-
- for(j=0;j<v->entries;){
- if(v->assigned[j]==0){
- fprintf(stderr,"found an unused entry! removing...\n");
- v->entries--;
- memcpy(_now(v,j),_now(v,v->entries),sizeof(float)*v->elements);
- v->assigned[j]=v->assigned[v->elements];
- memcpy(quantlist+j*v->elements,quantlist+v->entries*v->elements,
- sizeof(long)*v->elements);
- continue;
- }
- j++;
- }
- }
-
- fprintf(stderr,"Building a book with %ld unique entries...\n",v->entries);
-
- {
- long *entryindex=_ogg_malloc(v->entries*sizeof(long *));
- long *pointindex=_ogg_malloc(v->points*sizeof(long));
- long *membership=_ogg_malloc(v->points*sizeof(long));
- long *reventry=_ogg_malloc(v->entries*sizeof(long));
- long pointssofar=0;
-
- for(i=0;i<v->entries;i++)entryindex[i]=i;
- for(i=0;i<v->points;i++)pointindex[i]=i;
-
- t->alloc=4096;
- t->ptr0=_ogg_malloc(sizeof(long)*t->alloc);
- t->ptr1=_ogg_malloc(sizeof(long)*t->alloc);
- t->p=_ogg_malloc(sizeof(long)*t->alloc);
- t->q=_ogg_malloc(sizeof(long)*t->alloc);
- t->aux=0;
- c->dim=v->elements;
- c->entries=v->entries;
- c->lengthlist=_ogg_calloc(c->entries,sizeof(long));
- b->valuelist=v->entrylist; /* temporary; replaced later */
- b->dim=c->dim;
- b->entries=c->entries;
-
- for(i=0;i<v->points;i++)membership[i]=-1;
- for(i=0;i<v->points;i++){
- float *ppt=_point(v,i);
- long firstentry=0;
- float firstmetric=_Ndist(v->elements,_now(v,0),ppt);
-
- if(!(i&0xff))spinnit("assigning... ",v->points-i);
-
- for(j=1;j<v->entries;j++){
- if(v->assigned[j]!=-1){
- float thismetric=_Ndist(v->elements,_now(v,j),ppt);
- if(thismetric<=firstmetric){
- firstmetric=thismetric;
- firstentry=j;
- }
- }
- }
-
- membership[i]=firstentry;
- }
-
- fprintf(stderr,"Leaves added: %d \n",
- lp_split(v->pointlist,v->points,
- b,entryindex,v->entries,
- pointindex,v->points,
- membership,reventry,
- 0,&pointssofar));
-
- free(pointindex);
- free(membership);
- free(reventry);
-
- fprintf(stderr,"Paring/rerouting redundant branches... ");
-
- /* The tree is likely big and redundant. Pare and reroute branches */
- {
- int changedflag=1;
-
- while(changedflag){
- changedflag=0;
-
- /* span the tree node by node; list unique decision nodes and
- short circuit redundant branches */
-
- for(i=0;i<t->aux;){
- int k;
-
- /* check list of unique decisions */
- for(j=0;j<i;j++)
- if(_node_eq(t,i,j))break;
-
- if(j<i){
- /* a redundant entry; find all higher nodes referencing it and
- short circuit them to the previously noted unique entry */
- changedflag=1;
- for(k=0;k<t->aux;k++){
- if(t->ptr0[k]==-i)t->ptr0[k]=-j;
- if(t->ptr1[k]==-i)t->ptr1[k]=-j;
- }
-
- /* Now, we need to fill in the hole from this redundant
- entry in the listing. Insert the last entry in the list.
- Fix the forward pointers to that last entry */
- t->aux--;
- t->ptr0[i]=t->ptr0[t->aux];
- t->ptr1[i]=t->ptr1[t->aux];
- t->p[i]=t->p[t->aux];
- t->q[i]=t->q[t->aux];
- for(k=0;k<t->aux;k++){
- if(t->ptr0[k]==-t->aux)t->ptr0[k]=-i;
- if(t->ptr1[k]==-t->aux)t->ptr1[k]=-i;
- }
- /* hole plugged */
-
- }else
- i++;
- }
-
- fprintf(stderr,"\rParing/rerouting redundant branches... "
- "%ld remaining ",t->aux);
- }
- fprintf(stderr,"\n");
- }
- }
-
- /* run all training points through the decision tree to get a final
- probability count */
- {
- long *probability=_ogg_malloc(c->entries*sizeof(long));
- for(i=0;i<c->entries;i++)probability[i]=1; /* trivial guard */
- b->dim=c->dim;
-
- /* sigh. A necessary hack */
- for(i=0;i<t->aux;i++)t->p[i]*=c->dim;
- for(i=0;i<t->aux;i++)t->q[i]*=c->dim;
-
- for(i=0;i<v->points;i++){
- /* we use the linear matcher regardless becuase the trainer
- doesn't convert log to linear */
- int ret=_best(b,v->pointlist+i*v->elements,1);
- probability[ret]++;
- if(!(i&0xff))spinnit("counting hits... ",v->points-i);
- }
- for(i=0;i<t->aux;i++)t->p[i]/=c->dim;
- for(i=0;i<t->aux;i++)t->q[i]/=c->dim;
-
- build_tree_from_lengths(c->entries,probability,c->lengthlist);
-
- free(probability);
- }
-
- /* Sort the entries by codeword length, short to long (eases
- assignment and packing to do it now) */
- {
- long *wordlen=c->lengthlist;
- long *index=_ogg_malloc(c->entries*sizeof(long));
- long *revindex=_ogg_malloc(c->entries*sizeof(long));
- int k;
- for(i=0;i<c->entries;i++)index[i]=i;
- isortvals=c->lengthlist;
- qsort(index,c->entries,sizeof(long),iascsort);
-
- /* rearrange storage; ptr0/1 first as it needs a reverse index */
- /* n and c stay unchanged */
- for(i=0;i<c->entries;i++)revindex[index[i]]=i;
- for(i=0;i<t->aux;i++){
- if(!(i&0x3f))spinnit("sorting... ",t->aux-i);
-
- if(t->ptr0[i]>=0)t->ptr0[i]=revindex[t->ptr0[i]];
- if(t->ptr1[i]>=0)t->ptr1[i]=revindex[t->ptr1[i]];
- t->p[i]=revindex[t->p[i]];
- t->q[i]=revindex[t->q[i]];
- }
- free(revindex);
-
- /* map lengthlist and vallist with index */
- c->lengthlist=_ogg_calloc(c->entries,sizeof(long));
- b->valuelist=_ogg_malloc(sizeof(float)*c->entries*c->dim);
- c->quantlist=_ogg_malloc(sizeof(long)*c->entries*c->dim);
- for(i=0;i<c->entries;i++){
- long e=index[i];
- for(k=0;k<c->dim;k++){
- b->valuelist[i*c->dim+k]=v->entrylist[e*c->dim+k];
- c->quantlist[i*c->dim+k]=quantlist[e*c->dim+k];
- }
- c->lengthlist[i]=wordlen[e];
- }
-
- free(wordlen);
- }
-
- fprintf(stderr,"Done. \n\n");
-}
-
diff --git a/vq/vqsplit.h b/vq/vqsplit.h
deleted file mode 100644
index ee1a10c4..00000000
--- a/vq/vqsplit.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/********************************************************************
- * *
- * 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 XIPHOPHORUS Company http://www.xiph.org/ *
-
- ********************************************************************
-
- function: build a VQ codebook decision tree
- last mod: $Id: vqsplit.h,v 1.7 2001/02/26 03:51:13 xiphmont Exp $
-
- ********************************************************************/
-
-#ifndef _VQSPL_H_
-#define _VQSPL_H_
-
-#include "codebook.h"
-
-extern void vqsp_book(vqgen *v,codebook *b,long *quantlist);
-extern int vqenc_entry(codebook *b,float *val);
-extern int lp_split(float *pointlist,long totalpoints,
- codebook *b,
- long *entryindex,long entries,
- long *pointindex,long points,
- long *membership,long *reventry,
- long depth, long *pointsofar);
-
-#endif
-
-
-
-
-
diff --git a/win32/.cvsignore b/win32/.cvsignore
deleted file mode 100644
index 282522db..00000000
--- a/win32/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/win32/Makefile.am b/win32/Makefile.am
deleted file mode 100644
index f262326c..00000000
--- a/win32/Makefile.am
+++ /dev/null
@@ -1,14 +0,0 @@
-## Process this with automake to create Makefile.in
-
-AUTOMAKE_OPTIONS = foreign
-
-
-EXTRA_DIST = vorbis.def vorbis_dynamic.dsp vorbis_static.dsp\
- vorbisfile.def vorbisfile_dynamic.dsp vorbisfile_static.dsp\
- vorbisenc.def vorbisenc_dynamic.dsp vorbisenc_static.dsp\
- build_vorbis_dynamic.bat build_vorbis_dynamic_debug.bat\
- build_vorbis_static.bat build_vorbis_static_debug.bat\
- build_vorbisenc_dynamic.bat build_vorbisenc_dynamic_debug.bat\
- build_vorbisenc_static.bat build_vorbisenc_static_debug.bat\
- build_vorbisfile_dynamic.bat build_vorbisfile_dynamic_debug.bat\
- build_vorbisfile_static.bat build_vorbisfile_static_debug.bat
diff --git a/win32/build_vorbis_dynamic.bat b/win32/build_vorbis_dynamic.bat
deleted file mode 100755
index 5cea47d4..00000000
--- a/win32/build_vorbis_dynamic.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-echo ---+++--- Building Vorbis (Dynamic) ---+++---
-
-if .%SRCROOT%==. set SRCROOT=i:\xiph
-
-set OLDPATH=%PATH%
-set OLDINCLUDE=%INCLUDE%
-set OLDLIB=%LIB%
-
-call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
-echo Setting include/lib paths for Vorbis
-set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;c:\src\vorbis\include
-set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Release
-echo Compiling...
-msdev vorbis_dynamic.dsp /useenv /make "vorbis_dynamic - Win32 Release" /rebuild
-
-set PATH=%OLDPATH%
-set INCLUDE=%OLDINCLUDE%
-set LIB=%OLDLIB%
diff --git a/win32/build_vorbis_dynamic_debug.bat b/win32/build_vorbis_dynamic_debug.bat
deleted file mode 100755
index 822f2549..00000000
--- a/win32/build_vorbis_dynamic_debug.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-echo ---+++--- Building Vorbis (Dynamic) ---+++---
-
-if .%SRCROOT%==. set SRCROOT=i:\xiph
-
-set OLDPATH=%PATH%
-set OLDINCLUDE=%INCLUDE%
-set OLDLIB=%LIB%
-
-call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
-echo Setting include/lib paths for Vorbis
-set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;c:\src\vorbis\include
-set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Debug
-echo Compiling...
-msdev vorbis_dynamic.dsp /useenv /make "vorbis_dynamic - Win32 Debug" /rebuild
-
-set PATH=%OLDPATH%
-set INCLUDE=%OLDINCLUDE%
-set LIB=%OLDLIB%
diff --git a/win32/build_vorbis_static.bat b/win32/build_vorbis_static.bat
deleted file mode 100755
index f09c5587..00000000
--- a/win32/build_vorbis_static.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-echo ---+++--- Building Vorbis (Static) ---+++---
-
-if .%SRCROOT%==. set SRCROOT=i:\xiph
-
-set OLDPATH=%PATH%
-set OLDINCLUDE=%INCLUDE%
-set OLDLIB=%LIB%
-
-call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
-echo Setting include/lib paths for Vorbis
-set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;c:\src\vorbis\include
-set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Release
-echo Compiling...
-msdev vorbis_static.dsp /useenv /make "vorbis_static - Win32 Release" /rebuild
-
-set PATH=%OLDPATH%
-set INCLUDE=%OLDINCLUDE%
-set LIB=%OLDLIB%
diff --git a/win32/build_vorbis_static_debug.bat b/win32/build_vorbis_static_debug.bat
deleted file mode 100755
index 0e5425c7..00000000
--- a/win32/build_vorbis_static_debug.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-echo ---+++--- Building Vorbis (Static) ---+++---
-
-if .%SRCROOT%==. set SRCROOT=i:\xiph
-
-set OLDPATH=%PATH%
-set OLDINCLUDE=%INCLUDE%
-set OLDLIB=%LIB%
-
-call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
-echo Setting include/lib paths for Vorbis
-set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;c:\src\vorbis\include
-set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Debug
-echo Compiling...
-msdev vorbis_static.dsp /useenv /make "vorbis_static - Win32 Debug" /rebuild
-
-set PATH=%OLDPATH%
-set INCLUDE=%OLDINCLUDE%
-set LIB=%OLDLIB%
diff --git a/win32/build_vorbisenc_dynamic.bat b/win32/build_vorbisenc_dynamic.bat
deleted file mode 100755
index 2538b1b8..00000000
--- a/win32/build_vorbisenc_dynamic.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-echo ---+++--- Building Vorbisenc (Dynamic) ---+++---
-
-if .%SRCROOT%==. set SRCROOT=i:\xiph
-
-set OLDPATH=%PATH%
-set OLDINCLUDE=%INCLUDE%
-set OLDLIB=%LIB%
-
-call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
-echo Setting include/lib paths for Vorbis
-set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;c:\src\vorbis\include
-set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Release;%SRCROOT%\vorbis\win32\Dynamic_Release
-echo Compiling...
-msdev vorbisenc_dynamic.dsp /useenv /make "vorbisenc_dynamic - Win32 Release" /rebuild
-
-set PATH=%OLDPATH%
-set INCLUDE=%OLDINCLUDE%
-set LIB=%OLDLIB%
diff --git a/win32/build_vorbisenc_dynamic_debug.bat b/win32/build_vorbisenc_dynamic_debug.bat
deleted file mode 100755
index 4dd6547b..00000000
--- a/win32/build_vorbisenc_dynamic_debug.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-echo ---+++--- Building Vorbisenc (Dynamic) ---+++---
-
-if .%SRCROOT%==. set SRCROOT=i:\xiph
-
-set OLDPATH=%PATH%
-set OLDINCLUDE=%INCLUDE%
-set OLDLIB=%LIB%
-
-call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
-echo Setting include/lib paths for Vorbis
-set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;c:\src\vorbis\include
-set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Debug;%SRCROOT%\vorbis\win32\Dynamic_Debug
-echo Compiling...
-msdev vorbisenc_dynamic.dsp /useenv /make "vorbisenc_dynamic - Win32 Debug" /rebuild
-
-set PATH=%OLDPATH%
-set INCLUDE=%OLDINCLUDE%
-set LIB=%OLDLIB%
diff --git a/win32/build_vorbisenc_static.bat b/win32/build_vorbisenc_static.bat
deleted file mode 100755
index 21ce5ccd..00000000
--- a/win32/build_vorbisenc_static.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-echo ---+++--- Building Vorbisenc (Static) ---+++---
-
-if .%SRCROOT%==. set SRCROOT=i:\xiph
-
-set OLDPATH=%PATH%
-set OLDINCLUDE=%INCLUDE%
-set OLDLIB=%LIB%
-
-call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
-echo Setting include/lib paths for Vorbis
-set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;c:\src\vorbis\include
-set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Release;%SRCROOT%\vorbis\win32\Dynamic_Release
-echo Compiling...
-msdev vorbisenc_static.dsp /useenv /make "vorbisenc_static - Win32 Release" /rebuild
-
-set PATH=%OLDPATH%
-set INCLUDE=%OLDINCLUDE%
-set LIB=%OLDLIB%
diff --git a/win32/build_vorbisenc_static_debug.bat b/win32/build_vorbisenc_static_debug.bat
deleted file mode 100755
index ef4c7cc4..00000000
--- a/win32/build_vorbisenc_static_debug.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-echo ---+++--- Building Vorbisenc (Static) ---+++---
-
-if .%SRCROOT%==. set SRCROOT=i:\xiph
-
-set OLDPATH=%PATH%
-set OLDINCLUDE=%INCLUDE%
-set OLDLIB=%LIB%
-
-call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
-echo Setting include/lib paths for Vorbis
-set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;c:\src\vorbis\include
-set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Debug;%SRCROOT%\vorbis\win32\Dynamic_Debug
-echo Compiling...
-msdev vorbisenc_static.dsp /useenv /make "vorbisenc_static - Win32 Debug" /rebuild
-
-set PATH=%OLDPATH%
-set INCLUDE=%OLDINCLUDE%
-set LIB=%OLDLIB%
diff --git a/win32/build_vorbisfile_dynamic.bat b/win32/build_vorbisfile_dynamic.bat
deleted file mode 100755
index d3b8170d..00000000
--- a/win32/build_vorbisfile_dynamic.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-echo ---+++--- Building Vorbisfile (Dynamic) ---+++---
-
-if .%SRCROOT%==. set SRCROOT=i:\xiph
-
-set OLDPATH=%PATH%
-set OLDINCLUDE=%INCLUDE%
-set OLDLIB=%LIB%
-
-call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
-echo Setting include/lib paths for Vorbis
-set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;c:\src\vorbis\include
-set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Release;%SRCROOT%\vorbis\win32\Dynamic_Release
-echo Compiling...
-msdev vorbisfile_dynamic.dsp /useenv /make "vorbisfile_dynamic - Win32 Release" /rebuild
-
-set PATH=%OLDPATH%
-set INCLUDE=%OLDINCLUDE%
-set LIB=%OLDLIB%
diff --git a/win32/build_vorbisfile_dynamic_debug.bat b/win32/build_vorbisfile_dynamic_debug.bat
deleted file mode 100755
index c3222522..00000000
--- a/win32/build_vorbisfile_dynamic_debug.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-echo ---+++--- Building Vorbisfile (Dynamic) ---+++---
-
-if .%SRCROOT%==. set SRCROOT=i:\xiph
-
-set OLDPATH=%PATH%
-set OLDINCLUDE=%INCLUDE%
-set OLDLIB=%LIB%
-
-call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
-echo Setting include/lib paths for Vorbis
-set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;c:\src\vorbis\include
-set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Debug;%SRCROOT%\vorbis\win32\Dynamic_Debug
-echo Compiling...
-msdev vorbisfile_dynamic.dsp /useenv /make "vorbisfile_dynamic - Win32 Debug" /rebuild
-
-set PATH=%OLDPATH%
-set INCLUDE=%OLDINCLUDE%
-set LIB=%OLDLIB%
diff --git a/win32/build_vorbisfile_static.bat b/win32/build_vorbisfile_static.bat
deleted file mode 100755
index 1afda648..00000000
--- a/win32/build_vorbisfile_static.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-echo ---+++--- Building Vorbisfile (Static) ---+++---
-
-if .%SRCROOT%==. set SRCROOT=i:\xiph
-
-set OLDPATH=%PATH%
-set OLDINCLUDE=%INCLUDE%
-set OLDLIB=%LIB%
-
-call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
-echo Setting include/lib paths for Vorbis
-set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;c:\src\vorbis\include
-set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Release;%SRCROOT%\vorbis\win32\Dynamic_Release
-echo Compiling...
-msdev vorbisfile_static.dsp /useenv /make "vorbisfile_static - Win32 Release" /rebuild
-
-set PATH=%OLDPATH%
-set INCLUDE=%OLDINCLUDE%
-set LIB=%OLDLIB%
diff --git a/win32/build_vorbisfile_static_debug.bat b/win32/build_vorbisfile_static_debug.bat
deleted file mode 100755
index 95fae898..00000000
--- a/win32/build_vorbisfile_static_debug.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@echo off
-echo ---+++--- Building Vorbisfile (Static) ---+++---
-
-if .%SRCROOT%==. set SRCROOT=i:\xiph
-
-set OLDPATH=%PATH%
-set OLDINCLUDE=%INCLUDE%
-set OLDLIB=%LIB%
-
-call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
-echo Setting include/lib paths for Vorbis
-set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;c:\src\vorbis\include
-set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Debug;%SRCROOT%\vorbis\win32\Dynamic_Debug
-echo Compiling...
-msdev vorbisfile_static.dsp /useenv /make "vorbisfile_static - Win32 Debug" /rebuild
-
-set PATH=%OLDPATH%
-set INCLUDE=%OLDINCLUDE%
-set LIB=%OLDLIB%
diff --git a/win32/vorbis.def b/win32/vorbis.def
deleted file mode 100644
index dd072629..00000000
--- a/win32/vorbis.def
+++ /dev/null
@@ -1,32 +0,0 @@
-; vorbis.def
-LIBRARY vorbis
-EXPORTS
-vorbis_info_init
-vorbis_info_clear
-vorbis_comment_init
-vorbis_comment_add
-vorbis_comment_add_tag
-vorbis_comment_query
-vorbis_comment_query_count
-vorbis_comment_clear
-vorbis_block_init
-vorbis_block_clear
-vorbis_dsp_clear
-vorbis_analysis_init
-vorbis_analysis_headerout
-vorbis_analysis_buffer
-vorbis_analysis_wrote
-vorbis_analysis_blockout
-vorbis_analysis
-vorbis_synthesis_headerin
-vorbis_synthesis_init
-vorbis_synthesis
-vorbis_synthesis_blockin
-vorbis_synthesis_pcmout
-vorbis_synthesis_read
-vorbis_packet_blocksize
-_vi_psy_copy
-_mapping_P
-_floor_P
-_residue_P
-_time_P
diff --git a/win32/vorbis_dynamic.dsp b/win32/vorbis_dynamic.dsp
deleted file mode 100644
index 28241c69..00000000
--- a/win32/vorbis_dynamic.dsp
+++ /dev/null
@@ -1,271 +0,0 @@
-# Microsoft Developer Studio Project File - Name="vorbis_dynamic" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=vorbis_dynamic - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vorbis_dynamic.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vorbis_dynamic.mak" CFG="vorbis_dynamic - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "vorbis_dynamic - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "vorbis_dynamic - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "vorbis_dynamic - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Vorbis_Dynamic_Release"
-# PROP Intermediate_Dir "Vorbis_Dynamic_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBIS_DYNAMIC_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\ogg\include" /I "..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBIS_DYNAMIC_EXPORTS" /D "_WIN32" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg.lib /nologo /dll /machine:I386 /out:"Vorbis_Dynamic_Release/vorbis.dll" /libpath:"..\..\ogg\win32\Dynamic_Release"
-
-!ELSEIF "$(CFG)" == "vorbis_dynamic - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "vorbis_dynamic___Win32_Debug"
-# PROP BASE Intermediate_Dir "vorbis_dynamic___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Vorbis_Dynamic_Debug"
-# PROP Intermediate_Dir "Vorbis_Dynamic_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBIS_DYNAMIC_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\ogg\include" /I "..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBIS_DYNAMIC_EXPORTS" /D "_WIN32" /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg_d.lib /nologo /dll /debug /machine:I386 /out:"Vorbis_Dynamic_Debug/vorbis_d.dll" /pdbtype:sept /libpath:"..\..\ogg\win32\Dynamic_Debug"
-
-!ENDIF
-
-# Begin Target
-
-# Name "vorbis_dynamic - Win32 Release"
-# Name "vorbis_dynamic - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\lib\analysis.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\bitbuffer.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\block.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\codebook.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\envelope.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\floor0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\floor1.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\info.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lpc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lsp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\mapping0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\mdct.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\psy.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\registry.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\res0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\sharedbook.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\smallft.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\synthesis.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\time0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\window.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\lib\backends.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\bitbuffer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\codebook.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\codec.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\codec_internal.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\envelope.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\iir.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lookup.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lookup_data.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lpc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lsp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\masking.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\mdct.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\misc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\os.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\psy.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\registry.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\scales.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\smallft.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\window.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# Begin Group "Other Files"
-
-# PROP Default_Filter ".def"
-# Begin Source File
-
-SOURCE=.\vorbis.def
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/win32/vorbis_static.dsp b/win32/vorbis_static.dsp
deleted file mode 100644
index 76b1bdce..00000000
--- a/win32/vorbis_static.dsp
+++ /dev/null
@@ -1,548 +0,0 @@
-# Microsoft Developer Studio Project File - Name="vorbis_static" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=vorbis_static - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vorbis_static.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vorbis_static.mak" CFG="vorbis_static - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "vorbis_static - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "vorbis_static - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "vorbis_static - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Vorbis_Static_Release"
-# PROP Intermediate_Dir "Vorbis_Static_Release"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MD /W2 /GX /O2 /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "_WIN32" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "vorbis_static - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Vorbis_Static_Debug"
-# PROP Intermediate_Dir "Vorbis_Static_Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "_WIN32" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"Vorbis_Static_Debug\vorbis_static_d.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "vorbis_static - Win32 Release"
-# Name "vorbis_static - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\lib\analysis.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\bitbuffer.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\block.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\codebook.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\envelope.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\floor0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\floor1.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\info.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lpc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lsp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\mapping0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\mdct.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\psy.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\registry.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\res0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\sharedbook.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\smallft.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\synthesis.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\time0.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\window.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\include\vorbis\backends.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\bitbuffer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\bookinternal.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\codebook.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\codec.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\envelope.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\iir.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lpc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\lsp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\lsp12_0.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\lsp30_0.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\masking.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\mdct.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\misc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\mode_A.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\mode_B.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\mode_C.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\mode_D.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\mode_E.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\modes.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\os.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\psy.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\registry.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_6.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_7.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_8.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_128_9.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_6.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_7.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_8.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_160_9.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_192_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_192_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_192_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_192_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_192_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_256_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_256_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_256_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_256_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_256_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_350_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_350_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_350_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_350_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_1024a_350_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_128_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_128_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_128_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_128_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_128_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_160_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_160_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_160_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_160_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_160_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_192_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_192_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_192_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_192_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_192_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_256_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_256_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_256_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_256_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_256_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_350_1.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_350_2.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_350_3.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_350_4.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\res0_128a_350_5.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_1024a_128.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_1024a_160.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_1024a_192.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_1024a_256.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_1024a_350.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_128a_128.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_128a_160.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_128a_192.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_128a_256.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\include\vorbis\book\resaux0_128a_350.vqh
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\sharedbook.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\smallft.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\lib\window.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/win32/vorbisenc.def b/win32/vorbisenc.def
deleted file mode 100644
index 3c4c126f..00000000
--- a/win32/vorbisenc.def
+++ /dev/null
@@ -1,5 +0,0 @@
-; vorbisenc.def
-LIBRARY vorbisenc
-EXPORTS
-vorbis_encode_init
-vorbis_encode_ctl
diff --git a/win32/vorbisenc_dynamic.dsp b/win32/vorbisenc_dynamic.dsp
deleted file mode 100644
index 12c40190..00000000
--- a/win32/vorbisenc_dynamic.dsp
+++ /dev/null
@@ -1,115 +0,0 @@
-# Microsoft Developer Studio Project File - Name="vorbisenc_dynamic" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=vorbisenc_dynamic - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisenc_dynamic.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisenc_dynamic.mak" CFG="vorbisenc_dynamic - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "vorbisenc_dynamic - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "vorbisenc_dynamic - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "vorbisenc_dynamic - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "VorbisEnc_Dynamic_Release"
-# PROP Intermediate_Dir "VorbisEnc_Dynamic_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISENC_DYNAMIC_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\ogg\include" /I "..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISENC_DYNAMIC_EXPORTS" /D "_WIN32" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg.lib vorbis.lib /nologo /dll /machine:I386 /out:"VorbisEnc_Dynamic_Release/vorbisenc.dll" /libpath:"..\..\ogg\win32\Dynamic_Release" /libpath:".\Vorbis_Dynamic_Release"
-
-!ELSEIF "$(CFG)" == "vorbisenc_dynamic - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "vorbisenc_dynamic___Win32_Debug"
-# PROP BASE Intermediate_Dir "vorbisenc_dynamic___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "VorbisEnc_Dynamic_Debug"
-# PROP Intermediate_Dir "VorbisEnc_Dynamic_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISENC_DYNAMIC_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\ogg\include" /I "..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISENC_DYNAMIC_EXPORTS" /D "_WIN32" /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg_d.lib vorbis_d.lib /nologo /dll /debug /machine:I386 /out:"VorbisEnc_Dynamic_Debug/vorbisenc_d.dll" /pdbtype:sept /libpath:"..\..\ogg\win32\Dynamic_Debug" /libpath:".\Vorbis_Dynamic_Debug"
-
-!ENDIF
-
-# Begin Target
-
-# Name "vorbisenc_dynamic - Win32 Release"
-# Name "vorbisenc_dynamic - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\lib\vorbisenc.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# Begin Group "Other Files"
-
-# PROP Default_Filter ".def"
-# Begin Source File
-
-SOURCE=.\vorbisenc.def
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/win32/vorbisenc_static.dsp b/win32/vorbisenc_static.dsp
deleted file mode 100644
index e271dc74..00000000
--- a/win32/vorbisenc_static.dsp
+++ /dev/null
@@ -1,96 +0,0 @@
-# Microsoft Developer Studio Project File - Name="vorbisenc_static" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=vorbisenc_static - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisenc_static.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisenc_static.mak" CFG="vorbisenc_static - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "vorbisenc_static - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "vorbisenc_static - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "vorbisenc_static - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "VorbisEnc_Static_Release"
-# PROP Intermediate_Dir "VorbisEnc_Static_Release"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MD /W2 /GX /O2 /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "_WIN32" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "vorbisenc_static - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "VorbisEnc_Static_Debug"
-# PROP Intermediate_Dir "VorbisEnc_Static_Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "_WIN32" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"VorbisEnc_Static_Debug\vorbisenc_static_d.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "vorbisenc_static - Win32 Release"
-# Name "vorbisenc_static - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\lib\vorbisenc.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# End Target
-# End Project
diff --git a/win32/vorbisfile.def b/win32/vorbisfile.def
deleted file mode 100644
index f9ffddcf..00000000
--- a/win32/vorbisfile.def
+++ /dev/null
@@ -1,28 +0,0 @@
-; vorbisfile.def
-LIBRARY vorbisfile
-EXPORTS
-ov_clear
-ov_open
-ov_open_callbacks
-ov_bitrate
-ov_bitrate_instant
-ov_streams
-ov_seekable
-ov_serialnumber
-ov_raw_total
-ov_pcm_total
-ov_time_total
-ov_raw_seek
-ov_pcm_seek
-ov_pcm_seek_page
-ov_time_seek
-ov_time_seek_page
-ov_raw_tell
-ov_pcm_tell
-ov_time_tell
-ov_info
-ov_comment
-ov_read
-ov_test
-ov_test_callbacks
-ov_test_open
diff --git a/win32/vorbisfile_dynamic.dsp b/win32/vorbisfile_dynamic.dsp
deleted file mode 100644
index d2b4311a..00000000
--- a/win32/vorbisfile_dynamic.dsp
+++ /dev/null
@@ -1,115 +0,0 @@
-# Microsoft Developer Studio Project File - Name="vorbisfile_dynamic" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=vorbisfile_dynamic - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisfile_dynamic.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisfile_dynamic.mak" CFG="vorbisfile_dynamic - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "vorbisfile_dynamic - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "vorbisfile_dynamic - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "vorbisfile_dynamic - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "VorbisFile_Dynamic_Release"
-# PROP Intermediate_Dir "VorbisFile_Dynamic_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISFILE_DYNAMIC_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\ogg\include" /I "..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISFILE_DYNAMIC_EXPORTS" /D "_WIN32" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg.lib vorbis.lib /nologo /dll /machine:I386 /out:"VorbisFile_Dynamic_Release/vorbisfile.dll" /libpath:"..\..\ogg\win32\Dynamic_Release" /libpath:".\Vorbis_Dynamic_Release"
-
-!ELSEIF "$(CFG)" == "vorbisfile_dynamic - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "vorbisfile_dynamic___Win32_Debug"
-# PROP BASE Intermediate_Dir "vorbisfile_dynamic___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "VorbisFile_Dynamic_Debug"
-# PROP Intermediate_Dir "VorbisFile_Dynamic_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISFILE_DYNAMIC_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\ogg\include" /I "..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISFILE_DYNAMIC_EXPORTS" /D "_WIN32" /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg_d.lib vorbis_d.lib /nologo /dll /debug /machine:I386 /out:"VorbisFile_Dynamic_Debug/vorbisfile_d.dll" /pdbtype:sept /libpath:"..\..\ogg\win32\Dynamic_Debug" /libpath:".\Vorbis_Dynamic_Debug"
-
-!ENDIF
-
-# Begin Target
-
-# Name "vorbisfile_dynamic - Win32 Release"
-# Name "vorbisfile_dynamic - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\lib\vorbisfile.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# Begin Group "Other Files"
-
-# PROP Default_Filter ".def"
-# Begin Source File
-
-SOURCE=.\vorbisfile.def
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/win32/vorbisfile_static.dsp b/win32/vorbisfile_static.dsp
deleted file mode 100644
index ff4c418b..00000000
--- a/win32/vorbisfile_static.dsp
+++ /dev/null
@@ -1,96 +0,0 @@
-# Microsoft Developer Studio Project File - Name="vorbisfile_static" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=vorbisfile_static - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisfile_static.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vorbisfile_static.mak" CFG="vorbisfile_static - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "vorbisfile_static - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "vorbisfile_static - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "vorbisfile_static - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "VorbisFile_Static_Release"
-# PROP Intermediate_Dir "VorbisFile_Static_Release"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MD /W2 /GX /O2 /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "_WIN32" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "vorbisfile_static - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "VorbisFile_Static_Debug"
-# PROP Intermediate_Dir "VorbisFile_Static_Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "_WIN32" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"VorbisFile_Static_Debug\vorbisfile_static_d.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "vorbisfile_static - Win32 Release"
-# Name "vorbisfile_static - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\lib\vorbisfile.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# End Target
-# End Project