summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-03-30 11:12:15 +0000
committerBenny Prijono <bennylp@teluu.com>2007-03-30 11:12:15 +0000
commit4ad063a958568c9a5e1abb77f0494537abda2c96 (patch)
tree7c8aa98ecff5193e7b89e6f44697b9f7538d59b3
parent505bdd0749644afe5f608c87782843e96a41d5fa (diff)
Deleted speex from 3rdparty (will use svn:external instead)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1117 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--3rdparty/speex/.cvsignore17
-rw-r--r--3rdparty/speex/AUTHORS18
-rw-r--r--3rdparty/speex/COPYING34
-rw-r--r--3rdparty/speex/ChangeLog21
-rw-r--r--3rdparty/speex/Doxyfile225
-rw-r--r--3rdparty/speex/IDEAS4
-rw-r--r--3rdparty/speex/INSTALL8
-rw-r--r--3rdparty/speex/Makefile.am21
-rw-r--r--3rdparty/speex/NEWS1
-rw-r--r--3rdparty/speex/OPTIMIZE10
-rw-r--r--3rdparty/speex/README9
-rw-r--r--3rdparty/speex/README.TI-DSP56
-rw-r--r--3rdparty/speex/README.Trimedia191
-rw-r--r--3rdparty/speex/README.blackfin21
-rw-r--r--3rdparty/speex/README.symbian43
-rw-r--r--3rdparty/speex/README.win3211
-rw-r--r--3rdparty/speex/Speex.kdevelop180
-rw-r--r--3rdparty/speex/Speex.spec.in70
-rw-r--r--3rdparty/speex/TODO53
-rw-r--r--3rdparty/speex/acinclude.m4102
-rwxr-xr-x3rdparty/speex/autogen.sh122
-rw-r--r--3rdparty/speex/configure.ac209
-rw-r--r--3rdparty/speex/doc/.cvsignore2
-rw-r--r--3rdparty/speex/doc/Makefile.am5
-rw-r--r--3rdparty/speex/doc/celp_decoder.eps688
-rw-r--r--3rdparty/speex/doc/celp_decoder.odgbin10765 -> 0 bytes
-rw-r--r--3rdparty/speex/doc/draft-herlein-avt-rtp-speex-00.txt699
-rw-r--r--3rdparty/speex/doc/draft-herlein-speex-rtp-profile-02.txt841
-rw-r--r--3rdparty/speex/doc/draft-herlein-speex-rtp-profile-03.txt1232
-rw-r--r--3rdparty/speex/doc/draft-herlein-speex-rtp-profile-03.xml815
-rw-r--r--3rdparty/speex/doc/draft-ietf-avt-rtp-speex-00.txt784
-rw-r--r--3rdparty/speex/doc/echo_path.eps1298
-rw-r--r--3rdparty/speex/doc/echo_path.odgbin29078 -> 0 bytes
-rw-r--r--3rdparty/speex/doc/manual.lyx8361
-rw-r--r--3rdparty/speex/doc/manual.pdfbin415934 -> 0 bytes
-rw-r--r--3rdparty/speex/doc/programming.html125
-rw-r--r--3rdparty/speex/doc/ref_shaping.eps2045
-rw-r--r--3rdparty/speex/doc/rtp.txt76
-rw-r--r--3rdparty/speex/doc/sampledec.c65
-rw-r--r--3rdparty/speex/doc/sampleenc.c64
-rw-r--r--3rdparty/speex/doc/speex_abs.eps3022
-rw-r--r--3rdparty/speex/doc/speex_abs.odgbin86072 -> 0 bytes
-rw-r--r--3rdparty/speex/doc/speex_analysis.eps744
-rw-r--r--3rdparty/speex/doc/speex_analysis.odgbin16581 -> 0 bytes
-rw-r--r--3rdparty/speex/html/index.html215
-rw-r--r--3rdparty/speex/html/patents.html39
-rw-r--r--3rdparty/speex/html/speex.pngbin4470 -> 0 bytes
-rw-r--r--3rdparty/speex/html/speex.webprj7
-rw-r--r--3rdparty/speex/html/speex.xcfbin24879 -> 0 bytes
-rw-r--r--3rdparty/speex/include/Makefile.am2
-rw-r--r--3rdparty/speex/include/speex/Makefile.am16
-rw-r--r--3rdparty/speex/include/speex/speex.h425
-rw-r--r--3rdparty/speex/include/speex/speex_bits.h171
-rw-r--r--3rdparty/speex/include/speex/speex_callbacks.h134
-rw-r--r--3rdparty/speex/include/speex/speex_config_types.h.in11
-rw-r--r--3rdparty/speex/include/speex/speex_echo.h123
-rw-r--r--3rdparty/speex/include/speex/speex_header.h91
-rw-r--r--3rdparty/speex/include/speex/speex_jitter.h192
-rw-r--r--3rdparty/speex/include/speex/speex_preprocess.h186
-rw-r--r--3rdparty/speex/include/speex/speex_resampler.h309
-rw-r--r--3rdparty/speex/include/speex/speex_stereo.h82
-rw-r--r--3rdparty/speex/include/speex/speex_types.h126
-rw-r--r--3rdparty/speex/libspeex/.cvsignore11
-rw-r--r--3rdparty/speex/libspeex/Makefile.am42
-rw-r--r--3rdparty/speex/libspeex/_kiss_fft_guts.h160
-rw-r--r--3rdparty/speex/libspeex/arch.h197
-rw-r--r--3rdparty/speex/libspeex/bits.c363
-rw-r--r--3rdparty/speex/libspeex/cb_search.c608
-rw-r--r--3rdparty/speex/libspeex/cb_search.h103
-rw-r--r--3rdparty/speex/libspeex/cb_search_arm4.h137
-rw-r--r--3rdparty/speex/libspeex/cb_search_bfin.h112
-rw-r--r--3rdparty/speex/libspeex/cb_search_sse.h84
-rw-r--r--3rdparty/speex/libspeex/echo_diagnostic.m72
-rw-r--r--3rdparty/speex/libspeex/exc_10_16_table.c50
-rw-r--r--3rdparty/speex/libspeex/exc_10_32_table.c66
-rw-r--r--3rdparty/speex/libspeex/exc_20_32_table.c66
-rw-r--r--3rdparty/speex/libspeex/exc_5_256_table.c290
-rw-r--r--3rdparty/speex/libspeex/exc_5_64_table.c98
-rw-r--r--3rdparty/speex/libspeex/exc_8_128_table.c162
-rw-r--r--3rdparty/speex/libspeex/fftwrap.c287
-rw-r--r--3rdparty/speex/libspeex/fftwrap.h58
-rw-r--r--3rdparty/speex/libspeex/filterbank.c226
-rw-r--r--3rdparty/speex/libspeex/filterbank.h66
-rw-r--r--3rdparty/speex/libspeex/filters.c821
-rw-r--r--3rdparty/speex/libspeex/filters.h90
-rw-r--r--3rdparty/speex/libspeex/filters_arm4.h97
-rw-r--r--3rdparty/speex/libspeex/filters_bfin.h515
-rw-r--r--3rdparty/speex/libspeex/filters_sse.h336
-rw-r--r--3rdparty/speex/libspeex/fixed_arm4.h148
-rw-r--r--3rdparty/speex/libspeex/fixed_arm5e.h178
-rw-r--r--3rdparty/speex/libspeex/fixed_bfin.h173
-rw-r--r--3rdparty/speex/libspeex/fixed_debug.h487
-rw-r--r--3rdparty/speex/libspeex/fixed_generic.h106
-rw-r--r--3rdparty/speex/libspeex/gain_table.c160
-rw-r--r--3rdparty/speex/libspeex/gain_table_lbr.c64
-rw-r--r--3rdparty/speex/libspeex/hexc_10_32_table.c66
-rw-r--r--3rdparty/speex/libspeex/hexc_table.c162
-rw-r--r--3rdparty/speex/libspeex/high_lsp_tables.c163
-rw-r--r--3rdparty/speex/libspeex/jitter.c627
-rw-r--r--3rdparty/speex/libspeex/kiss_fft.c522
-rw-r--r--3rdparty/speex/libspeex/kiss_fft.h108
-rw-r--r--3rdparty/speex/libspeex/kiss_fftr.c296
-rw-r--r--3rdparty/speex/libspeex/kiss_fftr.h51
-rw-r--r--3rdparty/speex/libspeex/lbr_48k_tables.c678
-rw-r--r--3rdparty/speex/libspeex/lpc.c201
-rw-r--r--3rdparty/speex/libspeex/lpc.h53
-rw-r--r--3rdparty/speex/libspeex/lpc_bfin.h131
-rw-r--r--3rdparty/speex/libspeex/lsp.c656
-rw-r--r--3rdparty/speex/libspeex/lsp.h64
-rw-r--r--3rdparty/speex/libspeex/lsp_bfin.h89
-rw-r--r--3rdparty/speex/libspeex/lsp_tables_nb.c360
-rw-r--r--3rdparty/speex/libspeex/ltp.c846
-rw-r--r--3rdparty/speex/libspeex/ltp.h141
-rw-r--r--3rdparty/speex/libspeex/ltp_arm4.h188
-rw-r--r--3rdparty/speex/libspeex/ltp_bfin.h419
-rw-r--r--3rdparty/speex/libspeex/ltp_sse.h92
-rw-r--r--3rdparty/speex/libspeex/math_approx.c291
-rw-r--r--3rdparty/speex/libspeex/math_approx.h62
-rw-r--r--3rdparty/speex/libspeex/mdf.c1176
-rw-r--r--3rdparty/speex/libspeex/medfilter.c97
-rw-r--r--3rdparty/speex/libspeex/medfilter.h51
-rw-r--r--3rdparty/speex/libspeex/misc.c194
-rw-r--r--3rdparty/speex/libspeex/misc.h119
-rw-r--r--3rdparty/speex/libspeex/misc_bfin.h54
-rw-r--r--3rdparty/speex/libspeex/modes.c668
-rw-r--r--3rdparty/speex/libspeex/modes.h166
-rw-r--r--3rdparty/speex/libspeex/nb_celp.c2049
-rw-r--r--3rdparty/speex/libspeex/nb_celp.h205
-rw-r--r--3rdparty/speex/libspeex/preprocess.c1172
-rw-r--r--3rdparty/speex/libspeex/pseudofloat.h378
-rw-r--r--3rdparty/speex/libspeex/quant_lsp.c447
-rw-r--r--3rdparty/speex/libspeex/quant_lsp.h83
-rw-r--r--3rdparty/speex/libspeex/quant_lsp_bfin.h165
-rw-r--r--3rdparty/speex/libspeex/resample.c1014
-rw-r--r--3rdparty/speex/libspeex/sb_celp.c1480
-rw-r--r--3rdparty/speex/libspeex/sb_celp.h155
-rw-r--r--3rdparty/speex/libspeex/smallft.c1260
-rw-r--r--3rdparty/speex/libspeex/smallft.h46
-rw-r--r--3rdparty/speex/libspeex/speex.c268
-rw-r--r--3rdparty/speex/libspeex/speex_callbacks.c140
-rw-r--r--3rdparty/speex/libspeex/speex_header.c166
-rw-r--r--3rdparty/speex/libspeex/stack_alloc.h124
-rw-r--r--3rdparty/speex/libspeex/stereo.c192
-rw-r--r--3rdparty/speex/libspeex/testdenoise.c44
-rw-r--r--3rdparty/speex/libspeex/testecho.c53
-rw-r--r--3rdparty/speex/libspeex/testenc.c142
-rw-r--r--3rdparty/speex/libspeex/testenc_uwb.c137
-rw-r--r--3rdparty/speex/libspeex/testenc_wb.c143
-rw-r--r--3rdparty/speex/libspeex/testresample.c86
-rw-r--r--3rdparty/speex/libspeex/vbr.c272
-rw-r--r--3rdparty/speex/libspeex/vbr.h70
-rw-r--r--3rdparty/speex/libspeex/vorbis_psy.c508
-rw-r--r--3rdparty/speex/libspeex/vorbis_psy.h97
-rw-r--r--3rdparty/speex/libspeex/vq.c170
-rw-r--r--3rdparty/speex/libspeex/vq.h55
-rw-r--r--3rdparty/speex/libspeex/vq_arm4.h115
-rw-r--r--3rdparty/speex/libspeex/vq_bfin.h107
-rw-r--r--3rdparty/speex/libspeex/vq_sse.h120
-rw-r--r--3rdparty/speex/libspeex/window.c94
-rw-r--r--3rdparty/speex/macosx/English.lproj/InfoPlist.stringsbin140 -> 0 bytes
-rw-r--r--3rdparty/speex/macosx/Info.plist30
-rw-r--r--3rdparty/speex/macosx/Speex.xcodeproj/project.pbxproj753
-rw-r--r--3rdparty/speex/macosx/Speex_Prefix.pch5
-rw-r--r--3rdparty/speex/macosx/Speex_UB.xcodeproj/project.pbxproj604
-rw-r--r--3rdparty/speex/speex.m4104
-rw-r--r--3rdparty/speex/speex.pc.in14
-rw-r--r--3rdparty/speex/speexclient/README18
-rw-r--r--3rdparty/speex/speexclient/alsa_device.c431
-rw-r--r--3rdparty/speex/speexclient/alsa_device.h69
-rwxr-xr-x3rdparty/speex/speexclient/compile.sh3
-rw-r--r--3rdparty/speex/speexclient/speexclient.c249
-rw-r--r--3rdparty/speex/src/.cvsignore3
-rw-r--r--3rdparty/speex/src/Makefile.am26
-rw-r--r--3rdparty/speex/src/getopt.c1047
-rw-r--r--3rdparty/speex/src/getopt1.c188
-rw-r--r--3rdparty/speex/src/getopt_win.h169
-rw-r--r--3rdparty/speex/src/skeleton.c188
-rw-r--r--3rdparty/speex/src/skeleton.h78
-rw-r--r--3rdparty/speex/src/speexdec.178
-rw-r--r--3rdparty/speex/src/speexdec.c796
-rw-r--r--3rdparty/speex/src/speexenc.1105
-rw-r--r--3rdparty/speex/src/speexenc.c981
-rw-r--r--3rdparty/speex/src/wav_io.c263
-rw-r--r--3rdparty/speex/src/wav_io.h46
-rw-r--r--3rdparty/speex/src/wave_out.c220
-rw-r--r--3rdparty/speex/src/wave_out.h71
-rw-r--r--3rdparty/speex/symbian/Makefile.am6
-rw-r--r--3rdparty/speex/symbian/bld.inf49
-rw-r--r--3rdparty/speex/symbian/config.h57
-rw-r--r--3rdparty/speex/symbian/speex.mmp45
-rw-r--r--3rdparty/speex/ti/Makefile.am9
-rw-r--r--3rdparty/speex/ti/config.h73
-rw-r--r--3rdparty/speex/ti/speex_C54_test/Makefile.am8
-rw-r--r--3rdparty/speex/ti/speex_C54_test/speex_C54_test.cmd71
-rw-r--r--3rdparty/speex/ti/speex_C54_test/speex_C54_test.pjt61
-rw-r--r--3rdparty/speex/ti/speex_C55_test/Makefile.am6
-rw-r--r--3rdparty/speex/ti/speex_C55_test/speex_C55_test.cmd65
-rw-r--r--3rdparty/speex/ti/speex_C55_test/speex_C55_test.pjt61
-rw-r--r--3rdparty/speex/ti/speex_C64_test/Makefile.am6
-rw-r--r--3rdparty/speex/ti/speex_C64_test/speex_C64_test.cmd59
-rw-r--r--3rdparty/speex/ti/speex_C64_test/speex_C64_test.pjt62
-rw-r--r--3rdparty/speex/ti/testenc-TI-C5x.c287
-rw-r--r--3rdparty/speex/ti/testenc-TI-C64x.c242
-rw-r--r--3rdparty/speex/ti/user_misc.h127
-rw-r--r--3rdparty/speex/tmv/_kiss_fft_guts_tm.h188
-rw-r--r--3rdparty/speex/tmv/cb_search_tm.h149
-rw-r--r--3rdparty/speex/tmv/config.h98
-rw-r--r--3rdparty/speex/tmv/fftwrap_tm.h233
-rw-r--r--3rdparty/speex/tmv/filterbank_tm.h289
-rw-r--r--3rdparty/speex/tmv/filters_tm.h1521
-rw-r--r--3rdparty/speex/tmv/fixed_tm.h100
-rw-r--r--3rdparty/speex/tmv/kiss_fft_tm.h599
-rw-r--r--3rdparty/speex/tmv/kiss_fftr_tm.h235
-rw-r--r--3rdparty/speex/tmv/lpc_tm.h150
-rw-r--r--3rdparty/speex/tmv/lsp_tm.h310
-rw-r--r--3rdparty/speex/tmv/ltp_tm.h479
-rw-r--r--3rdparty/speex/tmv/mdf_tm.h1192
-rw-r--r--3rdparty/speex/tmv/misc_tm.h92
-rw-r--r--3rdparty/speex/tmv/preprocess_tm.h1135
-rw-r--r--3rdparty/speex/tmv/profile_tm.h407
-rw-r--r--3rdparty/speex/tmv/quant_lsp_tm.h448
-rw-r--r--3rdparty/speex/tmv/speex_config_types.h31
-rw-r--r--3rdparty/speex/tmv/vq_tm.h494
-rw-r--r--3rdparty/speex/win32/Makefile.am8
-rw-r--r--3rdparty/speex/win32/VS2003/Makefile.am8
-rw-r--r--3rdparty/speex/win32/VS2003/libspeex/Makefile.am8
-rw-r--r--3rdparty/speex/win32/VS2003/libspeex/libspeex.def108
-rw-r--r--3rdparty/speex/win32/VS2003/libspeex/libspeex.vcproj481
-rw-r--r--3rdparty/speex/win32/VS2003/speexdec/Makefile.am8
-rw-r--r--3rdparty/speex/win32/VS2003/speexdec/speexdec.vcproj292
-rw-r--r--3rdparty/speex/win32/VS2003/speexenc/Makefile.am8
-rw-r--r--3rdparty/speex/win32/VS2003/speexenc/speexenc.vcproj292
-rw-r--r--3rdparty/speex/win32/VS2005/Makefile.am8
-rw-r--r--3rdparty/speex/win32/VS2005/libspeex/Makefile.am8
-rw-r--r--3rdparty/speex/win32/VS2005/libspeex/libspeex.vcproj1692
-rw-r--r--3rdparty/speex/win32/VS2005/speexdec/Makefile.am8
-rw-r--r--3rdparty/speex/win32/VS2005/speexdec/speexdec.vcproj430
-rw-r--r--3rdparty/speex/win32/VS2005/speexenc/Makefile.am8
-rw-r--r--3rdparty/speex/win32/VS2005/speexenc/speexenc.vcproj430
-rw-r--r--3rdparty/speex/win32/config.h3
-rw-r--r--3rdparty/speex/win32/libspeex/Makefile.am6
-rw-r--r--3rdparty/speex/win32/libspeex/libspeex.dsp302
-rw-r--r--3rdparty/speex/win32/libspeex/libspeex.dsw41
-rw-r--r--3rdparty/speex/win32/libspeex/libspeex_dynamic.dsp311
-rw-r--r--3rdparty/speex/win32/libspeex/speex.def72
-rw-r--r--3rdparty/speex/win32/speex.iss47
-rw-r--r--3rdparty/speex/win32/speexdec/Makefile.am6
-rw-r--r--3rdparty/speex/win32/speexdec/speexdec.dsp130
-rw-r--r--3rdparty/speex/win32/speexdec/speexdec.dsw59
-rw-r--r--3rdparty/speex/win32/speexenc/Makefile.am6
-rw-r--r--3rdparty/speex/win32/speexenc/speexenc.dsp122
-rw-r--r--3rdparty/speex/win32/speexenc/speexenc.dsw59
252 files changed, 0 insertions, 72146 deletions
diff --git a/3rdparty/speex/.cvsignore b/3rdparty/speex/.cvsignore
deleted file mode 100644
index 0c6bca2d..00000000
--- a/3rdparty/speex/.cvsignore
+++ /dev/null
@@ -1,17 +0,0 @@
-Makefile
-Makefile.in
-Speex.spec
-aclocal.m4
-autom4te.cache
-config.guess
-config.log
-config.status
-config.sub
-configure
-depcomp
-install-sh
-libtool
-ltconfig
-ltmain.sh
-missing
-mkinstalldirs
diff --git a/3rdparty/speex/AUTHORS b/3rdparty/speex/AUTHORS
deleted file mode 100644
index 395c3fec..00000000
--- a/3rdparty/speex/AUTHORS
+++ /dev/null
@@ -1,18 +0,0 @@
-Jean-Marc Valin <jean-marc.valin@usherbrooke.ca>
- All the code except the following
-
-David Rowe <david@rowetel.com>
- lsp.c lsp.h
- Also ideas and feedback
-
-John Francis Edwards
- wave_out.[ch], some #ifdefs for windows port and MSVC project files
-
-Segher Boessenkool
- Misc. optimizations (for QMF in particular)
-
-Atsuhiko Yamanaka <ymnk@jcraft.com>:
- Patch to speexenc.c to add Vorbis comment format
-
-Radim Kolar <hsn@cybermail.net>:
- Patch to speexenc.c for supporting more input formats
diff --git a/3rdparty/speex/COPYING b/3rdparty/speex/COPYING
deleted file mode 100644
index 3b6b579c..00000000
--- a/3rdparty/speex/COPYING
+++ /dev/null
@@ -1,34 +0,0 @@
-Copyright 2002-2006
- Xiph.org Foundation
- Jean-Marc Valin
- David Rowe
- EpicGames
- Analog Devices
- Commonwealth Scientific and Industrial Research Organisation (CSIRO)
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-- Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-
-- Neither the name of the Xiph.org Foundation nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/3rdparty/speex/ChangeLog b/3rdparty/speex/ChangeLog
deleted file mode 100644
index 9a6cd8af..00000000
--- a/3rdparty/speex/ChangeLog
+++ /dev/null
@@ -1,21 +0,0 @@
-2005-09-07 Thomas Vander Stichele <thomas at apestaart dot org>
-
- * libspeex/cb_search.c: (split_cb_search_shape_sign_N1):
- add declaration for n, seems like an obvious build fix, slap
- me down if it's not
-
-2004-02-18 Jean-Marc Valin <jean-marc.valin@usherbrooke.ca>
- Patch for compiling with mingw32 sent by j@thing.net
-
-2004-02-18 Jean-Marc Valin <jean-marc.valin@usherbrooke.ca>
- Integrated IRIX patch (getopt stuff) from Michael Pruett <michael@68k.org>
-
-2004-02-18 Jean-Marc Valin <jean-marc.valin@usherbrooke.ca>
- Changed the Makefile.am so that KDevelop can parse SUBDIRS correctly
-
-2002/03/27 Jean-Marc Valin:
-Working encoder and decoder for both narrowband and wideband.
-
-2002/02/27 Jean-Marc Valin:
-Got the basic encoder working as a demo with quantization only on some
-parameters.
diff --git a/3rdparty/speex/Doxyfile b/3rdparty/speex/Doxyfile
deleted file mode 100644
index 772934fc..00000000
--- a/3rdparty/speex/Doxyfile
+++ /dev/null
@@ -1,225 +0,0 @@
-# Doxyfile 1.5.1-KDevelop
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = Speex
-PROJECT_NUMBER = 1.2-beta2
-OUTPUT_DIRECTORY = doc
-CREATE_SUBDIRS = NO
-OUTPUT_LANGUAGE = English
-USE_WINDOWS_ENCODING = NO
-BRIEF_MEMBER_DESC = YES
-REPEAT_BRIEF = YES
-ABBREVIATE_BRIEF =
-ALWAYS_DETAILED_SEC = NO
-INLINE_INHERITED_MEMB = NO
-FULL_PATH_NAMES = NO
-STRIP_FROM_PATH =
-STRIP_FROM_INC_PATH =
-SHORT_NAMES = NO
-JAVADOC_AUTOBRIEF = NO
-MULTILINE_CPP_IS_BRIEF = NO
-DETAILS_AT_TOP = NO
-INHERIT_DOCS = YES
-SEPARATE_MEMBER_PAGES = NO
-TAB_SIZE = 8
-ALIASES =
-OPTIMIZE_OUTPUT_FOR_C = NO
-OPTIMIZE_OUTPUT_JAVA = NO
-BUILTIN_STL_SUPPORT = NO
-DISTRIBUTE_GROUP_DOC = NO
-SUBGROUPING = YES
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-EXTRACT_ALL = NO
-EXTRACT_PRIVATE = NO
-EXTRACT_STATIC = NO
-EXTRACT_LOCAL_CLASSES = YES
-EXTRACT_LOCAL_METHODS = NO
-HIDE_UNDOC_MEMBERS = NO
-HIDE_UNDOC_CLASSES = NO
-HIDE_FRIEND_COMPOUNDS = NO
-HIDE_IN_BODY_DOCS = NO
-INTERNAL_DOCS = NO
-CASE_SENSE_NAMES = YES
-HIDE_SCOPE_NAMES = NO
-SHOW_INCLUDE_FILES = YES
-INLINE_INFO = YES
-SORT_MEMBER_DOCS = YES
-SORT_BRIEF_DOCS = NO
-SORT_BY_SCOPE_NAME = NO
-GENERATE_TODOLIST = YES
-GENERATE_TESTLIST = YES
-GENERATE_BUGLIST = YES
-GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS =
-MAX_INITIALIZER_LINES = 30
-SHOW_USED_FILES = YES
-SHOW_DIRECTORIES = YES
-FILE_VERSION_FILTER =
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET = NO
-WARNINGS = YES
-WARN_IF_UNDOCUMENTED = YES
-WARN_IF_DOC_ERROR = YES
-WARN_NO_PARAMDOC = NO
-WARN_FORMAT = "$file:$line: $text"
-WARN_LOGFILE =
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = include/speex
-FILE_PATTERNS =
-RECURSIVE = NO
-EXCLUDE =
-EXCLUDE_SYMLINKS = NO
-EXCLUDE_PATTERNS = speex_config_types.h
-EXAMPLE_PATH =
-EXAMPLE_PATTERNS =
-EXAMPLE_RECURSIVE = NO
-IMAGE_PATH =
-INPUT_FILTER =
-FILTER_PATTERNS =
-FILTER_SOURCE_FILES = NO
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER = NO
-INLINE_SOURCES = NO
-STRIP_CODE_COMMENTS = YES
-REFERENCED_BY_RELATION = YES
-REFERENCES_RELATION = YES
-REFERENCES_LINK_SOURCE = YES
-USE_HTAGS = NO
-VERBATIM_HEADERS = YES
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX = NO
-COLS_IN_ALPHA_INDEX = 5
-IGNORE_PREFIX =
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-GENERATE_HTML = YES
-HTML_OUTPUT = html
-HTML_FILE_EXTENSION = .html
-HTML_HEADER =
-HTML_FOOTER =
-HTML_STYLESHEET =
-HTML_ALIGN_MEMBERS = YES
-GENERATE_HTMLHELP = NO
-CHM_FILE =
-HHC_LOCATION =
-GENERATE_CHI = NO
-BINARY_TOC = NO
-TOC_EXPAND = NO
-DISABLE_INDEX = NO
-ENUM_VALUES_PER_LINE = 4
-GENERATE_TREEVIEW = NO
-TREEVIEW_WIDTH = 250
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-GENERATE_LATEX = YES
-LATEX_OUTPUT = latex
-LATEX_CMD_NAME = latex
-MAKEINDEX_CMD_NAME = makeindex
-COMPACT_LATEX = NO
-PAPER_TYPE = a4wide
-EXTRA_PACKAGES =
-LATEX_HEADER =
-PDF_HYPERLINKS = YES
-USE_PDFLATEX = YES
-LATEX_BATCHMODE = NO
-LATEX_HIDE_INDICES = NO
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-GENERATE_RTF = NO
-RTF_OUTPUT = rtf
-COMPACT_RTF = NO
-RTF_HYPERLINKS = NO
-RTF_STYLESHEET_FILE =
-RTF_EXTENSIONS_FILE =
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-GENERATE_MAN = NO
-MAN_OUTPUT = man
-MAN_EXTENSION = .3
-MAN_LINKS = NO
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-GENERATE_XML = NO
-XML_OUTPUT = xml
-XML_SCHEMA =
-XML_DTD =
-XML_PROGRAMLISTING = YES
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF = NO
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD = NO
-PERLMOD_LATEX = NO
-PERLMOD_PRETTY = YES
-PERLMOD_MAKEVAR_PREFIX =
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING = YES
-MACRO_EXPANSION = NO
-EXPAND_ONLY_PREDEF = NO
-SEARCH_INCLUDES = YES
-INCLUDE_PATH =
-INCLUDE_FILE_PATTERNS =
-PREDEFINED =
-EXPAND_AS_DEFINED =
-SKIP_FUNCTION_MACROS = YES
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-TAGFILES =
-GENERATE_TAGFILE =
-ALLEXTERNALS = NO
-EXTERNAL_GROUPS = YES
-PERL_PATH = /usr/bin/perl
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-CLASS_DIAGRAMS = YES
-HIDE_UNDOC_RELATIONS = YES
-HAVE_DOT = NO
-CLASS_GRAPH = YES
-COLLABORATION_GRAPH = YES
-GROUP_GRAPHS = YES
-UML_LOOK = NO
-TEMPLATE_RELATIONS = YES
-INCLUDE_GRAPH = YES
-INCLUDED_BY_GRAPH = YES
-CALL_GRAPH = NO
-CALLER_GRAPH = NO
-GRAPHICAL_HIERARCHY = YES
-DIRECTORY_GRAPH = YES
-DOT_IMAGE_FORMAT = gif
-DOT_PATH =
-DOTFILE_DIRS =
-MAX_DOT_GRAPH_WIDTH = 1024
-MAX_DOT_GRAPH_HEIGHT = 1024
-MAX_DOT_GRAPH_DEPTH = 0
-DOT_TRANSPARENT = NO
-DOT_MULTI_TARGETS = NO
-GENERATE_LEGEND = YES
-DOT_CLEANUP = YES
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine
-#---------------------------------------------------------------------------
-SEARCHENGINE = NO
diff --git a/3rdparty/speex/IDEAS b/3rdparty/speex/IDEAS
deleted file mode 100644
index 73fe26e7..00000000
--- a/3rdparty/speex/IDEAS
+++ /dev/null
@@ -1,4 +0,0 @@
-- Non-linear adaptive codebook (use exc[n]*|exc[n]| to reduce noise
- component in adaptive codebook excitation)
-
-- Include time-domain masking for VBR
diff --git a/3rdparty/speex/INSTALL b/3rdparty/speex/INSTALL
deleted file mode 100644
index a2482ca7..00000000
--- a/3rdparty/speex/INSTALL
+++ /dev/null
@@ -1,8 +0,0 @@
-Installing Speex is as easy as:
-
-% ./configure [--prefix=<install-path>]
-% make
-% make install
-
-Note that if you are using the code from SVN, you will need to run "autogen.sh"
-instead of "configure".
diff --git a/3rdparty/speex/Makefile.am b/3rdparty/speex/Makefile.am
deleted file mode 100644
index 5908efbc..00000000
--- a/3rdparty/speex/Makefile.am
+++ /dev/null
@@ -1,21 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# To disable automatic dependency tracking if using other tools than
-# gcc and gmake, add the option 'no-dependencies'
-AUTOMAKE_OPTIONS = 1.8
-
-m4datadir = $(datadir)/aclocal
-m4data_DATA = speex.m4
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = speex.pc
-
-EXTRA_DIST = Speex.spec Speex.spec.in Speex.kdevelop speex.m4 speex.pc.in README.blackfin README.symbian README.TI-DSP
-
-#Fools KDevelop into including all files
-SUBDIRS = libspeex include @src@ doc win32 symbian ti
-
-DIST_SUBDIRS = libspeex include src doc win32 symbian ti
-
-rpm: dist
- rpmbuild -ta ${PACKAGE}-${VERSION}.tar.gz
diff --git a/3rdparty/speex/NEWS b/3rdparty/speex/NEWS
deleted file mode 100644
index 9a995291..00000000
--- a/3rdparty/speex/NEWS
+++ /dev/null
@@ -1 +0,0 @@
-2002/02/13: Creation of the "Speex" project
diff --git a/3rdparty/speex/OPTIMIZE b/3rdparty/speex/OPTIMIZE
deleted file mode 100644
index d36f5f7d..00000000
--- a/3rdparty/speex/OPTIMIZE
+++ /dev/null
@@ -1,10 +0,0 @@
-Narrowband:
-
-- pitch_gain_search_3tap calls syn_filt_zero more times than it should (we're
-computing some things twice)
-
-Wideband
-
-- All narrowband optimizations apply
-- Lots of time spent in the codebook search. We could speed that up by using
- a hierarchical codebook
diff --git a/3rdparty/speex/README b/3rdparty/speex/README
deleted file mode 100644
index 84fe74ad..00000000
--- a/3rdparty/speex/README
+++ /dev/null
@@ -1,9 +0,0 @@
-See INSTALL file for instruction on how to install Speex.
-
-The Speex is a patent-free, Open Source/Free Software voice codec. Unlike other codecs like MP3 and Ogg Vorbis, Speex is designed to compress voice at bitrates in the 2-45 kbps range. Possible applications include VoIP, internet audio streaming, archiving of speech data (e.g. voice mail), and audio books. In some sense, it is meant to be complementary to the Ogg Vorbis codec.
-
-To use the Speex command line tools:
-
-% speexenc [options] input_file.wav compressed_file.spx
-
-% speexdec [options] compressed_file.spx output_file.wav
diff --git a/3rdparty/speex/README.TI-DSP b/3rdparty/speex/README.TI-DSP
deleted file mode 100644
index 74503eed..00000000
--- a/3rdparty/speex/README.TI-DSP
+++ /dev/null
@@ -1,56 +0,0 @@
-These are all of the changes and additions necessary to build a loopback application for the
-TI C6415, C5509A, or C5416 simulators using the TI Code Composer Studio (CCS) development system.
-A trial version of the tools can be downloaded from the TI website.
-
-This build runs 8kbps narrowband, with minimum complexity.
-
-Several changes are introduced in Speex 1.1.11 which are used in these applications:
-
-arch.h: Added switch for compilers not supporting "long long" (C55x does, C54x, CCS 2.x C64x does not)
-bits.c: Allow external definition for max buffer size, changed MAX_BYTES_PER_FRAME
- to MAX_CHARS_PER_FRAME for consistency
-misc.c: Added override switches to alloc routines, conditional include of user file "user_misc.h".
- These changes allow manual memory allocation rather than using heap
-
-The arch.h change allows operation with 2.x versions of Code Composer Studio.
-The bits.c change reduces the data memory usage.
-The misc.c change allows private memory allocation, for cases where it is not
-desirable to use the normal heap.
-
-Added files:
-
-testenc-TI-C5x.c (For C54x and C55x builds, derived from testenc.c,
- manual alloc, byte packing/unpacking added)
-testenc-TI-C64x.c (For C64x builds, derived from testenc.c, manual alloc, byte packing/unpacking added)
-
-config.h (not automatically generated, sets memory sizes, enables/disables manual alloc)
-user_misc.h (contains the manual memory alloc routines, with debug code to display mem usage)
-speex\speex_config_types.h (match Speex types to compiler types, not generated from types.in)
-
-speex_c54_test\speex_c54_test.cmd (C5416 linker command file)
-speex_c54_test\speex_c54_test.pjt (Code Composer Studio Project File )
-speex_c55_test\speex_c55_test.cmd (C5509A linker command file)
-speex_c55_test\speex_c55_test.pjt (Code Composer Studio Project File )
-speex_c64_test\speex_c64_test.cmd (C6415 linker command file)
-speex_c64_test\speex_c64_test.pjt (Code Composer Studio Project File )
-
-samples\male.snd
-
-Usage:
-1. Create a Speex 1.1.11 (or later) source tree.
-2. Edit the files testenc-TI-C5x.c and/or testenc-TI-C64x.c to change the hard-coded path
- for the test audio and data files.
- This build uses the file e:\speextrunktest\samples\male.snd.
- Note: This is a headerless 16-bit stereo audio file derived from the male.wav test file
- http://www.speex.org/samples/male.wav
-3. Edit the .pjt file with a text editor and change projdir or projectdir to the correct path
- (one place near the top of the file).
-4. Edit config.h if desired, to change the memory allocation method (calloc or manual),
- and to enable/disable debug prints for the memory allocation
- (this makes it easier to determine the required size).
-5. Run Code Composer Studio, and open the project for the desired target (e.g. speex_c55_test).
- Note that the correct simulator must be selected (in CCS Setup) before starting CCS.
-6. Build and run the simulation.
-
-Note that assembly optimizations will be required to run C54x in real time.
-There are no assembly optimizations in any of these builds.
diff --git a/3rdparty/speex/README.Trimedia b/3rdparty/speex/README.Trimedia
deleted file mode 100644
index c2db8dcc..00000000
--- a/3rdparty/speex/README.Trimedia
+++ /dev/null
@@ -1,191 +0,0 @@
-################# REMOVE warnings on trimedia compiler ##############################
-################# Not critical to compilation ##############################
-
-1. Change the following statements to remove warning for constant expression
-(i) mdf.c [if(0) --> #if 0]
-(ii) ltp.c [if(1) --> #if 1]
-(iii) preprocess.c [if(1) --> #if 1]
-(iv) sb_celp.c [if (SPEEX_SET_VBR_MAX_BITRATE<1) --> #if (SPEEX_SET_VBR_MAX_BITRATE<1)]
-
-2. add REMARK_ON macro to remove warning on not reference variable
--- uses (void)<variable> to remove warning on not referenced variable
--- #define REMARK_ON
--- (void)<variable>
--- #endif
--- search for REMARK_ON on the following files
-(i) jitter.c
-(ii) lsp.c
-(iii) ltp.c
-(iv) mdf.c
-(v) filters.c
-(vi) filterbank.c
-(vii) cb_search.c
-(viii) vq.c
-(ix) vbr.c
-(x) stereo.c
-(xi) speex_callbacks.c
-(xii) preprocess.c
-
-3. commented out the following in pseudofloat.h for unused variable
-//static const spx_float_t FLOAT_HALF = {16384,-15};
-
-4. commented out unused variable in nb_celp.c
-//spx_word16_t *sp; ***unused variable***
-//sp=out+offset; ***unused variable***
-//int submode; ***unused variable***
-// ***unused variable***
-// advance = submode = speex_bits_unpack_unsigned(bits, SB_SUBMODE_BITS);
-advance = speex_bits_unpack_unsigned(bits, SB_SUBMODE_BITS);
-// ***unused variable***
-//advance = submode = speex_bits_unpack_unsigned(bits, SB_SUBMODE_BITS);
-advance = speex_bits_unpack_unsigned(bits, SB_SUBMODE_BITS);
-// spx_word16_t *exc; ***unused variable***
-// exc=st->exc+offset; ***unused variable***
-
-5. commented out unused variable in vbr.c
-//int va; ***unused variable***
-//va = 0; ***unused variable***
-//va = 1; ***unused variable***
-
-6. added HAVE_CONFIG into medfilter.c
-
-################# Patches for trimedia compiler ##############################
-################# Critical to compilation ##############################
--- change the following in modes.c and speex.h as compiler does not support const * const...
-(i) modes.c
-#ifdef __TCS__
-const SpeexMode * speex_mode_list[SPEEX_NB_MODES] = {&speex_nb_mode, &speex_wb_mode, &speex_uwb_mode};
-#else
-const SpeexMode * const speex_mode_list[SPEEX_NB_MODES] = {&speex_nb_mode, &speex_wb_mode, &speex_uwb_mode};
-#endif
-
-(ii) speex.h
-#ifdef __TCS__
-extern const SpeexMode * speex_mode_list[SPEEX_NB_MODES];
-#else
-extern const SpeexMode * const speex_mode_list[SPEEX_NB_MODES];
-#endif
-
--- added the #elif defined (TM_ASM) to the following files for optimized codes
-(1) arch.h
-(2) cb_search.c
-(3) fftwrap.c
-(4) filterbank.c
-(5) filters.c
-(6) kiss_fft.c
-(7) kiss_fftr.c
-(8) lpc.c
-(9) lsp.c
-(10) ltp.c
-(11) mdf.c
-(12) misc.c
-(13) preprocess.c
-(14) quant_lsp.c
-(15) vq.c
-
--- reorder macro definations in quant_lsp.c
-#ifdef FIXED_POINT
-
-#define LSP_LINEAR(i) (SHL16(i+1,11))
-#define LSP_LINEAR_HIGH(i) (ADD16(MULT16_16_16(i,2560),6144))
-#define LSP_DIV_256(x) (SHL16((spx_word16_t)x, 5))
-#define LSP_DIV_512(x) (SHL16((spx_word16_t)x, 4))
-#define LSP_DIV_1024(x) (SHL16((spx_word16_t)x, 3))
-#define LSP_PI 25736
-
-#else
-
-#define LSP_LINEAR(i) (.25*(i)+.25)
-#define LSP_LINEAR_HIGH(i) (.3125*(i)+.75)
-#define LSP_SCALE 256.
-#define LSP_DIV_256(x) (0.0039062*(x))
-#define LSP_DIV_512(x) (0.0019531*(x))
-#define LSP_DIV_1024(x) (0.00097656*(x))
-#define LSP_PI M_PI
-
-#endif
-
-#ifdef BFIN_ASM
-#include "quant_lsp_bfin.h"
-#elif defined (TM_ASM)
-#include "quant_lsp_tm.h"
-#endif
-
--- added macro PREPROCESS_MDF_FLOAT to allow using of floating point
--- in mdf and preprocess while keeping fixed point in encoder/decoder
--- This is due to the fact that preprocess/mdf run faster on floating
--- point on trimedia
--- added the following 3 lines to the files below
-#ifdef PREPROCESS_MDF_FLOAT
-#undef FIXED_POINT
-#endif
-(1) mdf.c
-(2) preprocess.c
-(3) filterbank.c
-(4) fftwrap.c
-(5) kiss_fft.c
-(6) kiss_fftr.c
-
--- created a new USE_COMPACT_KISS_FFT for fftwrap.c and shifted defination
--- to config file so that user configure the usage of fft on config.h
--- TOEXPLORE:is it possible to share table between mdf/preprocess?
--- Introducing this macro made the following changes in C code
--- New macro to facilitate integration
-(grouping real/complex for dc and nyquist frequency seems to require a large
-amount of memory for mdf, therefore did not made the changes for that)
-(1) modify preprocess.c on init and destroy
-(2) modify mdf.c on init and destroy
-(3) shifted power_spectrum to fftwrap.c to share optimised code between
- preprocess.c and mdf.c
-
-################# NOTES ##############################
-(1) fixed point encoding/decoding is tested on narrowband
- - some of the QX fractions are packed together to
- (frac1 * a + frac2 * a) >> X (should be more accurate in rounding)
- instead of
- ((frac1 * a) >> X) + ((frac2 * a) >> X)
- will cause some different between optimized and unoptimized code.
- tried decoding/encoding optimized code on some audio files retains
- the clearity of the word
-
- - wideband/ultrawideband is not heavily tested yet
-
-(2) optimized fixed point code requires memory alignment
- - used config to debug on functions where memory is not align
-
-(3) floating point optimization for preprocess/mdf is tested
- fixed point is not tested yet (except fft/filterbank)
- Note (1) also applies to sround in fft for fixed point
- some optimization is provided for fixed point as it requires lesser
- memory compared to floating point.
-
-(4) unroll configurations provided to reduce code size if required
-
-(5) use profile options only if compiler profiling fails to work
-
-(6) can't include the makefile as it is close proprietary
-
-################# TODO:For Trimedia ##############################
-(1) Possible add TSSA wrapper for codec but don't think this can be open source.
-(2) Optimizations for fixed point in mdf/preprocess
-
-################# Added Files ##############################
-- _kiss_fft_guts_tm.h
-- cb_search_tm.h
-- fftwrap_tm.h
-- filterbank_tm.h
-- filters_tm.h
-- fixed_tm.h
-- kiss_fft_tm.h
-- kiss_fftr_tm.h
-- lpc_tm.h
-- lsp_tm.h
-- ltp_tm.h
-- mdf_tm.h
-- misc_tm.h
-- preprocess_tm.h
-- profile_tm.h
-- quant_lsp_tm.h
-- vq_tm.h
-- config.h
-- speex_config_types.h
diff --git a/3rdparty/speex/README.blackfin b/3rdparty/speex/README.blackfin
deleted file mode 100644
index 7e8d600a..00000000
--- a/3rdparty/speex/README.blackfin
+++ /dev/null
@@ -1,21 +0,0 @@
-Speex has been ported to the Blackfin DSP, for the STAMP development board.
-
-This port has been tested on the STAMP development board and requires the
-toolchain available at http://blackfin.uclinux.org/
-
-1/ In order to cross-compile for uClinux from the Speex tarball:
-
- ./configure --enable-blackfin-asm --enable-fixed-point --host=bfin-uclinux
- cd libspeex
- make
-
-The --enable-blackfin-asm option is not required, but it speeds up Speex by
-approximately a factor of two.
-
-2/ In order to cross-compile for uClinux from the Speex SVN:
-
- svn co http://svn.xiph.org/trunk/speex speex-trunk
- cd speex-trunk
- ./autogen.sh --enable-blackfin-asm --enable-fixed-point --host=bfin-uclinux
- cd libspeex
- make
diff --git a/3rdparty/speex/README.symbian b/3rdparty/speex/README.symbian
deleted file mode 100644
index a4f8d958..00000000
--- a/3rdparty/speex/README.symbian
+++ /dev/null
@@ -1,43 +0,0 @@
-Using Speex on Symbian OS
-Conrad Parker and Colin Ward, CSIRO Australia, July 2004
-
-
-Introduction
-------------
-
-The symbian/ directory contains the following files for Symbian's abuild tool:
-
- bld.inf Component definition file
- speex.mmp Project specification file
- config.h Configuration options for both emulator and device builds
-
-
-Developing applications for libspeex for Symbian OS
----------------------------------------------------
-
- Any references to the statically defined SpeexMode structures must be
- replaced by a call to a speex_lib_get_mode () for that mode.
-
- * References to the statically defined array speex_mode_list[modeID]
- must be replaced by a call to speex_lib_get_mode (modeID):
-
-- mode = speex_mode_list[modeID];
-+ mode = speex_lib_get_mode (modeID);
-
- * References to the statically defined mode structures must be replaced:
-
- SpeexMode * mode1, * mode2, * mode3;
-
-- mode1 = &speex_nb_mode;
-+ mode1 = speex_lib_get_mode (SPEEX_MODEID_NB);
-
-- mode2 = &speex_wb_mode;
-+ mode2 = speex_lib_get_mode (SPEEX_MODEID_WB);
-
-- mode3 = &speex_uwb_mode;
-+ mode3 = speex_lib_get_mode (SPEEX_MODEID_UWB);
-
- Note that the constants SPEEX_MODEID_NB, SPEEX_MODEID_WB and
- SPEEX_MODEID_UWB were introduced in libspeex 1.1.6, and are
- defined in <speex/speex.h>. speex_lib_get_mode() was introduced
- in libspeex 1.1.7 and is declared in <speex/speex.h>.
diff --git a/3rdparty/speex/README.win32 b/3rdparty/speex/README.win32
deleted file mode 100644
index 9f0c7b30..00000000
--- a/3rdparty/speex/README.win32
+++ /dev/null
@@ -1,11 +0,0 @@
-Win32 Specific options
-
-In order to enable the following options within Speex, you will need to manually edit the project options for the appropriate VC configuration. These macros can be specified by adding them as "Preprocessor Definitions" under the appropriate Configuration's project options. If you don't know how to do this, please check your Visual C documentation.
-
-Feature:
-
-Intel Streaming SIMD Extensions - SSE - macro: USE_SSE
-Fixed point - macro: FIXED_POINT
-Epic 48 - macro: EPIC_48K
-
-Note: USE_SSE and FIXED_POINT are mutually exclusive.
diff --git a/3rdparty/speex/Speex.kdevelop b/3rdparty/speex/Speex.kdevelop
deleted file mode 100644
index 46524c49..00000000
--- a/3rdparty/speex/Speex.kdevelop
+++ /dev/null
@@ -1,180 +0,0 @@
-<?xml version = '1.0'?>
-<kdevelop>
- <general>
- <author>Jean-Marc Valin</author>
- <email>jean-marc.valin@usherbrooke.ca</email>
- <version>$VERSION$</version>
- <projectmanagement>KDevAutoProject</projectmanagement>
- <primarylanguage>C</primarylanguage>
- <ignoreparts/>
- <projectdirectory>.</projectdirectory>
- <absoluteprojectpath>false</absoluteprojectpath>
- <description></description>
- <secondaryLanguages/>
- <versioncontrol>kdevsubversion</versioncontrol>
- <defaultencoding></defaultencoding>
- <projectname>Speex</projectname>
- </general>
- <kdevautoproject>
- <general>
- <activetarget>libspeex/libspeex.la</activetarget>
- <useconfiguration>default</useconfiguration>
- </general>
- <run>
- <mainprogram>src/Speex</mainprogram>
- <directoryradio>executable</directoryradio>
- <customdirectory>/</customdirectory>
- <programargs/>
- <terminal>false</terminal>
- <autocompile>true</autocompile>
- <envvars/>
- <autoinstall>false</autoinstall>
- <autokdesu>false</autokdesu>
- </run>
- <configurations>
- <optimized>
- <builddir>optimized</builddir>
- <ccompiler>GccOptions</ccompiler>
- <cxxcompiler>GppOptions</cxxcompiler>
- <f77compiler>G77Options</f77compiler>
- <cflags>-O2 -g0</cflags>
- </optimized>
- <debug>
- <configargs>--enable-debug=full</configargs>
- <builddir>debug</builddir>
- <ccompiler>GccOptions</ccompiler>
- <cxxcompiler>GppOptions</cxxcompiler>
- <f77compiler>G77Options</f77compiler>
- <cflags>-O0 -g3</cflags>
- </debug>
- <default>
- <envvars/>
- </default>
- </configurations>
- <make>
- <envvars>
- <envvar value="1" name="WANT_AUTOCONF_2_5" />
- <envvar value="1" name="WANT_AUTOMAKE_1_6" />
- </envvars>
- <abortonerror>false</abortonerror>
- <numberofjobs>4</numberofjobs>
- <dontact>false</dontact>
- <makebin/>
- <runmultiplejobs>true</runmultiplejobs>
- <prio>0</prio>
- </make>
- </kdevautoproject>
- <kdevdebugger>
- <general>
- <dbgshell>libtool</dbgshell>
- <programargs/>
- <gdbpath></gdbpath>
- <configGdbScript></configGdbScript>
- <runShellScript></runShellScript>
- <runGdbScript></runGdbScript>
- <breakonloadinglibs>true</breakonloadinglibs>
- <separatetty>false</separatetty>
- <floatingtoolbar>false</floatingtoolbar>
- </general>
- <display>
- <staticmembers>false</staticmembers>
- <demanglenames>true</demanglenames>
- <outputradix>10</outputradix>
- </display>
- </kdevdebugger>
- <kdevfilecreate>
- <filetypes/>
- <useglobaltypes>
- <type ext="c" />
- <type ext="h" />
- </useglobaltypes>
- </kdevfilecreate>
- <kdevcppsupport>
- <references/>
- <codecompletion>
- <includeGlobalFunctions>true</includeGlobalFunctions>
- <includeTypes>true</includeTypes>
- <includeEnums>true</includeEnums>
- <includeTypedefs>false</includeTypedefs>
- <automaticCodeCompletion>true</automaticCodeCompletion>
- <automaticArgumentsHint>true</automaticArgumentsHint>
- <automaticHeaderCompletion>true</automaticHeaderCompletion>
- <codeCompletionDelay>350</codeCompletionDelay>
- <argumentsHintDelay>400</argumentsHintDelay>
- <headerCompletionDelay>250</headerCompletionDelay>
- <showOnlyAccessibleItems>false</showOnlyAccessibleItems>
- <completionBoxItemOrder>0</completionBoxItemOrder>
- <howEvaluationContextMenu>true</howEvaluationContextMenu>
- <showCommentWithArgumentHint>true</showCommentWithArgumentHint>
- <statusBarTypeEvaluation>false</statusBarTypeEvaluation>
- <namespaceAliases>std=_GLIBCXX_STD;__gnu_cxx=std</namespaceAliases>
- <processPrimaryTypes>true</processPrimaryTypes>
- <processFunctionArguments>true</processFunctionArguments>
- <preProcessAllHeaders>false</preProcessAllHeaders>
- <parseMissingHeaders>false</parseMissingHeaders>
- <resolveIncludePaths>true</resolveIncludePaths>
- <alwaysParseInBackground>true</alwaysParseInBackground>
- <usePermanentCaching>true</usePermanentCaching>
- <alwaysIncludeNamespaces>true</alwaysIncludeNamespaces>
- <includePaths>.;</includePaths>
- </codecompletion>
- <qt>
- <used>false</used>
- <version>3</version>
- <root>/usr/share/qt3</root>
- <includestyle>3</includestyle>
- <designerintegration>EmbeddedKDevDesigner</designerintegration>
- <qmake>/usr/share/qt3/bin/qmake</qmake>
- <designer></designer>
- <designerpluginpaths/>
- </qt>
- <creategettersetter>
- <prefixGet></prefixGet>
- <prefixSet>set</prefixSet>
- <prefixVariable>m_,_</prefixVariable>
- <parameterName>theValue</parameterName>
- <inlineGet>true</inlineGet>
- <inlineSet>true</inlineSet>
- </creategettersetter>
- <splitheadersource>
- <enabled>true</enabled>
- <synchronize>true</synchronize>
- <orientation>Horizontal</orientation>
- </splitheadersource>
- </kdevcppsupport>
- <kdevfileview>
- <groups>
- <hidenonprojectfiles>false</hidenonprojectfiles>
- <hidenonlocation>false</hidenonlocation>
- </groups>
- <tree>
- <hidepatterns>*.o,*.lo,CVS</hidepatterns>
- <hidenonprojectfiles>true</hidenonprojectfiles>
- <showvcsfields>false</showvcsfields>
- </tree>
- </kdevfileview>
- <kdevdoctreeview>
- <projectdoc>
- <userdocDir>html/</userdocDir>
- <apidocDir>html/</apidocDir>
- </projectdoc>
- <ignoreqt_xml/>
- <ignoredoxygen/>
- <ignorekdocs/>
- <ignoretocs/>
- <ignoredevhelp/>
- </kdevdoctreeview>
- <cppsupportpart>
- <filetemplates>
- <interfacesuffix>.h</interfacesuffix>
- <implementationsuffix>.cpp</implementationsuffix>
- </filetemplates>
- </cppsupportpart>
- <kdevdocumentation>
- <projectdoc>
- <docsystem/>
- <docurl/>
- <usermanualurl/>
- </projectdoc>
- </kdevdocumentation>
-</kdevelop>
diff --git a/3rdparty/speex/Speex.spec.in b/3rdparty/speex/Speex.spec.in
deleted file mode 100644
index 416f4356..00000000
--- a/3rdparty/speex/Speex.spec.in
+++ /dev/null
@@ -1,70 +0,0 @@
-%define name @PACKAGE@
-%define ver @VERSION@
-%define rel 1
-
-Summary: An open-source, patent-free speech codec
-Name: %name
-Version: %ver
-Release: %rel
-License: BSD
-Group: Application/Devel
-Source: http://www.speex.org/download/%{name}-%{ver}.tar.gz
-URL: http://www.speex.org/
-Vendor: Speex
-Packager: Jean-Marc Valin (jean-marc.valin@usherbrooke.ca)
-BuildRoot: /var/tmp/%{name}-build-root
-Docdir: /usr/share/doc
-
-%description
-Speex is a patent-free audio codec designed especially for voice (unlike
-Vorbis which targets general audio) signals and providing good narrowband
-and wideband quality. This project aims to be complementary to the Vorbis
-codec.
-
-%package devel
-Summary: Speex development files
-Group: Development/Libraries
-Requires: %{name} = %{version}
-
-%description devel
-Speex development files.
-
-%changelog
-* Thu Oct 03 2002 Jean-Marc Valin
-- Added devel package inspired from PLD spec file
-
-* Tue Jul 30 2002 Fredrik Rambris <boost@users.sourceforge.net> 0.5.2
-- Added buildroot and docdir and ldconfig. Makes it builadble by non-roots
- and also doesn't write to actual library paths when building.
-
-%prep
-%setup
-
-%build
-export CFLAGS='-O3'
-./configure --prefix=/usr --enable-shared --enable-static
-make
-
-%install
-rm -rf $RPM_BUILD_ROOT
-make DESTDIR=$RPM_BUILD_ROOT install
-
-%post -p /sbin/ldconfig
-%postun -p /sbin/ldconfig
-
-%files
-%defattr(644,root,root,755)
-%doc COPYING AUTHORS ChangeLog NEWS README
-%doc doc/manual.pdf
-/usr/share/man/man1/speexenc.1*
-/usr/share/man/man1/speexdec.1*
-%attr(755,root,root) %{_bindir}/speex*
-%attr(755,root,root) %{_libdir}/libspeex*.so*
-
-%files devel
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libspeex*.la
-%{_includedir}/speex/speex*.h
-/usr/share/aclocal/speex.m4
-%{_libdir}/pkgconfig/speex.pc
-%{_libdir}/libspeex*.a
diff --git a/3rdparty/speex/TODO b/3rdparty/speex/TODO
deleted file mode 100644
index 924258a3..00000000
--- a/3rdparty/speex/TODO
+++ /dev/null
@@ -1,53 +0,0 @@
-For 1.2beta2:
-*Use full complex values for fft results?
-*get rid of crap that shouldn't be exposed in speex.h
-*Reduce wideband RAM requirements
-*Make foreground filter 16 bits in AEC.
-*Enable resampler in build
-*Add dumping of data for debug purposes.
-*remove wideband pseudo-stack
-*pitch prediction saturation to prevent NaN-based DoS attacks.
-*Fix jitter buffer
-
-speex_decoder_ctl() call to detect silence
-Complete resampler API (error codes)
-Fix resampler corner case
-Use lower sinc oversampling when down-sampling
-**Fix register issue on Blackfin
-Merge TriMedia stuff
-Make it possible to decode a "raw" packet with SpeexBits
-Control delay in new AEC API.
-
-Later:
-Do VAD properly
-Warning/error handling
---enable-{aec,preprocessor,jitter,resampler}
-
-
-Optimisations
-- Add restrict in a few places?
-- enable 4x4 version of pitch_xcorr()?
-
-Would be nice:
-Implement wideband split as IIR instead of QMF.
-
-Allocator override (speex_lib_ctl?)
-Better error handling
-Fixed-point:
- - Wideband
- - Jitter buffer
-Denoiser:
- - Better noise adaptation
-AGC:
- - Use median filtering instead of "non-linear mean"?
-
-Features
--Improve error handling (with perror-like call?)
-
-Standards
--Complete Speex RTP profile
--MIME type registration
-
-ideas:
-Peelable stream (double codebook, higher bands, stereo)
-LPC from spectral domain
diff --git a/3rdparty/speex/acinclude.m4 b/3rdparty/speex/acinclude.m4
deleted file mode 100644
index 0e1f1abf..00000000
--- a/3rdparty/speex/acinclude.m4
+++ /dev/null
@@ -1,102 +0,0 @@
-# Configure paths for libogg
-# Jack Moffitt <jack@icecast.org> 10-21-2000
-# Shamelessly stolen from Owen Taylor and Manish Singh
-
-dnl XIPH_PATH_OGG([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-dnl Test for libogg, and define OGG_CFLAGS and OGG_LIBS
-dnl
-AC_DEFUN([XIPH_PATH_OGG],
-[dnl
-dnl Get the cflags and libraries
-dnl
-AC_ARG_WITH(ogg,[ --with-ogg=PFX Prefix where libogg is installed (optional)], ogg_prefix="$withval", ogg_prefix="")
-AC_ARG_WITH(ogg-libraries,[ --with-ogg-libraries=DIR Directory where libogg library is installed (optional)], ogg_libraries="$withval", ogg_libraries="")
-AC_ARG_WITH(ogg-includes,[ --with-ogg-includes=DIR Directory where libogg header files are installed (optional)], ogg_includes="$withval", ogg_includes="")
-AC_ARG_ENABLE(oggtest, [ --disable-oggtest Do not try to compile and run a test Ogg program],, enable_oggtest=yes)
-
- if test "x$ogg_libraries" != "x" ; then
- OGG_LIBS="-L$ogg_libraries"
- elif test "x$ogg_prefix" != "x" ; then
- OGG_LIBS="-L$ogg_prefix/lib"
- elif test "x$prefix" != "xNONE" ; then
- OGG_LIBS="-L$prefix/lib"
- fi
-
- OGG_LIBS="$OGG_LIBS -logg"
-
- if test "x$ogg_includes" != "x" ; then
- OGG_CFLAGS="-I$ogg_includes"
- elif test "x$ogg_prefix" != "x" ; then
- OGG_CFLAGS="-I$ogg_prefix/include"
- elif test "x$prefix" != "xNONE"; then
- OGG_CFLAGS="-I$prefix/include"
- fi
-
- AC_MSG_CHECKING(for Ogg)
- 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." ])
- 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/3rdparty/speex/autogen.sh b/3rdparty/speex/autogen.sh
deleted file mode 100755
index bf650f2c..00000000
--- a/3rdparty/speex/autogen.sh
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/bin/sh
-# Run this to set up the build system: configure, makefiles, etc.
-# (based on the version in enlightenment's cvs)
-
-package="Speex"
-
-olddir=`pwd`
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-cd "$srcdir"
-DIE=0
-
-echo "checking for autoconf... "
-(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
-}
-
-VERSIONGREP="sed -e s/.*[^0-9\.]\([0-9]\.[0-9]\).*/\1/"
-VERSIONMKINT="sed -e s/[^0-9]//"
-
-# do we need automake?
-if test -r Makefile.am; then
- AM_OPTIONS=`fgrep AUTOMAKE_OPTIONS Makefile.am`
- AM_NEEDED=`echo $AM_OPTIONS | $VERSIONGREP`
- if test x"$AM_NEEDED" = "x$AM_OPTIONS"; then
- AM_NEEDED=""
- fi
- if test -z $AM_NEEDED; then
- echo -n "checking for automake... "
- AUTOMAKE=automake
- ACLOCAL=aclocal
- if ($AUTOMAKE --version < /dev/null > /dev/null 2>&1); then
- echo "yes"
- else
- echo "no"
- AUTOMAKE=
- fi
- else
- echo -n "checking for automake $AM_NEEDED or later... "
- for am in automake-$AM_NEEDED automake$AM_NEEDED \
- automake automake-1.7 automake-1.8 automake-1.9; do
- ($am --version < /dev/null > /dev/null 2>&1) || continue
- ver=`$am --version < /dev/null | head -n 1 | $VERSIONGREP | $VERSIONMKINT`
- verneeded=`echo $AM_NEEDED | $VERSIONMKINT`
- if test $ver -ge $verneeded; then
- AUTOMAKE=$am
- echo $AUTOMAKE
- break
- fi
- done
- test -z $AUTOMAKE && echo "no"
- echo -n "checking for aclocal $AM_NEEDED or later... "
- for ac in aclocal-$AM_NEEDED aclocal$AM_NEEDED \
- aclocal aclocal-1.7 aclocal-1.8 aclocal-1.9; do
- ($ac --version < /dev/null > /dev/null 2>&1) || continue
- ver=`$ac --version < /dev/null | head -n 1 | $VERSIONGREP | $VERSIONMKINT`
- verneeded=`echo $AM_NEEDED | $VERSIONMKINT`
- if test $ver -ge $verneeded; then
- ACLOCAL=$ac
- echo $ACLOCAL
- break
- fi
- done
- test -z $ACLOCAL && echo "no"
- fi
- test -z $AUTOMAKE || test -z $ACLOCAL && {
- echo
- echo "You must have automake 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/"
- exit 1
- }
-fi
-
-echo -n "checking for libtool... "
-for LIBTOOLIZE in libtoolize glibtoolize nope; do
- ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 && break
-done
-if test x$LIBTOOLIZE = xnope; then
- echo "nope."
- LIBTOOLIZE=libtoolize
-else
- echo $LIBTOOLIZE
-fi
-($LIBTOOLIZE --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 || exit 1
-echo " $LIBTOOLIZE --automake"
-$LIBTOOLIZE --automake || exit 1
-echo " autoheader"
-autoheader || exit 1
-echo " $AUTOMAKE --add-missing $AUTOMAKE_FLAGS"
-$AUTOMAKE --add-missing $AUTOMAKE_FLAGS || exit 1
-echo " autoconf"
-autoconf || exit 1
-
-cd $olddir
-$srcdir/configure --enable-maintainer-mode "$@" && echo
diff --git a/3rdparty/speex/configure.ac b/3rdparty/speex/configure.ac
deleted file mode 100644
index 114eef0e..00000000
--- a/3rdparty/speex/configure.ac
+++ /dev/null
@@ -1,209 +0,0 @@
-dnl Process this file with autoconf to produce a configure script. -*-m4-*-
-
-AC_INIT(libspeex/speex.c)
-
-AM_CONFIG_HEADER([config.h])
-
-SPEEX_MAJOR_VERSION=1
-SPEEX_MINOR_VERSION=1
-SPEEX_MICRO_VERSION=14
-SPEEX_EXTRA_VERSION=-svn
-#SPEEX_VERSION=
-SPEEX_VERSION=$SPEEX_MAJOR_VERSION.$SPEEX_MINOR_VERSION.$SPEEX_MICRO_VERSION$SPEEX_EXTRA_VERSION
-#SPEEX_VERSION="1.2beta1"
-
-SPEEX_LT_CURRENT=5
-SPEEX_LT_REVISION=0
-SPEEX_LT_AGE=4
-
-AC_SUBST(SPEEX_LT_CURRENT)
-AC_SUBST(SPEEX_LT_REVISION)
-AC_SUBST(SPEEX_LT_AGE)
-
-# For automake.
-VERSION=$SPEEX_VERSION
-PACKAGE=speex
-
-AC_SUBST(SPEEX_VERSION)
-
-AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
-AM_MAINTAINER_MODE
-
-AC_CANONICAL_HOST
-AM_PROG_LIBTOOL
-
-AC_C_BIGENDIAN
-AC_C_CONST
-AC_C_INLINE
-AC_C_RESTRICT
-
-
-AC_MSG_CHECKING(for C99 variable-size arrays)
-AC_TRY_COMPILE( , [
-int foo=10;
-int array[foo];
-],
-[has_var_arrays=yes;AC_DEFINE([VAR_ARRAYS], [], [Use C99 variable-size arrays])
-],
-has_var_arrays=no
-)
-AC_MSG_RESULT($has_var_arrays)
-
-AC_MSG_CHECKING(for alloca)
-AC_TRY_COMPILE( [#include <alloca.h>], [
-int foo=10;
-int *array = alloca(foo);
-],
-[
-has_alloca=yes;
-if test x$has_var_arrays = "xno" ; then
-AC_DEFINE([USE_ALLOCA], [], [Make use of alloca])
-fi
-],
-has_alloca=no
-)
-AC_MSG_RESULT($has_alloca)
-
-
-AC_CHECK_HEADERS(sys/soundcard.h sys/audioio.h)
-
-XIPH_PATH_OGG([src="src"], [src=""])
-AC_SUBST(src)
-
-AC_CHECK_LIB(m, sin)
-
-# Check for getopt_long; if not found, use included source.
-AC_CHECK_FUNCS([getopt_long],,
-[# FreeBSD has a gnugetopt library.
- AC_CHECK_LIB([gnugetopt],[getopt_long],
-[AC_DEFINE([HAVE_GETOPT_LONG])],
-[# Use the GNU replacement.
-AC_LIBOBJ(getopt)
-AC_LIBOBJ(getopt1)])])
-
-AC_CHECK_LIB(winmm, main)
-
-AC_DEFINE_UNQUOTED(SPEEX_VERSION, "${SPEEX_VERSION}", [Complete version string])
-AC_DEFINE_UNQUOTED(SPEEX_MAJOR_VERSION, ${SPEEX_MAJOR_VERSION}, [Version major])
-AC_DEFINE_UNQUOTED(SPEEX_MINOR_VERSION, ${SPEEX_MINOR_VERSION}, [Version minor])
-AC_DEFINE_UNQUOTED(SPEEX_MICRO_VERSION, ${SPEEX_MICRO_VERSION}, [Version micro])
-AC_DEFINE_UNQUOTED(SPEEX_EXTRA_VERSION, "${SPEEX_EXTRA_VERSION}", [Version extra])
-
-AC_ARG_ENABLE(wideband, [ --disable-wideband Disable wideband codec],
-[if test "$enableval" = no; then
- AC_DEFINE([DISABLE_WIDEBAND], , [Disable wideband codec])
-fi])
-
-AC_ARG_ENABLE(vorbis-psy, [ --enable-vorbis-psy Enable Vorbis-style psychoacoustics (EXPERIMENTAL)],
-[if test "$enableval" = yes; then
- AC_DEFINE([VORBIS_PSYCHO], , [Enable Vorbis-style psychoacoustics (EXPERIMENTAL)])
-fi])
-
-AC_ARG_ENABLE(valgrind, [ --enable-valgrind Enable valgrind extra checks],
-[if test "$enableval" = yes; then
- AC_DEFINE([ENABLE_VALGRIND], , [Enable valgrind extra checks])
-fi])
-
-AC_ARG_ENABLE(sse, [ --enable-sse Enable SSE support], [if test "$enableval" = yes; then
-AC_DEFINE([_USE_SSE], , [Enable SSE support])
-CFLAGS="$CFLAGS -O3 -msse"
-fi
-])
-
-AC_ARG_ENABLE(fixed-point, [ --enable-fixed-point Compile as fixed-point],
-[if test "$enableval" = yes; then
- AC_DEFINE([FIXED_POINT], , [Compile as fixed-point])
-fi])
-
-AC_ARG_ENABLE(arm4-asm, [ --enable-arm4-asm Make use of ARM4 assembly optimizations],
-[if test "$enableval" = yes; then
- AC_DEFINE([ARM4_ASM], , [Make use of ARM4 assembly optimizations])
-fi])
-
-AC_ARG_ENABLE(arm5e-asm, [ --enable-arm5e-asm Make use of ARM5E assembly optimizations],
-[if test "$enableval" = yes; then
- AC_DEFINE([ARM5E_ASM], , [Make use of ARM5E assembly optimizations])
-fi])
-
-AC_ARG_ENABLE(blackfin-asm, [ --enable-blackfin-asm Make use of Blackfin assembly optimizations],
-[if test "$enableval" = yes; then
- AC_DEFINE([BFIN_ASM], , [Make use of Blackfin assembly optimizations])
- LDFLAGS="-Wl,-elf2flt=-s100000"
-fi])
-
-AC_ARG_ENABLE(fixed-point-debug, [ --enable-fixed-point-debug Debug fixed-point implementation],
-[if test "$enableval" = yes; then
- AC_DEFINE([FIXED_DEBUG], , [Debug fixed-point implementation])
-fi])
-
-AC_ARG_ENABLE(epic-48k, [ --enable-epic-48k Enable support for Epic 4.8 kbps mode],
-[if test "$enableval" = yes; then
- AC_DEFINE([EPIC_48K], , [Enable support for Epic 4.8 kbps mode])
-fi])
-
-AC_ARG_ENABLE(ti-c55x, [ --enable-ti-c55x Enable support for TI C55X DSP],
-[if test "$enableval" = yes; then
- has_char16=yes;
- AC_DEFINE([TI_C55X], , [Enable support for TI C55X DSP])
-fi])
-
-AC_ARG_ENABLE(16bit-precision, [ --enable-16bit-precision Reduce precision to 16 bits (EXPERIMENTAL)],
-[if test "$enableval" = yes; then
- AC_DEFINE([PRECISION16], , [Reduce precision to 16 bits (EXPERIMENTAL)])
-fi])
-
-AC_CHECK_SIZEOF(short)
-AC_CHECK_SIZEOF(int)
-AC_CHECK_SIZEOF(long)
-
-if test x$has_char16 = "xyes" ; then
- case 1 in
- $ac_cv_sizeof_short) SIZE16="short";;
- $ac_cv_sizeof_int) SIZE16="int";;
- esac
-else
- case 2 in
- $ac_cv_sizeof_short) SIZE16="short";;
- $ac_cv_sizeof_int) SIZE16="int";;
- esac
-fi
-
-if test x$has_char16 = "xyes" ; then
- case 2 in
- $ac_cv_sizeof_int) SIZE32="int";;
- $ac_cv_sizeof_long) SIZE32="long";;
- $ac_cv_sizeof_short) SIZE32="short";;
- esac
-else
- case 4 in
- $ac_cv_sizeof_int) SIZE32="int";;
- $ac_cv_sizeof_long) SIZE32="long";;
- $ac_cv_sizeof_short) SIZE32="short";;
- esac
-fi
-
-AC_SUBST(SIZE16)
-AC_SUBST(SIZE32)
-
-AC_OUTPUT([Makefile libspeex/Makefile src/Makefile doc/Makefile Speex.spec
- include/Makefile include/speex/Makefile speex.pc
- win32/Makefile win32/libspeex/Makefile win32/speexenc/Makefile
- win32/speexdec/Makefile symbian/Makefile
- win32/VS2003/Makefile win32/VS2005/Makefile
- win32/VS2003/libspeex/Makefile
- win32/VS2003/speexdec/Makefile
- win32/VS2003/speexenc/Makefile
- win32/VS2005/libspeex/Makefile
- win32/VS2005/speexdec/Makefile
- win32/VS2005/speexenc/Makefile
- include/speex/speex_config_types.h ti/Makefile
- ti/speex_C54_test/Makefile ti/speex_C55_test/Makefile
- ti/speex_C64_test/Makefile ])
-
-if test "x$src" = "x"; then
-echo "**IMPORTANT**"
-echo "You don't seem to have the development package for libogg (libogg-devel) installed. Only the Speex library (libspeex) will be built (no encoder/decoder executable)"
-echo "You can download libogg from http://downloads.xiph.org/releases/ogg/"
-fi
-
-echo "Type \"make; make install\" to compile and install Speex";
diff --git a/3rdparty/speex/doc/.cvsignore b/3rdparty/speex/doc/.cvsignore
deleted file mode 100644
index 282522db..00000000
--- a/3rdparty/speex/doc/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/3rdparty/speex/doc/Makefile.am b/3rdparty/speex/doc/Makefile.am
deleted file mode 100644
index a70a97b3..00000000
--- a/3rdparty/speex/doc/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-docdir=$(prefix)/share/doc/@PACKAGE@-@VERSION@
-
-doc_DATA = manual.pdf
-
-EXTRA_DIST = $(doc_DATA)
diff --git a/3rdparty/speex/doc/celp_decoder.eps b/3rdparty/speex/doc/celp_decoder.eps
deleted file mode 100644
index 87f07044..00000000
--- a/3rdparty/speex/doc/celp_decoder.eps
+++ /dev/null
@@ -1,688 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%BoundingBox: 0 0 442 315
-%%Pages: 0
-%%Creator: Sun Microsystems, Inc.
-%%Title: none
-%%CreationDate: none
-%%LanguageLevel: 2
-%%EndComments
-%%BeginProlog
-%%BeginResource: SDRes
-/b4_inc_state save def
-/dict_count countdictstack def
-/op_count count 1 sub def
-userdict begin
-0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit[] 0 setdash newpath
-/languagelevel where {pop languagelevel 1 ne {false setstrokeadjust false setoverprint} if} if
-/bdef {bind def} bind def
-/c {setgray} bdef
-/l {neg lineto} bdef
-/rl {neg rlineto} bdef
-/lc {setlinecap} bdef
-/lj {setlinejoin} bdef
-/lw {setlinewidth} bdef
-/ml {setmiterlimit} bdef
-/ld {setdash} bdef
-/m {neg moveto} bdef
-/ct {6 2 roll neg 6 2 roll neg 6 2 roll neg curveto} bdef
-/r {rotate} bdef
-/t {neg translate} bdef
-/s {scale} bdef
-/sw {show} bdef
-/gs {gsave} bdef
-/gr {grestore} bdef
-/f {findfont dup length dict begin
-{1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def
-currentdict end /NFont exch definefont pop /NFont findfont} bdef
-/p {closepath} bdef
-/sf {scalefont setfont} bdef
-/ef {eofill}bdef
-/pc {closepath stroke}bdef
-/ps {stroke}bdef
-/pum {matrix currentmatrix}bdef
-/pom {setmatrix}bdef
-/bs {/aString exch def /nXOfs exch def /nWidth exch def currentpoint nXOfs 0 rmoveto pum nWidth aString stringwidth pop div 1 scale aString show pom moveto} bdef
-%%EndResource
-%%EndProlog
-%%BeginSetup
-%%EndSetup
-%%Page: 1 1
-%%BeginPageSetup
-%%EndPageSetup
-pum
-0.02836 0.02834 s
-0 -11113 t
-/tm matrix currentmatrix def
-tm setmatrix
--5152 -9418 t
-1 1 s
-0 lw 1 lj 0.000 c 6935 14318 m 5435 14318 l 5435 10318 l 8435 10318 l
-8435 14318 l 6935 14318 l pc
-11436 12317 m 10934 12818 l 10936 11817 l 11436 12317 l pc
-5831 11966 m 8109 11966 l ps
-6425 11966 m 6425 11636 l ps
-6123 11966 m 6123 12366 l ps
-6727 11966 m 6727 11707 l ps
-7719 11966 m 7719 11872 l ps
-7070 11966 m 7070 12248 l ps
-7439 11966 m 7439 11636 l ps
-5830 10920 m 8108 10920 l ps
-6163 10920 m 6163 10590 l ps
-6470 10920 m 6470 11320 l ps
-6726 10920 m 6726 10661 l ps
-7109 10920 m 7109 10826 l ps
-7417 10920 m 7417 11202 l ps
-7699 10920 m 7699 10590 l ps
-5831 10921 m 8109 10921 l ps
-6164 10921 m 6164 10591 l ps
-6471 10921 m 6471 11321 l ps
-6727 10921 m 6727 10662 l ps
-7110 10921 m 7110 10827 l ps
-7418 10921 m 7418 11203 l ps
-7700 10921 m 7700 10591 l ps
-5857 12918 m 8135 12918 l ps
-6190 12918 m 6188 12729 l ps
-6497 12918 m 6497 13318 l ps
-6753 12918 m 6751 13247 l ps
-7136 12918 m 7136 12824 l ps
-7444 12918 m 7442 12611 l ps
-7796 12919 m 7794 13248 l ps
-6935 17818 m 5435 17818 l 5435 15818 l 8435 15818 l 8435 17818 l 6935 17818 l
-pc
-gs
-pum
-6263 17039 t
-219 -104 m 214 -66 184 -39 147 -39 ct 120 -39 99 -51 85 -74 ct 74 -92 71 -110 69 -147 ct
-268 -147 l 266 -213 260 -244 245 -277 ct 224 -321 193 -341 149 -341 ct 71 -341 20 -271 20 -160 ct
-20 -55 68 9 146 9 ct 208 9 252 -32 264 -104 ct 219 -104 l p
-69 -192 m 72 -252 104 -292 147 -292 ct 171 -292 191 -280 203 -260 ct 214 -243 218 -226 220 -192 ct
-69 -192 l p ef
-362 -412 m 418 -412 l 418 -458 l 321 -458 l 321 124 l 418 124 l 418 78 l
-362 78 l 362 -412 l p ef
-508 -332 m 465 -332 l 465 0 l 511 0 l 511 -180 l 511 -250 539 -292 586 -292 ct
-625 -292 642 -265 642 -204 ct 642 0 l 687 0 l 687 -226 l 687 -299 653 -341 595 -341 ct
-558 -341 532 -324 508 -283 ct 508 -332 l p ef
-870 -204 m 742 -204 l 742 -147 l 870 -147 l 870 -204 l p ef
-899 -400 m 1026 -400 l 1026 0 l 1077 0 l 1077 -400 l 1204 -400 l
-1204 -455 l 899 -455 l 899 -400 l p ef
-1281 78 m 1225 78 l 1225 124 l 1322 124 l 1322 -458 l 1225 -458 l
-1225 -412 l 1281 -412 l 1281 78 l p ef
-pom
-gr
-10410 12492 m 10410 12142 l 10935 12317 l 10410 12492 l p ef
-1 lw 0 lj 8435 12318 m 9685 12318 l 9685 12317 l 10515 12317 l ps
-0 lw 1 lj 11434 16817 m 10932 17318 l 10934 16317 l 11434 16817 l pc
-10483 16967 m 10483 16667 l 10933 16817 l 10483 16967 l p ef
-1 lw 0 lj 8435 16818 m 9684 16818 l 9684 16817 l 10573 16817 l ps
-0 lw 1 lj 13085 14818 m 12947 14818 12835 14706 12835 14568 ct 12835 14430 12947 14318 13085 14318 ct
-13223 14318 13335 14430 13335 14568 ct 13335 14706 13223 14818 13085 14818 ct
-pc
-gs
-pum
-12931 14791 t
-133 -183 m 20 -183 l 20 -137 l 133 -137 l 133 0 l 171 0 l 171 -137 l
-283 -137 l 283 -183 l 171 -183 l 171 -320 l 133 -320 l 133 -183 l
-p ef
-pom
-gr
-13234 15268 m 12934 15268 l 13084 14818 l 13234 15268 l p ef
-1 lw 0 lj 11435 16817 m 13084 16817 l 13084 15178 l ps
-12934 13868 m 13234 13868 l 13084 14318 l 12934 13868 l p ef
-11437 12317 m 13084 12317 l 13084 13958 l ps
-0 lw 1 lj 17835 15318 m 16335 15318 l 16335 13818 l 19335 13818 l 19335 15318 l
-17835 15318 l pc
-16668 15023 m 16778 14801 16891 14569 16925 14316 ct 16997 13766 17307 14273 17221 14551 ct
-17165 14731 17523 15058 17694 14622 ct 17856 14213 18050 14912 18286 15000 ct
-18489 15075 18680 14999 18878 15000 ct 18878 15000 18878 15000 19076 15047 ct
-19076 15047 19076 15047 19135 15118 ct ps
-15885 14718 m 15885 14418 l 16335 14568 l 15885 14718 l p ef
-1 lw 0 lj 13335 14567 m 14935 14567 l 14935 14568 l 15975 14568 l ps
-gs
-pum
-17085 13052 t
-208 -214 m 206 -241 203 -254 195 -269 ct 180 -296 151 -311 114 -311 ct 84 -311 61 -302 46 -283 ct
-33 -266 25 -243 25 -219 ct 25 -180 43 -156 78 -146 ct 129 -131 l 170 -120 182 -108 182 -79 ct
-182 -46 158 -27 118 -27 ct 90 -27 69 -37 58 -56 ct 51 -68 49 -78 48 -98 ct 16 -98 l
-17 -65 22 -48 35 -30 ct 54 -3 78 8 116 8 ct 177 8 214 -26 214 -83 ct 214 -126 195 -154 158 -164 ct
-87 -184 l 67 -190 57 -202 57 -224 ct 57 -257 78 -276 114 -276 ct 137 -276 156 -267 166 -250 ct
-172 -240 175 -231 176 -214 ct 208 -214 l p ef
-319 -39 m 271 -221 l 236 -221 l 304 5 l 300 16 297 25 296 28 ct 289 51 284 57 271 57 ct
-265 57 259 55 253 53 ct 253 87 l 255 87 l 261 90 263 90 268 90 ct 304 90 309 83 337 -4 ct
-402 -221 l 368 -221 l 319 -39 l p ef
-457 -221 m 428 -221 l 428 0 l 458 0 l 458 -120 l 458 -166 477 -194 508 -194 ct
-534 -194 546 -176 546 -136 ct 546 0 l 576 0 l 576 -150 l 576 -199 553 -227 515 -227 ct
-490 -227 472 -216 457 -188 ct 457 -221 l p ef
-690 -190 m 690 -221 l 660 -221 l 660 -282 l 630 -282 l 630 -221 l
-605 -221 l 605 -190 l 630 -190 l 630 -44 l 630 -12 641 2 665 2 ct 667 2 669 2 676 1 ct
-678 1 683 0 689 0 ct 689 -29 l 679 -29 l 665 -29 660 -34 660 -46 ct 660 -190 l
-690 -190 l p ef
-751 -303 m 721 -303 l 721 0 l 751 0 l 751 -120 l 751 -167 770 -194 803 -194 ct
-828 -194 839 -179 839 -144 ct 839 0 l 869 0 l 869 -150 l 869 -199 846 -227 808 -227 ct
-784 -227 769 -218 751 -190 ct 751 -303 l p ef
-1038 -69 m 1035 -44 1015 -26 991 -26 ct 973 -26 958 -34 950 -49 ct 942 -61 940 -73 939 -98 ct
-1071 -98 l 1070 -142 1066 -162 1056 -184 ct 1042 -214 1022 -227 992 -227 ct
-940 -227 906 -180 906 -106 ct 906 -36 938 6 990 6 ct 1032 6 1061 -21 1069 -69 ct
-1038 -69 l p
-939 -128 m 941 -167 962 -194 991 -194 ct 1007 -194 1020 -186 1028 -173 ct 1035 -162 1038 -151 1040 -128 ct
-939 -128 l p ef
-1242 -158 m 1240 -202 1215 -227 1174 -227 ct 1132 -227 1104 -200 1104 -157 ct
-1104 -129 1118 -111 1146 -103 ct 1182 -92 l 1210 -84 1218 -77 1218 -60 ct 1218 -39 1202 -26 1175 -26 ct
-1144 -26 1130 -39 1128 -71 ct 1099 -71 l 1100 -49 1102 -38 1108 -27 ct 1120 -5 1143 6 1173 6 ct
-1219 6 1248 -22 1248 -66 ct 1248 -97 1234 -113 1197 -125 ct 1167 -134 l 1140 -142 1134 -148 1134 -163 ct
-1134 -183 1148 -195 1172 -195 ct 1198 -195 1211 -183 1213 -158 ct 1242 -158 l
-p ef
-1315 -221 m 1285 -221 l 1285 0 l 1315 0 l 1315 -221 l p
-1315 -261 m 1315 -303 l 1285 -303 l 1285 -261 l 1315 -261 l p ef
-1492 -158 m 1490 -202 1465 -227 1424 -227 ct 1382 -227 1354 -200 1354 -157 ct
-1354 -129 1368 -111 1396 -103 ct 1432 -92 l 1460 -84 1468 -77 1468 -60 ct 1468 -39 1452 -26 1425 -26 ct
-1394 -26 1380 -39 1378 -71 ct 1349 -71 l 1350 -49 1352 -38 1358 -27 ct 1370 -5 1393 6 1423 6 ct
-1469 6 1498 -22 1498 -66 ct 1498 -97 1484 -113 1447 -125 ct 1417 -134 l 1390 -142 1384 -148 1384 -163 ct
-1384 -183 1398 -195 1422 -195 ct 1448 -195 1461 -183 1463 -158 ct 1492 -158 l
-p ef
-pom
-pum
-17085 13581 t
-90 -190 m 90 -221 l 60 -221 l 60 -248 l 60 -266 65 -274 78 -274 ct 81 -274 85 -274 90 -273 ct
-90 -307 l 81 -307 79 -307 76 -307 ct 46 -307 30 -291 30 -259 ct 30 -221 l 4 -221 l
-4 -190 l 30 -190 l 30 0 l 60 0 l 60 -190 l 90 -190 l p ef
-150 -221 m 120 -221 l 120 0 l 150 0 l 150 -221 l p
-150 -261 m 150 -303 l 120 -303 l 120 -261 l 150 -261 l p ef
-227 -303 m 197 -303 l 197 0 l 227 0 l 227 -303 l p ef
-339 -190 m 339 -221 l 309 -221 l 309 -282 l 279 -282 l 279 -221 l
-254 -221 l 254 -190 l 279 -190 l 279 -44 l 279 -12 290 2 314 2 ct 316 2 318 2 325 1 ct
-327 1 332 0 338 0 ct 338 -29 l 328 -29 l 314 -29 309 -34 309 -46 ct 309 -190 l
-339 -190 l p ef
-492 -69 m 489 -44 469 -26 445 -26 ct 427 -26 412 -34 404 -49 ct 396 -61 394 -73 393 -98 ct
-525 -98 l 524 -142 520 -162 510 -184 ct 496 -214 476 -227 446 -227 ct 394 -227 360 -180 360 -106 ct
-360 -36 392 6 444 6 ct 486 6 515 -21 523 -69 ct 492 -69 l p
-393 -128 m 395 -167 416 -194 445 -194 ct 461 -194 474 -186 482 -173 ct 489 -162 492 -151 494 -128 ct
-393 -128 l p ef
-657 -188 m 657 -226 l 654 -227 651 -227 649 -227 ct 627 -227 613 -215 597 -183 ct
-597 -221 l 568 -221 l 568 0 l 599 0 l 599 -129 l 599 -163 618 -188 645 -188 ct
-657 -188 l p ef
-878 -297 m 854 -297 l 844 -253 834 -244 789 -240 ct 789 -211 l 845 -211 l
-845 0 l 878 0 l 878 -297 l p ef
-1050 -311 m 1027 -311 l 943 8 l 965 8 l 1050 -311 l p ef
-1211 -88 m 1235 0 l 1272 0 l 1182 -303 l 1144 -303 l 1050 0 l 1085 0 l
-1111 -88 l 1211 -88 l p
-1121 -125 m 1161 -259 l 1199 -125 l 1121 -125 l p ef
-1360 -310 m 1316 -231 1301 -179 1301 -110 ct 1301 -42 1314 1 1361 87 ct 1381 87 l
-1343 -5 1334 -42 1334 -107 ct 1334 -182 1344 -225 1381 -310 ct 1360 -310 l p ef
-1552 -190 m 1552 -221 l 1412 -221 l 1412 -190 l 1513 -190 l 1403 -29 l
-1403 0 l 1555 0 l 1555 -30 l 1444 -30 l 1552 -190 l p ef
-1599 87 m 1642 8 1657 -43 1657 -111 ct 1657 -179 1644 -223 1598 -310 ct 1577 -310 l
-1616 -217 1625 -179 1625 -115 ct 1625 -40 1615 2 1578 87 ct 1599 87 l p ef
-pom
-gr
-gs
-pum
-5708 9956 t
-63 -137 m 185 -137 l 185 -174 l 63 -174 l 63 -266 l 202 -266 l 202 -303 l
-30 -303 l 30 0 l 63 0 l 63 -137 l p ef
-265 -221 m 235 -221 l 235 0 l 265 0 l 265 -221 l p
-265 -261 m 265 -303 l 235 -303 l 235 -261 l 265 -261 l p ef
-394 -113 m 455 -221 l 418 -221 l 375 -143 l 334 -221 l 294 -221 l
-355 -113 l 291 0 l 330 0 l 373 -83 l 419 0 l 458 0 l 394 -113 l
-p ef
-606 -69 m 603 -44 583 -26 559 -26 ct 541 -26 526 -34 518 -49 ct 510 -61 508 -73 507 -98 ct
-639 -98 l 638 -142 634 -162 624 -184 ct 610 -214 590 -227 560 -227 ct 508 -227 474 -180 474 -106 ct
-474 -36 506 6 558 6 ct 600 6 629 -21 637 -69 ct 606 -69 l p
-507 -128 m 509 -167 530 -194 559 -194 ct 575 -194 588 -186 596 -173 ct 603 -162 606 -151 608 -128 ct
-507 -128 l p ef
-829 -303 m 798 -303 l 798 -187 l 784 -216 768 -227 743 -227 ct 698 -227 668 -182 668 -115 ct
-668 -41 699 6 747 6 ct 772 6 787 -4 800 -31 ct 800 0 l 829 0 l 829 -303 l
-p
-749 -194 m 780 -194 798 -162 798 -104 ct 798 -76 793 -57 782 -43 ct 773 -32 761 -26 748 -26 ct
-717 -26 699 -58 699 -113 ct 699 -167 716 -194 749 -194 ct p ef
-1113 -146 m 1107 -200 1085 -227 1044 -227 ct 991 -227 958 -180 958 -106 ct
-958 -37 990 6 1039 6 ct 1081 6 1106 -22 1113 -78 ct 1083 -78 l 1077 -43 1062 -26 1039 -26 ct
-1008 -26 991 -56 991 -109 ct 991 -163 1009 -194 1041 -194 ct 1065 -194 1078 -180 1083 -146 ct
-1113 -146 l p ef
-1219 -227 m 1168 -227 1134 -180 1134 -110 ct 1134 -41 1168 5 1218 5 ct 1268 5 1302 -41 1302 -110 ct
-1302 -178 1268 -227 1219 -227 ct p
-1219 -195 m 1250 -195 1270 -161 1270 -110 ct 1270 -59 1250 -26 1218 -26 ct
-1186 -26 1165 -59 1165 -110 ct 1165 -162 1186 -195 1219 -195 ct p ef
-1490 -303 m 1459 -303 l 1459 -187 l 1445 -216 1429 -227 1404 -227 ct 1359 -227 1329 -182 1329 -115 ct
-1329 -41 1360 6 1408 6 ct 1433 6 1448 -4 1461 -31 ct 1461 0 l 1490 0 l 1490 -303 l
-p
-1410 -194 m 1441 -194 1459 -162 1459 -104 ct 1459 -76 1454 -57 1443 -43 ct
-1434 -32 1422 -26 1409 -26 ct 1378 -26 1360 -58 1360 -113 ct 1360 -167 1377 -194 1410 -194 ct
-p ef
-1656 -69 m 1653 -44 1633 -26 1609 -26 ct 1591 -26 1576 -34 1568 -49 ct 1560 -61 1558 -73 1557 -98 ct
-1689 -98 l 1688 -142 1684 -162 1674 -184 ct 1660 -214 1640 -227 1610 -227 ct
-1558 -227 1524 -180 1524 -106 ct 1524 -36 1556 6 1608 6 ct 1650 6 1679 -21 1687 -69 ct
-1656 -69 l p
-1557 -128 m 1559 -167 1580 -194 1609 -194 ct 1625 -194 1638 -186 1646 -173 ct
-1653 -162 1656 -151 1658 -128 ct 1557 -128 l p ef
-1755 0 m 1755 -28 l 1768 -3 1782 6 1806 6 ct 1854 6 1885 -41 1885 -115 ct
-1885 -182 1855 -227 1810 -227 ct 1788 -227 1772 -217 1756 -192 ct 1756 -303 l
-1726 -303 l 1726 0 l 1755 0 l p
-1805 -194 m 1837 -194 1853 -167 1853 -113 ct 1853 -58 1835 -26 1804 -26 ct
-1792 -26 1780 -32 1771 -43 ct 1760 -57 1755 -76 1755 -105 ct 1755 -163 1772 -194 1805 -194 ct
-p ef
-1998 -227 m 1947 -227 1913 -180 1913 -110 ct 1913 -41 1947 5 1997 5 ct 2047 5 2081 -41 2081 -110 ct
-2081 -178 2047 -227 1998 -227 ct p
-1998 -195 m 2029 -195 2049 -161 2049 -110 ct 2049 -59 2029 -26 1997 -26 ct
-1965 -26 1944 -59 1944 -110 ct 1944 -162 1965 -195 1998 -195 ct p ef
-2193 -227 m 2142 -227 2108 -180 2108 -110 ct 2108 -41 2142 5 2192 5 ct 2242 5 2276 -41 2276 -110 ct
-2276 -178 2242 -227 2193 -227 ct p
-2193 -195 m 2224 -195 2244 -161 2244 -110 ct 2244 -59 2224 -26 2192 -26 ct
-2160 -26 2139 -59 2139 -110 ct 2139 -162 2160 -195 2193 -195 ct p ef
-2390 -138 m 2459 -221 l 2421 -221 l 2342 -127 l 2342 -303 l 2313 -303 l
-2313 0 l 2342 0 l 2342 -83 l 2368 -111 l 2424 0 l 2463 0 l 2390 -138 l
-p ef
-pom
-gr
-gs
-pum
-5390 15539 t
-165 -88 m 189 0 l 226 0 l 136 -303 l 98 -303 l 4 0 l 39 0 l 65 -88 l
-165 -88 l p
-75 -125 m 115 -259 l 153 -125 l 75 -125 l p ef
-406 -303 m 375 -303 l 375 -187 l 361 -216 345 -227 320 -227 ct 275 -227 245 -182 245 -115 ct
-245 -41 276 6 324 6 ct 349 6 364 -4 377 -31 ct 377 0 l 406 0 l 406 -303 l
-p
-326 -194 m 357 -194 375 -162 375 -104 ct 375 -76 370 -57 359 -43 ct 350 -32 338 -26 325 -26 ct
-294 -26 276 -58 276 -113 ct 276 -167 293 -194 326 -194 ct p ef
-477 -153 m 481 -184 493 -196 520 -196 ct 547 -196 562 -184 562 -159 ct 562 -143 557 -136 546 -134 ct
-495 -126 l 460 -121 440 -96 440 -58 ct 440 -19 463 6 498 6 ct 524 6 543 -4 562 -29 ct
-565 -5 573 4 594 4 ct 598 4 602 3 608 1 ct 610 0 610 0 612 0 ct 612 -27 l 605 -25 603 -25 601 -25 ct
-595 -25 591 -30 591 -38 ct 591 -165 l 591 -204 565 -227 522 -227 ct 493 -227 472 -217 460 -198 ct
-453 -186 450 -175 449 -153 ct 477 -153 l p
-561 -76 m 561 -48 535 -24 504 -24 ct 484 -24 472 -38 472 -61 ct 472 -83 483 -94 511 -98 ct
-546 -104 554 -107 561 -112 ct 561 -76 l p ef
-642 87 m 672 87 l 672 -24 l 685 -2 699 6 722 6 ct 770 6 801 -42 801 -115 ct
-801 -182 771 -227 726 -227 ct 701 -227 687 -217 671 -188 ct 671 -221 l 642 -221 l
-642 87 l p
-721 -194 m 752 -194 769 -166 769 -114 ct 769 -58 751 -26 720 -26 ct 690 -26 671 -55 671 -103 ct
-671 -163 688 -194 721 -194 ct p ef
-906 -190 m 906 -221 l 876 -221 l 876 -282 l 846 -282 l 846 -221 l
-821 -221 l 821 -190 l 846 -190 l 846 -44 l 846 -12 857 2 881 2 ct 883 2 885 2 892 1 ct
-894 1 899 0 905 0 ct 905 -29 l 895 -29 l 881 -29 876 -34 876 -46 ct 876 -190 l
-906 -190 l p ef
-967 -221 m 937 -221 l 937 0 l 967 0 l 967 -221 l p
-967 -261 m 967 -303 l 937 -303 l 937 -261 l 967 -261 l p ef
-1076 -39 m 1029 -221 l 993 -221 l 1059 0 l 1092 0 l 1161 -221 l 1128 -221 l
-1076 -39 l p ef
-1309 -69 m 1306 -44 1286 -26 1262 -26 ct 1244 -26 1229 -34 1221 -49 ct 1213 -61 1211 -73 1210 -98 ct
-1342 -98 l 1341 -142 1337 -162 1327 -184 ct 1313 -214 1293 -227 1263 -227 ct
-1211 -227 1177 -180 1177 -106 ct 1177 -36 1209 6 1261 6 ct 1303 6 1332 -21 1340 -69 ct
-1309 -69 l p
-1210 -128 m 1212 -167 1233 -194 1262 -194 ct 1278 -194 1291 -186 1299 -173 ct
-1306 -162 1309 -151 1311 -128 ct 1210 -128 l p ef
-1621 -146 m 1615 -200 1593 -227 1552 -227 ct 1499 -227 1466 -180 1466 -106 ct
-1466 -37 1498 6 1547 6 ct 1589 6 1614 -22 1621 -78 ct 1591 -78 l 1585 -43 1570 -26 1547 -26 ct
-1516 -26 1499 -56 1499 -109 ct 1499 -163 1517 -194 1549 -194 ct 1573 -194 1586 -180 1591 -146 ct
-1621 -146 l p ef
-1727 -227 m 1676 -227 1642 -180 1642 -110 ct 1642 -41 1676 5 1726 5 ct 1776 5 1810 -41 1810 -110 ct
-1810 -178 1776 -227 1727 -227 ct p
-1727 -195 m 1758 -195 1778 -161 1778 -110 ct 1778 -59 1758 -26 1726 -26 ct
-1694 -26 1673 -59 1673 -110 ct 1673 -162 1694 -195 1727 -195 ct p ef
-1998 -303 m 1967 -303 l 1967 -187 l 1953 -216 1937 -227 1912 -227 ct 1867 -227 1837 -182 1837 -115 ct
-1837 -41 1868 6 1916 6 ct 1941 6 1956 -4 1969 -31 ct 1969 0 l 1998 0 l 1998 -303 l
-p
-1918 -194 m 1949 -194 1967 -162 1967 -104 ct 1967 -76 1962 -57 1951 -43 ct
-1942 -32 1930 -26 1917 -26 ct 1886 -26 1868 -58 1868 -113 ct 1868 -167 1885 -194 1918 -194 ct
-p ef
-2164 -69 m 2161 -44 2141 -26 2117 -26 ct 2099 -26 2084 -34 2076 -49 ct 2068 -61 2066 -73 2065 -98 ct
-2197 -98 l 2196 -142 2192 -162 2182 -184 ct 2168 -214 2148 -227 2118 -227 ct
-2066 -227 2032 -180 2032 -106 ct 2032 -36 2064 6 2116 6 ct 2158 6 2187 -21 2195 -69 ct
-2164 -69 l p
-2065 -128 m 2067 -167 2088 -194 2117 -194 ct 2133 -194 2146 -186 2154 -173 ct
-2161 -162 2164 -151 2166 -128 ct 2065 -128 l p ef
-2263 0 m 2263 -28 l 2276 -3 2290 6 2314 6 ct 2362 6 2393 -41 2393 -115 ct
-2393 -182 2363 -227 2318 -227 ct 2296 -227 2280 -217 2264 -192 ct 2264 -303 l
-2234 -303 l 2234 0 l 2263 0 l p
-2313 -194 m 2345 -194 2361 -167 2361 -113 ct 2361 -58 2343 -26 2312 -26 ct
-2300 -26 2288 -32 2279 -43 ct 2268 -57 2263 -76 2263 -105 ct 2263 -163 2280 -194 2313 -194 ct
-p ef
-2506 -227 m 2455 -227 2421 -180 2421 -110 ct 2421 -41 2455 5 2505 5 ct 2555 5 2589 -41 2589 -110 ct
-2589 -178 2555 -227 2506 -227 ct p
-2506 -195 m 2537 -195 2557 -161 2557 -110 ct 2557 -59 2537 -26 2505 -26 ct
-2473 -26 2452 -59 2452 -110 ct 2452 -162 2473 -195 2506 -195 ct p ef
-2701 -227 m 2650 -227 2616 -180 2616 -110 ct 2616 -41 2650 5 2700 5 ct 2750 5 2784 -41 2784 -110 ct
-2784 -178 2750 -227 2701 -227 ct p
-2701 -195 m 2732 -195 2752 -161 2752 -110 ct 2752 -59 2732 -26 2700 -26 ct
-2668 -26 2647 -59 2647 -110 ct 2647 -162 2668 -195 2701 -195 ct p ef
-2898 -138 m 2967 -221 l 2929 -221 l 2850 -127 l 2850 -303 l 2821 -303 l
-2821 0 l 2850 0 l 2850 -83 l 2876 -111 l 2932 0 l 2971 0 l 2898 -138 l
-p ef
-pom
-gr
-gs
-pum
-14016 13846 t
-213 -36 m 63 -36 l 63 -137 l 199 -137 l 199 -174 l 63 -174 l 63 -266 l
-211 -266 l 211 -303 l 30 -303 l 30 0 l 213 0 l 213 -36 l p ef
-339 -113 m 400 -221 l 363 -221 l 320 -143 l 279 -221 l 239 -221 l
-300 -113 l 236 0 l 275 0 l 318 -83 l 364 0 l 403 0 l 339 -113 l
-p ef
-571 -146 m 565 -200 543 -227 502 -227 ct 449 -227 416 -180 416 -106 ct 416 -37 448 6 497 6 ct
-539 6 564 -22 571 -78 ct 541 -78 l 535 -43 520 -26 497 -26 ct 466 -26 449 -56 449 -109 ct
-449 -163 467 -194 499 -194 ct 523 -194 536 -180 541 -146 ct 571 -146 l p ef
-633 -221 m 603 -221 l 603 0 l 633 0 l 633 -221 l p
-633 -261 m 633 -303 l 603 -303 l 603 -261 l 633 -261 l p ef
-745 -190 m 745 -221 l 715 -221 l 715 -282 l 685 -282 l 685 -221 l
-660 -221 l 660 -190 l 685 -190 l 685 -44 l 685 -12 696 2 720 2 ct 722 2 724 2 731 1 ct
-733 1 738 0 744 0 ct 744 -29 l 734 -29 l 720 -29 715 -34 715 -46 ct 715 -190 l
-745 -190 l p ef
-803 -153 m 807 -184 819 -196 846 -196 ct 873 -196 888 -184 888 -159 ct 888 -143 883 -136 872 -134 ct
-821 -126 l 786 -121 766 -96 766 -58 ct 766 -19 789 6 824 6 ct 850 6 869 -4 888 -29 ct
-891 -5 899 4 920 4 ct 924 4 928 3 934 1 ct 936 0 936 0 938 0 ct 938 -27 l 931 -25 929 -25 927 -25 ct
-921 -25 917 -30 917 -38 ct 917 -165 l 917 -204 891 -227 848 -227 ct 819 -227 798 -217 786 -198 ct
-779 -186 776 -175 775 -153 ct 803 -153 l p
-887 -76 m 887 -48 861 -24 830 -24 ct 810 -24 798 -38 798 -61 ct 798 -83 809 -94 837 -98 ct
-872 -104 880 -107 887 -112 ct 887 -76 l p ef
-1037 -190 m 1037 -221 l 1007 -221 l 1007 -282 l 977 -282 l 977 -221 l
-952 -221 l 952 -190 l 977 -190 l 977 -44 l 977 -12 988 2 1012 2 ct 1014 2 1016 2 1023 1 ct
-1025 1 1030 0 1036 0 ct 1036 -29 l 1026 -29 l 1012 -29 1007 -34 1007 -46 ct
-1007 -190 l 1037 -190 l p ef
-1099 -221 m 1069 -221 l 1069 0 l 1099 0 l 1099 -221 l p
-1099 -261 m 1099 -303 l 1069 -303 l 1069 -261 l 1099 -261 l p ef
-1219 -227 m 1168 -227 1134 -180 1134 -110 ct 1134 -41 1168 5 1218 5 ct 1268 5 1302 -41 1302 -110 ct
-1302 -178 1268 -227 1219 -227 ct p
-1219 -195 m 1250 -195 1270 -161 1270 -110 ct 1270 -59 1250 -26 1218 -26 ct
-1186 -26 1165 -59 1165 -110 ct 1165 -162 1186 -195 1219 -195 ct p ef
-1368 -221 m 1339 -221 l 1339 0 l 1369 0 l 1369 -120 l 1369 -166 1388 -194 1419 -194 ct
-1445 -194 1457 -176 1457 -136 ct 1457 0 l 1487 0 l 1487 -150 l 1487 -199 1464 -227 1426 -227 ct
-1401 -227 1383 -216 1368 -188 ct 1368 -221 l p ef
-pom
-pum
-14480 14375 t
-145 -69 m 142 -44 122 -26 98 -26 ct 80 -26 65 -34 57 -49 ct 49 -61 47 -73 46 -98 ct
-178 -98 l 177 -142 173 -162 163 -184 ct 149 -214 129 -227 99 -227 ct 47 -227 13 -180 13 -106 ct
-13 -36 45 6 97 6 ct 139 6 168 -21 176 -69 ct 145 -69 l p
-46 -128 m 48 -167 69 -194 98 -194 ct 114 -194 127 -186 135 -173 ct 142 -162 145 -151 147 -128 ct
-46 -128 l p ef
-244 -274 m 281 -274 l 281 -305 l 217 -305 l 217 82 l 281 82 l 281 52 l
-244 52 l 244 -274 l p ef
-343 -221 m 314 -221 l 314 0 l 344 0 l 344 -120 l 344 -166 363 -194 394 -194 ct
-420 -194 432 -176 432 -136 ct 432 0 l 462 0 l 462 -150 l 462 -199 439 -227 401 -227 ct
-376 -227 358 -216 343 -188 ct 343 -221 l p ef
-533 52 m 496 52 l 496 82 l 561 82 l 561 -305 l 496 -305 l 496 -274 l
-533 -274 l 533 52 l p ef
-pom
-gr
-gs
-pum
-9491 13237 t
-63 -137 m 185 -137 l 185 -174 l 63 -174 l 63 -266 l 202 -266 l 202 -303 l
-30 -303 l 30 0 l 63 0 l 63 -137 l p ef
-265 -221 m 235 -221 l 235 0 l 265 0 l 265 -221 l p
-265 -261 m 265 -303 l 235 -303 l 235 -261 l 265 -261 l p ef
-394 -113 m 455 -221 l 418 -221 l 375 -143 l 334 -221 l 294 -221 l
-355 -113 l 291 0 l 330 0 l 373 -83 l 419 0 l 458 0 l 394 -113 l
-p ef
-606 -69 m 603 -44 583 -26 559 -26 ct 541 -26 526 -34 518 -49 ct 510 -61 508 -73 507 -98 ct
-639 -98 l 638 -142 634 -162 624 -184 ct 610 -214 590 -227 560 -227 ct 508 -227 474 -180 474 -106 ct
-474 -36 506 6 558 6 ct 600 6 629 -21 637 -69 ct 606 -69 l p
-507 -128 m 509 -167 530 -194 559 -194 ct 575 -194 588 -186 596 -173 ct 603 -162 606 -151 608 -128 ct
-507 -128 l p ef
-829 -303 m 798 -303 l 798 -187 l 784 -216 768 -227 743 -227 ct 698 -227 668 -182 668 -115 ct
-668 -41 699 6 747 6 ct 772 6 787 -4 800 -31 ct 800 0 l 829 0 l 829 -303 l
-p
-749 -194 m 780 -194 798 -162 798 -104 ct 798 -76 793 -57 782 -43 ct 773 -32 761 -26 748 -26 ct
-717 -26 699 -58 699 -113 ct 699 -167 716 -194 749 -194 ct p ef
-1113 -146 m 1107 -200 1085 -227 1044 -227 ct 991 -227 958 -180 958 -106 ct
-958 -37 990 6 1039 6 ct 1081 6 1106 -22 1113 -78 ct 1083 -78 l 1077 -43 1062 -26 1039 -26 ct
-1008 -26 991 -56 991 -109 ct 991 -163 1009 -194 1041 -194 ct 1065 -194 1078 -180 1083 -146 ct
-1113 -146 l p ef
-1219 -227 m 1168 -227 1134 -180 1134 -110 ct 1134 -41 1168 5 1218 5 ct 1268 5 1302 -41 1302 -110 ct
-1302 -178 1268 -227 1219 -227 ct p
-1219 -195 m 1250 -195 1270 -161 1270 -110 ct 1270 -59 1250 -26 1218 -26 ct
-1186 -26 1165 -59 1165 -110 ct 1165 -162 1186 -195 1219 -195 ct p ef
-1490 -303 m 1459 -303 l 1459 -187 l 1445 -216 1429 -227 1404 -227 ct 1359 -227 1329 -182 1329 -115 ct
-1329 -41 1360 6 1408 6 ct 1433 6 1448 -4 1461 -31 ct 1461 0 l 1490 0 l 1490 -303 l
-p
-1410 -194 m 1441 -194 1459 -162 1459 -104 ct 1459 -76 1454 -57 1443 -43 ct
-1434 -32 1422 -26 1409 -26 ct 1378 -26 1360 -58 1360 -113 ct 1360 -167 1377 -194 1410 -194 ct
-p ef
-1656 -69 m 1653 -44 1633 -26 1609 -26 ct 1591 -26 1576 -34 1568 -49 ct 1560 -61 1558 -73 1557 -98 ct
-1689 -98 l 1688 -142 1684 -162 1674 -184 ct 1660 -214 1640 -227 1610 -227 ct
-1558 -227 1524 -180 1524 -106 ct 1524 -36 1556 6 1608 6 ct 1650 6 1679 -21 1687 -69 ct
-1656 -69 l p
-1557 -128 m 1559 -167 1580 -194 1609 -194 ct 1625 -194 1638 -186 1646 -173 ct
-1653 -162 1656 -151 1658 -128 ct 1557 -128 l p ef
-1755 0 m 1755 -28 l 1768 -3 1782 6 1806 6 ct 1854 6 1885 -41 1885 -115 ct
-1885 -182 1855 -227 1810 -227 ct 1788 -227 1772 -217 1756 -192 ct 1756 -303 l
-1726 -303 l 1726 0 l 1755 0 l p
-1805 -194 m 1837 -194 1853 -167 1853 -113 ct 1853 -58 1835 -26 1804 -26 ct
-1792 -26 1780 -32 1771 -43 ct 1760 -57 1755 -76 1755 -105 ct 1755 -163 1772 -194 1805 -194 ct
-p ef
-1998 -227 m 1947 -227 1913 -180 1913 -110 ct 1913 -41 1947 5 1997 5 ct 2047 5 2081 -41 2081 -110 ct
-2081 -178 2047 -227 1998 -227 ct p
-1998 -195 m 2029 -195 2049 -161 2049 -110 ct 2049 -59 2029 -26 1997 -26 ct
-1965 -26 1944 -59 1944 -110 ct 1944 -162 1965 -195 1998 -195 ct p ef
-2193 -227 m 2142 -227 2108 -180 2108 -110 ct 2108 -41 2142 5 2192 5 ct 2242 5 2276 -41 2276 -110 ct
-2276 -178 2242 -227 2193 -227 ct p
-2193 -195 m 2224 -195 2244 -161 2244 -110 ct 2244 -59 2224 -26 2192 -26 ct
-2160 -26 2139 -59 2139 -110 ct 2139 -162 2160 -195 2193 -195 ct p ef
-2390 -138 m 2459 -221 l 2421 -221 l 2342 -127 l 2342 -303 l 2313 -303 l
-2313 0 l 2342 0 l 2342 -83 l 2368 -111 l 2424 0 l 2463 0 l 2390 -138 l
-p ef
-2734 -221 m 2705 -221 l 2705 -188 l 2688 -217 2674 -227 2649 -227 ct 2604 -227 2574 -182 2574 -115 ct
-2574 -42 2606 6 2654 6 ct 2676 6 2691 -2 2703 -24 ct 2703 -15 l 2703 11 2701 25 2695 37 ct
-2687 54 2673 62 2651 62 ct 2628 62 2616 52 2610 27 ct 2580 27 l 2585 55 2591 68 2605 79 ct
-2617 88 2632 93 2650 93 ct 2681 93 2705 80 2719 57 ct 2729 39 2734 17 2734 -18 ct
-2734 -221 l p
-2656 -194 m 2687 -194 2704 -162 2704 -104 ct 2704 -55 2686 -26 2654 -26 ct
-2624 -26 2606 -58 2606 -113 ct 2606 -167 2623 -194 2656 -194 ct p ef
-2805 -153 m 2809 -184 2821 -196 2848 -196 ct 2875 -196 2890 -184 2890 -159 ct
-2890 -143 2885 -136 2874 -134 ct 2823 -126 l 2788 -121 2768 -96 2768 -58 ct
-2768 -19 2791 6 2826 6 ct 2852 6 2871 -4 2890 -29 ct 2893 -5 2901 4 2922 4 ct 2926 4 2930 3 2936 1 ct
-2938 0 2938 0 2940 0 ct 2940 -27 l 2933 -25 2931 -25 2929 -25 ct 2923 -25 2919 -30 2919 -38 ct
-2919 -165 l 2919 -204 2893 -227 2850 -227 ct 2821 -227 2800 -217 2788 -198 ct
-2781 -186 2778 -175 2777 -153 ct 2805 -153 l p
-2889 -76 m 2889 -48 2863 -24 2832 -24 ct 2812 -24 2800 -38 2800 -61 ct 2800 -83 2811 -94 2839 -98 ct
-2874 -104 2882 -107 2889 -112 ct 2889 -76 l p ef
-3004 -221 m 2974 -221 l 2974 0 l 3004 0 l 3004 -221 l p
-3004 -261 m 3004 -303 l 2974 -303 l 2974 -261 l 3004 -261 l p ef
-3078 -221 m 3049 -221 l 3049 0 l 3079 0 l 3079 -120 l 3079 -166 3098 -194 3129 -194 ct
-3155 -194 3167 -176 3167 -136 ct 3167 0 l 3197 0 l 3197 -150 l 3197 -199 3174 -227 3136 -227 ct
-3111 -227 3093 -216 3078 -188 ct 3078 -221 l p ef
-pom
-gr
-gs
-pum
-9174 17762 t
-165 -88 m 189 0 l 226 0 l 136 -303 l 98 -303 l 4 0 l 39 0 l 65 -88 l
-165 -88 l p
-75 -125 m 115 -259 l 153 -125 l 75 -125 l p ef
-406 -303 m 375 -303 l 375 -187 l 361 -216 345 -227 320 -227 ct 275 -227 245 -182 245 -115 ct
-245 -41 276 6 324 6 ct 349 6 364 -4 377 -31 ct 377 0 l 406 0 l 406 -303 l
-p
-326 -194 m 357 -194 375 -162 375 -104 ct 375 -76 370 -57 359 -43 ct 350 -32 338 -26 325 -26 ct
-294 -26 276 -58 276 -113 ct 276 -167 293 -194 326 -194 ct p ef
-477 -153 m 481 -184 493 -196 520 -196 ct 547 -196 562 -184 562 -159 ct 562 -143 557 -136 546 -134 ct
-495 -126 l 460 -121 440 -96 440 -58 ct 440 -19 463 6 498 6 ct 524 6 543 -4 562 -29 ct
-565 -5 573 4 594 4 ct 598 4 602 3 608 1 ct 610 0 610 0 612 0 ct 612 -27 l 605 -25 603 -25 601 -25 ct
-595 -25 591 -30 591 -38 ct 591 -165 l 591 -204 565 -227 522 -227 ct 493 -227 472 -217 460 -198 ct
-453 -186 450 -175 449 -153 ct 477 -153 l p
-561 -76 m 561 -48 535 -24 504 -24 ct 484 -24 472 -38 472 -61 ct 472 -83 483 -94 511 -98 ct
-546 -104 554 -107 561 -112 ct 561 -76 l p ef
-642 87 m 672 87 l 672 -24 l 685 -2 699 6 722 6 ct 770 6 801 -42 801 -115 ct
-801 -182 771 -227 726 -227 ct 701 -227 687 -217 671 -188 ct 671 -221 l 642 -221 l
-642 87 l p
-721 -194 m 752 -194 769 -166 769 -114 ct 769 -58 751 -26 720 -26 ct 690 -26 671 -55 671 -103 ct
-671 -163 688 -194 721 -194 ct p ef
-906 -190 m 906 -221 l 876 -221 l 876 -282 l 846 -282 l 846 -221 l
-821 -221 l 821 -190 l 846 -190 l 846 -44 l 846 -12 857 2 881 2 ct 883 2 885 2 892 1 ct
-894 1 899 0 905 0 ct 905 -29 l 895 -29 l 881 -29 876 -34 876 -46 ct 876 -190 l
-906 -190 l p ef
-967 -221 m 937 -221 l 937 0 l 967 0 l 967 -221 l p
-967 -261 m 967 -303 l 937 -303 l 937 -261 l 967 -261 l p ef
-1076 -39 m 1029 -221 l 993 -221 l 1059 0 l 1092 0 l 1161 -221 l 1128 -221 l
-1076 -39 l p ef
-1309 -69 m 1306 -44 1286 -26 1262 -26 ct 1244 -26 1229 -34 1221 -49 ct 1213 -61 1211 -73 1210 -98 ct
-1342 -98 l 1341 -142 1337 -162 1327 -184 ct 1313 -214 1293 -227 1263 -227 ct
-1211 -227 1177 -180 1177 -106 ct 1177 -36 1209 6 1261 6 ct 1303 6 1332 -21 1340 -69 ct
-1309 -69 l p
-1210 -128 m 1212 -167 1233 -194 1262 -194 ct 1278 -194 1291 -186 1299 -173 ct
-1306 -162 1309 -151 1311 -128 ct 1210 -128 l p ef
-1621 -146 m 1615 -200 1593 -227 1552 -227 ct 1499 -227 1466 -180 1466 -106 ct
-1466 -37 1498 6 1547 6 ct 1589 6 1614 -22 1621 -78 ct 1591 -78 l 1585 -43 1570 -26 1547 -26 ct
-1516 -26 1499 -56 1499 -109 ct 1499 -163 1517 -194 1549 -194 ct 1573 -194 1586 -180 1591 -146 ct
-1621 -146 l p ef
-1727 -227 m 1676 -227 1642 -180 1642 -110 ct 1642 -41 1676 5 1726 5 ct 1776 5 1810 -41 1810 -110 ct
-1810 -178 1776 -227 1727 -227 ct p
-1727 -195 m 1758 -195 1778 -161 1778 -110 ct 1778 -59 1758 -26 1726 -26 ct
-1694 -26 1673 -59 1673 -110 ct 1673 -162 1694 -195 1727 -195 ct p ef
-1998 -303 m 1967 -303 l 1967 -187 l 1953 -216 1937 -227 1912 -227 ct 1867 -227 1837 -182 1837 -115 ct
-1837 -41 1868 6 1916 6 ct 1941 6 1956 -4 1969 -31 ct 1969 0 l 1998 0 l 1998 -303 l
-p
-1918 -194 m 1949 -194 1967 -162 1967 -104 ct 1967 -76 1962 -57 1951 -43 ct
-1942 -32 1930 -26 1917 -26 ct 1886 -26 1868 -58 1868 -113 ct 1868 -167 1885 -194 1918 -194 ct
-p ef
-2164 -69 m 2161 -44 2141 -26 2117 -26 ct 2099 -26 2084 -34 2076 -49 ct 2068 -61 2066 -73 2065 -98 ct
-2197 -98 l 2196 -142 2192 -162 2182 -184 ct 2168 -214 2148 -227 2118 -227 ct
-2066 -227 2032 -180 2032 -106 ct 2032 -36 2064 6 2116 6 ct 2158 6 2187 -21 2195 -69 ct
-2164 -69 l p
-2065 -128 m 2067 -167 2088 -194 2117 -194 ct 2133 -194 2146 -186 2154 -173 ct
-2161 -162 2164 -151 2166 -128 ct 2065 -128 l p ef
-2263 0 m 2263 -28 l 2276 -3 2290 6 2314 6 ct 2362 6 2393 -41 2393 -115 ct
-2393 -182 2363 -227 2318 -227 ct 2296 -227 2280 -217 2264 -192 ct 2264 -303 l
-2234 -303 l 2234 0 l 2263 0 l p
-2313 -194 m 2345 -194 2361 -167 2361 -113 ct 2361 -58 2343 -26 2312 -26 ct
-2300 -26 2288 -32 2279 -43 ct 2268 -57 2263 -76 2263 -105 ct 2263 -163 2280 -194 2313 -194 ct
-p ef
-2506 -227 m 2455 -227 2421 -180 2421 -110 ct 2421 -41 2455 5 2505 5 ct 2555 5 2589 -41 2589 -110 ct
-2589 -178 2555 -227 2506 -227 ct p
-2506 -195 m 2537 -195 2557 -161 2557 -110 ct 2557 -59 2537 -26 2505 -26 ct
-2473 -26 2452 -59 2452 -110 ct 2452 -162 2473 -195 2506 -195 ct p ef
-2701 -227 m 2650 -227 2616 -180 2616 -110 ct 2616 -41 2650 5 2700 5 ct 2750 5 2784 -41 2784 -110 ct
-2784 -178 2750 -227 2701 -227 ct p
-2701 -195 m 2732 -195 2752 -161 2752 -110 ct 2752 -59 2732 -26 2700 -26 ct
-2668 -26 2647 -59 2647 -110 ct 2647 -162 2668 -195 2701 -195 ct p ef
-2898 -138 m 2967 -221 l 2929 -221 l 2850 -127 l 2850 -303 l 2821 -303 l
-2821 0 l 2850 0 l 2850 -83 l 2876 -111 l 2932 0 l 2971 0 l 2898 -138 l
-p ef
-3242 -221 m 3213 -221 l 3213 -188 l 3196 -217 3182 -227 3157 -227 ct 3112 -227 3082 -182 3082 -115 ct
-3082 -42 3114 6 3162 6 ct 3184 6 3199 -2 3211 -24 ct 3211 -15 l 3211 11 3209 25 3203 37 ct
-3195 54 3181 62 3159 62 ct 3136 62 3124 52 3118 27 ct 3088 27 l 3093 55 3099 68 3113 79 ct
-3125 88 3140 93 3158 93 ct 3189 93 3213 80 3227 57 ct 3237 39 3242 17 3242 -18 ct
-3242 -221 l p
-3164 -194 m 3195 -194 3212 -162 3212 -104 ct 3212 -55 3194 -26 3162 -26 ct
-3132 -26 3114 -58 3114 -113 ct 3114 -167 3131 -194 3164 -194 ct p ef
-3313 -153 m 3317 -184 3329 -196 3356 -196 ct 3383 -196 3398 -184 3398 -159 ct
-3398 -143 3393 -136 3382 -134 ct 3331 -126 l 3296 -121 3276 -96 3276 -58 ct
-3276 -19 3299 6 3334 6 ct 3360 6 3379 -4 3398 -29 ct 3401 -5 3409 4 3430 4 ct 3434 4 3438 3 3444 1 ct
-3446 0 3446 0 3448 0 ct 3448 -27 l 3441 -25 3439 -25 3437 -25 ct 3431 -25 3427 -30 3427 -38 ct
-3427 -165 l 3427 -204 3401 -227 3358 -227 ct 3329 -227 3308 -217 3296 -198 ct
-3289 -186 3286 -175 3285 -153 ct 3313 -153 l p
-3397 -76 m 3397 -48 3371 -24 3340 -24 ct 3320 -24 3308 -38 3308 -61 ct 3308 -83 3319 -94 3347 -98 ct
-3382 -104 3390 -107 3397 -112 ct 3397 -76 l p ef
-3512 -221 m 3482 -221 l 3482 0 l 3512 0 l 3512 -221 l p
-3512 -261 m 3512 -303 l 3482 -303 l 3482 -261 l 3512 -261 l p ef
-3586 -221 m 3557 -221 l 3557 0 l 3587 0 l 3587 -120 l 3587 -166 3606 -194 3637 -194 ct
-3663 -194 3675 -176 3675 -136 ct 3675 0 l 3705 0 l 3705 -150 l 3705 -199 3682 -227 3644 -227 ct
-3619 -227 3601 -216 3586 -188 ct 3586 -221 l p ef
-pom
-gr
-0 lw 1 lj 11185 19818 m 9435 19818 l 9435 18318 l 12935 18318 l 12935 19818 l
-11185 19818 l pc
-gs
-pum
-10523 19288 t
-41 0 m 191 0 l 234 0 272 -17 297 -48 ct 332 -92 351 -157 351 -233 ct 351 -368 289 -455 193 -455 ct
-41 -455 l 41 0 l p
-92 -403 m 187 -403 l 259 -403 299 -341 299 -227 ct 299 -119 257 -52 190 -52 ct
-92 -52 l 92 -403 l p ef
-596 -104 m 591 -66 561 -39 524 -39 ct 497 -39 476 -51 462 -74 ct 451 -92 448 -110 446 -147 ct
-645 -147 l 643 -213 637 -244 622 -277 ct 601 -321 570 -341 526 -341 ct 448 -341 397 -271 397 -160 ct
-397 -55 445 9 523 9 ct 585 9 629 -32 641 -104 ct 596 -104 l p
-446 -192 m 449 -252 481 -292 524 -292 ct 548 -292 568 -280 580 -260 ct 591 -243 595 -226 597 -192 ct
-446 -192 l p ef
-745 -455 m 699 -455 l 699 0 l 745 0 l 745 -455 l p ef
-853 -231 m 859 -277 877 -295 917 -295 ct 958 -295 980 -276 980 -240 ct 980 -215 973 -204 956 -201 ct
-880 -190 l 827 -182 798 -145 798 -87 ct 798 -29 832 9 885 9 ct 923 9 951 -6 981 -44 ct
-984 -8 997 6 1028 6 ct 1035 6 1040 5 1049 1 ct 1052 0 1053 0 1055 0 ct 1055 -40 l
-1045 -38 1043 -38 1039 -38 ct 1029 -38 1024 -45 1024 -57 ct 1024 -248 l 1024 -306 985 -341 920 -341 ct
-878 -341 845 -326 827 -297 ct 817 -280 813 -264 811 -231 ct 853 -231 l p
-979 -114 m 979 -73 940 -36 894 -36 ct 863 -36 845 -57 845 -92 ct 845 -125 862 -141 904 -148 ct
-956 -157 969 -160 979 -169 ct 979 -114 l p ef
-1197 -59 m 1124 -332 l 1072 -332 l 1173 8 l 1168 24 1164 38 1162 43 ct
-1152 76 1144 85 1125 85 ct 1115 85 1106 83 1097 80 ct 1097 130 l 1101 132 l
-1109 135 1113 135 1119 135 ct 1174 135 1182 125 1223 -6 ct 1321 -332 l 1270 -332 l
-1197 -59 l p ef
-pom
-gr
-13385 18918 m 13385 19218 l 12935 19068 l 13385 18918 l p ef
-1 lw 0 lj 14935 14567 m 14935 19068 l 13295 19068 l ps
-7085 18268 m 6785 18268 l 6935 17818 l 7085 18268 l p ef
-9435 19068 m 6935 19068 l 6935 18178 l ps
-20025 14718 m 20031 14418 l 20478 14577 l 20025 14718 l p ef
-19335 14568 m 20127 14568 l ps
-gs
-pum
-10179 20249 t
-63 -128 m 141 -128 l 186 -128 215 -163 215 -217 ct 215 -269 186 -303 141 -303 ct
-30 -303 l 30 0 l 63 0 l 63 -128 l p
-63 -268 m 131 -268 l 164 -268 181 -251 181 -216 ct 181 -181 164 -163 130 -163 ct
-63 -163 l 63 -268 l p ef
-282 -153 m 286 -184 298 -196 325 -196 ct 352 -196 367 -184 367 -159 ct 367 -143 362 -136 351 -134 ct
-300 -126 l 265 -121 245 -96 245 -58 ct 245 -19 268 6 303 6 ct 329 6 348 -4 367 -29 ct
-370 -5 378 4 399 4 ct 403 4 407 3 413 1 ct 415 0 415 0 417 0 ct 417 -27 l 410 -25 408 -25 406 -25 ct
-400 -25 396 -30 396 -38 ct 396 -165 l 396 -204 370 -227 327 -227 ct 298 -227 277 -217 265 -198 ct
-258 -186 255 -175 254 -153 ct 282 -153 l p
-366 -76 m 366 -48 340 -24 309 -24 ct 289 -24 277 -38 277 -61 ct 277 -83 288 -94 316 -98 ct
-351 -104 359 -107 366 -112 ct 366 -76 l p ef
-582 -158 m 580 -202 555 -227 514 -227 ct 472 -227 444 -200 444 -157 ct 444 -129 458 -111 486 -103 ct
-522 -92 l 550 -84 558 -77 558 -60 ct 558 -39 542 -26 515 -26 ct 484 -26 470 -39 468 -71 ct
-439 -71 l 440 -49 442 -38 448 -27 ct 460 -5 483 6 513 6 ct 559 6 588 -22 588 -66 ct
-588 -97 574 -113 537 -125 ct 507 -134 l 480 -142 474 -148 474 -163 ct 474 -183 488 -195 512 -195 ct
-538 -195 551 -183 553 -158 ct 582 -158 l p ef
-690 -190 m 690 -221 l 660 -221 l 660 -282 l 630 -282 l 630 -221 l
-605 -221 l 605 -190 l 630 -190 l 630 -44 l 630 -12 641 2 665 2 ct 667 2 669 2 676 1 ct
-678 1 683 0 689 0 ct 689 -29 l 679 -29 l 665 -29 660 -34 660 -46 ct 660 -190 l
-690 -190 l p ef
-950 -158 m 948 -202 923 -227 882 -227 ct 840 -227 812 -200 812 -157 ct 812 -129 826 -111 854 -103 ct
-890 -92 l 918 -84 926 -77 926 -60 ct 926 -39 910 -26 883 -26 ct 852 -26 838 -39 836 -71 ct
-807 -71 l 808 -49 810 -38 816 -27 ct 828 -5 851 6 881 6 ct 927 6 956 -22 956 -66 ct
-956 -97 942 -113 905 -125 ct 875 -134 l 848 -142 842 -148 842 -163 ct 842 -183 856 -195 880 -195 ct
-906 -195 919 -183 921 -158 ct 950 -158 l p ef
-1138 0 m 1138 -221 l 1108 -221 l 1108 -99 l 1108 -54 1088 -26 1058 -26 ct
-1034 -26 1023 -42 1023 -74 ct 1023 -221 l 992 -221 l 992 -62 l 992 -19 1015 6 1052 6 ct
-1079 6 1093 -3 1109 -34 ct 1109 0 l 1138 0 l p ef
-1213 0 m 1213 -28 l 1226 -3 1240 6 1264 6 ct 1312 6 1343 -41 1343 -115 ct
-1343 -182 1313 -227 1268 -227 ct 1246 -227 1230 -217 1214 -192 ct 1214 -303 l
-1184 -303 l 1184 0 l 1213 0 l p
-1263 -194 m 1295 -194 1311 -167 1311 -113 ct 1311 -58 1293 -26 1262 -26 ct
-1250 -26 1238 -32 1229 -43 ct 1218 -57 1213 -76 1213 -105 ct 1213 -163 1230 -194 1263 -194 ct
-p ef
-1449 -190 m 1449 -221 l 1419 -221 l 1419 -248 l 1419 -266 1424 -274 1437 -274 ct
-1440 -274 1444 -274 1449 -273 ct 1449 -307 l 1440 -307 1438 -307 1435 -307 ct
-1405 -307 1389 -291 1389 -259 ct 1389 -221 l 1363 -221 l 1363 -190 l 1389 -190 l
-1389 0 l 1419 0 l 1419 -190 l 1449 -190 l p ef
-1571 -188 m 1571 -226 l 1568 -227 1565 -227 1563 -227 ct 1541 -227 1527 -215 1511 -183 ct
-1511 -221 l 1482 -221 l 1482 0 l 1513 0 l 1513 -129 l 1513 -163 1532 -188 1559 -188 ct
-1571 -188 l p ef
-1620 -153 m 1624 -184 1636 -196 1663 -196 ct 1690 -196 1705 -184 1705 -159 ct
-1705 -143 1700 -136 1689 -134 ct 1638 -126 l 1603 -121 1583 -96 1583 -58 ct
-1583 -19 1606 6 1641 6 ct 1667 6 1686 -4 1705 -29 ct 1708 -5 1716 4 1737 4 ct 1741 4 1745 3 1751 1 ct
-1753 0 1753 0 1755 0 ct 1755 -27 l 1748 -25 1746 -25 1744 -25 ct 1738 -25 1734 -30 1734 -38 ct
-1734 -165 l 1734 -204 1708 -227 1665 -227 ct 1636 -227 1615 -217 1603 -198 ct
-1596 -186 1593 -175 1592 -153 ct 1620 -153 l p
-1704 -76 m 1704 -48 1678 -24 1647 -24 ct 1627 -24 1615 -38 1615 -61 ct 1615 -83 1626 -94 1654 -98 ct
-1689 -104 1697 -107 1704 -112 ct 1704 -76 l p ef
-1787 0 m 1817 0 l 1817 -120 l 1817 -165 1836 -194 1866 -194 ct 1883 -194 1894 -179 1894 -153 ct
-1894 0 l 1924 0 l 1924 -134 l 1924 -168 1943 -194 1968 -194 ct 1990 -194 2001 -177 2001 -142 ct
-2001 0 l 2031 0 l 2031 -153 l 2031 -199 2009 -227 1974 -227 ct 1952 -227 1940 -219 1920 -191 ct
-1908 -217 1894 -227 1872 -227 ct 1848 -227 1831 -216 1816 -188 ct 1816 -221 l
-1787 -221 l 1787 0 l p ef
-2198 -69 m 2195 -44 2175 -26 2151 -26 ct 2133 -26 2118 -34 2110 -49 ct 2102 -61 2100 -73 2099 -98 ct
-2231 -98 l 2230 -142 2226 -162 2216 -184 ct 2202 -214 2182 -227 2152 -227 ct
-2100 -227 2066 -180 2066 -106 ct 2066 -36 2098 6 2150 6 ct 2192 6 2221 -21 2229 -69 ct
-2198 -69 l p
-2099 -128 m 2101 -167 2122 -194 2151 -194 ct 2167 -194 2180 -186 2188 -173 ct
-2195 -162 2198 -151 2200 -128 ct 2099 -128 l p ef
-pom
-gr
-tm setmatrix
-0 0 t
-1 1 s
-0 11113 t
-pom
-count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat b4_inc_state restore
-%%PageTrailer
-%%Trailer
-%%EOF
diff --git a/3rdparty/speex/doc/celp_decoder.odg b/3rdparty/speex/doc/celp_decoder.odg
deleted file mode 100644
index ed537ad4..00000000
--- a/3rdparty/speex/doc/celp_decoder.odg
+++ /dev/null
Binary files differ
diff --git a/3rdparty/speex/doc/draft-herlein-avt-rtp-speex-00.txt b/3rdparty/speex/doc/draft-herlein-avt-rtp-speex-00.txt
deleted file mode 100644
index 36733e95..00000000
--- a/3rdparty/speex/doc/draft-herlein-avt-rtp-speex-00.txt
+++ /dev/null
@@ -1,699 +0,0 @@
-
-
-
-
-Internet Engineering Task Force Greg Herlein
-Internet Draft Jean-Marc Valin
-draft-herlein-avt-rtp-speex-00.txt Simon Morlat
-March 3, 2004 Roger Hardiman
-Expires: September 3, 2004 Phil Kerr
-
-
- RTP Payload Format for the Speex Codec
-
-Status of this Memo
-
- This document is an Internet-Draft and is in full conformance with
- all provisions of Section 10 of RFC 2026.
-
- Internet-Drafts are working documents of the Internet Engineering
- Task Force (IETF), its areas, and its working groups. Note that
- other groups may also distribute working documents as Internet-
- Drafts.
-
- Internet-Drafts are draft documents valid for a maximum of six
- months and may be updated, replaced, or obsoleted by other
- documents at any time. It is inappropriate to use Internet-Drafts
- as reference material or to cite them other than as "work in
- progress".
-
- The list of current Internet-Drafts can be accessed at
- http://www.ietf.org/ietf/1id-abstracts.txt
-
- To view the list Internet-Draft Shadow Directories, see
- http://www.ietf.org/shadow.html.
-
-
-Copyright Notice
-
- Copyright (C) The Internet Society (2003). All Rights Reserved.
-
-
-Abstract
-
- Speex is an open-source voice codec suitable for use in Voice over
- IP (VoIP) type applications. This document describes the payload
- format for Speex generated bit streams within an RTP packet. Also
- included here are the necessary details for the use of Speex with
- the Session Description Protocol (SDP) and a preliminary method of
- using Speex within H.323 applications.
-
-
-1. Conventions used in this document
-
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
- document are to be interpreted as described in RFC 2119 [5].
-
-Herlein, Valin, et. al. Expires September 3, 2004 [Page 1]
-^L
-Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
-
-
-2. Overview of the Speex Codec
-
- Speex is based on the CELP [12] encoding technique with support for
- either narrowband (nominal 8kHz), wideband (nominal 16kHz) or
- ultra-wideband (nominal 32kHz), and (non-optimal) rates up to 48 kHz
- sampling also available. The main characteristics can be summarized
- as follows:
-
- o Free software/open-source
- o Integration of wideband and narrowband in the same bit-stream
- o Wide range of bit-rates available
- o Dynamic bit-rate switching and variable bit-rate (VBR)
- o Voice Activity Detection (VAD, integrated with VBR)
- o Variable complexity
-
-
-3. RTP payload format for Speex
-
- For RTP based transportation of Speex encoded audio the standard
- RTP header [2] is followed by one or more payload data blocks.
- An optional padding terminator may also be used.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | RTP Header |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | one or more frames of Speex .... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | one or more frames of Speex .... | padding |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-3.1 RTP Header
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |V=2|P|X| CC |M| PT | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | synchronization source (SSRC) identifier |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | contributing source (CSRC) identifiers |
- | ... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
- The RTP header begins with an octet of fields (V, P, X, and CC) to
- support specialized RTP uses (see [8] and [9] for details). For
- Speex the following values are used.
-
-Herlein, Valin, et. al. Expires September 3, 2004 [Page 2]
-^L
-Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
-
-
- Version (V): 2 bits
- This field identifies the version of RTP. The version
- used by this specification is two (2).
-
- Padding (P): 1 bit
- If the padding bit is set, the packet contains one or more
- additional padding octets at the end which are not part of
- the payload. P is set if the total packet size is less than
- the MTU.
-
- Extension (X): 1 bit
- If the extension, X, bit is set, the fixed header MUST be
- followed by exactly one header extension, with a format defined
- in Section 5.3.1. of [8],
-
- CSRC count (CC): 4 bits
- The CSRC count contains the number of CSRC identifiers.
-
- Marker (M): 1 bit
- The M bit indicates if the packet contains comfort noise. This
- field is used in conjunction with the cng SDP attribute and is
- detailed further in section 5 below. In normal usage this bit
- is set if the packet contains comfort noise.
-
- Payload Type (PT): 7 bits
- An RTP profile for a class of applications is expected to assign
- a payload type for this format, or a dynamically allocated
- payload type SHOULD be chosen which designates the payload as
- Speex.
-
- Sequence number: 16 bits
- The sequence number increments by one for each RTP data packet
- sent, and may be used by the receiver to detect packet loss and
- to restore packet sequence. This field is detailed further in
- [2].
-
- Timestamp: 32 bits
- A timestamp representing the sampling time of the first sample of
- the first Speex packet in the RTP packet. The clock frequency
- MUST be set to the sample rate of the encoded audio data.
-
- Speex uses 20 msec frames and a variable sampling rate clock.
- The RTP timestamp MUST be in units of 1/X of a second where X
- is the sample rate used. Speex uses a nominal 8kHz sampling rate
- for narrowband use, a nominal 16kHz sampling rate for wideband use,
- and a nominal 32kHz sampling rate for ultra-wideband use.
-
- SSRC/CSRC identifiers:
- These two fields, 32 bits each with one SSRC field and a maximum
- of 16 CSRC fields, are as defined in [2].
-
-
-
-Herlein, Valin, et. al. Expires September 3, 2004 [Page 3]
-^L
-Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
-
-
-3.2 Speex payload
-
- For the purposes of packetizing the bit stream in RTP, it is only
- necessary to consider the sequence of bits as output by the Speex
- encoder [11], and present the same sequence to the decoder. The
- payload format described here maintains this sequence.
-
- A typical Speex frame, encoded at the maximum bitrate, is approx.
- 110 octets and the total number of Speex frames SHOULD be kept
- less than the path MTU to prevent fragmentation. Speex frames MUST
- NOT be fragmented across multiple RTP packets,
-
- An RTP packet MAY contain Speex frames of the same bit rate or of
- varying bit rates, since the bit-rate for a frame is conveyed in
- band with the signal.
-
- The encoding and decoding algorithm can change the bit rate at any
- 20 msec frame boundary, with the bit rate change notification provided
- in-band with the bit stream. Each frame contains both "mode"
- (narrowband, wideband or ultra-wideband) and "sub-mode" (bit-rate)
- information in the bit stream. No out-of-band notification is
- required for the decoder to process changes in the bit rate sent
- by the encoder.
-
- It is RECOMMENDED that values of 8000, 16000 and 32000 be used
- for normal internet telephony applications, though the sample
- rate is supported at rates as low as 6000 Hz and as high as
- 48 kHz.
-
- The RTP payload MUST be padded to provide an integer number of
- octets as the payload length. These padding bits are LSB aligned
- in network byte order and consist of a 0 followed by all ones
- (until the end of the octet). This padding is only required for
- the last frame in the packet, and only to ensure the packet
- contents ends on an octet boundary.
-
-
-3.2.1 Example Speex packet
-
- In the example below we have a single Speex frame with 5 bits
- of padding to ensure the packet size falls on an octet boundary.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |V=2|P|X| CC |M| PT | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | synchronization source (SSRC) identifier |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-
-
-Herlein, Valin, et. al. Expires September 3, 2004 [Page 4]
-^L
-Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | contributing source (CSRC) identifiers |
- | ... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |0 1 1 1 1|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-3.4 Multiple Speex frames in a RTP packet
-
- Below is an example of two Speex frames contained within one RTP
- packet. The Speex frame length in this example fall on an octet
- boundary so there is no padding.
-
- Speex codecs [11] are able to detect the the bitrate from the
- payload and are responsible for detecting the 20 msec boundaries
- between each frame.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |V=2|P|X| CC |M| PT | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | synchronization source (SSRC) identifier |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | contributing source (CSRC) identifiers |
- | ... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-4. MIME registration of Speex
-
- Full definition of the MIME type for Speex will be part of the Ogg
- Vorbis MIME type definition application [10].
-
- MIME media type name: audio
-
- MIME subtype: speex
-
-Herlein, Valin, et. al. Expires September 3, 2004 [Page 5]
-^L
-Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
-
-
- Optional parameters:
-
- Required parameters: to be included in the Ogg MIME specification.
-
- Encoding considerations:
-
- Security Considerations:
- See Section 6 of RFC 3047.
-
- Interoperability considerations: none
-
- Published specification:
-
- Applications which use this media type:
-
- Additional information: none
-
- Person & email address to contact for further information:
- Greg Herlein <gherlein@herlein.com>
- Jean-Marc Valin <jean-marc.valin@hermes.usherb.ca>
-
- Intended usage: COMMON
-
- Author/Change controller:
- Author: Greg Herlein <gherlein@herlein.com>
- Change controller: Greg Herlein <gherlein@herlein.com>
-
- This transport type signifies that the content is to be interpreted
- according to this document if the contents are transmitted over RTP.
- Should this transport type appear over a lossless streaming protocol
- such as TCP, the content encapsulation should be interpreted as an
- Ogg Stream in accordance with RFC 3534, with the exception that the
- content of the Ogg Stream may be assumed to be Speex audio and
- Speex audio only.
-
-
-5. SDP usage of Speex
-
- When conveying information by SDP [4], the encoding name MUST be
- set to "speex". An example of the media representation in SDP for
- offering a single channel of Speex at 8000 samples per second might
- be:
-
- m=audio 8088 RTP/AVP 97
- a=rtpmap:97 speex/8000
-
- Note that the RTP payload type code of 97 is defined in this media
- definition to be 'mapped' to the speex codec at an 8kHz sampling
- frequency using the 'a=rtpmap' line. Any number from 96 to 127
- could have been chosen (the allowed range for dynamic types).
-
-
-
-Herlein, Valin, et. al. Expires September 3, 2004 [Page 6]
-^L
-Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
-
-
- The value of the sampling frequency is typically 8000 for narrow band
- operation, 16000 for wide band operation, and 32000 for ultra-wide
- band operation.
-
- If for some reason the offerer has bandwidth limitations, the client
- may use the "b=" header, as explained in SDP [4]. The following example
- illustrates the case where the offerer cannot receive more than
- 10 kbit/s.
-
- m=audio 8088 RTP/AVP 97
- b=AS:10
- a=rtmap:97 speex/8000
-
- In this case, if the remote part agrees, it should configure its
- Speex encoder so that it does not use modes that produce more than
- 10 kbit/s. Note that the "b=" constraint also applies on all
- payload types that may be proposed in the media line ("m=").
-
- An other way to make recommendations to the remote Speex encoder
- is to use its specific parameters via the a=fmtp: directive. The
- following parameters are defined for use in this way:
-
- ptime: duration of each packet in milliseconds.
-
- sr: actual sample rate in Hz.
-
- ebw: encoding bandwidth - either 'narrow' or 'wide' or
- 'ultra' (corresponds to nominal 8000, 16000, and
- 32000 Hz sampling rates).
-
- vbr: variable bit rate - either 'on' 'off' or 'vad'
- (defaults to off). If on, variable bit rate is
- enabled. If off, disabled. If set to 'vad' then
- constant bit rate is used but silence will be encoded
- with special short frames to indicate a lack of voice
- for that period.
-
- cng: comfort noise generation - either 'on' or 'off'. If
- off then silence frames will be silent; if 'on' then
- those frames will be filled with comfort noise.
-
- mode: Speex encoding mode. Can be {1,2,3,4,5,6,any}
- defaults to 3 in narrowband, 6 in wide and ultra-wide.
-
- penh: use of perceptual enhancement. 1 indicates
- to the decoder that perceptual enhancement is recommended,
- 0 indicates that it is not. Defaults to on (1).
-
-
-
-
-
-
-Herlein, Valin, et. al. Expires September 3, 2004 [Page 7]
-^L
-Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
-
-
- Examples:
-
- m=audio 8008 RTP/AVP 97
- a=rtpmap:97 speex/8000
- a=fmtp:97 mode=4
-
- This examples illustrate an offerer that wishes to receive
- a Speex stream at 8000Hz, but only using speex mode 3.
-
- The offerer may suggest to the remote decoder to activate
- its perceptual enhancement filter like this:
-
- m=audio 8088 RTP/AVP 97
- a=rtmap:97 speex/8000
- a=fmtp:97 penh=1
-
- Several Speex specific parameters can be given in a single
- a=fmtp line provided that they are separated by a semi-colon:
-
- a=fmtp:97 mode=any;penh=1
-
- The offerer may indicate that it wishes to send variable bit rate
- frames with comfort noise:
-
- m=audio 8088 RTP/AVP 97
- a=rtmap:97 speex/8000
- a=fmtp:97 vbr=on;cng=on
-
- The "ptime" attribute is used to denote the packetization
- interval (ie, how many milliseconds of audio is encoded in a
- single RTP packet). Since Speex uses 20 msec frames, ptime values
- of multiples of 20 denote multiple Speex frames per packet.
- Values of ptime which are not multiples of 20 MUST be ignored
- and clients MUST use the default value of 20 instead.
-
- In the example below the ptime value is set to 40, indicating that
- there are 2 frames in each packet.
-
- m=audio 8008 RTP/AVP 97
- a=rtpmap:97 speex/8000
- a=ptime:40
-
- Note that the ptime parameter applies to all payloads listed
- in the media line and is not used as part of an a=fmtp directive.
-
- Values of ptime not multiple of 20 msec are meaningless, so the
- receiver of such ptime values MUST ignore them. If during the
- life of an RTP session the ptime value changes, when there are
- multiple Speex frames for example, the SDP value must also reflect
- the new value.
-
-
-
-Herlein, Valin, et. al. Expires September 3, 2004 [Page 8]
-^L
-Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
-
-
- Care must be taken when setting the value of ptime so that the
- RTP packet size does not exceed the path MTU.
-
-
-6. ITU H.323/H.245 Use of Speex
-
- Application is underway to make Speex a standard ITU codec.
- However, until that is finalized, Speex MAY be used in H.323 [6] by
- using a non-standard codec block definition in the H.245 [7] codec
- capability negotiations.
-
-
-6.1 NonStandardMessage format
-
- For Speex use in H.245 [7] based systems, the fields in the
- NonStandardMessage should be:
-
- t35CountryCode = Hex: B5
- t35Extension = Hex: 00
- manufacturerCode = Hex: 0026
- [Length of the Binary Sequence (8 bit number)]
- [Binary Sequence consisting of an ASCII string, no NULL terminator]
-
- The binary sequence is an ascii string merely for ease of use.
- The string is not null terminated. The format of this string is
-
- speex [optional variables]
-
- The optional variables are identical to those used for the SDP
- a=fmtp strings discussed in section 5 above. The string is built
- to be all on one line, each key-value pair separated by a
- semi-colon. The optional variables MAY be omitted, which causes
- the default values to be assumed. They are:
-
- ebw=narrow;mode=3;vbr=off;cng=off;ptime=20;sr=8000;penh=no;
-
- The fifth byte of the block is the length of the binary sequence.
-
- NOTE: this method can result in the advertising of a large number
- of Speex 'codecs' based on the number of variables possible. For
- most VoIP applications, use of the default binary sequence of
- 'speex' is RECOMMENDED to be used in addition to all other options.
- This maximizes the chances that two H.323 based applications that
- support Speex can find a mutual codec.
-
-
-6.2 RTP Payload Types
-
- Dynamic payload type codes MUST be negotiated 'out-of-band'
- for the assignment of a dynamic payload type from the
- range of 96-127. H.323 applications MUST use the H.245
- H2250LogicalChannelParameters encoding to accomplish this.
-
-Herlein, Valin, et. al. Expires September 3, 2004 [Page 9]
-^L
-Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
-
-
-7. Security Considerations
-
- RTP packets using the payload format defined in this specification
- are subject to the security considerations discussed in the RTP
- specification [2], and any appropriate RTP profile. This implies
- that confidentiality of the media streams is achieved by encryption.
- Because the data compression used with this payload format is applied
- end-to-end, encryption may be performed after compression so there is
- no conflict between the two operations.
-
- A potential denial-of-service threat exists for data encodings using
- compression techniques that have non-uniform receiver-end
- computational load. The attacker can inject pathological datagrams
- into the stream which are complex to decode and cause the receiver to
- be overloaded. However, this encoding does not exhibit any
- significant non-uniformity.
-
- As with any IP-based protocol, in some circumstances a receiver may
- be overloaded simply by the receipt of too many packets, either
- desired or undesired. Network-layer authentication may be used to
- discard packets from undesired sources, but the processing cost of
- the authentication itself may be too high.
-
-
-8. Normative References
-
- 1. Bradner, S., "The Internet Standards Process -- Revision 3", BCP
- 9, RFC 2026, October 1996.
-
- 2. Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson, "RTP:
- A Transport Protocol for real-time applications", RFC 1889,
- January 1996.
-
- 3. Freed, N. and N. Borenstein, "Multipurpose Internet Mail
- Extensions (MIME) Part One: Format of Internet Message Bodies",
- RFC 2045, November 1996.
-
- 4. Handley, M. and V. Jacobson, "SDP: Session Description
- Protocol", RFC 2327, April 1998.
-
- 5. Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", BCP 14, RFC 2119, March 1997.
-
- 6. ITU-T Recommendation H.323. "Packet-based Multimedia
- Communications Systems," 1998.
-
- 7. ITU-T Recommendation H.245 (1998), "Control of communications
- between Visual Telephone Systems and Terminal Equipment".
-
- 8. RTP: A transport protocol for real-time applications. Work
- in progress, draft-ietf-avt-rtp-new-12.txt.
-
-Herlein, Valin, et. al. Expires September 3, 2004 [Page 10]
-^L
-Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
-
-
- 9. RTP Profile for Audio and Video Conferences with Minimal
- Control. Work in progress, draft-ietf-avt-profile-new-13.txt.
-
- 10. L. Walleij, "The application/ogg Media Type", RFC 3534, May
- 2003.
-
-
-8.1 Informative References
-
- 11. Speexenc/speexdec, reference command-line encoder/decoder,
- Speex website, http://www.speex.org/
-
- 12. CELP, U.S. Federal Standard 1016. National Technical
- Information Service (NTIS) website, http://www.ntis.gov/
-
-
-9. Acknowledgments
-
- The authors would like to thank Equivalence Pty Ltd of Australia
- for their assistance in attempting to standardize the use of Speex
- in H.323 applications, and for implementing Speex in their open
- source OpenH323 stack. The authors would also like to thank Brian
- C. Wiles <brian@streamcomm.com> of StreamComm for his assistance in
- developing the proposed standard for Speex use in H.323
- applications.
-
- The authors would also like to thank the following members of the
- Speex and AVT communities for their input: Ross Finlayson,
- Federico Montesino Pouzols, Henning Schulzrinne, Magnus Westerlund.
-
-
-10. Author's Address
-
- Greg Herlein <gherlein@herlein.com>
- 2034 Filbert Street
- San Francisco, CA
- United States 94123
-
-
- Jean-Marc Valin <jean-marc.valin@hermes.usherb.ca>
- Department of Electrical and Computer Engineering
- University of Sherbrooke
- 2500 blvd UniversitüÃü­üÃé
- Sherbrooke, Quebec, Canada, J1K 2R1
-
-
- Simon MORLAT <simon.morlat@linphone.org>
- 35, av de Vizille App 42
- 38000 GRENOBLE
- FRANCE
-
-
-
-
-Herlein, Valin, et. al. Expires September 3, 2004 [Page 11]
-^L
-Internet-Draft draft-herlein-avt-rtp-speex-00.txt March 3, 2004
-
-
- Roger Hardiman <roger@freebsd.org>
- 49 Nettleton Road
- Cheltenham
- Gloucestershire
- GL51 6NR
- England
-
-
- Phil Kerr <philkerr@elec.gla.ac.uk>
- Centre for Music Technology
- University of Glasgow
- Glasgow
- G12 8LT
- Scotland
-
-
-10. Full Copyright Statement
-
- Copyright (C) The Internet Society (2003). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-
-Acknowledgement
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-Herlein, Valin, et. al. Expires September 3, 2004 [Page 12]
-^L
-
-
diff --git a/3rdparty/speex/doc/draft-herlein-speex-rtp-profile-02.txt b/3rdparty/speex/doc/draft-herlein-speex-rtp-profile-02.txt
deleted file mode 100644
index 2b25ea64..00000000
--- a/3rdparty/speex/doc/draft-herlein-speex-rtp-profile-02.txt
+++ /dev/null
@@ -1,841 +0,0 @@
-
-
-AVT Working Group G. Herlein
-Internet-Draft S. Morlat
-Expires: October 3, 2005 J. Jean-Marc
- R. Hardiman
- P. Kerr
- April 04, 2005
-
-
- draft-herlein-speex-rtp-profile-02
- RTP Payload Format for the Speex Codec
-
-Status of this Memo
-
- This document is an Internet-Draft and is subject to all provisions
- of section 3 of RFC 3667. By submitting this Internet-Draft, each
- author represents that any applicable patent or other IPR claims of
- which he or she is aware have been or will be disclosed, and any of
- which he or she become aware will be disclosed, in accordance with
- RFC 3668.
-
- Internet-Drafts are working documents of the Internet Engineering
- Task Force (IETF), its areas, and its working groups. Note that
- other groups may also distribute working documents as
- Internet-Drafts.
-
- Internet-Drafts are draft documents valid for a maximum of six months
- and may be updated, replaced, or obsoleted by other documents at any
- time. It is inappropriate to use Internet-Drafts as reference
- material or to cite them other than as "work in progress."
-
- The list of current Internet-Drafts can be accessed at
- http://www.ietf.org/ietf/1id-abstracts.txt.
-
- The list of Internet-Draft Shadow Directories can be accessed at
- http://www.ietf.org/shadow.html.
-
- This Internet-Draft will expire on October 3, 2005.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (2005).
-
-Abstract
-
- Speex is an open-source voice codec suitable for use in Voice over IP
- (VoIP) type applications. This document describes the payload format
- for Speex generated bit streams within an RTP packet. Also included
- here are the necessary details for the use of Speex with the Session
- Description Protocol (SDP) and a preliminary method of using Speex
-
-
-
-Herlein, et al. Expires October 3, 2005 [Page 1]
-
-Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
-
-
- within H.323 applications.
-
-Table of Contents
-
- 1. Conventions used in this document . . . . . . . . . . . . . 3
- 2. Overview of the Speex Codec . . . . . . . . . . . . . . . . 3
- 3. RTP payload format for Speex . . . . . . . . . . . . . . . . 3
- 4. RTP Header . . . . . . . . . . . . . . . . . . . . . . . . . 3
- 5. Speex payload . . . . . . . . . . . . . . . . . . . . . . . 5
- 6. Example Speex packet . . . . . . . . . . . . . . . . . . . . 6
- 7. Multiple Speex frames in a RTP packet . . . . . . . . . . . 6
- 8. MIME registration of Speex . . . . . . . . . . . . . . . . . 7
- 9. SDP usage of Speex . . . . . . . . . . . . . . . . . . . . . 8
- 10. ITU H.323/H.245 Use of Speex . . . . . . . . . . . . . . . . 10
- 11. NonStandardMessage format . . . . . . . . . . . . . . . . . 10
- 12. RTP Payload Types . . . . . . . . . . . . . . . . . . . . . 11
- 13. Security Considerations . . . . . . . . . . . . . . . . . . 11
- 14. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 12
- 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 12
- 15.1 Normative References . . . . . . . . . . . . . . . . . . . 12
- 15.2 Informative References . . . . . . . . . . . . . . . . . . 13
- Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 13
- Intellectual Property and Copyright Statements . . . . . . . 15
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires October 3, 2005 [Page 2]
-
-Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
-
-
-1. Conventions used in this document
-
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
- document are to be interpreted as described in RFC 2119 [1].
-
-2. Overview of the Speex Codec
-
- Speex is based on the CELP [10] encoding technique with support for
- either narrowband (nominal 8kHz), wideband (nominal 16kHz) or
- ultra-wideband (nominal 32kHz), and (non-optimal) rates up to 48 kHz
- sampling also available. The main characteristics can be summarized
- as follows:
-
- o Free software/open-source
- o Integration of wideband and narrowband in the same bit-stream
- o Wide range of bit-rates available
- o Dynamic bit-rate switching and variable bit-rate (VBR)
- o Voice Activity Detection (VAD, integrated with VBR)
- o Variable complexity
-
-3. RTP payload format for Speex
-
- For RTP based transportation of Speex encoded audio the standard RTP
- header [2] is followed by one or more payload data blocks. An
- optional padding terminator may also be used.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | RTP Header |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | one or more frames of Speex .... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | one or more frames of Speex .... | padding |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-4. RTP Header
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |V=2|P|X| CC |M| PT | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | synchronization source (SSRC) identifier |
-
-
-
-Herlein, et al. Expires October 3, 2005 [Page 3]
-
-Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
-
-
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | contributing source (CSRC) identifiers |
- | ... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- The RTP header begins with an octet of fields (V, P, X, and CC) to
- support specialized RTP uses (see [2] and [7] for details). For
- Speex the following values are used.
-
- Version (V): 2 bits
-
- This field identifies the version of RTP. The version used by this
- specification is two [2].
-
- Padding (P): 1 bit
-
- If the padding bit is set, the packet contains one or more additional
- padding octets at the end which are not part of the payload. P is
- set if the total packet size is less than the MTU.
-
- Extension (X): 1 bit
-
- If the extension, X, bit is set, the fixed header MUST be followed by
- exactly one header extension, with a format defined in Section 5.3.1.
- of [2].
-
- CSRC count (CC): 4 bits
-
- The CSRC count contains the number of CSRC identifiers.
-
- Marker (M): 1 bit
-
- The M bit indicates if the packet contains comfort noise. This field
- is used in conjunction with the cng SDP attribute and is detailed
- further in section 5 below. In normal usage this bit is set if the
- packet contains comfort noise.
-
- Payload Type (PT): 7 bits
-
- An RTP profile for a class of applications is expected to assign a
- payload type for this format, or a dynamically allocated payload type
- SHOULD be chosen which designates the payload as Speex.
-
- Sequence number: 16 bits
-
- The sequence number increments by one for each RTP data packet sent,
- and may be used by the receiver to detect packet loss and to restore
- packet sequence. This field is detailed further in [2].
-
-
-
-Herlein, et al. Expires October 3, 2005 [Page 4]
-
-Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
-
-
- Timestamp: 32 bits
-
- A timestamp representing the sampling time of the first sample of the
- first Speex packet in the RTP packet. The clock frequency MUST be
- set to the sample rate of the encoded audio data. Speex uses 20 msec
- frames and a variable sampling rate clock. The RTP timestamp MUST be
- in units of 1/X of a second where X is the sample rate used. Speex
- uses a nominal 8kHz sampling rate for narrowband use, a nominal 16kHz
- sampling rate for wideband use, and a nominal 32kHz sampling rate for
- ultra-wideband use.
-
- SSRC/CSRC identifiers:
-
- These two fields, 32 bits each with one SSRC field and a maximum of
- 16 CSRC fields, are as defined in [2].
-
-5. Speex payload
-
- For the purposes of packetizing the bit stream in RTP, it is only
- necessary to consider the sequence of bits as output by the Speex
- encoder [9], and present the same sequence to the decoder. The
- payload format described here maintains this sequence.
-
- A typical Speex frame, encoded at the maximum bitrate, is approx.
- 110 octets and the total number of Speex frames SHOULD be kept less
- than the path MTU to prevent fragmentation. Speex frames MUST NOT be
- fragmented across multiple RTP packets,
-
- An RTP packet MAY contain Speex frames of the same bit rate or of
- varying bit rates, since the bit-rate for a frame is conveyed in band
- with the signal.
-
- The encoding and decoding algorithm can change the bit rate at any 20
- msec frame boundary, with the bit rate change notification provided
- in-band with the bit stream. Each frame contains both "mode"
- (narrowband, wideband or ultra-wideband) and "sub-mode" (bit-rate)
- information in the bit stream. No out-of-band notification is
- required for the decoder to process changes in the bit rate sent by
- the encoder.
-
- It is RECOMMENDED that values of 8000, 16000 and 32000 be used for
- normal internet telephony applications, though the sample rate is
- supported at rates as low as 6000 Hz and as high as 48 kHz.
-
- The RTP payload MUST be padded to provide an integer number of octets
- as the payload length. These padding bits are LSB aligned in network
- octet order and consist of a 0 followed by all ones (until the end of
- the octet). This padding is only required for the last frame in the
-
-
-
-Herlein, et al. Expires October 3, 2005 [Page 5]
-
-Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
-
-
- packet, and only to ensure the packet contents ends on an octet
- boundary.
-
-6. Example Speex packet
-
- In the example below we have a single Speex frame with 5 bits of
- padding to ensure the packet size falls on an octet boundary.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |V=2|P|X| CC |M| PT | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | synchronization source (SSRC) identifier |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | contributing source (CSRC) identifiers |
- | ... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |0 1 1 1 1|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-7. Multiple Speex frames in a RTP packet
-
- Below is an example of two Speex frames contained within one RTP
- packet. The Speex frame length in this example fall on an octet
- boundary so there is no padding.
-
- Speex codecs [9] are able to detect the the bitrate from the payload
- and are responsible for detecting the 20 msec boundaries between each
- frame.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |V=2|P|X| CC |M| PT | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-Herlein, et al. Expires October 3, 2005 [Page 6]
-
-Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
-
-
- | synchronization source (SSRC) identifier |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | contributing source (CSRC) identifiers |
- | ... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-8. MIME registration of Speex
-
- Full definition of the MIME [3] type for Speex will be part of the
- Ogg Vorbis MIME type definition application [8].
-
- MIME media type name: audio
-
- MIME subtype: speex
-
- Optional parameters:
-
- Required parameters: to be included in the Ogg MIME specification.
-
- Encoding considerations:
-
- Security Considerations:
-
- See Section 6 of RFC 3047.
-
- Interoperability considerations: none
-
- Published specification:
-
- Applications which use this media type:
-
- Additional information: none
-
- Person & email address to contact for further information:
-
- Greg Herlein <gherlein@herlein.com>
- Jean-Marc Valin <jean-marc.valin@hermes.usherb.ca>
-
- Intended usage: COMMON
-
-
-
-
-Herlein, et al. Expires October 3, 2005 [Page 7]
-
-Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
-
-
- Author/Change controller:
-
- Author: Greg Herlein <gherlein@herlein.com>
- Change controller: Greg Herlein <gherlein@herlein.com>
- Change controller: IETF AVT Working Group
-
- This transport type signifies that the content is to be interpreted
- according to this document if the contents are transmitted over RTP.
- Should this transport type appear over a lossless streaming protocol
- such as TCP, the content encapsulation should be interpreted as an
- Ogg Stream in accordance with [8], with the exception that the
- content of the Ogg Stream may be assumed to be Speex audio and Speex
- audio only.
-
-9. SDP usage of Speex
-
- When conveying information by SDP [4], the encoding name MUST be set
- to "speex". An example of the media representation in SDP for
- offering a single channel of Speex at 8000 samples per second might
- be:
-
- m=audio 8088 RTP/AVP 97
- a=rtpmap:97 speex/8000
-
- Note that the RTP payload type code of 97 is defined in this media
- definition to be 'mapped' to the speex codec at an 8kHz sampling
- frequency using the 'a=rtpmap' line. Any number from 96 to 127 could
- have been chosen (the allowed range for dynamic types).
-
- The value of the sampling frequency is typically 8000 for narrow band
- operation, 16000 for wide band operation, and 32000 for ultra-wide
- band operation.
-
- If for some reason the offerer has bandwidth limitations, the client
- may use the "b=" header, as explained in SDP [4]. The following
- example illustrates the case where the offerer cannot receive more
- than 10 kbit/s.
-
- m=audio 8088 RTP/AVP 97
- b=AS:10
- a=rtmap:97 speex/8000
-
- In this case, if the remote part agrees, it should configure its
- Speex encoder so that it does not use modes that produce more than 10
- kbit/s. Note that the "b=" constraint also applies on all payload
- types that may be proposed in the media line ("m=").
-
- An other way to make recommendations to the remote Speex encoder is
-
-
-
-Herlein, et al. Expires October 3, 2005 [Page 8]
-
-Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
-
-
- to use its specific parameters via the a=fmtp: directive. The
- following parameters are defined for use in this way:
-
- ptime: duration of each packet in milliseconds.
-
- sr: actual sample rate in Hz.
-
- ebw: encoding bandwidth - either 'narrow' or 'wide' or 'ultra'
- (corresponds to nominal 8000, 16000, and 32000 Hz sampling rates).
-
- vbr: variable bit rate - either 'on' 'off' or 'vad' (defaults
- to off). If on, variable bit rate is enabled. If off, disabled.
- If set to 'vad' then constant bit rate is used but silence will be
- encoded with special short frames to indicate a lack of voice for
- that period.
-
- cng: comfort noise generation - either 'on' or 'off'. If off
- then silence frames will be silent; if 'on' then those frames will
- be filled with comfort noise.
-
- mode: Speex encoding mode. Can be {1,2,3,4,5,6,any} defaults to
- 3 in narrowband, 6 in wide and ultra-wide.
-
- penh: use of perceptual enhancement. 1 indicates to the decoder
- that perceptual enhancement is recommended, 0 indicates that it is
- not. Defaults to on (1).
-
-
- Examples:
-
- m=audio 8008 RTP/AVP 97
- a=rtpmap:97 speex/8000
- a=fmtp:97 mode=4
-
- This examples illustrate an offerer that wishes to receive a Speex
- stream at 8000Hz, but only using speex mode 3.
-
- The offerer may suggest to the remote decoder to activate its
- perceptual enhancement filter like this:
-
- m=audio 8088 RTP/AVP 97
- a=rtmap:97 speex/8000
- a=fmtp:97 penh=1
-
- Several Speex specific parameters can be given in a single a=fmtp
- line provided that they are separated by a semi-colon:
-
-
-
-
-
-Herlein, et al. Expires October 3, 2005 [Page 9]
-
-Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
-
-
- a=fmtp:97 mode=any;penh=1
-
- The offerer may indicate that it wishes to send variable bit rate
- frames with comfort noise:
-
- m=audio 8088 RTP/AVP 97
- a=rtmap:97 speex/8000
- a=fmtp:97 vbr=on;cng=on
-
- The "ptime" attribute is used to denote the packetization interval
- (ie, how many milliseconds of audio is encoded in a single RTP
- packet). Since Speex uses 20 msec frames, ptime values of multiples
- of 20 denote multiple Speex frames per packet. Values of ptime which
- are not multiples of 20 MUST be ignored and clients MUST use the
- default value of 20 instead.
-
- In the example below the ptime value is set to 40, indicating that
- there are 2 frames in each packet.
-
- m=audio 8008 RTP/AVP 97
- a=rtpmap:97 speex/8000
- a=ptime:40
-
- Note that the ptime parameter applies to all payloads listed in the
- media line and is not used as part of an a=fmtp directive.
-
- Values of ptime not multiple of 20 msec are meaningless, so the
- receiver of such ptime values MUST ignore them. If during the life
- of an RTP session the ptime value changes, when there are multiple
- Speex frames for example, the SDP value must also reflect the new
- value.
-
- Care must be taken when setting the value of ptime so that the RTP
- packet size does not exceed the path MTU.
-
-10. ITU H.323/H.245 Use of Speex
-
- Application is underway to make Speex a standard ITU codec. However,
- until that is finalized, Speex MAY be used in H.323 [5] by using a
- non-standard codec block definition in the H.245 [6] codec capability
- negotiations.
-
-11. NonStandardMessage format
-
- For Speex use in H.245 [6] based systems, the fields in the
- NonStandardMessage should be:
-
-
-
-
-
-Herlein, et al. Expires October 3, 2005 [Page 10]
-
-Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
-
-
- t35CountryCode = Hex: B5
- t35Extension = Hex: 00
- manufacturerCode = Hex: 0026
- [Length of the Binary Sequence (8 bit number)]
- [Binary Sequence consisting of an ASCII string, no NULL
- terminator]
-
- The binary sequence is an ascii string merely for ease of use. The
- string is not null terminated. The format of this string is
-
- speex [optional variables]
-
- The optional variables are identical to those used for the SDP a=fmtp
- strings discussed in section 5 above. The string is built to be all
- on one line, each key-value pair separated by a semi-colon. The
- optional variables MAY be omitted, which causes the default values to
- be assumed. They are:
-
- ebw=narrow;mode=3;vbr=off;cng=off;ptime=20;sr=8000;penh=no;
-
- The fifth octet of the block is the length of the binary sequence.
-
- NOTE: this method can result in the advertising of a large number of
- Speex 'codecs' based on the number of variables possible. For most
- VoIP applications, use of the default binary sequence of 'speex' is
- RECOMMENDED to be used in addition to all other options. This
- maximizes the chances that two H.323 based applications that support
- Speex can find a mutual codec.
-
-12. RTP Payload Types
-
- Dynamic payload type codes MUST be negotiated 'out-of-band' for the
- assignment of a dynamic payload type from the range of 96-127. H.323
- applications MUST use the H.245 H2250LogicalChannelParameters
- encoding to accomplish this.
-
-13. Security Considerations
-
- RTP packets using the payload format defined in this specification
- are subject to the security considerations discussed in the RTP
- specification [2], and any appropriate RTP profile. This implies
- that confidentiality of the media streams is achieved by encryption.
- Because the data compression used with this payload format is applied
- end-to-end, encryption may be performed after compression so there is
- no conflict between the two operations.
-
- A potential denial-of-service threat exists for data encodings using
- compression techniques that have non-uniform receiver-end
-
-
-
-Herlein, et al. Expires October 3, 2005 [Page 11]
-
-Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
-
-
- computational load. The attacker can inject pathological datagrams
- into the stream which are complex to decode and cause the receiver to
- be overloaded. However, this encoding does not exhibit any
- significant non-uniformity.
-
- As with any IP-based protocol, in some circumstances a receiver may
- be overloaded simply by the receipt of too many packets, either
- desired or undesired. Network-layer authentication may be used to
- discard packets from undesired sources, but the processing cost of
- the authentication itself may be too high.
-
-14. Acknowledgments
-
- The authors would like to thank Equivalence Pty Ltd of Australia for
- their assistance in attempting to standardize the use of Speex in
- H.323 applications, and for implementing Speex in their open source
- OpenH323 stack. The authors would also like to thank Brian C. Wiles
- <brian@streamcomm.com> of StreamComm for his assistance in developing
- the proposed standard for Speex use in H.323 applications.
-
- The authors would also like to thank the following members of the
- Speex and AVT communities for their input: Ross Finlayson, Federico
- Montesino Pouzols, Henning Schulzrinne, Magnus Westerlund.
-
-15. References
-
-15.1 Normative References
-
- [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", RFC 2119.
-
- [2] Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson,
- "RTP: A Transport Protocol for real-time applications", RFC
- 3550.
-
- [3] "Multipurpose Internet Mail Extensions (MIME) Part One: Format
- of Internet Message Bodies", RFC 2045.
-
- [4] Jacobson, V. and M. Handley, "SDP: Session Description
- Protocol", RFC 2327.
-
- [5] "Packet-based Multimedia Communications Systems", ITU-T
- Recommendation H.323.
-
- [6] "Control of communications between Visual Telephone Systems and
- Terminal Equipment", ITU-T Recommendation H.245.
-
- [7] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video
-
-
-
-Herlein, et al. Expires October 3, 2005 [Page 12]
-
-Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
-
-
- Conferences with Minimal Control.", RFC 3551.
-
- [8] Walleij, L., "The application/ogg Media Type", RFC 3534.
-
-15.2 Informative References
-
- [9] "Speexenc/speexdec, reference command-line encoder/decoder",
- Speex website http://www.speex.org/.
-
- [10] "CELP, U.S. Federal Standard 1016.", National Technical
- Information Service (NTIS) website http://www.ntis.gov/.
-
-
-Authors' Addresses
-
- Greg Herlein
- 2034 Filbert Street
- San Francisco, California 94123
- United States
-
- EMail: gherlein@herlein.com
-
-
- Simon Morlat
- 35, av de Vizille App 42
- Grenoble 38000
- France
-
- EMail: simon.morlat@linphone.org
-
-
- Jean-Marc Valin
- Department of Electrical and Computer Engineering
- University of Sherbrooke
- 2500 blvd Universite
- Sherbrooke, Quebec J1K 2R1
- Canada
-
- EMail: jean-marc.valin@hermes.usherb.ca
-
-
- Roger Hardiman
- 49 Nettleton Road
- Cheltenham, Gloucestershire GL51 6NR
- England
-
- EMail: roger@freebsd.org
-
-
-
-
-Herlein, et al. Expires October 3, 2005 [Page 13]
-
-Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
-
-
- Phil Kerr
- England
-
- EMail: phil@plus24.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires October 3, 2005 [Page 14]
-
-Internet-Draft draft-herlein-speex-rtp-profile-02 April 2005
-
-
-Intellectual Property Statement
-
- The IETF takes no position regarding the validity or scope of any
- Intellectual Property Rights or other rights that might be claimed to
- pertain to the implementation or use of the technology described in
- this document or the extent to which any license under such rights
- might or might not be available; nor does it represent that it has
- made any independent effort to identify any such rights. Information
- on the procedures with respect to rights in RFC documents can be
- found in BCP 78 and BCP 79.
-
- Copies of IPR disclosures made to the IETF Secretariat and any
- assurances of licenses to be made available, or the result of an
- attempt made to obtain a general license or permission for the use of
- such proprietary rights by implementers or users of this
- specification can be obtained from the IETF on-line IPR repository at
- http://www.ietf.org/ipr.
-
- The IETF invites any interested party to bring to its attention any
- copyrights, patents or patent applications, or other proprietary
- rights that may cover technology that may be required to implement
- this standard. Please address the information to the IETF at
- ietf-ipr@ietf.org.
-
-
-Disclaimer of Validity
-
- This document and the information contained herein are provided on an
- "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
- OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
- ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
- INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
- INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
- WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-
-Copyright Statement
-
- Copyright (C) The Internet Society (2005). This document is subject
- to the rights, licenses and restrictions contained in BCP 78, and
- except as set forth therein, the authors retain all their rights.
-
-
-Acknowledgment
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-Herlein, et al. Expires October 3, 2005 [Page 15]
-
-
diff --git a/3rdparty/speex/doc/draft-herlein-speex-rtp-profile-03.txt b/3rdparty/speex/doc/draft-herlein-speex-rtp-profile-03.txt
deleted file mode 100644
index d1ad4b37..00000000
--- a/3rdparty/speex/doc/draft-herlein-speex-rtp-profile-03.txt
+++ /dev/null
@@ -1,1232 +0,0 @@
-
-
-AVT Working Group G. Herlein
-Internet-Draft S. Morlat
-Expires: July 2, 2005 J. Jean-Marc
- R. Hardiman
- P. Kerr
- January 01, 2005
-
-
- draft-herlein-speex-rtp-profile-03
- RTP Payload Format for the Speex Codec
-
-Status of this Memo
-
- This document is an Internet-Draft and is subject to all provisions
- of section 3 of RFC 3667. By submitting this Internet-Draft, each
- author represents that any applicable patent or other IPR claims of
- which he or she is aware have been or will be disclosed, and any of
- which he or she become aware will be disclosed, in accordance with
- RFC 3668.
-
- Internet-Drafts are working documents of the Internet Engineering
- Task Force (IETF), its areas, and its working groups. Note that
- other groups may also distribute working documents as
- Internet-Drafts.
-
- Internet-Drafts are draft documents valid for a maximum of six months
- and may be updated, replaced, or obsoleted by other documents at any
- time. It is inappropriate to use Internet-Drafts as reference
- material or to cite them other than as "work in progress."
-
- The list of current Internet-Drafts can be accessed at
- http://www.ietf.org/ietf/1id-abstracts.txt.
-
- The list of Internet-Draft Shadow Directories can be accessed at
- http://www.ietf.org/shadow.html.
-
- This Internet-Draft will expire on July 2, 2005.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (2005).
-
-Abstract
-
- Speex is an open-source voice codec suitable for use in Voice over IP
- (VoIP) type applications. This document describes the payload format
- for Speex generated bit streams within an RTP packet. Also included
- here are the necessary details for the use of Speex with the Session
- Description Protocol (SDP) and a preliminary method of using Speex
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 1]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
- within H.323 applications.
-
-Table of Contents
-
- 1. Conventions used in this document . . . . . . . . . . . . . 3
- 2. Overview of the Speex Codec . . . . . . . . . . . . . . . . 4
- 3. RTP payload format for Speex . . . . . . . . . . . . . . . . 5
- 4. RTP Header . . . . . . . . . . . . . . . . . . . . . . . . . 6
- 5. Speex payload . . . . . . . . . . . . . . . . . . . . . . . 8
- 6. Example Speex packet . . . . . . . . . . . . . . . . . . . . 9
- 7. Multiple Speex frames in a RTP packet . . . . . . . . . . . 10
- 8. MIME registration of Speex . . . . . . . . . . . . . . . . . 11
- 9. SDP usage of Speex . . . . . . . . . . . . . . . . . . . . . 12
- 10. ITU H.323/H.245 Use of Speex . . . . . . . . . . . . . . . . 15
- 11. NonStandardMessage format . . . . . . . . . . . . . . . . . 16
- 12. RTP Payload Types . . . . . . . . . . . . . . . . . . . . . 17
- 13. Security Considerations . . . . . . . . . . . . . . . . . . 18
- 14. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 19
- 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 20
- 15.1 Normative References . . . . . . . . . . . . . . . . . . . 20
- 15.2 Informative References . . . . . . . . . . . . . . . . . . 20
- Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 20
- Intellectual Property and Copyright Statements . . . . . . . 22
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 2]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-1. Conventions used in this document
-
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
- document are to be interpreted as described in RFC 2119 [1].
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 3]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-2. Overview of the Speex Codec
-
- Speex is based on the CELP [10] encoding technique with support for
- either narrowband (nominal 8kHz), wideband (nominal 16kHz) or
- ultra-wideband (nominal 32kHz), and (non-optimal) rates up to 48 kHz
- sampling also available. The main characteristics can be summarized
- as follows:
-
- o Free software/open-source
- o Integration of wideband and narrowband in the same bit-stream
- o Wide range of bit-rates available
- o Dynamic bit-rate switching and variable bit-rate (VBR)
- o Voice Activity Detection (VAD, integrated with VBR)
- o Variable complexity
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 4]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-3. RTP payload format for Speex
-
- For RTP based transportation of Speex encoded audio the standard RTP
- header [2] is followed by one or more payload data blocks. An
- optional padding terminator may also be used.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | RTP Header |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | one or more frames of Speex .... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | one or more frames of Speex .... | padding |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 5]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-4. RTP Header
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |V=2|P|X| CC |M| PT | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | synchronization source (SSRC) identifier |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | contributing source (CSRC) identifiers |
- | ... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- The RTP header begins with an octet of fields (V, P, X, and CC) to
- support specialized RTP uses (see [2] and [7] for details). For
- Speex the following values are used.
-
- Version (V): 2 bits
-
- This field identifies the version of RTP. The version used by this
- specification is two [2].
-
- Padding (P): 1 bit
-
- If the padding bit is set, the packet contains one or more additional
- padding octets at the end which are not part of the payload. P is
- set if the total packet size is less than the MTU.
-
- Extension (X): 1 bit
-
- If the extension, X, bit is set, the fixed header MUST be followed by
- exactly one header extension, with a format defined in Section 5.3.1.
- of [2].
-
- CSRC count (CC): 4 bits
-
- The CSRC count contains the number of CSRC identifiers.
-
- Marker (M): 1 bit
-
- The M bit indicates if the packet contains comfort noise. This field
- is used in conjunction with the cng SDP attribute and is detailed
- further in section 5 below. In normal usage this bit is set if the
- packet contains comfort noise.
-
- Payload Type (PT): 7 bits
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 6]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
- An RTP profile for a class of applications is expected to assign a
- payload type for this format, or a dynamically allocated payload type
- SHOULD be chosen which designates the payload as Speex.
-
- Sequence number: 16 bits
-
- The sequence number increments by one for each RTP data packet sent,
- and may be used by the receiver to detect packet loss and to restore
- packet sequence. This field is detailed further in [2].
-
- Timestamp: 32 bits
-
- A timestamp representing the sampling time of the first sample of the
- first Speex packet in the RTP packet. The clock frequency MUST be
- set to the sample rate of the encoded audio data. Speex uses 20 msec
- frames and a variable sampling rate clock. The RTP timestamp MUST be
- in units of 1/X of a second where X is the sample rate used. Speex
- uses a nominal 8kHz sampling rate for narrowband use, a nominal 16kHz
- sampling rate for wideband use, and a nominal 32kHz sampling rate for
- ultra-wideband use.
-
- SSRC/CSRC identifiers:
-
- These two fields, 32 bits each with one SSRC field and a maximum of
- 16 CSRC fields, are as defined in [2].
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 7]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-5. Speex payload
-
- For the purposes of packetizing the bit stream in RTP, it is only
- necessary to consider the sequence of bits as output by the Speex
- encoder [9], and present the same sequence to the decoder. The
- payload format described here maintains this sequence.
-
- A typical Speex frame, encoded at the maximum bitrate, is approx.
- 110 octets and the total number of Speex frames SHOULD be kept less
- than the path MTU to prevent fragmentation. Speex frames MUST NOT be
- fragmented across multiple RTP packets,
-
- An RTP packet MAY contain Speex frames of the same bit rate or of
- varying bit rates, since the bit-rate for a frame is conveyed in band
- with the signal.
-
- The encoding and decoding algorithm can change the bit rate at any 20
- msec frame boundary, with the bit rate change notification provided
- in-band with the bit stream. Each frame contains both "mode"
- (narrowband, wideband or ultra-wideband) and "sub-mode" (bit-rate)
- information in the bit stream. No out-of-band notification is
- required for the decoder to process changes in the bit rate sent by
- the encoder.
-
- It is RECOMMENDED that values of 8000, 16000 and 32000 be used for
- normal internet telephony applications, though the sample rate is
- supported at rates as low as 6000 Hz and as high as 48 kHz.
-
- The RTP payload MUST be padded to provide an integer number of octets
- as the payload length. These padding bits are LSB aligned in network
- octet order and consist of a 0 followed by all ones (until the end of
- the octet). This padding is only required for the last frame in the
- packet, and only to ensure the packet contents ends on an octet
- boundary.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 8]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-6. Example Speex packet
-
- In the example below we have a single Speex frame with 5 bits of
- padding to ensure the packet size falls on an octet boundary.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |V=2|P|X| CC |M| PT | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | synchronization source (SSRC) identifier |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | contributing source (CSRC) identifiers |
- | ... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |0 1 1 1 1|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 9]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-7. Multiple Speex frames in a RTP packet
-
- Below is an example of two Speex frames contained within one RTP
- packet. The Speex frame length in this example fall on an octet
- boundary so there is no padding.
-
- Speex codecs [9] are able to detect the the bitrate from the payload
- and are responsible for detecting the 20 msec boundaries between each
- frame.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |V=2|P|X| CC |M| PT | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | synchronization source (SSRC) identifier |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | contributing source (CSRC) identifiers |
- | ... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 10]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-8. MIME registration of Speex
-
- Full definition of the MIME [3] type for Speex will be part of the
- Ogg Vorbis MIME type definition application [8].
-
- MIME media type name: audio
-
- MIME subtype: speex
-
- Optional parameters:
-
- Required parameters: to be included in the Ogg MIME specification.
-
- Encoding considerations:
-
- Security Considerations:
-
- See Section 6 of RFC 3047.
-
- Interoperability considerations: none
-
- Published specification:
-
- Applications which use this media type:
-
- Additional information: none
-
- Person & email address to contact for further information:
-
- Greg Herlein <gherlein@herlein.com>
- Jean-Marc Valin <jean-marc.valin@hermes.usherb.ca>
-
- Intended usage: COMMON
-
- Author/Change controller:
-
- Author: Greg Herlein <gherlein@herlein.com>
- Change controller: Greg Herlein <gherlein@herlein.com>
- Change controller: IETF AVT Working Group
-
- This transport type signifies that the content is to be interpreted
- according to this document if the contents are transmitted over RTP.
- Should this transport type appear over a lossless streaming protocol
- such as TCP, the content encapsulation should be interpreted as an
- Ogg Stream in accordance with [8], with the exception that the
- content of the Ogg Stream may be assumed to be Speex audio and Speex
- audio only.
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 11]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-9. SDP usage of Speex
-
- When conveying information by SDP [4], the encoding name MUST be set
- to "speex". An example of the media representation in SDP for
- offering a single channel of Speex at 8000 samples per second might
- be:
-
- m=audio 8088 RTP/AVP 97
- a=rtpmap:97 speex/8000
-
- Note that the RTP payload type code of 97 is defined in this media
- definition to be 'mapped' to the speex codec at an 8kHz sampling
- frequency using the 'a=rtpmap' line. Any number from 96 to 127 could
- have been chosen (the allowed range for dynamic types).
-
- The value of the sampling frequency is typically 8000 for narrow band
- operation, 16000 for wide band operation, and 32000 for ultra-wide
- band operation.
-
- If for some reason the offerer has bandwidth limitations, the client
- may use the "b=" header, as explained in SDP [4]. The following
- example illustrates the case where the offerer cannot receive more
- than 10 kbit/s.
-
- m=audio 8088 RTP/AVP 97
- b=AS:10
- a=rtmap:97 speex/8000
-
- In this case, if the remote part agrees, it should configure its
- Speex encoder so that it does not use modes that produce more than 10
- kbit/s. Note that the "b=" constraint also applies on all payload
- types that may be proposed in the media line ("m=").
-
- An other way to make recommendations to the remote Speex encoder is
- to use its specific parameters via the a=fmtp: directive. The
- following parameters are defined for use in this way:
-
- ptime: duration of each packet in milliseconds.
-
- sr: actual sample rate in Hz.
-
- ebw: encoding bandwidth - either 'narrow' or 'wide' or 'ultra'
- (corresponds to nominal 8000, 16000, and 32000 Hz sampling rates).
-
- vbr: variable bit rate - either 'on' 'off' or 'vad' (defaults
- to off). If on, variable bit rate is enabled. If off, disabled.
- If set to 'vad' then constant bit rate is used but silence will be
- encoded with special short frames to indicate a lack of voice for
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 12]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
- that period.
-
- cng: comfort noise generation - either 'on' or 'off'. If off
- then silence frames will be silent; if 'on' then those frames will
- be filled with comfort noise.
-
- mode: Speex encoding mode. Can be {1,2,3,4,5,6,any} defaults to
- 3 in narrowband, 6 in wide and ultra-wide.
-
- penh: use of perceptual enhancement. 1 indicates to the decoder
- that perceptual enhancement is recommended, 0 indicates that it is
- not. Defaults to on (1).
-
-
- Examples:
-
- m=audio 8008 RTP/AVP 97
- a=rtpmap:97 speex/8000
- a=fmtp:97 mode=4
-
- This examples illustrate an offerer that wishes to receive a Speex
- stream at 8000Hz, but only using speex mode 3.
-
- The offerer may suggest to the remote decoder to activate its
- perceptual enhancement filter like this:
-
- m=audio 8088 RTP/AVP 97
- a=rtmap:97 speex/8000
- a=fmtp:97 penh=1
-
- Several Speex specific parameters can be given in a single a=fmtp
- line provided that they are separated by a semi-colon:
-
- a=fmtp:97 mode=any;penh=1
-
- The offerer may indicate that it wishes to send variable bit rate
- frames with comfort noise:
-
- m=audio 8088 RTP/AVP 97
- a=rtmap:97 speex/8000
- a=fmtp:97 vbr=on;cng=on
-
- The "ptime" attribute is used to denote the packetization interval
- (ie, how many milliseconds of audio is encoded in a single RTP
- packet). Since Speex uses 20 msec frames, ptime values of multiples
- of 20 denote multiple Speex frames per packet. Values of ptime which
- are not multiples of 20 MUST be ignored and clients MUST use the
- default value of 20 instead.
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 13]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
- In the example below the ptime value is set to 40, indicating that
- there are 2 frames in each packet.
-
- m=audio 8008 RTP/AVP 97
- a=rtpmap:97 speex/8000
- a=ptime:40
-
- Note that the ptime parameter applies to all payloads listed in the
- media line and is not used as part of an a=fmtp directive.
-
- Values of ptime not multiple of 20 msec are meaningless, so the
- receiver of such ptime values MUST ignore them. If during the life
- of an RTP session the ptime value changes, when there are multiple
- Speex frames for example, the SDP value must also reflect the new
- value.
-
- Care must be taken when setting the value of ptime so that the RTP
- packet size does not exceed the path MTU.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 14]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-10. ITU H.323/H.245 Use of Speex
-
- Application is underway to make Speex a standard ITU codec. However,
- until that is finalized, Speex MAY be used in H.323 [5] by using a
- non-standard codec block definition in the H.245 [6] codec capability
- negotiations.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 15]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-11. NonStandardMessage format
-
- For Speex use in H.245 [6] based systems, the fields in the
- NonStandardMessage should be:
-
- t35CountryCode = Hex: B5
- t35Extension = Hex: 00
- manufacturerCode = Hex: 0026
- [Length of the Binary Sequence (8 bit number)]
- [Binary Sequence consisting of an ASCII string, no NULL
- terminator]
-
- The binary sequence is an ascii string merely for ease of use. The
- string is not null terminated. The format of this string is
-
- speex [optional variables]
-
- The optional variables are identical to those used for the SDP a=fmtp
- strings discussed in section 5 above. The string is built to be all
- on one line, each key-value pair separated by a semi-colon. The
- optional variables MAY be omitted, which causes the default values to
- be assumed. They are:
-
- ebw=narrow;mode=3;vbr=off;cng=off;ptime=20;sr=8000;penh=no;
-
- The fifth octet of the block is the length of the binary sequence.
-
- NOTE: this method can result in the advertising of a large number of
- Speex 'codecs' based on the number of variables possible. For most
- VoIP applications, use of the default binary sequence of 'speex' is
- RECOMMENDED to be used in addition to all other options. This
- maximizes the chances that two H.323 based applications that support
- Speex can find a mutual codec.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 16]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-12. RTP Payload Types
-
- Dynamic payload type codes MUST be negotiated 'out-of-band' for the
- assignment of a dynamic payload type from the range of 96-127. H.323
- applications MUST use the H.245 H2250LogicalChannelParameters
- encoding to accomplish this.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 17]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-13. Security Considerations
-
- RTP packets using the payload format defined in this specification
- are subject to the security considerations discussed in the RTP
- specification [2], and any appropriate RTP profile. This implies
- that confidentiality of the media streams is achieved by encryption.
- Because the data compression used with this payload format is applied
- end-to-end, encryption may be performed after compression so there is
- no conflict between the two operations.
-
- A potential denial-of-service threat exists for data encodings using
- compression techniques that have non-uniform receiver-end
- computational load. The attacker can inject pathological datagrams
- into the stream which are complex to decode and cause the receiver to
- be overloaded. However, this encoding does not exhibit any
- significant non-uniformity.
-
- As with any IP-based protocol, in some circumstances a receiver may
- be overloaded simply by the receipt of too many packets, either
- desired or undesired. Network-layer authentication may be used to
- discard packets from undesired sources, but the processing cost of
- the authentication itself may be too high.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 18]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-14. Acknowledgments
-
- The authors would like to thank Equivalence Pty Ltd of Australia for
- their assistance in attempting to standardize the use of Speex in
- H.323 applications, and for implementing Speex in their open source
- OpenH323 stack. The authors would also like to thank Brian C. Wiles
- <brian@streamcomm.com> of StreamComm for his assistance in developing
- the proposed standard for Speex use in H.323 applications.
-
- The authors would also like to thank the following members of the
- Speex and AVT communities for their input: Ross Finlayson, Federico
- Montesino Pouzols, Henning Schulzrinne, Magnus Westerlund.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 19]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-15. References
-
-15.1 Normative References
-
- [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", RFC 2119.
-
- [2] Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson,
- "RTP: A Transport Protocol for real-time applications", RFC
- 3550.
-
- [3] "Multipurpose Internet Mail Extensions (MIME) Part One: Format
- of Internet Message Bodies", RFC 2045.
-
- [4] Jacobson, V. and M. Handley, "SDP: Session Description
- Protocol", RFC 2327.
-
- [5] "Packet-based Multimedia Communications Systems", ITU-T
- Recommendation H.323.
-
- [6] "Control of communications between Visual Telephone Systems and
- Terminal Equipment", ITU-T Recommendation H.245.
-
- [7] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video
- Conferences with Minimal Control.", RFC 3551.
-
- [8] Walleij, L., "The application/ogg Media Type", RFC 3534.
-
-15.2 Informative References
-
- [9] "Speexenc/speexdec, reference command-line encoder/decoder",
- Speex website http://www.speex.org/.
-
- [10] "CELP, U.S. Federal Standard 1016.", National Technical
- Information Service (NTIS) website http://www.ntis.gov/.
-
-
-Authors' Addresses
-
- Greg Herlein
- 2034 Filbert Street
- San Francisco, California 94123
- United States
-
- EMail: gherlein@herlein.com
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 20]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
- Simon Morlat
- 35, av de Vizille App 42
- Grenoble 38000
- France
-
- EMail: simon.morlat@linphone.org
-
-
- Jean-Marc Valin
- Department of Electrical and Computer Engineering
- University of Sherbrooke
- 2500 blvd Universite
- Sherbrooke, Quebec J1K 2R1
- Canada
-
- EMail: jean-marc.valin@hermes.usherb.ca
-
-
- Roger Hardiman
- 49 Nettleton Road
- Cheltenham, Gloucestershire GL51 6NR
- England
-
- EMail: roger@freebsd.org
-
-
- Phil Kerr
- England
-
- EMail: phil@plus24.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 21]
-
-Internet-Draft draft-herlein-speex-rtp-profile-03 January 2005
-
-
-Intellectual Property Statement
-
- The IETF takes no position regarding the validity or scope of any
- Intellectual Property Rights or other rights that might be claimed to
- pertain to the implementation or use of the technology described in
- this document or the extent to which any license under such rights
- might or might not be available; nor does it represent that it has
- made any independent effort to identify any such rights. Information
- on the procedures with respect to rights in RFC documents can be
- found in BCP 78 and BCP 79.
-
- Copies of IPR disclosures made to the IETF Secretariat and any
- assurances of licenses to be made available, or the result of an
- attempt made to obtain a general license or permission for the use of
- such proprietary rights by implementers or users of this
- specification can be obtained from the IETF on-line IPR repository at
- http://www.ietf.org/ipr.
-
- The IETF invites any interested party to bring to its attention any
- copyrights, patents or patent applications, or other proprietary
- rights that may cover technology that may be required to implement
- this standard. Please address the information to the IETF at
- ietf-ipr@ietf.org.
-
-
-Disclaimer of Validity
-
- This document and the information contained herein are provided on an
- "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
- OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
- ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
- INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
- INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
- WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-
-Copyright Statement
-
- Copyright (C) The Internet Society (2005). This document is subject
- to the rights, licenses and restrictions contained in BCP 78, and
- except as set forth therein, the authors retain all their rights.
-
-
-Acknowledgment
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-Herlein, et al. Expires July 2, 2005 [Page 22]
-
diff --git a/3rdparty/speex/doc/draft-herlein-speex-rtp-profile-03.xml b/3rdparty/speex/doc/draft-herlein-speex-rtp-profile-03.xml
deleted file mode 100644
index 709efcdf..00000000
--- a/3rdparty/speex/doc/draft-herlein-speex-rtp-profile-03.xml
+++ /dev/null
@@ -1,815 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE rfc SYSTEM 'rfc2629.dtd'>
-<?rfc toc="yes" ?>
-
-<rfc ipr="full3667" docName="RTP Payload Format for the Speex Codec">
-
-<front>
-<title>draft-herlein-speex-rtp-profile-03</title>
-
-<author initials="G" surname="Herlein" fullname="Greg Herlein">
-<organization></organization>
-<address>
-<email>gherlein@herlein.com</email>
-<postal>
-<street>2034 Filbert Street</street>
-<city>San Francisco</city>
-<region>California</region>
-<code>94123</code>
-<country>United States</country>
-</postal>
-</address>
-</author>
-
-<author initials="S" surname="Morlat" fullname="Simon Morlat">
-<address>
-<email>simon.morlat@linphone.org</email>
-<postal>
-<street>35, av de Vizille App 42</street>
-<city>Grenoble</city>
-<code>38000</code>
-<country>France</country>
-</postal>
-</address>
-</author>
-
-<author initials="J" surname="Jean-Marc" fullname="Jean-Marc Valin">
-<address>
-<email>jean-marc.valin@hermes.usherb.ca</email>
-<postal>
-<street>Department of Electrical and Computer Engineering</street>
-<street>University of Sherbrooke</street>
-<street>2500 blvd Universite</street>
-<city>Sherbrooke</city>
-<region>Quebec</region>
-<code>J1K 2R1</code>
-<country>Canada</country>
-</postal>
-</address>
-</author>
-
-<author initials="R" surname="Hardiman" fullname="Roger Hardiman">
-<address>
-<email>roger@freebsd.org</email>
-<postal>
-<street>49 Nettleton Road</street>
-<city>Cheltenham</city>
-<region>Gloucestershire</region>
-<code>GL51 6NR</code>
-<country>England</country>
-</postal>
-</address>
-</author>
-
-
-<author initials="P" surname="Kerr" fullname="Phil Kerr">
-<address>
-<email>phil@plus24.com</email>
-<postal>
-<country>England</country>
-</postal>
-</address>
-</author>
-
-<date day="01" month="January" year="2005" />
-
-<area>General</area>
-<workgroup>AVT Working Group</workgroup>
-<keyword>I-D</keyword>
-
-<keyword>Internet-Draft</keyword>
-<keyword>Speex</keyword>
-<keyword>RTP</keyword>
-<abstract>
-<t>
-Speex is an open-source voice codec suitable for use in Voice over
-IP (VoIP) type applications. This document describes the payload
-format for Speex generated bit streams within an RTP packet. Also
-included here are the necessary details for the use of Speex with
-the Session Description Protocol (SDP) and a preliminary method of
-using Speex within H.323 applications.
-</t>
-</abstract>
-</front>
-
-<middle>
-
-<section anchor="Conventions used in this document" title="Conventions used in this document">
-<t>
-The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
-"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
-document are to be interpreted as described in RFC 2119 <xref target="rfc2119"></xref>.
-</t>
-</section>
-
-<section anchor="Overview of the Speex Codec" title="Overview of the Speex Codec">
-
-<t>
-Speex is based on the CELP <xref target="CELP"></xref> encoding technique with support for
-either narrowband (nominal 8kHz), wideband (nominal 16kHz) or
-ultra-wideband (nominal 32kHz), and (non-optimal) rates up to 48 kHz
-sampling also available. The main characteristics can be summarized
-as follows:
-</t>
-
-<t>
-<list style="symbols">
-<t>Free software/open-source</t>
-<t>Integration of wideband and narrowband in the same bit-stream</t>
-<t>Wide range of bit-rates available</t>
-<t>Dynamic bit-rate switching and variable bit-rate (VBR)</t>
-<t>Voice Activity Detection (VAD, integrated with VBR)</t>
-<t>Variable complexity</t>
-</list>
-</t>
-
-</section>
-
-<section anchor="RTP payload format for Speex" title="RTP payload format for Speex">
-
-<t>
-For RTP based transportation of Speex encoded audio the standard
-RTP header [2] is followed by one or more payload data blocks.
-An optional padding terminator may also be used.
-</t>
-<artwork><![CDATA[
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | RTP Header |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | one or more frames of Speex .... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | one or more frames of Speex .... | padding |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-]]></artwork>
-
-</section>
-
-<section anchor="RTP Header" title="RTP Header">
-
-<artwork><![CDATA[
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |V=2|P|X| CC |M| PT | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | synchronization source (SSRC) identifier |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | contributing source (CSRC) identifiers |
- | ... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-]]></artwork>
-
-<t>
-The RTP header begins with an octet of fields (V, P, X, and CC) to
-support specialized RTP uses (see <xref target="rfc3550"></xref> and <xref target="rfc3551"></xref> for details). For
-Speex the following values are used.
-</t>
-
-<t>Version (V): 2 bits</t><t>
- This field identifies the version of RTP. The version
- used by this specification is two <xref target="rfc3550"></xref>.
-</t>
-
-<t>Padding (P): 1 bit</t><t>
- If the padding bit is set, the packet contains one or more
- additional padding octets at the end which are not part of
- the payload. P is set if the total packet size is less than
- the MTU.
-</t>
-
-<t>Extension (X): 1 bit</t><t>
- If the extension, X, bit is set, the fixed header MUST be
- followed by exactly one header extension, with a format defined
- in Section 5.3.1. of <xref target="rfc3550"></xref>.
-</t>
-
-<t>CSRC count (CC): 4 bits</t><t>
- The CSRC count contains the number of CSRC identifiers.
-</t>
-
-<t>Marker (M): 1 bit</t><t>
- The M bit indicates if the packet contains comfort noise. This
- field is used in conjunction with the cng SDP attribute and is
- detailed further in section 5 below. In normal usage this bit
- is set if the packet contains comfort noise.
-</t>
-
-<t>Payload Type (PT): 7 bits</t><t>
- An RTP profile for a class of applications is expected to assign
- a payload type for this format, or a dynamically allocated
- payload type SHOULD be chosen which designates the payload as
- Speex.
-</t>
-
-<t>Sequence number: 16 bits</t><t>
- The sequence number increments by one for each RTP data packet
- sent, and may be used by the receiver to detect packet loss and
- to restore packet sequence. This field is detailed further in
- <xref target="rfc3550"></xref>.
-</t>
-
-<t>Timestamp: 32 bits</t><t>
- A timestamp representing the sampling time of the first sample of
- the first Speex packet in the RTP packet. The clock frequency
- MUST be set to the sample rate of the encoded audio data.
-
- Speex uses 20 msec frames and a variable sampling rate clock.
- The RTP timestamp MUST be in units of 1/X of a second where X
- is the sample rate used. Speex uses a nominal 8kHz sampling rate
- for narrowband use, a nominal 16kHz sampling rate for wideband use,
- and a nominal 32kHz sampling rate for ultra-wideband use.
-</t>
-
-<t>SSRC/CSRC identifiers:</t><t>
- These two fields, 32 bits each with one SSRC field and a maximum
- of 16 CSRC fields, are as defined in <xref target="rfc3550"></xref>.
-</t>
-
-</section>
-
-<section anchor="Speex payload" title="Speex payload">
-
-<t>
-For the purposes of packetizing the bit stream in RTP, it is only
-necessary to consider the sequence of bits as output by the Speex
-encoder <xref target="speexenc"></xref>, and present the same sequence to the decoder. The
-payload format described here maintains this sequence.
-</t>
-
-<t>
-A typical Speex frame, encoded at the maximum bitrate, is approx.
-110 octets and the total number of Speex frames SHOULD be kept
-less than the path MTU to prevent fragmentation. Speex frames MUST
-NOT be fragmented across multiple RTP packets,
-</t>
-
-<t>
-An RTP packet MAY contain Speex frames of the same bit rate or of
-varying bit rates, since the bit-rate for a frame is conveyed in
-band with the signal.
-</t>
-
-<t>
-The encoding and decoding algorithm can change the bit rate at any
-20 msec frame boundary, with the bit rate change notification provided
-in-band with the bit stream. Each frame contains both "mode"
-(narrowband, wideband or ultra-wideband) and "sub-mode" (bit-rate)
-information in the bit stream. No out-of-band notification is
-required for the decoder to process changes in the bit rate sent
-by the encoder.
-</t>
-
-<t>
-It is RECOMMENDED that values of 8000, 16000 and 32000 be used
-for normal internet telephony applications, though the sample
-rate is supported at rates as low as 6000 Hz and as high as
-48 kHz.
-</t>
-
-<t>
-The RTP payload MUST be padded to provide an integer number of
-octets as the payload length. These padding bits are LSB aligned
-in network octet order and consist of a 0 followed by all ones
-(until the end of the octet). This padding is only required for
-the last frame in the packet, and only to ensure the packet
-contents ends on an octet boundary.
-</t>
-
-</section>
-
-<section anchor="Example Speex packet" title="Example Speex packet">
-
-<t>
-In the example below we have a single Speex frame with 5 bits
-of padding to ensure the packet size falls on an octet boundary.
-</t>
-
-<artwork><![CDATA[
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |V=2|P|X| CC |M| PT | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | synchronization source (SSRC) identifier |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | contributing source (CSRC) identifiers |
- | ... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |0 1 1 1 1|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-]]></artwork>
-
-</section>
-
-<section anchor="Multiple Speex frames in a RTP packet" title="Multiple Speex frames in a RTP packet">
-
-<t>
-Below is an example of two Speex frames contained within one RTP
-packet. The Speex frame length in this example fall on an octet
-boundary so there is no padding.
-</t>
-
-<t>
-Speex codecs <xref target="speexenc"></xref> are able to detect the the bitrate from the
-payload and are responsible for detecting the 20 msec boundaries
-between each frame.
-</t>
-
-<artwork><![CDATA[
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |V=2|P|X| CC |M| PT | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | synchronization source (SSRC) identifier |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | contributing source (CSRC) identifiers |
- | ... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-]]></artwork>
-
-</section>
-
-<section anchor="MIME registration of Speex" title="MIME registration of Speex">
-
-<t>
-Full definition of the MIME <xref target="rfc2045"></xref> type for Speex will be part of the Ogg
-Vorbis MIME type definition application <xref target="rfc3534"></xref>.
-</t>
-
-<t>MIME media type name: audio</t>
-
-<t>MIME subtype: speex</t>
-
-<t>Optional parameters:</t>
-
-<t>Required parameters: to be included in the Ogg MIME specification.</t>
-
-<t>Encoding considerations:</t>
-
-<t>Security Considerations:</t>
-<t>See Section 6 of RFC 3047.</t>
-
-<t>Interoperability considerations: none</t>
-
-<t>Published specification: </t>
-
-<t>Applications which use this media type:</t>
-
-<t>Additional information: none</t>
-
-<t>Person &amp; email address to contact for further information:<vspace blankLines="1" />
-<list style="empty">
-<t>Greg Herlein &lt;gherlein@herlein.com&gt;</t>
-<t>Jean-Marc Valin &lt;jean-marc.valin@hermes.usherb.ca&gt;</t>
-</list>
-</t>
-
-<t>Intended usage: COMMON</t>
-
-<t>Author/Change controller:</t>
-
-<t>
-<list style="empty">
-<t>Author: Greg Herlein &lt;gherlein@herlein.com&gt;</t>
-<t>Change controller: Greg Herlein &lt;gherlein@herlein.com&gt;</t>
-<t>Change controller: IETF AVT Working Group</t>
-</list>
-</t>
-
-<t>
-This transport type signifies that the content is to be interpreted
-according to this document if the contents are transmitted over RTP.
-Should this transport type appear over a lossless streaming protocol
-such as TCP, the content encapsulation should be interpreted as an
-Ogg Stream in accordance with <xref target="rfc3534"></xref>, with the exception that the
-content of the Ogg Stream may be assumed to be Speex audio and
-Speex audio only.
-</t>
-
-</section>
-
-<section anchor="SDP usage of Speex" title="SDP usage of Speex">
-
-<t>
-When conveying information by SDP <xref target="rfc2327"></xref>, the encoding name MUST be
-set to "speex". An example of the media representation in SDP for
-offering a single channel of Speex at 8000 samples per second might
-be:
-</t>
-
-<vspace blankLines="1" />
-<list style="empty">
-<t>m=audio 8088 RTP/AVP 97</t>
-<t>a=rtpmap:97 speex/8000</t>
-</list>
-
-<t>
-Note that the RTP payload type code of 97 is defined in this media
-definition to be 'mapped' to the speex codec at an 8kHz sampling
-frequency using the 'a=rtpmap' line. Any number from 96 to 127
-could have been chosen (the allowed range for dynamic types).
-</t>
-
-<t>
-The value of the sampling frequency is typically 8000 for narrow band
-operation, 16000 for wide band operation, and 32000 for ultra-wide
-band operation.
-</t>
-
-<t>
-If for some reason the offerer has bandwidth limitations, the client
-may use the "b=" header, as explained in SDP <xref target="rfc2327"></xref>. The following example
-illustrates the case where the offerer cannot receive more than
-10 kbit/s.
-</t>
-
-<vspace blankLines="1" />
-<list style="empty">
-<t>m=audio 8088 RTP/AVP 97</t>
-<t>b=AS:10</t>
-<t>a=rtmap:97 speex/8000</t>
-</list>
-
-<t>
-In this case, if the remote part agrees, it should configure its
-Speex encoder so that it does not use modes that produce more than
-10 kbit/s. Note that the "b=" constraint also applies on all
-payload types that may be proposed in the media line ("m=").
-</t>
-
-<t>
-An other way to make recommendations to the remote Speex encoder
-is to use its specific parameters via the a=fmtp: directive. The
-following parameters are defined for use in this way:
-</t>
-
-<vspace blankLines="1" />
-<list style="empty">
-<t>ptime: duration of each packet in milliseconds.<vspace blankLines="1" /></t>
-
-<t>sr: actual sample rate in Hz.<vspace blankLines="1" /></t>
-
-<t>ebw: encoding bandwidth - either 'narrow' or 'wide' or
- 'ultra' (corresponds to nominal 8000, 16000, and
- 32000 Hz sampling rates).<vspace blankLines="1" /></t>
-
-<t>vbr: variable bit rate - either 'on' 'off' or 'vad'
- (defaults to off). If on, variable bit rate is
- enabled. If off, disabled. If set to 'vad' then
- constant bit rate is used but silence will be encoded
- with special short frames to indicate a lack of voice
- for that period.<vspace blankLines="1" /></t>
-
-<t>cng: comfort noise generation - either 'on' or 'off'. If
- off then silence frames will be silent; if 'on' then
- those frames will be filled with comfort noise.<vspace blankLines="1" /></t>
-
-<t>mode: Speex encoding mode. Can be {1,2,3,4,5,6,any}
- defaults to 3 in narrowband, 6 in wide and ultra-wide.<vspace blankLines="1" /></t>
-
-<t>penh: use of perceptual enhancement. 1 indicates
- to the decoder that perceptual enhancement is recommended,
- 0 indicates that it is not. Defaults to on (1).<vspace blankLines="1" /></t>
-</list>
-
-<t>Examples:</t>
-
-<vspace blankLines="1" />
-<list style="empty">
- <t>m=audio 8008 RTP/AVP 97</t>
- <t>a=rtpmap:97 speex/8000</t>
- <t>a=fmtp:97 mode=4</t>
-</list>
-
-<t>
-This examples illustrate an offerer that wishes to receive
-a Speex stream at 8000Hz, but only using speex mode 3.
-</t>
-
-<t>
-The offerer may suggest to the remote decoder to activate
-its perceptual enhancement filter like this:
-</t>
-
-<vspace blankLines="1" />
-<list style="empty">
- <t>m=audio 8088 RTP/AVP 97</t>
- <t>a=rtmap:97 speex/8000</t>
- <t>a=fmtp:97 penh=1 </t>
-</list>
-
-<t>
-Several Speex specific parameters can be given in a single
-a=fmtp line provided that they are separated by a semi-colon:
-</t>
-
-<vspace blankLines="1" />
-<list style="empty">
- <t>a=fmtp:97 mode=any;penh=1</t>
-</list>
-
-<t>
-The offerer may indicate that it wishes to send variable bit rate
-frames with comfort noise:
-</t>
-
-<vspace blankLines="1" />
-<list style="empty">
- <t>m=audio 8088 RTP/AVP 97</t>
- <t>a=rtmap:97 speex/8000</t>
- <t>a=fmtp:97 vbr=on;cng=on</t>
-</list>
-
-<t>
-The "ptime" attribute is used to denote the packetization
-interval (ie, how many milliseconds of audio is encoded in a
-single RTP packet). Since Speex uses 20 msec frames, ptime values
-of multiples of 20 denote multiple Speex frames per packet.
-Values of ptime which are not multiples of 20 MUST be ignored
-and clients MUST use the default value of 20 instead.
-</t>
-
-<t>
-In the example below the ptime value is set to 40, indicating that
-there are 2 frames in each packet.
-</t>
-
-<vspace blankLines="1" />
-<list style="empty">
- <t>m=audio 8008 RTP/AVP 97</t>
- <t>a=rtpmap:97 speex/8000</t>
- <t>a=ptime:40</t>
-</list>
-
-<t>
-Note that the ptime parameter applies to all payloads listed
-in the media line and is not used as part of an a=fmtp directive.
-</t>
-
-<t>
-Values of ptime not multiple of 20 msec are meaningless, so the
-receiver of such ptime values MUST ignore them. If during the
-life of an RTP session the ptime value changes, when there are
-multiple Speex frames for example, the SDP value must also reflect
-the new value.
-</t>
-
-<t>
-Care must be taken when setting the value of ptime so that the
-RTP packet size does not exceed the path MTU.
-</t>
-
-</section>
-<section anchor="ITU H.323/H.245 Use of Speex" title="ITU H.323/H.245 Use of Speex">
-
-<t>
-Application is underway to make Speex a standard ITU codec.
-However, until that is finalized, Speex MAY be used in H.323 <xref target="H323"></xref> by
-using a non-standard codec block definition in the H.245 <xref target="H245"></xref> codec
-capability negotiations.
-</t>
-
-</section>
-
-<section anchor="NonStandardMessage format" title="NonStandardMessage format">
-
-<t>
-For Speex use in H.245 <xref target="H245"></xref> based systems, the fields in the
-NonStandardMessage should be:
-</t>
-
-<vspace blankLines="1" />
-<list style="empty">
-<t>t35CountryCode = Hex: B5</t>
-<t>t35Extension = Hex: 00</t>
-<t>manufacturerCode = Hex: 0026</t>
-<t>[Length of the Binary Sequence (8 bit number)]</t>
-<t>[Binary Sequence consisting of an ASCII string, no NULL terminator]</t>
-</list>
-
-<t>
-The binary sequence is an ascii string merely for ease of use.
-The string is not null terminated. The format of this string is
-</t>
-
-<vspace blankLines="1" />
-<list style="empty">
-<t>speex [optional variables]</t>
-</list>
-
-<t>
-The optional variables are identical to those used for the SDP
-a=fmtp strings discussed in section 5 above. The string is built
-to be all on one line, each key-value pair separated by a
-semi-colon. The optional variables MAY be omitted, which causes
-the default values to be assumed. They are:
-</t>
-
-<vspace blankLines="1" />
-<list style="empty">
-<t>ebw=narrow;mode=3;vbr=off;cng=off;ptime=20;sr=8000;penh=no;</t>
-</list>
-
-<t>
-The fifth octet of the block is the length of the binary sequence.
-</t>
-
-<t>
-NOTE: this method can result in the advertising of a large number
-of Speex 'codecs' based on the number of variables possible. For
-most VoIP applications, use of the default binary sequence of
-'speex' is RECOMMENDED to be used in addition to all other options.
-This maximizes the chances that two H.323 based applications that
-support Speex can find a mutual codec.
-</t>
-
-</section>
-
-<section anchor="RTP Payload Types" title="RTP Payload Types">
-
-<t>
-Dynamic payload type codes MUST be negotiated 'out-of-band'
-for the assignment of a dynamic payload type from the
-range of 96-127. H.323 applications MUST use the H.245
-H2250LogicalChannelParameters encoding to accomplish this.
-</t>
-
-</section>
-
-<section anchor="Security Considerations" title="Security Considerations">
-
-<t>
-RTP packets using the payload format defined in this specification
-are subject to the security considerations discussed in the RTP
-specification <xref target="rfc3550"></xref>, and any appropriate RTP profile. This implies
-that confidentiality of the media streams is achieved by encryption.
-Because the data compression used with this payload format is applied
-end-to-end, encryption may be performed after compression so there is
-no conflict between the two operations.
-</t>
-
-<t>
-A potential denial-of-service threat exists for data encodings using
-compression techniques that have non-uniform receiver-end
-computational load. The attacker can inject pathological datagrams
-into the stream which are complex to decode and cause the receiver to
-be overloaded. However, this encoding does not exhibit any
-significant non-uniformity.
-</t>
-
-<t>
-As with any IP-based protocol, in some circumstances a receiver may
-be overloaded simply by the receipt of too many packets, either
-desired or undesired. Network-layer authentication may be used to
-discard packets from undesired sources, but the processing cost of
-the authentication itself may be too high.
-</t>
-
-</section>
-
-<section anchor="Acknowledgments" title="Acknowledgments">
-
-<t>
-The authors would like to thank Equivalence Pty Ltd of Australia
-for their assistance in attempting to standardize the use of Speex
-in H.323 applications, and for implementing Speex in their open
-source OpenH323 stack. The authors would also like to thank Brian
-C. Wiles &lt;brian@streamcomm.com&gt; of StreamComm for his assistance in
-developing the proposed standard for Speex use in H.323
-applications.
-</t>
-
-<t>
-The authors would also like to thank the following members of the
-Speex and AVT communities for their input: Ross Finlayson,
-Federico Montesino Pouzols, Henning Schulzrinne, Magnus Westerlund.
-</t>
-</section>
-
-</middle>
-
-<back>
-
-<references title="Normative References">
-
-<reference anchor="rfc2119">
-<front>
-<title>Key words for use in RFCs to Indicate Requirement Levels </title>
-<author initials="S." surname="Bradner" fullname="Scott Bradner"></author>
-</front>
-<seriesInfo name="RFC" value="2119" />
-</reference>
-
-<reference anchor="rfc3550">
-<front>
-<title>RTP: A Transport Protocol for real-time applications</title>
-<author initials="H." surname="Schulzrinne" fullname=""></author>
-<author initials="S." surname="Casner" fullname=""></author>
-<author initials="R." surname="Frederick" fullname=""></author>
-<author initials="V." surname="Jacobson" fullname=""></author>
-</front>
-<seriesInfo name="RFC" value="3550" />
-</reference>
-
-<reference anchor="rfc2045">
-<front>
-<title>Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies</title>
-<author initials="" surname="" fullname=""></author>
-</front>
-<date month="November" year="1998" />
-<seriesInfo name="RFC" value="2045" />
-</reference>
-
-<reference anchor="rfc2327">
-<front>
-<title>SDP: Session Description Protocol</title>
-<author initials="V." surname="Jacobson" fullname=""></author>
-<author initials="M." surname="Handley" fullname=""></author>
-</front>
-<date month="April" year="1998" />
-<seriesInfo name="RFC" value="2327" />
-</reference>
-
-<reference anchor="H323">
-<front>
-<title>Packet-based Multimedia Communications Systems</title>
-<author initials="" surname="" fullname=""></author>
-</front>
-<date month="" year="1998" />
-<seriesInfo name="ITU-T Recommendation" value="H.323" />
-</reference>
-
-<reference anchor="H245">
-<front>
-<title>Control of communications between Visual Telephone Systems and Terminal Equipment</title>
-<author initials="" surname="" fullname=""></author>
-</front>
-<date month="" year="1998" />
-<seriesInfo name="ITU-T Recommendation" value="H.245" />
-</reference>
-
-<reference anchor="rfc3551">
-<front>
-<title>RTP Profile for Audio and Video Conferences with Minimal Control.</title>
-<author initials="H." surname="Schulzrinne" fullname=""></author>
-<author initials="S." surname="Casner" fullname=""></author>
-</front>
-<date month="July" year="2003" />
-<seriesInfo name="RFC" value="3551" />
-</reference>
-
-<reference anchor="rfc3534">
-<front>
-<title>The application/ogg Media Type</title>
-<author initials="L." surname="Walleij" fullname=""></author>
-</front>
-<date month="May" year="2003" />
-<seriesInfo name="RFC" value="3534" />
-</reference>
-
-</references>
-
-<references title="Informative References">
-
-<reference anchor="speexenc">
-<front>
-<title>Speexenc/speexdec, reference command-line encoder/decoder</title>
-</front>
-<seriesInfo name="Speex website" value="http://www.speex.org/" />
-</reference>
-
-<reference anchor="CELP">
-<front>
-<title>CELP, U.S. Federal Standard 1016.</title>
-<author initials="" surname="" fullname=""></author>
-</front>
-<seriesInfo name="National Technical Information Service (NTIS) website" value="http://www.ntis.gov/" />
-</reference>
-
-</references>
-
-</back>
-</rfc>
diff --git a/3rdparty/speex/doc/draft-ietf-avt-rtp-speex-00.txt b/3rdparty/speex/doc/draft-ietf-avt-rtp-speex-00.txt
deleted file mode 100644
index 53facab4..00000000
--- a/3rdparty/speex/doc/draft-ietf-avt-rtp-speex-00.txt
+++ /dev/null
@@ -1,784 +0,0 @@
-
-
-
-AVT Working Group G. Herlein
-Internet-Draft S. Morlat
-Expires: April 15, 2006 J. Jean-Marc
- R. Hardiman
- P. Kerr
- October 12, 2005
-
-
- draft-ietf-avt-rtp-speex-00
- RTP Payload Format for the Speex Codec
-
-Status of this Memo
-
- By submitting this Internet-Draft, each author represents that any
- applicable patent or other IPR claims of which he or she is aware
- have been or will be disclosed, and any of which he or she becomes
- aware will be disclosed, in accordance with Section 6 of BCP 79.
-
- Internet-Drafts are working documents of the Internet Engineering
- Task Force (IETF), its areas, and its working groups. Note that
- other groups may also distribute working documents as Internet-
- Drafts.
-
- Internet-Drafts are draft documents valid for a maximum of six months
- and may be updated, replaced, or obsoleted by other documents at any
- time. It is inappropriate to use Internet-Drafts as reference
- material or to cite them other than as "work in progress."
-
- The list of current Internet-Drafts can be accessed at
- http://www.ietf.org/ietf/1id-abstracts.txt.
-
- The list of Internet-Draft Shadow Directories can be accessed at
- http://www.ietf.org/shadow.html.
-
- This Internet-Draft will expire on April 15, 2006.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (2005).
-
-Abstract
-
- Speex is an open-source voice codec suitable for use in Voice over IP
- (VoIP) type applications. This document describes the payload format
- for Speex generated bit streams within an RTP packet. Also included
- here are the necessary details for the use of Speex with the Session
- Description Protocol (SDP).
-
-
-
-
-Herlein, et al. Expires April 15, 2006 [Page 1]
-
-Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
-
-
-Editors Note
-
- All references to RFC XXXX are to be replaced by references to the
- RFC number of this memo, when published.
-
-Table of Contents
-
- 1. Conventions used in this document . . . . . . . . . . . . . 3
- 2. Overview of the Speex Codec . . . . . . . . . . . . . . . . 3
- 3. RTP payload format for Speex . . . . . . . . . . . . . . . . 3
- 4. RTP Header . . . . . . . . . . . . . . . . . . . . . . . . . 3
- 5. Speex payload . . . . . . . . . . . . . . . . . . . . . . . 5
- 6. Example Speex packet . . . . . . . . . . . . . . . . . . . . 6
- 7. Multiple Speex frames in a RTP packet . . . . . . . . . . . 6
- 8. MIME registration of Speex . . . . . . . . . . . . . . . . . 7
- 9. SDP usage of Speex . . . . . . . . . . . . . . . . . . . . . 8
- 10. ITU H.323 Use of Speex . . . . . . . . . . . . . . . . . . . 10
- 11. Security Considerations . . . . . . . . . . . . . . . . . . 10
- 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 11
- 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 11
- 13.1 Normative References . . . . . . . . . . . . . . . . . . 11
- 13.2 Informative References . . . . . . . . . . . . . . . . . 12
- Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 12
- Intellectual Property and Copyright Statements . . . . . . . 14
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires April 15, 2006 [Page 2]
-
-Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
-
-
-1. Conventions used in this document
-
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
- document are to be interpreted as described in RFC 2119 [1].
-
-2. Overview of the Speex Codec
-
- Speex is based on the CELP [8] encoding technique with support for
- either narrowband (nominal 8kHz), wideband (nominal 16kHz) or ultra-
- wideband (nominal 32kHz), and (non-optimal) rates up to 48 kHz
- sampling also available. The main characteristics can be summarized
- as follows:
-
- o Free software/open-source
- o Integration of wideband and narrowband in the same bit-stream
- o Wide range of bit-rates available
- o Dynamic bit-rate switching and variable bit-rate (VBR)
- o Voice Activity Detection (VAD, integrated with VBR)
- o Variable complexity
-
-3. RTP payload format for Speex
-
- For RTP based transportation of Speex encoded audio the standard RTP
- header [2] is followed by one or more payload data blocks. An
- optional padding terminator may also be used.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | RTP Header |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | one or more frames of Speex .... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | one or more frames of Speex .... | padding |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-4. RTP Header
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires April 15, 2006 [Page 3]
-
-Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |V=2|P|X| CC |M| PT | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | synchronization source (SSRC) identifier |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | contributing source (CSRC) identifiers |
- | ... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- The RTP header begins with an octet of fields (V, P, X, and CC) to
- support specialized RTP uses (see [2] and [5] for details). For
- Speex the following values are used.
-
- Version (V): 2 bits
-
- This field identifies the version of RTP. The version used by this
- specification is two [2].
-
- Padding (P): 1 bit
-
- If the padding bit is set, the packet contains one or more additional
- padding octets at the end which are not part of the payload.
-
- Extension (X): 1 bit
-
- If the extension, X, bit is set, the fixed header MUST be followed by
- exactly one header extension, with a format defined in Section 5.3.1.
- of [2].
-
- CSRC count (CC): 4 bits
-
- The CSRC count contains the number of CSRC identifiers.
-
- Marker (M): 1 bit
-
- The M bit indicates if the packet contains comfort noise. This field
- is used in conjunction with the cng SDP attribute and conforms to
- Section 4.1. of [5].
-
- Payload Type (PT): 7 bits
-
- An RTP profile for a class of applications is expected to assign a
- payload type for this format, or a dynamically allocated payload type
- SHOULD be chosen which designates the payload as Speex.
-
-
-
-Herlein, et al. Expires April 15, 2006 [Page 4]
-
-Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
-
-
- Sequence number: 16 bits
-
- The sequence number increments by one for each RTP data packet sent,
- and may be used by the receiver to detect packet loss and to restore
- packet sequence. This field is detailed further in [2].
-
- Timestamp: 32 bits
-
- A timestamp representing the sampling time of the first sample of the
- first Speex packet in the RTP packet. The clock frequency MUST be
- set to the sample rate of the encoded audio data. Speex uses 20 msec
- frames and a variable sampling rate clock. The RTP timestamp MUST be
- in units of 1/X of a second where X is the sample rate used. Speex
- uses a nominal 8kHz sampling rate for narrowband use, a nominal 16kHz
- sampling rate for wideband use, and a nominal 32kHz sampling rate for
- ultra-wideband use.
-
- SSRC/CSRC identifiers:
-
- These two fields, 32 bits each with one SSRC field and a maximum of
- 16 CSRC fields, are as defined in [2].
-
-5. Speex payload
-
- For the purposes of packetizing the bit stream in RTP, it is only
- necessary to consider the sequence of bits as output by the Speex
- encoder [7], and present the same sequence to the decoder. The
- payload format described here maintains this sequence.
-
- A typical Speex frame, encoded at the maximum bitrate, is approx. 110
- octets and the total number of Speex frames SHOULD be kept less than
- the path MTU to prevent fragmentation. Speex frames MUST NOT be
- fragmented across multiple RTP packets,
-
- An RTP packet MAY contain Speex frames of the same bit rate or of
- varying bit rates, since the bit-rate for a frame is conveyed in band
- with the signal.
-
- The encoding and decoding algorithm can change the bit rate at any 20
- msec frame boundary, with the bit rate change notification provided
- in-band with the bit stream. Each frame contains both "mode"
- (narrowband, wideband or ultra-wideband) and "sub-mode" (bit-rate)
- information in the bit stream. No out-of-band notification is
- required for the decoder to process changes in the bit rate sent by
- the encoder.
-
- It is RECOMMENDED that values of 8000, 16000 and 32000 be used for
- normal internet telephony applications, though the sample rate is
-
-
-
-Herlein, et al. Expires April 15, 2006 [Page 5]
-
-Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
-
-
- supported at rates as low as 6000 Hz and as high as 48 kHz.
-
- The RTP payload MUST be padded to provide an integer number of octets
- as the payload length. These padding bits are LSB aligned in network
- octet order and consist of a 0 followed by all ones (until the end of
- the octet). This padding is only required for the last frame in the
- packet, and only to ensure the packet contents ends on an octet
- boundary.
-
-6. Example Speex packet
-
- In the example below we have a single Speex frame with 5 bits of
- padding to ensure the packet size falls on an octet boundary.
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |V=2|P|X| CC |M| PT | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | synchronization source (SSRC) identifier |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | contributing source (CSRC) identifiers |
- | ... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |0 1 1 1 1|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-7. Multiple Speex frames in a RTP packet
-
- Below is an example of two Speex frames contained within one RTP
- packet. The Speex frame length in this example fall on an octet
- boundary so there is no padding.
-
- Speex codecs [7] are able to detect the bitrate from the payload and
- are responsible for detecting the 20 msec boundaries between each
- frame.
-
-
-
-
-
-Herlein, et al. Expires April 15, 2006 [Page 6]
-
-Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
-
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |V=2|P|X| CC |M| PT | sequence number |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | timestamp |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | synchronization source (SSRC) identifier |
- +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- | contributing source (CSRC) identifiers |
- | ... |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | ..speex data.. |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-8. MIME registration of Speex
-
- Full definition of the MIME [3] type for Speex will be part of the
- Ogg Vorbis MIME type definition application [6].
-
- MIME media type name: audio
-
- MIME subtype: speex
-
- Optional parameters:
-
- Required parameters: to be included in the Ogg MIME specification.
-
- Encoding considerations:
-
- This type is only defined for transfer via HTTP as specified in RFC
- XXXX.
-
- Security Considerations:
-
- See Section 6 of RFC 3047.
-
- Interoperability considerations: none
-
- Published specification:
-
- Applications which use this media type:
-
-
-
-Herlein, et al. Expires April 15, 2006 [Page 7]
-
-Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
-
-
- Additional information: none
-
- Person & email address to contact for further information:
-
- Greg Herlein <gherlein@herlein.com>
- Jean-Marc Valin <jean-marc.valin@usherbrooke.ca>
-
- Intended usage: COMMON
-
- Author/Change controller:
-
- Author: Greg Herlein <gherlein@herlein.com>
- Change controller: Greg Herlein <gherlein@herlein.com>
- Change controller: IETF AVT Working Group
-
- This transport type signifies that the content is to be interpreted
- according to this document if the contents are transmitted over RTP.
- Should this transport type appear over a lossless streaming protocol
- such as TCP, the content encapsulation should be interpreted as an
- Ogg Stream in accordance with [6], with the exception that the
- content of the Ogg Stream may be assumed to be Speex audio and Speex
- audio only.
-
-9. SDP usage of Speex
-
- When conveying information by SDP [4], the encoding name MUST be set
- to "speex". An example of the media representation in SDP for
- offering a single channel of Speex at 8000 samples per second might
- be:
-
- m=audio 8088 RTP/AVP 97
- a=rtpmap:97 speex/8000
-
- Note that the RTP payload type code of 97 is defined in this media
- definition to be 'mapped' to the speex codec at an 8kHz sampling
- frequency using the 'a=rtpmap' line. Any number from 96 to 127 could
- have been chosen (the allowed range for dynamic types).
-
- The value of the sampling frequency is typically 8000 for narrow band
- operation, 16000 for wide band operation, and 32000 for ultra-wide
- band operation.
-
- If for some reason the offerer has bandwidth limitations, the client
- may use the "b=" header, as explained in SDP [4]. The following
- example illustrates the case where the offerer cannot receive more
- than 10 kbit/s.
-
-
-
-
-
-Herlein, et al. Expires April 15, 2006 [Page 8]
-
-Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
-
-
- m=audio 8088 RTP/AVP 97
- b=AS:10
- a=rtmap:97 speex/8000
-
- In this case, if the remote part agrees, it should configure its
- Speex encoder so that it does not use modes that produce more than 10
- kbit/s. Note that the "b=" constraint also applies on all payload
- types that may be proposed in the media line ("m=").
-
- An other way to make recommendations to the remote Speex encoder is
- to use its specific parameters via the a=fmtp: directive. The
- following parameters are defined for use in this way:
-
- ptime: duration of each packet in milliseconds.
-
- sr: actual sample rate in Hz.
-
- ebw: encoding bandwidth - either 'narrow' or 'wide' or 'ultra'
- (corresponds to nominal 8000, 16000, and 32000 Hz sampling rates).
-
- vbr: variable bit rate - either 'on' 'off' or 'vad' (defaults
- to off). If on, variable bit rate is enabled. If off, disabled.
- If set to 'vad' then constant bit rate is used but silence will be
- encoded with special short frames to indicate a lack of voice for
- that period.
-
- cng: comfort noise generation - either 'on' or 'off'. If off
- then silence frames will be silent; if 'on' then those frames will
- be filled with comfort noise.
-
- mode: Speex encoding mode. Can be {1,2,3,4,5,6,any} defaults to
- 3 in narrowband, 6 in wide and ultra-wide.
-
-
- Examples:
-
- m=audio 8008 RTP/AVP 97
- a=rtpmap:97 speex/8000
- a=fmtp:97 mode=4
-
- This examples illustrate an offerer that wishes to receive a Speex
- stream at 8000Hz, but only using speex mode 4.
-
- Several Speex specific parameters can be given in a single a=fmtp
- line provided that they are separated by a semi-colon:
-
-
-
-
-
-
-Herlein, et al. Expires April 15, 2006 [Page 9]
-
-Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
-
-
- a=fmtp:97 mode=any;mode=1
-
- The offerer may indicate that it wishes to send variable bit rate
- frames with comfort noise:
-
- m=audio 8088 RTP/AVP 97
- a=rtmap:97 speex/8000
- a=fmtp:97 vbr=on;cng=on
-
- The "ptime" attribute is used to denote the packetization interval
- (ie, how many milliseconds of audio is encoded in a single RTP
- packet). Since Speex uses 20 msec frames, ptime values of multiples
- of 20 denote multiple Speex frames per packet. Values of ptime which
- are not multiples of 20 MUST be ignored and clients MUST use the
- default value of 20 instead.
-
- In the example below the ptime value is set to 40, indicating that
- there are 2 frames in each packet.
-
- m=audio 8008 RTP/AVP 97
- a=rtpmap:97 speex/8000
- a=ptime:40
-
- Note that the ptime parameter applies to all payloads listed in the
- media line and is not used as part of an a=fmtp directive.
-
- Values of ptime not multiple of 20 msec are meaningless, so the
- receiver of such ptime values MUST ignore them. If during the life
- of an RTP session the ptime value changes, when there are multiple
- Speex frames for example, the SDP value must also reflect the new
- value.
-
- Care must be taken when setting the value of ptime so that the RTP
- packet size does not exceed the path MTU.
-
-10. ITU H.323 Use of Speex
-
- It is outside the scope of this document to cover the use of Speex
- and H.323, more details may be found on the Speex website [9].
-
-11. Security Considerations
-
- RTP packets using the payload format defined in this specification
- are subject to the security considerations discussed in the RTP
- specification [2], and any appropriate RTP profile. This implies
- that confidentiality of the media streams is achieved by encryption.
- Because the data compression used with this payload format is applied
- end-to-end, encryption may be performed after compression so there is
-
-
-
-Herlein, et al. Expires April 15, 2006 [Page 10]
-
-Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
-
-
- no conflict between the two operations.
-
- A potential denial-of-service threat exists for data encodings using
- compression techniques that have non-uniform receiver-end
- computational load. The attacker can inject pathological datagrams
- into the stream which are complex to decode and cause the receiver to
- be overloaded. However, this encoding does not exhibit any
- significant non-uniformity.
-
- As with any IP-based protocol, in some circumstances a receiver may
- be overloaded simply by the receipt of too many packets, either
- desired or undesired. Network-layer authentication may be used to
- discard packets from undesired sources, but the processing cost of
- the authentication itself may be too high.
-
-12. Acknowledgments
-
- The authors would like to thank Equivalence Pty Ltd of Australia for
- their assistance in attempting to standardize the use of Speex in
- H.323 applications, and for implementing Speex in their open source
- OpenH323 stack. The authors would also like to thank Brian C. Wiles
- <brian@streamcomm.com> of StreamComm for his assistance in developing
- the proposed standard for Speex use in H.323 applications.
-
- The authors would also like to thank the following members of the
- Speex and AVT communities for their input: Ross Finlayson, Federico
- Montesino Pouzols, Henning Schulzrinne, Magnus Westerlund.
-
-13. References
-
-13.1 Normative References
-
- [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
- Levels", RFC 2119.
-
- [2] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson,
- "RTP: A Transport Protocol for real-time applications",
- RFC 3550.
-
- [3] "Multipurpose Internet Mail Extensions (MIME) Part One: Format
- of Internet Message Bodies", RFC 2045.
-
- [4] Jacobson, V. and M. Handley, "SDP: Session Description
- Protocol", RFC 2327.
-
- [5] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video
- Conferences with Minimal Control.", RFC 3551.
-
-
-
-
-Herlein, et al. Expires April 15, 2006 [Page 11]
-
-Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
-
-
- [6] Walleij, L., "The application/ogg Media Type", RFC 3534.
-
-13.2 Informative References
-
- [7] "Speexenc/speexdec, reference command-line encoder/decoder",
- Speex website http://www.speex.org/.
-
- [8] "CELP, U.S. Federal Standard 1016.", National Technical
- Information Service (NTIS) website http://www.ntis.gov/.
-
- [9] "ITU H.323/H.245 Use of Speex", Speex
- website http://www.speex.org/itu/.
-
-
-Authors' Addresses
-
- Greg Herlein
- 2034 Filbert Street
- San Francisco, California 94123
- United States
-
- Email: gherlein@herlein.com
-
-
- Simon Morlat
- 35, av de Vizille App 42
- Grenoble 38000
- France
-
- Email: simon.morlat@linphone.org
-
-
- Jean-Marc Valin
- Department of Electrical and Computer Engineering
- University of Sherbrooke
- 2500 blvd Universite
- Sherbrooke, Quebec J1K 2R1
- Canada
-
- Email: jean-marc.valin@usherbrooke.ca
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires April 15, 2006 [Page 12]
-
-Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
-
-
- Roger Hardiman
- 49 Nettleton Road
- Cheltenham, Gloucestershire GL51 6NR
- England
-
- Email: roger@freebsd.org
-
-
- Phil Kerr
- England
-
- Email: phil@plus24.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herlein, et al. Expires April 15, 2006 [Page 13]
-
-Internet-Draft draft-ietf-avt-rtp-speex-00 October 2005
-
-
-Intellectual Property Statement
-
- The IETF takes no position regarding the validity or scope of any
- Intellectual Property Rights or other rights that might be claimed to
- pertain to the implementation or use of the technology described in
- this document or the extent to which any license under such rights
- might or might not be available; nor does it represent that it has
- made any independent effort to identify any such rights. Information
- on the procedures with respect to rights in RFC documents can be
- found in BCP 78 and BCP 79.
-
- Copies of IPR disclosures made to the IETF Secretariat and any
- assurances of licenses to be made available, or the result of an
- attempt made to obtain a general license or permission for the use of
- such proprietary rights by implementers or users of this
- specification can be obtained from the IETF on-line IPR repository at
- http://www.ietf.org/ipr.
-
- The IETF invites any interested party to bring to its attention any
- copyrights, patents or patent applications, or other proprietary
- rights that may cover technology that may be required to implement
- this standard. Please address the information to the IETF at
- ietf-ipr@ietf.org.
-
-
-Disclaimer of Validity
-
- This document and the information contained herein are provided on an
- "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
- OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
- ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
- INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
- INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
- WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-
-Copyright Statement
-
- Copyright (C) The Internet Society (2005). This document is subject
- to the rights, licenses and restrictions contained in BCP 78, and
- except as set forth therein, the authors retain all their rights.
-
-
-Acknowledgment
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-Herlein, et al. Expires April 15, 2006 [Page 14]
-
diff --git a/3rdparty/speex/doc/echo_path.eps b/3rdparty/speex/doc/echo_path.eps
deleted file mode 100644
index c5a458c5..00000000
--- a/3rdparty/speex/doc/echo_path.eps
+++ /dev/null
@@ -1,1298 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%BoundingBox: 0 0 415 235
-%%Pages: 0
-%%Creator: Sun Microsystems, Inc.
-%%Title: none
-%%CreationDate: none
-%%LanguageLevel: 2
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset SDRes-Prolog 1.0 0
-/b4_inc_state save def
-/dict_count countdictstack def
-/op_count count 1 sub def
-userdict begin
-0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit[] 0 setdash newpath
-/languagelevel where {pop languagelevel 1 ne {false setstrokeadjust false setoverprint} if} if
-/bdef {bind def} bind def
-/c {setgray} bdef
-/l {neg lineto} bdef
-/rl {neg rlineto} bdef
-/lc {setlinecap} bdef
-/lj {setlinejoin} bdef
-/lw {setlinewidth} bdef
-/ml {setmiterlimit} bdef
-/ld {setdash} bdef
-/m {neg moveto} bdef
-/ct {6 2 roll neg 6 2 roll neg 6 2 roll neg curveto} bdef
-/r {rotate} bdef
-/t {neg translate} bdef
-/s {scale} bdef
-/sw {show} bdef
-/gs {gsave} bdef
-/gr {grestore} bdef
-/f {findfont dup length dict begin
-{1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def
-currentdict end /NFont exch definefont pop /NFont findfont} bdef
-/p {closepath} bdef
-/sf {scalefont setfont} bdef
-/ef {eofill}bdef
-/pc {closepath stroke}bdef
-/ps {stroke}bdef
-/pum {matrix currentmatrix}bdef
-/pom {setmatrix}bdef
-/bs {/aString exch def /nXOfs exch def /nWidth exch def currentpoint nXOfs 0 rmoveto pum nWidth aString stringwidth pop div 1 scale aString show pom moveto} bdef
-%%EndResource
-%%EndProlog
-%%BeginSetup
-%%EndSetup
-%%Page: 1 1
-%%BeginPageSetup
-%%EndPageSetup
-pum
-0.02836 0.02836 s
-0 -8286 t
-/tm matrix currentmatrix def
-tm setmatrix
--3900 -8857 t
-1 1 s
-0.000 c 10000 12000 m 9581 12419 l 9413 12084 l 10000 12000 l p ef
-6989 13478 m 9586 12179 l 9609 12224 l 7011 13522 l 6989 13478 l p ef
-0.996 c 8500 13800 m 7500 13800 l 7500 11800 l 9500 11800 l 9500 13800 l
-8500 13800 l p ef
-50 lw 1 lj 0.000 c 8500 13800 m 7500 13800 l 7500 11800 l 9500 11800 l
-9500 13800 l 8500 13800 l pc
-gs
-gs
-pum
-8080 12960 t
-103 -334 m 103 -334 103 -334 8 -334 ct 8 -334 8 -334 8 -323 ct 31 -318 34 -314 34 -294 ct
-34 -294 34 -294 34 -42 ct 34 -21 30 -16 8 -12 ct 8 -12 8 -12 8 0 ct 8 0 8 0 127 0 ct
-127 0 127 0 127 -12 ct 109 -14 103 -22 103 -40 ct 103 -40 103 -40 103 -172 ct 103 -174 106 -179 111 -184 ct
-122 -195 134 -201 145 -201 ct 163 -201 171 -188 171 -160 ct 171 -160 171 -160 171 -40 ct
-171 -22 165 -14 148 -12 ct 148 -12 148 -12 148 0 ct 148 0 148 0 264 0 ct 264 0 264 0 264 -12 ct
-246 -13 240 -21 240 -42 ct 240 -42 240 -42 240 -164 ct 240 -207 213 -234 173 -234 ct
-147 -234 128 -224 103 -195 ct 103 -195 103 -195 103 -334 ct p ef
-pom
-gr
-gs
-pum
-8351 12960 t
-143 -334 m 107 -310 92 -297 75 -274 ct 40 -231 23 -182 23 -124 ct 23 -62 41 -13 84 37 ct
-104 61 116 72 141 87 ct 141 87 141 87 147 79 ct 108 48 95 31 82 -6 ct 70 -39 65 -76 65 -126 ct
-65 -178 71 -218 84 -249 ct 98 -279 112 -297 147 -326 ct 147 -326 147 -326 143 -334 ct
-p ef
-pom
-gr
-gs
-pum
-8516 12960 t
-227 -58 m 227 -58 227 -58 217 -45 ct 203 -27 194 -19 187 -19 ct 183 -19 179 -23 179 -27 ct
-179 -31 179 -31 186 -58 ct 186 -58 186 -58 214 -160 ct 216 -170 218 -181 218 -188 ct
-218 -206 205 -218 186 -218 ct 154 -218 123 -189 72 -110 ct 72 -110 72 -110 105 -217 ct
-105 -217 105 -217 104 -218 ct 77 -213 67 -211 24 -203 ct 24 -203 24 -203 24 -195 ct
-49 -195 55 -192 55 -182 ct 55 -179 55 -176 54 -173 ct 54 -173 54 -173 7 0 ct 7 0 7 0 44 0 ct
-67 -78 72 -89 93 -123 ct 123 -168 148 -193 166 -193 ct 174 -193 178 -188 178 -179 ct
-178 -173 175 -156 171 -141 ct 171 -141 171 -141 150 -60 ct 143 -35 142 -28 142 -23 ct
-142 -4 149 4 165 4 ct 187 4 200 -6 234 -52 ct 234 -52 234 -52 227 -58 ct p ef
-pom
-gr
-gs
-pum
-8766 12960 t
-18 87 m 54 64 69 51 87 28 ct 121 -15 138 -64 138 -122 ct 138 -185 120 -233 77 -283 ct
-58 -307 45 -318 20 -334 ct 20 -334 20 -334 14 -326 ct 53 -295 66 -277 79 -240 ct
-91 -207 96 -170 96 -120 ct 96 -69 90 -28 77 2 ct 63 33 49 51 14 79 ct 14 79 14 79 18 87 ct
-p ef
-pom
-gr
-gr
-14100 16000 m 13824 16000 13600 15776 13600 15500 ct 13600 15224 13824 15000 14100 15000 ct
-14376 15000 14600 15224 14600 15500 ct 14600 15776 14376 16000 14100 16000 ct
-pc
-gs
-gs
-pum
-13954 15668 t
-121 -141 m 15 -141 l 15 -108 l 121 -108 l 121 0 l 153 0 l 153 -108 l
-259 -108 l 259 -141 l 153 -141 l 153 -250 l 121 -250 l 121 -141 l
-p ef
-pom
-gr
-gr
-8500 16000 m 8224 16000 8000 15776 8000 15500 ct 8000 15224 8224 15000 8500 15000 ct
-8776 15000 9000 15224 9000 15500 ct 9000 15776 8776 16000 8500 16000 ct pc
-8500 15000 m 8313 14438 l 8688 14438 l 8500 15000 l p ef
-8525 13800 m 8525 14550 l 8475 14550 l 8475 13800 l 8525 13800 l p ef
-9000 15500 m 9563 15313 l 9563 15688 l 9000 15500 l p ef
-13600 15525 m 9450 15525 l 9450 15475 l 13600 15475 l 13600 15525 l
-p ef
-14100 13800 m 13100 13800 l 13100 11800 l 15100 11800 l 15100 13800 l
-14100 13800 l pc
-gs
-gs
-pum
-13663 12960 t
-103 -334 m 103 -334 103 -334 8 -334 ct 8 -334 8 -334 8 -323 ct 31 -318 34 -314 34 -294 ct
-34 -294 34 -294 34 -42 ct 34 -21 30 -16 8 -12 ct 8 -12 8 -12 8 0 ct 8 0 8 0 127 0 ct
-127 0 127 0 127 -12 ct 109 -14 103 -22 103 -40 ct 103 -40 103 -40 103 -172 ct 103 -174 106 -179 111 -184 ct
-122 -195 134 -201 145 -201 ct 163 -201 171 -188 171 -160 ct 171 -160 171 -160 171 -40 ct
-171 -22 165 -14 148 -12 ct 148 -12 148 -12 148 0 ct 148 0 148 0 264 0 ct 264 0 264 0 264 -12 ct
-246 -13 240 -21 240 -42 ct 240 -42 240 -42 240 -164 ct 240 -207 213 -234 173 -234 ct
-147 -234 128 -224 103 -195 ct 103 -195 103 -195 103 -334 ct p ef
-pom
-gr
-gs
-pum
-13934 12960 t
-143 -334 m 107 -310 92 -297 75 -274 ct 40 -231 23 -182 23 -124 ct 23 -62 41 -13 84 37 ct
-104 61 116 72 141 87 ct 141 87 141 87 147 79 ct 108 48 95 31 82 -6 ct 70 -39 65 -76 65 -126 ct
-65 -178 71 -218 84 -249 ct 98 -279 112 -297 147 -326 ct 147 -326 147 -326 143 -334 ct
-p ef
-pom
-gr
-gs
-pum
-14099 12960 t
-227 -58 m 227 -58 227 -58 217 -45 ct 203 -27 194 -19 187 -19 ct 183 -19 179 -23 179 -27 ct
-179 -31 179 -31 186 -58 ct 186 -58 186 -58 214 -160 ct 216 -170 218 -181 218 -188 ct
-218 -206 205 -218 186 -218 ct 154 -218 123 -189 72 -110 ct 72 -110 72 -110 105 -217 ct
-105 -217 105 -217 104 -218 ct 77 -213 67 -211 24 -203 ct 24 -203 24 -203 24 -195 ct
-49 -195 55 -192 55 -182 ct 55 -179 55 -176 54 -173 ct 54 -173 54 -173 7 0 ct 7 0 7 0 44 0 ct
-67 -78 72 -89 93 -123 ct 123 -168 148 -193 166 -193 ct 174 -193 178 -188 178 -179 ct
-178 -173 175 -156 171 -141 ct 171 -141 171 -141 150 -60 ct 143 -35 142 -28 142 -23 ct
-142 -4 149 4 165 4 ct 187 4 200 -6 234 -52 ct 234 -52 234 -52 227 -58 ct p ef
-pom
-gr
-gs
-pum
-14349 12960 t
-18 87 m 54 64 69 51 87 28 ct 121 -15 138 -64 138 -122 ct 138 -185 120 -233 77 -283 ct
-58 -307 45 -318 20 -334 ct 20 -334 20 -334 14 -326 ct 53 -295 66 -277 79 -240 ct
-91 -207 96 -170 96 -120 ct 96 -69 90 -28 77 2 ct 63 33 49 51 14 79 ct 14 79 14 79 18 87 ct
-p ef
-pom
-gr
-gr
-14100 15000 m 13913 14438 l 14288 14438 l 14100 15000 l p ef
-14125 13800 m 14125 14550 l 14075 14550 l 14075 13800 l 14125 13800 l
-p ef
-5900 15500 m 6463 15313 l 6463 15688 l 5900 15500 l p ef
-8000 15525 m 6350 15525 l 6350 15475 l 8000 15475 l 8000 15525 l p ef
-8500 11800 m 8313 11238 l 8688 11238 l 8500 11800 l p ef
-5600 10575 m 8500 10575 l 8500 10600 l 8500 10625 l 5600 10625 l 5600 10600 l
-5600 10575 l p ef
-8500 10600 m 8500 10575 l 8504 10575 l 8509 10577 l 8512 10578 l 8516 10581 l
-8519 10584 l 8522 10587 l 8523 10591 l 8525 10596 l 8525 10600 l 8525 10600 l
-8500 10600 l p ef
-8525 10600 m 8525 11350 l 8500 11350 l 8475 11350 l 8475 10600 l 8500 10600 l
-8525 10600 l p ef
-14600 15500 m 15163 15313 l 15163 15688 l 14600 15500 l p ef
-15900 15525 m 15050 15525 l 15050 15475 l 15900 15475 l 15900 15525 l
-p ef
-14100 11800 m 13913 11238 l 14288 11238 l 14100 11800 l p ef
-5600 10575 m 14100 10575 l 14100 10600 l 14100 10625 l 5600 10625 l
-5600 10600 l 5600 10575 l p ef
-14100 10600 m 14100 10575 l 14104 10575 l 14109 10577 l 14112 10578 l
-14116 10581 l 14119 10584 l 14122 10587 l 14123 10591 l 14125 10596 l
-14125 10600 l 14125 10600 l 14100 10600 l p ef
-14125 10600 m 14125 11350 l 14100 11350 l 14075 11350 l 14075 10600 l
-14100 10600 l 14125 10600 l p ef
-7000 15500 m 7000 13500 l ps
-gs
-gs
-pum
-16150 15536 t
-10 -200 m 16 -200 20 -200 25 -200 ct 44 -200 49 -192 56 -146 ct 61 -112 67 -37 67 -8 ct
-67 6 68 9 72 9 ct 84 9 130 -43 180 -114 ct 198 -138 210 -170 210 -189 ct 210 -205 198 -218 183 -218 ct
-172 -218 165 -212 165 -201 ct 165 -193 167 -188 176 -180 ct 183 -174 185 -170 185 -165 ct
-185 -142 153 -87 118 -50 ct 118 -50 118 -50 102 -35 ct 99 -104 96 -130 89 -167 ct
-80 -217 80 -218 75 -218 ct 73 -218 69 -217 65 -216 ct 56 -214 29 -209 10 -206 ct
-10 -206 10 -206 10 -200 ct p ef
-pom
-gr
-gs
-pum
-16370 15536 t
-143 -334 m 107 -310 92 -297 75 -274 ct 40 -231 23 -182 23 -124 ct 23 -62 41 -13 84 37 ct
-104 61 116 72 141 87 ct 141 87 141 87 147 79 ct 108 48 95 31 82 -6 ct 70 -39 65 -76 65 -126 ct
-65 -178 71 -218 84 -249 ct 98 -279 112 -297 147 -326 ct 147 -326 147 -326 143 -334 ct
-p ef
-pom
-gr
-gs
-pum
-16535 15536 t
-227 -58 m 227 -58 227 -58 217 -45 ct 203 -27 194 -19 187 -19 ct 183 -19 179 -23 179 -27 ct
-179 -31 179 -31 186 -58 ct 186 -58 186 -58 214 -160 ct 216 -170 218 -181 218 -188 ct
-218 -206 205 -218 186 -218 ct 154 -218 123 -189 72 -110 ct 72 -110 72 -110 105 -217 ct
-105 -217 105 -217 104 -218 ct 77 -213 67 -211 24 -203 ct 24 -203 24 -203 24 -195 ct
-49 -195 55 -192 55 -182 ct 55 -179 55 -176 54 -173 ct 54 -173 54 -173 7 0 ct 7 0 7 0 44 0 ct
-67 -78 72 -89 93 -123 ct 123 -168 148 -193 166 -193 ct 174 -193 178 -188 178 -179 ct
-178 -173 175 -156 171 -141 ct 171 -141 171 -141 150 -60 ct 143 -35 142 -28 142 -23 ct
-142 -4 149 4 165 4 ct 187 4 200 -6 234 -52 ct 234 -52 234 -52 227 -58 ct p ef
-pom
-gr
-gs
-pum
-16785 15536 t
-18 87 m 54 64 69 51 87 28 ct 121 -15 138 -64 138 -122 ct 138 -185 120 -233 77 -283 ct
-58 -307 45 -318 20 -334 ct 20 -334 20 -334 14 -326 ct 53 -295 66 -277 79 -240 ct
-91 -207 96 -170 96 -120 ct 96 -69 90 -28 77 2 ct 63 33 49 51 14 79 ct 14 79 14 79 18 87 ct
-p ef
-pom
-gr
-gr
-gs
-gs
-pum
-9747 15298 t
-229 -55 m 202 -24 197 -20 188 -20 ct 183 -20 179 -24 179 -30 ct 179 -37 195 -97 211 -152 ct
-225 -197 235 -237 260 -336 ct 260 -336 260 -336 258 -338 ct 232 -333 214 -330 182 -327 ct
-182 -327 182 -327 182 -318 ct 209 -318 213 -316 213 -306 ct 213 -299 212 -296 206 -271 ct
-206 -271 206 -271 184 -190 ct 180 -210 171 -218 152 -218 ct 87 -218 7 -125 7 -51 ct
-7 -16 27 5 59 5 ct 93 5 115 -11 148 -60 ct 143 -35 142 -27 142 -16 ct 142 -3 150 6 163 6 ct
-183 6 209 -14 235 -50 ct 235 -50 235 -50 229 -55 ct p
-154 -207 m 168 -207 176 -198 176 -180 ct 176 -104 124 -19 79 -19 ct 62 -19 50 -32 50 -51 ct
-50 -92 75 -149 108 -183 ct 122 -198 140 -207 154 -207 ct p ef
-pom
-gr
-gs
-pum
-9997 15298 t
-143 -334 m 107 -310 92 -297 75 -274 ct 40 -231 23 -182 23 -124 ct 23 -62 41 -13 84 37 ct
-104 61 116 72 141 87 ct 141 87 141 87 147 79 ct 108 48 95 31 82 -6 ct 70 -39 65 -76 65 -126 ct
-65 -178 71 -218 84 -249 ct 98 -279 112 -297 147 -326 ct 147 -326 147 -326 143 -334 ct
-p ef
-pom
-gr
-gs
-pum
-10162 15298 t
-227 -58 m 227 -58 227 -58 217 -45 ct 203 -27 194 -19 187 -19 ct 183 -19 179 -23 179 -27 ct
-179 -31 179 -31 186 -58 ct 186 -58 186 -58 214 -160 ct 216 -170 218 -181 218 -188 ct
-218 -206 205 -218 186 -218 ct 154 -218 123 -189 72 -110 ct 72 -110 72 -110 105 -217 ct
-105 -217 105 -217 104 -218 ct 77 -213 67 -211 24 -203 ct 24 -203 24 -203 24 -195 ct
-49 -195 55 -192 55 -182 ct 55 -179 55 -176 54 -173 ct 54 -173 54 -173 7 0 ct 7 0 7 0 44 0 ct
-67 -78 72 -89 93 -123 ct 123 -168 148 -193 166 -193 ct 174 -193 178 -188 178 -179 ct
-178 -173 175 -156 171 -141 ct 171 -141 171 -141 150 -60 ct 143 -35 142 -28 142 -23 ct
-142 -4 149 4 165 4 ct 187 4 200 -6 234 -52 ct 234 -52 234 -52 227 -58 ct p ef
-pom
-gr
-gs
-pum
-10412 15298 t
-18 87 m 54 64 69 51 87 28 ct 121 -15 138 -64 138 -122 ct 138 -185 120 -233 77 -283 ct
-58 -307 45 -318 20 -334 ct 20 -334 20 -334 14 -326 ct 53 -295 66 -277 79 -240 ct
-91 -207 96 -170 96 -120 ct 96 -69 90 -28 77 2 ct 63 33 49 51 14 79 ct 14 79 14 79 18 87 ct
-p ef
-pom
-gr
-gr
-gs
-gs
-pum
-4561 10747 t
-199 -55 m 195 -51 192 -48 188 -42 ct 176 -27 170 -22 165 -22 ct 158 -22 153 -29 150 -42 ct
-149 -46 148 -49 148 -51 ct 135 -101 130 -123 130 -131 ct 152 -169 169 -190 178 -190 ct
-181 -190 185 -189 190 -186 ct 196 -183 200 -182 204 -182 ct 214 -182 221 -189 221 -200 ct
-221 -210 212 -218 201 -218 ct 179 -218 160 -200 126 -147 ct 126 -147 126 -147 121 -175 ct
-114 -208 108 -218 95 -218 ct 84 -218 67 -214 37 -204 ct 37 -204 37 -204 32 -202 ct
-32 -202 32 -202 34 -194 ct 52 -199 57 -200 61 -200 ct 74 -200 77 -195 83 -166 ct
-83 -166 83 -166 98 -105 ct 98 -105 98 -105 57 -47 ct 47 -33 38 -24 32 -24 ct 29 -24 24 -25 19 -28 ct
-13 -32 7 -33 3 -33 ct -6 -33 -13 -26 -13 -16 ct -13 -3 -3 5 11 5 ct 27 5 33 1 57 -30 ct
-71 -45 81 -59 102 -87 ct 102 -87 102 -87 117 -28 ct 123 -3 129 5 145 5 ct 164 5 177 -7 206 -51 ct
-206 -51 206 -51 199 -55 ct p ef
-pom
-gr
-gs
-pum
-4781 10747 t
-143 -334 m 107 -310 92 -297 75 -274 ct 40 -231 23 -182 23 -124 ct 23 -62 41 -13 84 37 ct
-104 61 116 72 141 87 ct 141 87 141 87 147 79 ct 108 48 95 31 82 -6 ct 70 -39 65 -76 65 -126 ct
-65 -178 71 -218 84 -249 ct 98 -279 112 -297 147 -326 ct 147 -326 147 -326 143 -334 ct
-p ef
-pom
-gr
-gs
-pum
-4946 10747 t
-227 -58 m 227 -58 227 -58 217 -45 ct 203 -27 194 -19 187 -19 ct 183 -19 179 -23 179 -27 ct
-179 -31 179 -31 186 -58 ct 186 -58 186 -58 214 -160 ct 216 -170 218 -181 218 -188 ct
-218 -206 205 -218 186 -218 ct 154 -218 123 -189 72 -110 ct 72 -110 72 -110 105 -217 ct
-105 -217 105 -217 104 -218 ct 77 -213 67 -211 24 -203 ct 24 -203 24 -203 24 -195 ct
-49 -195 55 -192 55 -182 ct 55 -179 55 -176 54 -173 ct 54 -173 54 -173 7 0 ct 7 0 7 0 44 0 ct
-67 -78 72 -89 93 -123 ct 123 -168 148 -193 166 -193 ct 174 -193 178 -188 178 -179 ct
-178 -173 175 -156 171 -141 ct 171 -141 171 -141 150 -60 ct 143 -35 142 -28 142 -23 ct
-142 -4 149 4 165 4 ct 187 4 200 -6 234 -52 ct 234 -52 234 -52 227 -58 ct p ef
-pom
-gr
-gs
-pum
-5196 10747 t
-18 87 m 54 64 69 51 87 28 ct 121 -15 138 -64 138 -122 ct 138 -185 120 -233 77 -283 ct
-58 -307 45 -318 20 -334 ct 20 -334 20 -334 14 -326 ct 53 -295 66 -277 79 -240 ct
-91 -207 96 -170 96 -120 ct 96 -69 90 -28 77 2 ct 63 33 49 51 14 79 ct 14 79 14 79 18 87 ct
-p ef
-pom
-gr
-gr
-gs
-gs
-pum
-4932 15694 t
-177 -54 m 141 -25 126 -17 105 -17 ct 77 -17 58 -35 58 -62 ct 58 -69 59 -77 63 -92 ct
-63 -92 63 -92 77 -94 ct 151 -105 204 -142 204 -185 ct 204 -206 189 -218 164 -218 ct
-93 -218 15 -137 15 -63 ct 15 -23 42 5 81 5 ct 116 5 154 -15 183 -48 ct 183 -48 183 -48 177 -54 ct
-p
-75 -125 m 92 -169 128 -207 154 -207 ct 164 -207 171 -199 171 -188 ct 171 -172 162 -155 146 -140 ct
-128 -123 109 -114 67 -103 ct 67 -103 67 -103 75 -125 ct p ef
-pom
-gr
-gs
-pum
-5152 15694 t
-143 -334 m 107 -310 92 -297 75 -274 ct 40 -231 23 -182 23 -124 ct 23 -62 41 -13 84 37 ct
-104 61 116 72 141 87 ct 141 87 141 87 147 79 ct 108 48 95 31 82 -6 ct 70 -39 65 -76 65 -126 ct
-65 -178 71 -218 84 -249 ct 98 -279 112 -297 147 -326 ct 147 -326 147 -326 143 -334 ct
-p ef
-pom
-gr
-gs
-pum
-5317 15694 t
-227 -58 m 227 -58 227 -58 217 -45 ct 203 -27 194 -19 187 -19 ct 183 -19 179 -23 179 -27 ct
-179 -31 179 -31 186 -58 ct 186 -58 186 -58 214 -160 ct 216 -170 218 -181 218 -188 ct
-218 -206 205 -218 186 -218 ct 154 -218 123 -189 72 -110 ct 72 -110 72 -110 105 -217 ct
-105 -217 105 -217 104 -218 ct 77 -213 67 -211 24 -203 ct 24 -203 24 -203 24 -195 ct
-49 -195 55 -192 55 -182 ct 55 -179 55 -176 54 -173 ct 54 -173 54 -173 7 0 ct 7 0 7 0 44 0 ct
-67 -78 72 -89 93 -123 ct 123 -168 148 -193 166 -193 ct 174 -193 178 -188 178 -179 ct
-178 -173 175 -156 171 -141 ct 171 -141 171 -141 150 -60 ct 143 -35 142 -28 142 -23 ct
-142 -4 149 4 165 4 ct 187 4 200 -6 234 -52 ct 234 -52 234 -52 227 -58 ct p ef
-pom
-gr
-gs
-pum
-5567 15694 t
-18 87 m 54 64 69 51 87 28 ct 121 -15 138 -64 138 -122 ct 138 -185 120 -233 77 -283 ct
-58 -307 45 -318 20 -334 ct 20 -334 20 -334 14 -326 ct 53 -295 66 -277 79 -240 ct
-91 -207 96 -170 96 -120 ct 96 -69 90 -28 77 2 ct 63 33 49 51 14 79 ct 14 79 14 79 18 87 ct
-p ef
-pom
-gr
-gr
-gs
-gs
-pum
-8954 15959 t
-121 -141 m 15 -141 l 15 -108 l 121 -108 l 121 0 l 153 0 l 153 -108 l
-259 -108 l 259 -141 l 153 -141 l 153 -250 l 121 -250 l 121 -141 l
-p ef
-pom
-gr
-gr
-gs
-gs
-pum
-8848 15033 t
-19 -127 m 19 -96 l 138 -96 l 138 -127 l 19 -127 l p ef
-pom
-gr
-gr
-gs
-gs
-pum
-8080 12705 t
-45 -147 m 114 -290 l 183 -147 l 216 -147 l 128 -327 l 99 -327 l 12 -147 l
-45 -147 l p ef
-pom
-gr
-gr
-0.996 c 12400 9601 m 12394 11602 l 11895 11099 l 11897 10099 l 12400 9601 l
-p ef
-0.000 c 12400 9601 m 12394 11602 l 11895 11099 l 11897 10099 l 12400 9601 l
-pc
-0.996 c 11397 10599 m 11398 10099 l 11898 10100 l 11895 11100 l 11395 11099 l
-11397 10599 l p ef
-0.000 c 11397 10599 m 11398 10099 l 11898 10100 l 11895 11100 l 11395 11099 l
-11397 10599 l pc
-0.996 c 11900 16000 m 11624 16000 11400 15776 11400 15500 ct 11400 15224 11624 15000 11900 15000 ct
-12176 15000 12400 15224 12400 15500 ct 12400 15776 12176 16000 11900 16000 ct
-p ef
-0.000 c 11900 16000 m 11624 16000 11400 15776 11400 15500 ct 11400 15224 11624 15000 11900 15000 ct
-12176 15000 12400 15224 12400 15500 ct 12400 15776 12176 16000 11900 16000 ct
-pc
-12400 15000 m 12400 16000 l ps
-gs
-gs
-pum
-14880 16144 t
-8 -196 m 11 -198 15 -198 21 -198 ct 34 -198 39 -191 39 -166 ct 39 -166 39 -166 39 -44 ct
-39 -15 33 -8 9 -8 ct 9 -8 9 -8 9 0 ct 9 0 9 0 111 0 ct 111 0 111 0 111 -8 ct 87 -8 79 -14 79 -32 ct
-79 -32 79 -32 79 -171 ct 103 -194 113 -200 129 -200 ct 153 -200 165 -184 165 -152 ct
-165 -152 165 -152 165 -48 ct 165 -17 158 -8 134 -8 ct 134 -8 134 -8 134 0 ct 134 0 134 0 235 0 ct
-235 0 235 0 235 -7 ct 211 -10 205 -16 205 -40 ct 205 -40 205 -40 205 -153 ct 205 -199 184 -227 148 -227 ct
-126 -227 111 -219 78 -187 ct 78 -187 78 -187 78 -226 ct 78 -226 78 -226 75 -227 ct
-51 -218 34 -213 8 -205 ct 8 -205 8 -205 8 -196 ct p ef
-448 -81 m 424 -43 403 -29 372 -29 ct 345 -29 324 -43 310 -72 ct 301 -90 298 -107 297 -137 ct
-297 -137 297 -137 446 -137 ct 442 -169 437 -183 425 -199 ct 411 -217 388 -227 363 -227 ct
-339 -227 316 -218 298 -201 ct 275 -181 262 -146 262 -106 ct 262 -37 297 5 353 5 ct
-399 5 435 -24 455 -78 ct 455 -78 455 -78 448 -81 ct p
-298 -153 m 303 -191 320 -209 349 -209 ct 379 -209 390 -196 397 -153 ct 397 -153 397 -153 298 -153 ct
-p ef
-684 -32 m 676 -26 670 -23 663 -23 ct 652 -23 648 -30 648 -52 ct 648 -52 648 -52 648 -148 ct
-648 -173 646 -188 638 -200 ct 628 -218 607 -227 578 -227 ct 533 -227 497 -203 497 -171 ct
-497 -160 507 -150 518 -150 ct 530 -150 540 -160 540 -171 ct 540 -173 539 -175 539 -179 ct
-538 -183 537 -187 537 -191 ct 537 -204 553 -215 572 -215 ct 596 -215 609 -201 609 -174 ct
-609 -174 609 -174 609 -144 ct 534 -113 526 -109 505 -90 ct 495 -81 488 -64 488 -48 ct
-488 -17 509 5 539 5 ct 560 5 580 -5 609 -31 ct 612 -5 621 5 640 5 ct 657 5 667 -1 684 -20 ct
-684 -20 684 -20 684 -32 ct p
-609 -61 m 609 -45 607 -41 596 -35 ct 585 -28 571 -24 561 -24 ct 544 -24 531 -40 531 -62 ct
-531 -62 531 -62 531 -63 ct 531 -92 550 -110 609 -132 ct 609 -132 609 -132 609 -61 ct
-p ef
-693 -192 m 700 -194 705 -194 710 -194 ct 722 -194 727 -186 727 -164 ct 727 -164 727 -164 727 -41 ct
-727 -17 723 -13 692 -7 ct 692 -7 692 -7 692 0 ct 692 0 692 0 809 0 ct 809 0 809 0 809 -8 ct
-776 -8 767 -15 767 -44 ct 767 -44 767 -44 767 -155 ct 767 -171 788 -196 801 -196 ct
-804 -196 809 -193 814 -188 ct 822 -182 827 -179 833 -179 ct 845 -179 852 -187 852 -201 ct
-852 -217 842 -227 826 -227 ct 805 -227 791 -216 767 -181 ct 767 -181 767 -181 767 -226 ct
-767 -226 767 -226 765 -227 ct 739 -216 722 -210 693 -200 ct 693 -200 693 -200 693 -192 ct
-p ef
-1176 -81 m 1152 -43 1131 -29 1100 -29 ct 1073 -29 1052 -43 1038 -72 ct 1029 -90 1026 -107 1025 -137 ct
-1025 -137 1025 -137 1174 -137 ct 1170 -169 1165 -183 1153 -199 ct 1139 -217 1116 -227 1091 -227 ct
-1067 -227 1044 -218 1026 -201 ct 1003 -181 990 -146 990 -106 ct 990 -37 1025 5 1081 5 ct
-1127 5 1163 -24 1183 -78 ct 1183 -78 1183 -78 1176 -81 ct p
-1026 -153 m 1031 -191 1048 -209 1077 -209 ct 1107 -209 1118 -196 1125 -153 ct
-1125 -153 1125 -153 1026 -153 ct p ef
-1206 -196 m 1209 -198 1213 -198 1219 -198 ct 1232 -198 1237 -191 1237 -166 ct
-1237 -166 1237 -166 1237 -44 ct 1237 -15 1231 -8 1207 -8 ct 1207 -8 1207 -8 1207 0 ct
-1207 0 1207 0 1309 0 ct 1309 0 1309 0 1309 -8 ct 1285 -8 1277 -14 1277 -32 ct 1277 -32 1277 -32 1277 -171 ct
-1301 -194 1311 -200 1327 -200 ct 1351 -200 1363 -184 1363 -152 ct 1363 -152 1363 -152 1363 -48 ct
-1363 -17 1356 -8 1332 -8 ct 1332 -8 1332 -8 1332 0 ct 1332 0 1332 0 1433 0 ct 1433 0 1433 0 1433 -7 ct
-1409 -10 1403 -16 1403 -40 ct 1403 -40 1403 -40 1403 -153 ct 1403 -199 1382 -227 1346 -227 ct
-1324 -227 1309 -219 1276 -187 ct 1276 -187 1276 -187 1276 -226 ct 1276 -226 1276 -226 1273 -227 ct
-1249 -218 1232 -213 1206 -205 ct 1206 -205 1206 -205 1206 -196 ct p ef
-1615 5 m 1615 5 1615 5 1686 -21 ct 1686 -21 1686 -21 1686 -28 ct 1677 -28 1676 -28 1675 -28 ct
-1657 -28 1653 -33 1653 -56 ct 1653 -56 1653 -56 1653 -336 ct 1653 -336 1653 -336 1651 -337 ct
-1628 -329 1611 -324 1580 -315 ct 1580 -315 1580 -315 1580 -308 ct 1584 -308 1586 -308 1590 -308 ct
-1608 -308 1613 -303 1613 -283 ct 1613 -283 1613 -283 1613 -206 ct 1594 -222 1581 -227 1562 -227 ct
-1506 -227 1461 -171 1461 -101 ct 1461 -38 1497 5 1551 5 ct 1578 5 1596 -5 1613 -28 ct
-1613 -28 1613 -28 1613 4 ct 1613 4 1613 4 1615 5 ct p
-1613 -50 m 1613 -47 1609 -41 1604 -35 ct 1596 -26 1584 -21 1570 -21 ct 1529 -21 1503 -60 1503 -121 ct
-1503 -177 1526 -213 1563 -213 ct 1589 -213 1613 -190 1613 -164 ct 1613 -164 1613 -164 1613 -50 ct
-p ef
-1973 -155 m 1973 -155 1973 -155 1971 -222 ct 1971 -222 1971 -222 1965 -222 ct
-1965 -222 1965 -222 1964 -221 ct 1960 -218 1959 -217 1957 -217 ct 1955 -217 1950 -218 1944 -221 ct
-1934 -225 1923 -227 1911 -227 ct 1872 -227 1845 -202 1845 -166 ct 1845 -138 1860 -118 1901 -95 ct
-1901 -95 1901 -95 1929 -78 ct 1946 -69 1955 -57 1955 -41 ct 1955 -20 1939 -6 1914 -6 ct
-1898 -6 1883 -12 1874 -23 ct 1864 -35 1859 -47 1853 -75 ct 1853 -75 1853 -75 1845 -75 ct
-1845 -75 1845 -75 1845 2 ct 1845 2 1845 2 1851 2 ct 1855 -3 1857 -4 1863 -4 ct
-1867 -4 1874 -3 1885 0 ct 1898 3 1912 5 1920 5 ct 1957 5 1988 -24 1988 -58 ct 1988 -83 1977 -99 1948 -117 ct
-1948 -117 1948 -117 1896 -148 ct 1882 -156 1875 -169 1875 -182 ct 1875 -202 1890 -216 1912 -216 ct
-1940 -216 1954 -199 1965 -155 ct 1965 -155 1965 -155 1973 -155 ct p ef
-2019 -195 m 2024 -195 2027 -195 2031 -195 ct 2048 -195 2051 -190 2051 -167 ct
-2051 -167 2051 -167 2051 65 ct 2051 90 2046 96 2017 99 ct 2017 99 2017 99 2017 107 ct
-2017 107 2017 107 2135 107 ct 2135 107 2135 107 2135 98 ct 2098 98 2092 93 2092 61 ct
-2092 61 2092 61 2092 -16 ct 2109 0 2121 5 2141 5 ct 2198 5 2243 -50 2243 -122 ct
-2243 -183 2209 -227 2162 -227 ct 2135 -227 2113 -215 2092 -189 ct 2092 -189 2092 -189 2092 -226 ct
-2092 -226 2092 -226 2089 -227 ct 2063 -217 2046 -210 2019 -202 ct 2019 -202 2019 -202 2019 -195 ct
-p
-2092 -165 m 2092 -180 2119 -197 2141 -197 ct 2177 -197 2201 -160 2201 -103 ct
-2201 -48 2177 -11 2142 -11 ct 2120 -11 2092 -29 2092 -44 ct 2092 -44 2092 -44 2092 -165 ct
-p ef
-2463 -81 m 2439 -43 2418 -29 2387 -29 ct 2360 -29 2339 -43 2325 -72 ct 2316 -90 2313 -107 2312 -137 ct
-2312 -137 2312 -137 2461 -137 ct 2457 -169 2452 -183 2440 -199 ct 2426 -217 2403 -227 2378 -227 ct
-2354 -227 2331 -218 2313 -201 ct 2290 -181 2277 -146 2277 -106 ct 2277 -37 2312 5 2368 5 ct
-2414 5 2450 -24 2470 -78 ct 2470 -78 2470 -78 2463 -81 ct p
-2313 -153 m 2318 -191 2335 -209 2364 -209 ct 2394 -209 2405 -196 2412 -153 ct
-2412 -153 2412 -153 2313 -153 ct p ef
-2683 -81 m 2659 -43 2638 -29 2607 -29 ct 2580 -29 2559 -43 2545 -72 ct 2536 -90 2533 -107 2532 -137 ct
-2532 -137 2532 -137 2681 -137 ct 2677 -169 2672 -183 2660 -199 ct 2646 -217 2623 -227 2598 -227 ct
-2574 -227 2551 -218 2533 -201 ct 2510 -181 2497 -146 2497 -106 ct 2497 -37 2532 5 2588 5 ct
-2634 5 2670 -24 2690 -78 ct 2690 -78 2690 -78 2683 -81 ct p
-2533 -153 m 2538 -191 2555 -209 2584 -209 ct 2614 -209 2625 -196 2632 -153 ct
-2632 -153 2632 -153 2533 -153 ct p ef
-2898 -77 m 2874 -42 2857 -31 2829 -31 ct 2785 -31 2754 -70 2754 -127 ct 2754 -178 2781 -213 2820 -213 ct
-2838 -213 2844 -207 2849 -189 ct 2849 -189 2849 -189 2852 -178 ct 2856 -164 2864 -155 2874 -155 ct
-2887 -155 2898 -164 2898 -176 ct 2898 -204 2864 -227 2823 -227 ct 2799 -227 2775 -217 2755 -199 ct
-2731 -178 2717 -144 2717 -105 ct 2717 -41 2755 5 2809 5 ct 2831 5 2850 -3 2868 -18 ct
-2881 -30 2890 -43 2904 -72 ct 2904 -72 2904 -72 2898 -77 ct p ef
-3001 -169 m 3021 -192 3036 -200 3055 -200 ct 3079 -200 3091 -182 3091 -148 ct
-3091 -148 3091 -148 3091 -50 ct 3091 -16 3086 -10 3058 -7 ct 3058 -7 3058 -7 3058 0 ct
-3058 0 3058 0 3161 0 ct 3161 0 3161 0 3161 -7 ct 3135 -12 3132 -16 3132 -50 ct
-3132 -50 3132 -50 3132 -148 ct 3132 -200 3111 -227 3072 -227 ct 3044 -227 3023 -215 3001 -185 ct
-3001 -185 3001 -185 3001 -336 ct 3001 -336 3001 -336 2999 -337 ct 2982 -331 2970 -327 2943 -319 ct
-2943 -319 2943 -319 2930 -315 ct 2930 -315 2930 -315 2930 -308 ct 2932 -308 2933 -308 2936 -308 ct
-2956 -308 2960 -304 2960 -283 ct 2960 -283 2960 -283 2960 -50 ct 2960 -15 2957 -11 2929 -7 ct
-2929 -7 2929 -7 2929 0 ct 2929 0 2929 0 3034 0 ct 3034 0 3034 0 3034 -7 ct 3006 -10 3001 -16 3001 -50 ct
-3001 -50 3001 -50 3001 -169 ct p ef
-pom
-gr
-gs
-pum
-15519 16745 t
-214 -32 m 206 -26 200 -23 193 -23 ct 182 -23 178 -30 178 -52 ct 178 -52 178 -52 178 -148 ct
-178 -173 176 -188 168 -200 ct 158 -218 137 -227 108 -227 ct 63 -227 27 -203 27 -171 ct
-27 -160 37 -150 48 -150 ct 60 -150 70 -160 70 -171 ct 70 -173 69 -175 69 -179 ct
-68 -183 67 -187 67 -191 ct 67 -204 83 -215 102 -215 ct 126 -215 139 -201 139 -174 ct
-139 -174 139 -174 139 -144 ct 64 -113 56 -109 35 -90 ct 25 -81 18 -64 18 -48 ct
-18 -17 39 5 69 5 ct 90 5 110 -5 139 -31 ct 142 -5 151 5 170 5 ct 187 5 197 -1 214 -20 ct
-214 -20 214 -20 214 -32 ct p
-139 -61 m 139 -45 137 -41 126 -35 ct 115 -28 101 -24 91 -24 ct 74 -24 61 -40 61 -62 ct
-61 -62 61 -62 61 -63 ct 61 -92 80 -110 139 -132 ct 139 -132 139 -132 139 -61 ct
-p ef
-228 -196 m 231 -198 235 -198 241 -198 ct 254 -198 259 -191 259 -166 ct 259 -166 259 -166 259 -44 ct
-259 -15 253 -8 229 -8 ct 229 -8 229 -8 229 0 ct 229 0 229 0 331 0 ct 331 0 331 0 331 -8 ct
-307 -8 299 -14 299 -32 ct 299 -32 299 -32 299 -171 ct 323 -194 333 -200 349 -200 ct
-373 -200 385 -184 385 -152 ct 385 -152 385 -152 385 -48 ct 385 -17 378 -8 354 -8 ct
-354 -8 354 -8 354 0 ct 354 0 354 0 455 0 ct 455 0 455 0 455 -7 ct 431 -10 425 -16 425 -40 ct
-425 -40 425 -40 425 -153 ct 425 -199 404 -227 368 -227 ct 346 -227 331 -219 298 -187 ct
-298 -187 298 -187 298 -226 ct 298 -226 298 -226 295 -227 ct 271 -218 254 -213 228 -205 ct
-228 -205 228 -205 228 -196 ct p ef
-637 5 m 637 5 637 5 708 -21 ct 708 -21 708 -21 708 -28 ct 699 -28 698 -28 697 -28 ct
-679 -28 675 -33 675 -56 ct 675 -56 675 -56 675 -336 ct 675 -336 675 -336 673 -337 ct
-650 -329 633 -324 602 -315 ct 602 -315 602 -315 602 -308 ct 606 -308 608 -308 612 -308 ct
-630 -308 635 -303 635 -283 ct 635 -283 635 -283 635 -206 ct 616 -222 603 -227 584 -227 ct
-528 -227 483 -171 483 -101 ct 483 -38 519 5 573 5 ct 600 5 618 -5 635 -28 ct 635 -28 635 -28 635 4 ct
-635 4 635 4 637 5 ct p
-635 -50 m 635 -47 631 -41 626 -35 ct 618 -26 606 -21 592 -21 ct 551 -21 525 -60 525 -121 ct
-525 -177 548 -213 585 -213 ct 611 -213 635 -190 635 -164 ct 635 -164 635 -164 635 -50 ct
-p ef
-850 -196 m 853 -198 857 -198 863 -198 ct 876 -198 881 -191 881 -166 ct 881 -166 881 -166 881 -44 ct
-881 -15 875 -8 851 -8 ct 851 -8 851 -8 851 0 ct 851 0 851 0 953 0 ct 953 0 953 0 953 -8 ct
-929 -8 921 -14 921 -32 ct 921 -32 921 -32 921 -171 ct 945 -194 955 -200 971 -200 ct
-995 -200 1007 -184 1007 -152 ct 1007 -152 1007 -152 1007 -48 ct 1007 -17 1000 -8 976 -8 ct
-976 -8 976 -8 976 0 ct 976 0 976 0 1077 0 ct 1077 0 1077 0 1077 -7 ct 1053 -10 1047 -16 1047 -40 ct
-1047 -40 1047 -40 1047 -153 ct 1047 -199 1026 -227 990 -227 ct 968 -227 953 -219 920 -187 ct
-920 -187 920 -187 920 -226 ct 920 -226 920 -226 917 -227 ct 893 -218 876 -213 850 -205 ct
-850 -205 850 -205 850 -196 ct p ef
-1213 -227 m 1150 -227 1106 -180 1106 -112 ct 1106 -45 1151 5 1212 5 ct 1273 5 1320 -47 1320 -115 ct
-1320 -180 1275 -227 1213 -227 ct p
-1207 -213 m 1247 -213 1276 -166 1276 -98 ct 1276 -42 1254 -9 1218 -9 ct 1199 -9 1181 -21 1171 -40 ct
-1157 -66 1150 -101 1150 -136 ct 1150 -183 1172 -213 1207 -213 ct p ef
-1427 -227 m 1427 -227 1427 -227 1352 -200 ct 1352 -200 1352 -200 1352 -192 ct
-1352 -192 1352 -192 1356 -193 ct 1361 -194 1368 -194 1372 -194 ct 1384 -194 1388 -186 1388 -164 ct
-1388 -164 1388 -164 1388 -49 ct 1388 -14 1383 -8 1350 -8 ct 1350 -8 1350 -8 1350 0 ct
-1350 0 1350 0 1464 0 ct 1464 0 1464 0 1464 -8 ct 1433 -8 1429 -15 1429 -50 ct 1429 -50 1429 -50 1429 -225 ct
-1429 -225 1429 -225 1427 -227 ct p
-1404 -337 m 1391 -337 1380 -326 1380 -312 ct 1380 -298 1390 -287 1404 -287 ct
-1418 -287 1429 -298 1429 -312 ct 1429 -326 1418 -337 1404 -337 ct p ef
-1635 -155 m 1635 -155 1635 -155 1633 -222 ct 1633 -222 1633 -222 1627 -222 ct
-1627 -222 1627 -222 1626 -221 ct 1622 -218 1621 -217 1619 -217 ct 1617 -217 1612 -218 1606 -221 ct
-1596 -225 1585 -227 1573 -227 ct 1534 -227 1507 -202 1507 -166 ct 1507 -138 1522 -118 1563 -95 ct
-1563 -95 1563 -95 1591 -78 ct 1608 -69 1617 -57 1617 -41 ct 1617 -20 1601 -6 1576 -6 ct
-1560 -6 1545 -12 1536 -23 ct 1526 -35 1521 -47 1515 -75 ct 1515 -75 1515 -75 1507 -75 ct
-1507 -75 1507 -75 1507 2 ct 1507 2 1507 2 1513 2 ct 1517 -3 1519 -4 1525 -4 ct
-1529 -4 1536 -3 1547 0 ct 1560 3 1574 5 1582 5 ct 1619 5 1650 -24 1650 -58 ct 1650 -83 1639 -99 1610 -117 ct
-1610 -117 1610 -117 1558 -148 ct 1544 -156 1537 -169 1537 -182 ct 1537 -202 1552 -216 1574 -216 ct
-1602 -216 1616 -199 1627 -155 ct 1627 -155 1627 -155 1635 -155 ct p ef
-1874 -81 m 1850 -43 1829 -29 1798 -29 ct 1771 -29 1750 -43 1736 -72 ct 1727 -90 1724 -107 1723 -137 ct
-1723 -137 1723 -137 1872 -137 ct 1868 -169 1863 -183 1851 -199 ct 1837 -217 1814 -227 1789 -227 ct
-1765 -227 1742 -218 1724 -201 ct 1701 -181 1688 -146 1688 -106 ct 1688 -37 1723 5 1779 5 ct
-1825 5 1861 -24 1881 -78 ct 1881 -78 1881 -78 1874 -81 ct p
-1724 -153 m 1729 -191 1746 -209 1775 -209 ct 1805 -209 1816 -196 1823 -153 ct
-1823 -153 1823 -153 1724 -153 ct p ef
-pom
-gr
-gr
-gs
-gs
-pum
-5435 10350 t
-150 -222 m 150 -222 150 -222 90 -222 ct 90 -222 90 -222 90 -279 ct 90 -308 99 -323 118 -323 ct
-128 -323 135 -318 143 -304 ct 151 -291 157 -286 165 -286 ct 176 -286 185 -295 185 -306 ct
-185 -324 164 -337 135 -337 ct 105 -337 79 -324 67 -301 ct 54 -279 50 -261 50 -222 ct
-50 -222 50 -222 10 -222 ct 10 -222 10 -222 10 -206 ct 10 -206 10 -206 50 -206 ct
-50 -206 50 -206 50 -51 ct 50 -14 45 -8 10 -8 ct 10 -8 10 -8 10 0 ct 10 0 10 0 136 0 ct
-136 0 136 0 136 -8 ct 96 -8 91 -13 91 -51 ct 91 -51 91 -51 91 -206 ct 91 -206 91 -206 150 -206 ct
-150 -206 150 -206 150 -222 ct p ef
-375 -32 m 367 -26 361 -23 354 -23 ct 343 -23 339 -30 339 -52 ct 339 -52 339 -52 339 -148 ct
-339 -173 337 -188 329 -200 ct 319 -218 298 -227 269 -227 ct 224 -227 188 -203 188 -171 ct
-188 -160 198 -150 209 -150 ct 221 -150 231 -160 231 -171 ct 231 -173 230 -175 230 -179 ct
-229 -183 228 -187 228 -191 ct 228 -204 244 -215 263 -215 ct 287 -215 300 -201 300 -174 ct
-300 -174 300 -174 300 -144 ct 225 -113 217 -109 196 -90 ct 186 -81 179 -64 179 -48 ct
-179 -17 200 5 230 5 ct 251 5 271 -5 300 -31 ct 303 -5 312 5 331 5 ct 348 5 358 -1 375 -20 ct
-375 -20 375 -20 375 -32 ct p
-300 -61 m 300 -45 298 -41 287 -35 ct 276 -28 262 -24 252 -24 ct 235 -24 222 -40 222 -62 ct
-222 -62 222 -62 222 -63 ct 222 -92 241 -110 300 -132 ct 300 -132 300 -132 300 -61 ct
-p ef
-384 -192 m 391 -194 396 -194 401 -194 ct 413 -194 418 -186 418 -164 ct 418 -164 418 -164 418 -41 ct
-418 -17 414 -13 383 -7 ct 383 -7 383 -7 383 0 ct 383 0 383 0 500 0 ct 500 0 500 0 500 -8 ct
-467 -8 458 -15 458 -44 ct 458 -44 458 -44 458 -155 ct 458 -171 479 -196 492 -196 ct
-495 -196 500 -193 505 -188 ct 513 -182 518 -179 524 -179 ct 536 -179 543 -187 543 -201 ct
-543 -217 533 -227 517 -227 ct 496 -227 482 -216 458 -181 ct 458 -181 458 -181 458 -226 ct
-458 -226 458 -226 456 -227 ct 430 -216 413 -210 384 -200 ct 384 -200 384 -200 384 -192 ct
-p ef
-867 -81 m 843 -43 822 -29 791 -29 ct 764 -29 743 -43 729 -72 ct 720 -90 717 -107 716 -137 ct
-716 -137 716 -137 865 -137 ct 861 -169 856 -183 844 -199 ct 830 -217 807 -227 782 -227 ct
-758 -227 735 -218 717 -201 ct 694 -181 681 -146 681 -106 ct 681 -37 716 5 772 5 ct
-818 5 854 -24 874 -78 ct 874 -78 874 -78 867 -81 ct p
-717 -153 m 722 -191 739 -209 768 -209 ct 798 -209 809 -196 816 -153 ct 816 -153 816 -153 717 -153 ct
-p ef
-897 -196 m 900 -198 904 -198 910 -198 ct 923 -198 928 -191 928 -166 ct 928 -166 928 -166 928 -44 ct
-928 -15 922 -8 898 -8 ct 898 -8 898 -8 898 0 ct 898 0 898 0 1000 0 ct 1000 0 1000 0 1000 -8 ct
-976 -8 968 -14 968 -32 ct 968 -32 968 -32 968 -171 ct 992 -194 1002 -200 1018 -200 ct
-1042 -200 1054 -184 1054 -152 ct 1054 -152 1054 -152 1054 -48 ct 1054 -17 1047 -8 1023 -8 ct
-1023 -8 1023 -8 1023 0 ct 1023 0 1023 0 1124 0 ct 1124 0 1124 0 1124 -7 ct 1100 -10 1094 -16 1094 -40 ct
-1094 -40 1094 -40 1094 -153 ct 1094 -199 1073 -227 1037 -227 ct 1015 -227 1000 -219 967 -187 ct
-967 -187 967 -187 967 -226 ct 967 -226 967 -226 964 -227 ct 940 -218 923 -213 897 -205 ct
-897 -205 897 -205 897 -196 ct p ef
-1306 5 m 1306 5 1306 5 1377 -21 ct 1377 -21 1377 -21 1377 -28 ct 1368 -28 1367 -28 1366 -28 ct
-1348 -28 1344 -33 1344 -56 ct 1344 -56 1344 -56 1344 -336 ct 1344 -336 1344 -336 1342 -337 ct
-1319 -329 1302 -324 1271 -315 ct 1271 -315 1271 -315 1271 -308 ct 1275 -308 1277 -308 1281 -308 ct
-1299 -308 1304 -303 1304 -283 ct 1304 -283 1304 -283 1304 -206 ct 1285 -222 1272 -227 1253 -227 ct
-1197 -227 1152 -171 1152 -101 ct 1152 -38 1188 5 1242 5 ct 1269 5 1287 -5 1304 -28 ct
-1304 -28 1304 -28 1304 4 ct 1304 4 1304 4 1306 5 ct p
-1304 -50 m 1304 -47 1300 -41 1295 -35 ct 1287 -26 1275 -21 1261 -21 ct 1220 -21 1194 -60 1194 -121 ct
-1194 -177 1217 -213 1254 -213 ct 1280 -213 1304 -190 1304 -164 ct 1304 -164 1304 -164 1304 -50 ct
-p ef
-1664 -155 m 1664 -155 1664 -155 1662 -222 ct 1662 -222 1662 -222 1656 -222 ct
-1656 -222 1656 -222 1655 -221 ct 1651 -218 1650 -217 1648 -217 ct 1646 -217 1641 -218 1635 -221 ct
-1625 -225 1614 -227 1602 -227 ct 1563 -227 1536 -202 1536 -166 ct 1536 -138 1551 -118 1592 -95 ct
-1592 -95 1592 -95 1620 -78 ct 1637 -69 1646 -57 1646 -41 ct 1646 -20 1630 -6 1605 -6 ct
-1589 -6 1574 -12 1565 -23 ct 1555 -35 1550 -47 1544 -75 ct 1544 -75 1544 -75 1536 -75 ct
-1536 -75 1536 -75 1536 2 ct 1536 2 1536 2 1542 2 ct 1546 -3 1548 -4 1554 -4 ct
-1558 -4 1565 -3 1576 0 ct 1589 3 1603 5 1611 5 ct 1648 5 1679 -24 1679 -58 ct 1679 -83 1668 -99 1639 -117 ct
-1639 -117 1639 -117 1587 -148 ct 1573 -156 1566 -169 1566 -182 ct 1566 -202 1581 -216 1603 -216 ct
-1631 -216 1645 -199 1656 -155 ct 1656 -155 1656 -155 1664 -155 ct p ef
-1710 -195 m 1715 -195 1718 -195 1722 -195 ct 1739 -195 1742 -190 1742 -167 ct
-1742 -167 1742 -167 1742 65 ct 1742 90 1737 96 1708 99 ct 1708 99 1708 99 1708 107 ct
-1708 107 1708 107 1826 107 ct 1826 107 1826 107 1826 98 ct 1789 98 1783 93 1783 61 ct
-1783 61 1783 61 1783 -16 ct 1800 0 1812 5 1832 5 ct 1889 5 1934 -50 1934 -122 ct
-1934 -183 1900 -227 1853 -227 ct 1826 -227 1804 -215 1783 -189 ct 1783 -189 1783 -189 1783 -226 ct
-1783 -226 1783 -226 1780 -227 ct 1754 -217 1737 -210 1710 -202 ct 1710 -202 1710 -202 1710 -195 ct
-p
-1783 -165 m 1783 -180 1810 -197 1832 -197 ct 1868 -197 1892 -160 1892 -103 ct
-1892 -48 1868 -11 1833 -11 ct 1811 -11 1783 -29 1783 -44 ct 1783 -44 1783 -44 1783 -165 ct
-p ef
-2154 -81 m 2130 -43 2109 -29 2078 -29 ct 2051 -29 2030 -43 2016 -72 ct 2007 -90 2004 -107 2003 -137 ct
-2003 -137 2003 -137 2152 -137 ct 2148 -169 2143 -183 2131 -199 ct 2117 -217 2094 -227 2069 -227 ct
-2045 -227 2022 -218 2004 -201 ct 1981 -181 1968 -146 1968 -106 ct 1968 -37 2003 5 2059 5 ct
-2105 5 2141 -24 2161 -78 ct 2161 -78 2161 -78 2154 -81 ct p
-2004 -153 m 2009 -191 2026 -209 2055 -209 ct 2085 -209 2096 -196 2103 -153 ct
-2103 -153 2103 -153 2004 -153 ct p ef
-2374 -81 m 2350 -43 2329 -29 2298 -29 ct 2271 -29 2250 -43 2236 -72 ct 2227 -90 2224 -107 2223 -137 ct
-2223 -137 2223 -137 2372 -137 ct 2368 -169 2363 -183 2351 -199 ct 2337 -217 2314 -227 2289 -227 ct
-2265 -227 2242 -218 2224 -201 ct 2201 -181 2188 -146 2188 -106 ct 2188 -37 2223 5 2279 5 ct
-2325 5 2361 -24 2381 -78 ct 2381 -78 2381 -78 2374 -81 ct p
-2224 -153 m 2229 -191 2246 -209 2275 -209 ct 2305 -209 2316 -196 2323 -153 ct
-2323 -153 2323 -153 2224 -153 ct p ef
-2589 -77 m 2565 -42 2548 -31 2520 -31 ct 2476 -31 2445 -70 2445 -127 ct 2445 -178 2472 -213 2511 -213 ct
-2529 -213 2535 -207 2540 -189 ct 2540 -189 2540 -189 2543 -178 ct 2547 -164 2555 -155 2565 -155 ct
-2578 -155 2589 -164 2589 -176 ct 2589 -204 2555 -227 2514 -227 ct 2490 -227 2466 -217 2446 -199 ct
-2422 -178 2408 -144 2408 -105 ct 2408 -41 2446 5 2500 5 ct 2522 5 2541 -3 2559 -18 ct
-2572 -30 2581 -43 2595 -72 ct 2595 -72 2595 -72 2589 -77 ct p ef
-2692 -169 m 2712 -192 2727 -200 2746 -200 ct 2770 -200 2782 -182 2782 -148 ct
-2782 -148 2782 -148 2782 -50 ct 2782 -16 2777 -10 2749 -7 ct 2749 -7 2749 -7 2749 0 ct
-2749 0 2749 0 2852 0 ct 2852 0 2852 0 2852 -7 ct 2826 -12 2823 -16 2823 -50 ct
-2823 -50 2823 -50 2823 -148 ct 2823 -200 2802 -227 2763 -227 ct 2735 -227 2714 -215 2692 -185 ct
-2692 -185 2692 -185 2692 -336 ct 2692 -336 2692 -336 2690 -337 ct 2673 -331 2661 -327 2634 -319 ct
-2634 -319 2634 -319 2621 -315 ct 2621 -315 2621 -315 2621 -308 ct 2623 -308 2624 -308 2627 -308 ct
-2647 -308 2651 -304 2651 -283 ct 2651 -283 2651 -283 2651 -50 ct 2651 -15 2648 -11 2620 -7 ct
-2620 -7 2620 -7 2620 0 ct 2620 0 2620 0 2725 0 ct 2725 0 2725 0 2725 -7 ct 2697 -10 2692 -16 2692 -50 ct
-2692 -50 2692 -50 2692 -169 ct p ef
-pom
-gr
-gr
-gs
-gs
-pum
-10779 16488 t
-9 -196 m 15 -198 19 -198 25 -198 ct 37 -198 42 -190 42 -166 ct 42 -166 42 -166 42 -41 ct
-42 -15 35 -7 8 -7 ct 8 -7 8 -7 8 0 ct 8 0 8 0 115 0 ct 115 0 115 0 115 -8 ct 90 -8 82 -13 82 -33 ct
-82 -33 82 -33 82 -172 ct 82 -173 86 -178 90 -181 ct 102 -193 122 -201 139 -201 ct
-161 -201 171 -184 171 -149 ct 171 -149 171 -149 171 -42 ct 171 -14 166 -8 138 -8 ct
-138 -8 138 -8 138 0 ct 138 0 138 0 247 0 ct 247 0 247 0 247 -7 ct 219 -7 212 -16 212 -46 ct
-212 -46 212 -46 212 -171 ct 227 -192 243 -201 265 -201 ct 292 -201 301 -188 301 -147 ct
-301 -147 301 -147 301 -43 ct 301 -15 297 -11 269 -7 ct 269 -7 269 -7 269 0 ct 269 0 269 0 375 0 ct
-375 0 375 0 375 -8 ct 375 -8 375 -8 363 -8 ct 348 -8 342 -18 342 -37 ct 342 -37 342 -37 342 -139 ct
-342 -197 323 -227 286 -227 ct 258 -227 233 -214 207 -185 ct 198 -214 182 -227 155 -227 ct
-134 -227 121 -220 80 -189 ct 80 -189 80 -189 80 -226 ct 80 -226 80 -226 77 -227 ct
-52 -218 36 -212 9 -205 ct 9 -205 9 -205 9 -196 ct p ef
-470 -227 m 470 -227 470 -227 395 -200 ct 395 -200 395 -200 395 -192 ct 395 -192 395 -192 399 -193 ct
-404 -194 411 -194 415 -194 ct 427 -194 431 -186 431 -164 ct 431 -164 431 -164 431 -49 ct
-431 -14 426 -8 393 -8 ct 393 -8 393 -8 393 0 ct 393 0 393 0 507 0 ct 507 0 507 0 507 -8 ct
-476 -8 472 -15 472 -50 ct 472 -50 472 -50 472 -225 ct 472 -225 472 -225 470 -227 ct
-p
-447 -337 m 434 -337 423 -326 423 -312 ct 423 -298 433 -287 447 -287 ct 461 -287 472 -298 472 -312 ct
-472 -326 461 -337 447 -337 ct p ef
-718 -77 m 694 -42 677 -31 649 -31 ct 605 -31 574 -70 574 -127 ct 574 -178 601 -213 640 -213 ct
-658 -213 664 -207 669 -189 ct 669 -189 669 -189 672 -178 ct 676 -164 684 -155 694 -155 ct
-707 -155 718 -164 718 -176 ct 718 -204 684 -227 643 -227 ct 619 -227 595 -217 575 -199 ct
-551 -178 537 -144 537 -105 ct 537 -41 575 5 629 5 ct 651 5 670 -3 688 -18 ct 701 -30 710 -43 724 -72 ct
-724 -72 724 -72 718 -77 ct p ef
-748 -192 m 755 -194 760 -194 765 -194 ct 777 -194 782 -186 782 -164 ct 782 -164 782 -164 782 -41 ct
-782 -17 778 -13 747 -7 ct 747 -7 747 -7 747 0 ct 747 0 747 0 864 0 ct 864 0 864 0 864 -8 ct
-831 -8 822 -15 822 -44 ct 822 -44 822 -44 822 -155 ct 822 -171 843 -196 856 -196 ct
-859 -196 864 -193 869 -188 ct 877 -182 882 -179 888 -179 ct 900 -179 907 -187 907 -201 ct
-907 -217 897 -227 881 -227 ct 860 -227 846 -216 822 -181 ct 822 -181 822 -181 822 -226 ct
-822 -226 822 -226 820 -227 ct 794 -216 777 -210 748 -200 ct 748 -200 748 -200 748 -192 ct
-p ef
-1031 -227 m 968 -227 924 -180 924 -112 ct 924 -45 969 5 1030 5 ct 1091 5 1138 -47 1138 -115 ct
-1138 -180 1093 -227 1031 -227 ct p
-1025 -213 m 1065 -213 1094 -166 1094 -98 ct 1094 -42 1072 -9 1036 -9 ct 1017 -9 999 -21 989 -40 ct
-975 -66 968 -101 968 -136 ct 968 -183 990 -213 1025 -213 ct p ef
-1164 -195 m 1169 -195 1172 -195 1176 -195 ct 1193 -195 1196 -190 1196 -167 ct
-1196 -167 1196 -167 1196 65 ct 1196 90 1191 96 1162 99 ct 1162 99 1162 99 1162 107 ct
-1162 107 1162 107 1280 107 ct 1280 107 1280 107 1280 98 ct 1243 98 1237 93 1237 61 ct
-1237 61 1237 61 1237 -16 ct 1254 0 1266 5 1286 5 ct 1343 5 1388 -50 1388 -122 ct
-1388 -183 1354 -227 1307 -227 ct 1280 -227 1258 -215 1237 -189 ct 1237 -189 1237 -189 1237 -226 ct
-1237 -226 1237 -226 1234 -227 ct 1208 -217 1191 -210 1164 -202 ct 1164 -202 1164 -202 1164 -195 ct
-p
-1237 -165 m 1237 -180 1264 -197 1286 -197 ct 1322 -197 1346 -160 1346 -103 ct
-1346 -48 1322 -11 1287 -11 ct 1265 -11 1237 -29 1237 -44 ct 1237 -44 1237 -44 1237 -165 ct
-p ef
-1486 -169 m 1506 -192 1521 -200 1540 -200 ct 1564 -200 1576 -182 1576 -148 ct
-1576 -148 1576 -148 1576 -50 ct 1576 -16 1571 -10 1543 -7 ct 1543 -7 1543 -7 1543 0 ct
-1543 0 1543 0 1646 0 ct 1646 0 1646 0 1646 -7 ct 1620 -12 1617 -16 1617 -50 ct
-1617 -50 1617 -50 1617 -148 ct 1617 -200 1596 -227 1557 -227 ct 1529 -227 1508 -215 1486 -185 ct
-1486 -185 1486 -185 1486 -336 ct 1486 -336 1486 -336 1484 -337 ct 1467 -331 1455 -327 1428 -319 ct
-1428 -319 1428 -319 1415 -315 ct 1415 -315 1415 -315 1415 -308 ct 1417 -308 1418 -308 1421 -308 ct
-1441 -308 1445 -304 1445 -283 ct 1445 -283 1445 -283 1445 -50 ct 1445 -15 1442 -11 1414 -7 ct
-1414 -7 1414 -7 1414 0 ct 1414 0 1414 0 1519 0 ct 1519 0 1519 0 1519 -7 ct 1491 -10 1486 -16 1486 -50 ct
-1486 -50 1486 -50 1486 -169 ct p ef
-1780 -227 m 1717 -227 1673 -180 1673 -112 ct 1673 -45 1718 5 1779 5 ct 1840 5 1887 -47 1887 -115 ct
-1887 -180 1842 -227 1780 -227 ct p
-1774 -213 m 1814 -213 1843 -166 1843 -98 ct 1843 -42 1821 -9 1785 -9 ct 1766 -9 1748 -21 1738 -40 ct
-1724 -66 1717 -101 1717 -136 ct 1717 -183 1739 -213 1774 -213 ct p ef
-1917 -196 m 1920 -198 1924 -198 1930 -198 ct 1943 -198 1948 -191 1948 -166 ct
-1948 -166 1948 -166 1948 -44 ct 1948 -15 1942 -8 1918 -8 ct 1918 -8 1918 -8 1918 0 ct
-1918 0 1918 0 2020 0 ct 2020 0 2020 0 2020 -8 ct 1996 -8 1988 -14 1988 -32 ct 1988 -32 1988 -32 1988 -171 ct
-2012 -194 2022 -200 2038 -200 ct 2062 -200 2074 -184 2074 -152 ct 2074 -152 2074 -152 2074 -48 ct
-2074 -17 2067 -8 2043 -8 ct 2043 -8 2043 -8 2043 0 ct 2043 0 2043 0 2144 0 ct 2144 0 2144 0 2144 -7 ct
-2120 -10 2114 -16 2114 -40 ct 2114 -40 2114 -40 2114 -153 ct 2114 -199 2093 -227 2057 -227 ct
-2035 -227 2020 -219 1987 -187 ct 1987 -187 1987 -187 1987 -226 ct 1987 -226 1987 -226 1984 -227 ct
-1960 -218 1943 -213 1917 -205 ct 1917 -205 1917 -205 1917 -196 ct p ef
-2357 -81 m 2333 -43 2312 -29 2281 -29 ct 2254 -29 2233 -43 2219 -72 ct 2210 -90 2207 -107 2206 -137 ct
-2206 -137 2206 -137 2355 -137 ct 2351 -169 2346 -183 2334 -199 ct 2320 -217 2297 -227 2272 -227 ct
-2248 -227 2225 -218 2207 -201 ct 2184 -181 2171 -146 2171 -106 ct 2171 -37 2206 5 2262 5 ct
-2308 5 2344 -24 2364 -78 ct 2364 -78 2364 -78 2357 -81 ct p
-2207 -153 m 2212 -191 2229 -209 2258 -209 ct 2288 -209 2299 -196 2306 -153 ct
-2306 -153 2306 -153 2207 -153 ct p ef
-pom
-gr
-gr
-gs
-gs
-pum
-15356 12996 t
-3 -192 m 10 -194 15 -194 20 -194 ct 32 -194 37 -186 37 -164 ct 37 -164 37 -164 37 -41 ct
-37 -17 33 -13 2 -7 ct 2 -7 2 -7 2 0 ct 2 0 2 0 119 0 ct 119 0 119 0 119 -8 ct 86 -8 77 -15 77 -44 ct
-77 -44 77 -44 77 -155 ct 77 -171 98 -196 111 -196 ct 114 -196 119 -193 124 -188 ct
-132 -182 137 -179 143 -179 ct 155 -179 162 -187 162 -201 ct 162 -217 152 -227 136 -227 ct
-115 -227 101 -216 77 -181 ct 77 -181 77 -181 77 -226 ct 77 -226 77 -226 75 -227 ct
-49 -216 32 -210 3 -200 ct 3 -200 3 -200 3 -192 ct p ef
-363 -81 m 339 -43 318 -29 287 -29 ct 260 -29 239 -43 225 -72 ct 216 -90 213 -107 212 -137 ct
-212 -137 212 -137 361 -137 ct 357 -169 352 -183 340 -199 ct 326 -217 303 -227 278 -227 ct
-254 -227 231 -218 213 -201 ct 190 -181 177 -146 177 -106 ct 177 -37 212 5 268 5 ct
-314 5 350 -24 370 -78 ct 370 -78 370 -78 363 -81 ct p
-213 -153 m 218 -191 235 -209 264 -209 ct 294 -209 305 -196 312 -153 ct 312 -153 312 -153 213 -153 ct
-p ef
-616 -222 m 616 -222 616 -222 549 -222 ct 549 -222 549 -222 549 -215 ct 564 -213 571 -208 571 -199 ct
-571 -194 570 -189 568 -184 ct 568 -184 568 -184 521 -56 ct 521 -56 521 -56 471 -182 ct
-468 -189 467 -196 467 -201 ct 467 -210 472 -213 489 -215 ct 489 -215 489 -215 489 -222 ct
-489 -222 489 -222 394 -222 ct 394 -222 394 -222 394 -214 ct 413 -214 416 -209 438 -158 ct
-438 -158 438 -158 496 -16 ct 497 -13 499 -10 500 -6 ct 503 3 506 7 509 7 ct 512 7 515 1 522 -18 ct
-522 -18 522 -18 584 -176 ct 599 -210 601 -213 616 -215 ct 616 -215 616 -215 616 -222 ct
-p ef
-829 -81 m 805 -43 784 -29 753 -29 ct 726 -29 705 -43 691 -72 ct 682 -90 679 -107 678 -137 ct
-678 -137 678 -137 827 -137 ct 823 -169 818 -183 806 -199 ct 792 -217 769 -227 744 -227 ct
-720 -227 697 -218 679 -201 ct 656 -181 643 -146 643 -106 ct 643 -37 678 5 734 5 ct
-780 5 816 -24 836 -78 ct 836 -78 836 -78 829 -81 ct p
-679 -153 m 684 -191 701 -209 730 -209 ct 760 -209 771 -196 778 -153 ct 778 -153 778 -153 679 -153 ct
-p ef
-854 -192 m 861 -194 866 -194 871 -194 ct 883 -194 888 -186 888 -164 ct 888 -164 888 -164 888 -41 ct
-888 -17 884 -13 853 -7 ct 853 -7 853 -7 853 0 ct 853 0 853 0 970 0 ct 970 0 970 0 970 -8 ct
-937 -8 928 -15 928 -44 ct 928 -44 928 -44 928 -155 ct 928 -171 949 -196 962 -196 ct
-965 -196 970 -193 975 -188 ct 983 -182 988 -179 994 -179 ct 1006 -179 1013 -187 1013 -201 ct
-1013 -217 1003 -227 987 -227 ct 966 -227 952 -216 928 -181 ct 928 -181 928 -181 928 -226 ct
-928 -226 928 -226 926 -227 ct 900 -216 883 -210 854 -200 ct 854 -200 854 -200 854 -192 ct
-p ef
-1090 -336 m 1090 -336 1090 -336 1088 -337 ct 1067 -330 1054 -326 1031 -319 ct
-1031 -319 1031 -319 1017 -315 ct 1017 -315 1017 -315 1017 -308 ct 1020 -308 1022 -308 1026 -308 ct
-1045 -308 1049 -304 1049 -283 ct 1049 -283 1049 -283 1049 -27 ct 1049 -11 1091 5 1129 5 ct
-1193 5 1243 -49 1243 -120 ct 1243 -181 1206 -227 1157 -227 ct 1128 -227 1100 -209 1090 -185 ct
-1090 -185 1090 -185 1090 -336 ct p
-1090 -159 m 1090 -178 1113 -196 1138 -196 ct 1176 -196 1200 -157 1200 -97 ct
-1200 -42 1177 -11 1137 -11 ct 1112 -11 1090 -22 1090 -35 ct 1090 -35 1090 -35 1090 -159 ct
-p ef
-1464 -81 m 1440 -43 1419 -29 1388 -29 ct 1361 -29 1340 -43 1326 -72 ct 1317 -90 1314 -107 1313 -137 ct
-1313 -137 1313 -137 1462 -137 ct 1458 -169 1453 -183 1441 -199 ct 1427 -217 1404 -227 1379 -227 ct
-1355 -227 1332 -218 1314 -201 ct 1291 -181 1278 -146 1278 -106 ct 1278 -37 1313 5 1369 5 ct
-1415 5 1451 -24 1471 -78 ct 1471 -78 1471 -78 1464 -81 ct p
-1314 -153 m 1319 -191 1336 -209 1365 -209 ct 1395 -209 1406 -196 1413 -153 ct
-1413 -153 1413 -153 1314 -153 ct p ef
-1489 -192 m 1496 -194 1501 -194 1506 -194 ct 1518 -194 1523 -186 1523 -164 ct
-1523 -164 1523 -164 1523 -41 ct 1523 -17 1519 -13 1488 -7 ct 1488 -7 1488 -7 1488 0 ct
-1488 0 1488 0 1605 0 ct 1605 0 1605 0 1605 -8 ct 1572 -8 1563 -15 1563 -44 ct 1563 -44 1563 -44 1563 -155 ct
-1563 -171 1584 -196 1597 -196 ct 1600 -196 1605 -193 1610 -188 ct 1618 -182 1623 -179 1629 -179 ct
-1641 -179 1648 -187 1648 -201 ct 1648 -217 1638 -227 1622 -227 ct 1601 -227 1587 -216 1563 -181 ct
-1563 -181 1563 -181 1563 -226 ct 1563 -226 1563 -226 1561 -227 ct 1535 -216 1518 -210 1489 -200 ct
-1489 -200 1489 -200 1489 -192 ct p ef
-1865 -32 m 1857 -26 1851 -23 1844 -23 ct 1833 -23 1829 -30 1829 -52 ct 1829 -52 1829 -52 1829 -148 ct
-1829 -173 1827 -188 1819 -200 ct 1809 -218 1788 -227 1759 -227 ct 1714 -227 1678 -203 1678 -171 ct
-1678 -160 1688 -150 1699 -150 ct 1711 -150 1721 -160 1721 -171 ct 1721 -173 1720 -175 1720 -179 ct
-1719 -183 1718 -187 1718 -191 ct 1718 -204 1734 -215 1753 -215 ct 1777 -215 1790 -201 1790 -174 ct
-1790 -174 1790 -174 1790 -144 ct 1715 -113 1707 -109 1686 -90 ct 1676 -81 1669 -64 1669 -48 ct
-1669 -17 1690 5 1720 5 ct 1741 5 1761 -5 1790 -31 ct 1793 -5 1802 5 1821 5 ct 1838 5 1848 -1 1865 -20 ct
-1865 -20 1865 -20 1865 -32 ct p
-1790 -61 m 1790 -45 1788 -41 1777 -35 ct 1766 -28 1752 -24 1742 -24 ct 1725 -24 1712 -40 1712 -62 ct
-1712 -62 1712 -62 1712 -63 ct 1712 -92 1731 -110 1790 -132 ct 1790 -132 1790 -132 1790 -61 ct
-p ef
-1994 -222 m 1994 -222 1994 -222 1946 -222 ct 1946 -222 1946 -222 1946 -279 ct
-1946 -284 1945 -286 1942 -286 ct 1939 -281 1936 -277 1932 -272 ct 1914 -245 1893 -221 1886 -219 ct
-1880 -216 1877 -212 1877 -210 ct 1877 -208 1878 -207 1879 -206 ct 1879 -206 1879 -206 1905 -206 ct
-1905 -206 1905 -206 1905 -58 ct 1905 -16 1919 5 1948 5 ct 1972 5 1990 -7 2006 -33 ct
-2006 -33 2006 -33 2000 -38 ct 1990 -26 1981 -21 1971 -21 ct 1953 -21 1946 -34 1946 -65 ct
-1946 -65 1946 -65 1946 -206 ct 1946 -206 1946 -206 1994 -206 ct 1994 -206 1994 -206 1994 -222 ct
-p ef
-2096 -227 m 2096 -227 2096 -227 2021 -200 ct 2021 -200 2021 -200 2021 -192 ct
-2021 -192 2021 -192 2025 -193 ct 2030 -194 2037 -194 2041 -194 ct 2053 -194 2057 -186 2057 -164 ct
-2057 -164 2057 -164 2057 -49 ct 2057 -14 2052 -8 2019 -8 ct 2019 -8 2019 -8 2019 0 ct
-2019 0 2019 0 2133 0 ct 2133 0 2133 0 2133 -8 ct 2102 -8 2098 -15 2098 -50 ct 2098 -50 2098 -50 2098 -225 ct
-2098 -225 2098 -225 2096 -227 ct p
-2073 -337 m 2060 -337 2049 -326 2049 -312 ct 2049 -298 2059 -287 2073 -287 ct
-2087 -287 2098 -298 2098 -312 ct 2098 -326 2087 -337 2073 -337 ct p ef
-2272 -227 m 2209 -227 2165 -180 2165 -112 ct 2165 -45 2210 5 2271 5 ct 2332 5 2379 -47 2379 -115 ct
-2379 -180 2334 -227 2272 -227 ct p
-2266 -213 m 2306 -213 2335 -166 2335 -98 ct 2335 -42 2313 -9 2277 -9 ct 2258 -9 2240 -21 2230 -40 ct
-2216 -66 2209 -101 2209 -136 ct 2209 -183 2231 -213 2266 -213 ct p ef
-2408 -196 m 2411 -198 2415 -198 2421 -198 ct 2434 -198 2439 -191 2439 -166 ct
-2439 -166 2439 -166 2439 -44 ct 2439 -15 2433 -8 2409 -8 ct 2409 -8 2409 -8 2409 0 ct
-2409 0 2409 0 2511 0 ct 2511 0 2511 0 2511 -8 ct 2487 -8 2479 -14 2479 -32 ct 2479 -32 2479 -32 2479 -171 ct
-2503 -194 2513 -200 2529 -200 ct 2553 -200 2565 -184 2565 -152 ct 2565 -152 2565 -152 2565 -48 ct
-2565 -17 2558 -8 2534 -8 ct 2534 -8 2534 -8 2534 0 ct 2534 0 2534 0 2635 0 ct 2635 0 2635 0 2635 -7 ct
-2611 -10 2605 -16 2605 -40 ct 2605 -40 2605 -40 2605 -153 ct 2605 -199 2584 -227 2548 -227 ct
-2526 -227 2511 -219 2478 -187 ct 2478 -187 2478 -187 2478 -226 ct 2478 -226 2478 -226 2475 -227 ct
-2451 -218 2434 -213 2408 -205 ct 2408 -205 2408 -205 2408 -196 ct p ef
-pom
-gr
-gr
-gs
-gs
-pum
-4561 12996 t
-214 -32 m 206 -26 200 -23 193 -23 ct 182 -23 178 -30 178 -52 ct 178 -52 178 -52 178 -148 ct
-178 -173 176 -188 168 -200 ct 158 -218 137 -227 108 -227 ct 63 -227 27 -203 27 -171 ct
-27 -160 37 -150 48 -150 ct 60 -150 70 -160 70 -171 ct 70 -173 69 -175 69 -179 ct
-68 -183 67 -187 67 -191 ct 67 -204 83 -215 102 -215 ct 126 -215 139 -201 139 -174 ct
-139 -174 139 -174 139 -144 ct 64 -113 56 -109 35 -90 ct 25 -81 18 -64 18 -48 ct
-18 -17 39 5 69 5 ct 90 5 110 -5 139 -31 ct 142 -5 151 5 170 5 ct 187 5 197 -1 214 -20 ct
-214 -20 214 -20 214 -32 ct p
-139 -61 m 139 -45 137 -41 126 -35 ct 115 -28 101 -24 91 -24 ct 74 -24 61 -40 61 -62 ct
-61 -62 61 -62 61 -63 ct 61 -92 80 -110 139 -132 ct 139 -132 139 -132 139 -61 ct
-p ef
-387 5 m 387 5 387 5 458 -21 ct 458 -21 458 -21 458 -28 ct 449 -28 448 -28 447 -28 ct
-429 -28 425 -33 425 -56 ct 425 -56 425 -56 425 -336 ct 425 -336 425 -336 423 -337 ct
-400 -329 383 -324 352 -315 ct 352 -315 352 -315 352 -308 ct 356 -308 358 -308 362 -308 ct
-380 -308 385 -303 385 -283 ct 385 -283 385 -283 385 -206 ct 366 -222 353 -227 334 -227 ct
-278 -227 233 -171 233 -101 ct 233 -38 269 5 323 5 ct 350 5 368 -5 385 -28 ct 385 -28 385 -28 385 4 ct
-385 4 385 4 387 5 ct p
-385 -50 m 385 -47 381 -41 376 -35 ct 368 -26 356 -21 342 -21 ct 301 -21 275 -60 275 -121 ct
-275 -177 298 -213 335 -213 ct 361 -213 385 -190 385 -164 ct 385 -164 385 -164 385 -50 ct
-p ef
-684 -32 m 676 -26 670 -23 663 -23 ct 652 -23 648 -30 648 -52 ct 648 -52 648 -52 648 -148 ct
-648 -173 646 -188 638 -200 ct 628 -218 607 -227 578 -227 ct 533 -227 497 -203 497 -171 ct
-497 -160 507 -150 518 -150 ct 530 -150 540 -160 540 -171 ct 540 -173 539 -175 539 -179 ct
-538 -183 537 -187 537 -191 ct 537 -204 553 -215 572 -215 ct 596 -215 609 -201 609 -174 ct
-609 -174 609 -174 609 -144 ct 534 -113 526 -109 505 -90 ct 495 -81 488 -64 488 -48 ct
-488 -17 509 5 539 5 ct 560 5 580 -5 609 -31 ct 612 -5 621 5 640 5 ct 657 5 667 -1 684 -20 ct
-684 -20 684 -20 684 -32 ct p
-609 -61 m 609 -45 607 -41 596 -35 ct 585 -28 571 -24 561 -24 ct 544 -24 531 -40 531 -62 ct
-531 -62 531 -62 531 -63 ct 531 -92 550 -110 609 -132 ct 609 -132 609 -132 609 -61 ct
-p ef
-694 -195 m 699 -195 702 -195 706 -195 ct 723 -195 726 -190 726 -167 ct 726 -167 726 -167 726 65 ct
-726 90 721 96 692 99 ct 692 99 692 99 692 107 ct 692 107 692 107 810 107 ct 810 107 810 107 810 98 ct
-773 98 767 93 767 61 ct 767 61 767 61 767 -16 ct 784 0 796 5 816 5 ct 873 5 918 -50 918 -122 ct
-918 -183 884 -227 837 -227 ct 810 -227 788 -215 767 -189 ct 767 -189 767 -189 767 -226 ct
-767 -226 767 -226 764 -227 ct 738 -217 721 -210 694 -202 ct 694 -202 694 -202 694 -195 ct
-p
-767 -165 m 767 -180 794 -197 816 -197 ct 852 -197 876 -160 876 -103 ct 876 -48 852 -11 817 -11 ct
-795 -11 767 -29 767 -44 ct 767 -44 767 -44 767 -165 ct p ef
-1063 -222 m 1063 -222 1063 -222 1015 -222 ct 1015 -222 1015 -222 1015 -279 ct
-1015 -284 1014 -286 1011 -286 ct 1008 -281 1005 -277 1001 -272 ct 983 -245 962 -221 955 -219 ct
-949 -216 946 -212 946 -210 ct 946 -208 947 -207 948 -206 ct 948 -206 948 -206 974 -206 ct
-974 -206 974 -206 974 -58 ct 974 -16 988 5 1017 5 ct 1041 5 1059 -7 1075 -33 ct
-1075 -33 1075 -33 1069 -38 ct 1059 -26 1050 -21 1040 -21 ct 1022 -21 1015 -34 1015 -65 ct
-1015 -65 1015 -65 1015 -206 ct 1015 -206 1015 -206 1063 -206 ct 1063 -206 1063 -206 1063 -222 ct
-p ef
-1165 -227 m 1165 -227 1165 -227 1090 -200 ct 1090 -200 1090 -200 1090 -192 ct
-1090 -192 1090 -192 1094 -193 ct 1099 -194 1106 -194 1110 -194 ct 1122 -194 1126 -186 1126 -164 ct
-1126 -164 1126 -164 1126 -49 ct 1126 -14 1121 -8 1088 -8 ct 1088 -8 1088 -8 1088 0 ct
-1088 0 1088 0 1202 0 ct 1202 0 1202 0 1202 -8 ct 1171 -8 1167 -15 1167 -50 ct 1167 -50 1167 -50 1167 -225 ct
-1167 -225 1167 -225 1165 -227 ct p
-1142 -337 m 1129 -337 1118 -326 1118 -312 ct 1118 -298 1128 -287 1142 -287 ct
-1156 -287 1167 -298 1167 -312 ct 1167 -326 1156 -337 1142 -337 ct p ef
-1450 -222 m 1450 -222 1450 -222 1383 -222 ct 1383 -222 1383 -222 1383 -215 ct
-1398 -213 1405 -208 1405 -199 ct 1405 -194 1404 -189 1402 -184 ct 1402 -184 1402 -184 1355 -56 ct
-1355 -56 1355 -56 1305 -182 ct 1302 -189 1301 -196 1301 -201 ct 1301 -210 1306 -213 1323 -215 ct
-1323 -215 1323 -215 1323 -222 ct 1323 -222 1323 -222 1228 -222 ct 1228 -222 1228 -222 1228 -214 ct
-1247 -214 1250 -209 1272 -158 ct 1272 -158 1272 -158 1330 -16 ct 1331 -13 1333 -10 1334 -6 ct
-1337 3 1340 7 1343 7 ct 1346 7 1349 1 1356 -18 ct 1356 -18 1356 -18 1418 -176 ct
-1433 -210 1435 -213 1450 -215 ct 1450 -215 1450 -215 1450 -222 ct p ef
-1663 -81 m 1639 -43 1618 -29 1587 -29 ct 1560 -29 1539 -43 1525 -72 ct 1516 -90 1513 -107 1512 -137 ct
-1512 -137 1512 -137 1661 -137 ct 1657 -169 1652 -183 1640 -199 ct 1626 -217 1603 -227 1578 -227 ct
-1554 -227 1531 -218 1513 -201 ct 1490 -181 1477 -146 1477 -106 ct 1477 -37 1512 5 1568 5 ct
-1614 5 1650 -24 1670 -78 ct 1670 -78 1670 -78 1663 -81 ct p
-1513 -153 m 1518 -191 1535 -209 1564 -209 ct 1594 -209 1605 -196 1612 -153 ct
-1612 -153 1612 -153 1513 -153 ct p ef
-1958 -222 m 1958 -222 1958 -222 1898 -222 ct 1898 -222 1898 -222 1898 -279 ct
-1898 -308 1907 -323 1926 -323 ct 1936 -323 1943 -318 1951 -304 ct 1959 -291 1965 -286 1973 -286 ct
-1984 -286 1993 -295 1993 -306 ct 1993 -324 1972 -337 1943 -337 ct 1913 -337 1887 -324 1875 -301 ct
-1862 -279 1858 -261 1858 -222 ct 1858 -222 1858 -222 1818 -222 ct 1818 -222 1818 -222 1818 -206 ct
-1818 -206 1818 -206 1858 -206 ct 1858 -206 1858 -206 1858 -51 ct 1858 -14 1853 -8 1818 -8 ct
-1818 -8 1818 -8 1818 0 ct 1818 0 1818 0 1944 0 ct 1944 0 1944 0 1944 -8 ct 1904 -8 1899 -13 1899 -51 ct
-1899 -51 1899 -51 1899 -206 ct 1899 -206 1899 -206 1958 -206 ct 1958 -206 1958 -206 1958 -222 ct
-p ef
-2054 -227 m 2054 -227 2054 -227 1979 -200 ct 1979 -200 1979 -200 1979 -192 ct
-1979 -192 1979 -192 1983 -193 ct 1988 -194 1995 -194 1999 -194 ct 2011 -194 2015 -186 2015 -164 ct
-2015 -164 2015 -164 2015 -49 ct 2015 -14 2010 -8 1977 -8 ct 1977 -8 1977 -8 1977 0 ct
-1977 0 1977 0 2091 0 ct 2091 0 2091 0 2091 -8 ct 2060 -8 2056 -15 2056 -50 ct 2056 -50 2056 -50 2056 -225 ct
-2056 -225 2056 -225 2054 -227 ct p
-2031 -337 m 2018 -337 2007 -326 2007 -312 ct 2007 -298 2017 -287 2031 -287 ct
-2045 -287 2056 -298 2056 -312 ct 2056 -326 2045 -337 2031 -337 ct p ef
-2117 -307 m 2117 -307 2117 -307 2120 -307 ct 2125 -308 2131 -308 2135 -308 ct
-2151 -308 2155 -301 2155 -278 ct 2155 -278 2155 -278 2155 -42 ct 2155 -15 2149 -8 2118 -8 ct
-2118 -8 2118 -8 2118 0 ct 2118 0 2118 0 2232 0 ct 2232 0 2232 0 2232 -8 ct 2202 -8 2196 -14 2196 -41 ct
-2196 -41 2196 -41 2196 -336 ct 2196 -336 2196 -336 2194 -337 ct 2169 -328 2151 -323 2117 -315 ct
-2117 -315 2117 -315 2117 -307 ct p ef
-2367 -222 m 2367 -222 2367 -222 2319 -222 ct 2319 -222 2319 -222 2319 -279 ct
-2319 -284 2318 -286 2315 -286 ct 2312 -281 2309 -277 2305 -272 ct 2287 -245 2266 -221 2259 -219 ct
-2253 -216 2250 -212 2250 -210 ct 2250 -208 2251 -207 2252 -206 ct 2252 -206 2252 -206 2278 -206 ct
-2278 -206 2278 -206 2278 -58 ct 2278 -16 2292 5 2321 5 ct 2345 5 2363 -7 2379 -33 ct
-2379 -33 2379 -33 2373 -38 ct 2363 -26 2354 -21 2344 -21 ct 2326 -21 2319 -34 2319 -65 ct
-2319 -65 2319 -65 2319 -206 ct 2319 -206 2319 -206 2367 -206 ct 2367 -206 2367 -206 2367 -222 ct
-p ef
-2581 -81 m 2557 -43 2536 -29 2505 -29 ct 2478 -29 2457 -43 2443 -72 ct 2434 -90 2431 -107 2430 -137 ct
-2430 -137 2430 -137 2579 -137 ct 2575 -169 2570 -183 2558 -199 ct 2544 -217 2521 -227 2496 -227 ct
-2472 -227 2449 -218 2431 -201 ct 2408 -181 2395 -146 2395 -106 ct 2395 -37 2430 5 2486 5 ct
-2532 5 2568 -24 2588 -78 ct 2588 -78 2588 -78 2581 -81 ct p
-2431 -153 m 2436 -191 2453 -209 2482 -209 ct 2512 -209 2523 -196 2530 -153 ct
-2530 -153 2530 -153 2431 -153 ct p ef
-2607 -192 m 2614 -194 2619 -194 2624 -194 ct 2636 -194 2641 -186 2641 -164 ct
-2641 -164 2641 -164 2641 -41 ct 2641 -17 2637 -13 2606 -7 ct 2606 -7 2606 -7 2606 0 ct
-2606 0 2606 0 2723 0 ct 2723 0 2723 0 2723 -8 ct 2690 -8 2681 -15 2681 -44 ct 2681 -44 2681 -44 2681 -155 ct
-2681 -171 2702 -196 2715 -196 ct 2718 -196 2723 -193 2728 -188 ct 2736 -182 2741 -179 2747 -179 ct
-2759 -179 2766 -187 2766 -201 ct 2766 -217 2756 -227 2740 -227 ct 2719 -227 2705 -216 2681 -181 ct
-2681 -181 2681 -181 2681 -226 ct 2681 -226 2681 -226 2679 -227 ct 2653 -216 2636 -210 2607 -200 ct
-2607 -200 2607 -200 2607 -192 ct p ef
-pom
-gr
-gr
-gs
-gs
-pum
-10753 9450 t
-9 -307 m 9 -307 9 -307 12 -307 ct 17 -308 23 -308 27 -308 ct 43 -308 47 -301 47 -278 ct
-47 -278 47 -278 47 -42 ct 47 -15 41 -8 10 -8 ct 10 -8 10 -8 10 0 ct 10 0 10 0 124 0 ct
-124 0 124 0 124 -8 ct 94 -8 88 -14 88 -41 ct 88 -41 88 -41 88 -336 ct 88 -336 88 -336 86 -337 ct
-61 -328 43 -323 9 -315 ct 9 -315 9 -315 9 -307 ct p ef
-256 -227 m 193 -227 149 -180 149 -112 ct 149 -45 194 5 255 5 ct 316 5 363 -47 363 -115 ct
-363 -180 318 -227 256 -227 ct p
-250 -213 m 290 -213 319 -166 319 -98 ct 319 -42 297 -9 261 -9 ct 242 -9 224 -21 214 -40 ct
-200 -66 193 -101 193 -136 ct 193 -183 215 -213 250 -213 ct p ef
-617 -25 m 617 -25 617 -25 614 -25 ct 592 -25 587 -30 587 -53 ct 587 -53 587 -53 587 -222 ct
-587 -222 587 -222 510 -222 ct 510 -222 510 -222 510 -213 ct 540 -213 546 -208 546 -183 ct
-546 -183 546 -183 546 -67 ct 546 -53 544 -46 537 -41 ct 524 -30 509 -24 494 -24 ct
-476 -24 460 -41 460 -61 ct 460 -61 460 -61 460 -222 ct 460 -222 460 -222 389 -222 ct
-389 -222 389 -222 389 -214 ct 413 -214 419 -206 419 -184 ct 419 -184 419 -184 419 -59 ct
-419 -20 443 5 478 5 ct 496 5 515 -3 528 -16 ct 528 -16 528 -16 549 -38 ct 549 -38 549 -38 549 4 ct
-549 4 549 4 551 5 ct 575 -5 592 -11 617 -18 ct 617 -18 617 -18 617 -25 ct p ef
-798 5 m 798 5 798 5 869 -21 ct 869 -21 869 -21 869 -28 ct 860 -28 859 -28 858 -28 ct
-840 -28 836 -33 836 -56 ct 836 -56 836 -56 836 -336 ct 836 -336 836 -336 834 -337 ct
-811 -329 794 -324 763 -315 ct 763 -315 763 -315 763 -308 ct 767 -308 769 -308 773 -308 ct
-791 -308 796 -303 796 -283 ct 796 -283 796 -283 796 -206 ct 777 -222 764 -227 745 -227 ct
-689 -227 644 -171 644 -101 ct 644 -38 680 5 734 5 ct 761 5 779 -5 796 -28 ct 796 -28 796 -28 796 4 ct
-796 4 796 4 798 5 ct p
-796 -50 m 796 -47 792 -41 787 -35 ct 779 -26 767 -21 753 -21 ct 712 -21 686 -60 686 -121 ct
-686 -177 709 -213 746 -213 ct 772 -213 796 -190 796 -164 ct 796 -164 796 -164 796 -50 ct
-p ef
-1034 -155 m 1034 -155 1034 -155 1032 -222 ct 1032 -222 1032 -222 1026 -222 ct
-1026 -222 1026 -222 1025 -221 ct 1021 -218 1020 -217 1018 -217 ct 1016 -217 1011 -218 1005 -221 ct
-995 -225 984 -227 972 -227 ct 933 -227 906 -202 906 -166 ct 906 -138 921 -118 962 -95 ct
-962 -95 962 -95 990 -78 ct 1007 -69 1016 -57 1016 -41 ct 1016 -20 1000 -6 975 -6 ct
-959 -6 944 -12 935 -23 ct 925 -35 920 -47 914 -75 ct 914 -75 914 -75 906 -75 ct
-906 -75 906 -75 906 2 ct 906 2 906 2 912 2 ct 916 -3 918 -4 924 -4 ct 928 -4 935 -3 946 0 ct
-959 3 973 5 981 5 ct 1018 5 1049 -24 1049 -58 ct 1049 -83 1038 -99 1009 -117 ct
-1009 -117 1009 -117 957 -148 ct 943 -156 936 -169 936 -182 ct 936 -202 951 -216 973 -216 ct
-1001 -216 1015 -199 1026 -155 ct 1026 -155 1026 -155 1034 -155 ct p ef
-1079 -195 m 1084 -195 1087 -195 1091 -195 ct 1108 -195 1111 -190 1111 -167 ct
-1111 -167 1111 -167 1111 65 ct 1111 90 1106 96 1077 99 ct 1077 99 1077 99 1077 107 ct
-1077 107 1077 107 1195 107 ct 1195 107 1195 107 1195 98 ct 1158 98 1152 93 1152 61 ct
-1152 61 1152 61 1152 -16 ct 1169 0 1181 5 1201 5 ct 1258 5 1303 -50 1303 -122 ct
-1303 -183 1269 -227 1222 -227 ct 1195 -227 1173 -215 1152 -189 ct 1152 -189 1152 -189 1152 -226 ct
-1152 -226 1152 -226 1149 -227 ct 1123 -217 1106 -210 1079 -202 ct 1079 -202 1079 -202 1079 -195 ct
-p
-1152 -165 m 1152 -180 1179 -197 1201 -197 ct 1237 -197 1261 -160 1261 -103 ct
-1261 -48 1237 -11 1202 -11 ct 1180 -11 1152 -29 1152 -44 ct 1152 -44 1152 -44 1152 -165 ct
-p ef
-1523 -81 m 1499 -43 1478 -29 1447 -29 ct 1420 -29 1399 -43 1385 -72 ct 1376 -90 1373 -107 1372 -137 ct
-1372 -137 1372 -137 1521 -137 ct 1517 -169 1512 -183 1500 -199 ct 1486 -217 1463 -227 1438 -227 ct
-1414 -227 1391 -218 1373 -201 ct 1350 -181 1337 -146 1337 -106 ct 1337 -37 1372 5 1428 5 ct
-1474 5 1510 -24 1530 -78 ct 1530 -78 1530 -78 1523 -81 ct p
-1373 -153 m 1378 -191 1395 -209 1424 -209 ct 1454 -209 1465 -196 1472 -153 ct
-1472 -153 1472 -153 1373 -153 ct p ef
-1759 -32 m 1751 -26 1745 -23 1738 -23 ct 1727 -23 1723 -30 1723 -52 ct 1723 -52 1723 -52 1723 -148 ct
-1723 -173 1721 -188 1713 -200 ct 1703 -218 1682 -227 1653 -227 ct 1608 -227 1572 -203 1572 -171 ct
-1572 -160 1582 -150 1593 -150 ct 1605 -150 1615 -160 1615 -171 ct 1615 -173 1614 -175 1614 -179 ct
-1613 -183 1612 -187 1612 -191 ct 1612 -204 1628 -215 1647 -215 ct 1671 -215 1684 -201 1684 -174 ct
-1684 -174 1684 -174 1684 -144 ct 1609 -113 1601 -109 1580 -90 ct 1570 -81 1563 -64 1563 -48 ct
-1563 -17 1584 5 1614 5 ct 1635 5 1655 -5 1684 -31 ct 1687 -5 1696 5 1715 5 ct 1732 5 1742 -1 1759 -20 ct
-1759 -20 1759 -20 1759 -32 ct p
-1684 -61 m 1684 -45 1682 -41 1671 -35 ct 1660 -28 1646 -24 1636 -24 ct 1619 -24 1606 -40 1606 -62 ct
-1606 -62 1606 -62 1606 -63 ct 1606 -92 1625 -110 1684 -132 ct 1684 -132 1684 -132 1684 -61 ct
-p ef
-1768 -307 m 1775 -307 1779 -308 1784 -308 ct 1800 -308 1805 -302 1805 -278 ct
-1805 -278 1805 -278 1805 -40 ct 1805 -15 1803 -13 1768 -7 ct 1768 -7 1768 -7 1768 0 ct
-1768 0 1768 0 1882 0 ct 1882 0 1882 0 1882 -8 ct 1882 -8 1882 -8 1872 -8 ct 1853 -8 1845 -15 1845 -32 ct
-1845 -32 1845 -32 1845 -124 ct 1845 -124 1845 -124 1913 -32 ct 1913 -32 1913 -32 1915 -30 ct
-1916 -28 1917 -27 1918 -25 ct 1922 -20 1923 -17 1923 -15 ct 1923 -10 1919 -7 1913 -7 ct
-1913 -7 1913 -7 1904 -7 ct 1904 -7 1904 -7 1904 0 ct 1904 0 1904 0 2009 0 ct 2009 0 2009 0 2009 -8 ct
-1988 -8 1973 -18 1953 -43 ct 1953 -43 1953 -43 1879 -139 ct 1879 -139 1879 -139 1893 -152 ct
-1927 -185 1957 -208 1971 -212 ct 1979 -214 1985 -215 1994 -215 ct 1994 -215 1994 -215 1997 -215 ct
-1997 -215 1997 -215 1997 -222 ct 1997 -222 1997 -222 1899 -222 ct 1899 -222 1899 -222 1899 -215 ct
-1918 -215 1923 -213 1923 -206 ct 1923 -202 1918 -195 1912 -189 ct 1912 -189 1912 -189 1845 -129 ct
-1845 -129 1845 -129 1845 -336 ct 1845 -336 1845 -336 1843 -337 ct 1825 -331 1811 -327 1783 -319 ct
-1783 -319 1783 -319 1768 -315 ct 1768 -315 1768 -315 1768 -307 ct p ef
-2217 -81 m 2193 -43 2172 -29 2141 -29 ct 2114 -29 2093 -43 2079 -72 ct 2070 -90 2067 -107 2066 -137 ct
-2066 -137 2066 -137 2215 -137 ct 2211 -169 2206 -183 2194 -199 ct 2180 -217 2157 -227 2132 -227 ct
-2108 -227 2085 -218 2067 -201 ct 2044 -181 2031 -146 2031 -106 ct 2031 -37 2066 5 2122 5 ct
-2168 5 2204 -24 2224 -78 ct 2224 -78 2224 -78 2217 -81 ct p
-2067 -153 m 2072 -191 2089 -209 2118 -209 ct 2148 -209 2159 -196 2166 -153 ct
-2166 -153 2166 -153 2067 -153 ct p ef
-2242 -192 m 2249 -194 2254 -194 2259 -194 ct 2271 -194 2276 -186 2276 -164 ct
-2276 -164 2276 -164 2276 -41 ct 2276 -17 2272 -13 2241 -7 ct 2241 -7 2241 -7 2241 0 ct
-2241 0 2241 0 2358 0 ct 2358 0 2358 0 2358 -8 ct 2325 -8 2316 -15 2316 -44 ct 2316 -44 2316 -44 2316 -155 ct
-2316 -171 2337 -196 2350 -196 ct 2353 -196 2358 -193 2363 -188 ct 2371 -182 2376 -179 2382 -179 ct
-2394 -179 2401 -187 2401 -201 ct 2401 -217 2391 -227 2375 -227 ct 2354 -227 2340 -216 2316 -181 ct
-2316 -181 2316 -181 2316 -226 ct 2316 -226 2316 -226 2314 -227 ct 2288 -216 2271 -210 2242 -200 ct
-2242 -200 2242 -200 2242 -192 ct p ef
-pom
-gr
-gr
-gs
-gs
-pum
-4619 16250 t
-121 -227 m 58 -227 14 -180 14 -112 ct 14 -45 59 5 120 5 ct 181 5 228 -47 228 -115 ct
-228 -180 183 -227 121 -227 ct p
-115 -213 m 155 -213 184 -166 184 -98 ct 184 -42 162 -9 126 -9 ct 107 -9 89 -21 79 -40 ct
-65 -66 58 -101 58 -136 ct 58 -183 80 -213 115 -213 ct p ef
-482 -25 m 482 -25 482 -25 479 -25 ct 457 -25 452 -30 452 -53 ct 452 -53 452 -53 452 -222 ct
-452 -222 452 -222 375 -222 ct 375 -222 375 -222 375 -213 ct 405 -213 411 -208 411 -183 ct
-411 -183 411 -183 411 -67 ct 411 -53 409 -46 402 -41 ct 389 -30 374 -24 359 -24 ct
-341 -24 325 -41 325 -61 ct 325 -61 325 -61 325 -222 ct 325 -222 325 -222 254 -222 ct
-254 -222 254 -222 254 -214 ct 278 -214 284 -206 284 -184 ct 284 -184 284 -184 284 -59 ct
-284 -20 308 5 343 5 ct 361 5 380 -3 393 -16 ct 393 -16 393 -16 414 -38 ct 414 -38 414 -38 414 4 ct
-414 4 414 4 416 5 ct 440 -5 457 -11 482 -18 ct 482 -18 482 -18 482 -25 ct p ef
-618 -222 m 618 -222 618 -222 570 -222 ct 570 -222 570 -222 570 -279 ct 570 -284 569 -286 566 -286 ct
-563 -281 560 -277 556 -272 ct 538 -245 517 -221 510 -219 ct 504 -216 501 -212 501 -210 ct
-501 -208 502 -207 503 -206 ct 503 -206 503 -206 529 -206 ct 529 -206 529 -206 529 -58 ct
-529 -16 543 5 572 5 ct 596 5 614 -7 630 -33 ct 630 -33 630 -33 624 -38 ct 614 -26 605 -21 595 -21 ct
-577 -21 570 -34 570 -65 ct 570 -65 570 -65 570 -206 ct 570 -206 570 -206 618 -206 ct
-618 -206 618 -206 618 -222 ct p ef
-639 -195 m 644 -195 647 -195 651 -195 ct 668 -195 671 -190 671 -167 ct 671 -167 671 -167 671 65 ct
-671 90 666 96 637 99 ct 637 99 637 99 637 107 ct 637 107 637 107 755 107 ct 755 107 755 107 755 98 ct
-718 98 712 93 712 61 ct 712 61 712 61 712 -16 ct 729 0 741 5 761 5 ct 818 5 863 -50 863 -122 ct
-863 -183 829 -227 782 -227 ct 755 -227 733 -215 712 -189 ct 712 -189 712 -189 712 -226 ct
-712 -226 712 -226 709 -227 ct 683 -217 666 -210 639 -202 ct 639 -202 639 -202 639 -195 ct
-p
-712 -165 m 712 -180 739 -197 761 -197 ct 797 -197 821 -160 821 -103 ct 821 -48 797 -11 762 -11 ct
-740 -11 712 -29 712 -44 ct 712 -44 712 -44 712 -165 ct p ef
-1117 -25 m 1117 -25 1117 -25 1114 -25 ct 1092 -25 1087 -30 1087 -53 ct 1087 -53 1087 -53 1087 -222 ct
-1087 -222 1087 -222 1010 -222 ct 1010 -222 1010 -222 1010 -213 ct 1040 -213 1046 -208 1046 -183 ct
-1046 -183 1046 -183 1046 -67 ct 1046 -53 1044 -46 1037 -41 ct 1024 -30 1009 -24 994 -24 ct
-976 -24 960 -41 960 -61 ct 960 -61 960 -61 960 -222 ct 960 -222 960 -222 889 -222 ct
-889 -222 889 -222 889 -214 ct 913 -214 919 -206 919 -184 ct 919 -184 919 -184 919 -59 ct
-919 -20 943 5 978 5 ct 996 5 1015 -3 1028 -16 ct 1028 -16 1028 -16 1049 -38 ct
-1049 -38 1049 -38 1049 4 ct 1049 4 1049 4 1051 5 ct 1075 -5 1092 -11 1117 -18 ct
-1117 -18 1117 -18 1117 -25 ct p ef
-1253 -222 m 1253 -222 1253 -222 1205 -222 ct 1205 -222 1205 -222 1205 -279 ct
-1205 -284 1204 -286 1201 -286 ct 1198 -281 1195 -277 1191 -272 ct 1173 -245 1152 -221 1145 -219 ct
-1139 -216 1136 -212 1136 -210 ct 1136 -208 1137 -207 1138 -206 ct 1138 -206 1138 -206 1164 -206 ct
-1164 -206 1164 -206 1164 -58 ct 1164 -16 1178 5 1207 5 ct 1231 5 1249 -7 1265 -33 ct
-1265 -33 1265 -33 1259 -38 ct 1249 -26 1240 -21 1230 -21 ct 1212 -21 1205 -34 1205 -65 ct
-1205 -65 1205 -65 1205 -206 ct 1205 -206 1205 -206 1253 -206 ct 1253 -206 1253 -206 1253 -222 ct
-p ef
-pom
-gr
-gs
-pum
-4138 16851 t
-143 -334 m 107 -310 92 -297 75 -274 ct 40 -231 23 -182 23 -124 ct 23 -62 41 -13 84 37 ct
-104 61 116 72 141 87 ct 141 87 141 87 147 79 ct 108 48 95 31 82 -6 ct 70 -39 65 -76 65 -126 ct
-65 -178 71 -218 84 -249 ct 98 -279 112 -297 147 -326 ct 147 -326 147 -326 143 -334 ct
-p ef
-288 -222 m 288 -222 288 -222 240 -222 ct 240 -222 240 -222 240 -279 ct 240 -284 239 -286 236 -286 ct
-233 -281 230 -277 226 -272 ct 208 -245 187 -221 180 -219 ct 174 -216 171 -212 171 -210 ct
-171 -208 172 -207 173 -206 ct 173 -206 173 -206 199 -206 ct 199 -206 199 -206 199 -58 ct
-199 -16 213 5 242 5 ct 266 5 284 -7 300 -33 ct 300 -33 300 -33 294 -38 ct 284 -26 275 -21 265 -21 ct
-247 -21 240 -34 240 -65 ct 240 -65 240 -65 240 -206 ct 240 -206 240 -206 288 -206 ct
-288 -206 288 -206 288 -222 ct p ef
-426 -227 m 363 -227 319 -180 319 -112 ct 319 -45 364 5 425 5 ct 486 5 533 -47 533 -115 ct
-533 -180 488 -227 426 -227 ct p
-420 -213 m 460 -213 489 -166 489 -98 ct 489 -42 467 -9 431 -9 ct 412 -9 394 -21 384 -40 ct
-370 -66 363 -101 363 -136 ct 363 -183 385 -213 420 -213 ct p ef
-827 -222 m 827 -222 827 -222 767 -222 ct 767 -222 767 -222 767 -279 ct 767 -308 776 -323 795 -323 ct
-805 -323 812 -318 820 -304 ct 828 -291 834 -286 842 -286 ct 853 -286 862 -295 862 -306 ct
-862 -324 841 -337 812 -337 ct 782 -337 756 -324 744 -301 ct 731 -279 727 -261 727 -222 ct
-727 -222 727 -222 687 -222 ct 687 -222 687 -222 687 -206 ct 687 -206 687 -206 727 -206 ct
-727 -206 727 -206 727 -51 ct 727 -14 722 -8 687 -8 ct 687 -8 687 -8 687 0 ct 687 0 687 0 813 0 ct
-813 0 813 0 813 -8 ct 773 -8 768 -13 768 -51 ct 768 -51 768 -51 768 -206 ct 768 -206 768 -206 827 -206 ct
-827 -206 827 -206 827 -222 ct p ef
-1052 -32 m 1044 -26 1038 -23 1031 -23 ct 1020 -23 1016 -30 1016 -52 ct 1016 -52 1016 -52 1016 -148 ct
-1016 -173 1014 -188 1006 -200 ct 996 -218 975 -227 946 -227 ct 901 -227 865 -203 865 -171 ct
-865 -160 875 -150 886 -150 ct 898 -150 908 -160 908 -171 ct 908 -173 907 -175 907 -179 ct
-906 -183 905 -187 905 -191 ct 905 -204 921 -215 940 -215 ct 964 -215 977 -201 977 -174 ct
-977 -174 977 -174 977 -144 ct 902 -113 894 -109 873 -90 ct 863 -81 856 -64 856 -48 ct
-856 -17 877 5 907 5 ct 928 5 948 -5 977 -31 ct 980 -5 989 5 1008 5 ct 1025 5 1035 -1 1052 -20 ct
-1052 -20 1052 -20 1052 -32 ct p
-977 -61 m 977 -45 975 -41 964 -35 ct 953 -28 939 -24 929 -24 ct 912 -24 899 -40 899 -62 ct
-899 -62 899 -62 899 -63 ct 899 -92 918 -110 977 -132 ct 977 -132 977 -132 977 -61 ct
-p ef
-1061 -192 m 1068 -194 1073 -194 1078 -194 ct 1090 -194 1095 -186 1095 -164 ct
-1095 -164 1095 -164 1095 -41 ct 1095 -17 1091 -13 1060 -7 ct 1060 -7 1060 -7 1060 0 ct
-1060 0 1060 0 1177 0 ct 1177 0 1177 0 1177 -8 ct 1144 -8 1135 -15 1135 -44 ct 1135 -44 1135 -44 1135 -155 ct
-1135 -171 1156 -196 1169 -196 ct 1172 -196 1177 -193 1182 -188 ct 1190 -182 1195 -179 1201 -179 ct
-1213 -179 1220 -187 1220 -201 ct 1220 -217 1210 -227 1194 -227 ct 1173 -227 1159 -216 1135 -181 ct
-1135 -181 1135 -181 1135 -226 ct 1135 -226 1135 -226 1133 -227 ct 1107 -216 1090 -210 1061 -200 ct
-1061 -200 1061 -200 1061 -192 ct p ef
-1544 -81 m 1520 -43 1499 -29 1468 -29 ct 1441 -29 1420 -43 1406 -72 ct 1397 -90 1394 -107 1393 -137 ct
-1393 -137 1393 -137 1542 -137 ct 1538 -169 1533 -183 1521 -199 ct 1507 -217 1484 -227 1459 -227 ct
-1435 -227 1412 -218 1394 -201 ct 1371 -181 1358 -146 1358 -106 ct 1358 -37 1393 5 1449 5 ct
-1495 5 1531 -24 1551 -78 ct 1551 -78 1551 -78 1544 -81 ct p
-1394 -153 m 1399 -191 1416 -209 1445 -209 ct 1475 -209 1486 -196 1493 -153 ct
-1493 -153 1493 -153 1394 -153 ct p ef
-1574 -196 m 1577 -198 1581 -198 1587 -198 ct 1600 -198 1605 -191 1605 -166 ct
-1605 -166 1605 -166 1605 -44 ct 1605 -15 1599 -8 1575 -8 ct 1575 -8 1575 -8 1575 0 ct
-1575 0 1575 0 1677 0 ct 1677 0 1677 0 1677 -8 ct 1653 -8 1645 -14 1645 -32 ct 1645 -32 1645 -32 1645 -171 ct
-1669 -194 1679 -200 1695 -200 ct 1719 -200 1731 -184 1731 -152 ct 1731 -152 1731 -152 1731 -48 ct
-1731 -17 1724 -8 1700 -8 ct 1700 -8 1700 -8 1700 0 ct 1700 0 1700 0 1801 0 ct 1801 0 1801 0 1801 -7 ct
-1777 -10 1771 -16 1771 -40 ct 1771 -40 1771 -40 1771 -153 ct 1771 -199 1750 -227 1714 -227 ct
-1692 -227 1677 -219 1644 -187 ct 1644 -187 1644 -187 1644 -226 ct 1644 -226 1644 -226 1641 -227 ct
-1617 -218 1600 -213 1574 -205 ct 1574 -205 1574 -205 1574 -196 ct p ef
-1983 5 m 1983 5 1983 5 2054 -21 ct 2054 -21 2054 -21 2054 -28 ct 2045 -28 2044 -28 2043 -28 ct
-2025 -28 2021 -33 2021 -56 ct 2021 -56 2021 -56 2021 -336 ct 2021 -336 2021 -336 2019 -337 ct
-1996 -329 1979 -324 1948 -315 ct 1948 -315 1948 -315 1948 -308 ct 1952 -308 1954 -308 1958 -308 ct
-1976 -308 1981 -303 1981 -283 ct 1981 -283 1981 -283 1981 -206 ct 1962 -222 1949 -227 1930 -227 ct
-1874 -227 1829 -171 1829 -101 ct 1829 -38 1865 5 1919 5 ct 1946 5 1964 -5 1981 -28 ct
-1981 -28 1981 -28 1981 4 ct 1981 4 1981 4 1983 5 ct p
-1981 -50 m 1981 -47 1977 -41 1972 -35 ct 1964 -26 1952 -21 1938 -21 ct 1897 -21 1871 -60 1871 -121 ct
-1871 -177 1894 -213 1931 -213 ct 1957 -213 1981 -190 1981 -164 ct 1981 -164 1981 -164 1981 -50 ct
-p ef
-2084 87 m 2120 64 2135 51 2153 28 ct 2187 -15 2204 -64 2204 -122 ct 2204 -185 2186 -233 2143 -283 ct
-2124 -307 2111 -318 2086 -334 ct 2086 -334 2086 -334 2080 -326 ct 2119 -295 2132 -277 2145 -240 ct
-2157 -207 2162 -170 2162 -120 ct 2162 -69 2156 -28 2143 2 ct 2129 33 2115 51 2080 79 ct
-2080 79 2080 79 2084 87 ct p ef
-pom
-gr
-gr
-gs
-gs
-pum
-8742 14319 t
-7 -199 m 14 -200 17 -201 23 -201 ct 51 -201 58 -188 81 -103 ct 89 -71 101 -13 101 -4 ct
-101 4 98 11 91 20 ct 76 41 66 54 60 59 ct 50 70 44 74 38 74 ct 35 74 31 73 26 69 ct
-18 63 13 60 7 60 ct -3 60 -12 69 -12 80 ct -12 92 -1 102 13 102 ct 45 102 110 27 163 -71 ct
-197 -131 210 -167 210 -191 ct 210 -206 198 -219 183 -219 ct 172 -219 164 -211 164 -200 ct
-164 -193 168 -188 178 -181 ct 187 -176 191 -171 191 -164 ct 191 -145 172 -106 130 -36 ct
-130 -36 130 -36 121 -94 ct 113 -137 85 -219 78 -219 ct 78 -219 78 -219 76 -219 ct
-76 -218 74 -218 72 -218 ct 67 -217 49 -214 23 -209 ct 21 -209 14 -208 7 -207 ct
-7 -207 7 -207 7 -199 ct p ef
-pom
-gr
-gs
-pum
-8962 14319 t
-143 -334 m 107 -310 92 -297 75 -274 ct 40 -231 23 -182 23 -124 ct 23 -62 41 -13 84 37 ct
-104 61 116 72 141 87 ct 141 87 141 87 147 79 ct 108 48 95 31 82 -6 ct 70 -39 65 -76 65 -126 ct
-65 -178 71 -218 84 -249 ct 98 -279 112 -297 147 -326 ct 147 -326 147 -326 143 -334 ct
-p ef
-pom
-gr
-gs
-pum
-9127 14319 t
-227 -58 m 227 -58 227 -58 217 -45 ct 203 -27 194 -19 187 -19 ct 183 -19 179 -23 179 -27 ct
-179 -31 179 -31 186 -58 ct 186 -58 186 -58 214 -160 ct 216 -170 218 -181 218 -188 ct
-218 -206 205 -218 186 -218 ct 154 -218 123 -189 72 -110 ct 72 -110 72 -110 105 -217 ct
-105 -217 105 -217 104 -218 ct 77 -213 67 -211 24 -203 ct 24 -203 24 -203 24 -195 ct
-49 -195 55 -192 55 -182 ct 55 -179 55 -176 54 -173 ct 54 -173 54 -173 7 0 ct 7 0 7 0 44 0 ct
-67 -78 72 -89 93 -123 ct 123 -168 148 -193 166 -193 ct 174 -193 178 -188 178 -179 ct
-178 -173 175 -156 171 -141 ct 171 -141 171 -141 150 -60 ct 143 -35 142 -28 142 -23 ct
-142 -4 149 4 165 4 ct 187 4 200 -6 234 -52 ct 234 -52 234 -52 227 -58 ct p ef
-pom
-gr
-gs
-pum
-9377 14319 t
-18 87 m 54 64 69 51 87 28 ct 121 -15 138 -64 138 -122 ct 138 -185 120 -233 77 -283 ct
-58 -307 45 -318 20 -334 ct 20 -334 20 -334 14 -326 ct 53 -295 66 -277 79 -240 ct
-91 -207 96 -170 96 -120 ct 96 -69 90 -28 77 2 ct 63 33 49 51 14 79 ct 14 79 14 79 18 87 ct
-p ef
-pom
-gr
-gr
-gs
-gs
-pum
-8742 14186 t
-45 -147 m 114 -290 l 183 -147 l 216 -147 l 128 -327 l 99 -327 l 12 -147 l
-45 -147 l p ef
-pom
-gr
-gr
-gs
-gs
-pum
-14351 14292 t
-7 -199 m 14 -200 17 -201 23 -201 ct 51 -201 58 -188 81 -103 ct 89 -71 101 -13 101 -4 ct
-101 4 98 11 91 20 ct 76 41 66 54 60 59 ct 50 70 44 74 38 74 ct 35 74 31 73 26 69 ct
-18 63 13 60 7 60 ct -3 60 -12 69 -12 80 ct -12 92 -1 102 13 102 ct 45 102 110 27 163 -71 ct
-197 -131 210 -167 210 -191 ct 210 -206 198 -219 183 -219 ct 172 -219 164 -211 164 -200 ct
-164 -193 168 -188 178 -181 ct 187 -176 191 -171 191 -164 ct 191 -145 172 -106 130 -36 ct
-130 -36 130 -36 121 -94 ct 113 -137 85 -219 78 -219 ct 78 -219 78 -219 76 -219 ct
-76 -218 74 -218 72 -218 ct 67 -217 49 -214 23 -209 ct 21 -209 14 -208 7 -207 ct
-7 -207 7 -207 7 -199 ct p ef
-pom
-gr
-gs
-pum
-14571 14292 t
-143 -334 m 107 -310 92 -297 75 -274 ct 40 -231 23 -182 23 -124 ct 23 -62 41 -13 84 37 ct
-104 61 116 72 141 87 ct 141 87 141 87 147 79 ct 108 48 95 31 82 -6 ct 70 -39 65 -76 65 -126 ct
-65 -178 71 -218 84 -249 ct 98 -279 112 -297 147 -326 ct 147 -326 147 -326 143 -334 ct
-p ef
-pom
-gr
-gs
-pum
-14736 14292 t
-227 -58 m 227 -58 227 -58 217 -45 ct 203 -27 194 -19 187 -19 ct 183 -19 179 -23 179 -27 ct
-179 -31 179 -31 186 -58 ct 186 -58 186 -58 214 -160 ct 216 -170 218 -181 218 -188 ct
-218 -206 205 -218 186 -218 ct 154 -218 123 -189 72 -110 ct 72 -110 72 -110 105 -217 ct
-105 -217 105 -217 104 -218 ct 77 -213 67 -211 24 -203 ct 24 -203 24 -203 24 -195 ct
-49 -195 55 -192 55 -182 ct 55 -179 55 -176 54 -173 ct 54 -173 54 -173 7 0 ct 7 0 7 0 44 0 ct
-67 -78 72 -89 93 -123 ct 123 -168 148 -193 166 -193 ct 174 -193 178 -188 178 -179 ct
-178 -173 175 -156 171 -141 ct 171 -141 171 -141 150 -60 ct 143 -35 142 -28 142 -23 ct
-142 -4 149 4 165 4 ct 187 4 200 -6 234 -52 ct 234 -52 234 -52 227 -58 ct p ef
-pom
-gr
-gs
-pum
-14986 14292 t
-18 87 m 54 64 69 51 87 28 ct 121 -15 138 -64 138 -122 ct 138 -185 120 -233 77 -283 ct
-58 -307 45 -318 20 -334 ct 20 -334 20 -334 14 -326 ct 53 -295 66 -277 79 -240 ct
-91 -207 96 -170 96 -120 ct 96 -69 90 -28 77 2 ct 63 33 49 51 14 79 ct 14 79 14 79 18 87 ct
-p ef
-pom
-gr
-gr
-tm setmatrix
-0 0 t
-1 1 s
-0 8286 t
-pom
-count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat b4_inc_state restore
-%%PageTrailer
-%%Trailer
-%%EOF
diff --git a/3rdparty/speex/doc/echo_path.odg b/3rdparty/speex/doc/echo_path.odg
deleted file mode 100644
index 460af845..00000000
--- a/3rdparty/speex/doc/echo_path.odg
+++ /dev/null
Binary files differ
diff --git a/3rdparty/speex/doc/manual.lyx b/3rdparty/speex/doc/manual.lyx
deleted file mode 100644
index f3aa31ad..00000000
--- a/3rdparty/speex/doc/manual.lyx
+++ /dev/null
@@ -1,8361 +0,0 @@
-#LyX 1.4.4 created this file. For more info see http://www.lyx.org/
-\lyxformat 245
-\begin_document
-\begin_header
-\textclass scrbook
-\language english
-\inputencoding auto
-\fontscheme pslatex
-\graphics default
-\paperfontsize 10
-\spacing onehalf
-\papersize letterpaper
-\use_geometry true
-\use_amsmath 2
-\cite_engine basic
-\use_bibtopic false
-\paperorientation portrait
-\leftmargin 2cm
-\topmargin 2cm
-\rightmargin 2cm
-\bottommargin 2cm
-\secnumdepth 3
-\tocdepth 3
-\paragraph_separation indent
-\defskip medskip
-\quotes_language english
-\papercolumns 1
-\papersides 1
-\paperpagestyle headings
-\tracking_changes false
-\output_changes true
-\end_header
-
-\begin_body
-
-\begin_layout Title
-The Speex Codec Manual
-\newline
-(version 1.2-beta2)
-\end_layout
-
-\begin_layout Author
-Jean-Marc Valin
-\end_layout
-
-\begin_layout Standard
-
-\newpage
-Copyright (c) 2002-2006 Jean-Marc Valin/Xiph.org Foundation
-\end_layout
-
-\begin_layout Standard
-Permission is granted to copy, distribute and/or modify this document under
- the terms of the GNU Free Documentation License, Version 1.1 or any later
- version published by the Free Software Foundation; with no Invariant Section,
- with no Front-Cover Texts, and with no Back-Cover.
- A copy of the license is included in the section entitled "GNU Free Documentati
-on License".
-
-\end_layout
-
-\begin_layout Standard
-
-\newpage
-
-\begin_inset LatexCommand \tableofcontents{}
-
-\end_inset
-
-
-\newpage
-
-\end_layout
-
-\begin_layout Standard
-\begin_inset FloatList table
-
-\end_inset
-
-
-\newpage
-
-\end_layout
-
-\begin_layout Chapter
-Introduction to Speex
-\end_layout
-
-\begin_layout Standard
-The Speex project (
-\family typewriter
-http://www.speex.org/
-\family default
-) has been started because there was a need for a speech codec that was
- open-source and free from software patents.
- These are essential conditions for being used by any open-source software.
- There is already Vorbis that does general audio, but it is not really suitable
- for speech.
- Also, unlike many other speech codecs, Speex is not targeted at cell phones
- but rather at voice over IP (VoIP) and file-based compression.
-
-\end_layout
-
-\begin_layout Standard
-As design goals, we wanted to have a codec that would allow both very good
- quality speech and low bit-rate (unfortunately not at the same time!),
- which led us to developing a codec with multiple bit-rates.
- Of course very good quality also meant we had to do wideband (16 kHz sampling
- rate) in addition to narrowband (telephone quality, 8 kHz sampling rate).
-\end_layout
-
-\begin_layout Standard
-Designing for VoIP instead of cell phone use means that Speex must be robust
- to lost packets, but not to corrupted ones since packets either arrive
- unaltered or don't arrive at all.
- Also, the idea was to have a reasonable complexity and memory requirement
- without compromising too much on the efficiency of the codec.
-\end_layout
-
-\begin_layout Standard
-All this led us to the choice of CELP
-\begin_inset LatexCommand \index{CELP}
-
-\end_inset
-
- as the encoding technique to use for Speex.
- One of the main reasons is that CELP has long proved that it could do the
- job and scale well to both low bit-rates (think DoD CELP @ 4.8 kbps) and
- high bit-rates (think G.728 @ 16 kbps).
-
-\end_layout
-
-\begin_layout Standard
-This document is divided in the following way.
- Section
-\begin_inset LatexCommand \ref{sec:Feature-description}
-
-\end_inset
-
- describes the different Speex features and defines some terms that will
- be used in later sections.
- Section
-\begin_inset LatexCommand \ref{sec:Command-line-encoder/decoder}
-
-\end_inset
-
- provides information about the standard command-line tools, while
-\begin_inset LatexCommand \ref{sec:Programming-with-Speex}
-
-\end_inset
-
- contains information about programming using the Speex API.
- Section
-\begin_inset LatexCommand \ref{sec:Formats-and-standards}
-
-\end_inset
-
- has some information related to Speex and standards.
- The three last sections describe the internals of the codec and require
- some signal processing knowledge.
- Section
-\begin_inset LatexCommand \ref{sec:Introduction-to-CELP}
-
-\end_inset
-
- explains the general idea behind CELP, while sections
-\begin_inset LatexCommand \ref{sec:Speex-narrowband-mode}
-
-\end_inset
-
- and
-\begin_inset LatexCommand \ref{sec:Speex-wideband-mode}
-
-\end_inset
-
- are specific to Speex.
- Note that if you are only interested in using Speex, those three last sections
- are not required.
-\end_layout
-
-\begin_layout Standard
-
-\newpage
-
-\end_layout
-
-\begin_layout Chapter
-Codec description
-\begin_inset LatexCommand \label{sec:Feature-description}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-This section describes the main features provided by Speex.
-\end_layout
-
-\begin_layout Section
-Concepts
-\end_layout
-
-\begin_layout Standard
-Before introducing all the Speex features, here are some concepts in speech
- coding that help better understand the rest of the manual.
- Emphasis is placed on Speex.
-\end_layout
-
-\begin_layout Subsection*
-Sampling rate
-\begin_inset LatexCommand \index{sampling rate}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Speex is mainly designed for three different sampling rates: 8 kHz, 16 kHz,
- and 32 kHz.
- These are respectively refered to as narrowband
-\begin_inset LatexCommand \index{narrowband}
-
-\end_inset
-
-, wideband
-\begin_inset LatexCommand \index{wideband}
-
-\end_inset
-
- and ultra-wideband
-\begin_inset LatexCommand \index{ultra-wideband}
-
-\end_inset
-
-.
- For a sampling rate of
-\begin_inset Formula $F_{s}$
-\end_inset
-
- kHz, the highest frequency that can be represented is equal to
-\begin_inset Formula $F_{s}/2$
-\end_inset
-
- kHz.
- This is a consequence of Nyquist's sampling theorem (and
-\begin_inset Formula $F_{s}/2$
-\end_inset
-
- is known as the Nyquist frequency).
-\end_layout
-
-\begin_layout Subsection*
-Quality
-\begin_inset LatexCommand \index{quality}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Speex encoding is controlled most of the time by a quality parameter that
- ranges from 0 to 10.
- In constant bit-rate
-\begin_inset LatexCommand \index{constant bit-rate}
-
-\end_inset
-
- (CBR) operation, the quality parameter is an integer, while for variable
- bit-rate (VBR), the parameter is a float.
-
-\end_layout
-
-\begin_layout Subsection*
-Complexity
-\begin_inset LatexCommand \index{complexity}
-
-\end_inset
-
- (variable)
-\end_layout
-
-\begin_layout Standard
-With Speex, it is possible to vary the complexity allowed for the encoder.
- This is done by controlling how the search is performed with an integer
- ranging from 1 to 10 in a way that's similar to the -1 to -9 options to
-
-\emph on
-gzip
-\emph default
- and
-\emph on
-bzip2
-\emph default
- compression utilities.
- For normal use, the noise level at complexity 1 is between 1 and 2 dB higher
- than at complexity 10, but the CPU requirements for complexity 10 is about
- 5 times higher than for complexity 1.
- In practice, the best trade-off is between complexity 2 and 4, though higher
- settings are often useful when encoding non-speech sounds like DTMF
-\begin_inset LatexCommand \index{DTMF}
-
-\end_inset
-
- tones.
-\end_layout
-
-\begin_layout Subsection*
-Variable Bit-Rate
-\begin_inset LatexCommand \index{variable bit-rate}
-
-\end_inset
-
- (VBR)
-\end_layout
-
-\begin_layout Standard
-Variable bit-rate (VBR) allows a codec to change its bit-rate dynamically
- to adapt to the
-\begin_inset Quotes eld
-\end_inset
-
-difficulty
-\begin_inset Quotes erd
-\end_inset
-
- of the audio being encoded.
- In the example of Speex, sounds like vowels and high-energy transients
- require a higher bit-rate to achieve good quality, while fricatives (e.g.
- s,f sounds) can be coded adequately with less bits.
- For this reason, VBR can achive lower bit-rate for the same quality, or
- a better quality for a certain bit-rate.
- Despite its advantages, VBR has two main drawbacks: first, by only specifying
- quality, there's no guaranty about the final average bit-rate.
- Second, for some real-time applications like voice over IP (VoIP), what
- counts is the maximum bit-rate, which must be low enough for the communication
- channel.
-\end_layout
-
-\begin_layout Subsection*
-Average Bit-Rate
-\begin_inset LatexCommand \index{average bit-rate}
-
-\end_inset
-
- (ABR)
-\end_layout
-
-\begin_layout Standard
-Average bit-rate solves one of the problems of VBR, as it dynamically adjusts
- VBR quality in order to meet a specific target bit-rate.
- Because the quality/bit-rate is adjusted in real-time (open-loop), the
- global quality will be slightly lower than that obtained by encoding in
- VBR with exactly the right quality setting to meet the target average bit-rate.
-\end_layout
-
-\begin_layout Subsection*
-Voice Activity Detection
-\begin_inset LatexCommand \index{voice activity detection}
-
-\end_inset
-
- (VAD)
-\end_layout
-
-\begin_layout Standard
-When enabled, voice activity detection detects whether the audio being encoded
- is speech or silence/background noise.
- VAD is always implicitly activated when encoding in VBR, so the option
- is only useful in non-VBR operation.
- In this case, Speex detects non-speech periods and encode them with just
- enough bits to reproduce the background noise.
- This is called
-\begin_inset Quotes eld
-\end_inset
-
-comfort noise generation
-\begin_inset Quotes erd
-\end_inset
-
- (CNG).
-\end_layout
-
-\begin_layout Subsection*
-Discontinuous Transmission
-\begin_inset LatexCommand \index{discontinuous transmission}
-
-\end_inset
-
- (DTX)
-\end_layout
-
-\begin_layout Standard
-Discontinuous transmission is an addition to VAD/VBR operation, that allows
- to stop transmitting completely when the background noise is stationary.
- In file-based operation, since we cannot just stop writing to the file,
- only 5 bits are used for such frames (corresponding to 250 bps).
-\end_layout
-
-\begin_layout Subsection*
-Perceptual enhancement
-\begin_inset LatexCommand \index{perceptual enhancement}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Perceptual enhancement is a part of the decoder which, when turned on, tries
- to reduce (the perception of) the noise produced by the coding/decoding
- process.
- In most cases, perceptual enhancement make the sound further from the original
-
-\emph on
-objectively
-\emph default
- (if you use SNR), but in the end it still
-\emph on
-sounds
-\emph default
- better (subjective improvement).
-\end_layout
-
-\begin_layout Subsection*
-Algorithmic delay
-\begin_inset LatexCommand \index{algorithmic delay}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Every speech codec introduces a delay in the transmission.
- For Speex, this delay is equal to the frame size, plus some amount of
-\begin_inset Quotes eld
-\end_inset
-
-look-ahead
-\begin_inset Quotes erd
-\end_inset
-
- required to process each frame.
- In narrowband operation (8 kHz), the delay is 30 ms, while for wideband
- (16 kHz), the delay is 34 ms.
- These values don't account for the CPU time it takes to encode or decode
- the frames.
-\end_layout
-
-\begin_layout Section
-Codec
-\end_layout
-
-\begin_layout Standard
-The main characteristics of Speex can be summarized as follows:
-\end_layout
-
-\begin_layout Itemize
-Free software/open-source
-\begin_inset LatexCommand \index{open-source}
-
-\end_inset
-
-, patent
-\begin_inset LatexCommand \index{patent}
-
-\end_inset
-
- and royalty-free
-\end_layout
-
-\begin_layout Itemize
-Integration of narrowband
-\begin_inset LatexCommand \index{narrowband}
-
-\end_inset
-
- and wideband
-\begin_inset LatexCommand \index{wideband}
-
-\end_inset
-
- using an embedded bit-stream
-\end_layout
-
-\begin_layout Itemize
-Wide range of bit-rates available (from 2.15 kbps to 44 kbps)
-\end_layout
-
-\begin_layout Itemize
-Dynamic bit-rate switching (AMR) and Variable Bit-Rate
-\begin_inset LatexCommand \index{variable bit-rate}
-
-\end_inset
-
- (VBR) operation
-\end_layout
-
-\begin_layout Itemize
-Voice Activity Detection
-\begin_inset LatexCommand \index{voice activity detection}
-
-\end_inset
-
- (VAD, integrated with VBR) and discontinuous transmission (DTX)
-\end_layout
-
-\begin_layout Itemize
-Variable complexity
-\begin_inset LatexCommand \index{complexity}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Itemize
-Embedded wideband structure (scalable sampling rate)
-\end_layout
-
-\begin_layout Itemize
-Ultra-wideband mode at 32 kHz
-\end_layout
-
-\begin_layout Itemize
-Intensity stereo encoding option
-\end_layout
-
-\begin_layout Itemize
-Fixed-point implementation (work in progress)
-\end_layout
-
-\begin_layout Section
-Preprocessor
-\end_layout
-
-\begin_layout Standard
-This part refers to the preprocessor module introduced in the 1.1.x branch.
- The preprocessor is designed to be used on the audio
-\emph on
-before
-\emph default
- running the encoder.
- The preprocessor provides three main functionalities:
-\end_layout
-
-\begin_layout Itemize
-noise suppression
-\end_layout
-
-\begin_layout Itemize
-automatic gain control (AGC)
-\end_layout
-
-\begin_layout Itemize
-voice activity detection (VAD)
-\end_layout
-
-\begin_layout Standard
-The denoiser can be used to reduce the amount of background noise present
- in the input signal.
- This provides higher quality speech whether or not the denoised signal
- is encoded with Speex (or at all).
- However, when using the denoised signal with the codec, there is an additional
- benefit.
- Speech codecs in general (Speex included) tend to perform poorly on noisy
- input, which tends to amplify the noise.
- The denoiser greatly reduces this effect.
-\end_layout
-
-\begin_layout Standard
-Automatic gain control (AGC) is a feature that deals with the fact that
- the recording volume may vary by a large amount between different setups.
- The AGC provides a way to adjust a signal to a reference volume.
- This is useful for voice over IP because it removes the need for manual
- adjustment of the microphone gain.
- A secondary advantage is that by setting the microphone gain to a conservative
- (low) level, it is easier to avoid clipping.
-\end_layout
-
-\begin_layout Standard
-The voice activity detector (VAD) provided by the preprocessor is more advanced
- than the one directly provided in the codec.
-
-\end_layout
-
-\begin_layout Section
-Adaptive Jitter Buffer
-\end_layout
-
-\begin_layout Standard
-When transmitting voice (or any content for that matter) over UDP or RTP,
- packet may be lost, arrive with different delay, or even out of order.
- The purpose of a jitter buffer is to reorder packets and buffer them long
- enough (but no longer than necessary) so they can be sent to be decoded.
-
-\end_layout
-
-\begin_layout Section
-Acoustic Echo Canceller
-\end_layout
-
-\begin_layout Standard
-In any hands-free communication system (Fig.
-
-\begin_inset LatexCommand \ref{fig:Acoustic-echo-model}
-
-\end_inset
-
-), speech from the remote end is played in the local loudspeaker, propagates
- in the room and is captured by the microphone.
- If the audio captured from the microphone is sent directly to the remote
- end, then the remove user hears an echo of his voice.
- An acoustic echo canceller is designed to remove the acoustic echo before
- it is sent to the remote end.
- It is important to understand that the echo canceller is meant to improve
- the quality on the
-\series bold
-remote
-\series default
- end.
-\end_layout
-
-\begin_layout Standard
-\begin_inset Float figure
-wide false
-sideways false
-status open
-
-\begin_layout Standard
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-
-\backslash
-begin{center}
-\end_layout
-
-\end_inset
-
-
-\begin_inset Graphics
- filename echo_path.eps
- width 10cm
-
-\end_inset
-
-
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-
-\backslash
-end{center}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Caption
-Acoustic echo model
-\begin_inset LatexCommand \label{fig:Acoustic-echo-model}
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-
-\newpage
-
-\end_layout
-
-\begin_layout Chapter
-Compiling
-\end_layout
-
-\begin_layout Standard
-Compiling Speex under UNIX or any platform supported by autoconf (e.g.
- Win32/cygwin) is as easy as typing:
-\end_layout
-
-\begin_layout LyX-Code
-% ./configure [options]
-\end_layout
-
-\begin_layout LyX-Code
-% make
-\end_layout
-
-\begin_layout LyX-Code
-% make install
-\end_layout
-
-\begin_layout Standard
-The options supported by the Speex configure script are:
-\end_layout
-
-\begin_layout Description
---prefix=<path> Specifies where to install Speex
-\end_layout
-
-\begin_layout Description
---enable-shared/--disable-shared Whether to compile shared libraries
-\end_layout
-
-\begin_layout Description
---enable-static/--disable-static Whether to compile static libraries
-\end_layout
-
-\begin_layout Description
---disable-wideband Disable the wideband part of Speex (typically to same
- space)
-\end_layout
-
-\begin_layout Description
---enable-valgrind Enable extra information when (and only when) running
- with valgrind
-\end_layout
-
-\begin_layout Description
---enable-sse Enable use of SSE instructions (x86/float only)
-\end_layout
-
-\begin_layout Description
---enable-fixed-point
-\begin_inset LatexCommand \index{fixed-point}
-
-\end_inset
-
- Compile Speex for a processor that does not have a floating point unit
- (FPU)
-\end_layout
-
-\begin_layout Description
---enable-arm4-asm Enable assembly specific to the ARMv4 architecture (gcc
- only)
-\end_layout
-
-\begin_layout Description
---enable-arm5e-asm Enable assembly specific to the ARMv5E architecture (gcc
- only)
-\end_layout
-
-\begin_layout Description
---enable-fixed-point-debug Use only for debugging the fixed-point
-\begin_inset LatexCommand \index{fixed-point}
-
-\end_inset
-
- code (very slow)
-\end_layout
-
-\begin_layout Description
---enable-epic-48k Enable a special (and non-compatible) 4.8 kbps narrowband
- mode
-\end_layout
-
-\begin_layout Description
---enable-ti-c55x Enable support for the TI C5x family
-\end_layout
-
-\begin_layout Description
---enable-blackfin-asm Enable assembly specific to the Blackfin DSP architecture
- (gcc only)
-\end_layout
-
-\begin_layout Description
---enable-16bit-precision Reduces precision to 16 bits in time-critical areas
- (fixed-point only)
-\end_layout
-
-\begin_layout Standard
-
-\newpage
-
-\end_layout
-
-\begin_layout Chapter
-Command-line encoder/decoder
-\begin_inset LatexCommand \label{sec:Command-line-encoder/decoder}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-The base Speex distribution includes a command-line encoder (
-\emph on
-speexenc
-\emph default
-) and decoder (
-\emph on
-speexdec
-\emph default
-).
- This section describes how to use these tools.
-\end_layout
-
-\begin_layout Section
-
-\emph on
-speexenc
-\begin_inset LatexCommand \index{speexenc}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-The
-\emph on
-speexenc
-\emph default
- utility is used to create Speex files from raw PCM or wave files.
- It can be used by calling:
-\end_layout
-
-\begin_layout LyX-Code
-speexenc [options] input_file output_file
-\end_layout
-
-\begin_layout Standard
-The value '-' for input_file or output_file corresponds respectively to
- stdin and stdout.
- The valid options are:
-\end_layout
-
-\begin_layout Description
---narrowband\InsetSpace ~
-(-n) Tell Speex to treat the input as narrowband (8 kHz).
- This is the default
-\end_layout
-
-\begin_layout Description
---wideband\InsetSpace ~
-(-w) Tell Speex to treat the input as wideband (16 kHz)
-\end_layout
-
-\begin_layout Description
---ultra-wideband\InsetSpace ~
-(-u) Tell Speex to treat the input as
-\begin_inset Quotes eld
-\end_inset
-
-ultra-wideband
-\begin_inset Quotes erd
-\end_inset
-
- (32 kHz)
-\end_layout
-
-\begin_layout Description
---quality\InsetSpace ~
-n Set the encoding quality (0-10), default is 8
-\end_layout
-
-\begin_layout Description
---bitrate\InsetSpace ~
-n Encoding bit-rate (use bit-rate n or lower)
-\end_layout
-
-\begin_layout Description
---vbr Enable VBR (Variable Bit-Rate), disabled by default
-\end_layout
-
-\begin_layout Description
---abr\InsetSpace ~
-n Enable ABR (Average Bit-Rate) at n kbps, disabled by default
-\end_layout
-
-\begin_layout Description
---vad Enable VAD (Voice Activity Detection), disabled by default
-\end_layout
-
-\begin_layout Description
---dtx Enable DTX (Discontinuous Transmission), disabled by default
-\end_layout
-
-\begin_layout Description
---nframes\InsetSpace ~
-n Pack n frames in each Ogg packet (this saves space at low bit-rates)
-\end_layout
-
-\begin_layout Description
---comp\InsetSpace ~
-n Set encoding speed/quality tradeoff.
- The higher the value of n, the slower the encoding (default is 3)
-\end_layout
-
-\begin_layout Description
--V Verbose operation, print bit-rate currently in use
-\end_layout
-
-\begin_layout Description
---help\InsetSpace ~
-(-h) Print the help
-\end_layout
-
-\begin_layout Description
---version\InsetSpace ~
-(-v) Print version information
-\end_layout
-
-\begin_layout Subsection*
-Speex comments
-\end_layout
-
-\begin_layout Description
---comment Add the given string as an extra comment.
- This may be used multiple times.
-
-\end_layout
-
-\begin_layout Description
---author Author of this track.
-
-\end_layout
-
-\begin_layout Description
---title Title for this track.
-
-\end_layout
-
-\begin_layout Subsection*
-Raw input options
-\end_layout
-
-\begin_layout Description
---rate\InsetSpace ~
-n Sampling rate for raw input
-\end_layout
-
-\begin_layout Description
---stereo Consider raw input as stereo
-\end_layout
-
-\begin_layout Description
---le Raw input is little-endian
-\end_layout
-
-\begin_layout Description
---be Raw input is big-endian
-\end_layout
-
-\begin_layout Description
---8bit Raw input is 8-bit unsigned
-\end_layout
-
-\begin_layout Description
---16bit Raw input is 16-bit signed
-\end_layout
-
-\begin_layout Section
-
-\emph on
-speexdec
-\begin_inset LatexCommand \index{speexdec}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-The
-\emph on
-speexdec
-\emph default
- utility is used to decode Speex files and can be used by calling:
-\end_layout
-
-\begin_layout LyX-Code
-speexdec [options] speex_file [output_file]
-\end_layout
-
-\begin_layout Standard
-The value '-' for input_file or output_file corresponds respectively to
- stdin and stdout.
- Also, when no output_file is specified, the file is played to the soundcard.
- The valid options are:
-\end_layout
-
-\begin_layout Description
---enh enable post-filter (default)
-\end_layout
-
-\begin_layout Description
---no-enh disable post-filter
-\end_layout
-
-\begin_layout Description
---force-nb Force decoding in narrowband
-\end_layout
-
-\begin_layout Description
---force-wb Force decoding in wideband
-\end_layout
-
-\begin_layout Description
---force-uwb Force decoding in ultra-wideband
-\end_layout
-
-\begin_layout Description
---mono Force decoding in mono
-\end_layout
-
-\begin_layout Description
---stereo Force decoding in stereo
-\end_layout
-
-\begin_layout Description
---rate\InsetSpace ~
-n Force decoding at n Hz sampling rate
-\end_layout
-
-\begin_layout Description
---packet-loss\InsetSpace ~
-n Simulate n % random packet loss
-\end_layout
-
-\begin_layout Description
--V Verbose operation, print bit-rate currently in use
-\end_layout
-
-\begin_layout Description
---help\InsetSpace ~
-(-h) Print the help
-\end_layout
-
-\begin_layout Description
---version\InsetSpace ~
-(-v) Print version information
-\end_layout
-
-\begin_layout Standard
-
-\newpage
-
-\end_layout
-
-\begin_layout Chapter
-Programming with Speex (the libspeex
-\begin_inset LatexCommand \index{libspeex}
-
-\end_inset
-
- API
-\begin_inset LatexCommand \index{API}
-
-\end_inset
-
-)
-\begin_inset LatexCommand \label{sec:Programming-with-Speex}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-This section explains how to use the Speex API.
- Examples of code can also be found in appendix
-\begin_inset LatexCommand \ref{sec:Sample-code}
-
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Section
-Encoding
-\begin_inset LatexCommand \label{sub:Encoding}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-In order to encode speech using Speex, you first need to:
-\end_layout
-
-\begin_layout LyX-Code
-#include <speex/speex.h>
-\end_layout
-
-\begin_layout Standard
-You then need to declare a Speex bit-packing struct
-\end_layout
-
-\begin_layout LyX-Code
-SpeexBits bits;
-\end_layout
-
-\begin_layout Standard
-and a Speex encoder state
-\end_layout
-
-\begin_layout LyX-Code
-void *enc_state;
-\end_layout
-
-\begin_layout Standard
-The two are initialized by:
-\end_layout
-
-\begin_layout LyX-Code
-speex_bits_init(&bits);
-\end_layout
-
-\begin_layout LyX-Code
-enc_state = speex_encoder_init(&speex_nb_mode);
-\end_layout
-
-\begin_layout Standard
-For wideband coding,
-\emph on
-speex_nb_mode
-\emph default
- will be replaced by
-\emph on
-speex_wb_mode
-\emph default
-.
- In most cases, you will need to know the frame size used by the mode you
- are using.
- You can get that value in the
-\emph on
-frame_size
-\emph default
- variable with:
-\end_layout
-
-\begin_layout LyX-Code
-speex_encoder_ctl(enc_state,SPEEX_GET_FRAME_SIZE,&frame_size);
-\end_layout
-
-\begin_layout Standard
-In practice,
-\emph on
-frame_size
-\emph default
- will correspond to 20 ms when using 8, 16, or 32 kHz sampling rate.
-\end_layout
-
-\begin_layout Standard
-Once the initialization is done, for every input frame:
-\end_layout
-
-\begin_layout LyX-Code
-speex_bits_reset(&bits);
-\end_layout
-
-\begin_layout LyX-Code
-speex_encode_int(enc_state, input_frame, &bits);
-\end_layout
-
-\begin_layout LyX-Code
-nbBytes = speex_bits_write(&bits, byte_ptr, MAX_NB_BYTES);
-\end_layout
-
-\begin_layout Standard
-where
-\emph on
-input_frame
-\emph default
- is a
-\emph on
-(
-\emph default
-short
-\emph on
- *)
-\emph default
- pointing to the beginning of a speech frame,
-\emph on
-byte_ptr
-\emph default
- is a
-\emph on
-(char *)
-\emph default
- where the encoded frame will be written,
-\emph on
-MAX_NB_BYTES
-\emph default
- is the maximum number of bytes that can be written to
-\emph on
-byte_ptr
-\emph default
- without causing an overflow and
-\emph on
-nbBytes
-\emph default
- is the number of bytes actually written to
-\emph on
-byte_ptr
-\emph default
- (the encoded size in bytes).
- Before calling speex_bits_write, it is possible to find the number of bytes
- that need to be written by calling
-\family typewriter
-speex_bits_nbytes(&bits)
-\family default
-, which returns a number of bytes.
-\end_layout
-
-\begin_layout Standard
-It is still possible to use the
-\emph on
-speex_encode()
-\emph default
- function, which takes a
-\emph on
-(float *)
-\emph default
- for the audio.
- However, this would make an eventual port to an FPU-less platform (like
- ARM) more complicated.
- Internally,
-\emph on
-speex_encode()
-\emph default
-and
-\emph on
- speex_encode_int()
-\emph default
- are processed in the same way.
- Whether the encoder uses the fixed-point version is only decided by the
- compile-time flags, not at the API level.
-\end_layout
-
-\begin_layout Standard
-After you're done with the encoding, free all resources with:
-\end_layout
-
-\begin_layout LyX-Code
-speex_bits_destroy(&bits);
-\end_layout
-
-\begin_layout LyX-Code
-speex_encoder_destroy(enc_state);
-\end_layout
-
-\begin_layout Standard
-That's about it for the encoder.
-
-\end_layout
-
-\begin_layout Section
-Decoding
-\begin_inset LatexCommand \label{sub:Decoding}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-In order to decode speech using Speex, you first need to:
-\end_layout
-
-\begin_layout LyX-Code
-#include <speex/speex.h>
-\end_layout
-
-\begin_layout Standard
-You also need to declare a Speex bit-packing struct
-\end_layout
-
-\begin_layout LyX-Code
-SpeexBits bits;
-\end_layout
-
-\begin_layout Standard
-and a Speex decoder state
-\end_layout
-
-\begin_layout LyX-Code
-void *dec_state;
-\end_layout
-
-\begin_layout Standard
-The two are initialized by:
-\end_layout
-
-\begin_layout LyX-Code
-speex_bits_init(&bits);
-\end_layout
-
-\begin_layout LyX-Code
-dec_state = speex_decoder_init(&speex_nb_mode);
-\end_layout
-
-\begin_layout Standard
-For wideband decoding,
-\emph on
-speex_nb_mode
-\emph default
- will be replaced by
-\emph on
-speex_wb_mode
-\emph default
-.
- If you need to obtain the size of the frames that will be used by the decoder,
- you can get that value in the
-\emph on
-frame_size
-\emph default
- variable with:
-\end_layout
-
-\begin_layout LyX-Code
-speex_decoder_ctl(dec_state, SPEEX_GET_FRAME_SIZE, &frame_size);
-\end_layout
-
-\begin_layout Standard
-There is also a parameter that can be set for the decoder: whether or not
- to use a perceptual enhancer.
- This can be set by:
-\end_layout
-
-\begin_layout LyX-Code
-speex_decoder_ctl(dec_state, SPEEX_SET_ENH, &enh);
-\end_layout
-
-\begin_layout Standard
-where
-\emph on
-enh
-\emph default
- is an int with value 0 to have the enhancer disabled and 1 to have it enabled.
- As of 1.2-beta1, the default is now to enable the enhancer.
-\end_layout
-
-\begin_layout Standard
-Again, once the decoder initialization is done, for every input frame:
-\end_layout
-
-\begin_layout LyX-Code
-speex_bits_read_from(&bits, input_bytes, nbBytes);
-\end_layout
-
-\begin_layout LyX-Code
-speex_decode_int(dec_state, &bits, output_frame);
-\end_layout
-
-\begin_layout Standard
-where input_bytes is a
-\emph on
-(char *)
-\emph default
- containing the bit-stream data received for a frame,
-\emph on
-nbBytes
-\emph default
- is the size (in bytes) of that bit-stream, and
-\emph on
-output_frame
-\emph default
- is a
-\emph on
-(short *)
-\emph default
- and points to the area where the decoded speech frame will be written.
- A NULL value as the first argument indicates that we don't have the bits
- for the current frame.
- When a frame is lost, the Speex decoder will do its best to "guess" the
- correct signal.
-\end_layout
-
-\begin_layout Standard
-As for the encoder, the
-\emph on
-speex_decode()
-\emph default
- function can still be used, with a
-\emph on
-(float *)
-\emph default
- as the output for the audio.
-\end_layout
-
-\begin_layout Standard
-After you're done with the decoding, free all resources with:
-\end_layout
-
-\begin_layout LyX-Code
-speex_bits_destroy(&bits);
-\end_layout
-
-\begin_layout LyX-Code
-speex_decoder_destroy(dec_state);
-\end_layout
-
-\begin_layout Section
-Preprocessor
-\begin_inset LatexCommand \label{sub:Preprocessor}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-In order to use the Speex preprocessor
-\begin_inset LatexCommand \index{preprocessor}
-
-\end_inset
-
-, you first need to:
-\end_layout
-
-\begin_layout LyX-Code
-#include <speex/speex_preprocess.h>
-\end_layout
-
-\begin_layout Standard
-Then, a preprocessor state can be created as:
-\end_layout
-
-\begin_layout LyX-Code
-SpeexPreprocessState *preprocess_state = speex_preprocess_state_init(frame_size,
- sampling_rate);
-\end_layout
-
-\begin_layout Standard
-It is recommended to use the same value for
-\family typewriter
-frame_size
-\family default
- as is used by the encoder (20
-\emph on
-ms
-\emph default
-).
-\end_layout
-
-\begin_layout Standard
-For each input frame, you need to call:
-\end_layout
-
-\begin_layout LyX-Code
-speex_preprocess_run(preprocess_state, audio_frame);
-\end_layout
-
-\begin_layout Standard
-where
-\family typewriter
-audio_frame
-\family default
- is used both as input and output.
-\end_layout
-
-\begin_layout Standard
-In cases where the output audio is not useful for a certain frame, it is
- possible to use instead:
-\end_layout
-
-\begin_layout LyX-Code
-speex_preprocess_estimate_update(preprocess_state, audio_frame);
-\end_layout
-
-\begin_layout Standard
-This call will update all the preprocessor internal state variables without
- computing the output audio, thus saving some CPU cycles.
-\end_layout
-
-\begin_layout Standard
-The behaviour of the preprocessor can be changed using:
-\end_layout
-
-\begin_layout LyX-Code
-speex_preprocess_ctl(preprocess_state, request, ptr);
-\end_layout
-
-\begin_layout Standard
-which is used in the same way as the encoder and decoder equivalent.
- Options are listed in Section .
-\end_layout
-
-\begin_layout Standard
-The preprocessor state can be destroyed using:
-\end_layout
-
-\begin_layout LyX-Code
-speex_preprocess_state_destroy(preprocess_state);
-\end_layout
-
-\begin_layout Section
-Echo Cancellation
-\begin_inset LatexCommand \label{sub:Echo-Cancellation}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-The Speex library now includes an echo cancellation
-\begin_inset LatexCommand \index{echo cancellation}
-
-\end_inset
-
- algorithm suitable for Acoustic Echo Cancellation
-\begin_inset LatexCommand \index{acoustic echo cancellation}
-
-\end_inset
-
- (AEC).
- In order to use the echo canceller, you first need to
-\end_layout
-
-\begin_layout LyX-Code
-#include <speex/speex_echo.h>
-\end_layout
-
-\begin_layout Standard
-Then, an echo canceller state can be created by:
-\end_layout
-
-\begin_layout LyX-Code
-SpeexEchoState *echo_state = speex_echo_state_init(frame_size, filter_length);
-\end_layout
-
-\begin_layout Standard
-where
-\family typewriter
-frame_size
-\family default
- is the amount of data (in samples) you want to process at once and
-\family typewriter
-filter_length
-\family default
- is the length (in samples) of the echo cancelling filter you want to use
- (also known as
-\shape italic
-tail length
-\shape default
-
-\begin_inset LatexCommand \index{tail length}
-
-\end_inset
-
-).
- It is recommended to use a frame size in the order of 20 ms (or equal to
- the codec frame size) and make sure it is easy to perform an FFT of that
- size (powers of two are better than prime sizes).
- The recommended tail length is approximately the third of the room reverberatio
-n time.
- For example, in a small room, reverberation time is in the order of 300
- ms, so a tail length of 100 ms is a good choice (800 samples at 8000 Hz
- sampling rate).
-\end_layout
-
-\begin_layout Standard
-Once the echo canceller state is created, audio can be processed by:
-\end_layout
-
-\begin_layout LyX-Code
-speex_echo_cancellation(echo_state, input_frame, echo_frame, output_frame);
-\end_layout
-
-\begin_layout Standard
-where
-\family typewriter
-input_frame
-\family default
- is the audio as captured by the microphone,
-\family typewriter
-echo_frame
-\family default
- is the signal that was played in the speaker (and needs to be removed)
- and
-\family typewriter
-output_frame
-\family default
- is the signal with echo removed.
-
-\end_layout
-
-\begin_layout Standard
-One important thing to keep in mind is the relationship between
-\family typewriter
-input_frame
-\family default
- and
-\family typewriter
-echo_frame
-\family default
-.
- It is important that, at any time, any echo that is present in the input
- has already been sent to the echo canceller as
-\family typewriter
-echo_frame
-\family default
-.
- In other words, the echo canceller cannot remove a signal that it hasn't
- yet received.
- On the other hand, the delay between the input signal and the echo signal
- must be small enough because otherwise part of the echo cancellation filter
- is inefficient.
- In the ideal case, you code would look like:
-\end_layout
-
-\begin_layout LyX-Code
-write_to_soundcard(echo_frame, frame_size);
-\end_layout
-
-\begin_layout LyX-Code
-read_from_soundcard(input_frame, frame_size);
-\end_layout
-
-\begin_layout LyX-Code
-speex_echo_cancellation(echo_state, input_frame, echo_frame, output_frame);
-\end_layout
-
-\begin_layout Standard
-If you wish to further reduce the echo present in the signal, you can do
- so by
-\family typewriter
-associating the echo canceller to the preprocessor
-\family default
- (see Section
-\begin_inset LatexCommand \ref{sub:Preprocessor}
-
-\end_inset
-
-).
- This is done by calling:
-\end_layout
-
-\begin_layout LyX-Code
-speex_preprocess_ctl(preprocess_state, SPEEX_PREPROCESS_SET_ECHO_STATE,
- echo_state);
-\end_layout
-
-\begin_layout Standard
-in the initialisation.
-\end_layout
-
-\begin_layout Standard
-As of version 1.2-beta2, there is an alternative, simpler API that can be
- used instead of
-\emph on
-speex_echo_cancellation()
-\emph default
-.
- When audio capture and playback are handled asynchronously (e.g.
- in different threads or using the
-\emph on
-poll()
-\emph default
- or
-\emph on
-select()
-\emph default
- system call), it can be difficult to keep track of what input_frame comes
- with what echo_frame.
- Instead, the playback comtext/thread can simply call:
-\end_layout
-
-\begin_layout LyX-Code
-speex_echo_playback(echo_state, echo_frame);
-\end_layout
-
-\begin_layout Standard
-every time an audio frame is played.
- Then, the capture context/thread calls:
-\end_layout
-
-\begin_layout LyX-Code
-speex_echo_capture(echo_state, input_frame, output_frame);
-\end_layout
-
-\begin_layout Standard
-for every frame captured.
- Internally,
-\emph on
-speex_echo_playback()
-\emph default
- simply buffers the playback frame so it can be used by
-\emph on
-speex_echo_capture()
-\emph default
- to call
-\emph on
-speex_echo_cancel()
-\emph default
-.
- A side effect of using this alternate API is that the playback audio is
- delayed by two frames, which is the normal delay caused by the soundcard.
- When capture and playback are already synchronised,
-\emph on
-speex_echo_cancellation()
-\emph default
- is preferable since it gives better control on the exact input/echo timing.
-\end_layout
-
-\begin_layout Standard
-The echo cancellation state can be destroyed with:
-\end_layout
-
-\begin_layout LyX-Code
-speex_echo_state_destroy(echo_state);
-\end_layout
-
-\begin_layout Standard
-It is also possible to reset the state of the echo canceller so it can be
- reused without the need to create another state with:
-\end_layout
-
-\begin_layout LyX-Code
-speex_echo_state_reset(echo_state);
-\end_layout
-
-\begin_layout Subsection
-Troubleshooting
-\end_layout
-
-\begin_layout Standard
-There are several things that may prevent the echo canceller from working
- properly.
- One of them is a bug (or something suboptimal) in the code, but there are
- many others you should consider first
-\end_layout
-
-\begin_layout Itemize
-Using a different soundcard to do the capture and plaback will *not* work,
- regardless of what you may think.
- The only exception to that is if the two cards can be made to have their
- sampling clock
-\begin_inset Quotes eld
-\end_inset
-
-locked
-\begin_inset Quotes erd
-\end_inset
-
- on the same clock source.
-\end_layout
-
-\begin_layout Itemize
-The delay between the record and playback signals must be minimal.
- Any signal played has to
-\begin_inset Quotes eld
-\end_inset
-
-appear
-\begin_inset Quotes erd
-\end_inset
-
- on the playback (far end) signal slightly before the echo canceller
-\begin_inset Quotes eld
-\end_inset
-
-sees
-\begin_inset Quotes erd
-\end_inset
-
- it in the near end signal, but excessive delay means that part of the filter
- length is wasted.
- In the worst situations, the delay is such that it is longer than the filter
- length, in which case, no echo can be cancelled.
-\end_layout
-
-\begin_layout Itemize
-When it comes to echo tail length (filter length), longer is *not* better.
- Actually, the longer the tail length, the longer it takes for the filter
- to adapt.
- Of course, a tail length that is too short will not cancel enough echo,
- but the most common problem seen is that people set a very long tail length
- and then wonder why no echo is being cancelled.
-\end_layout
-
-\begin_layout Itemize
-Non-linear distortion cannot (by definition) be modeled by the linear adaptive
- filter used in the echo canceller and thus cannot be cancelled.
- Use good audio gear and avoid saturation/clipping.
-\end_layout
-
-\begin_layout Standard
-Also useful is reading
-\emph on
-Echo Cancellation Demystified
-\emph default
- by Alexey Frunze
-\begin_inset Foot
-status collapsed
-
-\begin_layout Standard
-http://www.embeddedstar.com/articles/2003/7/article20030720-1.html
-\end_layout
-
-\end_inset
-
-, which explains the fundamental principles of echo cancellation.
- The details of the algorithm described in the article are different, but
- the general ideas of echo cancellation through adaptive filters are the
- same.
-\end_layout
-
-\begin_layout Standard
-As of version 1.2beta2, a new
-\family typewriter
-echo_diagnostic.m
-\family default
- tool is included in the source distribution.
- The first step is to define DUMP_ECHO_CANCEL_DATA during the build.
- This causes the echo canceller to automatically save the near-end, far-end
- and output signals to files (aec_rec.sw aec_play.sw and aec_out.sw).
- These are exactly what the AEC receives and outputs.
- From there, it is necessary to start Octave and type:
-\end_layout
-
-\begin_layout LyX-Code
-echo_diagnostic('aec_rec.sw', 'aec_play.sw', 'aec_diagnostic.sw', 1024);
-\end_layout
-
-\begin_layout Standard
-The value of 1024 is the filter length and can be changed.
- There will be some (hopefully) useful messages printed and echo cancelled
- audio will be saved to aec_diagnostic.sw .
- If even that output is bad (almost no cancellation) then there is probably
- problem with the playback or recording process.
-\end_layout
-
-\begin_layout Section
-Jitter Buffer
-\end_layout
-
-\begin_layout Standard
-There are two jitter buffers.
- Both can be enabled by including:
-\end_layout
-
-\begin_layout LyX-Code
-#include <speex/speex_jitter.c>
-\end_layout
-
-\begin_layout Subsection
-Generic Jitter Buffer
-\end_layout
-
-\begin_layout Subsection
-Speex Jitter Buffer
-\end_layout
-
-\begin_layout Section
-Resampler
-\end_layout
-
-\begin_layout Standard
-As of version 1.2beta2, Speex includes a resampling modules.
- To make use of the resampler, it is necessary to include its header file:
-\end_layout
-
-\begin_layout LyX-Code
-#include <speex/speex_resampler.h>
-\end_layout
-
-\begin_layout Standard
-For each stream that is to be resampled, it is necessary to create a resampler
- state with:
-\end_layout
-
-\begin_layout LyX-Code
-SpeexResamplerState *resampler;
-\end_layout
-
-\begin_layout LyX-Code
-resampler = speex_resampler_init(nb_channels, input_rate, output_rate, quality);
-\end_layout
-
-\begin_layout Standard
-where nb_channels is the number of channels that will be used (either interleave
-d or non-interleaved), input_rate is the sampling rate of the input stream,
- output_rate is the sampling rate of the output stream and quality is the
- requested quality setting (0 to 10).
- The quality parameter is useful for controlling the quality/complexity/latency
- tradeoff.
- Using a higher quality setting means less noise/aliasing, a higher complexity
- and a higher latency.
- Usually, a quality of 3 is acceptable for most desktop uses and quality
- 10 is mostly recommended for pro audio work.
- Quality 0 usually has a decent sound (certainly better than using linear
- interpolation resampling), but artifacts may be heard.
-\end_layout
-
-\begin_layout Section
-Codec Options (speex_*_ctl)
-\begin_inset LatexCommand \label{sub:Codec-Options}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Quote
-\align center
-
-\emph on
-Entities should not be multiplied beyond necessity -- William of Ockham.
-\end_layout
-
-\begin_layout Quote
-\align center
-
-\emph on
-Just because there's an option doesn't mean you have to use it -- me.
-\end_layout
-
-\begin_layout Standard
-The Speex encoder and decoder support many options and requests that can
- be accessed through the
-\emph on
-speex_encoder_ctl
-\emph default
- and
-\emph on
-speex_decoder_ctl
-\emph default
- functions.
- Despite that, the defaults are good for many applications and
-\series bold
-optional settings should only be used when one understands them and knows
- that they are needed
-\series default
-.
- A common error is to attempt to set many unnecessary settings.
- These functions are similar to the
-\emph on
-ioctl
-\emph default
- system call and their prototypes are:
-\end_layout
-
-\begin_layout LyX-Code
-void speex_encoder_ctl(void *encoder, int request, void *ptr);
-\end_layout
-
-\begin_layout LyX-Code
-void speex_decoder_ctl(void *encoder, int request, void *ptr);
-\end_layout
-
-\begin_layout Standard
-The different values of request allowed are (note that some only apply to
- the encoder or the decoder):
-\end_layout
-
-\begin_layout Description
-SPEEX_SET_ENH** Set perceptual enhancer
-\begin_inset LatexCommand \index{perceptual enhancement}
-
-\end_inset
-
- to on (1) or off (0) (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_GET_ENH** Get perceptual enhancer status (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_GET_FRAME_SIZE Get the frame size used for the current mode (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_SET_QUALITY* Set the encoder speech quality (integer 0 to 10)
-\end_layout
-
-\begin_layout Description
-SPEEX_GET_QUALITY* Get the current encoder speech quality (integer 0 to
- 10)
-\end_layout
-
-\begin_layout Description
-SPEEX_SET_MODE*
-\begin_inset Formula $\dagger$
-\end_inset
-
-
-\end_layout
-
-\begin_layout Description
-SPEEX_GET_MODE*
-\begin_inset Formula $\dagger$
-\end_inset
-
-
-\end_layout
-
-\begin_layout Description
-SPEEX_SET_LOW_MODE*
-\begin_inset Formula $\dagger$
-\end_inset
-
-
-\end_layout
-
-\begin_layout Description
-SPEEX_GET_LOW_MODE*
-\begin_inset Formula $\dagger$
-\end_inset
-
-
-\end_layout
-
-\begin_layout Description
-SPEEX_SET_HIGH_MODE*
-\begin_inset Formula $\dagger$
-\end_inset
-
-
-\end_layout
-
-\begin_layout Description
-SPEEX_GET_HIGH_MODE*
-\begin_inset Formula $\dagger$
-\end_inset
-
-
-\end_layout
-
-\begin_layout Description
-SPEEX_SET_VBR* Set variable bit-rate (VBR) to on (1) or off (0) (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_GET_VBR* Get variable bit-rate
-\begin_inset LatexCommand \index{variable bit-rate}
-
-\end_inset
-
- (VBR) status (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_SET_VBR_QUALITY* Set the encoder VBR speech quality (float 0 to 10)
-\end_layout
-
-\begin_layout Description
-SPEEX_GET_VBR_QUALITY* Get the current encoder VBR speech quality (float
- 0 to 10)
-\end_layout
-
-\begin_layout Description
-SPEEX_SET_COMPLEXITY* Set the CPU resources allowed for the encoder (integer
- 1 to 10)
-\end_layout
-
-\begin_layout Description
-SPEEX_GET_COMPLEXITY* Get the CPU resources allowed for the encoder (integer
- 1 to 10)
-\end_layout
-
-\begin_layout Description
-SPEEX_SET_BITRATE* Set the bit-rate to use to the closest value not exceeding
- the parameter (integer in bps)
-\end_layout
-
-\begin_layout Description
-SPEEX_GET_BITRATE Get the current bit-rate in use (integer in bps)
-\end_layout
-
-\begin_layout Description
-SPEEX_SET_SAMPLING_RATE Set real sampling rate (integer in Hz)
-\end_layout
-
-\begin_layout Description
-SPEEX_GET_SAMPLING_RATE Get real sampling rate (integer in Hz)
-\end_layout
-
-\begin_layout Description
-SPEEX_RESET_STATE Reset the encoder/decoder state to its original state
- (zeros all memories)
-\end_layout
-
-\begin_layout Description
-SPEEX_SET_VAD* Set voice activity detection
-\begin_inset LatexCommand \index{voice activity detection}
-
-\end_inset
-
- (VAD) to on (1) or off (0) (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_GET_VAD* Get voice activity detection (VAD) status (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_SET_DTX* Set discontinuous transmission
-\begin_inset LatexCommand \index{discontinuous transmission}
-
-\end_inset
-
- (DTX) to on (1) or off (0) (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_GET_DTX* Get discontinuous transmission (DTX) status (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_SET_ABR* Set average bit-rate
-\begin_inset LatexCommand \index{average bit-rate}
-
-\end_inset
-
- (ABR) to a value n in bits per second (integer in bps)
-\end_layout
-
-\begin_layout Description
-SPEEX_GET_ABR* Get average bit-rate (ABR) setting (integer in bps)
-\end_layout
-
-\begin_layout Description
-SPEEX_SET_PLC_TUNING* Tell the encoder to optimize encoding for a certain
- percentage of packet loss (integer in percent)
-\end_layout
-
-\begin_layout Description
-SPEEX_GET_PLC_TUNING* Get the current tuning of the encoder for PLC (integer
- in percent)
-\end_layout
-
-\begin_layout Description
-* applies only to the encoder
-\end_layout
-
-\begin_layout Description
-** applies only to the decoder
-\end_layout
-
-\begin_layout Description
-\begin_inset Formula $\dagger$
-\end_inset
-
- normally only used internally
-\end_layout
-
-\begin_layout Section
-Mode queries
-\begin_inset LatexCommand \label{sub:Mode-queries}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Speex modes have a query system similar to the speex_encoder_ctl and speex_decod
-er_ctl calls.
- Since modes are read-only, it is only possible to get information about
- a particular mode.
- The function used to do that is:
-\end_layout
-
-\begin_layout LyX-Code
-void speex_mode_query(SpeexMode *mode, int request, void *ptr);
-\end_layout
-
-\begin_layout Standard
-The admissible values for request are (unless otherwise note, the values
- are returned through
-\emph on
-ptr
-\emph default
-):
-\end_layout
-
-\begin_layout Description
-SPEEX_MODE_FRAME_SIZE Get the frame size (in samples) for the mode
-\end_layout
-
-\begin_layout Description
-SPEEX_SUBMODE_BITRATE Get the bit-rate for a submode number specified through
-
-\emph on
-ptr
-\emph default
- (integer in bps).
-
-\end_layout
-
-\begin_layout Section
-Preprocessor options
-\begin_inset LatexCommand \label{sub:Preprocessor-options}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_SET_DENOISE Turns denoising on(1) or off(2) (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_GET_DENOISE Get denoising status (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_SET_AGC Turns automatic gain control (AGC) on(1) or off(2)
- (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_GET_AGC Get AGC status (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_SET_VAD Turns voice activity detector (VAD) on(1) or off(2)
- (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_GET_VAD Get VAD status (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_SET_AGC_LEVEL
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_GET_AGC_LEVEL
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_SET_DEREVERB Turns reverberation removal on(1) or off(2)
- (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_GET_DEREVERB Get reverberation removal status (integer)
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_SET_DEREVERB_LEVEL
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_GET_DEREVERB_LEVEL
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_SET_DEREVERB_DECAY
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_GET_DEREVERB_DECAY
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_SET_PROB_START
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_GET_PROB_START
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_SET_PROB_CONTINUE
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_GET_PROB_CONTINUE
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_SET_NOISE_SUPPRESS Set maximum attenuation of the noise
- in dB (negative number)
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_GET_NOISE_SUPPRESS Get maximum attenuation of the noise
- in dB (negative number)
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_SET_ECHO_SUPPRESS Set maximum attenuation of the residual
- echo in dB (negative number)
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_GET_ECHO_SUPPRESS Set maximum attenuation of the residual
- echo in dB (negative number)
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_SET_ECHO_SUPPRESS_ACTIVE Set maximum attenuation of the
- echo in dB when near end is active (negative number)
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE Set maximum attenuation of the
- echo in dB when near end is active (negative number)
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_SET_ECHO_STATE Set the associated echo canceller for residual
- echo suppression (NULL for no residual echo suppression)
-\end_layout
-
-\begin_layout Description
-SPEEX_PREPROCESS_GET_ECHO_STATE Get the associated echo canceller
-\end_layout
-
-\begin_layout Section
-Packing and in-band signalling
-\begin_inset LatexCommand \index{in-band signalling}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Sometimes it is desirable to pack more than one frame per packet (or other
- basic unit of storage).
- The proper way to do it is to call speex_encode
-\begin_inset Formula $N$
-\end_inset
-
- times before writing the stream with speex_bits_write.
- In cases where the number of frames is not determined by an out-of-band
- mechanism, it is possible to include a terminator code.
- That terminator consists of the code 15 (decimal) encoded with 5 bits,
- as shown in Table
-\begin_inset LatexCommand \ref{cap:quality_vs_bps}
-
-\end_inset
-
-.
- Note that as of version 1.0.2, calling speex_bits_write automatically inserts
- the terminator so as to fill the last byte.
- This doesn't involves any overhead and makes sure Speex can always detect
- when there is no more frame in a packet.
-\end_layout
-
-\begin_layout Standard
-It is also possible to send in-band
-\begin_inset Quotes eld
-\end_inset
-
-messages
-\begin_inset Quotes erd
-\end_inset
-
- to the other side.
- All these messages are encoded as
-\begin_inset Quotes eld
-\end_inset
-
-pseudo-frames
-\begin_inset Quotes erd
-\end_inset
-
- of mode 14 which contain a 4-bit message type code, followed by the message.
- Table
-\begin_inset LatexCommand \ref{cap:In-band-signalling-codes}
-
-\end_inset
-
- lists the available codes, their meaning and the size of the message that
- follows.
- Most of these messages are requests that are sent to the encoder or decoder
- on the other end, which is free to comply or ignore them.
- By default, all in-band messages are ignored.
-\end_layout
-
-\begin_layout Standard
-\begin_inset Float table
-placement htbp
-wide false
-sideways false
-status open
-
-\begin_layout Standard
-\begin_inset Tabular
-<lyxtabular version="3" rows="17" columns="3">
-<features>
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
-<row topline="true" bottomline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Code
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Size (bits)
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Content
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Asks decoder to set perceptual enhancement off (0) or on(1)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Asks (if 1) the encoder to be less
-\begin_inset Quotes eld
-\end_inset
-
-agressive
-\begin_inset Quotes erd
-\end_inset
-
- due to high packet loss
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-2
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Asks encoder to switch to mode N
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-3
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Asks encoder to switch to mode N for low-band
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Asks encoder to switch to mode N for high-band
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Asks encoder to switch to quality N for VBR
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-6
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Request acknowloedge (0=no, 1=all, 2=only for in-band data)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-7
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Asks encoder to set CBR (0), VAD(1), DTX(3), VBR(5), VBR+DTX(7)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-8
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-8
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Transmit (8-bit) character to the other end
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-9
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-8
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Intensity stereo information
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-10
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-16
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Announce maximum bit-rate acceptable (N in bytes/second)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-11
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-16
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-reserved
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-12
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-32
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Acknowledge receiving packet N
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-13
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-32
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-reserved
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-14
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-64
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-reserved
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true" bottomline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-15
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-64
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-reserved
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Caption
-In-band signalling codes
-\begin_inset LatexCommand \label{cap:In-band-signalling-codes}
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Finally, applications may define custom in-band messages using mode 13.
- The size of the message in bytes is encoded with 5 bits, so that the decoder
- can skip it if it doesn't know how to interpret it.
-\end_layout
-
-\begin_layout Standard
-
-\newpage
-
-\end_layout
-
-\begin_layout Chapter
-Formats and standards
-\begin_inset LatexCommand \index{standards}
-
-\end_inset
-
-
-\begin_inset LatexCommand \label{sec:Formats-and-standards}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Speex can encode speech in both narrowband and wideband and provides different
- bit-rates.
- However, not all features need to be supported by a certain implementation
- or device.
- In order to be called
-\begin_inset Quotes eld
-\end_inset
-
-Speex compatible
-\begin_inset Quotes erd
-\end_inset
-
- (whatever that means), an implementation must implement at least a basic
- set of features.
-\end_layout
-
-\begin_layout Standard
-At the minimum, all narrowband modes of operation MUST be supported at the
- decoder.
- This includes the decoding of a wideband bit-stream by the narrowband decoder
-\begin_inset Foot
-status collapsed
-
-\begin_layout Standard
-The wideband bit-stream contains an embedded narrowband bit-stream which
- can be decoded alone
-\end_layout
-
-\end_inset
-
-.
- If present, a wideband decoder MUST be able to decode a narrowband stream,
- and MAY either be able to decode all wideband modes or be able to decode
- the embedded narrowband part of all modes (which includes ignoring the
- high-band bits).
-\end_layout
-
-\begin_layout Standard
-For encoders, at least one narrowband or wideband mode MUST be supported.
- The main reason why all encoding modes do not have to be supported is that
- some platforms may not be able to handle the complexity of encoding in
- some modes.
-\end_layout
-
-\begin_layout Section
-RTP
-\begin_inset LatexCommand \index{RTP}
-
-\end_inset
-
- Payload Format
-\end_layout
-
-\begin_layout Standard
-The RTP payload draft is included in appendix
-\begin_inset LatexCommand \ref{sec:IETF-draft}
-
-\end_inset
-
- and the latest version is available at
-\begin_inset LatexCommand \url{http://www.speex.org/drafts/latest}
-
-\end_inset
-
-.
- This draft has been sent (2003/02/26) to the Internet Engineering Task
- Force (IETF) and will be discussed at the March 18th meeting in San Francisco.
-
-\end_layout
-
-\begin_layout Section
-MIME Type
-\end_layout
-
-\begin_layout Standard
-For now, you should use the MIME type audio/x-speex for Speex-in-Ogg.
- We will apply for type
-\family typewriter
-audio/speex
-\family default
- in the near future.
-\end_layout
-
-\begin_layout Section
-Ogg
-\begin_inset LatexCommand \index{Ogg}
-
-\end_inset
-
- file format
-\end_layout
-
-\begin_layout Standard
-Speex bit-streams can be stored in Ogg files.
- In this case, the first packet of the Ogg file contains the Speex header
- described in table
-\begin_inset LatexCommand \ref{cap:ogg_speex_header}
-
-\end_inset
-
-.
- All integer fields in the headers are stored as little-endian.
- The
-\family typewriter
-speex_string
-\family default
- field must contain the
-\begin_inset Quotes eld
-\end_inset
-
-
-\family typewriter
-Speex
-\family default
-\InsetSpace ~
-\InsetSpace ~
-\InsetSpace ~
-
-\begin_inset Quotes erd
-\end_inset
-
- (with 3 trailing spaces), which identifies the bit-stream.
- The next field,
-\family typewriter
-speex_version
-\family default
- contains the version of Speex that encoded the file.
- For now, refer to speex_header.[ch] for more info.
- The
-\emph on
-beginning of stream
-\emph default
- (
-\family typewriter
-b_o_s
-\family default
-) flag is set to 1 for the header.
- The header packet has
-\family typewriter
-packetno=0
-\family default
- and
-\family typewriter
-granulepos=0
-\family default
-.
-\end_layout
-
-\begin_layout Standard
-The second packet contains the Speex comment header.
- The format used is the Vorbis comment format described here: http://www.xiph.org/
-ogg/vorbis/doc/v-comment.html .
- This packet has
-\family typewriter
-packetno=1
-\family default
- and
-\family typewriter
-granulepos=0
-\family default
-.
-\end_layout
-
-\begin_layout Standard
-The third and subsequent packets each contain one or more (number found
- in header) Speex frames.
- These are identified with
-\family typewriter
-packetno
-\family default
- starting from 2 and the
-\family typewriter
-granulepos
-\family default
- is the number of the last sample encoded in that packet.
- The last of these packets has the
-\emph on
-end of stream
-\emph default
- (
-\family typewriter
-e_o_s
-\family default
-) flag is set to 1.
-\end_layout
-
-\begin_layout Standard
-\begin_inset Float table
-placement htbp
-wide true
-sideways false
-status open
-
-\begin_layout Standard
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-
-\backslash
-begin{center}
-\end_layout
-
-\end_inset
-
-
-\begin_inset Tabular
-<lyxtabular version="3" rows="16" columns="3">
-<features>
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
-<row topline="true" bottomline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Field
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Type
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Size
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-speex_string
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-char[]
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-8
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-speex_version
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-char[]
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-20
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-speex_version_id
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-int
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-header_size
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-int
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-rate
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-int
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-mode
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-int
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-mode_bitstream_version
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-int
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-nb_channels
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-int
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-bitrate
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-int
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-frame_size
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-int
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-vbr
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-int
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-frames_per_packet
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-int
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-extra_headers
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-int
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-reserved1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-int
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true" bottomline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-reserved2
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-int
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-
-\backslash
-end{center}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Caption
-Ogg/Speex header packet
-\begin_inset LatexCommand \label{cap:ogg_speex_header}
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-
-\backslash
-clearpage
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Chapter
-Introduction to CELP Coding
-\begin_inset LatexCommand \index{CELP}
-
-\end_inset
-
-
-\begin_inset LatexCommand \label{sec:Introduction-to-CELP}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Quote
-\align center
-
-\emph on
-Do not meddle in the affairs of poles, for they are subtle and quick to
- leave the unit circle.
-\end_layout
-
-\begin_layout Standard
-Speex is based on CELP, which stands for Code Excited Linear Prediction.
- This section attempts to introduce the principles behind CELP, so if you
- are already familiar with CELP, you can safely skip to section
-\begin_inset LatexCommand \ref{sec:Speex-narrowband-mode}
-
-\end_inset
-
-.
- The CELP technique is based on three ideas:
-\end_layout
-
-\begin_layout Enumerate
-The use of a linear prediction (LP) model to model the vocal tract
-\end_layout
-
-\begin_layout Enumerate
-The use of (adaptive and fixed) codebook entries as input (excitation) of
- the LP model
-\end_layout
-
-\begin_layout Enumerate
-The search performed in closed-loop in a
-\begin_inset Quotes eld
-\end_inset
-
-perceptually weighted domain
-\begin_inset Quotes erd
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-This section describes the basic ideas behind CELP.
- This is still a work in progress.
-\end_layout
-
-\begin_layout Section
-Source-Filter Model of Speech Prediction
-\end_layout
-
-\begin_layout Standard
-The source-filter model of speech production assumes that the vocal cords
- are the source of spectrally flat sound (the excitation signal), and that
- the vocal tract acts as a filter to spectrally shape the various sounds
- of speech.
- While still an approximation, the model is widely used in speech coding
- because of its simplicity.Its use is also the reason why most speech codecs
- (Speex included) perform badly on music signals.
- The different phonemes can be distinguished by their excitation (source)
- and spectral shape (filter).
- Voiced sounds (e.g.
- vowels) have an excitation signal that is periodic and that can be approximated
- by an impulse train in the time domain or by regularly-spaced harmonics
- in the frequency domain.
- On the other hand, fricatives (such as the "s", "sh" and "f" sounds) have
- an excitation signal that is similar to white Gaussian noise.
- So called voice fricatives (such as "z" and "v") have excitation signal
- composed of an harmonic part and a noisy part.
-\end_layout
-
-\begin_layout Standard
-The source-filter model is usually tied with the use of Linear prediction.
- The CELP model is based on source-filter model, as can be seen from the
- CELP decoder illustrated in Figure
-\begin_inset LatexCommand \ref{fig:The-CELP-model}
-
-\end_inset
-
-.
-
-\end_layout
-
-\begin_layout Standard
-\begin_inset Float figure
-wide false
-sideways false
-status open
-
-\begin_layout Standard
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-
-\backslash
-begin{center}
-\end_layout
-
-\end_inset
-
-
-\begin_inset Graphics
- filename celp_decoder.eps
- width 45page%
- keepAspectRatio
-
-\end_inset
-
-
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-
-\backslash
-end{center}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Caption
-The CELP model of speech synthesis (decoder)
-\begin_inset LatexCommand \label{fig:The-CELP-model}
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Section
-Linear Prediction (LPC)
-\begin_inset LatexCommand \index{linear prediction}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Linear prediction is at the base of many speech coding techniques, including
- CELP.
- The idea behind it is to predict the signal
-\begin_inset Formula $x[n]$
-\end_inset
-
- using a linear combination of its past samples:
-\end_layout
-
-\begin_layout Standard
-\begin_inset Formula \[
-y[n]=\sum_{i=1}^{N}a_{i}x[n-i]\]
-
-\end_inset
-
-where
-\begin_inset Formula $y[n]$
-\end_inset
-
- is the linear prediction of
-\begin_inset Formula $x[n]$
-\end_inset
-
-.
- The prediction error is thus given by:
-\begin_inset Formula \[
-e[n]=x[n]-y[n]=x[n]-\sum_{i=1}^{N}a_{i}x[n-i]\]
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-The goal of the LPC analysis is to find the best prediction coefficients
-
-\begin_inset Formula $a_{i}$
-\end_inset
-
- which minimize the quadratic error function:
-\begin_inset Formula \[
-E=\sum_{n=0}^{L-1}\left[e[n]\right]^{2}=\sum_{n=0}^{L-1}\left[x[n]-\sum_{i=1}^{N}a_{i}x[n-i]\right]^{2}\]
-
-\end_inset
-
-That can be done by making all derivatives
-\begin_inset Formula $\frac{\partial E}{\partial a_{i}}$
-\end_inset
-
- equal to zero:
-\begin_inset Formula \[
-\frac{\partial E}{\partial a_{i}}=\frac{\partial}{\partial a_{i}}\sum_{n=0}^{L-1}\left[x[n]-\sum_{i=1}^{N}a_{i}x[n-i]\right]^{2}=0\]
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-For an order
-\begin_inset Formula $N$
-\end_inset
-
- filter, the filter coefficients
-\begin_inset Formula $a_{i}$
-\end_inset
-
- are found by solving the system
-\begin_inset Formula $N\times N$
-\end_inset
-
- linear system
-\begin_inset Formula $\mathbf{Ra}=\mathbf{r}$
-\end_inset
-
-, where
-\begin_inset Formula \[
-\mathbf{R}=\left[\begin{array}{cccc}
-R(0) & R(1) & \cdots & R(N-1)\\
-R(1) & R(0) & \cdots & R(N-2)\\
-\vdots & \vdots & \ddots & \vdots\\
-R(N-1) & R(N-2) & \cdots & R(0)\end{array}\right]\]
-
-\end_inset
-
-
-\begin_inset Formula \[
-\mathbf{r}=\left[\begin{array}{c}
-R(1)\\
-R(2)\\
-\vdots\\
-R(N)\end{array}\right]\]
-
-\end_inset
-
-with
-\begin_inset Formula $R(m)$
-\end_inset
-
-, the auto-correlation
-\begin_inset LatexCommand \index{auto-correlation}
-
-\end_inset
-
- of the signal
-\begin_inset Formula $x[n]$
-\end_inset
-
-, computed as:
-\end_layout
-
-\begin_layout Standard
-\begin_inset Formula \[
-R(m)=\sum_{i=0}^{N-1}x[i]x[i-m]\]
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Because
-\begin_inset Formula $\mathbf{R}$
-\end_inset
-
- is toeplitz hermitian, the Levinson-Durbin
-\begin_inset LatexCommand \index{Levinson-Durbin}
-
-\end_inset
-
- algorithm can be used, making the solution to the problem
-\begin_inset Formula $\mathcal{O}\left(N^{2}\right)$
-\end_inset
-
- instead of
-\begin_inset Formula $\mathcal{O}\left(N^{3}\right)$
-\end_inset
-
-.
- Also, it can be proven that all the roots of
-\begin_inset Formula $A(z)$
-\end_inset
-
- are within the unit circle, which means that
-\begin_inset Formula $1/A(z)$
-\end_inset
-
- is always stable.
- This is in theory; in practice because of finite precision, there are two
- commonly used techniques to make sure we have a stable filter.
- First, we multiply
-\begin_inset Formula $R(0)$
-\end_inset
-
- by a number slightly above one (such as 1.0001), which is equivalent to
- adding noise to the signal.
- Also, we can apply a window to the auto-correlation, which is equivalent
- to filtering in the frequency domain, reducing sharp resonances.
-\end_layout
-
-\begin_layout Section
-Pitch Prediction
-\begin_inset LatexCommand \index{pitch}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-During voiced segments, the speech signal is periodic, so it is possible
- to take advantage of that property by approximating the excitation signal
-
-\begin_inset Formula $e[n]$
-\end_inset
-
- by a gain times the past of the excitation:
-\end_layout
-
-\begin_layout Standard
-\begin_inset Formula \[
-e[n]\simeq p[n]=\beta e[n-T]\]
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-where
-\begin_inset Formula $T$
-\end_inset
-
- is the pitch period,
-\begin_inset Formula $\beta$
-\end_inset
-
- is the pitch gain.
- We call that long-term prediction since the excitation is predicted from
-
-\begin_inset Formula $e[n-T]$
-\end_inset
-
- with
-\begin_inset Formula $T\gg N$
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Section
-Innovation Codebook
-\end_layout
-
-\begin_layout Standard
-The final excitation
-\begin_inset Formula $e[n]$
-\end_inset
-
- will be the sum of the pitch prediction and an
-\emph on
-innovation
-\emph default
- signal
-\begin_inset Formula $c[n]$
-\end_inset
-
- taken from a fixed codebook, hence the name
-\emph on
-Code
-\emph default
- Excited Linear Prediction.
- The final excitation is given by:
-\end_layout
-
-\begin_layout Standard
-\begin_inset Formula \[
-e[n]=p[n]+c[n]=\beta e[n-T]+c[n]\]
-
-\end_inset
-
-The quantization of
-\begin_inset Formula $c[n]$
-\end_inset
-
- is where most of the bits in a CELP codec are allocated.
- It represents the information that couldn't be obtained either from linear
- prediction or pitch prediction.
- In the
-\emph on
-z
-\emph default
--domain we can represent the final signal
-\begin_inset Formula $X(z)$
-\end_inset
-
- as
-\begin_inset Formula \[
-X(z)=\frac{C(z)}{A(z)\left(1-\beta z^{-T}\right)}\]
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Section
-Noise Weighting
-\begin_inset LatexCommand \index{error weighting}
-
-\end_inset
-
-
-\begin_inset LatexCommand \index{analysis-by-synthesis}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Most (if not all) modern audio codecs attempt to
-\begin_inset Quotes eld
-\end_inset
-
-shape
-\begin_inset Quotes erd
-\end_inset
-
- the noise so that it appears mostly in the frequency regions where the
- ear cannot detect it.
- For example, the ear is more tolerant to noise in parts of the spectrum
- that are louder and
-\emph on
-vice versa
-\emph default
-.
- In order to maximize speech quality, CELP codecs minimize the mean square
- of the error (noise) in the perceptually weighted domain.
- This means that a perceptual noise weighting filter
-\begin_inset Formula $W(z)$
-\end_inset
-
- is applied to the error signal in the encoder.
- In most CELP codecs,
-\begin_inset Formula $W(z)$
-\end_inset
-
- is a pole-zero weighting filter derived from the linear prediction coefficients
- (LPC), generally using bandwidth expansion.
- Let the spectral envelope be represented by the synthesis filter
-\begin_inset Formula $1/A(z)$
-\end_inset
-
-, CELP codecs typically derive the noise weighting filter as:
-\begin_inset Formula \begin{equation}
-W(z)=\frac{A(z/\gamma_{1})}{A(z/\gamma_{2})}\label{eq:gamma-weighting}\end{equation}
-
-\end_inset
-
-where
-\begin_inset Formula $\gamma_{1}=0.9$
-\end_inset
-
- and
-\begin_inset Formula $\gamma_{2}=0.6$
-\end_inset
-
- in the Speex reference implementation.
- If a filter
-\begin_inset Formula $A(z)$
-\end_inset
-
- has (complex) poles at
-\begin_inset Formula $p_{i}$
-\end_inset
-
- in the
-\begin_inset Formula $z$
-\end_inset
-
--plane, the filter
-\begin_inset Formula $A(z/\gamma)$
-\end_inset
-
- will have its poles at
-\begin_inset Formula $p'_{i}=\gamma p_{i}$
-\end_inset
-
-, making it a flatter version of
-\begin_inset Formula $A(z)$
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Standard
-The weighting filter is applied to the error signal used to optimize the
- codebook search through analysis-by-synthesis (AbS).
- This results in a spectral shape of the noise that tends towards
-\begin_inset Formula $1/W(z)$
-\end_inset
-
-.
- While the simplicity of the model has been an important reason for the
- success of CELP, it remains that
-\begin_inset Formula $W(z)$
-\end_inset
-
- is a very rough approximation for the perceptually optimal noise weighting
- function.
- Fig.
-
-\begin_inset LatexCommand \ref{cap:Standard-noise-shaping}
-
-\end_inset
-
- illustrates the noise shaping that results from Eq.
-
-\begin_inset LatexCommand \ref{eq:gamma-weighting}
-
-\end_inset
-
-.
- Throughout this paper, we refer to
-\begin_inset Formula $W(z)$
-\end_inset
-
- as the noise weighting filter and to
-\begin_inset Formula $1/W(z)$
-\end_inset
-
- as the noise shaping filter (or curve).
-\end_layout
-
-\begin_layout Standard
-\begin_inset Float figure
-wide false
-sideways false
-status open
-
-\begin_layout Standard
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-
-\backslash
-begin{center}
-\end_layout
-
-\end_inset
-
-
-\begin_inset Graphics
- filename ref_shaping.eps
- width 45page%
- keepAspectRatio
-
-\end_inset
-
-
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-
-\backslash
-end{center}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Caption
-Standard noise shaping in CELP.
- Arbitrary y-axis offset.
-\begin_inset LatexCommand \label{cap:Standard-noise-shaping}
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Section
-Analysis-by-Synthesis
-\end_layout
-
-\begin_layout Standard
-One of the main principles behind CELP is called Analysis-by-Synthesis (AbS),
- meaning that the encoding (analysis) is performed by perceptually optimising
- the decoded (synthesis) signal in a closed loop.
- In theory, the best CELP stream would be produced by trying all possible
- bit combinations and selecting the one that produces the best-sounding
- decoded signal.
- This is obviously not possible in practice for two reasons: the required
- complexity is beyond any currently available hardware and the
-\begin_inset Quotes eld
-\end_inset
-
-best sounding
-\begin_inset Quotes erd
-\end_inset
-
- selection criterion implies a human listener.
-
-\end_layout
-
-\begin_layout Standard
-In order to achieve real-time encoding using limited computing resources,
- the CELP optimisation is broken down into smaller, more manageable, sequential
- searches using the perceptual weighting function described earlier.
-\end_layout
-
-\begin_layout Standard
-
-\newpage
-
-\end_layout
-
-\begin_layout Chapter
-Speex narrowband mode
-\begin_inset LatexCommand \label{sec:Speex-narrowband-mode}
-
-\end_inset
-
-
-\begin_inset LatexCommand \index{narrowband}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-This section looks at how Speex works for narrowband (
-\begin_inset Formula $8\:\mathrm{kHz}$
-\end_inset
-
- sampling rate) operation.
- The frame size for this mode is
-\begin_inset Formula $20\:\mathrm{ms}$
-\end_inset
-
-, corresponding to 160 samples.
- Each frame is also subdivided into 4 sub-frames of 40 samples each.
-\end_layout
-
-\begin_layout Standard
-Also many design decisions were based on the original goals and assumptions:
-\end_layout
-
-\begin_layout Itemize
-Minimizing the amount of information extracted from past frames (for robustness
- to packet loss)
-\end_layout
-
-\begin_layout Itemize
-Dynamically-selectable codebooks (LSP, pitch and innovation)
-\end_layout
-
-\begin_layout Itemize
-sub-vector fixed (innovation) codebooks
-\end_layout
-
-\begin_layout Section
-Whole-Frame Analysis
-\begin_inset LatexCommand \index{linear prediction}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-In narrowband, Speex frames are 20 ms long (160 samples) and are subdivided
- in 4 sub-frames of 5 ms each (40 samples).
- For most narrowband bit-rates (8 kbps and above), the only parameters encoded
- at the frame level are the Line Spectral Pairs (LSP) and a global excitation
- gain
-\begin_inset Formula $g_{frame}$
-\end_inset
-
-, as shown in Fig.
-
-\begin_inset LatexCommand \ref{cap:Frame-open-loop-analysis}
-
-\end_inset
-
-.
- All other parameters are encoded at the sub-frame level.
-\end_layout
-
-\begin_layout Standard
-Linear prediction analysis is performed once per frame using an asymmetric
- Hamming window centered on the fourth sub-frame.
- Because linear prediction coefficients (LPC) are not robust to quantization,
- they are first are converted to line spectral pairs (LSP)
-\begin_inset LatexCommand \index{line spectral pair}
-
-\end_inset
-
-.
- The LSP's are considered to be associated to the
-\begin_inset Formula $4^{th}$
-\end_inset
-
- sub-frames and the LSP's associated to the first 3 sub-frames are linearly
- interpolated using the current and previous LSP coefficients.
- The LSP coefficients and converted back to the LPC filter
-\begin_inset Formula $\hat{A}(z)$
-\end_inset
-
-.
- The non-quantized interpolated filter is denoted
-\begin_inset Formula $A(z)$
-\end_inset
-
- and can be used for the weighting filter
-\begin_inset Formula $W(z)$
-\end_inset
-
- because it does not need to be available to the decoder.
-
-\end_layout
-
-\begin_layout Standard
-To make Speex more robust to packet loss, no prediction is applied on the
- LSP coefficients prior to quantization.
- The LSPs are encoded using vector quantizatin (VQ) with 30 bits for higher
- quality modes and 18 bits for lower quality.
-\end_layout
-
-\begin_layout Standard
-\begin_inset Float figure
-wide false
-sideways false
-status open
-
-\begin_layout Standard
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-
-\backslash
-begin{center}
-\end_layout
-
-\end_inset
-
-
-\begin_inset Graphics
- filename speex_analysis.eps
- width 35page%
-
-\end_inset
-
-
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-
-\backslash
-end{center}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Caption
-Frame open-loop analysis
-\begin_inset LatexCommand \label{cap:Frame-open-loop-analysis}
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Section
-Sub-Frame Analysis-by-Synthesis
-\end_layout
-
-\begin_layout Standard
-\begin_inset Float figure
-wide false
-sideways false
-status open
-
-\begin_layout Standard
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-
-\backslash
-begin{center}
-\end_layout
-
-\end_inset
-
-
-\begin_inset Graphics
- filename speex_abs.eps
- lyxscale 75
- width 40page%
-
-\end_inset
-
-
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-
-\backslash
-end{center}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Caption
-Analysis-by-synthesis closed-loop optimization on a sub-frame.
-\begin_inset LatexCommand \label{cap:Sub-frame-AbS}
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-The analysis-by-synthesis (AbS) encoder loop is described in Fig.
-
-\begin_inset LatexCommand \ref{cap:Sub-frame-AbS}
-
-\end_inset
-
-.
- There are three main aspects where Speex significantly differs from most
- other CELP codecs.
- First, while most recent CELP codecs make use of fractional pitch estimation
- with a single gain, Speex uses an integer to encode the pitch period, but
- uses a 3-tap predictor (3 gains).
- The adaptive codebook contribution
-\begin_inset Formula $e_{a}[n]$
-\end_inset
-
- can thus be expressed as:
-\begin_inset Formula \begin{equation}
-e_{a}[n]=g_{0}e[n-T-1]+g_{1}e[n-T]+g_{2}e[n-T+1]\label{eq:adaptive-3tap}\end{equation}
-
-\end_inset
-
-where
-\begin_inset Formula $g_{0}$
-\end_inset
-
-,
-\begin_inset Formula $g_{1}$
-\end_inset
-
- and
-\begin_inset Formula $g_{2}$
-\end_inset
-
- are the jointly quantized pitch gains and
-\begin_inset Formula $e[n]$
-\end_inset
-
- is the codec excitation memory.
- It is worth noting that when the pitch is smaller than the sub-frame size,
- we repeat the excitation at a period
-\begin_inset Formula $T$
-\end_inset
-
-.
- For example, when
-\begin_inset Formula $n-T+1\geq0$
-\end_inset
-
-, we use
-\begin_inset Formula $n-2T+1$
-\end_inset
-
- instead.
- In most modes, the pitch period is encoded with 7 bits in the
-\begin_inset Formula $\left[17,144\right]$
-\end_inset
-
- range and the
-\begin_inset Formula $\beta_{i}$
-\end_inset
-
- coefficients are vector-quantized using 7 bits at higher bit-rates (15
- kbps narrowband and above) and 5 bits at lower bit-rates (11 kbps narrowband
- and below).
-\end_layout
-
-\begin_layout Standard
-Many current CELP codecs use moving average (MA) prediction to encode the
- fixed codebook gain.
- This provides slightly better coding at the expense of introducing a dependency
- on previously encoded frames.
- A second difference is that Speex encodes the fixed codebook gain as the
- product of the global excitation gain
-\begin_inset Formula $g_{frame}$
-\end_inset
-
- with a sub-frame gain corrections
-\begin_inset Formula $g_{subf}$
-\end_inset
-
-.
- This increases robustness to packet loss by eliminating the inter-frame
- dependency.
- The sub-frame gain correction is encoded before the fixed codebook is searched
- (not closed-loop optimized) and uses between 0 and 3 bits per sub-frame,
- depending on the bit-rate.
-\end_layout
-
-\begin_layout Standard
-The third difference is that Speex uses sub-vector quantization of the innovatio
-n (fixed codebook) signal instead of an algebraic codebook.
- Each sub-frame is divided into sub-vectors of lengths ranging between 5
- and 20 samples.
- Each sub-vector is chosen from a bitrate-dependent codebook and all sub-vectors
- are concatenated to form a sub-frame.
- As an example, the 3.95 kbps mode uses a sub-vector size of 20 samples with
- 32 entries in the codebook (5 bits).
- This means that the innovation is encoded with 10 bits per sub-frame, or
- 2000 bps.
- On the other hand, the 18.2 kbps mode uses a sub-vector size of 5 samples
- with 256 entries in the codebook (8 bits), so the innovation uses 64 bits
- per sub-frame, or 12800 bps.
-
-\end_layout
-
-\begin_layout Section
-Bit allocation
-\end_layout
-
-\begin_layout Standard
-There are 7 different narrowband bit-rates defined for Speex, ranging from
- 250 bps to 24.6 kbps, although the modes below 5.9 kbps should not be used
- for speech.
- The bit-allocation for each mode is detailed in table
-\begin_inset LatexCommand \ref{cap:bits-narrowband}
-
-\end_inset
-
-.
- Each frame starts with the mode ID encoded with 4 bits which allows a range
- from 0 to 15, though only the first 7 values are used (the others are reserved).
- The parameters are listed in the table in the order they are packed in
- the bit-stream.
- All frame-based parameters are packed before sub-frame parameters.
- The parameters for a certain sub-frame are all packed before the following
- sub-frame is packed.
- Note that the
-\begin_inset Quotes eld
-\end_inset
-
-OL
-\begin_inset Quotes erd
-\end_inset
-
- in the parameter description means that the parameter is an open loop estimatio
-n based on the whole frame.
-\end_layout
-
-\begin_layout Standard
-\begin_inset Float table
-placement h
-wide true
-sideways false
-status open
-
-\begin_layout Standard
-\begin_inset Tabular
-<lyxtabular version="3" rows="12" columns="11">
-<features>
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
-<row topline="true" bottomline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Parameter
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Update rate
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-2
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-3
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-6
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-7
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-8
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Wideband bit
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Mode ID
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-LSP
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-30
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-30
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-30
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-OL pitch
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-7
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-7
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-7
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-OL pitch gain
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-OL Exc gain
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Fine pitch
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-sub-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-7
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-7
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-7
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-7
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-7
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Pitch gain
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-sub-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-7
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-7
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-7
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Innovation gain
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-sub-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-3
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-3
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-3
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true" bottomline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Innovation VQ
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-sub-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-16
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-20
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-35
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-48
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-64
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-96
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-10
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true" bottomline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Total
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-43
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-119
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-160
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-220
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-300
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-364
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-492
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-79
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Caption
-Bit allocation for narrowband modes
-\begin_inset LatexCommand \label{cap:bits-narrowband}
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-So far, no MOS (Mean Opinion Score
-\begin_inset LatexCommand \index{mean opinion score}
-
-\end_inset
-
-) subjective evaluation has been performed for Speex.
- In order to give an idea of the quality achivable with it, table
-\begin_inset LatexCommand \ref{cap:quality_vs_bps}
-
-\end_inset
-
- presents my own subjective opinion on it.
- It sould be noted that different people will perceive the quality differently
- and that the person that designed the codec often has a bias (one way or
- another) when it comes to subjective evaluation.
- Last thing, it should be noted that for most codecs (including Speex) encoding
- quality sometimes varies depending on the input.
- Note that the complexity is only approximate (within 0.5 mflops and using
- the lowest complexity setting).
- Decoding requires approximately 0.5 mflops
-\begin_inset LatexCommand \index{complexity}
-
-\end_inset
-
- in most modes (1 mflops with perceptual enhancement).
-\end_layout
-
-\begin_layout Standard
-\begin_inset Float table
-placement h
-wide true
-sideways false
-status open
-
-\begin_layout Standard
-\begin_inset Tabular
-<lyxtabular version="3" rows="17" columns="4">
-<features>
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
-<row topline="true" bottomline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Mode
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Bit-rate
-\begin_inset LatexCommand \index{bit-rate}
-
-\end_inset
-
- (bps)
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-mflops
-\begin_inset LatexCommand \index{complexity}
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Quality/description
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-250
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-N/A
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-No transmission (DTX)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-2,150
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-6
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Vocoder (mostly for comfort noise)
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-2
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5,950
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-9
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Very noticeable artifacts/noise, good intelligibility
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-3
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-8,000
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-10
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Artifacts/noise sometimes noticeable
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-11,000
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-14
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Artifacts usually noticeable only with headphones
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-15,000
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-11
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Need good headphones to tell the difference
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-6
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-18,200
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-17.5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Hard to tell the difference even with good headphones
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-7
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-24,600
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-14.5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Completely transparent for voice, good quality music
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-8
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-3,950
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-10.5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Very noticeable artifacts/noise, good intelligibility
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-9
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-N/A
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-N/A
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-reserved
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-10
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-N/A
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-N/A
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-reserved
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-11
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-N/A
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-N/A
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-reserved
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-12
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-N/A
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-N/A
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-reserved
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-13
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-N/A
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-N/A
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Application-defined, interpreted by callback or skipped
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-14
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-N/A
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-N/A
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Speex in-band signaling
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true" bottomline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-15
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-N/A
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-N/A
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Terminator code
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Caption
-Quality versus bit-rate
-\begin_inset LatexCommand \label{cap:quality_vs_bps}
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Section
-Perceptual enhancement
-\begin_inset LatexCommand \index{perceptual enhancement}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-
-\series bold
-This section was only valid for version 1.1.12 and earlier.
- It does not apply to version 1.2-beta1 (and later), for which the new perceptual
- enhancement is not yet documented.
-\end_layout
-
-\begin_layout Standard
-This part of the codec only applies to the decoder and can even be changed
- without affecting inter-operability.
- For that reason, the implementation provided and described here should
- only be considered as a reference implementation.
- The enhancement system is divided into two parts.
- First, the synthesis filter
-\begin_inset Formula $S(z)=1/A(z)$
-\end_inset
-
- is replaced by an enhanced filter:
-\begin_inset Formula \[
-S'(z)=\frac{A\left(z/a_{2}\right)A\left(z/a_{3}\right)}{A\left(z\right)A\left(z/a_{1}\right)}\]
-
-\end_inset
-
-where
-\begin_inset Formula $a_{1}$
-\end_inset
-
- and
-\begin_inset Formula $a_{2}$
-\end_inset
-
- depend on the mode in use and
-\begin_inset Formula $a_{3}=\frac{1}{r}\left(1-\frac{1-ra_{1}}{1-ra_{2}}\right)$
-\end_inset
-
- with
-\begin_inset Formula $r=.9$
-\end_inset
-
-.
- The second part of the enhancement consists of using a comb filter to enhance
- the pitch in the excitation domain.
-
-\end_layout
-
-\begin_layout Standard
-
-\newpage
-
-\end_layout
-
-\begin_layout Chapter
-Speex wideband mode (sub-band CELP)
-\begin_inset LatexCommand \index{wideband}
-
-\end_inset
-
-
-\begin_inset LatexCommand \label{sec:Speex-wideband-mode}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-For wideband, the Speex approach uses a
-\emph on
-q
-\emph default
-uadrature
-\emph on
-m
-\emph default
-irror
-\emph on
-f
-\emph default
-ilter
-\begin_inset LatexCommand \index{quadrature mirror filter}
-
-\end_inset
-
- (QMF) to split the band in two.
- The 16 kHz signal is thus divided into two 8 kHz signals, one representing
- the low band (0-4 kHz), the other the high band (4-8 kHz).
- The low band is encoded with the narrowband mode described in section
-\begin_inset LatexCommand \ref{sec:Speex-narrowband-mode}
-
-\end_inset
-
- in such a way that the resulting
-\begin_inset Quotes eld
-\end_inset
-
-embedded narrowband bit-stream
-\begin_inset Quotes erd
-\end_inset
-
- can also be decoded with the narrowband decoder.
- Since the low band encoding has already been described, only the high band
- encoding is described in this section.
-\end_layout
-
-\begin_layout Section
-Linear Prediction
-\end_layout
-
-\begin_layout Standard
-The linear prediction part used for the high-band is very similar to what
- is done for narrowband.
- The only difference is that we use only 12 bits to encode the high-band
- LSP's using a multi-stage vector quantizer (MSVQ).
- The first level quantizes the 10 coefficients with 6 bits and the error
- is then quantized using 6 bits, too.
-\end_layout
-
-\begin_layout Section
-Pitch Prediction
-\end_layout
-
-\begin_layout Standard
-That part is easy: there's no pitch prediction for the high-band.
- There are two reasons for that.
- First, there is usually little harmonic structure in this band (above 4
- kHz).
- Second, it would be very hard to implement since the QMF folds the 4-8
- kHz band into 4-0 kHz (reversing the frequency axis), which means that
- the location of the harmonics is no longer at multiples of the fundamental
- (pitch).
-\end_layout
-
-\begin_layout Section
-Excitation Quantization
-\end_layout
-
-\begin_layout Standard
-The high-band excitation is coded in the same way as for narrowband.
-
-\end_layout
-
-\begin_layout Section
-Bit allocation
-\end_layout
-
-\begin_layout Standard
-For the wideband mode, the entire narrowband frame is packed before the
- high-band is encoded.
- The narrowband part of the bit-stream is as defined in table
-\begin_inset LatexCommand \ref{cap:bits-narrowband}
-
-\end_inset
-
-.
- The high-band follows, as described in table
-\begin_inset LatexCommand \ref{cap:bits-wideband}
-
-\end_inset
-
-.
- This also means that a wideband frame may be correctly decoded by a narrowband
- decoder with the only caveat that if more than one frame is packed in the
- same packet, the decoder will need to skip the high-band parts in order
- to sync with the bit-stream.
-\end_layout
-
-\begin_layout Standard
-\begin_inset Float table
-placement h
-wide true
-sideways false
-status open
-
-\begin_layout Standard
-\begin_inset Tabular
-<lyxtabular version="3" rows="7" columns="7">
-<features>
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" width="0pt">
-<column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
-<row topline="true" bottomline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Parameter
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Update rate
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-2
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-3
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Wideband bit
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-1
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Mode ID
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-3
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-3
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-3
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-3
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-3
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-LSP
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-12
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-12
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-12
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-12
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Excitation gain
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-sub-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-5
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true" bottomline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Excitation VQ
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-sub-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-0
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-20
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-40
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-80
-\end_layout
-
-\end_inset
-</cell>
-</row>
-<row topline="true" bottomline="true">
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-Total
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-frame
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-4
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-36
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-112
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-192
-\end_layout
-
-\end_inset
-</cell>
-<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
-\begin_inset Text
-
-\begin_layout Standard
-352
-\end_layout
-
-\end_inset
-</cell>
-</row>
-</lyxtabular>
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Caption
-Bit allocation for high-band in wideband mode
-\begin_inset LatexCommand \label{cap:bits-wideband}
-
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Standard
-
-
-\backslash
-clearpage
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
-
-\backslash
-clearpage
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Chapter
-\start_of_appendix
-FAQ
-\end_layout
-
-\begin_layout Subsection*
-Vorbis is open-source
-\begin_inset LatexCommand \index{open-source}
-
-\end_inset
-
- and patent-free
-\begin_inset LatexCommand \index{patent}
-
-\end_inset
-
-; why do we need Speex?
-\end_layout
-
-\begin_layout Standard
-Vorbis is a great project but its goals are not the same as Speex.
- Vorbis is mostly aimed at compressing music and audio in general, while
- Speex targets speech only.
- For that reason Speex can achieve much better results than Vorbis on speech,
- typically 2-4 times higher compression at equal quality.
-\end_layout
-
-\begin_layout Subsection*
-Isn't there an open-source implementation of the GSM-FR codec? Why is Speex
- necessary?
-\end_layout
-
-\begin_layout Standard
-First of all, it's not clear whether GSM-FR is covered by a Philips patent
- (see http://kbs.cs.tu-berlin.de/~jutta/toast.html).
- Also, GSM-FR offers mediocre quality at a relatively high bit-rate, while
- Speex can offer equivalent quality at almost half the bit-rate.
- Last but not least, Speex offers a wide range of bit-rates and sampling
- rates, while GSM-FR is limited to 8 kHz speech at 13 kbps.
-\end_layout
-
-\begin_layout Subsection*
-Under what license is Speex released?
-\end_layout
-
-\begin_layout Standard
-As of version 1.0 beta 1, Speex is released under Xiph's version of the (revised)
- BSD license (see Appendix
-\begin_inset LatexCommand \ref{sec:Speex-License}
-
-\end_inset
-
-).
- This license is one of the most permissive open-source licenses.
-\end_layout
-
-\begin_layout Subsection*
-Am I allowed to use Speex in commercial software?
-\end_layout
-
-\begin_layout Standard
-Yes.
- As long as you comply with the license.
- This basically means you have to keep the copyright notice and you can't
- use our name to promote your product without authorization.
- For more details, see license in Appendix
-\begin_inset LatexCommand \ref{sec:Speex-License}
-
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Subsection*
-Ogg
-\begin_inset LatexCommand \index{Ogg}
-
-\end_inset
-
-, Speex, Vorbis
-\begin_inset LatexCommand \index{Vorbis}
-
-\end_inset
-
-, what's the difference?
-\end_layout
-
-\begin_layout Standard
-Ogg is a container format for holding multimedia data.
- Vorbis is an audio codec that uses Ogg to store its bit-streams as files,
- hence the name Ogg Vorbis.
- Speex also uses the Ogg format to store its bit-streams as files, so technicall
-y they would be
-\begin_inset Quotes eld
-\end_inset
-
-Ogg Speex
-\begin_inset Quotes erd
-\end_inset
-
- files (I prefer to call them just Speex files).
- One difference with Vorbis however, is that Speex is less tied with Ogg.
- Actually, if you just do Voice over IP (VoIP), you don't need Ogg at all.
-\end_layout
-
-\begin_layout Subsection*
-What's the extension for Speex?
-\end_layout
-
-\begin_layout Standard
-Speex files have the .spx extension.
- Note, however that the Speex tools (speexenc, speexdec) do not rely on
- the extension at all, so any extension will work.
-\end_layout
-
-\begin_layout Subsection*
-Can I use Speex for compressing music
-\begin_inset LatexCommand \index{music}
-
-\end_inset
-
-?
-\end_layout
-
-\begin_layout Standard
-Just like Vorbis is not really adapted to speech, Speex is really not adapted
- for music.
- In most cases, you'll be better of with Vorbis when it comes to music.
-\end_layout
-
-\begin_layout Subsection*
-I converted some MP3s to Speex and the quality is bad.
- What's wrong?
-\end_layout
-
-\begin_layout Standard
-This is called transcoding and it will always result in much poorer quality
- than the original MP3.
- Unless you have a really good (size) reason to do so, never transcode speech.
- This is even valid for self transcoding (tandeming), i.e.
- If you decode a Speex file and re-encode it again at the same bit-rate,
- you will lose quality.
-\end_layout
-
-\begin_layout Subsection*
-Does Speex run on Windows?
-\end_layout
-
-\begin_layout Standard
-Compilation on Windows has been supported since version 0.8.0.
- There are also several front-ends available from the website.
-\end_layout
-
-\begin_layout Subsection*
-Why is encoding so slow compared to decoding?
-\end_layout
-
-\begin_layout Standard
-For most kinds of compression, encoding is inherently slower than decoding.
- In the case of Speex, encoding consists of finding, for each vector of
- 5 to 10 samples, the entry that matches the best within a codebook consisting
- of 16 to 256 entries.
- On the other hand, at decoding all that needs to be done is look up the
- right entry in the codebook using the encoded index.
- Since a lookup is much faster than a search, the decoder works much faster
- than the encoder.
-\end_layout
-
-\begin_layout Subsection*
-Why is Speex so slow on my iPaq (or insert any platform without an FPU)?
-\end_layout
-
-\begin_layout Standard
-You probably didn't build Speex with the fixed-point option (--enable-fixed-poin
-t).
- Even if you did, not all modes have been ported to use fixed-point arithmetic,
- so the code may be slowed down by a few float operations left (e.g.
- in the wideband mode).
-\end_layout
-
-\begin_layout Subsection*
-I'm getting unusual background noise (hiss) when using libspeex in my applicatio
-n.
- How do I fix that?
-\end_layout
-
-\begin_layout Standard
-One of the causes could be scaling of the input speech.
- Speex expects signals to have a
-\begin_inset Formula $\pm2^{15}$
-\end_inset
-
- (signed short) dynamic range.
- If the dynamic range of your signals is too small (e.g.
-
-\begin_inset Formula $\pm1.0$
-\end_inset
-
-), you will suffer important quantization noise.
- A good target is to have a dynamic range around
-\begin_inset Formula $\pm8000$
-\end_inset
-
- which is large enough, but small enough to make sure there's no clipping
- when converting back to signed short.
-\end_layout
-
-\begin_layout Subsection*
-I get very distorted speech when using libspeex in my application.
- What's wrong?
-\end_layout
-
-\begin_layout Standard
-There are many possible causes for that.
- One of them is errors in the way the bits are manipulated.
- Another possible cause is the use of the same encoder or decoder state
- for more than one audio stream (channel), which produces strange effects
- with the filter memories.
- If the input speech has an amplitude close to
-\begin_inset Formula $\pm2^{15}$
-\end_inset
-
-, it is possible that at decoding, the amplitude be a bit higher than that,
- causing clipping when saving as 16-bit PCM.
-\end_layout
-
-\begin_layout Subsection*
-How does Speex compare to other proprietary codecs?
-\end_layout
-
-\begin_layout Standard
-It's hard to give precise figures since no formal listening tests have been
- performed yet.
- All I can say is that in terms of quality, Speex competes on the same ground
- as other proprietary codecs (not necessarily the best, but not the worst
- either).
- Speex also has many features that are not present in most other codecs.
- These include variable bit-rate (VBR), integration of narrowband and wideband,
- as well as stereo support.
- Of course, another area where Speex is really hard to beat is the quality/price
- ratio.
- Unlike many very expensive codecs, Speex is free and anyone may distribute
- or modify it at will.
-\end_layout
-
-\begin_layout Subsection*
-Can Speex pass DTMF
-\begin_inset LatexCommand \index{DTMF}
-
-\end_inset
-
-?
-\end_layout
-
-\begin_layout Standard
-I guess it all depends on the bit-rate used.
- Though no formal testing has yet been performed, I'd say is correctly at
- 8 kbps and above.
- Also, make sure you don't use the lowest complexity (see SPEEX_SET_COMPLEXITY
- or --comp option), as it causes significant noise.
-\end_layout
-
-\begin_layout Subsection*
-Can Speex pass V.9x modem signals correctly?
-\end_layout
-
-\begin_layout Standard
-If I could do that I'd be very rich by now :-) Seriously, that would break
- fundamental laws of information theory.
-\end_layout
-
-\begin_layout Subsection*
-What is your (Jean-Marc) relationship with the University of Sherbrooke
- and how does Speex fit into that?
-\end_layout
-
-\begin_layout Standard
-I have completed my
-\emph on
-Ph.D.
-
-\emph default
- at the University of Sherbrooke in 2005 in mobile robotics.
- Although I did my master with the Sherbrooke speech coding group (in speech
- enhancement, not coding), was no longer associated with them when developing
- Speex.
- It should
-\series bold
-not
-\series default
- be understood that they or the University of Sherbrooke have anything to
- do with the Speex project.
- Furthermore, Speex does not make use of any code or proprietary technology
- developed in the Sherbrooke speech coding group.
-
-\end_layout
-
-\begin_layout Subsection*
-CELP, ACELP
-\begin_inset LatexCommand \index{ACELP}
-
-\end_inset
-
-, what's the difference?
-\end_layout
-
-\begin_layout Standard
-CELP stands for
-\begin_inset Quotes eld
-\end_inset
-
-Code Excited Linear Prediction
-\begin_inset Quotes erd
-\end_inset
-
-, while ACELP stands for
-\begin_inset Quotes eld
-\end_inset
-
-
-\emph on
-Algebraic
-\emph default
- Code Excited Linear Prediction
-\begin_inset Quotes erd
-\end_inset
-
-.
- That means ACELP is a CELP technique that uses an algebraic codebook represente
-d as a sum of unit pulses, thus making the codebook search much more efficient.
- This technique was invented at the University of Sherbrooke and is now
- one of the most widely used form of CELP.
- Unfortunately, since it is patented, it cannot be used in Speex.
-\end_layout
-
-\begin_layout Standard
-
-\newpage
-
-\end_layout
-
-\begin_layout Chapter
-Sample code
-\begin_inset LatexCommand \label{sec:Sample-code}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-This section shows sample code for encoding and decoding speech using the
- Speex API.
- The commands can be used to encode and decode a file by calling:
-\family typewriter
-
-\newline
-% sampleenc in_file.sw | sampledec out_file.sw
-\family default
-
-\newline
-where both files are raw (no header) files encoded at 16 bits per sample
- (in the machine natural endianness).
-\end_layout
-
-\begin_layout Section
-sampleenc.c
-\end_layout
-
-\begin_layout Standard
-sampleenc takes a raw 16 bits/sample file, encodes it and outputs a Speex
- stream to stdout.
- Note that the packing used is NOT compatible with that of speexenc/speexdec.
-\end_layout
-
-\begin_layout Standard
-\begin_inset Include \verbatiminput{sampleenc.c}
-preview false
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Section
-sampledec.c
-\end_layout
-
-\begin_layout Standard
-sampledec reads a Speex stream from stdin, decodes it and outputs it to
- a raw 16 bits/sample file.
- Note that the packing used is NOT compatible with that of speexenc/speexdec.
-\end_layout
-
-\begin_layout Standard
-\begin_inset Include \verbatiminput{sampledec.c}
-preview false
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-
-\newpage
-
-\end_layout
-
-\begin_layout Chapter
-IETF RTP Profile
-\begin_inset LatexCommand \label{sec:IETF-draft}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\begin_inset Include \verbatiminput{draft-herlein-speex-rtp-profile-02.txt}
-preview false
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-
-\newpage
-
-\end_layout
-
-\begin_layout Chapter
-Speex License
-\begin_inset LatexCommand \label{sec:Speex-License}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-\end_layout
-
-\begin_layout Itemize
-Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-\end_layout
-
-\begin_layout Itemize
-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.
-\end_layout
-
-\begin_layout Itemize
-Neither the name of the Xiph.org Foundation nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-\end_layout
-
-\begin_layout Standard
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
- IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE ARE DISCLAIMED.
- IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-\end_layout
-
-\begin_layout Standard
-
-\newpage
-
-\end_layout
-
-\begin_layout Chapter
-GNU Free Documentation License
-\end_layout
-
-\begin_layout Standard
-Version 1.1, March 2000
-\end_layout
-
-\begin_layout Standard
-Copyright (C) 2000 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted
- to copy and distribute verbatim copies of this license document, but changing
- it is not allowed.
-
-\end_layout
-
-\begin_layout Section*
-0.
- PREAMBLE
-\end_layout
-
-\begin_layout Standard
-The purpose of this License is to make a manual, textbook, or other written
- document "free" in the sense of freedom: to assure everyone the effective
- freedom to copy and redistribute it, with or without modifying it, either
- commercially or noncommercially.
- Secondarily, this License preserves for the author and publisher a way
- to get credit for their work, while not being considered responsible for
- modifications made by others.
-\end_layout
-
-\begin_layout Standard
-This License is a kind of "copyleft", which means that derivative works
- of the document must themselves be free in the same sense.
- It complements the GNU General Public License, which is a copyleft license
- designed for free software.
-\end_layout
-
-\begin_layout Standard
-We have designed this License in order to use it for manuals for free software,
- because free software needs free documentation: a free program should come
- with manuals providing the same freedoms that the software does.
- But this License is not limited to software manuals; it can be used for
- any textual work, regardless of subject matter or whether it is published
- as a printed book.
- We recommend this License principally for works whose purpose is instruction
- or reference.
-
-\end_layout
-
-\begin_layout Section*
-1.
- APPLICABILITY AND DEFINITIONS
-\end_layout
-
-\begin_layout Standard
-This License applies to any manual or other work that contains a notice
- placed by the copyright holder saying it can be distributed under the terms
- of this License.
- The "Document", below, refers to any such manual or work.
- Any member of the public is a licensee, and is addressed as "you".
-\end_layout
-
-\begin_layout Standard
-A "Modified Version" of the Document means any work containing the Document
- or a portion of it, either copied verbatim, or with modifications and/or
- translated into another language.
-\end_layout
-
-\begin_layout Standard
-A "Secondary Section" is a named appendix or a front-matter section of the
- Document that deals exclusively with the relationship of the publishers
- or authors of the Document to the Document's overall subject (or to related
- matters) and contains nothing that could fall directly within that overall
- subject.
- (For example, if the Document is in part a textbook of mathematics, a Secondary
- Section may not explain any mathematics.) The relationship could be a matter
- of historical connection with the subject or with related matters, or of
- legal, commercial, philosophical, ethical or political position regarding
- them.
-\end_layout
-
-\begin_layout Standard
-The "Invariant Sections" are certain Secondary Sections whose titles are
- designated, as being those of Invariant Sections, in the notice that says
- that the Document is released under this License.
-\end_layout
-
-\begin_layout Standard
-The "Cover Texts" are certain short passages of text that are listed, as
- Front-Cover Texts or Back-Cover Texts, in the notice that says that the
- Document is released under this License.
-\end_layout
-
-\begin_layout Standard
-A "Transparent" copy of the Document means a machine-readable copy, represented
- in a format whose specification is available to the general public, whose
- contents can be viewed and edited directly and straightforwardly with generic
- text editors or (for images composed of pixels) generic paint programs
- or (for drawings) some widely available drawing editor, and that is suitable
- for input to text formatters or for automatic translation to a variety
- of formats suitable for input to text formatters.
- A copy made in an otherwise Transparent file format whose markup has been
- designed to thwart or discourage subsequent modification by readers is
- not Transparent.
- A copy that is not "Transparent" is called "Opaque".
-\end_layout
-
-\begin_layout Standard
-Examples of suitable formats for Transparent copies include plain ASCII
- without markup, Texinfo input format, LaTeX input format, SGML or XML using
- a publicly available DTD, and standard-conforming simple HTML designed
- for human modification.
- Opaque formats include PostScript, PDF, proprietary formats that can be
- read and edited only by proprietary word processors, SGML or XML for which
- the DTD and/or processing tools are not generally available, and the machine-ge
-nerated HTML produced by some word processors for output purposes only.
-\end_layout
-
-\begin_layout Standard
-The "Title Page" means, for a printed book, the title page itself, plus
- such following pages as are needed to hold, legibly, the material this
- License requires to appear in the title page.
- For works in formats which do not have any title page as such, "Title Page"
- means the text near the most prominent appearance of the work's title,
- preceding the beginning of the body of the text.
-\end_layout
-
-\begin_layout Section*
-2.
- VERBATIM COPYING
-\end_layout
-
-\begin_layout Standard
-You may copy and distribute the Document in any medium, either commercially
- or noncommercially, provided that this License, the copyright notices,
- and the license notice saying this License applies to the Document are
- reproduced in all copies, and that you add no other conditions whatsoever
- to those of this License.
- You may not use technical measures to obstruct or control the reading or
- further copying of the copies you make or distribute.
- However, you may accept compensation in exchange for copies.
- If you distribute a large enough number of copies you must also follow
- the conditions in section 3.
-\end_layout
-
-\begin_layout Standard
-You may also lend copies, under the same conditions stated above, and you
- may publicly display copies.
-\end_layout
-
-\begin_layout Section*
-3.
- COPYING IN QUANTITY
-\end_layout
-
-\begin_layout Standard
-If you publish printed copies of the Document numbering more than 100, and
- the Document's license notice requires Cover Texts, you must enclose the
- copies in covers that carry, clearly and legibly, all these Cover Texts:
- Front-Cover Texts on the front cover, and Back-Cover Texts on the back
- cover.
- Both covers must also clearly and legibly identify you as the publisher
- of these copies.
- The front cover must present the full title with all words of the title
- equally prominent and visible.
- You may add other material on the covers in addition.
- Copying with changes limited to the covers, as long as they preserve the
- title of the Document and satisfy these conditions, can be treated as verbatim
- copying in other respects.
-\end_layout
-
-\begin_layout Standard
-If the required texts for either cover are too voluminous to fit legibly,
- you should put the first ones listed (as many as fit reasonably) on the
- actual cover, and continue the rest onto adjacent pages.
-\end_layout
-
-\begin_layout Standard
-If you publish or distribute Opaque copies of the Document numbering more
- than 100, you must either include a machine-readable Transparent copy along
- with each Opaque copy, or state in or with each Opaque copy a publicly-accessib
-le computer-network location containing a complete Transparent copy of the
- Document, free of added material, which the general network-using public
- has access to download anonymously at no charge using public-standard network
- protocols.
- If you use the latter option, you must take reasonably prudent steps, when
- you begin distribution of Opaque copies in quantity, to ensure that this
- Transparent copy will remain thus accessible at the stated location until
- at least one year after the last time you distribute an Opaque copy (directly
- or through your agents or retailers) of that edition to the public.
-\end_layout
-
-\begin_layout Standard
-It is requested, but not required, that you contact the authors of the Document
- well before redistributing any large number of copies, to give them a chance
- to provide you with an updated version of the Document.
-
-\end_layout
-
-\begin_layout Section*
-4.
- MODIFICATIONS
-\end_layout
-
-\begin_layout Standard
-You may copy and distribute a Modified Version of the Document under the
- conditions of sections 2 and 3 above, provided that you release the Modified
- Version under precisely this License, with the Modified Version filling
- the role of the Document, thus licensing distribution and modification
- of the Modified Version to whoever possesses a copy of it.
- In addition, you must do these things in the Modified Version:
-\end_layout
-
-\begin_layout Itemize
-A.
- Use in the Title Page (and on the covers, if any) a title distinct from
- that of the Document, and from those of previous versions (which should,
- if there were any, be listed in the History section of the Document).
- You may use the same title as a previous version if the original publisher
- of that version gives permission.
-\end_layout
-
-\begin_layout Itemize
-B.
- List on the Title Page, as authors, one or more persons or entities responsible
- for authorship of the modifications in the Modified Version, together with
- at least five of the principal authors of the Document (all of its principal
- authors, if it has less than five).
-\end_layout
-
-\begin_layout Itemize
-C.
- State on the Title page the name of the publisher of the Modified Version,
- as the publisher.
-\end_layout
-
-\begin_layout Itemize
-D.
- Preserve all the copyright notices of the Document.
-\end_layout
-
-\begin_layout Itemize
-E.
- Add an appropriate copyright notice for your modifications adjacent to
- the other copyright notices.
-\end_layout
-
-\begin_layout Itemize
-F.
- Include, immediately after the copyright notices, a license notice giving
- the public permission to use the Modified Version under the terms of this
- License, in the form shown in the Addendum below.
-\end_layout
-
-\begin_layout Itemize
-G.
- Preserve in that license notice the full lists of Invariant Sections and
- required Cover Texts given in the Document's license notice.
-\end_layout
-
-\begin_layout Itemize
-H.
- Include an unaltered copy of this License.
-\end_layout
-
-\begin_layout Itemize
-I.
- Preserve the section entitled "History", and its title, and add to it an
- item stating at least the title, year, new authors, and publisher of the
- Modified Version as given on the Title Page.
- If there is no section entitled "History" in the Document, create one stating
- the title, year, authors, and publisher of the Document as given on its
- Title Page, then add an item describing the Modified Version as stated
- in the previous sentence.
-\end_layout
-
-\begin_layout Itemize
-J.
- Preserve the network location, if any, given in the Document for public
- access to a Transparent copy of the Document, and likewise the network
- locations given in the Document for previous versions it was based on.
- These may be placed in the "History" section.
- You may omit a network location for a work that was published at least
- four years before the Document itself, or if the original publisher of
- the version it refers to gives permission.
-\end_layout
-
-\begin_layout Itemize
-K.
- In any section entitled "Acknowledgements" or "Dedications", preserve the
- section's title, and preserve in the section all the substance and tone
- of each of the contributor acknowledgements and/or dedications given therein.
-\end_layout
-
-\begin_layout Itemize
-L.
- Preserve all the Invariant Sections of the Document, unaltered in their
- text and in their titles.
- Section numbers or the equivalent are not considered part of the section
- titles.
-\end_layout
-
-\begin_layout Itemize
-M.
- Delete any section entitled "Endorsements".
- Such a section may not be included in the Modified Version.
-\end_layout
-
-\begin_layout Itemize
-N.
- Do not retitle any existing section as "Endorsements" or to conflict in
- title with any Invariant Section.
-
-\end_layout
-
-\begin_layout Standard
-If the Modified Version includes new front-matter sections or appendices
- that qualify as Secondary Sections and contain no material copied from
- the Document, you may at your option designate some or all of these sections
- as invariant.
- To do this, add their titles to the list of Invariant Sections in the Modified
- Version's license notice.
- These titles must be distinct from any other section titles.
-\end_layout
-
-\begin_layout Standard
-You may add a section entitled "Endorsements", provided it contains nothing
- but endorsements of your Modified Version by various parties--for example,
- statements of peer review or that the text has been approved by an organization
- as the authoritative definition of a standard.
-\end_layout
-
-\begin_layout Standard
-You may add a passage of up to five words as a Front-Cover Text, and a passage
- of up to 25 words as a Back-Cover Text, to the end of the list of Cover
- Texts in the Modified Version.
- Only one passage of Front-Cover Text and one of Back-Cover Text may be
- added by (or through arrangements made by) any one entity.
- If the Document already includes a cover text for the same cover, previously
- added by you or by arrangement made by the same entity you are acting on
- behalf of, you may not add another; but you may replace the old one, on
- explicit permission from the previous publisher that added the old one.
-\end_layout
-
-\begin_layout Standard
-The author(s) and publisher(s) of the Document do not by this License give
- permission to use their names for publicity for or to assert or imply endorseme
-nt of any Modified Version.
-
-\end_layout
-
-\begin_layout Section*
-5.
- COMBINING DOCUMENTS
-\end_layout
-
-\begin_layout Standard
-You may combine the Document with other documents released under this License,
- under the terms defined in section 4 above for modified versions, provided
- that you include in the combination all of the Invariant Sections of all
- of the original documents, unmodified, and list them all as Invariant Sections
- of your combined work in its license notice.
-\end_layout
-
-\begin_layout Standard
-The combined work need only contain one copy of this License, and multiple
- identical Invariant Sections may be replaced with a single copy.
- If there are multiple Invariant Sections with the same name but different
- contents, make the title of each such section unique by adding at the end
- of it, in parentheses, the name of the original author or publisher of
- that section if known, or else a unique number.
- Make the same adjustment to the section titles in the list of Invariant
- Sections in the license notice of the combined work.
-\end_layout
-
-\begin_layout Standard
-In the combination, you must combine any sections entitled "History" in
- the various original documents, forming one section entitled "History";
- likewise combine any sections entitled "Acknowledgements", and any sections
- entitled "Dedications".
- You must delete all sections entitled "Endorsements."
-\end_layout
-
-\begin_layout Section*
-6.
- COLLECTIONS OF DOCUMENTS
-\end_layout
-
-\begin_layout Standard
-You may make a collection consisting of the Document and other documents
- released under this License, and replace the individual copies of this
- License in the various documents with a single copy that is included in
- the collection, provided that you follow the rules of this License for
- verbatim copying of each of the documents in all other respects.
-\end_layout
-
-\begin_layout Standard
-You may extract a single document from such a collection, and distribute
- it individually under this License, provided you insert a copy of this
- License into the extracted document, and follow this License in all other
- respects regarding verbatim copying of that document.
-
-\end_layout
-
-\begin_layout Section*
-7.
- AGGREGATION WITH INDEPENDENT WORKS
-\end_layout
-
-\begin_layout Standard
-A compilation of the Document or its derivatives with other separate and
- independent documents or works, in or on a volume of a storage or distribution
- medium, does not as a whole count as a Modified Version of the Document,
- provided no compilation copyright is claimed for the compilation.
- Such a compilation is called an "aggregate", and this License does not
- apply to the other self-contained works thus compiled with the Document,
- on account of their being thus compiled, if they are not themselves derivative
- works of the Document.
-\end_layout
-
-\begin_layout Standard
-If the Cover Text requirement of section 3 is applicable to these copies
- of the Document, then if the Document is less than one quarter of the entire
- aggregate, the Document's Cover Texts may be placed on covers that surround
- only the Document within the aggregate.
- Otherwise they must appear on covers around the whole aggregate.
-\end_layout
-
-\begin_layout Section*
-8.
- TRANSLATION
-\end_layout
-
-\begin_layout Standard
-Translation is considered a kind of modification, so you may distribute
- translations of the Document under the terms of section 4.
- Replacing Invariant Sections with translations requires special permission
- from their copyright holders, but you may include translations of some
- or all Invariant Sections in addition to the original versions of these
- Invariant Sections.
- You may include a translation of this License provided that you also include
- the original English version of this License.
- In case of a disagreement between the translation and the original English
- version of this License, the original English version will prevail.
-\end_layout
-
-\begin_layout Section*
-9.
- TERMINATION
-\end_layout
-
-\begin_layout Standard
-You may not copy, modify, sublicense, or distribute the Document except
- as expressly provided for under this License.
- Any other attempt to copy, modify, sublicense or distribute the Document
- is void, and will automatically terminate your rights under this License.
- However, parties who have received copies, or rights, from you under this
- License will not have their licenses terminated so long as such parties
- remain in full compliance.
-
-\end_layout
-
-\begin_layout Section*
-10.
- FUTURE REVISIONS OF THIS LICENSE
-\end_layout
-
-\begin_layout Standard
-The Free Software Foundation may publish new, revised versions of the GNU
- Free Documentation License from time to time.
- Such new versions will be similar in spirit to the present version, but
- may differ in detail to address new problems or concerns.
- See http://www.gnu.org/copyleft/.
-\end_layout
-
-\begin_layout Standard
-Each version of the License is given a distinguishing version number.
- If the Document specifies that a particular numbered version of this License
- "or any later version" applies to it, you have the option of following
- the terms and conditions either of that specified version or of any later
- version that has been published (not as a draft) by the Free Software Foundatio
-n.
- If the Document does not specify a version number of this License, you
- may choose any version ever published (not as a draft) by the Free Software
- Foundation.
-\end_layout
-
-\begin_layout Standard
-\begin_inset LatexCommand \printindex{}
-
-\end_inset
-
-
-\end_layout
-
-\end_body
-\end_document
diff --git a/3rdparty/speex/doc/manual.pdf b/3rdparty/speex/doc/manual.pdf
deleted file mode 100644
index ec77341e..00000000
--- a/3rdparty/speex/doc/manual.pdf
+++ /dev/null
Binary files differ
diff --git a/3rdparty/speex/doc/programming.html b/3rdparty/speex/doc/programming.html
deleted file mode 100644
index 7b5bc7ae..00000000
--- a/3rdparty/speex/doc/programming.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>Speex Programming</title>
-
- <meta http-equiv="content-type"
- content="text/html; charset=ISO-8859-1">
-</head>
- <body>
-
-<div align="center">
-<h1>Speex Programming</h1>
-
-<div align="left">
-<h2>Encoding</h2>
- In order to encode speech using Speex, you first need to:<br>
-
-<blockquote>
- <pre><big>#include &lt;speex.h&gt;</big></pre>
- </blockquote>
- You then need to declare a Speex bit-packing struct<br>
-
-<blockquote>
- <pre><big>SpeexBits bits;</big></pre>
- </blockquote>
- and a Speex encoder state<br>
-
-<blockquote>
- <pre><big>void *enc_state;</big></pre>
- </blockquote>
- The two are initialized by:<br>
-
-<blockquote>
- <pre><big>speex_bits_init(&amp;bits);</big></pre>
-
- <pre><big>enc_state = speex_encoder_init(&amp;speex_nb_mode);</big></pre>
- </blockquote>
- For wideband coding, <i>speex_nb_mode</i> will be replaced by <i>speex_wb_mode</i>
-. In most cases, you will need to know the frame size used by the mode you
-are using. You can get that value in the <i>frame_size</i> variable with:<br>
-<blockquote><big><tt>speex_encoder_ctl(enc_state, SPEEX_GET_FRAME_SIZE, &amp;frame_size);</tt></big><br>
-</blockquote>
- For every input frame:<br>
-
-<blockquote>
- <pre><big>speex_bits_reset(&amp;bits);</big></pre>
-
- <pre><big>speex_encode(enc_state, input_frame, &amp;bits);</big></pre>
-
- <pre><big>nbBytes = speex_bits_write(&amp;bits, byte_ptr, MAX_NB_BYTES);</big></pre>
- </blockquote>
- where <i>input_frame</i> is a <i>(float *)</i> pointing to the beginning
-of a speech frame, byte_ptr is a <i>(char *)</i> where the encoded frame will
-be written, <i>MAX_NB_BYTES</i> is the maximum number of bytes that can be
-written to <i>byte_ptr</i> without causing an overflow and <i>nbBytes</i>
- is the number of bytes actually written to <i>byte_ptr</i> (the encoded
-size in bytes).<br>
- <br>
- After you're done with the encoding, free all resources with:<br>
-
-<blockquote>
- <pre><big>speex_bits_destroy(&amp;bits);</big></pre>
-
- <pre><big>speex_encoder_destroy(&amp;enc_state);</big></pre>
- </blockquote>
- That's about it for the encoder.<br>
-
-<h2>Decoding</h2>
- In order to encode speech using Speex, you first need to:<br>
-
-<blockquote>
- <pre><big>#include &lt;speex.h&gt;</big></pre>
- </blockquote>
- You then need to declare a Speex bit-packing struct<br>
-
-<blockquote>
- <pre><big>SpeexBits bits;</big></pre>
- </blockquote>
- and a Speex encoder state<br>
-
-<blockquote>
- <pre><big>void *dec_state;</big></pre>
- </blockquote>
- The two are initialized by:<br>
-
-<blockquote>
- <pre><big>speex_bits_init(&amp;bits);</big></pre>
-
- <pre><big>dec_state = speex_decoder_init(&amp;speex_nb_mode);</big></pre>
- </blockquote>
- For wideband decoding, <i>speex_nb_mode</i> will be replaced by <i>speex_wb_mode</i>
-. You can get that value in the <i>frame_size</i> variable with:<br>
-
-<blockquote><big><tt>speex_decoder_ctl(dec_state, SPEEX_GET_FRAME_SIZE, &amp;frame_size);</tt></big><br>
-</blockquote>
- There is also a parameter that can be set for the decoder: whether or not
-to use a perceptual post-filter. This can be set by:<br>
-<blockquote><big><tt>speex_decoder_ctl(dec_state, SPEEX_SET_PF, &amp;pf);</tt></big><br>
-</blockquote>
-where <i>pf</i> is an <i>int</i> that with value 0 to have the post-filter
-disabled and 1 to have it enabled.<br>
-<br>
-For every input frame:<br>
-
-<blockquote>
- <pre><big>speex_bits_read_from(&amp;bits, input_bytes, nbBytes);</big></pre>
-
- <pre><big>speex_decode(st, &amp;bits, output_frame, 0);</big></pre>
- </blockquote>
- where <i>input_bytes</i> is a <i>(char *)</i> containing the bit-stream
-data received for a frame, <i>nbBytes</i> is the size (in bytes) of that
-bit-stream, and <i>output_frame</i> is a <i>(float *)</i> and points to the
-area where the decoded speech frame will be written. The last argument indicates
-whether the frame we'd like to decode was lost. A value of 0 indicates the
-normal case where bits points to the bit of the current frame. A value of
-1 indicates that we don't have the bits for the current frame, in which case
-the bits argument should be the same as the bits for the last correctly received
-frame. When a frame is lost, the Speex decoder will do its best to "guess"
-the sorrect signal.<br>
- <br>
- </div>
- </div>
-
-</body>
-</html>
diff --git a/3rdparty/speex/doc/ref_shaping.eps b/3rdparty/speex/doc/ref_shaping.eps
deleted file mode 100644
index 4ef7007f..00000000
--- a/3rdparty/speex/doc/ref_shaping.eps
+++ /dev/null
@@ -1,2045 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: printout.eps
-%%Creator: gnuplot 4.0 patchlevel 0
-%%CreationDate: Mon Mar 6 17:15:27 2006
-%%DocumentFonts: (atend)
-%%BoundingBox: 50 50 410 302
-%%Orientation: Portrait
-%%EndComments
-/gnudict 256 dict def
-gnudict begin
-/Color true def
-/Solid false def
-/gnulinewidth 5.000 def
-/userlinewidth gnulinewidth def
-/vshift -46 def
-/dl {10.0 mul} def
-/hpt_ 31.5 def
-/vpt_ 31.5 def
-/hpt hpt_ def
-/vpt vpt_ def
-/Rounded false def
-/M {moveto} bind def
-/L {lineto} bind def
-/R {rmoveto} bind def
-/V {rlineto} bind def
-/N {newpath moveto} bind def
-/C {setrgbcolor} bind def
-/f {rlineto fill} bind def
-/vpt2 vpt 2 mul def
-/hpt2 hpt 2 mul def
-/Lshow { currentpoint stroke M
- 0 vshift R show } def
-/Rshow { currentpoint stroke M
- dup stringwidth pop neg vshift R show } def
-/Cshow { currentpoint stroke M
- dup stringwidth pop -2 div vshift R show } def
-/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
- /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def
-/DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
- {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse } def
-/BL { stroke userlinewidth 2 mul setlinewidth
- Rounded { 1 setlinejoin 1 setlinecap } if } def
-/AL { stroke userlinewidth 2 div setlinewidth
- Rounded { 1 setlinejoin 1 setlinecap } if } def
-/UL { dup gnulinewidth mul /userlinewidth exch def
- dup 1 lt {pop 1} if 10 mul /udl exch def } def
-/PL { stroke userlinewidth setlinewidth
- Rounded { 1 setlinejoin 1 setlinecap } if } def
-/LTw { PL [] 1 setgray } def
-/LTb { BL [] 0 0 0 DL } def
-/LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def
-/LT0 { PL [] 1 0 0 DL } def
-/LT1 { PL [4 dl 2 dl] 0 1 0 DL } def
-/LT2 { PL [2 dl 3 dl] 0 0 1 DL } def
-/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
-/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
-/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
-/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
-/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
-/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def
-/Pnt { stroke [] 0 setdash
- gsave 1 setlinecap M 0 0 V stroke grestore } def
-/Dia { stroke [] 0 setdash 2 copy vpt add M
- hpt neg vpt neg V hpt vpt neg V
- hpt vpt V hpt neg vpt V closepath stroke
- Pnt } def
-/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V
- currentpoint stroke M
- hpt neg vpt neg R hpt2 0 V stroke
- } def
-/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
- 0 vpt2 neg V hpt2 0 V 0 vpt2 V
- hpt2 neg 0 V closepath stroke
- Pnt } def
-/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M
- hpt2 vpt2 neg V currentpoint stroke M
- hpt2 neg 0 R hpt2 vpt2 V stroke } def
-/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
- hpt neg vpt -1.62 mul V
- hpt 2 mul 0 V
- hpt neg vpt 1.62 mul V closepath stroke
- Pnt } def
-/Star { 2 copy Pls Crs } def
-/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M
- 0 vpt2 neg V hpt2 0 V 0 vpt2 V
- hpt2 neg 0 V closepath fill } def
-/TriUF { stroke [] 0 setdash vpt 1.12 mul add M
- hpt neg vpt -1.62 mul V
- hpt 2 mul 0 V
- hpt neg vpt 1.62 mul V closepath fill } def
-/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
- hpt neg vpt 1.62 mul V
- hpt 2 mul 0 V
- hpt neg vpt -1.62 mul V closepath stroke
- Pnt } def
-/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M
- hpt neg vpt 1.62 mul V
- hpt 2 mul 0 V
- hpt neg vpt -1.62 mul V closepath fill} def
-/DiaF { stroke [] 0 setdash vpt add M
- hpt neg vpt neg V hpt vpt neg V
- hpt vpt V hpt neg vpt V closepath fill } def
-/Pent { stroke [] 0 setdash 2 copy gsave
- translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
- closepath stroke grestore Pnt } def
-/PentF { stroke [] 0 setdash gsave
- translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
- closepath fill grestore } def
-/Circle { stroke [] 0 setdash 2 copy
- hpt 0 360 arc stroke Pnt } def
-/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def
-/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def
-/C1 { BL [] 0 setdash 2 copy moveto
- 2 copy vpt 0 90 arc closepath fill
- vpt 0 360 arc closepath } bind def
-/C2 { BL [] 0 setdash 2 copy moveto
- 2 copy vpt 90 180 arc closepath fill
- vpt 0 360 arc closepath } bind def
-/C3 { BL [] 0 setdash 2 copy moveto
- 2 copy vpt 0 180 arc closepath fill
- vpt 0 360 arc closepath } bind def
-/C4 { BL [] 0 setdash 2 copy moveto
- 2 copy vpt 180 270 arc closepath fill
- vpt 0 360 arc closepath } bind def
-/C5 { BL [] 0 setdash 2 copy moveto
- 2 copy vpt 0 90 arc
- 2 copy moveto
- 2 copy vpt 180 270 arc closepath fill
- vpt 0 360 arc } bind def
-/C6 { BL [] 0 setdash 2 copy moveto
- 2 copy vpt 90 270 arc closepath fill
- vpt 0 360 arc closepath } bind def
-/C7 { BL [] 0 setdash 2 copy moveto
- 2 copy vpt 0 270 arc closepath fill
- vpt 0 360 arc closepath } bind def
-/C8 { BL [] 0 setdash 2 copy moveto
- 2 copy vpt 270 360 arc closepath fill
- vpt 0 360 arc closepath } bind def
-/C9 { BL [] 0 setdash 2 copy moveto
- 2 copy vpt 270 450 arc closepath fill
- vpt 0 360 arc closepath } bind def
-/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
- 2 copy moveto
- 2 copy vpt 90 180 arc closepath fill
- vpt 0 360 arc closepath } bind def
-/C11 { BL [] 0 setdash 2 copy moveto
- 2 copy vpt 0 180 arc closepath fill
- 2 copy moveto
- 2 copy vpt 270 360 arc closepath fill
- vpt 0 360 arc closepath } bind def
-/C12 { BL [] 0 setdash 2 copy moveto
- 2 copy vpt 180 360 arc closepath fill
- vpt 0 360 arc closepath } bind def
-/C13 { BL [] 0 setdash 2 copy moveto
- 2 copy vpt 0 90 arc closepath fill
- 2 copy moveto
- 2 copy vpt 180 360 arc closepath fill
- vpt 0 360 arc closepath } bind def
-/C14 { BL [] 0 setdash 2 copy moveto
- 2 copy vpt 90 360 arc closepath fill
- vpt 0 360 arc } bind def
-/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
- vpt 0 360 arc closepath } bind def
-/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
- neg 0 rlineto closepath } bind def
-/Square { dup Rec } bind def
-/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def
-/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def
-/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def
-/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def
-/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def
-/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def
-/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill
- exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def
-/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def
-/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
- 2 copy vpt Square fill
- Bsquare } bind def
-/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def
-/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def
-/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
- Bsquare } bind def
-/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
- Bsquare } bind def
-/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def
-/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
- 2 copy vpt Square fill Bsquare } bind def
-/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
- 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def
-/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def
-/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def
-/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def
-/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def
-/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def
-/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def
-/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def
-/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def
-/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def
-/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def
-/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def
-/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def
-/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def
-/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def
-/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def
-/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def
-/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def
-/DiaE { stroke [] 0 setdash vpt add M
- hpt neg vpt neg V hpt vpt neg V
- hpt vpt V hpt neg vpt V closepath stroke } def
-/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M
- 0 vpt2 neg V hpt2 0 V 0 vpt2 V
- hpt2 neg 0 V closepath stroke } def
-/TriUE { stroke [] 0 setdash vpt 1.12 mul add M
- hpt neg vpt -1.62 mul V
- hpt 2 mul 0 V
- hpt neg vpt 1.62 mul V closepath stroke } def
-/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M
- hpt neg vpt 1.62 mul V
- hpt 2 mul 0 V
- hpt neg vpt -1.62 mul V closepath stroke } def
-/PentE { stroke [] 0 setdash gsave
- translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
- closepath stroke grestore } def
-/CircE { stroke [] 0 setdash
- hpt 0 360 arc stroke } def
-/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def
-/DiaW { stroke [] 0 setdash vpt add M
- hpt neg vpt neg V hpt vpt neg V
- hpt vpt V hpt neg vpt V Opaque stroke } def
-/BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M
- 0 vpt2 neg V hpt2 0 V 0 vpt2 V
- hpt2 neg 0 V Opaque stroke } def
-/TriUW { stroke [] 0 setdash vpt 1.12 mul add M
- hpt neg vpt -1.62 mul V
- hpt 2 mul 0 V
- hpt neg vpt 1.62 mul V Opaque stroke } def
-/TriDW { stroke [] 0 setdash vpt 1.12 mul sub M
- hpt neg vpt 1.62 mul V
- hpt 2 mul 0 V
- hpt neg vpt -1.62 mul V Opaque stroke } def
-/PentW { stroke [] 0 setdash gsave
- translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
- Opaque stroke grestore } def
-/CircW { stroke [] 0 setdash
- hpt 0 360 arc Opaque stroke } def
-/BoxFill { gsave Rec 1 setgray fill grestore } def
-/BoxColFill {
- gsave Rec
- /Fillden exch def
- currentrgbcolor
- /ColB exch def /ColG exch def /ColR exch def
- /ColR ColR Fillden mul Fillden sub 1 add def
- /ColG ColG Fillden mul Fillden sub 1 add def
- /ColB ColB Fillden mul Fillden sub 1 add def
- ColR ColG ColB setrgbcolor
- fill grestore } def
-%
-% PostScript Level 1 Pattern Fill routine
-% Usage: x y w h s a XX PatternFill
-% x,y = lower left corner of box to be filled
-% w,h = width and height of box
-% a = angle in degrees between lines and x-axis
-% XX = 0/1 for no/yes cross-hatch
-%
-/PatternFill { gsave /PFa [ 9 2 roll ] def
- PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
- PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
- gsave 1 setgray fill grestore clip
- currentlinewidth 0.5 mul setlinewidth
- /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
- 0 0 M PFa 5 get rotate PFs -2 div dup translate
- 0 1 PFs PFa 4 get div 1 add floor cvi
- { PFa 4 get mul 0 M 0 PFs V } for
- 0 PFa 6 get ne {
- 0 1 PFs PFa 4 get div 1 add floor cvi
- { PFa 4 get mul 0 2 1 roll M PFs 0 V } for
- } if
- stroke grestore } def
-%
-/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
-dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
-currentdict end definefont pop
-end
-%%EndProlog
-gnudict begin
-gsave
-50 50 translate
-0.050 0.050 scale
-0 setgray
-newpath
-(Helvetica) findfont 140 scalefont setfont
-1.000 UL
-LTb
-630 420 M
-63 0 V
-6269 0 R
--63 0 V
-546 420 M
-(-40) Rshow
-1.000 UL
-LTb
-630 1056 M
-63 0 V
-6269 0 R
--63 0 V
--6353 0 R
-(-30) Rshow
-1.000 UL
-LTb
-630 1692 M
-63 0 V
-6269 0 R
--63 0 V
--6353 0 R
-(-20) Rshow
-1.000 UL
-LTb
-630 2328 M
-63 0 V
-6269 0 R
--63 0 V
--6353 0 R
-(-10) Rshow
-1.000 UL
-LTb
-630 2964 M
-63 0 V
-6269 0 R
--63 0 V
--6353 0 R
-( 0) Rshow
-1.000 UL
-LTb
-630 3600 M
-63 0 V
-6269 0 R
--63 0 V
--6353 0 R
-( 10) Rshow
-1.000 UL
-LTb
-630 4236 M
-63 0 V
-6269 0 R
--63 0 V
--6353 0 R
-( 20) Rshow
-1.000 UL
-LTb
-630 4872 M
-63 0 V
-6269 0 R
--63 0 V
--6353 0 R
-( 30) Rshow
-1.000 UL
-LTb
-630 420 M
-0 63 V
-0 4389 R
-0 -63 V
-630 280 M
-( 0) Cshow
-1.000 UL
-LTb
-1421 420 M
-0 63 V
-0 4389 R
-0 -63 V
-0 -4529 R
-( 500) Cshow
-1.000 UL
-LTb
-2213 420 M
-0 63 V
-0 4389 R
-0 -63 V
-0 -4529 R
-( 1000) Cshow
-1.000 UL
-LTb
-3004 420 M
-0 63 V
-0 4389 R
-0 -63 V
-0 -4529 R
-( 1500) Cshow
-1.000 UL
-LTb
-3796 420 M
-0 63 V
-0 4389 R
-0 -63 V
-0 -4529 R
-( 2000) Cshow
-1.000 UL
-LTb
-4587 420 M
-0 63 V
-0 4389 R
-0 -63 V
-0 -4529 R
-( 2500) Cshow
-1.000 UL
-LTb
-5379 420 M
-0 63 V
-0 4389 R
-0 -63 V
-0 -4529 R
-( 3000) Cshow
-1.000 UL
-LTb
-6170 420 M
-0 63 V
-0 4389 R
-0 -63 V
-0 -4529 R
-( 3500) Cshow
-1.000 UL
-LTb
-6962 420 M
-0 63 V
-0 4389 R
-0 -63 V
-0 -4529 R
-( 4000) Cshow
-1.000 UL
-LTb
-1.000 UL
-LTb
-630 420 M
-6332 0 V
-0 4452 V
--6332 0 V
-630 420 L
-LTb
-140 2646 M
-currentpoint gsave translate 90 rotate 0 0 M
-(Response \(dB\)) Cshow
-grestore
-LTb
-3796 70 M
-(Frequency \(Hz\)) Cshow
-1.000 UP
-1.000 UL
-LT0
-LTb
-6311 4739 M
-(Speech signal) Rshow
-LT0
-6395 4739 M
-399 0 V
-630 1817 M
-12 -132 V
-13 -287 V
-12 256 V
-12 139 V
-13 -127 V
-12 -193 V
-13 256 V
-12 101 V
-12 -189 V
-13 -269 V
-12 429 V
-12 152 V
-13 -102 V
-12 -276 V
-13 139 V
-12 115 V
-12 -205 V
-13 -174 V
-12 485 V
-12 193 V
-13 37 V
-12 -17 V
-12 41 V
-13 230 V
-12 242 V
-13 107 V
-12 190 V
-12 513 V
-13 436 V
-12 323 V
-12 236 V
-13 168 V
-12 110 V
-12 58 V
-13 9 V
-12 -40 V
-13 -90 V
-12 -141 V
-12 -197 V
-13 -251 V
-12 -289 V
-12 -283 V
-13 -247 V
-12 -265 V
-13 -324 V
-12 -302 V
-12 -231 V
-13 -75 V
-12 150 V
-12 1 V
-13 -298 V
-1273 782 L
-12 1103 V
-13 76 V
-12 -338 V
-13 252 V
-12 357 V
-12 86 V
-13 -118 V
-12 -341 V
-12 -20 V
-13 364 V
-12 243 V
-12 212 V
-13 214 V
-12 208 V
-13 180 V
-12 136 V
-12 82 V
-13 23 V
-12 -40 V
-12 -107 V
-13 -177 V
-12 -240 V
-13 -259 V
-12 -215 V
-12 -220 V
-13 -297 V
-12 -196 V
-12 -128 V
-13 -701 V
-12 632 V
-12 329 V
-13 -25 V
-12 -470 V
-13 -54 V
-12 538 V
-12 70 V
-13 -246 V
-1743 551 L
-12 1111 V
-13 185 V
-12 -159 V
-1793 652 L
-12 893 V
-12 321 V
-13 103 V
-12 164 V
-12 262 V
-13 239 V
-12 190 V
-12 141 V
-stroke
-1891 2965 M
-13 91 V
-12 39 V
-13 -13 V
-12 -62 V
-12 -97 V
-13 -110 V
-12 -120 V
-12 -161 V
-13 -265 V
-12 -453 V
-12 -215 V
-13 139 V
-12 -195 V
-2062 420 L
-5 0 R
-10 961 V
-12 135 V
-13 -422 V
-12 167 V
-12 491 V
-13 101 V
-12 -169 V
-13 -737 V
-12 482 V
-12 299 V
-13 -48 V
-12 -421 V
-12 -151 V
-13 434 V
-12 -3 V
-12 -378 V
-13 -12 V
-12 298 V
-13 -187 V
-12 -44 V
-12 658 V
-13 272 V
-12 90 V
-12 -49 V
-13 -191 V
-12 -370 V
-13 -579 V
-12 -329 V
-12 385 V
-13 444 V
-12 172 V
-12 -57 V
-13 -407 V
-12 -311 V
-12 617 V
-13 97 V
-12 -198 V
-13 -469 V
-12 446 V
-12 177 V
-13 -114 V
-12 -483 V
-12 196 V
-13 269 V
-12 -74 V
-12 -404 V
-13 263 V
-12 248 V
-13 -37 V
-12 -66 V
-12 339 V
-13 312 V
-12 244 V
-12 215 V
-13 176 V
-12 125 V
-13 69 V
-12 15 V
-12 -30 V
-13 -64 V
-12 -85 V
-12 -104 V
-13 -138 V
-12 -195 V
-12 -278 V
-13 -354 V
-12 -257 V
-13 -43 V
-12 -20 V
-12 -73 V
-13 -202 V
-12 -25 V
-12 318 V
-13 132 V
-12 -73 V
-12 -242 V
-13 107 V
-12 220 V
-13 7 V
-12 -277 V
-9 -811 V
-6 0 R
-10 887 V
-12 241 V
-12 20 V
-13 -14 V
-12 241 V
-13 323 V
-12 262 V
-stroke
-3153 2380 M
-12 197 V
-13 138 V
-12 86 V
-12 36 V
-13 -10 V
-12 -54 V
-12 -92 V
-13 -116 V
-12 -108 V
-13 -73 V
-12 -63 V
-12 -107 V
-13 -195 V
-12 -267 V
-12 -88 V
-13 50 V
-12 -97 V
-13 -367 V
-12 -285 V
-12 374 V
-13 3 V
-12 -352 V
-12 88 V
-13 347 V
-12 47 V
-12 -192 V
-13 -264 V
-12 200 V
-13 16 V
-12 -421 V
-12 296 V
-13 398 V
-12 65 V
-12 -212 V
-13 69 V
-12 453 V
-12 240 V
-13 104 V
-12 12 V
-13 -52 V
-12 -82 V
-12 -69 V
-13 -34 V
-12 -25 V
-12 -64 V
-13 -158 V
-12 -346 V
-13 -166 V
-12 375 V
-12 139 V
-13 -46 V
-12 -207 V
-12 -187 V
-13 102 V
-12 -14 V
-12 -357 V
-13 -271 V
-12 601 V
-13 119 V
-12 -172 V
-12 -486 V
-13 521 V
-12 256 V
-12 10 V
-13 -219 V
-12 -294 V
-13 446 V
-12 285 V
-12 167 V
-13 137 V
-12 152 V
-12 161 V
-13 144 V
-12 106 V
-12 58 V
-13 7 V
-12 -44 V
-13 -87 V
-12 -116 V
-12 -119 V
-13 -118 V
-12 -152 V
-12 -241 V
-13 -363 V
-12 -109 V
-12 172 V
-13 43 V
-12 -75 V
-13 -176 V
-12 -313 V
-12 -344 V
-13 236 V
-12 93 V
-12 -169 V
-13 -102 V
-12 320 V
-13 123 V
-12 17 V
-12 207 V
-13 270 V
-12 201 V
-12 186 V
-13 217 V
-12 213 V
-stroke
-4439 2543 M
-12 174 V
-13 125 V
-12 79 V
-13 42 V
-12 14 V
-12 -3 V
-13 -17 V
-12 -34 V
-12 -62 V
-13 -102 V
-12 -149 V
-12 -182 V
-13 -151 V
-12 -70 V
-13 -73 V
-12 -146 V
-12 -150 V
-13 43 V
-12 81 V
-12 -27 V
-13 -148 V
-12 -213 V
-13 -14 V
-12 246 V
-12 262 V
-13 190 V
-12 94 V
-12 -7 V
-13 -56 V
-12 149 V
-12 312 V
-13 269 V
-12 212 V
-13 169 V
-12 136 V
-12 105 V
-13 76 V
-12 45 V
-12 15 V
-13 -15 V
-12 -43 V
-13 -66 V
-12 -80 V
-12 -83 V
-13 -79 V
-12 -80 V
-12 -99 V
-13 -136 V
-12 -193 V
-12 -274 V
-13 -400 V
-12 -462 V
-13 173 V
-12 148 V
-12 -21 V
-13 -198 V
-12 -146 V
-12 391 V
-13 253 V
-12 99 V
-12 -38 V
-13 -208 V
-12 -260 V
-13 418 V
-12 330 V
-12 210 V
-13 153 V
-12 123 V
-12 105 V
-13 88 V
-12 68 V
-13 47 V
-12 24 V
-12 1 V
-13 -19 V
-12 -38 V
-12 -54 V
-13 -67 V
-12 -80 V
-12 -93 V
-13 -111 V
-12 -132 V
-13 -152 V
-12 -167 V
-12 -183 V
-13 -211 V
-12 -236 V
-12 -139 V
-13 15 V
-12 -22 V
-13 -164 V
-12 -405 V
-12 -211 V
-13 440 V
-12 230 V
-12 152 V
-13 96 V
-12 29 V
-12 -28 V
-13 -10 V
-12 81 V
-13 96 V
-12 29 V
-12 -69 V
-stroke
-5725 2104 M
-13 -186 V
-12 -239 V
-12 142 V
-13 249 V
-12 155 V
-12 88 V
-13 49 V
-12 35 V
-13 39 V
-12 38 V
-12 13 V
-13 -34 V
-12 -87 V
-12 -112 V
-13 -72 V
-12 -35 V
-13 -100 V
-12 -269 V
-12 -452 V
-13 296 V
-12 99 V
-12 -312 V
-13 242 V
-12 513 V
-12 237 V
-13 88 V
-12 -21 V
-13 -82 V
-12 -1 V
-12 153 V
-13 177 V
-12 156 V
-12 145 V
-13 134 V
-12 114 V
-12 87 V
-13 56 V
-12 26 V
-13 -3 V
-12 -30 V
-12 -52 V
-13 -74 V
-12 -93 V
-12 -108 V
-13 -121 V
-12 -130 V
-13 -129 V
-12 -118 V
-12 -100 V
-13 -92 V
-12 -105 V
-12 -135 V
-13 -172 V
-12 -195 V
-12 -222 V
-13 -353 V
-12 -548 V
-13 682 V
-12 273 V
-12 79 V
-13 -59 V
-12 -188 V
-12 -225 V
-13 39 V
-12 80 V
-13 -43 V
-12 -44 V
-12 184 V
-13 213 V
-12 127 V
-12 42 V
-13 -37 V
-12 -115 V
-12 -182 V
-13 -179 V
-12 -53 V
-13 12 V
-12 6 V
-12 20 V
-13 10 V
-12 -65 V
-12 -195 V
-13 -296 V
-12 56 V
-12 100 V
-13 -118 V
-12 -182 V
-13 253 V
-12 155 V
-12 -50 V
-13 -222 V
-12 21 V
-12 197 V
-13 7 V
-12 -194 V
-13 -77 V
-12 240 V
-12 73 V
-13 -132 V
-1.000 UL
-LT1
-LTb
-6311 4599 M
-(LPC synthesis filter) Rshow
-LT1
-6395 4599 M
-399 0 V
-630 4034 M
-12 0 V
-13 0 V
-12 1 V
-12 1 V
-13 1 V
-12 1 V
-13 1 V
-12 2 V
-12 2 V
-13 3 V
-12 2 V
-12 4 V
-13 3 V
-12 5 V
-13 4 V
-12 6 V
-12 6 V
-13 7 V
-12 8 V
-12 8 V
-13 10 V
-12 11 V
-12 11 V
-13 13 V
-12 15 V
-13 16 V
-12 17 V
-12 19 V
-13 21 V
-12 23 V
-12 25 V
-13 27 V
-12 29 V
-12 31 V
-13 32 V
-12 33 V
-13 33 V
-12 30 V
-12 26 V
-13 16 V
-12 4 V
-12 -11 V
-13 -26 V
-12 -38 V
-13 -49 V
-12 -54 V
-12 -56 V
-13 -58 V
-12 -57 V
-12 -55 V
-13 -53 V
-12 -52 V
-12 -49 V
-13 -47 V
-12 -45 V
-13 -44 V
-12 -41 V
-12 -40 V
-13 -38 V
-12 -37 V
-12 -35 V
-13 -35 V
-12 -33 V
-12 -31 V
-13 -31 V
-12 -30 V
-13 -29 V
-12 -28 V
-12 -27 V
-13 -26 V
-12 -26 V
-12 -24 V
-13 -25 V
-12 -23 V
-13 -23 V
-12 -22 V
-12 -22 V
-13 -21 V
-12 -20 V
-12 -20 V
-13 -20 V
-12 -19 V
-12 -19 V
-13 -18 V
-12 -17 V
-13 -18 V
-12 -17 V
-12 -16 V
-13 -16 V
-12 -16 V
-12 -15 V
-13 -15 V
-12 -15 V
-13 -14 V
-12 -14 V
-12 -14 V
-13 -13 V
-12 -13 V
-12 -13 V
-13 -12 V
-12 -13 V
-12 -11 V
-stroke
-1891 2822 M
-13 -12 V
-12 -11 V
-13 -11 V
-12 -11 V
-12 -11 V
-13 -10 V
-12 -10 V
-12 -10 V
-13 -10 V
-12 -9 V
-12 -9 V
-13 -9 V
-12 -8 V
-13 -9 V
-12 -8 V
-12 -8 V
-13 -8 V
-12 -7 V
-12 -8 V
-13 -7 V
-12 -7 V
-13 -7 V
-12 -6 V
-12 -6 V
-13 -7 V
-12 -6 V
-12 -5 V
-13 -6 V
-12 -5 V
-12 -6 V
-13 -5 V
-12 -5 V
-13 -4 V
-12 -5 V
-12 -4 V
-13 -5 V
-12 -4 V
-12 -4 V
-13 -3 V
-12 -4 V
-13 -3 V
-12 -4 V
-12 -3 V
-13 -3 V
-12 -2 V
-12 -3 V
-13 -3 V
-12 -2 V
-12 -2 V
-13 -2 V
-12 -2 V
-13 -2 V
-12 -2 V
-12 -1 V
-13 -2 V
-12 -1 V
-12 -1 V
-13 -2 V
-12 -1 V
-12 0 V
-13 -1 V
-12 -1 V
-13 0 V
-12 -1 V
-12 0 V
-13 0 V
-12 -1 V
-12 0 V
-13 0 V
-12 0 V
-13 0 V
-12 1 V
-12 0 V
-13 0 V
-12 1 V
-12 0 V
-13 1 V
-12 0 V
-12 1 V
-13 1 V
-12 0 V
-13 1 V
-12 1 V
-12 1 V
-13 0 V
-12 1 V
-12 1 V
-13 1 V
-12 1 V
-12 0 V
-13 1 V
-12 1 V
-13 1 V
-12 0 V
-12 1 V
-13 1 V
-12 0 V
-12 1 V
-13 1 V
-12 0 V
-13 1 V
-12 0 V
-12 0 V
-13 1 V
-stroke
-3178 2508 M
-12 0 V
-12 0 V
-13 0 V
-12 0 V
-12 0 V
-13 0 V
-12 0 V
-13 0 V
-12 0 V
-12 -1 V
-13 0 V
-12 -1 V
-12 0 V
-13 -1 V
-12 0 V
-13 -1 V
-12 -1 V
-12 0 V
-13 -1 V
-12 -1 V
-12 -1 V
-13 -1 V
-12 -1 V
-12 0 V
-13 -1 V
-12 -1 V
-13 -1 V
-12 -1 V
-12 -1 V
-13 -1 V
-12 -1 V
-12 -1 V
-13 -1 V
-12 -1 V
-12 0 V
-13 -1 V
-12 -1 V
-13 -1 V
-12 0 V
-12 -1 V
-13 0 V
-12 -1 V
-12 0 V
-13 0 V
-12 0 V
-13 0 V
-12 0 V
-12 0 V
-13 0 V
-12 0 V
-12 0 V
-13 1 V
-12 1 V
-12 0 V
-13 1 V
-12 1 V
-13 1 V
-12 2 V
-12 1 V
-13 1 V
-12 2 V
-12 2 V
-13 2 V
-12 2 V
-13 2 V
-12 3 V
-12 2 V
-13 3 V
-12 3 V
-12 3 V
-13 4 V
-12 3 V
-12 4 V
-13 4 V
-12 4 V
-13 4 V
-12 4 V
-12 5 V
-13 5 V
-12 5 V
-12 5 V
-13 6 V
-12 6 V
-12 6 V
-13 6 V
-12 6 V
-13 7 V
-12 7 V
-12 7 V
-13 8 V
-12 8 V
-12 8 V
-13 8 V
-12 9 V
-13 9 V
-12 9 V
-12 9 V
-13 10 V
-12 10 V
-12 11 V
-13 11 V
-12 11 V
-12 12 V
-13 12 V
-stroke
-4464 2759 M
-12 12 V
-13 13 V
-12 13 V
-12 14 V
-13 14 V
-12 15 V
-12 15 V
-13 16 V
-12 16 V
-12 17 V
-13 17 V
-12 18 V
-13 18 V
-12 19 V
-12 20 V
-13 21 V
-12 21 V
-12 22 V
-13 23 V
-12 23 V
-13 24 V
-12 26 V
-12 26 V
-13 26 V
-12 28 V
-12 28 V
-13 30 V
-12 29 V
-12 31 V
-13 30 V
-12 31 V
-13 30 V
-12 29 V
-12 27 V
-13 26 V
-12 22 V
-12 18 V
-13 13 V
-12 8 V
-13 2 V
-12 -3 V
-12 -9 V
-13 -13 V
-12 -16 V
-12 -20 V
-13 -21 V
-12 -23 V
-12 -24 V
-13 -23 V
-12 -24 V
-13 -23 V
-12 -23 V
-12 -22 V
-13 -21 V
-12 -21 V
-12 -20 V
-13 -18 V
-12 -18 V
-12 -17 V
-13 -16 V
-12 -16 V
-13 -14 V
-12 -14 V
-12 -13 V
-13 -13 V
-12 -11 V
-12 -11 V
-13 -11 V
-12 -10 V
-13 -9 V
-12 -8 V
-12 -8 V
-13 -8 V
-12 -6 V
-12 -7 V
-13 -6 V
-12 -5 V
-12 -5 V
-13 -4 V
-12 -4 V
-13 -4 V
-12 -3 V
-12 -3 V
-13 -2 V
-12 -2 V
-12 -2 V
-13 -1 V
-12 -1 V
-13 0 V
-12 0 V
-12 0 V
-13 0 V
-12 1 V
-12 1 V
-13 1 V
-12 2 V
-12 2 V
-13 2 V
-12 2 V
-13 2 V
-12 3 V
-12 3 V
-13 2 V
-12 3 V
-stroke
-5750 3038 M
-12 3 V
-13 3 V
-12 3 V
-12 3 V
-13 3 V
-12 2 V
-13 3 V
-12 2 V
-12 2 V
-13 2 V
-12 2 V
-12 1 V
-13 0 V
-12 1 V
-13 0 V
-12 -1 V
-12 -1 V
-13 -2 V
-12 -2 V
-12 -3 V
-13 -4 V
-12 -4 V
-12 -4 V
-13 -6 V
-12 -5 V
-13 -7 V
-12 -6 V
-12 -8 V
-13 -7 V
-12 -9 V
-12 -8 V
-13 -9 V
-12 -9 V
-12 -10 V
-13 -9 V
-12 -10 V
-13 -10 V
-12 -10 V
-12 -11 V
-13 -10 V
-12 -10 V
-12 -11 V
-13 -10 V
-12 -10 V
-13 -11 V
-12 -10 V
-12 -10 V
-13 -10 V
-12 -10 V
-12 -9 V
-13 -10 V
-12 -10 V
-12 -9 V
-13 -9 V
-12 -9 V
-13 -9 V
-12 -8 V
-12 -8 V
-13 -9 V
-12 -8 V
-12 -7 V
-13 -8 V
-12 -7 V
-13 -7 V
-12 -7 V
-12 -7 V
-13 -7 V
-12 -6 V
-12 -6 V
-13 -6 V
-12 -6 V
-12 -5 V
-13 -5 V
-12 -5 V
-13 -5 V
-12 -5 V
-12 -4 V
-13 -4 V
-12 -4 V
-12 -4 V
-13 -4 V
-12 -3 V
-12 -3 V
-13 -3 V
-12 -3 V
-13 -2 V
-12 -3 V
-12 -2 V
-13 -2 V
-12 -2 V
-12 -1 V
-13 -1 V
-12 -2 V
-13 0 V
-12 -1 V
-12 -1 V
-13 0 V
-1.000 UL
-LT2
-LTb
-6311 4459 M
-(Reference shaping) Rshow
-LT2
-6395 4459 M
-399 0 V
-630 3487 M
-12 0 V
-13 0 V
-12 1 V
-12 0 V
-13 1 V
-12 1 V
-13 1 V
-12 2 V
-12 1 V
-13 2 V
-12 2 V
-12 2 V
-13 2 V
-12 2 V
-13 3 V
-12 2 V
-12 3 V
-13 3 V
-12 3 V
-12 2 V
-13 4 V
-12 3 V
-12 3 V
-13 3 V
-12 3 V
-13 2 V
-12 3 V
-12 3 V
-13 2 V
-12 2 V
-12 1 V
-13 1 V
-12 1 V
-12 0 V
-13 0 V
-12 -2 V
-13 -2 V
-12 -2 V
-12 -4 V
-13 -4 V
-12 -6 V
-12 -6 V
-13 -7 V
-12 -8 V
-13 -8 V
-12 -10 V
-12 -10 V
-13 -11 V
-12 -12 V
-12 -12 V
-13 -13 V
-12 -13 V
-12 -14 V
-13 -14 V
-12 -14 V
-13 -15 V
-12 -15 V
-12 -15 V
-13 -15 V
-12 -15 V
-12 -15 V
-13 -14 V
-12 -15 V
-12 -15 V
-13 -15 V
-12 -14 V
-13 -14 V
-12 -15 V
-12 -13 V
-13 -14 V
-12 -14 V
-12 -13 V
-13 -13 V
-12 -13 V
-13 -12 V
-12 -12 V
-12 -12 V
-13 -12 V
-12 -12 V
-12 -11 V
-13 -11 V
-12 -11 V
-12 -10 V
-13 -10 V
-12 -10 V
-13 -10 V
-12 -10 V
-12 -9 V
-13 -9 V
-12 -9 V
-12 -9 V
-13 -8 V
-12 -8 V
-13 -8 V
-12 -8 V
-12 -8 V
-13 -7 V
-12 -7 V
-12 -7 V
-13 -7 V
-12 -6 V
-12 -7 V
-stroke
-1891 2847 M
-13 -6 V
-12 -6 V
-13 -6 V
-12 -5 V
-12 -6 V
-13 -5 V
-12 -5 V
-12 -5 V
-13 -5 V
-12 -5 V
-12 -4 V
-13 -5 V
-12 -4 V
-13 -4 V
-12 -4 V
-12 -4 V
-13 -4 V
-12 -3 V
-12 -4 V
-13 -3 V
-12 -3 V
-13 -3 V
-12 -3 V
-12 -3 V
-13 -2 V
-12 -3 V
-12 -2 V
-13 -3 V
-12 -2 V
-12 -2 V
-13 -2 V
-12 -2 V
-13 -2 V
-12 -1 V
-12 -2 V
-13 -1 V
-12 -2 V
-12 -1 V
-13 -1 V
-12 -1 V
-13 -2 V
-12 0 V
-12 -1 V
-13 -1 V
-12 -1 V
-12 -1 V
-13 0 V
-12 -1 V
-12 0 V
-13 0 V
-12 -1 V
-13 0 V
-12 0 V
-12 0 V
-13 0 V
-12 0 V
-12 0 V
-13 0 V
-12 0 V
-12 1 V
-13 0 V
-12 0 V
-13 1 V
-12 0 V
-12 0 V
-13 1 V
-12 0 V
-12 1 V
-13 1 V
-12 0 V
-13 1 V
-12 1 V
-12 0 V
-13 1 V
-12 1 V
-12 1 V
-13 0 V
-12 1 V
-12 1 V
-13 1 V
-12 1 V
-13 1 V
-12 0 V
-12 1 V
-13 1 V
-12 1 V
-12 1 V
-13 1 V
-12 1 V
-12 0 V
-13 1 V
-12 1 V
-13 1 V
-12 0 V
-12 1 V
-13 1 V
-12 1 V
-12 0 V
-13 1 V
-12 1 V
-13 0 V
-12 1 V
-12 0 V
-13 1 V
-stroke
-3178 2736 M
-12 0 V
-12 1 V
-13 0 V
-12 1 V
-12 0 V
-13 0 V
-12 1 V
-13 0 V
-12 0 V
-12 0 V
-13 1 V
-12 0 V
-12 0 V
-13 0 V
-12 0 V
-13 0 V
-12 0 V
-12 0 V
-13 0 V
-12 0 V
-12 0 V
-13 0 V
-12 0 V
-12 0 V
-13 0 V
-12 0 V
-13 0 V
-12 0 V
-12 0 V
-13 0 V
-12 0 V
-12 0 V
-13 0 V
-12 -1 V
-12 0 V
-13 0 V
-12 0 V
-13 0 V
-12 1 V
-12 0 V
-13 0 V
-12 0 V
-12 0 V
-13 0 V
-12 0 V
-13 1 V
-12 0 V
-12 0 V
-13 1 V
-12 0 V
-12 1 V
-13 1 V
-12 0 V
-12 1 V
-13 1 V
-12 1 V
-13 0 V
-12 1 V
-12 2 V
-13 1 V
-12 1 V
-12 1 V
-13 2 V
-12 1 V
-13 2 V
-12 1 V
-12 2 V
-13 2 V
-12 2 V
-12 2 V
-13 2 V
-12 3 V
-12 2 V
-13 3 V
-12 2 V
-13 3 V
-12 3 V
-12 3 V
-13 3 V
-12 3 V
-12 4 V
-13 3 V
-12 4 V
-12 4 V
-13 4 V
-12 4 V
-13 4 V
-12 5 V
-12 4 V
-13 5 V
-12 5 V
-12 5 V
-13 5 V
-12 5 V
-13 6 V
-12 6 V
-12 6 V
-13 6 V
-12 6 V
-12 6 V
-13 7 V
-12 6 V
-12 7 V
-13 7 V
-stroke
-4464 2918 M
-12 8 V
-13 7 V
-12 8 V
-12 7 V
-13 8 V
-12 8 V
-12 9 V
-13 8 V
-12 9 V
-12 8 V
-13 9 V
-12 9 V
-13 9 V
-12 9 V
-12 9 V
-13 9 V
-12 10 V
-12 9 V
-13 9 V
-12 10 V
-13 9 V
-12 9 V
-12 9 V
-13 9 V
-12 9 V
-12 8 V
-13 8 V
-12 8 V
-12 8 V
-13 7 V
-12 7 V
-13 6 V
-12 6 V
-12 6 V
-13 4 V
-12 5 V
-12 3 V
-13 3 V
-12 3 V
-13 1 V
-12 1 V
-12 1 V
-13 0 V
-12 -1 V
-12 -1 V
-13 -2 V
-12 -2 V
-12 -3 V
-13 -4 V
-12 -3 V
-13 -4 V
-12 -5 V
-12 -4 V
-13 -5 V
-12 -5 V
-12 -5 V
-13 -5 V
-12 -6 V
-12 -5 V
-13 -6 V
-12 -5 V
-13 -6 V
-12 -5 V
-12 -5 V
-13 -5 V
-12 -6 V
-12 -5 V
-13 -5 V
-12 -4 V
-13 -5 V
-12 -4 V
-12 -5 V
-13 -4 V
-12 -4 V
-12 -4 V
-13 -3 V
-12 -4 V
-12 -3 V
-13 -3 V
-12 -3 V
-13 -3 V
-12 -3 V
-12 -2 V
-13 -2 V
-12 -2 V
-12 -2 V
-13 -2 V
-12 -2 V
-13 -1 V
-12 -2 V
-12 -1 V
-13 -1 V
-12 -1 V
-12 -1 V
-13 -1 V
-12 0 V
-12 -1 V
-13 -1 V
-12 0 V
-13 -1 V
-12 0 V
-12 0 V
-13 -1 V
-12 0 V
-stroke
-5750 3036 M
-12 0 V
-13 -1 V
-12 0 V
-12 0 V
-13 -1 V
-12 0 V
-13 -1 V
-12 0 V
-12 -1 V
-13 -1 V
-12 0 V
-12 -1 V
-13 -1 V
-12 -2 V
-13 -1 V
-12 -1 V
-12 -2 V
-13 -1 V
-12 -2 V
-12 -2 V
-13 -2 V
-12 -3 V
-12 -2 V
-13 -3 V
-12 -2 V
-13 -3 V
-12 -3 V
-12 -3 V
-13 -4 V
-12 -3 V
-12 -4 V
-13 -3 V
-12 -4 V
-12 -4 V
-13 -4 V
-12 -4 V
-13 -4 V
-12 -4 V
-12 -5 V
-13 -4 V
-12 -4 V
-12 -5 V
-13 -4 V
-12 -5 V
-13 -4 V
-12 -5 V
-12 -5 V
-13 -4 V
-12 -5 V
-12 -4 V
-13 -5 V
-12 -4 V
-12 -4 V
-13 -5 V
-12 -4 V
-13 -4 V
-12 -5 V
-12 -4 V
-13 -4 V
-12 -4 V
-12 -4 V
-13 -4 V
-12 -4 V
-13 -3 V
-12 -4 V
-12 -4 V
-13 -3 V
-12 -3 V
-12 -4 V
-13 -3 V
-12 -3 V
-12 -3 V
-13 -3 V
-12 -3 V
-13 -2 V
-12 -3 V
-12 -2 V
-13 -3 V
-12 -2 V
-12 -2 V
-13 -2 V
-12 -2 V
-12 -2 V
-13 -1 V
-12 -2 V
-13 -1 V
-12 -2 V
-12 -1 V
-13 -1 V
-12 -1 V
-12 -1 V
-13 -1 V
-12 0 V
-13 -1 V
-12 0 V
-12 0 V
-13 -1 V
-1.000 UL
-LTb
-630 420 M
-6332 0 V
-0 4452 V
--6332 0 V
-630 420 L
-1.000 UP
-stroke
-grestore
-end
-showpage
-%%Trailer
-%%DocumentFonts: Helvetica
diff --git a/3rdparty/speex/doc/rtp.txt b/3rdparty/speex/doc/rtp.txt
deleted file mode 100644
index 1c251530..00000000
--- a/3rdparty/speex/doc/rtp.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-The Speex RTP payload is defined as a header, followed by any number of
-requests to the remote encoder and all encoded speech frames.
-
-+--------+----------+----------------+
-| Header | Requests | Speech data... |
-+--------+----------+----------------+
-
-The header contains only the number of frames sent
-encoded in 6 bits
-
- 0 1 2 3 4 5
-+-+-+-+-+-+-+
-| NB frames |
-+-+-+-+-+-+-+
-
-There can be any number of requests of the form
-
- 0 1 2 3 4 5 6 7 0 1
-+-+-+-+-+-+-+-+-+-+-+
-|R| ReqID | ReqVal |
-+-+-+-+-+-+-+-+-+-+-+
-
-where R is 1 when a request is following and 0 when there is no more
-request. Each request (if R=1) is composed of a 4-bit request ID (ReqID) and
-a 5-bit value (ReqVal)
-
-Possible values for ReqID are:
- 0: REQ_PERSIST ReqVal=1 for persistent requests/mode selection,
- 0 otherwise
- 1: PERSIST_ACK Acknowledge a REQ_PERSIST from the other end,
- ReqVal equals the value received
- 2: MODE Choose the encoder mode directly
- 3: QUALITY Choose the encoder quality
- 4: VBR Set VBR on (ReqVal=1) or off (ReqVal=2)
- 5: VBR_QUALITY Set the encoder quality for VBR mode
- 6: LOW_MODE Set the encoder mode for low-band (wideband only)
- 7: HIGH_MODE Set the encoder mode for high-band (wideband only)
-
-All requests should be considered at the receiver as a suggestion and
-compliance is not mandatory. The PERSIST_ACK should be sent upon receiving a
-REQ_PERSIST request to indicate that the request has been received.
-
-The speech data part contains speech frames one after the other. The size of
-the encoded frames can be found since the mode is directly encoded into each
-frame.
-
-For example, a frame where we request VBR to be on with quality 8 and we
-transmit two frames encoded at 8.35 kbps (167 bits/frame) will be:
-
- 0 1 2 3
- 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| NB=2 |1|ReqID=2| ReqVal=0|1|ReqID=3|ReqVal=8 |0| frame 1 |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| frame 1 |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| frame 1 |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| frame 1 |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| frame 1 |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| frame 1 |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-|end| frame 2 |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| frame 2 |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| frame 2 |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| frame 2 |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| frame 2 |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-| end frame 2 |P|P|P|P|P|P|
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
diff --git a/3rdparty/speex/doc/sampledec.c b/3rdparty/speex/doc/sampledec.c
deleted file mode 100644
index 2878c472..00000000
--- a/3rdparty/speex/doc/sampledec.c
+++ /dev/null
@@ -1,65 +0,0 @@
-#include <speex/speex.h>
-#include <stdio.h>
-
-/*The frame size in hardcoded for this sample code but it doesn't have to be*/
-#define FRAME_SIZE 160
-int main(int argc, char **argv)
-{
- char *outFile;
- FILE *fout;
- /*Holds the audio that will be written to file (16 bits per sample)*/
- short out[FRAME_SIZE];
- /*Speex handle samples as float, so we need an array of floats*/
- float output[FRAME_SIZE];
- char cbits[200];
- int nbBytes;
- /*Holds the state of the decoder*/
- void *state;
- /*Holds bits so they can be read and written to by the Speex routines*/
- SpeexBits bits;
- int i, tmp;
-
- /*Create a new decoder state in narrowband mode*/
- state = speex_decoder_init(&speex_nb_mode);
-
- /*Set the perceptual enhancement on*/
- tmp=1;
- speex_decoder_ctl(state, SPEEX_SET_ENH, &tmp);
-
- outFile = argv[1];
- fout = fopen(outFile, "w");
-
- /*Initialization of the structure that holds the bits*/
- speex_bits_init(&bits);
- while (1)
- {
- /*Read the size encoded by sampleenc, this part will likely be
- different in your application*/
- fread(&nbBytes, sizeof(int), 1, stdin);
- fprintf (stderr, "nbBytes: %d\n", nbBytes);
- if (feof(stdin))
- break;
-
- /*Read the "packet" encoded by sampleenc*/
- fread(cbits, 1, nbBytes, stdin);
- /*Copy the data into the bit-stream struct*/
- speex_bits_read_from(&bits, cbits, nbBytes);
-
- /*Decode the data*/
- speex_decode(state, &bits, output);
-
- /*Copy from float to short (16 bits) for output*/
- for (i=0;i<FRAME_SIZE;i++)
- out[i]=output[i];
-
- /*Write the decoded audio to file*/
- fwrite(out, sizeof(short), FRAME_SIZE, fout);
- }
-
- /*Destroy the decoder state*/
- speex_decoder_destroy(state);
- /*Destroy the bit-stream truct*/
- speex_bits_destroy(&bits);
- fclose(fout);
- return 0;
-}
diff --git a/3rdparty/speex/doc/sampleenc.c b/3rdparty/speex/doc/sampleenc.c
deleted file mode 100644
index d508181f..00000000
--- a/3rdparty/speex/doc/sampleenc.c
+++ /dev/null
@@ -1,64 +0,0 @@
-#include <speex/speex.h>
-#include <stdio.h>
-
-/*The frame size in hardcoded for this sample code but it doesn't have to be*/
-#define FRAME_SIZE 160
-int main(int argc, char **argv)
-{
- char *inFile;
- FILE *fin;
- short in[FRAME_SIZE];
- float input[FRAME_SIZE];
- char cbits[200];
- int nbBytes;
- /*Holds the state of the encoder*/
- void *state;
- /*Holds bits so they can be read and written to by the Speex routines*/
- SpeexBits bits;
- int i, tmp;
-
- /*Create a new encoder state in narrowband mode*/
- state = speex_encoder_init(&speex_nb_mode);
-
- /*Set the quality to 8 (15 kbps)*/
- tmp=8;
- speex_encoder_ctl(state, SPEEX_SET_QUALITY, &tmp);
-
- inFile = argv[1];
- fin = fopen(inFile, "r");
-
- /*Initialization of the structure that holds the bits*/
- speex_bits_init(&bits);
- while (1)
- {
- /*Read a 16 bits/sample audio frame*/
- fread(in, sizeof(short), FRAME_SIZE, fin);
- if (feof(fin))
- break;
- /*Copy the 16 bits values to float so Speex can work on them*/
- for (i=0;i<FRAME_SIZE;i++)
- input[i]=in[i];
-
- /*Flush all the bits in the struct so we can encode a new frame*/
- speex_bits_reset(&bits);
-
- /*Encode the frame*/
- speex_encode(state, input, &bits);
- /*Copy the bits to an array of char that can be written*/
- nbBytes = speex_bits_write(&bits, cbits, 200);
-
- /*Write the size of the frame first. This is what sampledec expects but
- it's likely to be different in your own application*/
- fwrite(&nbBytes, sizeof(int), 1, stdout);
- /*Write the compressed data*/
- fwrite(cbits, 1, nbBytes, stdout);
-
- }
-
- /*Destroy the encoder state*/
- speex_encoder_destroy(state);
- /*Destroy the bit-packing struct*/
- speex_bits_destroy(&bits);
- fclose(fin);
- return 0;
-}
diff --git a/3rdparty/speex/doc/speex_abs.eps b/3rdparty/speex/doc/speex_abs.eps
deleted file mode 100644
index 079c0719..00000000
--- a/3rdparty/speex/doc/speex_abs.eps
+++ /dev/null
@@ -1,3022 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%BoundingBox: 0 0 437 624
-%%Pages: 0
-%%Creator: Sun Microsystems, Inc.
-%%Title: none
-%%CreationDate: none
-%%LanguageLevel: 2
-%%EndComments
-%%BeginProlog
-%%BeginResource: SDRes
-/b4_inc_state save def
-/dict_count countdictstack def
-/op_count count 1 sub def
-userdict begin
-0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit[] 0 setdash newpath
-/languagelevel where {pop languagelevel 1 ne {false setstrokeadjust false setoverprint} if} if
-/bdef {bind def} bind def
-/c {setgray} bdef
-/l {neg lineto} bdef
-/rl {neg rlineto} bdef
-/lc {setlinecap} bdef
-/lj {setlinejoin} bdef
-/lw {setlinewidth} bdef
-/ml {setmiterlimit} bdef
-/ld {setdash} bdef
-/m {neg moveto} bdef
-/ct {6 2 roll neg 6 2 roll neg 6 2 roll neg curveto} bdef
-/r {rotate} bdef
-/t {neg translate} bdef
-/s {scale} bdef
-/sw {show} bdef
-/gs {gsave} bdef
-/gr {grestore} bdef
-/f {findfont dup length dict begin
-{1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def
-currentdict end /NFont exch definefont pop /NFont findfont} bdef
-/p {closepath} bdef
-/sf {scalefont setfont} bdef
-/ef {eofill}bdef
-/pc {closepath stroke}bdef
-/ps {stroke}bdef
-/pum {matrix currentmatrix}bdef
-/pom {setmatrix}bdef
-/bs {/aString exch def /nXOfs exch def /nWidth exch def currentpoint nXOfs 0 rmoveto pum nWidth aString stringwidth pop div 1 scale aString show pom moveto} bdef
-%%EndResource
-%%EndProlog
-%%BeginSetup
-%%EndSetup
-%%Page: 1 1
-%%BeginPageSetup
-%%EndPageSetup
-pum
-0.02834 0.02834 s
-0 -22011 t
-/tm matrix currentmatrix def
-tm setmatrix
--2435 -3035 t
-1 1 s
-50 lw 1 lj 0.000 c 4385 7335 m 3135 7335 l 3135 5835 l 5635 5835 l 5635 7335 l
-4385 7335 l pc
-4385 10135 m 3971 10135 3635 9799 3635 9385 ct 3635 8971 3971 8635 4385 8635 ct
-4799 8635 5135 8971 5135 9385 ct 5135 9799 4799 10135 4385 10135 ct pc
-gs
-gs
-pum
-4102 9722 t
-246 -115 m 246 -309 l 54 -309 l 54 -390 l 246 -390 l 246 -582 l 328 -582 l
-328 -390 l 520 -390 l 520 -309 l 328 -309 l 328 -115 l 246 -115 l
-p ef
-pom
-gr
-gr
-gs
-gs
-pum
-3626 3671 t
-181 -260 m 181 -260 181 -260 181 -174 ct 181 -174 181 -174 171 -174 ct 164 -201 155 -220 145 -229 ct
-134 -239 120 -244 103 -244 ct 91 -244 80 -241 73 -234 ct 65 -227 61 -219 61 -211 ct
-61 -201 64 -192 70 -185 ct 75 -177 87 -169 104 -161 ct 104 -161 104 -161 144 -141 ct
-181 -123 200 -99 200 -69 ct 200 -47 191 -28 174 -14 ct 157 0 138 7 116 7 ct 101 7 83 4 64 -1 ct
-58 -2 53 -3 49 -3 ct 45 -3 41 -1 39 3 ct 39 3 39 3 29 3 ct 29 3 29 3 29 -87 ct 29 -87 29 -87 39 -87 ct
-44 -61 54 -42 68 -29 ct 83 -16 99 -9 116 -9 ct 129 -9 139 -13 147 -20 ct 155 -28 159 -37 159 -47 ct
-159 -60 155 -70 146 -79 ct 137 -88 119 -98 93 -111 ct 66 -124 48 -136 40 -147 ct
-32 -157 28 -171 28 -187 ct 28 -208 35 -225 49 -239 ct 63 -253 82 -260 104 -260 ct
-114 -260 126 -258 140 -254 ct 149 -251 155 -250 158 -250 ct 161 -250 164 -251 165 -252 ct
-167 -253 169 -256 171 -260 ct 171 -260 171 -260 181 -260 ct p ef
-220 -228 m 220 -228 220 -228 298 -259 ct 298 -259 298 -259 309 -259 ct 309 -259 309 -259 309 -201 ct
-322 -223 335 -238 348 -247 ct 361 -256 375 -260 389 -260 ct 414 -260 435 -250 452 -230 ct
-473 -206 483 -175 483 -136 ct 483 -92 471 -56 446 -28 ct 425 -5 400 7 369 7 ct
-355 7 343 5 334 1 ct 326 -2 318 -7 309 -16 ct 309 -16 309 -16 309 63 ct 309 80 310 91 312 96 ct
-314 100 318 104 323 107 ct 329 110 338 111 352 111 ct 352 111 352 111 352 121 ct
-352 121 352 121 217 121 ct 217 121 217 121 217 111 ct 217 111 217 111 224 111 ct
-234 111 243 109 251 105 ct 254 103 257 100 259 95 ct 261 91 262 79 262 61 ct 262 61 262 61 262 -179 ct
-262 -195 261 -205 260 -209 ct 258 -213 256 -216 253 -219 ct 250 -221 245 -222 240 -222 ct
-236 -222 230 -221 223 -218 ct 223 -218 223 -218 220 -228 ct p
-309 -185 m 309 -185 309 -185 309 -90 ct 309 -70 310 -57 311 -50 ct 314 -40 320 -30 330 -22 ct
-340 -14 353 -10 368 -10 ct 386 -10 401 -17 412 -31 ct 427 -50 434 -77 434 -111 ct
-434 -149 426 -179 409 -200 ct 397 -214 383 -221 367 -221 ct 359 -221 350 -219 341 -214 ct
-335 -211 324 -201 309 -185 ct p ef
-564 -158 m 564 -121 573 -92 591 -71 ct 609 -50 630 -39 655 -39 ct 671 -39 686 -43 698 -52 ct
-710 -61 720 -77 728 -99 ct 728 -99 728 -99 737 -94 ct 733 -68 722 -45 703 -24 ct
-685 -3 662 7 634 7 ct 604 7 578 -5 556 -28 ct 535 -52 524 -83 524 -123 ct 524 -166 535 -200 557 -224 ct
-579 -248 607 -260 640 -260 ct 668 -260 692 -251 710 -232 ct 728 -214 737 -189 737 -158 ct
-737 -158 737 -158 564 -158 ct p
-564 -174 m 564 -174 564 -174 680 -174 ct 679 -190 677 -201 674 -208 ct 670 -218 663 -226 654 -231 ct
-645 -237 635 -240 626 -240 ct 610 -240 597 -234 585 -223 ct 573 -211 566 -195 564 -174 ct
-p ef
-814 -158 m 814 -121 823 -92 841 -71 ct 859 -50 880 -39 905 -39 ct 921 -39 936 -43 948 -52 ct
-960 -61 970 -77 978 -99 ct 978 -99 978 -99 987 -94 ct 983 -68 972 -45 953 -24 ct
-935 -3 912 7 884 7 ct 854 7 828 -5 806 -28 ct 785 -52 774 -83 774 -123 ct 774 -166 785 -200 807 -224 ct
-829 -248 857 -260 890 -260 ct 918 -260 942 -251 960 -232 ct 978 -214 987 -189 987 -158 ct
-987 -158 987 -158 814 -158 ct p
-814 -174 m 814 -174 814 -174 930 -174 ct 929 -190 927 -201 924 -208 ct 920 -218 913 -226 904 -231 ct
-895 -237 885 -240 876 -240 ct 860 -240 847 -234 835 -223 ct 823 -211 816 -195 814 -174 ct
-p ef
-1236 -95 m 1229 -62 1216 -37 1196 -19 ct 1176 -2 1154 7 1130 7 ct 1101 7 1076 -5 1055 -29 ct
-1034 -53 1023 -85 1023 -126 ct 1023 -166 1035 -198 1058 -223 ct 1082 -248 1111 -260 1144 -260 ct
-1169 -260 1189 -253 1205 -240 ct 1221 -227 1229 -214 1229 -199 ct 1229 -192 1227 -187 1222 -182 ct
-1218 -178 1211 -176 1203 -176 ct 1193 -176 1185 -180 1179 -187 ct 1176 -190 1174 -198 1173 -209 ct
-1172 -220 1168 -228 1161 -234 ct 1155 -239 1146 -242 1135 -242 ct 1116 -242 1102 -235 1090 -222 ct
-1075 -204 1068 -180 1068 -150 ct 1068 -120 1075 -94 1090 -71 ct 1105 -48 1125 -36 1150 -36 ct
-1168 -36 1184 -42 1199 -54 ct 1209 -62 1218 -77 1228 -99 ct 1228 -99 1228 -99 1236 -95 ct
-p ef
-1345 -392 m 1345 -392 1345 -392 1345 -208 ct 1365 -230 1381 -244 1393 -251 ct
-1405 -257 1417 -260 1429 -260 ct 1443 -260 1456 -256 1466 -248 ct 1476 -240 1484 -228 1489 -211 ct
-1492 -199 1494 -178 1494 -146 ct 1494 -146 1494 -146 1494 -57 ct 1494 -41 1495 -30 1498 -24 ct
-1500 -20 1503 -16 1507 -14 ct 1511 -11 1519 -10 1531 -10 ct 1531 -10 1531 -10 1531 0 ct
-1531 0 1531 0 1407 0 ct 1407 0 1407 0 1407 -10 ct 1407 -10 1407 -10 1413 -10 ct
-1425 -10 1433 -12 1437 -15 ct 1442 -19 1445 -24 1447 -31 ct 1448 -34 1448 -43 1448 -57 ct
-1448 -57 1448 -57 1448 -147 ct 1448 -174 1447 -192 1444 -201 ct 1441 -210 1436 -216 1430 -221 ct
-1424 -225 1417 -227 1408 -227 ct 1399 -227 1389 -225 1380 -220 ct 1370 -215 1359 -205 1345 -191 ct
-1345 -191 1345 -191 1345 -57 ct 1345 -40 1346 -29 1348 -25 ct 1350 -21 1353 -17 1359 -14 ct
-1364 -11 1373 -10 1386 -10 ct 1386 -10 1386 -10 1386 0 ct 1386 0 1386 0 1262 0 ct
-1262 0 1262 0 1262 -10 ct 1273 -10 1281 -12 1287 -15 ct 1291 -17 1294 -21 1296 -26 ct
-1298 -31 1299 -41 1299 -57 ct 1299 -57 1299 -57 1299 -286 ct 1299 -314 1298 -332 1297 -338 ct
-1296 -345 1294 -349 1291 -352 ct 1288 -354 1284 -355 1279 -355 ct 1276 -355 1269 -354 1261 -351 ct
-1261 -351 1261 -351 1257 -361 ct 1257 -361 1257 -361 1332 -392 ct 1332 -392 1332 -392 1345 -392 ct
-p ef
-pom
-gr
-gs
-pum
-3255 4298 t
-181 -260 m 181 -260 181 -260 181 -174 ct 181 -174 181 -174 171 -174 ct 164 -201 155 -220 145 -229 ct
-134 -239 120 -244 103 -244 ct 91 -244 80 -241 73 -234 ct 65 -227 61 -219 61 -211 ct
-61 -201 64 -192 70 -185 ct 75 -177 87 -169 104 -161 ct 104 -161 104 -161 144 -141 ct
-181 -123 200 -99 200 -69 ct 200 -47 191 -28 174 -14 ct 157 0 138 7 116 7 ct 101 7 83 4 64 -1 ct
-58 -2 53 -3 49 -3 ct 45 -3 41 -1 39 3 ct 39 3 39 3 29 3 ct 29 3 29 3 29 -87 ct 29 -87 29 -87 39 -87 ct
-44 -61 54 -42 68 -29 ct 83 -16 99 -9 116 -9 ct 129 -9 139 -13 147 -20 ct 155 -28 159 -37 159 -47 ct
-159 -60 155 -70 146 -79 ct 137 -88 119 -98 93 -111 ct 66 -124 48 -136 40 -147 ct
-32 -157 28 -171 28 -187 ct 28 -208 35 -225 49 -239 ct 63 -253 82 -260 104 -260 ct
-114 -260 126 -258 140 -254 ct 149 -251 155 -250 158 -250 ct 161 -250 164 -251 165 -252 ct
-167 -253 169 -256 171 -260 ct 171 -260 171 -260 181 -260 ct p ef
-459 -253 m 459 -253 459 -253 459 -99 ct 459 -70 460 -53 461 -47 ct 462 -40 465 -36 468 -33 ct
-471 -31 474 -29 478 -29 ct 484 -29 490 -31 497 -34 ct 497 -34 497 -34 501 -24 ct
-501 -24 501 -24 426 7 ct 426 7 426 7 414 7 ct 414 7 414 7 414 -46 ct 392 -23 376 -8 364 -2 ct
-353 4 341 7 328 7 ct 314 7 301 3 291 -5 ct 280 -14 273 -24 269 -37 ct 265 -50 263 -68 263 -92 ct
-263 -92 263 -92 263 -205 ct 263 -217 262 -225 259 -229 ct 257 -234 253 -237 248 -240 ct
-243 -242 233 -243 220 -243 ct 220 -243 220 -243 220 -253 ct 220 -253 220 -253 309 -253 ct
-309 -253 309 -253 309 -84 ct 309 -60 313 -44 321 -37 ct 330 -30 339 -26 351 -26 ct
-359 -26 368 -28 378 -33 ct 388 -38 400 -48 414 -62 ct 414 -62 414 -62 414 -205 ct
-414 -220 411 -230 406 -235 ct 401 -240 390 -243 373 -243 ct 373 -243 373 -243 373 -253 ct
-373 -253 373 -253 459 -253 ct p ef
-591 -209 m 615 -243 642 -260 670 -260 ct 696 -260 718 -249 737 -227 ct 756 -205 766 -175 766 -136 ct
-766 -92 751 -56 721 -28 ct 696 -5 667 7 636 7 ct 621 7 607 4 591 -1 ct 576 -6 561 -14 545 -25 ct
-545 -25 545 -25 545 -286 ct 545 -314 544 -332 543 -338 ct 542 -345 539 -349 536 -352 ct
-533 -354 530 -355 525 -355 ct 520 -355 514 -354 506 -351 ct 506 -351 506 -351 502 -361 ct
-502 -361 502 -361 578 -392 ct 578 -392 578 -392 591 -392 ct 591 -392 591 -392 591 -209 ct
-p
-591 -192 m 591 -192 591 -192 591 -41 ct 600 -32 610 -25 620 -20 ct 630 -15 640 -13 650 -13 ct
-667 -13 682 -22 697 -41 ct 711 -59 718 -86 718 -121 ct 718 -153 711 -178 697 -195 ct
-682 -212 666 -221 648 -221 ct 638 -221 629 -219 619 -214 ct 612 -210 602 -203 591 -192 ct
-p ef
-810 -148 m 953 -148 l 953 -106 l 810 -106 l 810 -148 l p ef
-1091 -233 m 1091 -233 1091 -233 1091 -67 ct 1091 -43 1094 -28 1099 -22 ct 1106 -14 1115 -10 1126 -10 ct
-1126 -10 1126 -10 1149 -10 ct 1149 -10 1149 -10 1149 0 ct 1149 0 1149 0 998 0 ct
-998 0 998 0 998 -10 ct 998 -10 998 -10 1009 -10 ct 1017 -10 1023 -12 1029 -16 ct
-1035 -19 1039 -24 1042 -30 ct 1044 -37 1045 -49 1045 -67 ct 1045 -67 1045 -67 1045 -233 ct
-1045 -233 1045 -233 996 -233 ct 996 -233 996 -233 996 -253 ct 996 -253 996 -253 1045 -253 ct
-1045 -253 1045 -253 1045 -270 ct 1045 -295 1049 -316 1057 -334 ct 1065 -351 1078 -365 1094 -376 ct
-1111 -387 1130 -392 1151 -392 ct 1170 -392 1188 -386 1204 -373 ct 1215 -365 1220 -355 1220 -345 ct
-1220 -340 1218 -334 1213 -329 ct 1208 -324 1203 -322 1197 -322 ct 1193 -322 1189 -324 1184 -327 ct
-1179 -330 1174 -336 1167 -346 ct 1160 -356 1154 -363 1148 -367 ct 1142 -370 1136 -372 1129 -372 ct
-1121 -372 1113 -370 1108 -365 ct 1102 -361 1097 -354 1095 -344 ct 1092 -335 1091 -310 1091 -271 ct
-1091 -271 1091 -271 1091 -253 ct 1091 -253 1091 -253 1156 -253 ct 1156 -253 1156 -253 1156 -233 ct
-1156 -233 1156 -233 1091 -233 ct p ef
-1256 -260 m 1256 -260 1256 -260 1256 -203 ct 1277 -241 1299 -260 1321 -260 ct
-1331 -260 1339 -257 1346 -251 ct 1353 -245 1356 -238 1356 -230 ct 1356 -222 1354 -216 1349 -211 ct
-1344 -206 1338 -204 1332 -204 ct 1325 -204 1318 -207 1310 -214 ct 1302 -220 1296 -223 1292 -223 ct
-1289 -223 1285 -221 1282 -217 ct 1273 -210 1265 -198 1256 -180 ct 1256 -180 1256 -180 1256 -59 ct
-1256 -45 1258 -34 1261 -27 ct 1264 -22 1268 -18 1274 -15 ct 1280 -12 1289 -10 1301 -10 ct
-1301 -10 1301 -10 1301 0 ct 1301 0 1301 0 1169 0 ct 1169 0 1169 0 1169 -10 ct 1182 -10 1192 -12 1199 -16 ct
-1203 -19 1207 -24 1209 -30 ct 1210 -33 1210 -42 1210 -57 ct 1210 -57 1210 -57 1210 -154 ct
-1210 -184 1209 -201 1208 -207 ct 1207 -213 1205 -217 1202 -219 ct 1199 -222 1195 -223 1190 -223 ct
-1184 -223 1178 -222 1171 -219 ct 1171 -219 1171 -219 1168 -229 ct 1168 -229 1168 -229 1244 -260 ct
-1244 -260 1244 -260 1256 -260 ct p ef
-1511 -37 m 1485 -17 1469 -5 1462 -2 ct 1452 3 1442 5 1430 5 ct 1413 5 1398 -1 1387 -13 ct
-1376 -25 1370 -40 1370 -60 ct 1370 -72 1373 -83 1378 -92 ct 1386 -104 1399 -116 1418 -127 ct
-1436 -138 1468 -151 1511 -167 ct 1511 -167 1511 -167 1511 -177 ct 1511 -202 1507 -219 1499 -228 ct
-1491 -237 1480 -242 1464 -242 ct 1453 -242 1444 -239 1437 -233 ct 1430 -226 1426 -219 1426 -211 ct
-1426 -211 1426 -211 1427 -195 ct 1427 -187 1425 -180 1420 -176 ct 1416 -171 1410 -169 1403 -169 ct
-1397 -169 1391 -171 1387 -176 ct 1382 -181 1380 -188 1380 -196 ct 1380 -212 1388 -227 1404 -240 ct
-1420 -253 1443 -260 1472 -260 ct 1494 -260 1513 -256 1527 -249 ct 1538 -243 1546 -234 1551 -222 ct
-1554 -214 1556 -198 1556 -174 ct 1556 -174 1556 -174 1556 -89 ct 1556 -65 1556 -50 1557 -45 ct
-1558 -39 1560 -36 1562 -34 ct 1564 -32 1566 -31 1569 -31 ct 1572 -31 1575 -32 1577 -33 ct
-1581 -35 1588 -42 1599 -53 ct 1599 -53 1599 -53 1599 -38 ct 1579 -10 1559 4 1541 4 ct
-1532 4 1524 1 1519 -5 ct 1514 -11 1511 -22 1511 -37 ct p
-1511 -54 m 1511 -54 1511 -54 1511 -149 ct 1483 -138 1465 -130 1457 -126 ct
-1442 -118 1432 -110 1425 -101 ct 1419 -92 1416 -83 1416 -72 ct 1416 -59 1420 -49 1428 -40 ct
-1436 -31 1445 -27 1455 -27 ct 1470 -27 1488 -36 1511 -54 ct p ef
-1693 -206 m 1711 -225 1722 -235 1725 -238 ct 1734 -245 1742 -250 1752 -254 ct
-1762 -258 1771 -260 1780 -260 ct 1796 -260 1810 -255 1821 -246 ct 1832 -237 1840 -224 1844 -206 ct
-1863 -228 1879 -243 1892 -250 ct 1905 -257 1918 -260 1932 -260 ct 1945 -260 1957 -257 1967 -250 ct
-1978 -243 1986 -232 1992 -216 ct 1996 -205 1998 -188 1998 -166 ct 1998 -166 1998 -166 1998 -57 ct
-1998 -41 1999 -30 2001 -25 ct 2003 -21 2007 -17 2011 -14 ct 2016 -11 2024 -10 2035 -10 ct
-2035 -10 2035 -10 2035 0 ct 2035 0 2035 0 1911 0 ct 1911 0 1911 0 1911 -10 ct 1911 -10 1911 -10 1916 -10 ct
-1927 -10 1936 -12 1942 -16 ct 1946 -19 1949 -24 1951 -30 ct 1952 -33 1952 -42 1952 -57 ct
-1952 -57 1952 -57 1952 -166 ct 1952 -186 1950 -201 1945 -209 ct 1937 -221 1926 -227 1910 -227 ct
-1901 -227 1891 -225 1881 -220 ct 1871 -215 1859 -206 1846 -193 ct 1846 -193 1846 -193 1845 -189 ct
-1845 -189 1845 -189 1846 -178 ct 1846 -178 1846 -178 1846 -57 ct 1846 -40 1847 -29 1849 -25 ct
-1851 -21 1854 -17 1860 -14 ct 1865 -11 1874 -10 1887 -10 ct 1887 -10 1887 -10 1887 0 ct
-1887 0 1887 0 1759 0 ct 1759 0 1759 0 1759 -10 ct 1773 -10 1783 -12 1788 -15 ct
-1793 -18 1797 -23 1799 -30 ct 1800 -33 1800 -42 1800 -57 ct 1800 -57 1800 -57 1800 -166 ct
-1800 -186 1797 -201 1791 -210 ct 1783 -221 1772 -227 1757 -227 ct 1747 -227 1738 -224 1728 -219 ct
-1713 -211 1701 -202 1693 -193 ct 1693 -193 1693 -193 1693 -57 ct 1693 -41 1694 -30 1696 -25 ct
-1699 -20 1702 -16 1707 -14 ct 1711 -11 1720 -10 1734 -10 ct 1734 -10 1734 -10 1734 0 ct
-1734 0 1734 0 1610 0 ct 1610 0 1610 0 1610 -10 ct 1621 -10 1629 -11 1633 -14 ct
-1638 -16 1641 -20 1644 -26 ct 1646 -31 1647 -41 1647 -57 ct 1647 -57 1647 -57 1647 -154 ct
-1647 -182 1646 -199 1645 -207 ct 1643 -213 1641 -217 1639 -220 ct 1636 -222 1632 -223 1627 -223 ct
-1622 -223 1616 -222 1609 -219 ct 1609 -219 1609 -219 1605 -229 ct 1605 -229 1605 -229 1681 -260 ct
-1681 -260 1681 -260 1693 -260 ct 1693 -260 1693 -260 1693 -206 ct p ef
-2088 -158 m 2088 -121 2097 -92 2115 -71 ct 2133 -50 2154 -39 2179 -39 ct 2195 -39 2210 -43 2222 -52 ct
-2234 -61 2244 -77 2252 -99 ct 2252 -99 2252 -99 2261 -94 ct 2257 -68 2246 -45 2227 -24 ct
-2209 -3 2186 7 2158 7 ct 2128 7 2102 -5 2080 -28 ct 2059 -52 2048 -83 2048 -123 ct
-2048 -166 2059 -200 2081 -224 ct 2103 -248 2131 -260 2164 -260 ct 2192 -260 2216 -251 2234 -232 ct
-2252 -214 2261 -189 2261 -158 ct 2261 -158 2261 -158 2088 -158 ct p
-2088 -174 m 2088 -174 2088 -174 2204 -174 ct 2203 -190 2201 -201 2198 -208 ct
-2194 -218 2187 -226 2178 -231 ct 2169 -237 2159 -240 2150 -240 ct 2134 -240 2121 -234 2109 -223 ct
-2097 -211 2090 -195 2088 -174 ct p ef
-pom
-gr
-gr
-4385 5835 m 4198 5273 l 4573 5273 l 4385 5835 l p ef
-4410 4535 m 4410 5385 l 4360 5385 l 4360 4535 l 4410 4535 l p ef
-4384 8635 m 4197 8073 l 4572 8073 l 4384 8635 l p ef
-4410 7335 m 4410 7985 l 4385 7985 l 4360 7985 l 4360 7335 l 4385 7335 l
-4410 7335 l p ef
-4385 7985 m 4410 7985 l 4410 7989 l 4408 7994 l 4407 7997 l 4404 8001 l
-4401 8004 l 4398 8007 l 4394 8008 l 4389 8010 l 4385 8010 l 4385 8010 l
-4385 7985 l p ef
-4385 8010 m 4384 8010 l 4384 7985 l 4384 7960 l 4385 7960 l 4385 7985 l
-4385 8010 l p ef
-4384 7985 m 4359 7985 l 4359 7981 l 4361 7976 l 4362 7973 l 4365 7969 l
-4368 7966 l 4371 7963 l 4375 7962 l 4380 7960 l 4384 7960 l 4384 7960 l
-4384 7985 l p ef
-4409 7985 m 4409 8185 l 4384 8185 l 4359 8185 l 4359 7985 l 4384 7985 l
-4409 7985 l p ef
-gs
-7170 8666 m 8954 8666 l 8954 10294 l 7170 10294 l 7170 8666 l eoclip newpath
-gs
-tm setmatrix
-4736 5636 t
-1 1 s
-gs
-gs
-0 0 m 1784 0 l 1784 1628 l 0 1628 l 0 0 l eoclip newpath
-gs
-pum
-159 556 t
-86 9 m 86 9 86 9 122 -341 ct 124 -355 124 -365 124 -373 ct 124 -385 121 -394 114 -400 ct
-107 -406 95 -410 77 -410 ct 77 -410 77 -410 81 -421 ct 81 -421 81 -421 237 -421 ct
-237 -421 237 -421 234 -410 ct 213 -410 198 -406 191 -399 ct 183 -391 177 -372 175 -341 ct
-175 -341 175 -341 151 -113 ct 151 -113 151 -113 311 -361 ct 311 -365 311 -369 311 -371 ct
-311 -383 308 -392 301 -398 ct 294 -405 279 -409 257 -410 ct 257 -410 257 -410 259 -421 ct
-259 -421 259 -421 430 -421 ct 430 -421 430 -421 426 -410 ct 407 -410 393 -408 387 -405 ct
-382 -403 377 -399 374 -394 ct 371 -389 368 -380 366 -368 ct 365 -364 363 -340 358 -296 ct
-354 -251 347 -190 338 -113 ct 338 -113 338 -113 472 -317 ct 486 -339 496 -354 499 -363 ct
-503 -372 505 -380 505 -386 ct 505 -392 502 -397 497 -401 ct 492 -406 484 -409 472 -410 ct
-472 -410 472 -410 474 -421 ct 474 -421 474 -421 599 -421 ct 599 -421 599 -421 596 -410 ct
-585 -409 575 -406 567 -402 ct 558 -397 548 -389 537 -376 ct 530 -368 516 -349 496 -317 ct
-496 -317 496 -317 284 9 ct 284 9 284 9 273 9 ct 273 9 273 9 307 -317 ct 307 -317 307 -317 97 9 ct
-97 9 97 9 86 9 ct p ef
-pom
-gr
-gs
-pum
-847 556 t
-168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
-98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
-89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
-p ef
-pom
-gr
-gs
-pum
-1138 556 t
-54 -273 m 54 -273 54 -273 249 -273 ct 249 -273 249 -273 249 -265 ct 249 -265 249 -265 35 -42 ct
-35 -42 35 -42 125 -42 ct 147 -42 161 -43 166 -44 ct 172 -46 178 -50 183 -55 ct
-187 -60 193 -70 199 -84 ct 199 -84 199 -84 210 -84 ct 210 -84 210 -84 183 0 ct
-183 0 183 0 -18 0 ct -18 0 -18 0 -18 -9 ct -18 -9 -18 -9 196 -232 ct 196 -232 196 -232 109 -232 ct
-90 -232 78 -232 74 -231 ct 68 -229 63 -226 57 -221 ct 51 -216 45 -208 39 -196 ct
-39 -196 39 -196 28 -196 ct 28 -196 28 -196 54 -273 ct p ef
-pom
-gr
-gs
-pum
-1429 556 t
-33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
-86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
-143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
-33 131 33 131 33 116 ct p ef
-pom
-gr
-gs
-132 767 m 1521 0 rl 0 31 rl 1521 neg 0 rl ef p ef
-
-gr
-gs
-pum
-370 1323 t
-208 -345 m 197 -344 l 113 -410 l 25 -342 l 11 -345 l 113 -462 l 208 -345 l
-p ef
-pom
-gr
-gs
-pum
-318 1455 t
-328 -430 m 328 -430 328 -430 296 -80 ct 294 -64 294 -53 294 -48 ct 294 -40 295 -33 298 -29 ct
-302 -23 307 -18 314 -15 ct 321 -12 332 -11 348 -11 ct 348 -11 348 -11 345 0 ct
-345 0 345 0 180 0 ct 180 0 180 0 184 -11 ct 184 -11 184 -11 191 -11 ct 204 -11 215 -14 224 -20 ct
-230 -24 234 -30 238 -39 ct 240 -46 242 -61 244 -85 ct 244 -85 244 -85 249 -138 ct
-249 -138 249 -138 128 -138 ct 128 -138 128 -138 86 -80 ct 76 -67 70 -57 67 -52 ct
-65 -46 64 -41 64 -36 ct 64 -29 66 -24 72 -19 ct 77 -14 86 -11 98 -11 ct 98 -11 98 -11 95 0 ct
-95 0 95 0 -30 0 ct -30 0 -30 0 -27 -11 ct -12 -12 2 -17 14 -26 ct 25 -36 43 -57 66 -88 ct
-66 -88 66 -88 317 -430 ct 317 -430 317 -430 328 -430 ct p
-268 -327 m 144 -159 l 251 -159 l 268 -327 l p ef
-pom
-gr
-gs
-pum
-767 1455 t
-168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
-98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
-89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
-p ef
-pom
-gr
-gs
-pum
-1032 1455 t
-54 -273 m 54 -273 54 -273 249 -273 ct 249 -273 249 -273 249 -265 ct 249 -265 249 -265 35 -42 ct
-35 -42 35 -42 125 -42 ct 147 -42 161 -43 166 -44 ct 172 -46 178 -50 183 -55 ct
-187 -60 193 -70 199 -84 ct 199 -84 199 -84 210 -84 ct 210 -84 210 -84 183 0 ct
-183 0 183 0 -18 0 ct -18 0 -18 0 -18 -9 ct -18 -9 -18 -9 196 -232 ct 196 -232 196 -232 109 -232 ct
-90 -232 78 -232 74 -231 ct 68 -229 63 -226 57 -221 ct 51 -216 45 -208 39 -196 ct
-39 -196 39 -196 28 -196 ct 28 -196 28 -196 54 -273 ct p ef
-pom
-gr
-gs
-pum
-1349 1455 t
-33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
-86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
-143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
-33 131 33 131 33 116 ct p ef
-pom
-gr
-gr
-gr
-gr
-gr
-8085 10285 m 7035 10285 l 7035 8485 l 9135 8485 l 9135 10285 l 8085 10285 l
-pc
-5135 9384 m 5698 9197 l 5698 9572 l 5135 9384 l p ef
-7035 9410 m 6085 9410 l 6085 9385 l 6085 9360 l 7035 9360 l 7035 9385 l
-7035 9410 l p ef
-6085 9385 m 6085 9410 l 6081 9410 l 6076 9408 l 6073 9407 l 6069 9404 l
-6066 9401 l 6063 9398 l 6062 9394 l 6060 9389 l 6060 9385 l 6060 9385 l
-6085 9385 l p ef
-6060 9385 m 6060 9384 l 6085 9384 l 6110 9384 l 6110 9385 l 6085 9385 l
-6060 9385 l p ef
-6085 9384 m 6085 9359 l 6089 9359 l 6094 9361 l 6097 9362 l 6101 9365 l
-6104 9368 l 6107 9371 l 6108 9375 l 6110 9380 l 6110 9384 l 6110 9384 l
-6085 9384 l p ef
-6085 9409 m 5585 9409 l 5585 9384 l 5585 9359 l 6085 9359 l 6085 9384 l
-6085 9409 l p ef
-4385 12536 m 3971 12536 3635 12200 3635 11786 ct 3635 11372 3971 11036 4385 11036 ct
-4799 11036 5135 11372 5135 11786 ct 5135 12200 4799 12536 4385 12536 ct pc
-gs
-gs
-pum
-4102 12130 t
-246 -115 m 246 -309 l 54 -309 l 54 -390 l 246 -390 l 246 -582 l 328 -582 l
-328 -390 l 520 -390 l 520 -309 l 328 -309 l 328 -115 l 246 -115 l
-p ef
-pom
-gr
-gr
-gs
-7170 11067 m 8954 11067 l 8954 12695 l 7170 12695 l 7170 11067 l eoclip newpath
-gs
-tm setmatrix
-4736 8043 t
-1 1 s
-gs
-gs
-0 0 m 1784 0 l 1784 1628 l 0 1628 l 0 0 l eoclip newpath
-gs
-pum
-159 556 t
-86 9 m 86 9 86 9 122 -341 ct 124 -355 124 -365 124 -373 ct 124 -385 121 -394 114 -400 ct
-107 -406 95 -410 77 -410 ct 77 -410 77 -410 81 -421 ct 81 -421 81 -421 237 -421 ct
-237 -421 237 -421 234 -410 ct 213 -410 198 -406 191 -399 ct 183 -391 177 -372 175 -341 ct
-175 -341 175 -341 151 -113 ct 151 -113 151 -113 311 -361 ct 311 -365 311 -369 311 -371 ct
-311 -383 308 -392 301 -398 ct 294 -405 279 -409 257 -410 ct 257 -410 257 -410 259 -421 ct
-259 -421 259 -421 430 -421 ct 430 -421 430 -421 426 -410 ct 407 -410 393 -408 387 -405 ct
-382 -403 377 -399 374 -394 ct 371 -389 368 -380 366 -368 ct 365 -364 363 -340 358 -296 ct
-354 -251 347 -190 338 -113 ct 338 -113 338 -113 472 -317 ct 486 -339 496 -354 499 -363 ct
-503 -372 505 -380 505 -386 ct 505 -392 502 -397 497 -401 ct 492 -406 484 -409 472 -410 ct
-472 -410 472 -410 474 -421 ct 474 -421 474 -421 599 -421 ct 599 -421 599 -421 596 -410 ct
-585 -409 575 -406 567 -402 ct 558 -397 548 -389 537 -376 ct 530 -368 516 -349 496 -317 ct
-496 -317 496 -317 284 9 ct 284 9 284 9 273 9 ct 273 9 273 9 307 -317 ct 307 -317 307 -317 97 9 ct
-97 9 97 9 86 9 ct p ef
-pom
-gr
-gs
-pum
-847 556 t
-168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
-98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
-89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
-p ef
-pom
-gr
-gs
-pum
-1138 556 t
-54 -273 m 54 -273 54 -273 249 -273 ct 249 -273 249 -273 249 -265 ct 249 -265 249 -265 35 -42 ct
-35 -42 35 -42 125 -42 ct 147 -42 161 -43 166 -44 ct 172 -46 178 -50 183 -55 ct
-187 -60 193 -70 199 -84 ct 199 -84 199 -84 210 -84 ct 210 -84 210 -84 183 0 ct
-183 0 183 0 -18 0 ct -18 0 -18 0 -18 -9 ct -18 -9 -18 -9 196 -232 ct 196 -232 196 -232 109 -232 ct
-90 -232 78 -232 74 -231 ct 68 -229 63 -226 57 -221 ct 51 -216 45 -208 39 -196 ct
-39 -196 39 -196 28 -196 ct 28 -196 28 -196 54 -273 ct p ef
-pom
-gr
-gs
-pum
-1429 556 t
-33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
-86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
-143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
-33 131 33 131 33 116 ct p ef
-pom
-gr
-gs
-132 767 m 1521 0 rl 0 31 rl 1521 neg 0 rl ef p ef
-
-gr
-gs
-pum
-370 1323 t
-208 -345 m 197 -344 l 113 -410 l 25 -342 l 11 -345 l 113 -462 l 208 -345 l
-p ef
-pom
-gr
-gs
-pum
-318 1455 t
-328 -430 m 328 -430 328 -430 296 -80 ct 294 -64 294 -53 294 -48 ct 294 -40 295 -33 298 -29 ct
-302 -23 307 -18 314 -15 ct 321 -12 332 -11 348 -11 ct 348 -11 348 -11 345 0 ct
-345 0 345 0 180 0 ct 180 0 180 0 184 -11 ct 184 -11 184 -11 191 -11 ct 204 -11 215 -14 224 -20 ct
-230 -24 234 -30 238 -39 ct 240 -46 242 -61 244 -85 ct 244 -85 244 -85 249 -138 ct
-249 -138 249 -138 128 -138 ct 128 -138 128 -138 86 -80 ct 76 -67 70 -57 67 -52 ct
-65 -46 64 -41 64 -36 ct 64 -29 66 -24 72 -19 ct 77 -14 86 -11 98 -11 ct 98 -11 98 -11 95 0 ct
-95 0 95 0 -30 0 ct -30 0 -30 0 -27 -11 ct -12 -12 2 -17 14 -26 ct 25 -36 43 -57 66 -88 ct
-66 -88 66 -88 317 -430 ct 317 -430 317 -430 328 -430 ct p
-268 -327 m 144 -159 l 251 -159 l 268 -327 l p ef
-pom
-gr
-gs
-pum
-767 1455 t
-168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
-98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
-89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
-p ef
-pom
-gr
-gs
-pum
-1032 1455 t
-54 -273 m 54 -273 54 -273 249 -273 ct 249 -273 249 -273 249 -265 ct 249 -265 249 -265 35 -42 ct
-35 -42 35 -42 125 -42 ct 147 -42 161 -43 166 -44 ct 172 -46 178 -50 183 -55 ct
-187 -60 193 -70 199 -84 ct 199 -84 199 -84 210 -84 ct 210 -84 210 -84 183 0 ct
-183 0 183 0 -18 0 ct -18 0 -18 0 -18 -9 ct -18 -9 -18 -9 196 -232 ct 196 -232 196 -232 109 -232 ct
-90 -232 78 -232 74 -231 ct 68 -229 63 -226 57 -221 ct 51 -216 45 -208 39 -196 ct
-39 -196 39 -196 28 -196 ct 28 -196 28 -196 54 -273 ct p ef
-pom
-gr
-gs
-pum
-1349 1455 t
-33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
-86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
-143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
-33 131 33 131 33 116 ct p ef
-pom
-gr
-gr
-gr
-gr
-gr
-8085 12686 m 7035 12686 l 7035 10886 l 9135 10886 l 9135 12686 l 8085 12686 l
-pc
-5135 11785 m 5698 11598 l 5698 11973 l 5135 11785 l p ef
-7035 11811 m 6085 11811 l 6085 11786 l 6085 11761 l 7035 11761 l 7035 11786 l
-7035 11811 l p ef
-6085 11786 m 6085 11811 l 6081 11811 l 6076 11809 l 6073 11808 l 6069 11805 l
-6066 11802 l 6063 11799 l 6062 11795 l 6060 11790 l 6060 11786 l 6060 11786 l
-6085 11786 l p ef
-6060 11786 m 6060 11785 l 6085 11785 l 6110 11785 l 6110 11786 l 6085 11786 l
-6060 11786 l p ef
-6085 11785 m 6085 11760 l 6089 11760 l 6094 11762 l 6097 11763 l 6101 11766 l
-6104 11769 l 6107 11772 l 6108 11776 l 6110 11781 l 6110 11785 l 6110 11785 l
-6085 11785 l p ef
-6085 11810 m 5585 11810 l 5585 11785 l 5585 11760 l 6085 11760 l 6085 11785 l
-6085 11810 l p ef
-4384 11036 m 4197 10474 l 4572 10474 l 4384 11036 l p ef
-4409 10135 m 4409 10586 l 4359 10586 l 4359 10135 l 4409 10135 l p ef
-15735 12685 m 14335 12685 l 14335 10885 l 17135 10885 l 17135 12685 l
-15735 12685 l pc
-gs
-gs
-pum
-14696 11662 t
-259 -125 m 259 -125 259 -125 114 -125 ct 114 -125 114 -125 88 -66 ct 82 -52 79 -41 79 -33 ct
-79 -28 81 -23 87 -18 ct 92 -14 104 -11 122 -10 ct 122 -10 122 -10 122 0 ct 122 0 122 0 4 0 ct
-4 0 4 0 4 -10 ct 20 -13 30 -16 35 -21 ct 44 -30 54 -48 66 -75 ct 66 -75 66 -75 200 -382 ct
-200 -382 200 -382 211 -382 ct 211 -382 211 -382 338 -71 ct 348 -46 358 -30 367 -23 ct
-375 -15 387 -11 402 -10 ct 402 -10 402 -10 402 0 ct 402 0 402 0 254 0 ct 254 0 254 0 254 -10 ct
-269 -11 279 -13 284 -17 ct 289 -22 292 -27 292 -33 ct 292 -41 288 -53 281 -71 ct
-281 -71 281 -71 259 -125 ct p
-250 -146 m 189 -297 l 123 -146 l 250 -146 l p ef
-604 -29 m 592 -16 580 -7 568 -1 ct 556 4 543 7 530 7 ct 502 7 478 -4 457 -27 ct
-436 -50 426 -80 426 -116 ct 426 -152 437 -185 460 -215 ct 483 -245 513 -260 549 -260 ct
-571 -260 589 -252 604 -237 ct 604 -237 604 -237 604 -286 ct 604 -314 603 -332 602 -338 ct
-601 -345 598 -349 595 -352 ct 593 -354 589 -355 585 -355 ct 580 -355 573 -354 566 -351 ct
-566 -351 566 -351 562 -361 ct 562 -361 562 -361 637 -392 ct 637 -392 637 -392 649 -392 ct
-649 -392 649 -392 649 -99 ct 649 -70 650 -53 651 -46 ct 652 -40 655 -36 658 -33 ct
-661 -31 664 -29 668 -29 ct 673 -29 680 -31 688 -34 ct 688 -34 688 -34 691 -24 ct
-691 -24 691 -24 617 7 ct 617 7 617 7 604 7 ct 604 7 604 7 604 -29 ct p
-604 -48 m 604 -48 604 -48 604 -177 ct 603 -189 600 -201 594 -211 ct 589 -221 581 -229 572 -234 ct
-563 -239 554 -242 545 -242 ct 529 -242 515 -235 502 -220 ct 485 -201 477 -174 477 -137 ct
-477 -100 485 -72 501 -52 ct 518 -33 536 -23 555 -23 ct 572 -23 588 -31 604 -48 ct
-p ef
-851 -37 m 825 -17 809 -5 802 -2 ct 792 3 782 5 770 5 ct 753 5 738 -1 727 -13 ct
-716 -25 710 -40 710 -60 ct 710 -72 713 -83 718 -92 ct 726 -104 739 -116 758 -127 ct
-776 -138 808 -151 851 -167 ct 851 -167 851 -167 851 -177 ct 851 -202 847 -219 839 -228 ct
-831 -237 820 -242 804 -242 ct 793 -242 784 -239 777 -233 ct 770 -226 766 -219 766 -211 ct
-766 -211 766 -211 767 -195 ct 767 -187 765 -180 760 -176 ct 756 -171 750 -169 743 -169 ct
-737 -169 731 -171 727 -176 ct 722 -181 720 -188 720 -196 ct 720 -212 728 -227 744 -240 ct
-760 -253 783 -260 812 -260 ct 834 -260 853 -256 867 -249 ct 878 -243 886 -234 891 -222 ct
-894 -214 896 -198 896 -174 ct 896 -174 896 -174 896 -89 ct 896 -65 896 -50 897 -45 ct
-898 -39 900 -36 902 -34 ct 904 -32 906 -31 909 -31 ct 912 -31 915 -32 917 -33 ct
-921 -35 928 -42 939 -53 ct 939 -53 939 -53 939 -38 ct 919 -10 899 4 881 4 ct 872 4 864 1 859 -5 ct
-854 -11 851 -22 851 -37 ct p
-851 -54 m 851 -54 851 -54 851 -149 ct 823 -138 805 -130 797 -126 ct 782 -118 772 -110 765 -101 ct
-759 -92 756 -83 756 -72 ct 756 -59 760 -49 768 -40 ct 776 -31 785 -27 795 -27 ct
-810 -27 828 -36 851 -54 ct p ef
-940 -228 m 940 -228 940 -228 1018 -259 ct 1018 -259 1018 -259 1029 -259 ct
-1029 -259 1029 -259 1029 -201 ct 1042 -223 1055 -238 1068 -247 ct 1081 -256 1095 -260 1109 -260 ct
-1134 -260 1155 -250 1172 -230 ct 1193 -206 1203 -175 1203 -136 ct 1203 -92 1191 -56 1166 -28 ct
-1145 -5 1120 7 1089 7 ct 1075 7 1063 5 1054 1 ct 1046 -2 1038 -7 1029 -16 ct 1029 -16 1029 -16 1029 63 ct
-1029 80 1030 91 1032 96 ct 1034 100 1038 104 1043 107 ct 1049 110 1058 111 1072 111 ct
-1072 111 1072 111 1072 121 ct 1072 121 1072 121 937 121 ct 937 121 937 121 937 111 ct
-937 111 937 111 944 111 ct 954 111 963 109 971 105 ct 974 103 977 100 979 95 ct
-981 91 982 79 982 61 ct 982 61 982 61 982 -179 ct 982 -195 981 -205 980 -209 ct
-978 -213 976 -216 973 -219 ct 970 -221 965 -222 960 -222 ct 956 -222 950 -221 943 -218 ct
-943 -218 943 -218 940 -228 ct p
-1029 -185 m 1029 -185 1029 -185 1029 -90 ct 1029 -70 1030 -57 1031 -50 ct 1034 -40 1040 -30 1050 -22 ct
-1060 -14 1073 -10 1088 -10 ct 1106 -10 1121 -17 1132 -31 ct 1147 -50 1154 -77 1154 -111 ct
-1154 -149 1146 -179 1129 -200 ct 1117 -214 1103 -221 1087 -221 ct 1079 -221 1070 -219 1061 -214 ct
-1055 -211 1044 -201 1029 -185 ct p ef
-1314 -337 m 1314 -337 1314 -337 1314 -253 ct 1314 -253 1314 -253 1373 -253 ct
-1373 -253 1373 -253 1373 -234 ct 1373 -234 1373 -234 1314 -234 ct 1314 -234 1314 -234 1314 -70 ct
-1314 -53 1316 -42 1321 -37 ct 1326 -31 1332 -28 1339 -28 ct 1345 -28 1351 -30 1357 -34 ct
-1362 -37 1367 -43 1370 -50 ct 1370 -50 1370 -50 1381 -50 ct 1375 -32 1365 -19 1354 -10 ct
-1342 -1 1329 4 1317 4 ct 1308 4 1300 2 1292 -3 ct 1284 -8 1278 -14 1274 -23 ct
-1270 -32 1268 -45 1268 -64 ct 1268 -64 1268 -64 1268 -234 ct 1268 -234 1268 -234 1228 -234 ct
-1228 -234 1228 -234 1228 -243 ct 1238 -247 1248 -254 1259 -264 ct 1270 -273 1279 -285 1287 -298 ct
-1292 -305 1297 -318 1305 -337 ct 1305 -337 1305 -337 1314 -337 ct p ef
-1462 -392 m 1470 -392 1476 -389 1482 -384 ct 1487 -378 1490 -372 1490 -364 ct
-1490 -356 1487 -350 1482 -344 ct 1476 -339 1470 -336 1462 -336 ct 1454 -336 1448 -339 1442 -344 ct
-1437 -350 1434 -356 1434 -364 ct 1434 -372 1437 -378 1442 -384 ct 1448 -389 1454 -392 1462 -392 ct
-p
-1485 -260 m 1485 -260 1485 -260 1485 -57 ct 1485 -41 1486 -31 1488 -26 ct 1491 -20 1494 -16 1498 -14 ct
-1503 -11 1510 -10 1522 -10 ct 1522 -10 1522 -10 1522 0 ct 1522 0 1522 0 1402 0 ct
-1402 0 1402 0 1402 -10 ct 1414 -10 1422 -11 1426 -14 ct 1430 -16 1433 -20 1435 -25 ct
-1438 -31 1439 -41 1439 -57 ct 1439 -57 1439 -57 1439 -154 ct 1439 -181 1438 -199 1437 -207 ct
-1435 -213 1433 -217 1431 -220 ct 1428 -222 1424 -223 1419 -223 ct 1414 -223 1408 -222 1401 -219 ct
-1401 -219 1401 -219 1397 -229 ct 1397 -229 1397 -229 1473 -260 ct 1473 -260 1473 -260 1485 -260 ct
-p ef
-1543 -253 m 1543 -253 1543 -253 1661 -253 ct 1661 -253 1661 -253 1661 -243 ct
-1661 -243 1661 -243 1653 -243 ct 1646 -243 1641 -241 1637 -238 ct 1633 -234 1631 -230 1631 -224 ct
-1631 -217 1633 -210 1637 -201 ct 1637 -201 1637 -201 1696 -62 ct 1696 -62 1696 -62 1754 -206 ct
-1758 -216 1760 -224 1760 -230 ct 1760 -232 1760 -234 1758 -236 ct 1756 -239 1754 -240 1750 -241 ct
-1747 -243 1741 -243 1731 -243 ct 1731 -243 1731 -243 1731 -253 ct 1731 -253 1731 -253 1813 -253 ct
-1813 -253 1813 -253 1813 -243 ct 1804 -242 1797 -240 1793 -237 ct 1787 -231 1781 -222 1776 -209 ct
-1776 -209 1776 -209 1687 7 ct 1687 7 1687 7 1676 7 ct 1676 7 1676 7 1587 -205 ct
-1583 -216 1579 -223 1575 -227 ct 1571 -232 1567 -235 1561 -238 ct 1558 -240 1552 -242 1543 -243 ct
-1543 -243 1543 -243 1543 -253 ct p ef
-1880 -158 m 1880 -121 1889 -92 1907 -71 ct 1925 -50 1946 -39 1971 -39 ct 1987 -39 2002 -43 2014 -52 ct
-2026 -61 2036 -77 2044 -99 ct 2044 -99 2044 -99 2053 -94 ct 2049 -68 2038 -45 2019 -24 ct
-2001 -3 1978 7 1950 7 ct 1920 7 1894 -5 1872 -28 ct 1851 -52 1840 -83 1840 -123 ct
-1840 -166 1851 -200 1873 -224 ct 1895 -248 1923 -260 1956 -260 ct 1984 -260 2008 -251 2026 -232 ct
-2044 -214 2053 -189 2053 -158 ct 2053 -158 2053 -158 1880 -158 ct p
-1880 -174 m 1880 -174 1880 -174 1996 -174 ct 1995 -190 1993 -201 1990 -208 ct
-1986 -218 1979 -226 1970 -231 ct 1961 -237 1951 -240 1942 -240 ct 1926 -240 1913 -234 1901 -223 ct
-1889 -211 1882 -195 1880 -174 ct p ef
-pom
-gr
-gs
-pum
-14631 12289 t
-233 -95 m 226 -62 213 -37 193 -19 ct 173 -2 151 7 127 7 ct 98 7 73 -5 52 -29 ct
-31 -53 20 -85 20 -126 ct 20 -166 32 -198 55 -223 ct 79 -248 108 -260 141 -260 ct
-166 -260 186 -253 202 -240 ct 218 -227 226 -214 226 -199 ct 226 -192 224 -187 219 -182 ct
-215 -178 208 -176 200 -176 ct 190 -176 182 -180 176 -187 ct 173 -190 171 -198 170 -209 ct
-169 -220 165 -228 158 -234 ct 152 -239 143 -242 132 -242 ct 113 -242 99 -235 87 -222 ct
-72 -204 65 -180 65 -150 ct 65 -120 72 -94 87 -71 ct 102 -48 122 -36 147 -36 ct
-165 -36 181 -42 196 -54 ct 206 -62 215 -77 225 -99 ct 225 -99 225 -99 233 -95 ct
-p ef
-392 -260 m 430 -260 461 -246 484 -217 ct 503 -192 513 -163 513 -131 ct 513 -109 508 -86 497 -63 ct
-486 -40 471 -22 452 -11 ct 433 1 412 7 389 7 ct 351 7 321 -8 298 -38 ct 279 -64 270 -92 270 -124 ct
-270 -147 276 -170 287 -193 ct 299 -216 314 -233 332 -244 ct 351 -255 371 -260 392 -260 ct
-p
-383 -242 m 374 -242 364 -239 354 -233 ct 344 -228 336 -218 330 -203 ct 324 -189 321 -170 321 -147 ct
-321 -111 328 -79 343 -53 ct 358 -26 377 -13 401 -13 ct 418 -13 433 -20 445 -35 ct
-456 -50 462 -75 462 -110 ct 462 -155 452 -190 433 -216 ct 420 -233 403 -242 383 -242 ct
-p ef
-731 -29 m 719 -16 707 -7 695 -1 ct 683 4 670 7 657 7 ct 629 7 605 -4 584 -27 ct
-563 -50 553 -80 553 -116 ct 553 -152 564 -185 587 -215 ct 610 -245 640 -260 676 -260 ct
-698 -260 716 -252 731 -237 ct 731 -237 731 -237 731 -286 ct 731 -314 730 -332 729 -338 ct
-728 -345 725 -349 722 -352 ct 720 -354 716 -355 712 -355 ct 707 -355 700 -354 693 -351 ct
-693 -351 693 -351 689 -361 ct 689 -361 689 -361 764 -392 ct 764 -392 764 -392 776 -392 ct
-776 -392 776 -392 776 -99 ct 776 -70 777 -53 778 -46 ct 779 -40 782 -36 785 -33 ct
-788 -31 791 -29 795 -29 ct 800 -29 807 -31 815 -34 ct 815 -34 815 -34 818 -24 ct
-818 -24 818 -24 744 7 ct 744 7 744 7 731 7 ct 731 7 731 7 731 -29 ct p
-731 -48 m 731 -48 731 -48 731 -177 ct 730 -189 727 -201 721 -211 ct 716 -221 708 -229 699 -234 ct
-690 -239 681 -242 672 -242 ct 656 -242 642 -235 629 -220 ct 612 -201 604 -174 604 -137 ct
-604 -100 612 -72 628 -52 ct 645 -33 663 -23 682 -23 ct 699 -23 715 -31 731 -48 ct
-p ef
-877 -158 m 877 -121 886 -92 904 -71 ct 922 -50 943 -39 968 -39 ct 984 -39 999 -43 1011 -52 ct
-1023 -61 1033 -77 1041 -99 ct 1041 -99 1041 -99 1050 -94 ct 1046 -68 1035 -45 1016 -24 ct
-998 -3 975 7 947 7 ct 917 7 891 -5 869 -28 ct 848 -52 837 -83 837 -123 ct 837 -166 848 -200 870 -224 ct
-892 -248 920 -260 953 -260 ct 981 -260 1005 -251 1023 -232 ct 1041 -214 1050 -189 1050 -158 ct
-1050 -158 1050 -158 877 -158 ct p
-877 -174 m 877 -174 877 -174 993 -174 ct 992 -190 990 -201 987 -208 ct 983 -218 976 -226 967 -231 ct
-958 -237 948 -240 939 -240 ct 923 -240 910 -234 898 -223 ct 886 -211 879 -195 877 -174 ct
-p ef
-1154 -209 m 1178 -243 1205 -260 1233 -260 ct 1259 -260 1281 -249 1300 -227 ct
-1319 -205 1329 -175 1329 -136 ct 1329 -92 1314 -56 1284 -28 ct 1259 -5 1230 7 1199 7 ct
-1184 7 1170 4 1154 -1 ct 1139 -6 1124 -14 1108 -25 ct 1108 -25 1108 -25 1108 -286 ct
-1108 -314 1107 -332 1106 -338 ct 1105 -345 1102 -349 1099 -352 ct 1096 -354 1093 -355 1088 -355 ct
-1083 -355 1077 -354 1069 -351 ct 1069 -351 1069 -351 1065 -361 ct 1065 -361 1065 -361 1141 -392 ct
-1141 -392 1141 -392 1154 -392 ct 1154 -392 1154 -392 1154 -209 ct p
-1154 -192 m 1154 -192 1154 -192 1154 -41 ct 1163 -32 1173 -25 1183 -20 ct 1193 -15 1203 -13 1213 -13 ct
-1230 -13 1245 -22 1260 -41 ct 1274 -59 1281 -86 1281 -121 ct 1281 -153 1274 -178 1260 -195 ct
-1245 -212 1229 -221 1211 -221 ct 1201 -221 1192 -219 1182 -214 ct 1175 -210 1165 -203 1154 -192 ct
-p ef
-1492 -260 m 1530 -260 1561 -246 1584 -217 ct 1603 -192 1613 -163 1613 -131 ct
-1613 -109 1608 -86 1597 -63 ct 1586 -40 1571 -22 1552 -11 ct 1533 1 1512 7 1489 7 ct
-1451 7 1421 -8 1398 -38 ct 1379 -64 1370 -92 1370 -124 ct 1370 -147 1376 -170 1387 -193 ct
-1399 -216 1414 -233 1432 -244 ct 1451 -255 1471 -260 1492 -260 ct p
-1483 -242 m 1474 -242 1464 -239 1454 -233 ct 1444 -228 1436 -218 1430 -203 ct
-1424 -189 1421 -170 1421 -147 ct 1421 -111 1428 -79 1443 -53 ct 1458 -26 1477 -13 1501 -13 ct
-1518 -13 1533 -20 1545 -35 ct 1556 -50 1562 -75 1562 -110 ct 1562 -155 1552 -190 1533 -216 ct
-1520 -233 1503 -242 1483 -242 ct p ef
-1776 -260 m 1814 -260 1845 -246 1868 -217 ct 1887 -192 1897 -163 1897 -131 ct
-1897 -109 1892 -86 1881 -63 ct 1870 -40 1855 -22 1836 -11 ct 1817 1 1796 7 1773 7 ct
-1735 7 1705 -8 1682 -38 ct 1663 -64 1654 -92 1654 -124 ct 1654 -147 1660 -170 1671 -193 ct
-1683 -216 1698 -233 1716 -244 ct 1735 -255 1755 -260 1776 -260 ct p
-1767 -242 m 1758 -242 1748 -239 1738 -233 ct 1728 -228 1720 -218 1714 -203 ct
-1708 -189 1705 -170 1705 -147 ct 1705 -111 1712 -79 1727 -53 ct 1742 -26 1761 -13 1785 -13 ct
-1802 -13 1817 -20 1829 -35 ct 1840 -50 1846 -75 1846 -110 ct 1846 -155 1836 -190 1817 -216 ct
-1804 -233 1787 -242 1767 -242 ct p ef
-2011 -392 m 2011 -392 2011 -392 2011 -141 ct 2011 -141 2011 -141 2074 -200 ct
-2088 -212 2096 -220 2098 -223 ct 2100 -225 2100 -227 2100 -229 ct 2100 -233 2099 -236 2096 -239 ct
-2093 -241 2088 -243 2081 -243 ct 2081 -243 2081 -243 2081 -253 ct 2081 -253 2081 -253 2190 -253 ct
-2190 -253 2190 -253 2190 -244 ct 2175 -244 2163 -241 2153 -237 ct 2143 -233 2132 -225 2120 -214 ct
-2120 -214 2120 -214 2056 -155 ct 2056 -155 2056 -155 2120 -72 ct 2138 -50 2150 -35 2155 -29 ct
-2164 -21 2172 -15 2179 -13 ct 2183 -11 2192 -10 2203 -10 ct 2203 -10 2203 -10 2203 0 ct
-2203 0 2203 0 2081 0 ct 2081 0 2081 0 2081 -10 ct 2088 -10 2092 -11 2095 -13 ct
-2097 -15 2099 -18 2099 -21 ct 2099 -26 2095 -32 2088 -42 ct 2088 -42 2088 -42 2011 -141 ct
-2011 -141 2011 -141 2011 -57 ct 2011 -41 2012 -30 2014 -25 ct 2017 -19 2020 -16 2024 -14 ct
-2029 -11 2038 -10 2052 -10 ct 2052 -10 2052 -10 2052 0 ct 2052 0 2052 0 1924 0 ct
-1924 0 1924 0 1924 -10 ct 1937 -10 1946 -12 1952 -15 ct 1956 -17 1959 -20 1961 -24 ct
-1964 -30 1965 -40 1965 -55 ct 1965 -55 1965 -55 1965 -286 ct 1965 -315 1964 -332 1963 -339 ct
-1962 -345 1960 -350 1957 -352 ct 1954 -354 1950 -356 1946 -356 ct 1942 -356 1936 -354 1929 -351 ct
-1929 -351 1929 -351 1924 -361 ct 1924 -361 1924 -361 1998 -392 ct 1998 -392 1998 -392 2011 -392 ct
-p ef
-pom
-gr
-gr
-11685 12685 m 10435 12685 l 10435 10885 l 12935 10885 l 12935 12685 l
-11685 12685 l pc
-gs
-gs
-pum
-11111 11662 t
-27 -302 m 38 -327 51 -347 68 -360 ct 84 -374 105 -381 129 -381 ct 159 -381 183 -371 199 -352 ct
-211 -337 217 -322 217 -305 ct 217 -278 200 -250 165 -221 ct 188 -212 205 -200 217 -183 ct
-229 -166 235 -147 235 -124 ct 235 -92 225 -64 204 -40 ct 177 -9 138 6 87 6 ct 62 6 45 3 36 -3 ct
-27 -10 22 -17 22 -24 ct 22 -29 24 -34 28 -38 ct 33 -42 38 -44 44 -44 ct 49 -44 53 -43 58 -42 ct
-61 -41 68 -37 79 -32 ct 90 -26 98 -22 102 -21 ct 109 -19 116 -18 124 -18 ct 143 -18 159 -25 173 -40 ct
-187 -54 194 -71 194 -91 ct 194 -106 191 -120 184 -134 ct 180 -144 174 -152 169 -157 ct
-161 -164 150 -171 137 -177 ct 123 -183 109 -186 95 -186 ct 95 -186 95 -186 86 -186 ct
-86 -186 86 -186 86 -194 ct 100 -196 115 -201 129 -210 ct 144 -218 155 -229 161 -241 ct
-168 -253 171 -266 171 -281 ct 171 -300 165 -315 153 -327 ct 141 -338 126 -344 108 -344 ct
-80 -344 56 -329 36 -298 ct 36 -298 36 -298 27 -302 ct p ef
-307 -148 m 450 -148 l 450 -106 l 307 -106 l 307 -148 l p ef
-561 -337 m 561 -337 561 -337 561 -253 ct 561 -253 561 -253 620 -253 ct 620 -253 620 -253 620 -234 ct
-620 -234 620 -234 561 -234 ct 561 -234 561 -234 561 -70 ct 561 -53 563 -42 568 -37 ct
-573 -31 579 -28 586 -28 ct 592 -28 598 -30 604 -34 ct 609 -37 614 -43 617 -50 ct
-617 -50 617 -50 628 -50 ct 622 -32 612 -19 601 -10 ct 589 -1 576 4 564 4 ct 555 4 547 2 539 -3 ct
-531 -8 525 -14 521 -23 ct 517 -32 515 -45 515 -64 ct 515 -64 515 -64 515 -234 ct
-515 -234 515 -234 475 -234 ct 475 -234 475 -234 475 -243 ct 485 -247 495 -254 506 -264 ct
-517 -273 526 -285 534 -298 ct 539 -305 544 -318 552 -337 ct 552 -337 552 -337 561 -337 ct
-p ef
-788 -37 m 762 -17 746 -5 739 -2 ct 729 3 719 5 707 5 ct 690 5 675 -1 664 -13 ct
-653 -25 647 -40 647 -60 ct 647 -72 650 -83 655 -92 ct 663 -104 676 -116 695 -127 ct
-713 -138 745 -151 788 -167 ct 788 -167 788 -167 788 -177 ct 788 -202 784 -219 776 -228 ct
-768 -237 757 -242 741 -242 ct 730 -242 721 -239 714 -233 ct 707 -226 703 -219 703 -211 ct
-703 -211 703 -211 704 -195 ct 704 -187 702 -180 697 -176 ct 693 -171 687 -169 680 -169 ct
-674 -169 668 -171 664 -176 ct 659 -181 657 -188 657 -196 ct 657 -212 665 -227 681 -240 ct
-697 -253 720 -260 749 -260 ct 771 -260 790 -256 804 -249 ct 815 -243 823 -234 828 -222 ct
-831 -214 833 -198 833 -174 ct 833 -174 833 -174 833 -89 ct 833 -65 833 -50 834 -45 ct
-835 -39 837 -36 839 -34 ct 841 -32 843 -31 846 -31 ct 849 -31 852 -32 854 -33 ct
-858 -35 865 -42 876 -53 ct 876 -53 876 -53 876 -38 ct 856 -10 836 4 818 4 ct 809 4 801 1 796 -5 ct
-791 -11 788 -22 788 -37 ct p
-788 -54 m 788 -54 788 -54 788 -149 ct 760 -138 742 -130 734 -126 ct 719 -118 709 -110 702 -101 ct
-696 -92 693 -83 693 -72 ct 693 -59 697 -49 705 -40 ct 713 -31 722 -27 732 -27 ct
-747 -27 765 -36 788 -54 ct p ef
-876 -228 m 876 -228 876 -228 954 -259 ct 954 -259 954 -259 965 -259 ct 965 -259 965 -259 965 -201 ct
-978 -223 991 -238 1004 -247 ct 1017 -256 1031 -260 1045 -260 ct 1070 -260 1091 -250 1108 -230 ct
-1129 -206 1139 -175 1139 -136 ct 1139 -92 1127 -56 1102 -28 ct 1081 -5 1056 7 1025 7 ct
-1011 7 999 5 990 1 ct 982 -2 974 -7 965 -16 ct 965 -16 965 -16 965 63 ct 965 80 966 91 968 96 ct
-970 100 974 104 979 107 ct 985 110 994 111 1008 111 ct 1008 111 1008 111 1008 121 ct
-1008 121 1008 121 873 121 ct 873 121 873 121 873 111 ct 873 111 873 111 880 111 ct
-890 111 899 109 907 105 ct 910 103 913 100 915 95 ct 917 91 918 79 918 61 ct 918 61 918 61 918 -179 ct
-918 -195 917 -205 916 -209 ct 914 -213 912 -216 909 -219 ct 906 -221 901 -222 896 -222 ct
-892 -222 886 -221 879 -218 ct 879 -218 879 -218 876 -228 ct p
-965 -185 m 965 -185 965 -185 965 -90 ct 965 -70 966 -57 967 -50 ct 970 -40 976 -30 986 -22 ct
-996 -14 1009 -10 1024 -10 ct 1042 -10 1057 -17 1068 -31 ct 1083 -50 1090 -77 1090 -111 ct
-1090 -149 1082 -179 1065 -200 ct 1053 -214 1039 -221 1023 -221 ct 1015 -221 1006 -219 997 -214 ct
-991 -211 980 -201 965 -185 ct p ef
-pom
-gr
-gs
-pum
-11204 12289 t
-85 -93 m 69 -101 58 -111 49 -125 ct 41 -138 37 -153 37 -169 ct 37 -194 46 -215 65 -233 ct
-84 -251 108 -260 138 -260 ct 162 -260 183 -254 200 -242 ct 200 -242 200 -242 254 -242 ct
-262 -242 266 -242 268 -241 ct 269 -241 270 -240 270 -239 ct 271 -237 272 -234 272 -230 ct
-272 -225 272 -222 271 -220 ct 270 -219 269 -218 268 -218 ct 266 -217 262 -217 254 -217 ct
-254 -217 254 -217 221 -217 ct 231 -204 236 -187 236 -167 ct 236 -143 227 -123 209 -107 ct
-191 -90 167 -82 137 -82 ct 124 -82 111 -84 98 -88 ct 90 -81 85 -74 82 -69 ct 79 -64 78 -59 78 -56 ct
-78 -52 80 -49 83 -46 ct 86 -43 91 -41 100 -40 ct 105 -39 118 -39 139 -38 ct 176 -37 201 -36 212 -34 ct
-229 -32 243 -25 253 -15 ct 263 -5 268 8 268 23 ct 268 44 258 63 239 82 ct 211 109 173 122 128 122 ct
-92 122 63 114 39 98 ct 25 89 18 79 18 69 ct 18 65 19 60 21 56 ct 24 49 30 40 40 28 ct
-41 26 50 16 67 -2 ct 58 -8 51 -13 47 -18 ct 43 -22 41 -27 41 -33 ct 41 -40 44 -47 49 -56 ct
-54 -65 66 -77 85 -93 ct p
-133 -246 m 119 -246 108 -241 99 -230 ct 90 -219 85 -203 85 -181 ct 85 -152 91 -130 104 -114 ct
-113 -102 125 -96 140 -96 ct 154 -96 166 -101 175 -112 ct 184 -122 188 -138 188 -160 ct
-188 -189 182 -212 169 -228 ct 160 -240 148 -246 133 -246 ct p
-82 0 m 74 9 68 18 63 26 ct 59 34 57 42 57 49 ct 57 57 62 65 73 72 ct 91 83 117 89 152 89 ct
-185 89 209 83 225 71 ct 240 60 248 47 248 34 ct 248 24 243 17 234 13 ct 224 9 206 7 177 6 ct
-136 5 104 3 82 0 ct p ef
-445 -37 m 419 -17 403 -5 396 -2 ct 386 3 376 5 364 5 ct 347 5 332 -1 321 -13 ct
-310 -25 304 -40 304 -60 ct 304 -72 307 -83 312 -92 ct 320 -104 333 -116 352 -127 ct
-370 -138 402 -151 445 -167 ct 445 -167 445 -167 445 -177 ct 445 -202 441 -219 433 -228 ct
-425 -237 414 -242 398 -242 ct 387 -242 378 -239 371 -233 ct 364 -226 360 -219 360 -211 ct
-360 -211 360 -211 361 -195 ct 361 -187 359 -180 354 -176 ct 350 -171 344 -169 337 -169 ct
-331 -169 325 -171 321 -176 ct 316 -181 314 -188 314 -196 ct 314 -212 322 -227 338 -240 ct
-354 -253 377 -260 406 -260 ct 428 -260 447 -256 461 -249 ct 472 -243 480 -234 485 -222 ct
-488 -214 490 -198 490 -174 ct 490 -174 490 -174 490 -89 ct 490 -65 490 -50 491 -45 ct
-492 -39 494 -36 496 -34 ct 498 -32 500 -31 503 -31 ct 506 -31 509 -32 511 -33 ct
-515 -35 522 -42 533 -53 ct 533 -53 533 -53 533 -38 ct 513 -10 493 4 475 4 ct 466 4 458 1 453 -5 ct
-448 -11 445 -22 445 -37 ct p
-445 -54 m 445 -54 445 -54 445 -149 ct 417 -138 399 -130 391 -126 ct 376 -118 366 -110 359 -101 ct
-353 -92 350 -83 350 -72 ct 350 -59 354 -49 362 -40 ct 370 -31 379 -27 389 -27 ct
-404 -27 422 -36 445 -54 ct p ef
-615 -392 m 623 -392 629 -389 635 -384 ct 640 -378 643 -372 643 -364 ct 643 -356 640 -350 635 -344 ct
-629 -339 623 -336 615 -336 ct 607 -336 601 -339 595 -344 ct 590 -350 587 -356 587 -364 ct
-587 -372 590 -378 595 -384 ct 601 -389 607 -392 615 -392 ct p
-638 -260 m 638 -260 638 -260 638 -57 ct 638 -41 639 -31 641 -26 ct 644 -20 647 -16 651 -14 ct
-656 -11 663 -10 675 -10 ct 675 -10 675 -10 675 0 ct 675 0 675 0 555 0 ct 555 0 555 0 555 -10 ct
-567 -10 575 -11 579 -14 ct 583 -16 586 -20 588 -25 ct 591 -31 592 -41 592 -57 ct
-592 -57 592 -57 592 -154 ct 592 -181 591 -199 590 -207 ct 588 -213 586 -217 584 -220 ct
-581 -222 577 -223 572 -223 ct 567 -223 561 -222 554 -219 ct 554 -219 554 -219 550 -229 ct
-550 -229 550 -229 626 -260 ct 626 -260 626 -260 638 -260 ct p ef
-782 -207 m 811 -242 839 -260 866 -260 ct 880 -260 892 -257 901 -250 ct 911 -243 919 -231 925 -216 ct
-929 -205 931 -188 931 -165 ct 931 -165 931 -165 931 -57 ct 931 -41 932 -30 935 -25 ct
-937 -20 940 -16 944 -14 ct 948 -11 956 -10 968 -10 ct 968 -10 968 -10 968 0 ct
-968 0 968 0 844 0 ct 844 0 844 0 844 -10 ct 844 -10 844 -10 849 -10 ct 861 -10 869 -12 874 -15 ct
-879 -19 882 -24 884 -31 ct 885 -34 885 -43 885 -57 ct 885 -57 885 -57 885 -161 ct
-885 -184 882 -201 876 -211 ct 870 -222 860 -227 846 -227 ct 825 -227 803 -215 782 -191 ct
-782 -191 782 -191 782 -57 ct 782 -40 783 -29 785 -25 ct 788 -20 791 -16 796 -14 ct
-800 -11 809 -10 823 -10 ct 823 -10 823 -10 823 0 ct 823 0 823 0 699 0 ct 699 0 699 0 699 -10 ct
-699 -10 699 -10 704 -10 ct 717 -10 725 -13 729 -20 ct 734 -26 736 -39 736 -57 ct
-736 -57 736 -57 736 -151 ct 736 -181 735 -200 734 -206 ct 733 -213 731 -217 728 -220 ct
-725 -222 721 -223 716 -223 ct 711 -223 705 -222 698 -219 ct 698 -219 698 -219 694 -229 ct
-694 -229 694 -229 770 -260 ct 770 -260 770 -260 782 -260 ct 782 -260 782 -260 782 -207 ct
-p ef
-pom
-gr
-gr
-9135 11786 m 9698 11599 l 9698 11974 l 9135 11786 l p ef
-10435 11810 m 9785 11810 l 9785 11785 l 9785 11760 l 10435 11760 l
-10435 11785 l 10435 11810 l p ef
-9785 11785 m 9760 11785 l 9760 11781 l 9762 11776 l 9763 11773 l 9766 11769 l
-9769 11766 l 9772 11763 l 9776 11762 l 9781 11760 l 9785 11760 l 9785 11760 l
-9785 11785 l p ef
-9810 11785 m 9810 11786 l 9785 11786 l 9760 11786 l 9760 11785 l 9785 11785 l
-9810 11785 l p ef
-9785 11786 m 9810 11786 l 9810 11790 l 9808 11795 l 9807 11798 l 9804 11802 l
-9801 11805 l 9798 11808 l 9794 11809 l 9789 11811 l 9785 11811 l 9785 11811 l
-9785 11786 l p ef
-9785 11811 m 9585 11811 l 9585 11786 l 9585 11761 l 9785 11761 l 9785 11786 l
-9785 11811 l p ef
-12935 11785 m 13498 11598 l 13498 11973 l 12935 11785 l p ef
-14335 11810 m 13385 11810 l 13385 11760 l 14335 11760 l 14335 11810 l
-p ef
-gs
-7170 15868 m 8954 15868 l 8954 17496 l 7170 17496 l 7170 15868 l eoclip newpath
-gs
-tm setmatrix
-4736 12832 t
-1 1 s
-gs
-gs
-0 0 m 1784 0 l 1784 1628 l 0 1628 l 0 0 l eoclip newpath
-gs
-pum
-370 503 t
-208 -345 m 197 -344 l 113 -410 l 25 -342 l 11 -345 l 113 -462 l 208 -345 l
-p ef
-pom
-gr
-gs
-pum
-318 635 t
-328 -430 m 328 -430 328 -430 296 -80 ct 294 -64 294 -53 294 -48 ct 294 -40 295 -33 298 -29 ct
-302 -23 307 -18 314 -15 ct 321 -12 332 -11 348 -11 ct 348 -11 348 -11 345 0 ct
-345 0 345 0 180 0 ct 180 0 180 0 184 -11 ct 184 -11 184 -11 191 -11 ct 204 -11 215 -14 224 -20 ct
-230 -24 234 -30 238 -39 ct 240 -46 242 -61 244 -85 ct 244 -85 244 -85 249 -138 ct
-249 -138 249 -138 128 -138 ct 128 -138 128 -138 86 -80 ct 76 -67 70 -57 67 -52 ct
-65 -46 64 -41 64 -36 ct 64 -29 66 -24 72 -19 ct 77 -14 86 -11 98 -11 ct 98 -11 98 -11 95 0 ct
-95 0 95 0 -30 0 ct -30 0 -30 0 -27 -11 ct -12 -12 2 -17 14 -26 ct 25 -36 43 -57 66 -88 ct
-66 -88 66 -88 317 -430 ct 317 -430 317 -430 328 -430 ct p
-268 -327 m 144 -159 l 251 -159 l 268 -327 l p ef
-pom
-gr
-gs
-pum
-767 635 t
-168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
-98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
-89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
-p ef
-pom
-gr
-gs
-pum
-1032 635 t
-54 -273 m 54 -273 54 -273 249 -273 ct 249 -273 249 -273 249 -265 ct 249 -265 249 -265 35 -42 ct
-35 -42 35 -42 125 -42 ct 147 -42 161 -43 166 -44 ct 172 -46 178 -50 183 -55 ct
-187 -60 193 -70 199 -84 ct 199 -84 199 -84 210 -84 ct 210 -84 210 -84 183 0 ct
-183 0 183 0 -18 0 ct -18 0 -18 0 -18 -9 ct -18 -9 -18 -9 196 -232 ct 196 -232 196 -232 109 -232 ct
-90 -232 78 -232 74 -231 ct 68 -229 63 -226 57 -221 ct 51 -216 45 -208 39 -196 ct
-39 -196 39 -196 28 -196 ct 28 -196 28 -196 54 -273 ct p ef
-pom
-gr
-gs
-pum
-1349 635 t
-33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
-86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
-143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
-33 131 33 131 33 116 ct p ef
-pom
-gr
-gs
-132 847 m 1521 0 rl 0 31 rl 1521 neg 0 rl ef p ef
-
-gr
-gs
-pum
-159 1455 t
-86 9 m 86 9 86 9 122 -341 ct 124 -355 124 -365 124 -373 ct 124 -385 121 -394 114 -400 ct
-107 -406 95 -410 77 -410 ct 77 -410 77 -410 81 -421 ct 81 -421 81 -421 237 -421 ct
-237 -421 237 -421 234 -410 ct 213 -410 198 -406 191 -399 ct 183 -391 177 -372 175 -341 ct
-175 -341 175 -341 151 -113 ct 151 -113 151 -113 311 -361 ct 311 -365 311 -369 311 -371 ct
-311 -383 308 -392 301 -398 ct 294 -405 279 -409 257 -410 ct 257 -410 257 -410 259 -421 ct
-259 -421 259 -421 430 -421 ct 430 -421 430 -421 426 -410 ct 407 -410 393 -408 387 -405 ct
-382 -403 377 -399 374 -394 ct 371 -389 368 -380 366 -368 ct 365 -364 363 -340 358 -296 ct
-354 -251 347 -190 338 -113 ct 338 -113 338 -113 472 -317 ct 486 -339 496 -354 499 -363 ct
-503 -372 505 -380 505 -386 ct 505 -392 502 -397 497 -401 ct 492 -406 484 -409 472 -410 ct
-472 -410 472 -410 474 -421 ct 474 -421 474 -421 599 -421 ct 599 -421 599 -421 596 -410 ct
-585 -409 575 -406 567 -402 ct 558 -397 548 -389 537 -376 ct 530 -368 516 -349 496 -317 ct
-496 -317 496 -317 284 9 ct 284 9 284 9 273 9 ct 273 9 273 9 307 -317 ct 307 -317 307 -317 97 9 ct
-97 9 97 9 86 9 ct p ef
-pom
-gr
-gs
-pum
-847 1455 t
-168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
-98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
-89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
-p ef
-pom
-gr
-gs
-pum
-1138 1455 t
-54 -273 m 54 -273 54 -273 249 -273 ct 249 -273 249 -273 249 -265 ct 249 -265 249 -265 35 -42 ct
-35 -42 35 -42 125 -42 ct 147 -42 161 -43 166 -44 ct 172 -46 178 -50 183 -55 ct
-187 -60 193 -70 199 -84 ct 199 -84 199 -84 210 -84 ct 210 -84 210 -84 183 0 ct
-183 0 183 0 -18 0 ct -18 0 -18 0 -18 -9 ct -18 -9 -18 -9 196 -232 ct 196 -232 196 -232 109 -232 ct
-90 -232 78 -232 74 -231 ct 68 -229 63 -226 57 -221 ct 51 -216 45 -208 39 -196 ct
-39 -196 39 -196 28 -196 ct 28 -196 28 -196 54 -273 ct p ef
-pom
-gr
-gs
-pum
-1429 1455 t
-33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
-86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
-143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
-33 131 33 131 33 116 ct p ef
-pom
-gr
-gr
-gr
-gr
-gr
-8085 17487 m 7035 17487 l 7035 15687 l 9135 15687 l 9135 17487 l 8085 17487 l
-pc
-gs
-10470 15716 m 12288 15716 l 12288 17480 l 10470 17480 l 10470 15716 l eoclip newpath
-gs
-tm setmatrix
-8043 12674 t
-1 1 s
-gs
-gs
-0 0 m 1818 0 l 1818 1764 l 0 1764 l 0 0 l eoclip newpath
-gs
-pum
-159 741 t
-650 93 m 650 93 650 93 56 93 ct 56 93 56 93 56 76 ct 56 76 56 76 359 -301 ct 359 -301 359 -301 56 -670 ct
-56 -670 56 -670 56 -687 ct 56 -687 56 -687 634 -687 ct 634 -687 634 -687 646 -534 ct
-646 -534 646 -534 627 -534 ct 620 -611 582 -650 516 -650 ct 516 -650 516 -650 181 -650 ct
-181 -650 181 -650 435 -339 ct 435 -339 435 -339 150 13 ct 150 13 150 13 520 13 ct
-595 13 642 -24 661 -98 ct 661 -98 661 -98 679 -96 ct 679 -96 679 -96 650 93 ct
-p ef
-pom
-gr
-gs
-pum
-1005 661 t
-168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
-98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
-89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
-p ef
-pom
-gr
-gs
-pum
-1270 661 t
-33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
-86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
-143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
-33 131 33 131 33 116 ct p ef
-pom
-gr
-gs
-pum
-1455 344 t
-175 -48 m 175 -48 175 -48 157 0 ct 157 0 157 0 8 0 ct 8 0 8 0 8 -7 ct 52 -47 83 -79 101 -105 ct
-119 -130 128 -153 128 -174 ct 128 -190 123 -204 113 -214 ct 103 -225 91 -230 78 -230 ct
-65 -230 54 -226 44 -219 ct 34 -212 27 -202 22 -188 ct 22 -188 22 -188 15 -188 ct
-18 -211 26 -228 39 -240 ct 52 -252 68 -258 88 -258 ct 108 -258 125 -251 139 -238 ct
-153 -225 160 -209 160 -191 ct 160 -179 157 -166 151 -153 ct 142 -133 127 -112 106 -89 ct
-75 -55 55 -35 48 -28 ct 48 -28 48 -28 114 -28 ct 127 -28 137 -29 142 -29 ct 147 -30 152 -32 157 -36 ct
-161 -39 165 -43 168 -48 ct 168 -48 168 -48 175 -48 ct p ef
-pom
-gr
-gs
-132 900 m 1555 0 rl 0 31 rl 1555 neg 0 rl ef p ef
-
-gr
-gs
-pum
-318 1535 t
-208 -345 m 197 -344 l 113 -410 l 25 -342 l 11 -345 l 113 -462 l 208 -345 l
-p ef
-pom
-gr
-gs
-pum
-265 1535 t
-331 -261 m 331 -261 331 -261 322 -229 ct 322 -229 322 -229 270 -229 ct 274 -218 276 -207 276 -198 ct
-276 -170 264 -146 241 -124 ct 217 -103 185 -91 144 -89 ct 122 -82 106 -75 95 -65 ct
-91 -62 89 -59 89 -55 ct 89 -51 91 -47 95 -44 ct 98 -40 108 -37 123 -33 ct 123 -33 123 -33 183 -20 ct
-216 -12 238 -3 248 8 ct 259 19 264 31 264 46 ct 264 63 258 78 245 92 ct 233 106 215 117 190 125 ct
-166 133 140 137 111 137 ct 85 137 62 134 41 128 ct 20 122 5 114 -4 103 ct -13 93 -18 82 -18 71 ct
--18 63 -15 53 -9 44 ct -3 34 4 26 13 20 ct 19 16 35 7 61 -8 ct 52 -15 47 -23 47 -32 ct
-47 -40 51 -49 59 -58 ct 67 -68 85 -78 111 -89 ct 89 -93 71 -103 58 -118 ct 45 -132 39 -149 39 -167 ct
-39 -196 52 -222 78 -245 ct 104 -268 138 -280 181 -280 ct 196 -280 209 -278 219 -275 ct
-229 -272 239 -268 248 -261 ct 248 -261 248 -261 331 -261 ct p
-225 -211 m 225 -228 220 -240 211 -250 ct 201 -259 189 -264 173 -264 ct 149 -264 129 -252 114 -229 ct
-98 -206 90 -182 90 -157 ct 90 -141 95 -128 105 -118 ct 115 -108 127 -103 142 -103 ct
-153 -103 164 -106 174 -112 ct 185 -118 194 -126 201 -136 ct 209 -147 214 -160 219 -176 ct
-223 -192 225 -204 225 -211 ct p
-74 0 m 57 8 45 18 36 30 ct 27 42 23 53 23 65 ct 23 79 29 90 42 99 ct 59 112 85 118 120 118 ct
-149 118 175 113 196 103 ct 217 93 227 80 227 64 ct 227 56 223 48 215 41 ct 208 34 193 28 170 24 ct
-158 21 126 13 74 0 ct p ef
-pom
-gr
-gs
-pum
-714 1693 t
-119 -164 m 119 -164 119 -164 116 -150 ct 116 -150 116 -150 88 -150 ct 88 -150 88 -150 65 -69 ct
-55 -34 45 -6 36 13 ct 23 41 9 60 -6 70 ct -18 78 -29 82 -41 82 ct -49 82 -55 80 -60 75 ct
--64 72 -66 68 -66 63 ct -66 59 -64 55 -61 52 ct -58 49 -54 48 -50 48 ct -46 48 -44 49 -41 51 ct
--39 53 -38 56 -38 58 ct -38 61 -39 64 -41 66 ct -43 68 -44 69 -44 70 ct -44 71 -44 72 -43 73 ct
--42 74 -40 74 -38 74 ct -32 74 -27 72 -21 69 ct -15 66 -10 61 -5 54 ct -1 48 3 38 8 26 ct
-9 21 14 4 22 -25 ct 22 -25 22 -25 59 -150 ct 59 -150 59 -150 22 -150 ct 22 -150 22 -150 25 -164 ct
-36 -164 44 -165 49 -166 ct 53 -168 57 -170 61 -174 ct 65 -178 70 -186 75 -197 ct
-82 -212 89 -224 95 -232 ct 104 -243 113 -251 123 -257 ct 132 -262 142 -265 150 -265 ct
-159 -265 166 -263 172 -258 ct 177 -253 180 -248 180 -242 ct 180 -238 179 -234 176 -231 ct
-173 -228 169 -227 165 -227 ct 161 -227 158 -228 156 -230 ct 153 -233 152 -235 152 -238 ct
-152 -240 153 -243 155 -245 ct 157 -248 158 -250 158 -251 ct 158 -253 157 -254 156 -255 ct
-155 -256 153 -257 150 -257 ct 143 -257 136 -254 130 -249 ct 122 -242 115 -232 109 -217 ct
-106 -210 100 -192 92 -164 ct 92 -164 92 -164 119 -164 ct p ef
-125 -158 m 125 -158 125 -158 189 -168 ct 189 -168 189 -168 163 -78 ct 185 -115 204 -141 222 -155 ct
-232 -164 240 -168 247 -168 ct 251 -168 254 -167 256 -164 ct 259 -162 260 -158 260 -154 ct
-260 -146 258 -138 254 -130 ct 251 -125 247 -122 241 -122 ct 238 -122 236 -123 234 -125 ct
-232 -127 230 -130 230 -134 ct 230 -136 229 -138 228 -138 ct 227 -139 226 -140 225 -140 ct
-223 -140 221 -140 219 -139 ct 216 -137 211 -132 204 -124 ct 194 -112 183 -96 171 -77 ct
-166 -68 161 -59 158 -49 ct 153 -35 150 -26 149 -23 ct 149 -23 149 -23 142 0 ct
-142 0 142 0 114 0 ct 114 0 114 0 147 -116 ct 151 -129 153 -139 153 -144 ct 153 -146 153 -148 151 -150 ct
-148 -152 145 -153 141 -153 ct 139 -153 134 -152 128 -151 ct 128 -151 128 -151 125 -158 ct
-p ef
-443 -166 m 443 -166 443 -166 406 -40 ct 406 -40 406 -40 402 -23 ct 402 -21 401 -20 401 -19 ct
-401 -17 402 -15 403 -14 ct 403 -13 404 -13 405 -13 ct 406 -13 408 -13 409 -15 ct
-413 -18 417 -26 423 -37 ct 423 -37 423 -37 429 -33 ct 422 -20 415 -11 407 -5 ct
-399 1 392 4 386 4 ct 382 4 378 3 376 0 ct 373 -3 372 -6 372 -11 ct 372 -17 373 -25 376 -35 ct
-376 -35 376 -35 380 -50 ct 362 -29 346 -14 331 -5 ct 320 1 309 4 299 4 ct 289 4 280 0 273 -7 ct
-266 -14 262 -25 262 -38 ct 262 -57 268 -77 281 -99 ct 294 -120 311 -138 331 -151 ct
-346 -161 361 -166 374 -166 ct 383 -166 390 -164 395 -160 ct 401 -157 405 -151 408 -142 ct
-408 -142 408 -142 413 -162 ct 413 -162 413 -162 443 -166 ct p
-373 -157 m 365 -157 356 -153 346 -146 ct 332 -136 320 -120 309 -100 ct 298 -80 293 -61 293 -45 ct
-293 -37 295 -30 300 -25 ct 305 -20 310 -18 317 -18 ct 332 -18 349 -28 367 -47 ct
-389 -73 399 -100 398 -128 ct 398 -138 396 -145 392 -150 ct 387 -155 381 -157 373 -157 ct
-p ef
-528 -168 m 528 -168 528 -168 504 -84 ct 515 -104 524 -119 532 -129 ct 544 -144 555 -155 567 -162 ct
-573 -166 580 -168 588 -168 ct 594 -168 599 -166 603 -162 ct 607 -158 609 -153 609 -147 ct
-609 -141 608 -133 605 -123 ct 605 -123 605 -123 591 -76 ct 612 -114 632 -140 652 -155 ct
-662 -164 673 -168 683 -168 ct 689 -168 694 -166 698 -162 ct 702 -158 704 -151 704 -143 ct
-704 -135 703 -128 700 -120 ct 700 -120 700 -120 677 -48 ct 672 -33 669 -24 669 -22 ct
-669 -21 670 -19 671 -18 ct 672 -17 673 -17 674 -17 ct 675 -17 677 -18 680 -20 ct
-686 -25 692 -33 698 -42 ct 698 -42 698 -42 704 -38 ct 701 -33 696 -26 688 -18 ct
-681 -9 674 -3 669 0 ct 663 3 658 4 654 4 ct 650 4 646 3 643 0 ct 641 -3 639 -7 639 -11 ct
-639 -17 642 -29 648 -47 ct 648 -47 648 -47 668 -106 ct 672 -120 674 -128 675 -129 ct
-675 -132 675 -134 675 -136 ct 675 -139 675 -142 673 -143 ct 671 -145 670 -146 668 -146 ct
-662 -146 656 -143 650 -138 ct 631 -122 613 -100 597 -72 ct 586 -53 576 -29 567 0 ct
-567 0 567 0 540 0 ct 540 0 540 0 574 -112 ct 578 -124 580 -132 580 -136 ct 580 -140 579 -142 577 -144 ct
-576 -145 574 -146 572 -146 ct 568 -146 564 -145 559 -142 ct 551 -137 542 -126 530 -111 ct
-518 -95 508 -80 502 -65 ct 499 -59 491 -37 479 0 ct 479 0 479 0 452 0 ct 452 0 452 0 487 -120 ct
-487 -120 487 -120 491 -136 ct 492 -138 493 -140 493 -141 ct 493 -144 491 -146 489 -148 ct
-486 -150 483 -151 479 -151 ct 478 -151 473 -150 466 -149 ct 466 -149 466 -149 464 -156 ct
-464 -156 464 -156 528 -168 ct p ef
-763 -70 m 762 -64 762 -59 762 -55 ct 762 -44 766 -35 774 -27 ct 782 -20 792 -16 803 -16 ct
-812 -16 821 -18 830 -21 ct 838 -25 851 -33 867 -45 ct 867 -45 867 -45 871 -40 ct
-841 -11 813 4 786 4 ct 768 4 754 -2 745 -13 ct 736 -24 731 -37 731 -51 ct 731 -69 737 -88 748 -107 ct
-760 -126 774 -141 792 -152 ct 809 -163 827 -168 845 -168 ct 858 -168 868 -165 874 -160 ct
-881 -155 884 -148 884 -141 ct 884 -131 880 -121 871 -112 ct 860 -99 844 -89 823 -82 ct
-809 -77 789 -73 763 -70 ct p
-764 -79 m 783 -81 799 -85 811 -90 ct 826 -97 838 -105 846 -114 ct 854 -124 858 -133 858 -141 ct
-858 -147 856 -151 853 -154 ct 850 -157 845 -159 838 -159 ct 825 -159 811 -152 797 -139 ct
-782 -125 771 -105 764 -79 ct p ef
-pom
-gr
-gr
-gr
-gr
-gr
-11285 17781 m 10235 17781 l 10235 15384 l 12335 15384 l 12335 17781 l
-11285 17781 l pc
-gs
-2935 18044 m 5886 18044 l 5886 19635 l 2935 19635 l 2935 18044 l eoclip newpath
-gs
-tm setmatrix
-503 15002 t
-1 1 s
-gs
-gs
-0 0 m 2956 0 l 2956 1591 l 0 1591 l 0 0 l eoclip newpath
-gs
-pum
-1323 556 t
-74 -379 m 74 -379 74 -379 176 -429 ct 176 -429 176 -429 186 -429 ct 186 -429 186 -429 186 -74 ct
-186 -50 187 -36 189 -30 ct 191 -24 195 -19 201 -16 ct 207 -13 220 -11 239 -11 ct
-239 -11 239 -11 239 0 ct 239 0 239 0 82 0 ct 82 0 82 0 82 -11 ct 101 -11 114 -13 120 -16 ct
-125 -19 129 -23 132 -28 ct 134 -33 135 -49 135 -74 ct 135 -74 135 -74 135 -301 ct
-135 -331 134 -351 132 -359 ct 130 -366 128 -371 124 -374 ct 120 -377 116 -379 110 -379 ct
-103 -379 92 -375 79 -369 ct 79 -369 79 -369 74 -379 ct p ef
-pom
-gr
-gs
-132 741 m 2693 0 rl 0 31 rl 2693 neg 0 rl ef p ef
-
-gr
-gs
-pum
-265 1349 t
-208 -345 m 197 -344 l 113 -410 l 25 -342 l 11 -345 l 113 -462 l 208 -345 l
-p ef
-pom
-gr
-gs
-pum
-212 1376 t
-331 -261 m 331 -261 331 -261 322 -229 ct 322 -229 322 -229 270 -229 ct 274 -218 276 -207 276 -198 ct
-276 -170 264 -146 241 -124 ct 217 -103 185 -91 144 -89 ct 122 -82 106 -75 95 -65 ct
-91 -62 89 -59 89 -55 ct 89 -51 91 -47 95 -44 ct 98 -40 108 -37 123 -33 ct 123 -33 123 -33 183 -20 ct
-216 -12 238 -3 248 8 ct 259 19 264 31 264 46 ct 264 63 258 78 245 92 ct 233 106 215 117 190 125 ct
-166 133 140 137 111 137 ct 85 137 62 134 41 128 ct 20 122 5 114 -4 103 ct -13 93 -18 82 -18 71 ct
--18 63 -15 53 -9 44 ct -3 34 4 26 13 20 ct 19 16 35 7 61 -8 ct 52 -15 47 -23 47 -32 ct
-47 -40 51 -49 59 -58 ct 67 -68 85 -78 111 -89 ct 89 -93 71 -103 58 -118 ct 45 -132 39 -149 39 -167 ct
-39 -196 52 -222 78 -245 ct 104 -268 138 -280 181 -280 ct 196 -280 209 -278 219 -275 ct
-229 -272 239 -268 248 -261 ct 248 -261 248 -261 331 -261 ct p
-225 -211 m 225 -228 220 -240 211 -250 ct 201 -259 189 -264 173 -264 ct 149 -264 129 -252 114 -229 ct
-98 -206 90 -182 90 -157 ct 90 -141 95 -128 105 -118 ct 115 -108 127 -103 142 -103 ct
-153 -103 164 -106 174 -112 ct 185 -118 194 -126 201 -136 ct 209 -147 214 -160 219 -176 ct
-223 -192 225 -204 225 -211 ct p
-74 0 m 57 8 45 18 36 30 ct 27 42 23 53 23 65 ct 23 79 29 90 42 99 ct 59 112 85 118 120 118 ct
-149 118 175 113 196 103 ct 217 93 227 80 227 64 ct 227 56 223 48 215 41 ct 208 34 193 28 170 24 ct
-158 21 126 13 74 0 ct p ef
-pom
-gr
-gs
-pum
-661 1508 t
-119 -164 m 119 -164 119 -164 116 -150 ct 116 -150 116 -150 88 -150 ct 88 -150 88 -150 65 -69 ct
-55 -34 45 -6 36 13 ct 23 41 9 60 -6 70 ct -18 78 -29 82 -41 82 ct -49 82 -55 80 -60 75 ct
--64 72 -66 68 -66 63 ct -66 59 -64 55 -61 52 ct -58 49 -54 48 -50 48 ct -46 48 -44 49 -41 51 ct
--39 53 -38 56 -38 58 ct -38 61 -39 64 -41 66 ct -43 68 -44 69 -44 70 ct -44 71 -44 72 -43 73 ct
--42 74 -40 74 -38 74 ct -32 74 -27 72 -21 69 ct -15 66 -10 61 -5 54 ct -1 48 3 38 8 26 ct
-9 21 14 4 22 -25 ct 22 -25 22 -25 59 -150 ct 59 -150 59 -150 22 -150 ct 22 -150 22 -150 25 -164 ct
-36 -164 44 -165 49 -166 ct 53 -168 57 -170 61 -174 ct 65 -178 70 -186 75 -197 ct
-82 -212 89 -224 95 -232 ct 104 -243 113 -251 123 -257 ct 132 -262 142 -265 150 -265 ct
-159 -265 166 -263 172 -258 ct 177 -253 180 -248 180 -242 ct 180 -238 179 -234 176 -231 ct
-173 -228 169 -227 165 -227 ct 161 -227 158 -228 156 -230 ct 153 -233 152 -235 152 -238 ct
-152 -240 153 -243 155 -245 ct 157 -248 158 -250 158 -251 ct 158 -253 157 -254 156 -255 ct
-155 -256 153 -257 150 -257 ct 143 -257 136 -254 130 -249 ct 122 -242 115 -232 109 -217 ct
-106 -210 100 -192 92 -164 ct 92 -164 92 -164 119 -164 ct p ef
-125 -158 m 125 -158 125 -158 189 -168 ct 189 -168 189 -168 163 -78 ct 185 -115 204 -141 222 -155 ct
-232 -164 240 -168 247 -168 ct 251 -168 254 -167 256 -164 ct 259 -162 260 -158 260 -154 ct
-260 -146 258 -138 254 -130 ct 251 -125 247 -122 241 -122 ct 238 -122 236 -123 234 -125 ct
-232 -127 230 -130 230 -134 ct 230 -136 229 -138 228 -138 ct 227 -139 226 -140 225 -140 ct
-223 -140 221 -140 219 -139 ct 216 -137 211 -132 204 -124 ct 194 -112 183 -96 171 -77 ct
-166 -68 161 -59 158 -49 ct 153 -35 150 -26 149 -23 ct 149 -23 149 -23 142 0 ct
-142 0 142 0 114 0 ct 114 0 114 0 147 -116 ct 151 -129 153 -139 153 -144 ct 153 -146 153 -148 151 -150 ct
-148 -152 145 -153 141 -153 ct 139 -153 134 -152 128 -151 ct 128 -151 128 -151 125 -158 ct
-p ef
-443 -166 m 443 -166 443 -166 406 -40 ct 406 -40 406 -40 402 -23 ct 402 -21 401 -20 401 -19 ct
-401 -17 402 -15 403 -14 ct 403 -13 404 -13 405 -13 ct 406 -13 408 -13 409 -15 ct
-413 -18 417 -26 423 -37 ct 423 -37 423 -37 429 -33 ct 422 -20 415 -11 407 -5 ct
-399 1 392 4 386 4 ct 382 4 378 3 376 0 ct 373 -3 372 -6 372 -11 ct 372 -17 373 -25 376 -35 ct
-376 -35 376 -35 380 -50 ct 362 -29 346 -14 331 -5 ct 320 1 309 4 299 4 ct 289 4 280 0 273 -7 ct
-266 -14 262 -25 262 -38 ct 262 -57 268 -77 281 -99 ct 294 -120 311 -138 331 -151 ct
-346 -161 361 -166 374 -166 ct 383 -166 390 -164 395 -160 ct 401 -157 405 -151 408 -142 ct
-408 -142 408 -142 413 -162 ct 413 -162 413 -162 443 -166 ct p
-373 -157 m 365 -157 356 -153 346 -146 ct 332 -136 320 -120 309 -100 ct 298 -80 293 -61 293 -45 ct
-293 -37 295 -30 300 -25 ct 305 -20 310 -18 317 -18 ct 332 -18 349 -28 367 -47 ct
-389 -73 399 -100 398 -128 ct 398 -138 396 -145 392 -150 ct 387 -155 381 -157 373 -157 ct
-p ef
-528 -168 m 528 -168 528 -168 504 -84 ct 515 -104 524 -119 532 -129 ct 544 -144 555 -155 567 -162 ct
-573 -166 580 -168 588 -168 ct 594 -168 599 -166 603 -162 ct 607 -158 609 -153 609 -147 ct
-609 -141 608 -133 605 -123 ct 605 -123 605 -123 591 -76 ct 612 -114 632 -140 652 -155 ct
-662 -164 673 -168 683 -168 ct 689 -168 694 -166 698 -162 ct 702 -158 704 -151 704 -143 ct
-704 -135 703 -128 700 -120 ct 700 -120 700 -120 677 -48 ct 672 -33 669 -24 669 -22 ct
-669 -21 670 -19 671 -18 ct 672 -17 673 -17 674 -17 ct 675 -17 677 -18 680 -20 ct
-686 -25 692 -33 698 -42 ct 698 -42 698 -42 704 -38 ct 701 -33 696 -26 688 -18 ct
-681 -9 674 -3 669 0 ct 663 3 658 4 654 4 ct 650 4 646 3 643 0 ct 641 -3 639 -7 639 -11 ct
-639 -17 642 -29 648 -47 ct 648 -47 648 -47 668 -106 ct 672 -120 674 -128 675 -129 ct
-675 -132 675 -134 675 -136 ct 675 -139 675 -142 673 -143 ct 671 -145 670 -146 668 -146 ct
-662 -146 656 -143 650 -138 ct 631 -122 613 -100 597 -72 ct 586 -53 576 -29 567 0 ct
-567 0 567 0 540 0 ct 540 0 540 0 574 -112 ct 578 -124 580 -132 580 -136 ct 580 -140 579 -142 577 -144 ct
-576 -145 574 -146 572 -146 ct 568 -146 564 -145 559 -142 ct 551 -137 542 -126 530 -111 ct
-518 -95 508 -80 502 -65 ct 499 -59 491 -37 479 0 ct 479 0 479 0 452 0 ct 452 0 452 0 487 -120 ct
-487 -120 487 -120 491 -136 ct 492 -138 493 -140 493 -141 ct 493 -144 491 -146 489 -148 ct
-486 -150 483 -151 479 -151 ct 478 -151 473 -150 466 -149 ct 466 -149 466 -149 464 -156 ct
-464 -156 464 -156 528 -168 ct p ef
-763 -70 m 762 -64 762 -59 762 -55 ct 762 -44 766 -35 774 -27 ct 782 -20 792 -16 803 -16 ct
-812 -16 821 -18 830 -21 ct 838 -25 851 -33 867 -45 ct 867 -45 867 -45 871 -40 ct
-841 -11 813 4 786 4 ct 768 4 754 -2 745 -13 ct 736 -24 731 -37 731 -51 ct 731 -69 737 -88 748 -107 ct
-760 -126 774 -141 792 -152 ct 809 -163 827 -168 845 -168 ct 858 -168 868 -165 874 -160 ct
-881 -155 884 -148 884 -141 ct 884 -131 880 -121 871 -112 ct 860 -99 844 -89 823 -82 ct
-809 -77 789 -73 763 -70 ct p
-764 -79 m 783 -81 799 -85 811 -90 ct 826 -97 838 -105 846 -114 ct 854 -124 858 -133 858 -141 ct
-858 -147 856 -151 853 -154 ct 850 -157 845 -159 838 -159 ct 825 -159 811 -152 797 -139 ct
-782 -125 771 -105 764 -79 ct p ef
-pom
-gr
-gs
-pum
-1720 1349 t
-208 -345 m 197 -344 l 113 -410 l 25 -342 l 11 -345 l 113 -462 l 208 -345 l
-p ef
-pom
-gr
-gs
-pum
-1667 1376 t
-331 -261 m 331 -261 331 -261 322 -229 ct 322 -229 322 -229 270 -229 ct 274 -218 276 -207 276 -198 ct
-276 -170 264 -146 241 -124 ct 217 -103 185 -91 144 -89 ct 122 -82 106 -75 95 -65 ct
-91 -62 89 -59 89 -55 ct 89 -51 91 -47 95 -44 ct 98 -40 108 -37 123 -33 ct 123 -33 123 -33 183 -20 ct
-216 -12 238 -3 248 8 ct 259 19 264 31 264 46 ct 264 63 258 78 245 92 ct 233 106 215 117 190 125 ct
-166 133 140 137 111 137 ct 85 137 62 134 41 128 ct 20 122 5 114 -4 103 ct -13 93 -18 82 -18 71 ct
--18 63 -15 53 -9 44 ct -3 34 4 26 13 20 ct 19 16 35 7 61 -8 ct 52 -15 47 -23 47 -32 ct
-47 -40 51 -49 59 -58 ct 67 -68 85 -78 111 -89 ct 89 -93 71 -103 58 -118 ct 45 -132 39 -149 39 -167 ct
-39 -196 52 -222 78 -245 ct 104 -268 138 -280 181 -280 ct 196 -280 209 -278 219 -275 ct
-229 -272 239 -268 248 -261 ct 248 -261 248 -261 331 -261 ct p
-225 -211 m 225 -228 220 -240 211 -250 ct 201 -259 189 -264 173 -264 ct 149 -264 129 -252 114 -229 ct
-98 -206 90 -182 90 -157 ct 90 -141 95 -128 105 -118 ct 115 -108 127 -103 142 -103 ct
-153 -103 164 -106 174 -112 ct 185 -118 194 -126 201 -136 ct 209 -147 214 -160 219 -176 ct
-223 -192 225 -204 225 -211 ct p
-74 0 m 57 8 45 18 36 30 ct 27 42 23 53 23 65 ct 23 79 29 90 42 99 ct 59 112 85 118 120 118 ct
-149 118 175 113 196 103 ct 217 93 227 80 227 64 ct 227 56 223 48 215 41 ct 208 34 193 28 170 24 ct
-158 21 126 13 74 0 ct p ef
-pom
-gr
-gs
-pum
-2064 1508 t
-134 -168 m 134 -168 134 -168 124 -111 ct 124 -111 124 -111 117 -111 ct 116 -128 113 -140 107 -148 ct
-101 -155 93 -159 84 -159 ct 77 -159 71 -157 66 -153 ct 62 -148 60 -143 60 -137 ct
-60 -133 61 -129 63 -126 ct 64 -122 68 -117 74 -110 ct 89 -93 99 -79 103 -70 ct
-108 -62 110 -53 110 -45 ct 110 -32 105 -21 94 -11 ct 84 -1 71 4 55 4 ct 46 4 36 2 24 -3 ct
-20 -4 17 -5 15 -5 ct 10 -5 6 -2 3 4 ct 3 4 3 4 -4 4 ct -4 4 -4 4 6 -56 ct 6 -56 6 -56 13 -56 ct
-14 -37 18 -24 25 -17 ct 32 -9 41 -5 53 -5 ct 63 -5 70 -8 76 -13 ct 81 -18 84 -25 84 -32 ct
-84 -37 83 -42 81 -46 ct 78 -53 71 -63 60 -76 ct 49 -89 42 -99 39 -106 ct 36 -112 34 -119 34 -125 ct
-34 -137 38 -147 47 -156 ct 55 -164 66 -168 80 -168 ct 83 -168 87 -168 90 -167 ct
-92 -167 96 -165 102 -163 ct 108 -160 112 -159 114 -159 ct 119 -159 124 -162 127 -168 ct
-127 -168 127 -168 134 -168 ct p ef
-331 -164 m 331 -164 331 -164 297 -52 ct 292 -35 289 -24 289 -20 ct 289 -18 290 -16 290 -15 ct
-291 -14 292 -14 293 -14 ct 294 -14 296 -15 298 -17 ct 300 -18 306 -26 314 -39 ct
-314 -39 314 -39 319 -35 ct 311 -20 302 -9 293 -2 ct 287 2 281 4 276 4 ct 271 4 268 3 266 0 ct
-263 -3 262 -6 262 -10 ct 262 -15 263 -20 264 -27 ct 267 -35 273 -55 282 -86 ct
-260 -51 242 -28 227 -15 ct 212 -2 198 4 186 4 ct 180 4 175 2 171 -2 ct 167 -6 165 -11 165 -17 ct
-165 -26 169 -40 175 -59 ct 175 -59 175 -59 194 -117 ct 199 -130 202 -139 202 -142 ct
-202 -144 201 -145 200 -146 ct 198 -147 197 -148 196 -148 ct 192 -148 189 -147 186 -145 ct
-183 -143 176 -136 165 -124 ct 165 -124 165 -124 159 -128 ct 169 -143 180 -153 191 -160 ct
-200 -165 208 -168 215 -168 ct 220 -168 224 -166 227 -163 ct 230 -160 232 -155 232 -150 ct
-232 -143 229 -131 223 -114 ct 223 -114 223 -114 203 -55 ct 197 -39 194 -29 194 -24 ct
-194 -22 195 -20 197 -19 ct 199 -17 201 -16 203 -16 ct 208 -16 213 -18 220 -23 ct
-227 -27 236 -36 247 -50 ct 259 -64 268 -77 275 -90 ct 282 -102 290 -122 299 -149 ct
-299 -149 299 -149 304 -164 ct 304 -164 304 -164 331 -164 ct p ef
-453 -265 m 453 -265 453 -265 415 -136 ct 427 -148 437 -157 445 -161 ct 454 -166 463 -168 472 -168 ct
-485 -168 496 -164 504 -154 ct 513 -145 517 -133 517 -118 ct 517 -98 511 -78 500 -59 ct
-489 -39 475 -23 459 -12 ct 442 -2 425 4 409 4 ct 391 4 372 -3 353 -17 ct 353 -17 353 -17 409 -213 ct
-414 -228 416 -236 416 -239 ct 416 -242 415 -244 413 -246 ct 410 -248 406 -249 400 -249 ct
-397 -249 393 -249 387 -248 ct 387 -248 387 -248 387 -255 ct 387 -255 387 -255 453 -265 ct
-p
-380 -15 m 392 -8 403 -5 412 -5 ct 422 -5 433 -9 444 -17 ct 456 -25 465 -38 474 -57 ct
-482 -76 486 -95 486 -114 ct 486 -125 483 -134 478 -140 ct 473 -147 466 -150 459 -150 ct
-448 -150 437 -145 427 -136 ct 417 -127 409 -114 404 -97 ct 404 -97 404 -97 380 -15 ct
-p ef
-648 -164 m 648 -164 648 -164 645 -150 ct 645 -150 645 -150 617 -150 ct 617 -150 617 -150 594 -69 ct
-584 -34 574 -6 565 13 ct 552 41 538 60 523 70 ct 511 78 500 82 488 82 ct 481 82 474 80 469 75 ct
-465 72 463 68 463 63 ct 463 59 465 55 468 52 ct 471 49 475 48 479 48 ct 483 48 485 49 488 51 ct
-490 53 491 56 491 58 ct 491 61 490 64 488 66 ct 486 68 485 69 485 70 ct 485 71 485 72 486 73 ct
-487 74 489 74 491 74 ct 497 74 502 72 508 69 ct 514 66 519 61 524 54 ct 528 48 532 38 537 26 ct
-538 21 543 4 551 -25 ct 551 -25 551 -25 588 -150 ct 588 -150 588 -150 551 -150 ct
-551 -150 551 -150 554 -164 ct 565 -164 573 -165 578 -166 ct 582 -168 586 -170 590 -174 ct
-594 -178 599 -186 604 -197 ct 611 -212 618 -224 624 -232 ct 633 -243 642 -251 652 -257 ct
-661 -262 671 -265 679 -265 ct 688 -265 695 -263 701 -258 ct 706 -253 709 -248 709 -242 ct
-709 -238 708 -234 705 -231 ct 702 -228 698 -227 694 -227 ct 690 -227 687 -228 685 -230 ct
-682 -233 681 -235 681 -238 ct 681 -240 682 -243 684 -245 ct 686 -248 687 -250 687 -251 ct
-687 -253 686 -254 685 -255 ct 684 -256 682 -257 679 -257 ct 672 -257 665 -254 659 -249 ct
-651 -242 644 -232 638 -217 ct 635 -210 629 -192 621 -164 ct 621 -164 621 -164 648 -164 ct
-p ef
-pom
-gr
-gr
-gr
-gr
-gr
-4385 19688 m 2635 19688 l 2635 17888 l 6135 17888 l 6135 19688 l 4385 19688 l
-pc
-4385 17888 m 4198 17326 l 4573 17326 l 4385 17888 l p ef
-4409 12536 m 4409 15212 l 4384 15212 l 4359 15212 l 4359 12536 l 4384 12536 l
-4409 12536 l p ef
-4384 15212 m 4384 15237 l 4380 15237 l 4375 15235 l 4372 15234 l 4368 15231 l
-4365 15228 l 4362 15225 l 4361 15221 l 4359 15216 l 4359 15212 l 4359 15212 l
-4384 15212 l p ef
-4384 15187 m 4385 15187 l 4385 15212 l 4385 15237 l 4384 15237 l 4384 15212 l
-4384 15187 l p ef
-4385 15212 m 4385 15187 l 4389 15187 l 4394 15189 l 4397 15190 l 4401 15193 l
-4404 15196 l 4407 15199 l 4408 15203 l 4410 15208 l 4410 15212 l 4410 15212 l
-4385 15212 l p ef
-4410 15212 m 4410 17438 l 4385 17438 l 4360 17438 l 4360 15212 l 4385 15212 l
-4410 15212 l p ef
-7035 16587 m 6473 16775 l 6473 16400 l 7035 16587 l p ef
-4409 12536 m 4409 16587 l 4384 16587 l 4359 16587 l 4359 12536 l 4384 12536 l
-4409 12536 l p ef
-4384 16587 m 4384 16612 l 4380 16612 l 4375 16610 l 4372 16609 l 4368 16606 l
-4365 16603 l 4362 16600 l 4361 16596 l 4359 16591 l 4359 16587 l 4359 16587 l
-4384 16587 l p ef
-4384 16562 m 6585 16562 l 6585 16587 l 6585 16612 l 4384 16612 l 4384 16587 l
-4384 16562 l p ef
-10235 16583 m 9674 16775 l 9671 16400 l 10235 16583 l p ef
-9135 16562 m 9685 16562 l 9685 16587 l 9685 16612 l 9135 16612 l 9135 16587 l
-9135 16562 l p ef
-9685 16587 m 9710 16587 l 9710 16591 l 9708 16596 l 9707 16599 l 9704 16603 l
-9701 16606 l 9698 16609 l 9694 16610 l 9689 16612 l 9685 16612 l 9685 16612 l
-9685 16587 l p ef
-9660 16587 m 9660 16583 l 9685 16583 l 9710 16583 l 9710 16587 l 9685 16587 l
-9660 16587 l p ef
-9685 16583 m 9660 16583 l 9660 16579 l 9662 16574 l 9663 16571 l 9666 16567 l
-9669 16564 l 9672 16561 l 9676 16560 l 9681 16558 l 9685 16558 l 9685 16558 l
-9685 16583 l p ef
-9685 16558 m 9785 16558 l 9785 16583 l 9785 16608 l 9685 16608 l 9685 16583 l
-9685 16558 l p ef
-4385 22337 m 3971 22337 3635 22001 3635 21587 ct 3635 21173 3971 20837 4385 20837 ct
-4799 20837 5135 21173 5135 21587 ct 5135 22001 4799 22337 4385 22337 ct pc
-gs
-gs
-pum
-4102 21920 t
-246 -115 m 246 -309 l 54 -309 l 54 -390 l 246 -390 l 246 -582 l 328 -582 l
-328 -390 l 520 -390 l 520 -309 l 328 -309 l 328 -115 l 246 -115 l
-p ef
-pom
-gr
-gr
-gs
-7170 20868 m 8954 20868 l 8954 22496 l 7170 22496 l 7170 20868 l eoclip newpath
-gs
-tm setmatrix
-4736 17833 t
-1 1 s
-gs
-gs
-0 0 m 1784 0 l 1784 1628 l 0 1628 l 0 0 l eoclip newpath
-gs
-pum
-159 556 t
-86 9 m 86 9 86 9 122 -341 ct 124 -355 124 -365 124 -373 ct 124 -385 121 -394 114 -400 ct
-107 -406 95 -410 77 -410 ct 77 -410 77 -410 81 -421 ct 81 -421 81 -421 237 -421 ct
-237 -421 237 -421 234 -410 ct 213 -410 198 -406 191 -399 ct 183 -391 177 -372 175 -341 ct
-175 -341 175 -341 151 -113 ct 151 -113 151 -113 311 -361 ct 311 -365 311 -369 311 -371 ct
-311 -383 308 -392 301 -398 ct 294 -405 279 -409 257 -410 ct 257 -410 257 -410 259 -421 ct
-259 -421 259 -421 430 -421 ct 430 -421 430 -421 426 -410 ct 407 -410 393 -408 387 -405 ct
-382 -403 377 -399 374 -394 ct 371 -389 368 -380 366 -368 ct 365 -364 363 -340 358 -296 ct
-354 -251 347 -190 338 -113 ct 338 -113 338 -113 472 -317 ct 486 -339 496 -354 499 -363 ct
-503 -372 505 -380 505 -386 ct 505 -392 502 -397 497 -401 ct 492 -406 484 -409 472 -410 ct
-472 -410 472 -410 474 -421 ct 474 -421 474 -421 599 -421 ct 599 -421 599 -421 596 -410 ct
-585 -409 575 -406 567 -402 ct 558 -397 548 -389 537 -376 ct 530 -368 516 -349 496 -317 ct
-496 -317 496 -317 284 9 ct 284 9 284 9 273 9 ct 273 9 273 9 307 -317 ct 307 -317 307 -317 97 9 ct
-97 9 97 9 86 9 ct p ef
-pom
-gr
-gs
-pum
-847 556 t
-168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
-98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
-89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
-p ef
-pom
-gr
-gs
-pum
-1138 556 t
-54 -273 m 54 -273 54 -273 249 -273 ct 249 -273 249 -273 249 -265 ct 249 -265 249 -265 35 -42 ct
-35 -42 35 -42 125 -42 ct 147 -42 161 -43 166 -44 ct 172 -46 178 -50 183 -55 ct
-187 -60 193 -70 199 -84 ct 199 -84 199 -84 210 -84 ct 210 -84 210 -84 183 0 ct
-183 0 183 0 -18 0 ct -18 0 -18 0 -18 -9 ct -18 -9 -18 -9 196 -232 ct 196 -232 196 -232 109 -232 ct
-90 -232 78 -232 74 -231 ct 68 -229 63 -226 57 -221 ct 51 -216 45 -208 39 -196 ct
-39 -196 39 -196 28 -196 ct 28 -196 28 -196 54 -273 ct p ef
-pom
-gr
-gs
-pum
-1429 556 t
-33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
-86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
-143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
-33 131 33 131 33 116 ct p ef
-pom
-gr
-gs
-132 767 m 1521 0 rl 0 31 rl 1521 neg 0 rl ef p ef
-
-gr
-gs
-pum
-370 1323 t
-208 -345 m 197 -344 l 113 -410 l 25 -342 l 11 -345 l 113 -462 l 208 -345 l
-p ef
-pom
-gr
-gs
-pum
-318 1455 t
-328 -430 m 328 -430 328 -430 296 -80 ct 294 -64 294 -53 294 -48 ct 294 -40 295 -33 298 -29 ct
-302 -23 307 -18 314 -15 ct 321 -12 332 -11 348 -11 ct 348 -11 348 -11 345 0 ct
-345 0 345 0 180 0 ct 180 0 180 0 184 -11 ct 184 -11 184 -11 191 -11 ct 204 -11 215 -14 224 -20 ct
-230 -24 234 -30 238 -39 ct 240 -46 242 -61 244 -85 ct 244 -85 244 -85 249 -138 ct
-249 -138 249 -138 128 -138 ct 128 -138 128 -138 86 -80 ct 76 -67 70 -57 67 -52 ct
-65 -46 64 -41 64 -36 ct 64 -29 66 -24 72 -19 ct 77 -14 86 -11 98 -11 ct 98 -11 98 -11 95 0 ct
-95 0 95 0 -30 0 ct -30 0 -30 0 -27 -11 ct -12 -12 2 -17 14 -26 ct 25 -36 43 -57 66 -88 ct
-66 -88 66 -88 317 -430 ct 317 -430 317 -430 328 -430 ct p
-268 -327 m 144 -159 l 251 -159 l 268 -327 l p ef
-pom
-gr
-gs
-pum
-767 1455 t
-168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
-98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
-89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
-p ef
-pom
-gr
-gs
-pum
-1032 1455 t
-54 -273 m 54 -273 54 -273 249 -273 ct 249 -273 249 -273 249 -265 ct 249 -265 249 -265 35 -42 ct
-35 -42 35 -42 125 -42 ct 147 -42 161 -43 166 -44 ct 172 -46 178 -50 183 -55 ct
-187 -60 193 -70 199 -84 ct 199 -84 199 -84 210 -84 ct 210 -84 210 -84 183 0 ct
-183 0 183 0 -18 0 ct -18 0 -18 0 -18 -9 ct -18 -9 -18 -9 196 -232 ct 196 -232 196 -232 109 -232 ct
-90 -232 78 -232 74 -231 ct 68 -229 63 -226 57 -221 ct 51 -216 45 -208 39 -196 ct
-39 -196 39 -196 28 -196 ct 28 -196 28 -196 54 -273 ct p ef
-pom
-gr
-gs
-pum
-1349 1455 t
-33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
-86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
-143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
-33 131 33 131 33 116 ct p ef
-pom
-gr
-gr
-gr
-gr
-gr
-8085 22487 m 7035 22487 l 7035 20687 l 9135 20687 l 9135 22487 l 8085 22487 l
-pc
-5135 21586 m 5698 21399 l 5698 21774 l 5135 21586 l p ef
-7035 21612 m 6085 21612 l 6085 21587 l 6085 21562 l 7035 21562 l 7035 21587 l
-7035 21612 l p ef
-6085 21587 m 6085 21612 l 6081 21612 l 6076 21610 l 6073 21609 l 6069 21606 l
-6066 21603 l 6063 21600 l 6062 21596 l 6060 21591 l 6060 21587 l 6060 21587 l
-6085 21587 l p ef
-6060 21587 m 6060 21586 l 6085 21586 l 6110 21586 l 6110 21587 l 6085 21587 l
-6060 21587 l p ef
-6085 21586 m 6085 21561 l 6089 21561 l 6094 21563 l 6097 21564 l 6101 21567 l
-6104 21570 l 6107 21573 l 6108 21577 l 6110 21582 l 6110 21586 l 6110 21586 l
-6085 21586 l p ef
-6085 21611 m 5585 21611 l 5585 21586 l 5585 21561 l 6085 21561 l 6085 21586 l
-6085 21611 l p ef
-12135 22485 m 10635 22485 l 10635 20685 l 13635 20685 l 13635 22485 l
-12135 22485 l pc
-gs
-gs
-pum
-11484 21451 t
-116 -354 m 116 -354 116 -354 116 -207 ct 116 -207 116 -207 184 -207 ct 200 -207 211 -210 218 -217 ct
-226 -224 231 -238 233 -258 ct 233 -258 233 -258 243 -258 ct 243 -258 243 -258 243 -131 ct
-243 -131 243 -131 233 -131 ct 233 -146 231 -156 227 -163 ct 224 -170 219 -175 212 -179 ct
-206 -182 197 -184 184 -184 ct 184 -184 184 -184 116 -184 ct 116 -184 116 -184 116 -66 ct
-116 -47 117 -35 120 -28 ct 121 -24 125 -20 131 -17 ct 139 -12 147 -10 156 -10 ct
-156 -10 156 -10 169 -10 ct 169 -10 169 -10 169 0 ct 169 0 169 0 10 0 ct 10 0 10 0 10 -10 ct
-10 -10 10 -10 23 -10 ct 38 -10 50 -15 56 -24 ct 61 -29 63 -44 63 -66 ct 63 -66 63 -66 63 -308 ct
-63 -327 62 -339 59 -346 ct 58 -350 54 -354 48 -357 ct 40 -362 32 -364 23 -364 ct
-23 -364 23 -364 10 -364 ct 10 -364 10 -364 10 -374 ct 10 -374 10 -374 286 -374 ct
-286 -374 286 -374 290 -292 ct 290 -292 290 -292 280 -292 ct 275 -310 270 -322 264 -331 ct
-258 -339 250 -345 241 -348 ct 231 -352 217 -354 198 -354 ct 198 -354 198 -354 116 -354 ct
-p ef
-395 -392 m 403 -392 409 -389 415 -384 ct 420 -378 423 -372 423 -364 ct 423 -356 420 -350 415 -344 ct
-409 -339 403 -336 395 -336 ct 387 -336 381 -339 375 -344 ct 370 -350 367 -356 367 -364 ct
-367 -372 370 -378 375 -384 ct 381 -389 387 -392 395 -392 ct p
-418 -260 m 418 -260 418 -260 418 -57 ct 418 -41 419 -31 421 -26 ct 424 -20 427 -16 431 -14 ct
-436 -11 443 -10 455 -10 ct 455 -10 455 -10 455 0 ct 455 0 455 0 335 0 ct 335 0 335 0 335 -10 ct
-347 -10 355 -11 359 -14 ct 363 -16 366 -20 368 -25 ct 371 -31 372 -41 372 -57 ct
-372 -57 372 -57 372 -154 ct 372 -181 371 -199 370 -207 ct 368 -213 366 -217 364 -220 ct
-361 -222 357 -223 352 -223 ct 347 -223 341 -222 334 -219 ct 334 -219 334 -219 330 -229 ct
-330 -229 330 -229 406 -260 ct 406 -260 406 -260 418 -260 ct p ef
-477 -253 m 477 -253 477 -253 593 -253 ct 593 -253 593 -253 593 -243 ct 586 -243 581 -242 578 -239 ct
-575 -236 574 -233 574 -229 ct 574 -224 578 -217 585 -208 ct 587 -205 590 -200 594 -194 ct
-594 -194 594 -194 612 -166 ct 612 -166 612 -166 633 -194 ct 646 -211 653 -223 653 -228 ct
-653 -232 651 -236 648 -239 ct 645 -242 640 -243 633 -243 ct 633 -243 633 -243 633 -253 ct
-633 -253 633 -253 716 -253 ct 716 -253 716 -253 716 -243 ct 707 -242 700 -240 693 -236 ct
-684 -229 672 -216 657 -195 ct 657 -195 657 -195 623 -149 ct 623 -149 623 -149 685 -58 ct
-701 -36 712 -22 718 -18 ct 725 -13 733 -11 744 -10 ct 744 -10 744 -10 744 0 ct
-744 0 744 0 624 0 ct 624 0 624 0 624 -10 ct 632 -10 639 -12 644 -16 ct 647 -18 649 -22 649 -26 ct
-649 -30 643 -41 631 -58 ct 631 -58 631 -58 594 -112 ct 594 -112 594 -112 554 -59 ct
-542 -42 536 -32 536 -29 ct 536 -24 538 -20 542 -16 ct 546 -12 553 -10 561 -10 ct
-561 -10 561 -10 561 0 ct 561 0 561 0 479 0 ct 479 0 479 0 479 -10 ct 486 -11 491 -13 496 -17 ct
-503 -22 515 -36 531 -58 ct 531 -58 531 -58 584 -128 ct 584 -128 584 -128 536 -198 ct
-523 -218 512 -230 505 -235 ct 497 -240 488 -243 477 -243 ct 477 -243 477 -243 477 -253 ct
-p ef
-814 -158 m 814 -121 823 -92 841 -71 ct 859 -50 880 -39 905 -39 ct 921 -39 936 -43 948 -52 ct
-960 -61 970 -77 978 -99 ct 978 -99 978 -99 987 -94 ct 983 -68 972 -45 953 -24 ct
-935 -3 912 7 884 7 ct 854 7 828 -5 806 -28 ct 785 -52 774 -83 774 -123 ct 774 -166 785 -200 807 -224 ct
-829 -248 857 -260 890 -260 ct 918 -260 942 -251 960 -232 ct 978 -214 987 -189 987 -158 ct
-987 -158 987 -158 814 -158 ct p
-814 -174 m 814 -174 814 -174 930 -174 ct 929 -190 927 -201 924 -208 ct 920 -218 913 -226 904 -231 ct
-895 -237 885 -240 876 -240 ct 860 -240 847 -234 835 -223 ct 823 -211 816 -195 814 -174 ct
-p ef
-1201 -29 m 1189 -16 1177 -7 1165 -1 ct 1153 4 1140 7 1127 7 ct 1099 7 1075 -4 1054 -27 ct
-1033 -50 1023 -80 1023 -116 ct 1023 -152 1034 -185 1057 -215 ct 1080 -245 1110 -260 1146 -260 ct
-1168 -260 1186 -252 1201 -237 ct 1201 -237 1201 -237 1201 -286 ct 1201 -314 1200 -332 1199 -338 ct
-1198 -345 1195 -349 1192 -352 ct 1190 -354 1186 -355 1182 -355 ct 1177 -355 1170 -354 1163 -351 ct
-1163 -351 1163 -351 1159 -361 ct 1159 -361 1159 -361 1234 -392 ct 1234 -392 1234 -392 1246 -392 ct
-1246 -392 1246 -392 1246 -99 ct 1246 -70 1247 -53 1248 -46 ct 1249 -40 1252 -36 1255 -33 ct
-1258 -31 1261 -29 1265 -29 ct 1270 -29 1277 -31 1285 -34 ct 1285 -34 1285 -34 1288 -24 ct
-1288 -24 1288 -24 1214 7 ct 1214 7 1214 7 1201 7 ct 1201 7 1201 7 1201 -29 ct p
-1201 -48 m 1201 -48 1201 -48 1201 -177 ct 1200 -189 1197 -201 1191 -211 ct
-1186 -221 1178 -229 1169 -234 ct 1160 -239 1151 -242 1142 -242 ct 1126 -242 1112 -235 1099 -220 ct
-1082 -201 1074 -174 1074 -137 ct 1074 -100 1082 -72 1098 -52 ct 1115 -33 1133 -23 1152 -23 ct
-1169 -23 1185 -31 1201 -48 ct p ef
-pom
-gr
-gs
-pum
-11027 22078 t
-233 -95 m 226 -62 213 -37 193 -19 ct 173 -2 151 7 127 7 ct 98 7 73 -5 52 -29 ct
-31 -53 20 -85 20 -126 ct 20 -166 32 -198 55 -223 ct 79 -248 108 -260 141 -260 ct
-166 -260 186 -253 202 -240 ct 218 -227 226 -214 226 -199 ct 226 -192 224 -187 219 -182 ct
-215 -178 208 -176 200 -176 ct 190 -176 182 -180 176 -187 ct 173 -190 171 -198 170 -209 ct
-169 -220 165 -228 158 -234 ct 152 -239 143 -242 132 -242 ct 113 -242 99 -235 87 -222 ct
-72 -204 65 -180 65 -150 ct 65 -120 72 -94 87 -71 ct 102 -48 122 -36 147 -36 ct
-165 -36 181 -42 196 -54 ct 206 -62 215 -77 225 -99 ct 225 -99 225 -99 233 -95 ct
-p ef
-392 -260 m 430 -260 461 -246 484 -217 ct 503 -192 513 -163 513 -131 ct 513 -109 508 -86 497 -63 ct
-486 -40 471 -22 452 -11 ct 433 1 412 7 389 7 ct 351 7 321 -8 298 -38 ct 279 -64 270 -92 270 -124 ct
-270 -147 276 -170 287 -193 ct 299 -216 314 -233 332 -244 ct 351 -255 371 -260 392 -260 ct
-p
-383 -242 m 374 -242 364 -239 354 -233 ct 344 -228 336 -218 330 -203 ct 324 -189 321 -170 321 -147 ct
-321 -111 328 -79 343 -53 ct 358 -26 377 -13 401 -13 ct 418 -13 433 -20 445 -35 ct
-456 -50 462 -75 462 -110 ct 462 -155 452 -190 433 -216 ct 420 -233 403 -242 383 -242 ct
-p ef
-731 -29 m 719 -16 707 -7 695 -1 ct 683 4 670 7 657 7 ct 629 7 605 -4 584 -27 ct
-563 -50 553 -80 553 -116 ct 553 -152 564 -185 587 -215 ct 610 -245 640 -260 676 -260 ct
-698 -260 716 -252 731 -237 ct 731 -237 731 -237 731 -286 ct 731 -314 730 -332 729 -338 ct
-728 -345 725 -349 722 -352 ct 720 -354 716 -355 712 -355 ct 707 -355 700 -354 693 -351 ct
-693 -351 693 -351 689 -361 ct 689 -361 689 -361 764 -392 ct 764 -392 764 -392 776 -392 ct
-776 -392 776 -392 776 -99 ct 776 -70 777 -53 778 -46 ct 779 -40 782 -36 785 -33 ct
-788 -31 791 -29 795 -29 ct 800 -29 807 -31 815 -34 ct 815 -34 815 -34 818 -24 ct
-818 -24 818 -24 744 7 ct 744 7 744 7 731 7 ct 731 7 731 7 731 -29 ct p
-731 -48 m 731 -48 731 -48 731 -177 ct 730 -189 727 -201 721 -211 ct 716 -221 708 -229 699 -234 ct
-690 -239 681 -242 672 -242 ct 656 -242 642 -235 629 -220 ct 612 -201 604 -174 604 -137 ct
-604 -100 612 -72 628 -52 ct 645 -33 663 -23 682 -23 ct 699 -23 715 -31 731 -48 ct
-p ef
-877 -158 m 877 -121 886 -92 904 -71 ct 922 -50 943 -39 968 -39 ct 984 -39 999 -43 1011 -52 ct
-1023 -61 1033 -77 1041 -99 ct 1041 -99 1041 -99 1050 -94 ct 1046 -68 1035 -45 1016 -24 ct
-998 -3 975 7 947 7 ct 917 7 891 -5 869 -28 ct 848 -52 837 -83 837 -123 ct 837 -166 848 -200 870 -224 ct
-892 -248 920 -260 953 -260 ct 981 -260 1005 -251 1023 -232 ct 1041 -214 1050 -189 1050 -158 ct
-1050 -158 1050 -158 877 -158 ct p
-877 -174 m 877 -174 877 -174 993 -174 ct 992 -190 990 -201 987 -208 ct 983 -218 976 -226 967 -231 ct
-958 -237 948 -240 939 -240 ct 923 -240 910 -234 898 -223 ct 886 -211 879 -195 877 -174 ct
-p ef
-1154 -209 m 1178 -243 1205 -260 1233 -260 ct 1259 -260 1281 -249 1300 -227 ct
-1319 -205 1329 -175 1329 -136 ct 1329 -92 1314 -56 1284 -28 ct 1259 -5 1230 7 1199 7 ct
-1184 7 1170 4 1154 -1 ct 1139 -6 1124 -14 1108 -25 ct 1108 -25 1108 -25 1108 -286 ct
-1108 -314 1107 -332 1106 -338 ct 1105 -345 1102 -349 1099 -352 ct 1096 -354 1093 -355 1088 -355 ct
-1083 -355 1077 -354 1069 -351 ct 1069 -351 1069 -351 1065 -361 ct 1065 -361 1065 -361 1141 -392 ct
-1141 -392 1141 -392 1154 -392 ct 1154 -392 1154 -392 1154 -209 ct p
-1154 -192 m 1154 -192 1154 -192 1154 -41 ct 1163 -32 1173 -25 1183 -20 ct 1193 -15 1203 -13 1213 -13 ct
-1230 -13 1245 -22 1260 -41 ct 1274 -59 1281 -86 1281 -121 ct 1281 -153 1274 -178 1260 -195 ct
-1245 -212 1229 -221 1211 -221 ct 1201 -221 1192 -219 1182 -214 ct 1175 -210 1165 -203 1154 -192 ct
-p ef
-1492 -260 m 1530 -260 1561 -246 1584 -217 ct 1603 -192 1613 -163 1613 -131 ct
-1613 -109 1608 -86 1597 -63 ct 1586 -40 1571 -22 1552 -11 ct 1533 1 1512 7 1489 7 ct
-1451 7 1421 -8 1398 -38 ct 1379 -64 1370 -92 1370 -124 ct 1370 -147 1376 -170 1387 -193 ct
-1399 -216 1414 -233 1432 -244 ct 1451 -255 1471 -260 1492 -260 ct p
-1483 -242 m 1474 -242 1464 -239 1454 -233 ct 1444 -228 1436 -218 1430 -203 ct
-1424 -189 1421 -170 1421 -147 ct 1421 -111 1428 -79 1443 -53 ct 1458 -26 1477 -13 1501 -13 ct
-1518 -13 1533 -20 1545 -35 ct 1556 -50 1562 -75 1562 -110 ct 1562 -155 1552 -190 1533 -216 ct
-1520 -233 1503 -242 1483 -242 ct p ef
-1776 -260 m 1814 -260 1845 -246 1868 -217 ct 1887 -192 1897 -163 1897 -131 ct
-1897 -109 1892 -86 1881 -63 ct 1870 -40 1855 -22 1836 -11 ct 1817 1 1796 7 1773 7 ct
-1735 7 1705 -8 1682 -38 ct 1663 -64 1654 -92 1654 -124 ct 1654 -147 1660 -170 1671 -193 ct
-1683 -216 1698 -233 1716 -244 ct 1735 -255 1755 -260 1776 -260 ct p
-1767 -242 m 1758 -242 1748 -239 1738 -233 ct 1728 -228 1720 -218 1714 -203 ct
-1708 -189 1705 -170 1705 -147 ct 1705 -111 1712 -79 1727 -53 ct 1742 -26 1761 -13 1785 -13 ct
-1802 -13 1817 -20 1829 -35 ct 1840 -50 1846 -75 1846 -110 ct 1846 -155 1836 -190 1817 -216 ct
-1804 -233 1787 -242 1767 -242 ct p ef
-2011 -392 m 2011 -392 2011 -392 2011 -141 ct 2011 -141 2011 -141 2074 -200 ct
-2088 -212 2096 -220 2098 -223 ct 2100 -225 2100 -227 2100 -229 ct 2100 -233 2099 -236 2096 -239 ct
-2093 -241 2088 -243 2081 -243 ct 2081 -243 2081 -243 2081 -253 ct 2081 -253 2081 -253 2190 -253 ct
-2190 -253 2190 -253 2190 -244 ct 2175 -244 2163 -241 2153 -237 ct 2143 -233 2132 -225 2120 -214 ct
-2120 -214 2120 -214 2056 -155 ct 2056 -155 2056 -155 2120 -72 ct 2138 -50 2150 -35 2155 -29 ct
-2164 -21 2172 -15 2179 -13 ct 2183 -11 2192 -10 2203 -10 ct 2203 -10 2203 -10 2203 0 ct
-2203 0 2203 0 2081 0 ct 2081 0 2081 0 2081 -10 ct 2088 -10 2092 -11 2095 -13 ct
-2097 -15 2099 -18 2099 -21 ct 2099 -26 2095 -32 2088 -42 ct 2088 -42 2088 -42 2011 -141 ct
-2011 -141 2011 -141 2011 -57 ct 2011 -41 2012 -30 2014 -25 ct 2017 -19 2020 -16 2024 -14 ct
-2029 -11 2038 -10 2052 -10 ct 2052 -10 2052 -10 2052 0 ct 2052 0 2052 0 1924 0 ct
-1924 0 1924 0 1924 -10 ct 1937 -10 1946 -12 1952 -15 ct 1956 -17 1959 -20 1961 -24 ct
-1964 -30 1965 -40 1965 -55 ct 1965 -55 1965 -55 1965 -286 ct 1965 -315 1964 -332 1963 -339 ct
-1962 -345 1960 -350 1957 -352 ct 1954 -354 1950 -356 1946 -356 ct 1942 -356 1936 -354 1929 -351 ct
-1929 -351 1929 -351 1924 -361 ct 1924 -361 1924 -361 1998 -392 ct 1998 -392 1998 -392 2011 -392 ct
-p ef
-pom
-gr
-gr
-9135 21587 m 9698 21400 l 9698 21775 l 9135 21587 l p ef
-10635 21610 m 9885 21610 l 9885 21585 l 9885 21560 l 10635 21560 l
-10635 21585 l 10635 21610 l p ef
-9885 21585 m 9860 21585 l 9860 21581 l 9862 21576 l 9863 21573 l 9866 21569 l
-9869 21566 l 9872 21563 l 9876 21562 l 9881 21560 l 9885 21560 l 9885 21560 l
-9885 21585 l p ef
-9910 21585 m 9910 21587 l 9885 21587 l 9860 21587 l 9860 21585 l 9885 21585 l
-9910 21585 l p ef
-9885 21587 m 9910 21587 l 9910 21591 l 9908 21596 l 9907 21599 l 9904 21603 l
-9901 21606 l 9898 21609 l 9894 21610 l 9889 21612 l 9885 21612 l 9885 21612 l
-9885 21587 l p ef
-9885 21612 m 9585 21612 l 9585 21587 l 9585 21562 l 9885 21562 l 9885 21587 l
-9885 21612 l p ef
-4384 20837 m 4197 20275 l 4572 20275 l 4384 20837 l p ef
-4410 19688 m 4410 20263 l 4385 20263 l 4360 20263 l 4360 19688 l 4385 19688 l
-4410 19688 l p ef
-4385 20263 m 4410 20263 l 4410 20267 l 4408 20272 l 4407 20275 l 4404 20279 l
-4401 20282 l 4398 20285 l 4394 20286 l 4389 20288 l 4385 20288 l 4385 20288 l
-4385 20263 l p ef
-4385 20288 m 4384 20288 l 4384 20263 l 4384 20238 l 4385 20238 l 4385 20263 l
-4385 20288 l p ef
-4384 20263 m 4359 20263 l 4359 20259 l 4361 20254 l 4362 20251 l 4365 20247 l
-4368 20244 l 4371 20241 l 4375 20240 l 4380 20238 l 4384 20238 l 4384 20238 l
-4384 20263 l p ef
-4409 20263 m 4409 20387 l 4384 20387 l 4359 20387 l 4359 20263 l 4384 20263 l
-4409 20263 l p ef
-gs
-7270 13617 m 8965 13617 l 8965 14492 l 7270 14492 l 7270 13617 l eoclip newpath
-gs
-tm setmatrix
-4842 10583 t
-1 1 s
-gs
-gs
-0 0 m 1695 0 l 1695 875 l 0 875 l 0 0 l eoclip newpath
-gs
-pum
-106 741 t
-650 93 m 650 93 650 93 56 93 ct 56 93 56 93 56 76 ct 56 76 56 76 359 -301 ct 359 -301 359 -301 56 -670 ct
-56 -670 56 -670 56 -687 ct 56 -687 56 -687 634 -687 ct 634 -687 634 -687 646 -534 ct
-646 -534 646 -534 627 -534 ct 620 -611 582 -650 516 -650 ct 516 -650 516 -650 181 -650 ct
-181 -650 181 -650 435 -339 ct 435 -339 435 -339 150 13 ct 150 13 150 13 520 13 ct
-595 13 642 -24 661 -98 ct 661 -98 661 -98 679 -96 ct 679 -96 679 -96 650 93 ct
-p ef
-pom
-gr
-gs
-pum
-953 661 t
-168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
-98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
-89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
-p ef
-pom
-gr
-gs
-pum
-1217 661 t
-33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
-86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
-143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
-33 131 33 131 33 116 ct p ef
-pom
-gr
-gs
-pum
-1402 344 t
-175 -48 m 175 -48 175 -48 157 0 ct 157 0 157 0 8 0 ct 8 0 8 0 8 -7 ct 52 -47 83 -79 101 -105 ct
-119 -130 128 -153 128 -174 ct 128 -190 123 -204 113 -214 ct 103 -225 91 -230 78 -230 ct
-65 -230 54 -226 44 -219 ct 34 -212 27 -202 22 -188 ct 22 -188 22 -188 15 -188 ct
-18 -211 26 -228 39 -240 ct 52 -252 68 -258 88 -258 ct 108 -258 125 -251 139 -238 ct
-153 -225 160 -209 160 -191 ct 160 -179 157 -166 151 -153 ct 142 -133 127 -112 106 -89 ct
-75 -55 55 -35 48 -28 ct 48 -28 48 -28 114 -28 ct 127 -28 137 -29 142 -29 ct 147 -30 152 -32 157 -36 ct
-161 -39 165 -43 168 -48 ct 168 -48 168 -48 175 -48 ct p ef
-pom
-gr
-gr
-gr
-gr
-gr
-8085 14734 m 7035 14734 l 7035 13385 l 9135 13385 l 9135 14734 l 8085 14734 l
-pc
-7035 14060 m 6473 14248 l 6473 13873 l 7035 14060 l p ef
-4409 12536 m 4409 13044 l 4359 13044 l 4359 12536 l 4409 12536 l p ef
-4409 13552 m 4409 14060 l 4359 14060 l 4359 13552 l 4409 13552 l p ef
-4892 14035 m 5400 14035 l 5400 14085 l 4892 14085 l 4892 14035 l p ef
-5908 14035 m 6416 14035 l 6416 14085 l 5908 14085 l 5908 14035 l p ef
-11685 12685 m 11873 13248 l 11498 13248 l 11685 12685 l p ef
-9135 14035 m 9643 14035 l 9643 14085 l 9135 14085 l 9135 14035 l p ef
-10151 14035 m 10659 14035 l 10659 14085 l 10151 14085 l 10151 14035 l
-p ef
-11167 14035 m 11675 14035 l 11675 14085 l 11167 14085 l 11167 14035 l
-p ef
-11660 13562 m 11660 13135 l 11710 13135 l 11710 13562 l 11660 13562 l
-p ef
-15735 12685 m 15923 13248 l 15548 13248 l 15735 12685 l p ef
-9135 14035 m 9643 14035 l 9643 14085 l 9135 14085 l 9135 14035 l p ef
-10151 14035 m 10659 14035 l 10659 14085 l 10151 14085 l 10151 14035 l
-p ef
-11167 14035 m 11675 14035 l 11675 14085 l 11167 14085 l 11167 14035 l
-p ef
-12183 14035 m 12691 14035 l 12691 14085 l 12183 14085 l 12183 14035 l
-p ef
-13199 14035 m 13707 14035 l 13707 14085 l 13199 14085 l 13199 14035 l
-p ef
-14215 14035 m 14723 14035 l 14723 14085 l 14215 14085 l 14215 14035 l
-p ef
-15231 14035 m 15735 14035 l 15735 14060 l 15735 14085 l 15231 14085 l
-15231 14060 l 15231 14035 l p ef
-15735 14060 m 15760 14060 l 15760 14064 l 15758 14069 l 15757 14072 l
-15754 14076 l 15751 14079 l 15748 14082 l 15744 14083 l 15739 14085 l
-15735 14085 l 15735 14085 l 15735 14060 l p ef
-15710 14060 m 15710 14056 l 15735 14056 l 15760 14056 l 15760 14060 l
-15735 14060 l 15710 14060 l p ef
-15710 13548 m 15710 13135 l 15760 13135 l 15760 13548 l 15710 13548 l
-p ef
-gs
-7270 23718 m 8965 23718 l 8965 24593 l 7270 24593 l 7270 23718 l eoclip newpath
-gs
-tm setmatrix
-4842 20690 t
-1 1 s
-gs
-gs
-0 0 m 1695 0 l 1695 875 l 0 875 l 0 0 l eoclip newpath
-gs
-pum
-106 741 t
-650 93 m 650 93 650 93 56 93 ct 56 93 56 93 56 76 ct 56 76 56 76 359 -301 ct 359 -301 359 -301 56 -670 ct
-56 -670 56 -670 56 -687 ct 56 -687 56 -687 634 -687 ct 634 -687 634 -687 646 -534 ct
-646 -534 646 -534 627 -534 ct 620 -611 582 -650 516 -650 ct 516 -650 516 -650 181 -650 ct
-181 -650 181 -650 435 -339 ct 435 -339 435 -339 150 13 ct 150 13 150 13 520 13 ct
-595 13 642 -24 661 -98 ct 661 -98 661 -98 679 -96 ct 679 -96 679 -96 650 93 ct
-p ef
-pom
-gr
-gs
-pum
-953 661 t
-168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
-98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
-89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
-p ef
-pom
-gr
-gs
-pum
-1217 661 t
-33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
-86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
-143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
-33 131 33 131 33 116 ct p ef
-pom
-gr
-gs
-pum
-1402 344 t
-175 -48 m 175 -48 175 -48 157 0 ct 157 0 157 0 8 0 ct 8 0 8 0 8 -7 ct 52 -47 83 -79 101 -105 ct
-119 -130 128 -153 128 -174 ct 128 -190 123 -204 113 -214 ct 103 -225 91 -230 78 -230 ct
-65 -230 54 -226 44 -219 ct 34 -212 27 -202 22 -188 ct 22 -188 22 -188 15 -188 ct
-18 -211 26 -228 39 -240 ct 52 -252 68 -258 88 -258 ct 108 -258 125 -251 139 -238 ct
-153 -225 160 -209 160 -191 ct 160 -179 157 -166 151 -153 ct 142 -133 127 -112 106 -89 ct
-75 -55 55 -35 48 -28 ct 48 -28 48 -28 114 -28 ct 127 -28 137 -29 142 -29 ct 147 -30 152 -32 157 -36 ct
-161 -39 165 -43 168 -48 ct 168 -48 168 -48 175 -48 ct p ef
-pom
-gr
-gr
-gr
-gr
-gr
-8085 24835 m 7035 24835 l 7035 23486 l 9135 23486 l 9135 24835 l 8085 24835 l
-pc
-7035 24161 m 6473 24349 l 6473 23974 l 7035 24161 l p ef
-4409 22337 m 4409 22845 l 4359 22845 l 4359 22337 l 4409 22337 l p ef
-4409 23353 m 4409 23861 l 4359 23861 l 4359 23353 l 4409 23353 l p ef
-4592 24136 m 5100 24136 l 5100 24186 l 4592 24186 l 4592 24136 l p ef
-5608 24136 m 6116 24136 l 6116 24186 l 5608 24186 l 5608 24136 l p ef
-12135 22485 m 12323 23048 l 11948 23048 l 12135 22485 l p ef
-9135 24136 m 9643 24136 l 9643 24186 l 9135 24186 l 9135 24136 l p ef
-10151 24136 m 10659 24136 l 10659 24186 l 10151 24186 l 10151 24136 l
-p ef
-11167 24136 m 11675 24136 l 11675 24186 l 11167 24186 l 11167 24136 l
-p ef
-12110 24113 m 12110 23605 l 12160 23605 l 12160 24113 l 12110 24113 l
-p ef
-12110 23097 m 12110 22935 l 12160 22935 l 12160 23097 l 12110 23097 l
-p ef
-gs
-gs
-pum
-11087 14652 t
-0 -228 m 0 -228 0 -228 78 -259 ct 78 -259 78 -259 89 -259 ct 89 -259 89 -259 89 -201 ct
-102 -223 115 -238 128 -247 ct 141 -256 155 -260 169 -260 ct 194 -260 215 -250 232 -230 ct
-253 -206 263 -175 263 -136 ct 263 -92 251 -56 226 -28 ct 205 -5 180 7 149 7 ct
-135 7 123 5 114 1 ct 106 -2 98 -7 89 -16 ct 89 -16 89 -16 89 63 ct 89 80 90 91 92 96 ct
-94 100 98 104 103 107 ct 109 110 118 111 132 111 ct 132 111 132 111 132 121 ct
-132 121 132 121 -3 121 ct -3 121 -3 121 -3 111 ct -3 111 -3 111 4 111 ct 14 111 23 109 31 105 ct
-34 103 37 100 39 95 ct 41 91 42 79 42 61 ct 42 61 42 61 42 -179 ct 42 -195 41 -205 40 -209 ct
-38 -213 36 -216 33 -219 ct 30 -221 25 -222 20 -222 ct 16 -222 10 -221 3 -218 ct
-3 -218 3 -218 0 -228 ct p
-89 -185 m 89 -185 89 -185 89 -90 ct 89 -70 90 -57 91 -50 ct 94 -40 100 -30 110 -22 ct
-120 -14 133 -10 148 -10 ct 166 -10 181 -17 192 -31 ct 207 -50 214 -77 214 -111 ct
-214 -149 206 -179 189 -200 ct 177 -214 163 -221 147 -221 ct 139 -221 130 -219 121 -214 ct
-115 -211 104 -201 89 -185 ct p ef
-366 -392 m 374 -392 380 -389 386 -384 ct 391 -378 394 -372 394 -364 ct 394 -356 391 -350 386 -344 ct
-380 -339 374 -336 366 -336 ct 358 -336 352 -339 346 -344 ct 341 -350 338 -356 338 -364 ct
-338 -372 341 -378 346 -384 ct 352 -389 358 -392 366 -392 ct p
-389 -260 m 389 -260 389 -260 389 -57 ct 389 -41 390 -31 392 -26 ct 395 -20 398 -16 402 -14 ct
-407 -11 414 -10 426 -10 ct 426 -10 426 -10 426 0 ct 426 0 426 0 306 0 ct 306 0 306 0 306 -10 ct
-318 -10 326 -11 330 -14 ct 334 -16 337 -20 339 -25 ct 342 -31 343 -41 343 -57 ct
-343 -57 343 -57 343 -154 ct 343 -181 342 -199 341 -207 ct 339 -213 337 -217 335 -220 ct
-332 -222 328 -223 323 -223 ct 318 -223 312 -222 305 -219 ct 305 -219 305 -219 301 -229 ct
-301 -229 301 -229 377 -260 ct 377 -260 377 -260 389 -260 ct p ef
-531 -337 m 531 -337 531 -337 531 -253 ct 531 -253 531 -253 590 -253 ct 590 -253 590 -253 590 -234 ct
-590 -234 590 -234 531 -234 ct 531 -234 531 -234 531 -70 ct 531 -53 533 -42 538 -37 ct
-543 -31 549 -28 556 -28 ct 562 -28 568 -30 574 -34 ct 579 -37 584 -43 587 -50 ct
-587 -50 587 -50 598 -50 ct 592 -32 582 -19 571 -10 ct 559 -1 546 4 534 4 ct 525 4 517 2 509 -3 ct
-501 -8 495 -14 491 -23 ct 487 -32 485 -45 485 -64 ct 485 -64 485 -64 485 -234 ct
-485 -234 485 -234 445 -234 ct 445 -234 445 -234 445 -243 ct 455 -247 465 -254 476 -264 ct
-487 -273 496 -285 504 -298 ct 509 -305 514 -318 522 -337 ct 522 -337 522 -337 531 -337 ct
-p ef
-830 -95 m 823 -62 810 -37 790 -19 ct 770 -2 748 7 724 7 ct 695 7 670 -5 649 -29 ct
-628 -53 617 -85 617 -126 ct 617 -166 629 -198 652 -223 ct 676 -248 705 -260 738 -260 ct
-763 -260 783 -253 799 -240 ct 815 -227 823 -214 823 -199 ct 823 -192 821 -187 816 -182 ct
-812 -178 805 -176 797 -176 ct 787 -176 779 -180 773 -187 ct 770 -190 768 -198 767 -209 ct
-766 -220 762 -228 755 -234 ct 749 -239 740 -242 729 -242 ct 710 -242 696 -235 684 -222 ct
-669 -204 662 -180 662 -150 ct 662 -120 669 -94 684 -71 ct 699 -48 719 -36 744 -36 ct
-762 -36 778 -42 793 -54 ct 803 -62 812 -77 822 -99 ct 822 -99 822 -99 830 -95 ct
-p ef
-939 -392 m 939 -392 939 -392 939 -208 ct 959 -230 975 -244 987 -251 ct 999 -257 1011 -260 1023 -260 ct
-1037 -260 1050 -256 1060 -248 ct 1070 -240 1078 -228 1083 -211 ct 1086 -199 1088 -178 1088 -146 ct
-1088 -146 1088 -146 1088 -57 ct 1088 -41 1089 -30 1092 -24 ct 1094 -20 1097 -16 1101 -14 ct
-1105 -11 1113 -10 1125 -10 ct 1125 -10 1125 -10 1125 0 ct 1125 0 1125 0 1001 0 ct
-1001 0 1001 0 1001 -10 ct 1001 -10 1001 -10 1007 -10 ct 1019 -10 1027 -12 1031 -15 ct
-1036 -19 1039 -24 1041 -31 ct 1042 -34 1042 -43 1042 -57 ct 1042 -57 1042 -57 1042 -147 ct
-1042 -174 1041 -192 1038 -201 ct 1035 -210 1030 -216 1024 -221 ct 1018 -225 1011 -227 1002 -227 ct
-993 -227 983 -225 974 -220 ct 964 -215 953 -205 939 -191 ct 939 -191 939 -191 939 -57 ct
-939 -40 940 -29 942 -25 ct 944 -21 947 -17 953 -14 ct 958 -11 967 -10 980 -10 ct
-980 -10 980 -10 980 0 ct 980 0 980 0 856 0 ct 856 0 856 0 856 -10 ct 867 -10 875 -12 881 -15 ct
-885 -17 888 -21 890 -26 ct 892 -31 893 -41 893 -57 ct 893 -57 893 -57 893 -286 ct
-893 -314 892 -332 891 -338 ct 890 -345 888 -349 885 -352 ct 882 -354 878 -355 873 -355 ct
-870 -355 863 -354 855 -351 ct 855 -351 855 -351 851 -361 ct 851 -361 851 -361 926 -392 ct
-926 -392 926 -392 939 -392 ct p ef
-1529 -125 m 1529 -125 1529 -125 1384 -125 ct 1384 -125 1384 -125 1358 -66 ct
-1352 -52 1349 -41 1349 -33 ct 1349 -28 1351 -23 1357 -18 ct 1362 -14 1374 -11 1392 -10 ct
-1392 -10 1392 -10 1392 0 ct 1392 0 1392 0 1274 0 ct 1274 0 1274 0 1274 -10 ct 1290 -13 1300 -16 1305 -21 ct
-1314 -30 1324 -48 1336 -75 ct 1336 -75 1336 -75 1470 -382 ct 1470 -382 1470 -382 1481 -382 ct
-1481 -382 1481 -382 1608 -71 ct 1618 -46 1628 -30 1637 -23 ct 1645 -15 1657 -11 1672 -10 ct
-1672 -10 1672 -10 1672 0 ct 1672 0 1672 0 1524 0 ct 1524 0 1524 0 1524 -10 ct 1539 -11 1549 -13 1554 -17 ct
-1559 -22 1562 -27 1562 -33 ct 1562 -41 1558 -53 1551 -71 ct 1551 -71 1551 -71 1529 -125 ct
-p
-1520 -146 m 1459 -297 l 1393 -146 l 1520 -146 l p ef
-1763 -209 m 1787 -243 1814 -260 1842 -260 ct 1868 -260 1890 -249 1909 -227 ct
-1928 -205 1938 -175 1938 -136 ct 1938 -92 1923 -56 1893 -28 ct 1868 -5 1839 7 1808 7 ct
-1793 7 1779 4 1763 -1 ct 1748 -6 1733 -14 1717 -25 ct 1717 -25 1717 -25 1717 -286 ct
-1717 -314 1716 -332 1715 -338 ct 1714 -345 1711 -349 1708 -352 ct 1705 -354 1702 -355 1697 -355 ct
-1692 -355 1686 -354 1678 -351 ct 1678 -351 1678 -351 1674 -361 ct 1674 -361 1674 -361 1750 -392 ct
-1750 -392 1750 -392 1763 -392 ct 1763 -392 1763 -392 1763 -209 ct p
-1763 -192 m 1763 -192 1763 -192 1763 -41 ct 1772 -32 1782 -25 1792 -20 ct 1802 -15 1812 -13 1822 -13 ct
-1839 -13 1854 -22 1869 -41 ct 1883 -59 1890 -86 1890 -121 ct 1890 -153 1883 -178 1869 -195 ct
-1854 -212 1838 -221 1820 -221 ct 1810 -221 1801 -219 1791 -214 ct 1784 -210 1774 -203 1763 -192 ct
-p ef
-2219 -382 m 2219 -382 2219 -382 2219 -254 ct 2219 -254 2219 -254 2209 -254 ct
-2206 -279 2200 -298 2191 -313 ct 2183 -327 2170 -339 2155 -347 ct 2139 -356 2122 -360 2105 -360 ct
-2086 -360 2070 -354 2058 -343 ct 2045 -331 2039 -318 2039 -303 ct 2039 -291 2043 -281 2051 -272 ct
-2062 -258 2090 -239 2133 -217 ct 2168 -198 2191 -183 2204 -173 ct 2217 -163 2227 -152 2234 -138 ct
-2241 -125 2244 -110 2244 -96 ct 2244 -67 2233 -43 2211 -23 ct 2189 -2 2161 8 2126 8 ct
-2115 8 2105 7 2095 6 ct 2090 5 2078 1 2060 -4 ct 2042 -10 2031 -13 2026 -13 ct
-2021 -13 2018 -12 2015 -9 ct 2012 -6 2010 -1 2009 8 ct 2009 8 2009 8 1999 8 ct
-1999 8 1999 8 1999 -120 ct 1999 -120 1999 -120 2009 -120 ct 2014 -93 2020 -73 2028 -60 ct
-2036 -46 2049 -35 2066 -26 ct 2082 -17 2100 -13 2120 -13 ct 2143 -13 2162 -19 2175 -31 ct
-2188 -43 2195 -58 2195 -74 ct 2195 -83 2192 -93 2187 -102 ct 2182 -111 2174 -120 2164 -128 ct
-2157 -134 2137 -145 2105 -163 ct 2073 -181 2050 -195 2036 -206 ct 2023 -217 2013 -229 2006 -241 ct
-1999 -254 1995 -268 1995 -284 ct 1995 -311 2005 -334 2026 -353 ct 2047 -372 2073 -382 2105 -382 ct
-2125 -382 2146 -377 2168 -368 ct 2178 -363 2186 -361 2190 -361 ct 2195 -361 2199 -362 2202 -365 ct
-2205 -368 2207 -374 2209 -382 ct 2209 -382 2209 -382 2219 -382 ct p ef
-2518 -392 m 2518 -392 2518 -392 2518 -57 ct 2518 -41 2519 -31 2521 -26 ct 2524 -21 2527 -17 2532 -14 ct
-2537 -11 2546 -10 2559 -10 ct 2559 -10 2559 -10 2559 0 ct 2559 0 2559 0 2435 0 ct
-2435 0 2435 0 2435 -10 ct 2447 -10 2454 -11 2459 -14 ct 2463 -16 2466 -20 2468 -25 ct
-2471 -31 2472 -41 2472 -57 ct 2472 -57 2472 -57 2472 -286 ct 2472 -314 2471 -332 2470 -338 ct
-2469 -345 2467 -349 2464 -352 ct 2461 -354 2458 -355 2453 -355 ct 2449 -355 2443 -354 2436 -351 ct
-2436 -351 2436 -351 2431 -361 ct 2431 -361 2431 -361 2506 -392 ct 2506 -392 2506 -392 2518 -392 ct
-p ef
-2712 -260 m 2750 -260 2781 -246 2804 -217 ct 2823 -192 2833 -163 2833 -131 ct
-2833 -109 2828 -86 2817 -63 ct 2806 -40 2791 -22 2772 -11 ct 2753 1 2732 7 2709 7 ct
-2671 7 2641 -8 2618 -38 ct 2599 -64 2590 -92 2590 -124 ct 2590 -147 2596 -170 2607 -193 ct
-2619 -216 2634 -233 2652 -244 ct 2671 -255 2691 -260 2712 -260 ct p
-2703 -242 m 2694 -242 2684 -239 2674 -233 ct 2664 -228 2656 -218 2650 -203 ct
-2644 -189 2641 -170 2641 -147 ct 2641 -111 2648 -79 2663 -53 ct 2678 -26 2697 -13 2721 -13 ct
-2738 -13 2753 -20 2765 -35 ct 2776 -50 2782 -75 2782 -110 ct 2782 -155 2772 -190 2753 -216 ct
-2740 -233 2723 -242 2703 -242 ct p ef
-2995 -260 m 3033 -260 3064 -246 3087 -217 ct 3106 -192 3116 -163 3116 -131 ct
-3116 -109 3111 -86 3100 -63 ct 3089 -40 3074 -22 3055 -11 ct 3036 1 3015 7 2992 7 ct
-2954 7 2924 -8 2901 -38 ct 2882 -64 2873 -92 2873 -124 ct 2873 -147 2879 -170 2890 -193 ct
-2902 -216 2917 -233 2935 -244 ct 2954 -255 2974 -260 2995 -260 ct p
-2986 -242 m 2977 -242 2967 -239 2957 -233 ct 2947 -228 2939 -218 2933 -203 ct
-2927 -189 2924 -170 2924 -147 ct 2924 -111 2931 -79 2946 -53 ct 2961 -26 2980 -13 3004 -13 ct
-3021 -13 3036 -20 3048 -35 ct 3059 -50 3065 -75 3065 -110 ct 3065 -155 3055 -190 3036 -216 ct
-3023 -233 3006 -242 2986 -242 ct p ef
-3137 -228 m 3137 -228 3137 -228 3215 -259 ct 3215 -259 3215 -259 3226 -259 ct
-3226 -259 3226 -259 3226 -201 ct 3239 -223 3252 -238 3265 -247 ct 3278 -256 3292 -260 3306 -260 ct
-3331 -260 3352 -250 3369 -230 ct 3390 -206 3400 -175 3400 -136 ct 3400 -92 3388 -56 3363 -28 ct
-3342 -5 3317 7 3286 7 ct 3272 7 3260 5 3251 1 ct 3243 -2 3235 -7 3226 -16 ct 3226 -16 3226 -16 3226 63 ct
-3226 80 3227 91 3229 96 ct 3231 100 3235 104 3240 107 ct 3246 110 3255 111 3269 111 ct
-3269 111 3269 111 3269 121 ct 3269 121 3269 121 3134 121 ct 3134 121 3134 121 3134 111 ct
-3134 111 3134 111 3141 111 ct 3151 111 3160 109 3168 105 ct 3171 103 3174 100 3176 95 ct
-3178 91 3179 79 3179 61 ct 3179 61 3179 61 3179 -179 ct 3179 -195 3178 -205 3177 -209 ct
-3175 -213 3173 -216 3170 -219 ct 3167 -221 3162 -222 3157 -222 ct 3153 -222 3147 -221 3140 -218 ct
-3140 -218 3140 -218 3137 -228 ct p
-3226 -185 m 3226 -185 3226 -185 3226 -90 ct 3226 -70 3227 -57 3228 -50 ct 3231 -40 3237 -30 3247 -22 ct
-3257 -14 3270 -10 3285 -10 ct 3303 -10 3318 -17 3329 -31 ct 3344 -50 3351 -77 3351 -111 ct
-3351 -149 3343 -179 3326 -200 ct 3314 -214 3300 -221 3284 -221 ct 3276 -221 3267 -219 3258 -214 ct
-3252 -211 3241 -201 3226 -185 ct p ef
-pom
-gr
-gr
-gs
-gs
-pum
-9976 24759 t
-82 -392 m 90 -392 96 -389 102 -384 ct 107 -378 110 -372 110 -364 ct 110 -356 107 -350 102 -344 ct
-96 -339 90 -336 82 -336 ct 74 -336 68 -339 62 -344 ct 57 -350 54 -356 54 -364 ct
-54 -372 57 -378 62 -384 ct 68 -389 74 -392 82 -392 ct p
-105 -260 m 105 -260 105 -260 105 -57 ct 105 -41 106 -31 108 -26 ct 111 -20 114 -16 118 -14 ct
-123 -11 130 -10 142 -10 ct 142 -10 142 -10 142 0 ct 142 0 142 0 22 0 ct 22 0 22 0 22 -10 ct
-34 -10 42 -11 46 -14 ct 50 -16 53 -20 55 -25 ct 58 -31 59 -41 59 -57 ct 59 -57 59 -57 59 -154 ct
-59 -181 58 -199 57 -207 ct 55 -213 53 -217 51 -220 ct 48 -222 44 -223 39 -223 ct
-34 -223 28 -222 21 -219 ct 21 -219 21 -219 17 -229 ct 17 -229 17 -229 93 -260 ct
-93 -260 93 -260 105 -260 ct p ef
-249 -207 m 278 -242 306 -260 333 -260 ct 347 -260 359 -257 368 -250 ct 378 -243 386 -231 392 -216 ct
-396 -205 398 -188 398 -165 ct 398 -165 398 -165 398 -57 ct 398 -41 399 -30 402 -25 ct
-404 -20 407 -16 411 -14 ct 415 -11 423 -10 435 -10 ct 435 -10 435 -10 435 0 ct
-435 0 435 0 311 0 ct 311 0 311 0 311 -10 ct 311 -10 311 -10 316 -10 ct 328 -10 336 -12 341 -15 ct
-346 -19 349 -24 351 -31 ct 352 -34 352 -43 352 -57 ct 352 -57 352 -57 352 -161 ct
-352 -184 349 -201 343 -211 ct 337 -222 327 -227 313 -227 ct 292 -227 270 -215 249 -191 ct
-249 -191 249 -191 249 -57 ct 249 -40 250 -29 252 -25 ct 255 -20 258 -16 263 -14 ct
-267 -11 276 -10 290 -10 ct 290 -10 290 -10 290 0 ct 290 0 290 0 166 0 ct 166 0 166 0 166 -10 ct
-166 -10 166 -10 171 -10 ct 184 -10 192 -13 196 -20 ct 201 -26 203 -39 203 -57 ct
-203 -57 203 -57 203 -151 ct 203 -181 202 -200 201 -206 ct 200 -213 198 -217 195 -220 ct
-192 -222 188 -223 183 -223 ct 178 -223 172 -222 165 -219 ct 165 -219 165 -219 161 -229 ct
-161 -229 161 -229 237 -260 ct 237 -260 237 -260 249 -260 ct 249 -260 249 -260 249 -207 ct
-p ef
-532 -207 m 561 -242 589 -260 616 -260 ct 630 -260 642 -257 651 -250 ct 661 -243 669 -231 675 -216 ct
-679 -205 681 -188 681 -165 ct 681 -165 681 -165 681 -57 ct 681 -41 682 -30 685 -25 ct
-687 -20 690 -16 694 -14 ct 698 -11 706 -10 718 -10 ct 718 -10 718 -10 718 0 ct
-718 0 718 0 594 0 ct 594 0 594 0 594 -10 ct 594 -10 594 -10 599 -10 ct 611 -10 619 -12 624 -15 ct
-629 -19 632 -24 634 -31 ct 635 -34 635 -43 635 -57 ct 635 -57 635 -57 635 -161 ct
-635 -184 632 -201 626 -211 ct 620 -222 610 -227 596 -227 ct 575 -227 553 -215 532 -191 ct
-532 -191 532 -191 532 -57 ct 532 -40 533 -29 535 -25 ct 538 -20 541 -16 546 -14 ct
-550 -11 559 -10 573 -10 ct 573 -10 573 -10 573 0 ct 573 0 573 0 449 0 ct 449 0 449 0 449 -10 ct
-449 -10 449 -10 454 -10 ct 467 -10 475 -13 479 -20 ct 484 -26 486 -39 486 -57 ct
-486 -57 486 -57 486 -151 ct 486 -181 485 -200 484 -206 ct 483 -213 481 -217 478 -220 ct
-475 -222 471 -223 466 -223 ct 461 -223 455 -222 448 -219 ct 448 -219 448 -219 444 -229 ct
-444 -229 444 -229 520 -260 ct 520 -260 520 -260 532 -260 ct 532 -260 532 -260 532 -207 ct
-p ef
-866 -260 m 904 -260 935 -246 958 -217 ct 977 -192 987 -163 987 -131 ct 987 -109 982 -86 971 -63 ct
-960 -40 945 -22 926 -11 ct 907 1 886 7 863 7 ct 825 7 795 -8 772 -38 ct 753 -64 744 -92 744 -124 ct
-744 -147 750 -170 761 -193 ct 773 -216 788 -233 806 -244 ct 825 -255 845 -260 866 -260 ct
-p
-857 -242 m 848 -242 838 -239 828 -233 ct 818 -228 810 -218 804 -203 ct 798 -189 795 -170 795 -147 ct
-795 -111 802 -79 817 -53 ct 832 -26 851 -13 875 -13 ct 892 -13 907 -20 919 -35 ct
-930 -50 936 -75 936 -110 ct 936 -155 926 -190 907 -216 ct 894 -233 877 -242 857 -242 ct
-p ef
-1014 -253 m 1014 -253 1014 -253 1132 -253 ct 1132 -253 1132 -253 1132 -243 ct
-1132 -243 1132 -243 1124 -243 ct 1117 -243 1112 -241 1108 -238 ct 1104 -234 1102 -230 1102 -224 ct
-1102 -217 1104 -210 1108 -201 ct 1108 -201 1108 -201 1167 -62 ct 1167 -62 1167 -62 1225 -206 ct
-1229 -216 1231 -224 1231 -230 ct 1231 -232 1231 -234 1229 -236 ct 1227 -239 1225 -240 1221 -241 ct
-1218 -243 1212 -243 1202 -243 ct 1202 -243 1202 -243 1202 -253 ct 1202 -253 1202 -253 1284 -253 ct
-1284 -253 1284 -253 1284 -243 ct 1275 -242 1268 -240 1264 -237 ct 1258 -231 1252 -222 1247 -209 ct
-1247 -209 1247 -209 1158 7 ct 1158 7 1158 7 1147 7 ct 1147 7 1147 7 1058 -205 ct
-1054 -216 1050 -223 1046 -227 ct 1042 -232 1038 -235 1032 -238 ct 1029 -240 1023 -242 1014 -243 ct
-1014 -243 1014 -243 1014 -253 ct p ef
-1452 -37 m 1426 -17 1410 -5 1403 -2 ct 1393 3 1383 5 1371 5 ct 1354 5 1339 -1 1328 -13 ct
-1317 -25 1311 -40 1311 -60 ct 1311 -72 1314 -83 1319 -92 ct 1327 -104 1340 -116 1359 -127 ct
-1377 -138 1409 -151 1452 -167 ct 1452 -167 1452 -167 1452 -177 ct 1452 -202 1448 -219 1440 -228 ct
-1432 -237 1421 -242 1405 -242 ct 1394 -242 1385 -239 1378 -233 ct 1371 -226 1367 -219 1367 -211 ct
-1367 -211 1367 -211 1368 -195 ct 1368 -187 1366 -180 1361 -176 ct 1357 -171 1351 -169 1344 -169 ct
-1338 -169 1332 -171 1328 -176 ct 1323 -181 1321 -188 1321 -196 ct 1321 -212 1329 -227 1345 -240 ct
-1361 -253 1384 -260 1413 -260 ct 1435 -260 1454 -256 1468 -249 ct 1479 -243 1487 -234 1492 -222 ct
-1495 -214 1497 -198 1497 -174 ct 1497 -174 1497 -174 1497 -89 ct 1497 -65 1497 -50 1498 -45 ct
-1499 -39 1501 -36 1503 -34 ct 1505 -32 1507 -31 1510 -31 ct 1513 -31 1516 -32 1518 -33 ct
-1522 -35 1529 -42 1540 -53 ct 1540 -53 1540 -53 1540 -38 ct 1520 -10 1500 4 1482 4 ct
-1473 4 1465 1 1460 -5 ct 1455 -11 1452 -22 1452 -37 ct p
-1452 -54 m 1452 -54 1452 -54 1452 -149 ct 1424 -138 1406 -130 1398 -126 ct
-1383 -118 1373 -110 1366 -101 ct 1360 -92 1357 -83 1357 -72 ct 1357 -59 1361 -49 1369 -40 ct
-1377 -31 1386 -27 1396 -27 ct 1411 -27 1429 -36 1452 -54 ct p ef
-1632 -337 m 1632 -337 1632 -337 1632 -253 ct 1632 -253 1632 -253 1691 -253 ct
-1691 -253 1691 -253 1691 -234 ct 1691 -234 1691 -234 1632 -234 ct 1632 -234 1632 -234 1632 -70 ct
-1632 -53 1634 -42 1639 -37 ct 1644 -31 1650 -28 1657 -28 ct 1663 -28 1669 -30 1675 -34 ct
-1680 -37 1685 -43 1688 -50 ct 1688 -50 1688 -50 1699 -50 ct 1693 -32 1683 -19 1672 -10 ct
-1660 -1 1647 4 1635 4 ct 1626 4 1618 2 1610 -3 ct 1602 -8 1596 -14 1592 -23 ct
-1588 -32 1586 -45 1586 -64 ct 1586 -64 1586 -64 1586 -234 ct 1586 -234 1586 -234 1546 -234 ct
-1546 -234 1546 -234 1546 -243 ct 1556 -247 1566 -254 1577 -264 ct 1588 -273 1597 -285 1605 -298 ct
-1610 -305 1615 -318 1623 -337 ct 1623 -337 1623 -337 1632 -337 ct p ef
-1780 -392 m 1788 -392 1794 -389 1800 -384 ct 1805 -378 1808 -372 1808 -364 ct
-1808 -356 1805 -350 1800 -344 ct 1794 -339 1788 -336 1780 -336 ct 1772 -336 1766 -339 1760 -344 ct
-1755 -350 1752 -356 1752 -364 ct 1752 -372 1755 -378 1760 -384 ct 1766 -389 1772 -392 1780 -392 ct
-p
-1803 -260 m 1803 -260 1803 -260 1803 -57 ct 1803 -41 1804 -31 1806 -26 ct 1809 -20 1812 -16 1816 -14 ct
-1821 -11 1828 -10 1840 -10 ct 1840 -10 1840 -10 1840 0 ct 1840 0 1840 0 1720 0 ct
-1720 0 1720 0 1720 -10 ct 1732 -10 1740 -11 1744 -14 ct 1748 -16 1751 -20 1753 -25 ct
-1756 -31 1757 -41 1757 -57 ct 1757 -57 1757 -57 1757 -154 ct 1757 -181 1756 -199 1755 -207 ct
-1753 -213 1751 -217 1749 -220 ct 1746 -222 1742 -223 1737 -223 ct 1732 -223 1726 -222 1719 -219 ct
-1719 -219 1719 -219 1715 -229 ct 1715 -229 1715 -229 1791 -260 ct 1791 -260 1791 -260 1803 -260 ct
-p ef
-1996 -260 m 2034 -260 2065 -246 2088 -217 ct 2107 -192 2117 -163 2117 -131 ct
-2117 -109 2112 -86 2101 -63 ct 2090 -40 2075 -22 2056 -11 ct 2037 1 2016 7 1993 7 ct
-1955 7 1925 -8 1902 -38 ct 1883 -64 1874 -92 1874 -124 ct 1874 -147 1880 -170 1891 -193 ct
-1903 -216 1918 -233 1936 -244 ct 1955 -255 1975 -260 1996 -260 ct p
-1987 -242 m 1978 -242 1968 -239 1958 -233 ct 1948 -228 1940 -218 1934 -203 ct
-1928 -189 1925 -170 1925 -147 ct 1925 -111 1932 -79 1947 -53 ct 1962 -26 1981 -13 2005 -13 ct
-2022 -13 2037 -20 2049 -35 ct 2060 -50 2066 -75 2066 -110 ct 2066 -155 2056 -190 2037 -216 ct
-2024 -233 2007 -242 1987 -242 ct p ef
-2230 -207 m 2259 -242 2287 -260 2314 -260 ct 2328 -260 2340 -257 2349 -250 ct
-2359 -243 2367 -231 2373 -216 ct 2377 -205 2379 -188 2379 -165 ct 2379 -165 2379 -165 2379 -57 ct
-2379 -41 2380 -30 2383 -25 ct 2385 -20 2388 -16 2392 -14 ct 2396 -11 2404 -10 2416 -10 ct
-2416 -10 2416 -10 2416 0 ct 2416 0 2416 0 2292 0 ct 2292 0 2292 0 2292 -10 ct 2292 -10 2292 -10 2297 -10 ct
-2309 -10 2317 -12 2322 -15 ct 2327 -19 2330 -24 2332 -31 ct 2333 -34 2333 -43 2333 -57 ct
-2333 -57 2333 -57 2333 -161 ct 2333 -184 2330 -201 2324 -211 ct 2318 -222 2308 -227 2294 -227 ct
-2273 -227 2251 -215 2230 -191 ct 2230 -191 2230 -191 2230 -57 ct 2230 -40 2231 -29 2233 -25 ct
-2236 -20 2239 -16 2244 -14 ct 2248 -11 2257 -10 2271 -10 ct 2271 -10 2271 -10 2271 0 ct
-2271 0 2271 0 2147 0 ct 2147 0 2147 0 2147 -10 ct 2147 -10 2147 -10 2152 -10 ct
-2165 -10 2173 -13 2177 -20 ct 2182 -26 2184 -39 2184 -57 ct 2184 -57 2184 -57 2184 -151 ct
-2184 -181 2183 -200 2182 -206 ct 2181 -213 2179 -217 2176 -220 ct 2173 -222 2169 -223 2164 -223 ct
-2159 -223 2153 -222 2146 -219 ct 2146 -219 2146 -219 2142 -229 ct 2142 -229 2142 -229 2218 -260 ct
-2218 -260 2218 -260 2230 -260 ct 2230 -260 2230 -260 2230 -207 ct p ef
-2820 -125 m 2820 -125 2820 -125 2675 -125 ct 2675 -125 2675 -125 2649 -66 ct
-2643 -52 2640 -41 2640 -33 ct 2640 -28 2642 -23 2648 -18 ct 2653 -14 2665 -11 2683 -10 ct
-2683 -10 2683 -10 2683 0 ct 2683 0 2683 0 2565 0 ct 2565 0 2565 0 2565 -10 ct 2581 -13 2591 -16 2596 -21 ct
-2605 -30 2615 -48 2627 -75 ct 2627 -75 2627 -75 2761 -382 ct 2761 -382 2761 -382 2772 -382 ct
-2772 -382 2772 -382 2899 -71 ct 2909 -46 2919 -30 2928 -23 ct 2936 -15 2948 -11 2963 -10 ct
-2963 -10 2963 -10 2963 0 ct 2963 0 2963 0 2815 0 ct 2815 0 2815 0 2815 -10 ct 2830 -11 2840 -13 2845 -17 ct
-2850 -22 2853 -27 2853 -33 ct 2853 -41 2849 -53 2842 -71 ct 2842 -71 2842 -71 2820 -125 ct
-p
-2811 -146 m 2750 -297 l 2684 -146 l 2811 -146 l p ef
-3055 -209 m 3079 -243 3106 -260 3134 -260 ct 3160 -260 3182 -249 3201 -227 ct
-3220 -205 3230 -175 3230 -136 ct 3230 -92 3215 -56 3185 -28 ct 3160 -5 3131 7 3100 7 ct
-3085 7 3071 4 3055 -1 ct 3040 -6 3025 -14 3009 -25 ct 3009 -25 3009 -25 3009 -286 ct
-3009 -314 3008 -332 3007 -338 ct 3006 -345 3003 -349 3000 -352 ct 2997 -354 2994 -355 2989 -355 ct
-2984 -355 2978 -354 2970 -351 ct 2970 -351 2970 -351 2966 -361 ct 2966 -361 2966 -361 3042 -392 ct
-3042 -392 3042 -392 3055 -392 ct 3055 -392 3055 -392 3055 -209 ct p
-3055 -192 m 3055 -192 3055 -192 3055 -41 ct 3064 -32 3074 -25 3084 -20 ct 3094 -15 3104 -13 3114 -13 ct
-3131 -13 3146 -22 3161 -41 ct 3175 -59 3182 -86 3182 -121 ct 3182 -153 3175 -178 3161 -195 ct
-3146 -212 3130 -221 3112 -221 ct 3102 -221 3093 -219 3083 -214 ct 3076 -210 3066 -203 3055 -192 ct
-p ef
-3510 -382 m 3510 -382 3510 -382 3510 -254 ct 3510 -254 3510 -254 3500 -254 ct
-3497 -279 3491 -298 3482 -313 ct 3474 -327 3461 -339 3446 -347 ct 3430 -356 3413 -360 3396 -360 ct
-3377 -360 3361 -354 3349 -343 ct 3336 -331 3330 -318 3330 -303 ct 3330 -291 3334 -281 3342 -272 ct
-3353 -258 3381 -239 3424 -217 ct 3459 -198 3482 -183 3495 -173 ct 3508 -163 3518 -152 3525 -138 ct
-3532 -125 3535 -110 3535 -96 ct 3535 -67 3524 -43 3502 -23 ct 3480 -2 3452 8 3417 8 ct
-3406 8 3396 7 3386 6 ct 3381 5 3369 1 3351 -4 ct 3333 -10 3322 -13 3317 -13 ct
-3312 -13 3309 -12 3306 -9 ct 3303 -6 3301 -1 3300 8 ct 3300 8 3300 8 3290 8 ct
-3290 8 3290 8 3290 -120 ct 3290 -120 3290 -120 3300 -120 ct 3305 -93 3311 -73 3319 -60 ct
-3327 -46 3340 -35 3357 -26 ct 3373 -17 3391 -13 3411 -13 ct 3434 -13 3453 -19 3466 -31 ct
-3479 -43 3486 -58 3486 -74 ct 3486 -83 3483 -93 3478 -102 ct 3473 -111 3465 -120 3455 -128 ct
-3448 -134 3428 -145 3396 -163 ct 3364 -181 3341 -195 3327 -206 ct 3314 -217 3304 -229 3297 -241 ct
-3290 -254 3286 -268 3286 -284 ct 3286 -311 3296 -334 3317 -353 ct 3338 -372 3364 -382 3396 -382 ct
-3416 -382 3437 -377 3459 -368 ct 3469 -363 3477 -361 3481 -361 ct 3486 -361 3490 -362 3493 -365 ct
-3496 -368 3498 -374 3500 -382 ct 3500 -382 3500 -382 3510 -382 ct p ef
-3809 -392 m 3809 -392 3809 -392 3809 -57 ct 3809 -41 3810 -31 3812 -26 ct 3815 -21 3818 -17 3823 -14 ct
-3828 -11 3837 -10 3850 -10 ct 3850 -10 3850 -10 3850 0 ct 3850 0 3850 0 3726 0 ct
-3726 0 3726 0 3726 -10 ct 3738 -10 3745 -11 3750 -14 ct 3754 -16 3757 -20 3759 -25 ct
-3762 -31 3763 -41 3763 -57 ct 3763 -57 3763 -57 3763 -286 ct 3763 -314 3762 -332 3761 -338 ct
-3760 -345 3758 -349 3755 -352 ct 3752 -354 3749 -355 3744 -355 ct 3740 -355 3734 -354 3727 -351 ct
-3727 -351 3727 -351 3722 -361 ct 3722 -361 3722 -361 3797 -392 ct 3797 -392 3797 -392 3809 -392 ct
-p ef
-4003 -260 m 4041 -260 4072 -246 4095 -217 ct 4114 -192 4124 -163 4124 -131 ct
-4124 -109 4119 -86 4108 -63 ct 4097 -40 4082 -22 4063 -11 ct 4044 1 4023 7 4000 7 ct
-3962 7 3932 -8 3909 -38 ct 3890 -64 3881 -92 3881 -124 ct 3881 -147 3887 -170 3898 -193 ct
-3910 -216 3925 -233 3943 -244 ct 3962 -255 3982 -260 4003 -260 ct p
-3994 -242 m 3985 -242 3975 -239 3965 -233 ct 3955 -228 3947 -218 3941 -203 ct
-3935 -189 3932 -170 3932 -147 ct 3932 -111 3939 -79 3954 -53 ct 3969 -26 3988 -13 4012 -13 ct
-4029 -13 4044 -20 4056 -35 ct 4067 -50 4073 -75 4073 -110 ct 4073 -155 4063 -190 4044 -216 ct
-4031 -233 4014 -242 3994 -242 ct p ef
-4286 -260 m 4324 -260 4355 -246 4378 -217 ct 4397 -192 4407 -163 4407 -131 ct
-4407 -109 4402 -86 4391 -63 ct 4380 -40 4365 -22 4346 -11 ct 4327 1 4306 7 4283 7 ct
-4245 7 4215 -8 4192 -38 ct 4173 -64 4164 -92 4164 -124 ct 4164 -147 4170 -170 4181 -193 ct
-4193 -216 4208 -233 4226 -244 ct 4245 -255 4265 -260 4286 -260 ct p
-4277 -242 m 4268 -242 4258 -239 4248 -233 ct 4238 -228 4230 -218 4224 -203 ct
-4218 -189 4215 -170 4215 -147 ct 4215 -111 4222 -79 4237 -53 ct 4252 -26 4271 -13 4295 -13 ct
-4312 -13 4327 -20 4339 -35 ct 4350 -50 4356 -75 4356 -110 ct 4356 -155 4346 -190 4327 -216 ct
-4314 -233 4297 -242 4277 -242 ct p ef
-4428 -228 m 4428 -228 4428 -228 4506 -259 ct 4506 -259 4506 -259 4517 -259 ct
-4517 -259 4517 -259 4517 -201 ct 4530 -223 4543 -238 4556 -247 ct 4569 -256 4583 -260 4597 -260 ct
-4622 -260 4643 -250 4660 -230 ct 4681 -206 4691 -175 4691 -136 ct 4691 -92 4679 -56 4654 -28 ct
-4633 -5 4608 7 4577 7 ct 4563 7 4551 5 4542 1 ct 4534 -2 4526 -7 4517 -16 ct 4517 -16 4517 -16 4517 63 ct
-4517 80 4518 91 4520 96 ct 4522 100 4526 104 4531 107 ct 4537 110 4546 111 4560 111 ct
-4560 111 4560 111 4560 121 ct 4560 121 4560 121 4425 121 ct 4425 121 4425 121 4425 111 ct
-4425 111 4425 111 4432 111 ct 4442 111 4451 109 4459 105 ct 4462 103 4465 100 4467 95 ct
-4469 91 4470 79 4470 61 ct 4470 61 4470 61 4470 -179 ct 4470 -195 4469 -205 4468 -209 ct
-4466 -213 4464 -216 4461 -219 ct 4458 -221 4453 -222 4448 -222 ct 4444 -222 4438 -221 4431 -218 ct
-4431 -218 4431 -218 4428 -228 ct p
-4517 -185 m 4517 -185 4517 -185 4517 -90 ct 4517 -70 4518 -57 4519 -50 ct 4522 -40 4528 -30 4538 -22 ct
-4548 -14 4561 -10 4576 -10 ct 4594 -10 4609 -17 4620 -31 ct 4635 -50 4642 -77 4642 -111 ct
-4642 -149 4634 -179 4617 -200 ct 4605 -214 4591 -221 4575 -221 ct 4567 -221 4558 -219 4549 -214 ct
-4543 -211 4532 -201 4517 -185 ct p ef
-pom
-gr
-gr
-gs
-3535 6235 m 5208 6235 l 5208 6964 l 3535 6964 l 3535 6235 l eoclip newpath
-gs
-tm setmatrix
-1111 3201 t
-1 1 s
-gs
-gs
-0 0 m 1673 0 l 1673 729 l 0 729 l 0 0 l eoclip newpath
-gs
-pum
-106 556 t
-86 9 m 86 9 86 9 122 -341 ct 124 -355 124 -365 124 -373 ct 124 -385 121 -394 114 -400 ct
-107 -406 95 -410 77 -410 ct 77 -410 77 -410 81 -421 ct 81 -421 81 -421 237 -421 ct
-237 -421 237 -421 234 -410 ct 213 -410 198 -406 191 -399 ct 183 -391 177 -372 175 -341 ct
-175 -341 175 -341 151 -113 ct 151 -113 151 -113 311 -361 ct 311 -365 311 -369 311 -371 ct
-311 -383 308 -392 301 -398 ct 294 -405 279 -409 257 -410 ct 257 -410 257 -410 259 -421 ct
-259 -421 259 -421 430 -421 ct 430 -421 430 -421 426 -410 ct 407 -410 393 -408 387 -405 ct
-382 -403 377 -399 374 -394 ct 371 -389 368 -380 366 -368 ct 365 -364 363 -340 358 -296 ct
-354 -251 347 -190 338 -113 ct 338 -113 338 -113 472 -317 ct 486 -339 496 -354 499 -363 ct
-503 -372 505 -380 505 -386 ct 505 -392 502 -397 497 -401 ct 492 -406 484 -409 472 -410 ct
-472 -410 472 -410 474 -421 ct 474 -421 474 -421 599 -421 ct 599 -421 599 -421 596 -410 ct
-585 -409 575 -406 567 -402 ct 558 -397 548 -389 537 -376 ct 530 -368 516 -349 496 -317 ct
-496 -317 496 -317 284 9 ct 284 9 284 9 273 9 ct 273 9 273 9 307 -317 ct 307 -317 307 -317 97 9 ct
-97 9 97 9 86 9 ct p ef
-pom
-gr
-gs
-pum
-767 556 t
-168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
-98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
-89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
-p ef
-pom
-gr
-gs
-pum
-1058 556 t
-54 -273 m 54 -273 54 -273 249 -273 ct 249 -273 249 -273 249 -265 ct 249 -265 249 -265 35 -42 ct
-35 -42 35 -42 125 -42 ct 147 -42 161 -43 166 -44 ct 172 -46 178 -50 183 -55 ct
-187 -60 193 -70 199 -84 ct 199 -84 199 -84 210 -84 ct 210 -84 210 -84 183 0 ct
-183 0 183 0 -18 0 ct -18 0 -18 0 -18 -9 ct -18 -9 -18 -9 196 -232 ct 196 -232 196 -232 109 -232 ct
-90 -232 78 -232 74 -231 ct 68 -229 63 -226 57 -221 ct 51 -216 45 -208 39 -196 ct
-39 -196 39 -196 28 -196 ct 28 -196 28 -196 54 -273 ct p ef
-pom
-gr
-gs
-pum
-1376 556 t
-33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
-86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
-143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
-33 131 33 131 33 116 ct p ef
-pom
-gr
-gr
-gr
-gr
-gr
-gs
-12335 15640 m 13606 15640 l 13606 16435 l 12335 16435 l 12335 15640 l eoclip newpath
-gs
-tm setmatrix
-9895 12594 t
-1 1 s
-gs
-gs
-0 0 m 1271 0 l 1271 795 l 0 795 l 0 0 l eoclip newpath
-gs
-pum
-159 556 t
-331 -261 m 331 -261 331 -261 322 -229 ct 322 -229 322 -229 270 -229 ct 274 -218 276 -207 276 -198 ct
-276 -170 264 -146 241 -124 ct 217 -103 185 -91 144 -89 ct 122 -82 106 -75 95 -65 ct
-91 -62 89 -59 89 -55 ct 89 -51 91 -47 95 -44 ct 98 -40 108 -37 123 -33 ct 123 -33 123 -33 183 -20 ct
-216 -12 238 -3 248 8 ct 259 19 264 31 264 46 ct 264 63 258 78 245 92 ct 233 106 215 117 190 125 ct
-166 133 140 137 111 137 ct 85 137 62 134 41 128 ct 20 122 5 114 -4 103 ct -13 93 -18 82 -18 71 ct
--18 63 -15 53 -9 44 ct -3 34 4 26 13 20 ct 19 16 35 7 61 -8 ct 52 -15 47 -23 47 -32 ct
-47 -40 51 -49 59 -58 ct 67 -68 85 -78 111 -89 ct 89 -93 71 -103 58 -118 ct 45 -132 39 -149 39 -167 ct
-39 -196 52 -222 78 -245 ct 104 -268 138 -280 181 -280 ct 196 -280 209 -278 219 -275 ct
-229 -272 239 -268 248 -261 ct 248 -261 248 -261 331 -261 ct p
-225 -211 m 225 -228 220 -240 211 -250 ct 201 -259 189 -264 173 -264 ct 149 -264 129 -252 114 -229 ct
-98 -206 90 -182 90 -157 ct 90 -141 95 -128 105 -118 ct 115 -108 127 -103 142 -103 ct
-153 -103 164 -106 174 -112 ct 185 -118 194 -126 201 -136 ct 209 -147 214 -160 219 -176 ct
-223 -192 225 -204 225 -211 ct p
-74 0 m 57 8 45 18 36 30 ct 27 42 23 53 23 65 ct 23 79 29 90 42 99 ct 59 112 85 118 120 118 ct
-149 118 175 113 196 103 ct 217 93 227 80 227 64 ct 227 56 223 48 215 41 ct 208 34 193 28 170 24 ct
-158 21 126 13 74 0 ct p ef
-pom
-gr
-gs
-pum
-529 714 t
-134 -168 m 134 -168 134 -168 124 -111 ct 124 -111 124 -111 117 -111 ct 116 -128 113 -140 107 -148 ct
-101 -155 93 -159 84 -159 ct 77 -159 71 -157 66 -153 ct 62 -148 60 -143 60 -137 ct
-60 -133 61 -129 63 -126 ct 64 -122 68 -117 74 -110 ct 89 -93 99 -79 103 -70 ct
-108 -62 110 -53 110 -45 ct 110 -32 105 -21 94 -11 ct 84 -1 71 4 55 4 ct 46 4 36 2 24 -3 ct
-20 -4 17 -5 15 -5 ct 10 -5 6 -2 3 4 ct 3 4 3 4 -4 4 ct -4 4 -4 4 6 -56 ct 6 -56 6 -56 13 -56 ct
-14 -37 18 -24 25 -17 ct 32 -9 41 -5 53 -5 ct 63 -5 70 -8 76 -13 ct 81 -18 84 -25 84 -32 ct
-84 -37 83 -42 81 -46 ct 78 -53 71 -63 60 -76 ct 49 -89 42 -99 39 -106 ct 36 -112 34 -119 34 -125 ct
-34 -137 38 -147 47 -156 ct 55 -164 66 -168 80 -168 ct 83 -168 87 -168 90 -167 ct
-92 -167 96 -165 102 -163 ct 108 -160 112 -159 114 -159 ct 119 -159 124 -162 127 -168 ct
-127 -168 127 -168 134 -168 ct p ef
-331 -164 m 331 -164 331 -164 297 -52 ct 292 -35 289 -24 289 -20 ct 289 -18 290 -16 290 -15 ct
-291 -14 292 -14 293 -14 ct 294 -14 296 -15 298 -17 ct 300 -18 306 -26 314 -39 ct
-314 -39 314 -39 319 -35 ct 311 -20 302 -9 293 -2 ct 287 2 281 4 276 4 ct 271 4 268 3 266 0 ct
-263 -3 262 -6 262 -10 ct 262 -15 263 -20 264 -27 ct 267 -35 273 -55 282 -86 ct
-260 -51 242 -28 227 -15 ct 212 -2 198 4 186 4 ct 180 4 175 2 171 -2 ct 167 -6 165 -11 165 -17 ct
-165 -26 169 -40 175 -59 ct 175 -59 175 -59 194 -117 ct 199 -130 202 -139 202 -142 ct
-202 -144 201 -145 200 -146 ct 198 -147 197 -148 196 -148 ct 192 -148 189 -147 186 -145 ct
-183 -143 176 -136 165 -124 ct 165 -124 165 -124 159 -128 ct 169 -143 180 -153 191 -160 ct
-200 -165 208 -168 215 -168 ct 220 -168 224 -166 227 -163 ct 230 -160 232 -155 232 -150 ct
-232 -143 229 -131 223 -114 ct 223 -114 223 -114 203 -55 ct 197 -39 194 -29 194 -24 ct
-194 -22 195 -20 197 -19 ct 199 -17 201 -16 203 -16 ct 208 -16 213 -18 220 -23 ct
-227 -27 236 -36 247 -50 ct 259 -64 268 -77 275 -90 ct 282 -102 290 -122 299 -149 ct
-299 -149 299 -149 304 -164 ct 304 -164 304 -164 331 -164 ct p ef
-453 -265 m 453 -265 453 -265 415 -136 ct 427 -148 437 -157 445 -161 ct 454 -166 463 -168 472 -168 ct
-485 -168 496 -164 504 -154 ct 513 -145 517 -133 517 -118 ct 517 -98 511 -78 500 -59 ct
-489 -39 475 -23 459 -12 ct 442 -2 425 4 409 4 ct 391 4 372 -3 353 -17 ct 353 -17 353 -17 409 -213 ct
-414 -228 416 -236 416 -239 ct 416 -242 415 -244 413 -246 ct 410 -248 406 -249 400 -249 ct
-397 -249 393 -249 387 -248 ct 387 -248 387 -248 387 -255 ct 387 -255 387 -255 453 -265 ct
-p
-380 -15 m 392 -8 403 -5 412 -5 ct 422 -5 433 -9 444 -17 ct 456 -25 465 -38 474 -57 ct
-482 -76 486 -95 486 -114 ct 486 -125 483 -134 478 -140 ct 473 -147 466 -150 459 -150 ct
-448 -150 437 -145 427 -136 ct 417 -127 409 -114 404 -97 ct 404 -97 404 -97 380 -15 ct
-p ef
-648 -164 m 648 -164 648 -164 645 -150 ct 645 -150 645 -150 617 -150 ct 617 -150 617 -150 594 -69 ct
-584 -34 574 -6 565 13 ct 552 41 538 60 523 70 ct 511 78 500 82 488 82 ct 481 82 474 80 469 75 ct
-465 72 463 68 463 63 ct 463 59 465 55 468 52 ct 471 49 475 48 479 48 ct 483 48 485 49 488 51 ct
-490 53 491 56 491 58 ct 491 61 490 64 488 66 ct 486 68 485 69 485 70 ct 485 71 485 72 486 73 ct
-487 74 489 74 491 74 ct 497 74 502 72 508 69 ct 514 66 519 61 524 54 ct 528 48 532 38 537 26 ct
-538 21 543 4 551 -25 ct 551 -25 551 -25 588 -150 ct 588 -150 588 -150 551 -150 ct
-551 -150 551 -150 554 -164 ct 565 -164 573 -165 578 -166 ct 582 -168 586 -170 590 -174 ct
-594 -178 599 -186 604 -197 ct 611 -212 618 -224 624 -232 ct 633 -243 642 -251 652 -257 ct
-661 -262 671 -265 679 -265 ct 688 -265 695 -263 701 -258 ct 706 -253 709 -248 709 -242 ct
-709 -238 708 -234 705 -231 ct 702 -228 698 -227 694 -227 ct 690 -227 687 -228 685 -230 ct
-682 -233 681 -235 681 -238 ct 681 -240 682 -243 684 -245 ct 686 -248 687 -250 687 -251 ct
-687 -253 686 -254 685 -255 ct 684 -256 682 -257 679 -257 ct 672 -257 665 -254 659 -249 ct
-651 -242 644 -232 638 -217 ct 635 -210 629 -192 621 -164 ct 621 -164 621 -164 648 -164 ct
-p ef
-pom
-gr
-gr
-gr
-gr
-gr
-13835 16605 m 13273 16793 l 13273 16418 l 13835 16605 l p ef
-12335 16558 m 13085 16558 l 13085 16583 l 13085 16608 l 12335 16608 l
-12335 16583 l 12335 16558 l p ef
-13085 16583 m 13085 16558 l 13089 16558 l 13094 16560 l 13097 16561 l
-13101 16564 l 13104 16567 l 13107 16570 l 13108 16574 l 13110 16579 l
-13110 16583 l 13110 16583 l 13085 16583 l p ef
-13110 16583 m 13110 16605 l 13085 16605 l 13060 16605 l 13060 16583 l
-13085 16583 l 13110 16583 l p ef
-13085 16605 m 13085 16630 l 13081 16630 l 13076 16628 l 13073 16627 l
-13069 16624 l 13066 16621 l 13063 16618 l 13062 16614 l 13060 16609 l
-13060 16605 l 13060 16605 l 13085 16605 l p ef
-13085 16580 m 13385 16580 l 13385 16605 l 13385 16630 l 13085 16630 l
-13085 16605 l 13085 16580 l p ef
-gs
-gs
-pum
-5240 9069 t
-29 -234 m 29 -234 29 -234 123 -249 ct 123 -249 123 -249 84 -115 ct 117 -170 146 -208 173 -230 ct
-188 -243 200 -249 209 -249 ct 215 -249 220 -247 224 -244 ct 227 -240 229 -235 229 -228 ct
-229 -216 226 -204 220 -193 ct 215 -185 209 -181 201 -181 ct 196 -181 193 -182 190 -185 ct
-187 -188 185 -192 184 -198 ct 184 -201 183 -204 181 -205 ct 180 -206 178 -207 176 -207 ct
-173 -207 170 -206 167 -205 ct 163 -202 155 -195 146 -183 ct 130 -165 114 -142 96 -113 ct
-88 -101 81 -88 76 -72 ct 68 -51 64 -39 63 -35 ct 63 -35 63 -35 54 0 ct 54 0 54 0 12 0 ct
-12 0 12 0 61 -171 ct 67 -191 70 -205 70 -214 ct 70 -217 69 -220 66 -222 ct 62 -225 58 -226 52 -226 ct
-48 -226 42 -226 32 -224 ct 32 -224 32 -224 29 -234 ct p ef
-346 -359 m 353 -359 360 -356 365 -351 ct 370 -346 373 -339 373 -332 ct 373 -324 370 -318 365 -312 ct
-359 -307 353 -304 346 -304 ct 338 -304 332 -307 326 -312 ct 321 -318 318 -324 318 -332 ct
-318 -339 321 -346 326 -351 ct 331 -356 338 -359 346 -359 ct p
-358 -251 m 358 -251 358 -251 300 -55 ct 296 -42 294 -34 294 -31 ct 294 -29 294 -26 296 -25 ct
-298 -23 299 -22 302 -22 ct 304 -22 307 -23 311 -26 ct 320 -34 330 -46 339 -61 ct
-339 -61 339 -61 349 -55 ct 337 -36 323 -20 307 -8 ct 295 1 284 6 273 6 ct 266 6 260 4 256 -1 ct
-251 -5 249 -10 249 -17 ct 249 -24 251 -35 256 -52 ct 256 -52 256 -52 295 -177 ct
-301 -197 304 -210 304 -215 ct 304 -219 303 -223 300 -225 ct 297 -228 293 -229 288 -229 ct
-284 -229 276 -228 263 -226 ct 263 -226 263 -226 263 -236 ct 263 -236 263 -236 358 -251 ct
-p ef
-500 -249 m 500 -249 500 -249 464 -123 ct 501 -174 529 -208 549 -225 ct 568 -241 587 -249 605 -249 ct
-615 -249 623 -246 630 -239 ct 636 -233 639 -224 639 -214 ct 639 -203 636 -188 630 -170 ct
-630 -170 630 -170 593 -55 ct 589 -42 586 -34 586 -31 ct 586 -28 587 -26 588 -25 ct
-590 -23 591 -22 593 -22 ct 595 -22 597 -23 600 -25 ct 609 -33 619 -45 629 -60 ct
-629 -60 629 -60 638 -55 ct 621 -31 606 -14 591 -4 ct 581 3 571 6 563 6 ct 557 6 551 4 548 0 ct
-544 -4 542 -9 542 -16 ct 542 -25 545 -40 552 -61 ct 552 -61 552 -61 589 -172 ct
-594 -185 596 -196 596 -204 ct 596 -207 595 -210 592 -213 ct 590 -215 586 -216 583 -216 ct
-577 -216 570 -214 562 -209 ct 548 -201 532 -188 516 -169 ct 500 -150 483 -126 465 -97 ct
-456 -81 448 -64 442 -46 ct 442 -46 442 -46 429 0 ct 429 0 429 0 388 0 ct 388 0 388 0 438 -173 ct
-444 -193 447 -206 447 -210 ct 447 -214 445 -217 442 -220 ct 439 -223 435 -225 430 -225 ct
-428 -225 424 -224 418 -224 ct 418 -224 418 -224 408 -222 ct 408 -222 408 -222 406 -232 ct
-406 -232 406 -232 500 -249 ct p ef
-954 -232 m 954 -232 954 -232 946 -204 ct 946 -204 946 -204 900 -204 ct 903 -194 905 -185 905 -176 ct
-905 -152 895 -130 874 -111 ct 853 -92 824 -81 788 -79 ct 768 -73 754 -66 744 -58 ct
-741 -55 739 -52 739 -49 ct 739 -45 741 -42 744 -39 ct 747 -36 756 -33 770 -29 ct
-770 -29 770 -29 822 -17 ct 851 -11 871 -3 880 7 ct 889 17 894 28 894 41 ct 894 56 888 70 877 82 ct
-866 95 850 104 829 111 ct 807 118 784 122 758 122 ct 735 122 714 119 695 114 ct
-677 108 663 101 655 92 ct 647 83 643 73 643 64 ct 643 56 646 48 651 39 ct 656 31 663 24 671 18 ct
-676 15 690 6 714 -7 ct 705 -13 701 -21 701 -28 ct 701 -36 705 -44 712 -52 ct 719 -60 734 -69 758 -79 ct
-738 -83 723 -91 711 -104 ct 700 -117 694 -132 694 -148 ct 694 -174 706 -197 729 -218 ct
-752 -239 782 -249 820 -249 ct 834 -249 846 -248 855 -245 ct 863 -242 872 -238 880 -232 ct
-880 -232 880 -232 954 -232 ct p
-860 -188 m 860 -202 856 -214 847 -222 ct 839 -231 828 -235 814 -235 ct 792 -235 774 -225 760 -204 ct
-746 -183 739 -162 739 -139 ct 739 -125 744 -113 753 -104 ct 762 -95 772 -91 785 -91 ct
-795 -91 805 -94 815 -99 ct 824 -104 832 -112 839 -121 ct 845 -130 850 -142 854 -157 ct
-858 -171 860 -181 860 -188 ct p
-726 0 m 710 7 699 16 691 27 ct 683 37 679 48 679 58 ct 679 70 685 80 696 88 ct
-711 99 735 105 765 105 ct 792 105 814 101 833 92 ct 852 83 861 71 861 57 ct 861 50 858 43 851 37 ct
-844 30 831 25 811 21 ct 800 19 772 12 726 0 ct p ef
-1070 -359 m 1077 -359 1084 -356 1089 -351 ct 1094 -346 1097 -339 1097 -332 ct
-1097 -324 1094 -318 1089 -312 ct 1083 -307 1077 -304 1070 -304 ct 1062 -304 1056 -307 1050 -312 ct
-1045 -318 1042 -324 1042 -332 ct 1042 -339 1045 -346 1050 -351 ct 1055 -356 1062 -359 1070 -359 ct
-p
-1082 -251 m 1082 -251 1082 -251 1024 -55 ct 1020 -42 1018 -34 1018 -31 ct 1018 -29 1018 -26 1020 -25 ct
-1022 -23 1023 -22 1026 -22 ct 1028 -22 1031 -23 1035 -26 ct 1044 -34 1054 -46 1063 -61 ct
-1063 -61 1063 -61 1073 -55 ct 1061 -36 1047 -20 1031 -8 ct 1019 1 1008 6 997 6 ct
-990 6 984 4 980 -1 ct 975 -5 973 -10 973 -17 ct 973 -24 975 -35 980 -52 ct 980 -52 980 -52 1019 -177 ct
-1025 -197 1028 -210 1028 -215 ct 1028 -219 1027 -223 1024 -225 ct 1021 -228 1017 -229 1012 -229 ct
-1008 -229 1000 -228 987 -226 ct 987 -226 987 -226 987 -236 ct 987 -236 987 -236 1082 -251 ct
-p ef
-1224 -249 m 1224 -249 1224 -249 1188 -123 ct 1225 -174 1253 -208 1273 -225 ct
-1292 -241 1311 -249 1329 -249 ct 1339 -249 1347 -246 1354 -239 ct 1360 -233 1363 -224 1363 -214 ct
-1363 -203 1360 -188 1354 -170 ct 1354 -170 1354 -170 1317 -55 ct 1313 -42 1310 -34 1310 -31 ct
-1310 -28 1311 -26 1312 -25 ct 1314 -23 1315 -22 1317 -22 ct 1319 -22 1321 -23 1324 -25 ct
-1333 -33 1343 -45 1353 -60 ct 1353 -60 1353 -60 1362 -55 ct 1345 -31 1330 -14 1315 -4 ct
-1305 3 1295 6 1287 6 ct 1281 6 1275 4 1272 0 ct 1268 -4 1266 -9 1266 -16 ct 1266 -25 1269 -40 1276 -61 ct
-1276 -61 1276 -61 1313 -172 ct 1318 -185 1320 -196 1320 -204 ct 1320 -207 1319 -210 1316 -213 ct
-1314 -215 1310 -216 1307 -216 ct 1301 -216 1294 -214 1286 -209 ct 1272 -201 1256 -188 1240 -169 ct
-1224 -150 1207 -126 1189 -97 ct 1180 -81 1172 -64 1166 -46 ct 1166 -46 1166 -46 1153 0 ct
-1153 0 1153 0 1112 0 ct 1112 0 1112 0 1162 -173 ct 1168 -193 1171 -206 1171 -210 ct
-1171 -214 1169 -217 1166 -220 ct 1163 -223 1159 -225 1154 -225 ct 1152 -225 1148 -224 1142 -224 ct
-1142 -224 1142 -224 1132 -222 ct 1132 -222 1132 -222 1130 -232 ct 1130 -232 1130 -232 1224 -249 ct
-p ef
-1678 -232 m 1678 -232 1678 -232 1670 -204 ct 1670 -204 1670 -204 1624 -204 ct
-1627 -194 1629 -185 1629 -176 ct 1629 -152 1619 -130 1598 -111 ct 1577 -92 1548 -81 1512 -79 ct
-1492 -73 1478 -66 1468 -58 ct 1465 -55 1463 -52 1463 -49 ct 1463 -45 1465 -42 1468 -39 ct
-1471 -36 1480 -33 1494 -29 ct 1494 -29 1494 -29 1546 -17 ct 1575 -11 1595 -3 1604 7 ct
-1613 17 1618 28 1618 41 ct 1618 56 1612 70 1601 82 ct 1590 95 1574 104 1553 111 ct
-1531 118 1508 122 1482 122 ct 1459 122 1438 119 1419 114 ct 1401 108 1387 101 1379 92 ct
-1371 83 1367 73 1367 64 ct 1367 56 1370 48 1375 39 ct 1380 31 1387 24 1395 18 ct
-1400 15 1414 6 1438 -7 ct 1429 -13 1425 -21 1425 -28 ct 1425 -36 1429 -44 1436 -52 ct
-1443 -60 1458 -69 1482 -79 ct 1462 -83 1447 -91 1435 -104 ct 1424 -117 1418 -132 1418 -148 ct
-1418 -174 1430 -197 1453 -218 ct 1476 -239 1506 -249 1544 -249 ct 1558 -249 1570 -248 1579 -245 ct
-1587 -242 1596 -238 1604 -232 ct 1604 -232 1604 -232 1678 -232 ct p
-1584 -188 m 1584 -202 1580 -214 1571 -222 ct 1563 -231 1552 -235 1538 -235 ct
-1516 -235 1498 -225 1484 -204 ct 1470 -183 1463 -162 1463 -139 ct 1463 -125 1468 -113 1477 -104 ct
-1486 -95 1496 -91 1509 -91 ct 1519 -91 1529 -94 1539 -99 ct 1548 -104 1556 -112 1563 -121 ct
-1569 -130 1574 -142 1578 -157 ct 1582 -171 1584 -181 1584 -188 ct p
-1450 0 m 1434 7 1423 16 1415 27 ct 1407 37 1403 48 1403 58 ct 1403 70 1409 80 1420 88 ct
-1435 99 1459 105 1489 105 ct 1516 105 1538 101 1557 92 ct 1576 83 1585 71 1585 57 ct
-1585 50 1582 43 1575 37 ct 1568 30 1555 25 1535 21 ct 1524 19 1496 12 1450 0 ct
-p ef
-pom
-gr
-gr
-gs
-gs
-pum
-11442 9254 t
-92 -207 m 121 -242 149 -260 176 -260 ct 190 -260 202 -257 211 -250 ct 221 -243 229 -231 235 -216 ct
-239 -205 241 -188 241 -165 ct 241 -165 241 -165 241 -57 ct 241 -41 242 -30 245 -25 ct
-247 -20 250 -16 254 -14 ct 258 -11 266 -10 278 -10 ct 278 -10 278 -10 278 0 ct
-278 0 278 0 154 0 ct 154 0 154 0 154 -10 ct 154 -10 154 -10 159 -10 ct 171 -10 179 -12 184 -15 ct
-189 -19 192 -24 194 -31 ct 195 -34 195 -43 195 -57 ct 195 -57 195 -57 195 -161 ct
-195 -184 192 -201 186 -211 ct 180 -222 170 -227 156 -227 ct 135 -227 113 -215 92 -191 ct
-92 -191 92 -191 92 -57 ct 92 -40 93 -29 95 -25 ct 98 -20 101 -16 106 -14 ct 110 -11 119 -10 133 -10 ct
-133 -10 133 -10 133 0 ct 133 0 133 0 9 0 ct 9 0 9 0 9 -10 ct 9 -10 9 -10 14 -10 ct
-27 -10 35 -13 39 -20 ct 44 -26 46 -39 46 -57 ct 46 -57 46 -57 46 -151 ct 46 -181 45 -200 44 -206 ct
-43 -213 41 -217 38 -220 ct 35 -222 31 -223 26 -223 ct 21 -223 15 -222 8 -219 ct
-8 -219 8 -219 4 -229 ct 4 -229 4 -229 80 -260 ct 80 -260 80 -260 92 -260 ct 92 -260 92 -260 92 -207 ct
-p ef
-523 -253 m 523 -253 523 -253 523 -99 ct 523 -70 524 -53 525 -47 ct 526 -40 529 -36 532 -33 ct
-535 -31 538 -29 542 -29 ct 548 -29 554 -31 561 -34 ct 561 -34 561 -34 565 -24 ct
-565 -24 565 -24 490 7 ct 490 7 490 7 478 7 ct 478 7 478 7 478 -46 ct 456 -23 440 -8 428 -2 ct
-417 4 405 7 392 7 ct 378 7 365 3 355 -5 ct 344 -14 337 -24 333 -37 ct 329 -50 327 -68 327 -92 ct
-327 -92 327 -92 327 -205 ct 327 -217 326 -225 323 -229 ct 321 -234 317 -237 312 -240 ct
-307 -242 297 -243 284 -243 ct 284 -243 284 -243 284 -253 ct 284 -253 284 -253 373 -253 ct
-373 -253 373 -253 373 -84 ct 373 -60 377 -44 385 -37 ct 394 -30 403 -26 415 -26 ct
-423 -26 432 -28 442 -33 ct 452 -38 464 -48 478 -62 ct 478 -62 478 -62 478 -205 ct
-478 -220 475 -230 470 -235 ct 465 -240 454 -243 437 -243 ct 437 -243 437 -243 437 -253 ct
-437 -253 437 -253 523 -253 ct p ef
-672 -392 m 672 -392 672 -392 672 -57 ct 672 -41 673 -31 675 -26 ct 678 -21 681 -17 686 -14 ct
-691 -11 700 -10 713 -10 ct 713 -10 713 -10 713 0 ct 713 0 713 0 589 0 ct 589 0 589 0 589 -10 ct
-601 -10 608 -11 613 -14 ct 617 -16 620 -20 622 -25 ct 625 -31 626 -41 626 -57 ct
-626 -57 626 -57 626 -286 ct 626 -314 625 -332 624 -338 ct 623 -345 621 -349 618 -352 ct
-615 -354 612 -355 607 -355 ct 603 -355 597 -354 590 -351 ct 590 -351 590 -351 585 -361 ct
-585 -361 585 -361 660 -392 ct 660 -392 660 -392 672 -392 ct p ef
-829 -392 m 829 -392 829 -392 829 -57 ct 829 -41 830 -31 832 -26 ct 835 -21 838 -17 843 -14 ct
-848 -11 857 -10 870 -10 ct 870 -10 870 -10 870 0 ct 870 0 870 0 746 0 ct 746 0 746 0 746 -10 ct
-758 -10 765 -11 770 -14 ct 774 -16 777 -20 779 -25 ct 782 -31 783 -41 783 -57 ct
-783 -57 783 -57 783 -286 ct 783 -314 782 -332 781 -338 ct 780 -345 778 -349 775 -352 ct
-772 -354 769 -355 764 -355 ct 760 -355 754 -354 747 -351 ct 747 -351 747 -351 742 -361 ct
-742 -361 742 -361 817 -392 ct 817 -392 817 -392 829 -392 ct p ef
-pom
-gr
-gs
-pum
-10769 9881 t
-60 -158 m 60 -121 69 -92 87 -71 ct 105 -50 126 -39 151 -39 ct 167 -39 182 -43 194 -52 ct
-206 -61 216 -77 224 -99 ct 224 -99 224 -99 233 -94 ct 229 -68 218 -45 199 -24 ct
-181 -3 158 7 130 7 ct 100 7 74 -5 52 -28 ct 31 -52 20 -83 20 -123 ct 20 -166 31 -200 53 -224 ct
-75 -248 103 -260 136 -260 ct 164 -260 188 -251 206 -232 ct 224 -214 233 -189 233 -158 ct
-233 -158 233 -158 60 -158 ct p
-60 -174 m 60 -174 60 -174 176 -174 ct 175 -190 173 -201 170 -208 ct 166 -218 159 -226 150 -231 ct
-141 -237 131 -240 122 -240 ct 106 -240 93 -234 81 -223 ct 69 -211 62 -195 60 -174 ct
-p ef
-257 -253 m 257 -253 257 -253 373 -253 ct 373 -253 373 -253 373 -243 ct 366 -243 361 -242 358 -239 ct
-355 -236 354 -233 354 -229 ct 354 -224 358 -217 365 -208 ct 367 -205 370 -200 374 -194 ct
-374 -194 374 -194 392 -166 ct 392 -166 392 -166 413 -194 ct 426 -211 433 -223 433 -228 ct
-433 -232 431 -236 428 -239 ct 425 -242 420 -243 413 -243 ct 413 -243 413 -243 413 -253 ct
-413 -253 413 -253 496 -253 ct 496 -253 496 -253 496 -243 ct 487 -242 480 -240 473 -236 ct
-464 -229 452 -216 437 -195 ct 437 -195 437 -195 403 -149 ct 403 -149 403 -149 465 -58 ct
-481 -36 492 -22 498 -18 ct 505 -13 513 -11 524 -10 ct 524 -10 524 -10 524 0 ct
-524 0 524 0 404 0 ct 404 0 404 0 404 -10 ct 412 -10 419 -12 424 -16 ct 427 -18 429 -22 429 -26 ct
-429 -30 423 -41 411 -58 ct 411 -58 411 -58 374 -112 ct 374 -112 374 -112 334 -59 ct
-322 -42 316 -32 316 -29 ct 316 -24 318 -20 322 -16 ct 326 -12 333 -10 341 -10 ct
-341 -10 341 -10 341 0 ct 341 0 341 0 259 0 ct 259 0 259 0 259 -10 ct 266 -11 271 -13 276 -17 ct
-283 -22 295 -36 311 -58 ct 311 -58 311 -58 364 -128 ct 364 -128 364 -128 316 -198 ct
-303 -218 292 -230 285 -235 ct 277 -240 268 -243 257 -243 ct 257 -243 257 -243 257 -253 ct
-p ef
-766 -95 m 759 -62 746 -37 726 -19 ct 706 -2 684 7 660 7 ct 631 7 606 -5 585 -29 ct
-564 -53 553 -85 553 -126 ct 553 -166 565 -198 588 -223 ct 612 -248 641 -260 674 -260 ct
-699 -260 719 -253 735 -240 ct 751 -227 759 -214 759 -199 ct 759 -192 757 -187 752 -182 ct
-748 -178 741 -176 733 -176 ct 723 -176 715 -180 709 -187 ct 706 -190 704 -198 703 -209 ct
-702 -220 698 -228 691 -234 ct 685 -239 676 -242 665 -242 ct 646 -242 632 -235 620 -222 ct
-605 -204 598 -180 598 -150 ct 598 -120 605 -94 620 -71 ct 635 -48 655 -36 680 -36 ct
-698 -36 714 -42 729 -54 ct 739 -62 748 -77 758 -99 ct 758 -99 758 -99 766 -95 ct
-p ef
-865 -392 m 873 -392 879 -389 885 -384 ct 890 -378 893 -372 893 -364 ct 893 -356 890 -350 885 -344 ct
-879 -339 873 -336 865 -336 ct 857 -336 851 -339 845 -344 ct 840 -350 837 -356 837 -364 ct
-837 -372 840 -378 845 -384 ct 851 -389 857 -392 865 -392 ct p
-888 -260 m 888 -260 888 -260 888 -57 ct 888 -41 889 -31 891 -26 ct 894 -20 897 -16 901 -14 ct
-906 -11 913 -10 925 -10 ct 925 -10 925 -10 925 0 ct 925 0 925 0 805 0 ct 805 0 805 0 805 -10 ct
-817 -10 825 -11 829 -14 ct 833 -16 836 -20 838 -25 ct 841 -31 842 -41 842 -57 ct
-842 -57 842 -57 842 -154 ct 842 -181 841 -199 840 -207 ct 838 -213 836 -217 834 -220 ct
-831 -222 827 -223 822 -223 ct 817 -223 811 -222 804 -219 ct 804 -219 804 -219 800 -229 ct
-800 -229 800 -229 876 -260 ct 876 -260 876 -260 888 -260 ct p ef
-1031 -337 m 1031 -337 1031 -337 1031 -253 ct 1031 -253 1031 -253 1090 -253 ct
-1090 -253 1090 -253 1090 -234 ct 1090 -234 1090 -234 1031 -234 ct 1031 -234 1031 -234 1031 -70 ct
-1031 -53 1033 -42 1038 -37 ct 1043 -31 1049 -28 1056 -28 ct 1062 -28 1068 -30 1074 -34 ct
-1079 -37 1084 -43 1087 -50 ct 1087 -50 1087 -50 1098 -50 ct 1092 -32 1082 -19 1071 -10 ct
-1059 -1 1046 4 1034 4 ct 1025 4 1017 2 1009 -3 ct 1001 -8 995 -14 991 -23 ct 987 -32 985 -45 985 -64 ct
-985 -64 985 -64 985 -234 ct 985 -234 985 -234 945 -234 ct 945 -234 945 -234 945 -243 ct
-955 -247 965 -254 976 -264 ct 987 -273 996 -285 1004 -298 ct 1009 -305 1014 -318 1022 -337 ct
-1022 -337 1022 -337 1031 -337 ct p ef
-1257 -37 m 1231 -17 1215 -5 1208 -2 ct 1198 3 1188 5 1176 5 ct 1159 5 1144 -1 1133 -13 ct
-1122 -25 1116 -40 1116 -60 ct 1116 -72 1119 -83 1124 -92 ct 1132 -104 1145 -116 1164 -127 ct
-1182 -138 1214 -151 1257 -167 ct 1257 -167 1257 -167 1257 -177 ct 1257 -202 1253 -219 1245 -228 ct
-1237 -237 1226 -242 1210 -242 ct 1199 -242 1190 -239 1183 -233 ct 1176 -226 1172 -219 1172 -211 ct
-1172 -211 1172 -211 1173 -195 ct 1173 -187 1171 -180 1166 -176 ct 1162 -171 1156 -169 1149 -169 ct
-1143 -169 1137 -171 1133 -176 ct 1128 -181 1126 -188 1126 -196 ct 1126 -212 1134 -227 1150 -240 ct
-1166 -253 1189 -260 1218 -260 ct 1240 -260 1259 -256 1273 -249 ct 1284 -243 1292 -234 1297 -222 ct
-1300 -214 1302 -198 1302 -174 ct 1302 -174 1302 -174 1302 -89 ct 1302 -65 1302 -50 1303 -45 ct
-1304 -39 1306 -36 1308 -34 ct 1310 -32 1312 -31 1315 -31 ct 1318 -31 1321 -32 1323 -33 ct
-1327 -35 1334 -42 1345 -53 ct 1345 -53 1345 -53 1345 -38 ct 1325 -10 1305 4 1287 4 ct
-1278 4 1270 1 1265 -5 ct 1260 -11 1257 -22 1257 -37 ct p
-1257 -54 m 1257 -54 1257 -54 1257 -149 ct 1229 -138 1211 -130 1203 -126 ct
-1188 -118 1178 -110 1171 -101 ct 1165 -92 1162 -83 1162 -72 ct 1162 -59 1166 -49 1174 -40 ct
-1182 -31 1191 -27 1201 -27 ct 1216 -27 1234 -36 1257 -54 ct p ef
-1437 -337 m 1437 -337 1437 -337 1437 -253 ct 1437 -253 1437 -253 1496 -253 ct
-1496 -253 1496 -253 1496 -234 ct 1496 -234 1496 -234 1437 -234 ct 1437 -234 1437 -234 1437 -70 ct
-1437 -53 1439 -42 1444 -37 ct 1449 -31 1455 -28 1462 -28 ct 1468 -28 1474 -30 1480 -34 ct
-1485 -37 1490 -43 1493 -50 ct 1493 -50 1493 -50 1504 -50 ct 1498 -32 1488 -19 1477 -10 ct
-1465 -1 1452 4 1440 4 ct 1431 4 1423 2 1415 -3 ct 1407 -8 1401 -14 1397 -23 ct
-1393 -32 1391 -45 1391 -64 ct 1391 -64 1391 -64 1391 -234 ct 1391 -234 1391 -234 1351 -234 ct
-1351 -234 1351 -234 1351 -243 ct 1361 -247 1371 -254 1382 -264 ct 1393 -273 1402 -285 1410 -298 ct
-1415 -305 1420 -318 1428 -337 ct 1428 -337 1428 -337 1437 -337 ct p ef
-1585 -392 m 1593 -392 1599 -389 1605 -384 ct 1610 -378 1613 -372 1613 -364 ct
-1613 -356 1610 -350 1605 -344 ct 1599 -339 1593 -336 1585 -336 ct 1577 -336 1571 -339 1565 -344 ct
-1560 -350 1557 -356 1557 -364 ct 1557 -372 1560 -378 1565 -384 ct 1571 -389 1577 -392 1585 -392 ct
-p
-1608 -260 m 1608 -260 1608 -260 1608 -57 ct 1608 -41 1609 -31 1611 -26 ct 1614 -20 1617 -16 1621 -14 ct
-1626 -11 1633 -10 1645 -10 ct 1645 -10 1645 -10 1645 0 ct 1645 0 1645 0 1525 0 ct
-1525 0 1525 0 1525 -10 ct 1537 -10 1545 -11 1549 -14 ct 1553 -16 1556 -20 1558 -25 ct
-1561 -31 1562 -41 1562 -57 ct 1562 -57 1562 -57 1562 -154 ct 1562 -181 1561 -199 1560 -207 ct
-1558 -213 1556 -217 1554 -220 ct 1551 -222 1547 -223 1542 -223 ct 1537 -223 1531 -222 1524 -219 ct
-1524 -219 1524 -219 1520 -229 ct 1520 -229 1520 -229 1596 -260 ct 1596 -260 1596 -260 1608 -260 ct
-p ef
-1801 -260 m 1839 -260 1870 -246 1893 -217 ct 1912 -192 1922 -163 1922 -131 ct
-1922 -109 1917 -86 1906 -63 ct 1895 -40 1880 -22 1861 -11 ct 1842 1 1821 7 1798 7 ct
-1760 7 1730 -8 1707 -38 ct 1688 -64 1679 -92 1679 -124 ct 1679 -147 1685 -170 1696 -193 ct
-1708 -216 1723 -233 1741 -244 ct 1760 -255 1780 -260 1801 -260 ct p
-1792 -242 m 1783 -242 1773 -239 1763 -233 ct 1753 -228 1745 -218 1739 -203 ct
-1733 -189 1730 -170 1730 -147 ct 1730 -111 1737 -79 1752 -53 ct 1767 -26 1786 -13 1810 -13 ct
-1827 -13 1842 -20 1854 -35 ct 1865 -50 1871 -75 1871 -110 ct 1871 -155 1861 -190 1842 -216 ct
-1829 -233 1812 -242 1792 -242 ct p ef
-2035 -207 m 2064 -242 2092 -260 2119 -260 ct 2133 -260 2145 -257 2154 -250 ct
-2164 -243 2172 -231 2178 -216 ct 2182 -205 2184 -188 2184 -165 ct 2184 -165 2184 -165 2184 -57 ct
-2184 -41 2185 -30 2188 -25 ct 2190 -20 2193 -16 2197 -14 ct 2201 -11 2209 -10 2221 -10 ct
-2221 -10 2221 -10 2221 0 ct 2221 0 2221 0 2097 0 ct 2097 0 2097 0 2097 -10 ct 2097 -10 2097 -10 2102 -10 ct
-2114 -10 2122 -12 2127 -15 ct 2132 -19 2135 -24 2137 -31 ct 2138 -34 2138 -43 2138 -57 ct
-2138 -57 2138 -57 2138 -161 ct 2138 -184 2135 -201 2129 -211 ct 2123 -222 2113 -227 2099 -227 ct
-2078 -227 2056 -215 2035 -191 ct 2035 -191 2035 -191 2035 -57 ct 2035 -40 2036 -29 2038 -25 ct
-2041 -20 2044 -16 2049 -14 ct 2053 -11 2062 -10 2076 -10 ct 2076 -10 2076 -10 2076 0 ct
-2076 0 2076 0 1952 0 ct 1952 0 1952 0 1952 -10 ct 1952 -10 1952 -10 1957 -10 ct
-1970 -10 1978 -13 1982 -20 ct 1987 -26 1989 -39 1989 -57 ct 1989 -57 1989 -57 1989 -151 ct
-1989 -181 1988 -200 1987 -206 ct 1986 -213 1984 -217 1981 -220 ct 1978 -222 1974 -223 1969 -223 ct
-1964 -223 1958 -222 1951 -219 ct 1951 -219 1951 -219 1947 -229 ct 1947 -229 1947 -229 2023 -260 ct
-2023 -260 2023 -260 2035 -260 ct 2035 -260 2035 -260 2035 -207 ct p ef
-pom
-gr
-gr
-9135 9385 m 9698 9198 l 9698 9573 l 9135 9385 l p ef
-10635 9410 m 9585 9410 l 9585 9360 l 10635 9360 l 10635 9410 l p ef
-gs
-gs
-pum
-5372 21285 t
-31 -212 m 31 -299 l 298 -299 l 298 -212 l 31 -212 l p ef
-pom
-gr
-gr
-gs
-gs
-pum
-5372 11495 t
-31 -212 m 31 -299 l 298 -299 l 298 -212 l 31 -212 l p ef
-pom
-gr
-gr
-gs
-gs
-pum
-5372 10199 t
-31 -212 m 31 -299 l 298 -299 l 298 -212 l 31 -212 l p ef
-pom
-gr
-gr
-gs
-gs
-pum
-2673 10762 t
-153 -317 m 153 -317 153 -317 131 -243 ct 131 -243 131 -243 169 -243 ct 169 -243 169 -243 164 -225 ct
-164 -225 164 -225 125 -225 ct 125 -225 125 -225 76 -63 ct 69 -44 66 -33 66 -27 ct
-66 -24 67 -22 68 -20 ct 69 -19 71 -18 73 -18 ct 77 -18 82 -21 89 -27 ct 93 -31 101 -42 115 -61 ct
-115 -61 115 -61 124 -54 ct 108 -30 93 -13 79 -4 ct 69 3 59 6 49 6 ct 42 6 36 4 31 -1 ct
-26 -6 24 -13 24 -20 ct 24 -30 27 -45 33 -66 ct 33 -66 33 -66 81 -225 ct 81 -225 81 -225 39 -225 ct
-39 -225 39 -225 42 -236 ct 62 -242 79 -250 93 -261 ct 107 -272 123 -291 141 -317 ct
-141 -317 141 -317 153 -317 ct p ef
-436 -245 m 436 -245 436 -245 383 -58 ct 383 -58 383 -58 377 -33 ct 376 -31 375 -29 375 -28 ct
-375 -25 376 -23 377 -21 ct 378 -19 379 -19 381 -19 ct 383 -19 385 -20 388 -22 ct
-393 -27 399 -38 408 -55 ct 408 -55 408 -55 417 -48 ct 406 -30 395 -16 384 -7 ct
-373 2 362 6 353 6 ct 346 6 341 4 337 0 ct 334 -4 332 -9 332 -17 ct 332 -26 334 -38 338 -52 ct
-338 -52 338 -52 344 -73 ct 318 -42 293 -20 271 -7 ct 255 2 240 6 224 6 ct 209 6 197 1 186 -10 ct
-175 -21 170 -36 170 -55 ct 170 -84 180 -114 199 -146 ct 218 -178 242 -203 271 -222 ct
-294 -237 316 -245 336 -245 ct 348 -245 358 -242 366 -237 ct 375 -232 381 -223 385 -210 ct
-385 -210 385 -210 393 -238 ct 393 -238 393 -238 436 -245 ct p
-334 -231 m 321 -231 308 -226 293 -215 ct 273 -200 255 -177 239 -147 ct 223 -117 215 -90 215 -66 ct
-215 -53 219 -44 226 -37 ct 233 -30 241 -26 250 -26 ct 273 -26 297 -40 324 -69 ct
-356 -108 372 -147 371 -188 ct 371 -203 368 -214 361 -221 ct 355 -228 346 -231 334 -231 ct
-p ef
-469 -234 m 469 -234 469 -234 563 -249 ct 563 -249 563 -249 524 -115 ct 557 -170 586 -208 613 -230 ct
-628 -243 640 -249 649 -249 ct 655 -249 660 -247 664 -244 ct 667 -240 669 -235 669 -228 ct
-669 -216 666 -204 660 -193 ct 655 -185 649 -181 641 -181 ct 636 -181 633 -182 630 -185 ct
-627 -188 625 -192 624 -198 ct 624 -201 623 -204 621 -205 ct 620 -206 618 -207 616 -207 ct
-613 -207 610 -206 607 -205 ct 603 -202 595 -195 586 -183 ct 570 -165 554 -142 536 -113 ct
-528 -101 521 -88 516 -72 ct 508 -51 504 -39 503 -35 ct 503 -35 503 -35 494 0 ct
-494 0 494 0 452 0 ct 452 0 452 0 501 -171 ct 507 -191 510 -205 510 -214 ct 510 -217 509 -220 506 -222 ct
-502 -225 498 -226 492 -226 ct 488 -226 482 -226 472 -224 ct 472 -224 472 -224 469 -234 ct
-p ef
-954 -232 m 954 -232 954 -232 946 -204 ct 946 -204 946 -204 900 -204 ct 903 -194 905 -185 905 -176 ct
-905 -152 895 -130 874 -111 ct 853 -92 824 -81 788 -79 ct 768 -73 754 -66 744 -58 ct
-741 -55 739 -52 739 -49 ct 739 -45 741 -42 744 -39 ct 747 -36 756 -33 770 -29 ct
-770 -29 770 -29 822 -17 ct 851 -11 871 -3 880 7 ct 889 17 894 28 894 41 ct 894 56 888 70 877 82 ct
-866 95 850 104 829 111 ct 807 118 784 122 758 122 ct 735 122 714 119 695 114 ct
-677 108 663 101 655 92 ct 647 83 643 73 643 64 ct 643 56 646 48 651 39 ct 656 31 663 24 671 18 ct
-676 15 690 6 714 -7 ct 705 -13 701 -21 701 -28 ct 701 -36 705 -44 712 -52 ct 719 -60 734 -69 758 -79 ct
-738 -83 723 -91 711 -104 ct 700 -117 694 -132 694 -148 ct 694 -174 706 -197 729 -218 ct
-752 -239 782 -249 820 -249 ct 834 -249 846 -248 855 -245 ct 863 -242 872 -238 880 -232 ct
-880 -232 880 -232 954 -232 ct p
-860 -188 m 860 -202 856 -214 847 -222 ct 839 -231 828 -235 814 -235 ct 792 -235 774 -225 760 -204 ct
-746 -183 739 -162 739 -139 ct 739 -125 744 -113 753 -104 ct 762 -95 772 -91 785 -91 ct
-795 -91 805 -94 815 -99 ct 824 -104 832 -112 839 -121 ct 845 -130 850 -142 854 -157 ct
-858 -171 860 -181 860 -188 ct p
-726 0 m 710 7 699 16 691 27 ct 683 37 679 48 679 58 ct 679 70 685 80 696 88 ct
-711 99 735 105 765 105 ct 792 105 814 101 833 92 ct 852 83 861 71 861 57 ct 861 50 858 43 851 37 ct
-844 30 831 25 811 21 ct 800 19 772 12 726 0 ct p ef
-1008 -106 m 1007 -97 1006 -89 1006 -83 ct 1006 -66 1012 -52 1024 -40 ct 1035 -29 1050 -23 1067 -23 ct
-1080 -23 1093 -26 1105 -31 ct 1118 -37 1136 -49 1161 -68 ct 1161 -68 1161 -68 1167 -60 ct
-1123 -16 1082 6 1042 6 ct 1015 6 995 -2 981 -19 ct 968 -36 961 -55 961 -75 ct 961 -102 969 -130 986 -159 ct
-1003 -187 1024 -209 1050 -225 ct 1075 -241 1102 -249 1129 -249 ct 1148 -249 1163 -245 1172 -237 ct
-1181 -230 1186 -220 1186 -210 ct 1186 -195 1180 -180 1168 -167 ct 1151 -149 1128 -134 1096 -123 ct
-1075 -116 1046 -110 1008 -106 ct p
-1010 -118 m 1038 -121 1060 -126 1078 -134 ct 1101 -144 1118 -156 1130 -170 ct
-1141 -184 1147 -197 1147 -209 ct 1147 -217 1145 -223 1140 -228 ct 1135 -233 1128 -235 1118 -235 ct
-1099 -235 1079 -225 1057 -205 ct 1036 -186 1020 -157 1010 -118 ct p ef
-1347 -317 m 1347 -317 1347 -317 1325 -243 ct 1325 -243 1325 -243 1363 -243 ct
-1363 -243 1363 -243 1358 -225 ct 1358 -225 1358 -225 1319 -225 ct 1319 -225 1319 -225 1270 -63 ct
-1263 -44 1260 -33 1260 -27 ct 1260 -24 1261 -22 1262 -20 ct 1263 -19 1265 -18 1267 -18 ct
-1271 -18 1276 -21 1283 -27 ct 1287 -31 1295 -42 1309 -61 ct 1309 -61 1309 -61 1318 -54 ct
-1302 -30 1287 -13 1273 -4 ct 1263 3 1253 6 1243 6 ct 1236 6 1230 4 1225 -1 ct 1220 -6 1218 -13 1218 -20 ct
-1218 -30 1221 -45 1227 -66 ct 1227 -66 1227 -66 1275 -225 ct 1275 -225 1275 -225 1233 -225 ct
-1233 -225 1233 -225 1236 -236 ct 1256 -242 1273 -250 1287 -261 ct 1301 -272 1317 -291 1335 -317 ct
-1335 -317 1335 -317 1347 -317 ct p ef
-pom
-gr
-gr
-gs
-gs
-pum
-6483 18964 t
-85 -93 m 69 -101 58 -111 49 -125 ct 41 -138 37 -153 37 -169 ct 37 -194 46 -215 65 -233 ct
-84 -251 108 -260 138 -260 ct 162 -260 183 -254 200 -242 ct 200 -242 200 -242 254 -242 ct
-262 -242 266 -242 268 -241 ct 269 -241 270 -240 270 -239 ct 271 -237 272 -234 272 -230 ct
-272 -225 272 -222 271 -220 ct 270 -219 269 -218 268 -218 ct 266 -217 262 -217 254 -217 ct
-254 -217 254 -217 221 -217 ct 231 -204 236 -187 236 -167 ct 236 -143 227 -123 209 -107 ct
-191 -90 167 -82 137 -82 ct 124 -82 111 -84 98 -88 ct 90 -81 85 -74 82 -69 ct 79 -64 78 -59 78 -56 ct
-78 -52 80 -49 83 -46 ct 86 -43 91 -41 100 -40 ct 105 -39 118 -39 139 -38 ct 176 -37 201 -36 212 -34 ct
-229 -32 243 -25 253 -15 ct 263 -5 268 8 268 23 ct 268 44 258 63 239 82 ct 211 109 173 122 128 122 ct
-92 122 63 114 39 98 ct 25 89 18 79 18 69 ct 18 65 19 60 21 56 ct 24 49 30 40 40 28 ct
-41 26 50 16 67 -2 ct 58 -8 51 -13 47 -18 ct 43 -22 41 -27 41 -33 ct 41 -40 44 -47 49 -56 ct
-54 -65 66 -77 85 -93 ct p
-133 -246 m 119 -246 108 -241 99 -230 ct 90 -219 85 -203 85 -181 ct 85 -152 91 -130 104 -114 ct
-113 -102 125 -96 140 -96 ct 154 -96 166 -101 175 -112 ct 184 -122 188 -138 188 -160 ct
-188 -189 182 -212 169 -228 ct 160 -240 148 -246 133 -246 ct p
-82 0 m 74 9 68 18 63 26 ct 59 34 57 42 57 49 ct 57 57 62 65 73 72 ct 91 83 117 89 152 89 ct
-185 89 209 83 225 71 ct 240 60 248 47 248 34 ct 248 24 243 17 234 13 ct 224 9 206 7 177 6 ct
-136 5 104 3 82 0 ct p ef
-445 -37 m 419 -17 403 -5 396 -2 ct 386 3 376 5 364 5 ct 347 5 332 -1 321 -13 ct
-310 -25 304 -40 304 -60 ct 304 -72 307 -83 312 -92 ct 320 -104 333 -116 352 -127 ct
-370 -138 402 -151 445 -167 ct 445 -167 445 -167 445 -177 ct 445 -202 441 -219 433 -228 ct
-425 -237 414 -242 398 -242 ct 387 -242 378 -239 371 -233 ct 364 -226 360 -219 360 -211 ct
-360 -211 360 -211 361 -195 ct 361 -187 359 -180 354 -176 ct 350 -171 344 -169 337 -169 ct
-331 -169 325 -171 321 -176 ct 316 -181 314 -188 314 -196 ct 314 -212 322 -227 338 -240 ct
-354 -253 377 -260 406 -260 ct 428 -260 447 -256 461 -249 ct 472 -243 480 -234 485 -222 ct
-488 -214 490 -198 490 -174 ct 490 -174 490 -174 490 -89 ct 490 -65 490 -50 491 -45 ct
-492 -39 494 -36 496 -34 ct 498 -32 500 -31 503 -31 ct 506 -31 509 -32 511 -33 ct
-515 -35 522 -42 533 -53 ct 533 -53 533 -53 533 -38 ct 513 -10 493 4 475 4 ct 466 4 458 1 453 -5 ct
-448 -11 445 -22 445 -37 ct p
-445 -54 m 445 -54 445 -54 445 -149 ct 417 -138 399 -130 391 -126 ct 376 -118 366 -110 359 -101 ct
-353 -92 350 -83 350 -72 ct 350 -59 354 -49 362 -40 ct 370 -31 379 -27 389 -27 ct
-404 -27 422 -36 445 -54 ct p ef
-615 -392 m 623 -392 629 -389 635 -384 ct 640 -378 643 -372 643 -364 ct 643 -356 640 -350 635 -344 ct
-629 -339 623 -336 615 -336 ct 607 -336 601 -339 595 -344 ct 590 -350 587 -356 587 -364 ct
-587 -372 590 -378 595 -384 ct 601 -389 607 -392 615 -392 ct p
-638 -260 m 638 -260 638 -260 638 -57 ct 638 -41 639 -31 641 -26 ct 644 -20 647 -16 651 -14 ct
-656 -11 663 -10 675 -10 ct 675 -10 675 -10 675 0 ct 675 0 675 0 555 0 ct 555 0 555 0 555 -10 ct
-567 -10 575 -11 579 -14 ct 583 -16 586 -20 588 -25 ct 591 -31 592 -41 592 -57 ct
-592 -57 592 -57 592 -154 ct 592 -181 591 -199 590 -207 ct 588 -213 586 -217 584 -220 ct
-581 -222 577 -223 572 -223 ct 567 -223 561 -222 554 -219 ct 554 -219 554 -219 550 -229 ct
-550 -229 550 -229 626 -260 ct 626 -260 626 -260 638 -260 ct p ef
-782 -207 m 811 -242 839 -260 866 -260 ct 880 -260 892 -257 901 -250 ct 911 -243 919 -231 925 -216 ct
-929 -205 931 -188 931 -165 ct 931 -165 931 -165 931 -57 ct 931 -41 932 -30 935 -25 ct
-937 -20 940 -16 944 -14 ct 948 -11 956 -10 968 -10 ct 968 -10 968 -10 968 0 ct
-968 0 968 0 844 0 ct 844 0 844 0 844 -10 ct 844 -10 844 -10 849 -10 ct 861 -10 869 -12 874 -15 ct
-879 -19 882 -24 884 -31 ct 885 -34 885 -43 885 -57 ct 885 -57 885 -57 885 -161 ct
-885 -184 882 -201 876 -211 ct 870 -222 860 -227 846 -227 ct 825 -227 803 -215 782 -191 ct
-782 -191 782 -191 782 -57 ct 782 -40 783 -29 785 -25 ct 788 -20 791 -16 796 -14 ct
-800 -11 809 -10 823 -10 ct 823 -10 823 -10 823 0 ct 823 0 823 0 699 0 ct 699 0 699 0 699 -10 ct
-699 -10 699 -10 704 -10 ct 717 -10 725 -13 729 -20 ct 734 -26 736 -39 736 -57 ct
-736 -57 736 -57 736 -151 ct 736 -181 735 -200 734 -206 ct 733 -213 731 -217 728 -220 ct
-725 -222 721 -223 716 -223 ct 711 -223 705 -222 698 -219 ct 698 -219 698 -219 694 -229 ct
-694 -229 694 -229 770 -260 ct 770 -260 770 -260 782 -260 ct 782 -260 782 -260 782 -207 ct
-p ef
-1205 -207 m 1234 -242 1262 -260 1289 -260 ct 1303 -260 1315 -257 1324 -250 ct
-1334 -243 1342 -231 1348 -216 ct 1352 -205 1354 -188 1354 -165 ct 1354 -165 1354 -165 1354 -57 ct
-1354 -41 1355 -30 1358 -25 ct 1360 -20 1363 -16 1367 -14 ct 1371 -11 1379 -10 1391 -10 ct
-1391 -10 1391 -10 1391 0 ct 1391 0 1391 0 1267 0 ct 1267 0 1267 0 1267 -10 ct 1267 -10 1267 -10 1272 -10 ct
-1284 -10 1292 -12 1297 -15 ct 1302 -19 1305 -24 1307 -31 ct 1308 -34 1308 -43 1308 -57 ct
-1308 -57 1308 -57 1308 -161 ct 1308 -184 1305 -201 1299 -211 ct 1293 -222 1283 -227 1269 -227 ct
-1248 -227 1226 -215 1205 -191 ct 1205 -191 1205 -191 1205 -57 ct 1205 -40 1206 -29 1208 -25 ct
-1211 -20 1214 -16 1219 -14 ct 1223 -11 1232 -10 1246 -10 ct 1246 -10 1246 -10 1246 0 ct
-1246 0 1246 0 1122 0 ct 1122 0 1122 0 1122 -10 ct 1122 -10 1122 -10 1127 -10 ct
-1140 -10 1148 -13 1152 -20 ct 1157 -26 1159 -39 1159 -57 ct 1159 -57 1159 -57 1159 -151 ct
-1159 -181 1158 -200 1157 -206 ct 1156 -213 1154 -217 1151 -220 ct 1148 -222 1144 -223 1139 -223 ct
-1134 -223 1128 -222 1121 -219 ct 1121 -219 1121 -219 1117 -229 ct 1117 -229 1117 -229 1193 -260 ct
-1193 -260 1193 -260 1205 -260 ct 1205 -260 1205 -260 1205 -207 ct p ef
-1539 -260 m 1577 -260 1608 -246 1631 -217 ct 1650 -192 1660 -163 1660 -131 ct
-1660 -109 1655 -86 1644 -63 ct 1633 -40 1618 -22 1599 -11 ct 1580 1 1559 7 1536 7 ct
-1498 7 1468 -8 1445 -38 ct 1426 -64 1417 -92 1417 -124 ct 1417 -147 1423 -170 1434 -193 ct
-1446 -216 1461 -233 1479 -244 ct 1498 -255 1518 -260 1539 -260 ct p
-1530 -242 m 1521 -242 1511 -239 1501 -233 ct 1491 -228 1483 -218 1477 -203 ct
-1471 -189 1468 -170 1468 -147 ct 1468 -111 1475 -79 1490 -53 ct 1505 -26 1524 -13 1548 -13 ct
-1565 -13 1580 -20 1592 -35 ct 1603 -50 1609 -75 1609 -110 ct 1609 -155 1599 -190 1580 -216 ct
-1567 -233 1550 -242 1530 -242 ct p ef
-1773 -260 m 1773 -260 1773 -260 1773 -203 ct 1794 -241 1816 -260 1838 -260 ct
-1848 -260 1856 -257 1863 -251 ct 1870 -245 1873 -238 1873 -230 ct 1873 -222 1871 -216 1866 -211 ct
-1861 -206 1855 -204 1849 -204 ct 1842 -204 1835 -207 1827 -214 ct 1819 -220 1813 -223 1809 -223 ct
-1806 -223 1802 -221 1799 -217 ct 1790 -210 1782 -198 1773 -180 ct 1773 -180 1773 -180 1773 -59 ct
-1773 -45 1775 -34 1778 -27 ct 1781 -22 1785 -18 1791 -15 ct 1797 -12 1806 -10 1818 -10 ct
-1818 -10 1818 -10 1818 0 ct 1818 0 1818 0 1686 0 ct 1686 0 1686 0 1686 -10 ct 1699 -10 1709 -12 1716 -16 ct
-1720 -19 1724 -24 1726 -30 ct 1727 -33 1727 -42 1727 -57 ct 1727 -57 1727 -57 1727 -154 ct
-1727 -184 1726 -201 1725 -207 ct 1724 -213 1722 -217 1719 -219 ct 1716 -222 1712 -223 1707 -223 ct
-1701 -223 1695 -222 1688 -219 ct 1688 -219 1688 -219 1685 -229 ct 1685 -229 1685 -229 1761 -260 ct
-1761 -260 1761 -260 1773 -260 ct p ef
-1960 -206 m 1978 -225 1989 -235 1992 -238 ct 2001 -245 2009 -250 2019 -254 ct
-2029 -258 2038 -260 2047 -260 ct 2063 -260 2077 -255 2088 -246 ct 2099 -237 2107 -224 2111 -206 ct
-2130 -228 2146 -243 2159 -250 ct 2172 -257 2185 -260 2199 -260 ct 2212 -260 2224 -257 2234 -250 ct
-2245 -243 2253 -232 2259 -216 ct 2263 -205 2265 -188 2265 -166 ct 2265 -166 2265 -166 2265 -57 ct
-2265 -41 2266 -30 2268 -25 ct 2270 -21 2274 -17 2278 -14 ct 2283 -11 2291 -10 2302 -10 ct
-2302 -10 2302 -10 2302 0 ct 2302 0 2302 0 2178 0 ct 2178 0 2178 0 2178 -10 ct 2178 -10 2178 -10 2183 -10 ct
-2194 -10 2203 -12 2209 -16 ct 2213 -19 2216 -24 2218 -30 ct 2219 -33 2219 -42 2219 -57 ct
-2219 -57 2219 -57 2219 -166 ct 2219 -186 2217 -201 2212 -209 ct 2204 -221 2193 -227 2177 -227 ct
-2168 -227 2158 -225 2148 -220 ct 2138 -215 2126 -206 2113 -193 ct 2113 -193 2113 -193 2112 -189 ct
-2112 -189 2112 -189 2113 -178 ct 2113 -178 2113 -178 2113 -57 ct 2113 -40 2114 -29 2116 -25 ct
-2118 -21 2121 -17 2127 -14 ct 2132 -11 2141 -10 2154 -10 ct 2154 -10 2154 -10 2154 0 ct
-2154 0 2154 0 2026 0 ct 2026 0 2026 0 2026 -10 ct 2040 -10 2050 -12 2055 -15 ct
-2060 -18 2064 -23 2066 -30 ct 2067 -33 2067 -42 2067 -57 ct 2067 -57 2067 -57 2067 -166 ct
-2067 -186 2064 -201 2058 -210 ct 2050 -221 2039 -227 2024 -227 ct 2014 -227 2005 -224 1995 -219 ct
-1980 -211 1968 -202 1960 -193 ct 1960 -193 1960 -193 1960 -57 ct 1960 -41 1961 -30 1963 -25 ct
-1966 -20 1969 -16 1974 -14 ct 1978 -11 1987 -10 2001 -10 ct 2001 -10 2001 -10 2001 0 ct
-2001 0 2001 0 1877 0 ct 1877 0 1877 0 1877 -10 ct 1888 -10 1896 -11 1900 -14 ct
-1905 -16 1908 -20 1911 -26 ct 1913 -31 1914 -41 1914 -57 ct 1914 -57 1914 -57 1914 -154 ct
-1914 -182 1913 -199 1912 -207 ct 1910 -213 1908 -217 1906 -220 ct 1903 -222 1899 -223 1894 -223 ct
-1889 -223 1883 -222 1876 -219 ct 1876 -219 1876 -219 1872 -229 ct 1872 -229 1872 -229 1948 -260 ct
-1948 -260 1948 -260 1960 -260 ct 1960 -260 1960 -260 1960 -206 ct p ef
-2455 -37 m 2429 -17 2413 -5 2406 -2 ct 2396 3 2386 5 2374 5 ct 2357 5 2342 -1 2331 -13 ct
-2320 -25 2314 -40 2314 -60 ct 2314 -72 2317 -83 2322 -92 ct 2330 -104 2343 -116 2362 -127 ct
-2380 -138 2412 -151 2455 -167 ct 2455 -167 2455 -167 2455 -177 ct 2455 -202 2451 -219 2443 -228 ct
-2435 -237 2424 -242 2408 -242 ct 2397 -242 2388 -239 2381 -233 ct 2374 -226 2370 -219 2370 -211 ct
-2370 -211 2370 -211 2371 -195 ct 2371 -187 2369 -180 2364 -176 ct 2360 -171 2354 -169 2347 -169 ct
-2341 -169 2335 -171 2331 -176 ct 2326 -181 2324 -188 2324 -196 ct 2324 -212 2332 -227 2348 -240 ct
-2364 -253 2387 -260 2416 -260 ct 2438 -260 2457 -256 2471 -249 ct 2482 -243 2490 -234 2495 -222 ct
-2498 -214 2500 -198 2500 -174 ct 2500 -174 2500 -174 2500 -89 ct 2500 -65 2500 -50 2501 -45 ct
-2502 -39 2504 -36 2506 -34 ct 2508 -32 2510 -31 2513 -31 ct 2516 -31 2519 -32 2521 -33 ct
-2525 -35 2532 -42 2543 -53 ct 2543 -53 2543 -53 2543 -38 ct 2523 -10 2503 4 2485 4 ct
-2476 4 2468 1 2463 -5 ct 2458 -11 2455 -22 2455 -37 ct p
-2455 -54 m 2455 -54 2455 -54 2455 -149 ct 2427 -138 2409 -130 2401 -126 ct
-2386 -118 2376 -110 2369 -101 ct 2363 -92 2360 -83 2360 -72 ct 2360 -59 2364 -49 2372 -40 ct
-2380 -31 2389 -27 2399 -27 ct 2414 -27 2432 -36 2455 -54 ct p ef
-2649 -392 m 2649 -392 2649 -392 2649 -57 ct 2649 -41 2650 -31 2652 -26 ct 2655 -21 2658 -17 2663 -14 ct
-2668 -11 2677 -10 2690 -10 ct 2690 -10 2690 -10 2690 0 ct 2690 0 2690 0 2566 0 ct
-2566 0 2566 0 2566 -10 ct 2578 -10 2585 -11 2590 -14 ct 2594 -16 2597 -20 2599 -25 ct
-2602 -31 2603 -41 2603 -57 ct 2603 -57 2603 -57 2603 -286 ct 2603 -314 2602 -332 2601 -338 ct
-2600 -345 2598 -349 2595 -352 ct 2592 -354 2589 -355 2584 -355 ct 2580 -355 2574 -354 2567 -351 ct
-2567 -351 2567 -351 2562 -361 ct 2562 -361 2562 -361 2637 -392 ct 2637 -392 2637 -392 2649 -392 ct
-p ef
-2783 -392 m 2791 -392 2797 -389 2803 -384 ct 2808 -378 2811 -372 2811 -364 ct
-2811 -356 2808 -350 2803 -344 ct 2797 -339 2791 -336 2783 -336 ct 2775 -336 2769 -339 2763 -344 ct
-2758 -350 2755 -356 2755 -364 ct 2755 -372 2758 -378 2763 -384 ct 2769 -389 2775 -392 2783 -392 ct
-p
-2806 -260 m 2806 -260 2806 -260 2806 -57 ct 2806 -41 2807 -31 2809 -26 ct 2812 -20 2815 -16 2819 -14 ct
-2824 -11 2831 -10 2843 -10 ct 2843 -10 2843 -10 2843 0 ct 2843 0 2843 0 2723 0 ct
-2723 0 2723 0 2723 -10 ct 2735 -10 2743 -11 2747 -14 ct 2751 -16 2754 -20 2756 -25 ct
-2759 -31 2760 -41 2760 -57 ct 2760 -57 2760 -57 2760 -154 ct 2760 -181 2759 -199 2758 -207 ct
-2756 -213 2754 -217 2752 -220 ct 2749 -222 2745 -223 2740 -223 ct 2735 -223 2729 -222 2722 -219 ct
-2722 -219 2722 -219 2718 -229 ct 2718 -229 2718 -229 2794 -260 ct 2794 -260 2794 -260 2806 -260 ct
-p ef
-3095 -77 m 3095 -77 3095 -77 3092 0 ct 3092 0 3092 0 2869 0 ct 2869 0 2869 0 2869 -10 ct
-2869 -10 2869 -10 3038 -234 ct 3038 -234 3038 -234 2953 -234 ct 2935 -234 2924 -233 2918 -231 ct
-2913 -228 2908 -224 2905 -217 ct 2900 -208 2897 -197 2896 -183 ct 2896 -183 2896 -183 2886 -183 ct
-2886 -183 2886 -183 2887 -253 ct 2887 -253 2887 -253 3099 -253 ct 3099 -253 3099 -253 3099 -243 ct
-3099 -243 3099 -243 2930 -18 ct 2930 -18 2930 -18 3022 -18 ct 3041 -18 3054 -20 3061 -23 ct
-3068 -26 3073 -32 3078 -40 ct 3081 -46 3083 -58 3085 -77 ct 3085 -77 3085 -77 3095 -77 ct
-p ef
-3268 -37 m 3242 -17 3226 -5 3219 -2 ct 3209 3 3199 5 3187 5 ct 3170 5 3155 -1 3144 -13 ct
-3133 -25 3127 -40 3127 -60 ct 3127 -72 3130 -83 3135 -92 ct 3143 -104 3156 -116 3175 -127 ct
-3193 -138 3225 -151 3268 -167 ct 3268 -167 3268 -167 3268 -177 ct 3268 -202 3264 -219 3256 -228 ct
-3248 -237 3237 -242 3221 -242 ct 3210 -242 3201 -239 3194 -233 ct 3187 -226 3183 -219 3183 -211 ct
-3183 -211 3183 -211 3184 -195 ct 3184 -187 3182 -180 3177 -176 ct 3173 -171 3167 -169 3160 -169 ct
-3154 -169 3148 -171 3144 -176 ct 3139 -181 3137 -188 3137 -196 ct 3137 -212 3145 -227 3161 -240 ct
-3177 -253 3200 -260 3229 -260 ct 3251 -260 3270 -256 3284 -249 ct 3295 -243 3303 -234 3308 -222 ct
-3311 -214 3313 -198 3313 -174 ct 3313 -174 3313 -174 3313 -89 ct 3313 -65 3313 -50 3314 -45 ct
-3315 -39 3317 -36 3319 -34 ct 3321 -32 3323 -31 3326 -31 ct 3329 -31 3332 -32 3334 -33 ct
-3338 -35 3345 -42 3356 -53 ct 3356 -53 3356 -53 3356 -38 ct 3336 -10 3316 4 3298 4 ct
-3289 4 3281 1 3276 -5 ct 3271 -11 3268 -22 3268 -37 ct p
-3268 -54 m 3268 -54 3268 -54 3268 -149 ct 3240 -138 3222 -130 3214 -126 ct
-3199 -118 3189 -110 3182 -101 ct 3176 -92 3173 -83 3173 -72 ct 3173 -59 3177 -49 3185 -40 ct
-3193 -31 3202 -27 3212 -27 ct 3227 -27 3245 -36 3268 -54 ct p ef
-3448 -337 m 3448 -337 3448 -337 3448 -253 ct 3448 -253 3448 -253 3507 -253 ct
-3507 -253 3507 -253 3507 -234 ct 3507 -234 3507 -234 3448 -234 ct 3448 -234 3448 -234 3448 -70 ct
-3448 -53 3450 -42 3455 -37 ct 3460 -31 3466 -28 3473 -28 ct 3479 -28 3485 -30 3491 -34 ct
-3496 -37 3501 -43 3504 -50 ct 3504 -50 3504 -50 3515 -50 ct 3509 -32 3499 -19 3488 -10 ct
-3476 -1 3463 4 3451 4 ct 3442 4 3434 2 3426 -3 ct 3418 -8 3412 -14 3408 -23 ct
-3404 -32 3402 -45 3402 -64 ct 3402 -64 3402 -64 3402 -234 ct 3402 -234 3402 -234 3362 -234 ct
-3362 -234 3362 -234 3362 -243 ct 3372 -247 3382 -254 3393 -264 ct 3404 -273 3413 -285 3421 -298 ct
-3426 -305 3431 -318 3439 -337 ct 3439 -337 3439 -337 3448 -337 ct p ef
-3596 -392 m 3604 -392 3610 -389 3616 -384 ct 3621 -378 3624 -372 3624 -364 ct
-3624 -356 3621 -350 3616 -344 ct 3610 -339 3604 -336 3596 -336 ct 3588 -336 3582 -339 3576 -344 ct
-3571 -350 3568 -356 3568 -364 ct 3568 -372 3571 -378 3576 -384 ct 3582 -389 3588 -392 3596 -392 ct
-p
-3619 -260 m 3619 -260 3619 -260 3619 -57 ct 3619 -41 3620 -31 3622 -26 ct 3625 -20 3628 -16 3632 -14 ct
-3637 -11 3644 -10 3656 -10 ct 3656 -10 3656 -10 3656 0 ct 3656 0 3656 0 3536 0 ct
-3536 0 3536 0 3536 -10 ct 3548 -10 3556 -11 3560 -14 ct 3564 -16 3567 -20 3569 -25 ct
-3572 -31 3573 -41 3573 -57 ct 3573 -57 3573 -57 3573 -154 ct 3573 -181 3572 -199 3571 -207 ct
-3569 -213 3567 -217 3565 -220 ct 3562 -222 3558 -223 3553 -223 ct 3548 -223 3542 -222 3535 -219 ct
-3535 -219 3535 -219 3531 -229 ct 3531 -229 3531 -229 3607 -260 ct 3607 -260 3607 -260 3619 -260 ct
-p ef
-3812 -260 m 3850 -260 3881 -246 3904 -217 ct 3923 -192 3933 -163 3933 -131 ct
-3933 -109 3928 -86 3917 -63 ct 3906 -40 3891 -22 3872 -11 ct 3853 1 3832 7 3809 7 ct
-3771 7 3741 -8 3718 -38 ct 3699 -64 3690 -92 3690 -124 ct 3690 -147 3696 -170 3707 -193 ct
-3719 -216 3734 -233 3752 -244 ct 3771 -255 3791 -260 3812 -260 ct p
-3803 -242 m 3794 -242 3784 -239 3774 -233 ct 3764 -228 3756 -218 3750 -203 ct
-3744 -189 3741 -170 3741 -147 ct 3741 -111 3748 -79 3763 -53 ct 3778 -26 3797 -13 3821 -13 ct
-3838 -13 3853 -20 3865 -35 ct 3876 -50 3882 -75 3882 -110 ct 3882 -155 3872 -190 3853 -216 ct
-3840 -233 3823 -242 3803 -242 ct p ef
-4046 -207 m 4075 -242 4103 -260 4130 -260 ct 4144 -260 4156 -257 4165 -250 ct
-4175 -243 4183 -231 4189 -216 ct 4193 -205 4195 -188 4195 -165 ct 4195 -165 4195 -165 4195 -57 ct
-4195 -41 4196 -30 4199 -25 ct 4201 -20 4204 -16 4208 -14 ct 4212 -11 4220 -10 4232 -10 ct
-4232 -10 4232 -10 4232 0 ct 4232 0 4232 0 4108 0 ct 4108 0 4108 0 4108 -10 ct 4108 -10 4108 -10 4113 -10 ct
-4125 -10 4133 -12 4138 -15 ct 4143 -19 4146 -24 4148 -31 ct 4149 -34 4149 -43 4149 -57 ct
-4149 -57 4149 -57 4149 -161 ct 4149 -184 4146 -201 4140 -211 ct 4134 -222 4124 -227 4110 -227 ct
-4089 -227 4067 -215 4046 -191 ct 4046 -191 4046 -191 4046 -57 ct 4046 -40 4047 -29 4049 -25 ct
-4052 -20 4055 -16 4060 -14 ct 4064 -11 4073 -10 4087 -10 ct 4087 -10 4087 -10 4087 0 ct
-4087 0 4087 0 3963 0 ct 3963 0 3963 0 3963 -10 ct 3963 -10 3963 -10 3968 -10 ct
-3981 -10 3989 -13 3993 -20 ct 3998 -26 4000 -39 4000 -57 ct 4000 -57 4000 -57 4000 -151 ct
-4000 -181 3999 -200 3998 -206 ct 3997 -213 3995 -217 3992 -220 ct 3989 -222 3985 -223 3980 -223 ct
-3975 -223 3969 -222 3962 -219 ct 3962 -219 3962 -219 3958 -229 ct 3958 -229 3958 -229 4034 -260 ct
-4034 -260 4034 -260 4046 -260 ct 4046 -260 4046 -260 4046 -207 ct p ef
-pom
-gr
-gr
-14985 17255 m 13835 17255 l 13835 15955 l 16135 15955 l 16135 17255 l
-14985 17255 l pc
-gs
-gs
-pum
-13971 16795 t
-249 4 m 268 36 288 60 310 75 ct 332 90 356 99 384 101 ct 384 101 384 101 384 110 ct
-359 109 332 104 303 95 ct 274 85 247 73 221 56 ct 195 40 173 22 154 4 ct 128 -7 107 -18 91 -30 ct
-69 -48 52 -70 40 -96 ct 27 -122 21 -152 21 -188 ct 21 -243 39 -290 75 -327 ct 111 -364 155 -382 206 -382 ct
-255 -382 297 -364 333 -327 ct 368 -290 386 -243 386 -187 ct 386 -141 373 -101 348 -66 ct
-323 -32 290 -8 249 4 ct p
-203 -361 m 170 -361 143 -349 122 -325 ct 97 -295 84 -249 84 -188 ct 84 -127 97 -81 123 -48 ct
-143 -23 170 -10 203 -10 ct 237 -10 265 -23 286 -48 ct 311 -78 323 -121 323 -180 ct
-323 -224 316 -262 303 -292 ct 292 -316 278 -333 261 -344 ct 244 -355 224 -361 203 -361 ct
-p ef
-645 -253 m 645 -253 645 -253 645 -99 ct 645 -70 646 -53 647 -47 ct 648 -40 651 -36 654 -33 ct
-657 -31 660 -29 664 -29 ct 670 -29 676 -31 683 -34 ct 683 -34 683 -34 687 -24 ct
-687 -24 687 -24 612 7 ct 612 7 612 7 600 7 ct 600 7 600 7 600 -46 ct 578 -23 562 -8 550 -2 ct
-539 4 527 7 514 7 ct 500 7 487 3 477 -5 ct 466 -14 459 -24 455 -37 ct 451 -50 449 -68 449 -92 ct
-449 -92 449 -92 449 -205 ct 449 -217 448 -225 445 -229 ct 443 -234 439 -237 434 -240 ct
-429 -242 419 -243 406 -243 ct 406 -243 406 -243 406 -253 ct 406 -253 406 -253 495 -253 ct
-495 -253 495 -253 495 -84 ct 495 -60 499 -44 507 -37 ct 516 -30 525 -26 537 -26 ct
-545 -26 554 -28 564 -33 ct 574 -38 586 -48 600 -62 ct 600 -62 600 -62 600 -205 ct
-600 -220 597 -230 592 -235 ct 587 -240 576 -243 559 -243 ct 559 -243 559 -243 559 -253 ct
-559 -253 559 -253 645 -253 ct p ef
-851 -37 m 825 -17 809 -5 802 -2 ct 792 3 782 5 770 5 ct 753 5 738 -1 727 -13 ct
-716 -25 710 -40 710 -60 ct 710 -72 713 -83 718 -92 ct 726 -104 739 -116 758 -127 ct
-776 -138 808 -151 851 -167 ct 851 -167 851 -167 851 -177 ct 851 -202 847 -219 839 -228 ct
-831 -237 820 -242 804 -242 ct 793 -242 784 -239 777 -233 ct 770 -226 766 -219 766 -211 ct
-766 -211 766 -211 767 -195 ct 767 -187 765 -180 760 -176 ct 756 -171 750 -169 743 -169 ct
-737 -169 731 -171 727 -176 ct 722 -181 720 -188 720 -196 ct 720 -212 728 -227 744 -240 ct
-760 -253 783 -260 812 -260 ct 834 -260 853 -256 867 -249 ct 878 -243 886 -234 891 -222 ct
-894 -214 896 -198 896 -174 ct 896 -174 896 -174 896 -89 ct 896 -65 896 -50 897 -45 ct
-898 -39 900 -36 902 -34 ct 904 -32 906 -31 909 -31 ct 912 -31 915 -32 917 -33 ct
-921 -35 928 -42 939 -53 ct 939 -53 939 -53 939 -38 ct 919 -10 899 4 881 4 ct 872 4 864 1 859 -5 ct
-854 -11 851 -22 851 -37 ct p
-851 -54 m 851 -54 851 -54 851 -149 ct 823 -138 805 -130 797 -126 ct 782 -118 772 -110 765 -101 ct
-759 -92 756 -83 756 -72 ct 756 -59 760 -49 768 -40 ct 776 -31 785 -27 795 -27 ct
-810 -27 828 -36 851 -54 ct p ef
-1032 -207 m 1061 -242 1089 -260 1116 -260 ct 1130 -260 1142 -257 1151 -250 ct
-1161 -243 1169 -231 1175 -216 ct 1179 -205 1181 -188 1181 -165 ct 1181 -165 1181 -165 1181 -57 ct
-1181 -41 1182 -30 1185 -25 ct 1187 -20 1190 -16 1194 -14 ct 1198 -11 1206 -10 1218 -10 ct
-1218 -10 1218 -10 1218 0 ct 1218 0 1218 0 1094 0 ct 1094 0 1094 0 1094 -10 ct 1094 -10 1094 -10 1099 -10 ct
-1111 -10 1119 -12 1124 -15 ct 1129 -19 1132 -24 1134 -31 ct 1135 -34 1135 -43 1135 -57 ct
-1135 -57 1135 -57 1135 -161 ct 1135 -184 1132 -201 1126 -211 ct 1120 -222 1110 -227 1096 -227 ct
-1075 -227 1053 -215 1032 -191 ct 1032 -191 1032 -191 1032 -57 ct 1032 -40 1033 -29 1035 -25 ct
-1038 -20 1041 -16 1046 -14 ct 1050 -11 1059 -10 1073 -10 ct 1073 -10 1073 -10 1073 0 ct
-1073 0 1073 0 949 0 ct 949 0 949 0 949 -10 ct 949 -10 949 -10 954 -10 ct 967 -10 975 -13 979 -20 ct
-984 -26 986 -39 986 -57 ct 986 -57 986 -57 986 -151 ct 986 -181 985 -200 984 -206 ct
-983 -213 981 -217 978 -220 ct 975 -222 971 -223 966 -223 ct 961 -223 955 -222 948 -219 ct
-948 -219 948 -219 944 -229 ct 944 -229 944 -229 1020 -260 ct 1020 -260 1020 -260 1032 -260 ct
-1032 -260 1032 -260 1032 -207 ct p ef
-1314 -337 m 1314 -337 1314 -337 1314 -253 ct 1314 -253 1314 -253 1373 -253 ct
-1373 -253 1373 -253 1373 -234 ct 1373 -234 1373 -234 1314 -234 ct 1314 -234 1314 -234 1314 -70 ct
-1314 -53 1316 -42 1321 -37 ct 1326 -31 1332 -28 1339 -28 ct 1345 -28 1351 -30 1357 -34 ct
-1362 -37 1367 -43 1370 -50 ct 1370 -50 1370 -50 1381 -50 ct 1375 -32 1365 -19 1354 -10 ct
-1342 -1 1329 4 1317 4 ct 1308 4 1300 2 1292 -3 ct 1284 -8 1278 -14 1274 -23 ct
-1270 -32 1268 -45 1268 -64 ct 1268 -64 1268 -64 1268 -234 ct 1268 -234 1268 -234 1228 -234 ct
-1228 -234 1228 -234 1228 -243 ct 1238 -247 1248 -254 1259 -264 ct 1270 -273 1279 -285 1287 -298 ct
-1292 -305 1297 -318 1305 -337 ct 1305 -337 1305 -337 1314 -337 ct p ef
-1462 -392 m 1470 -392 1476 -389 1482 -384 ct 1487 -378 1490 -372 1490 -364 ct
-1490 -356 1487 -350 1482 -344 ct 1476 -339 1470 -336 1462 -336 ct 1454 -336 1448 -339 1442 -344 ct
-1437 -350 1434 -356 1434 -364 ct 1434 -372 1437 -378 1442 -384 ct 1448 -389 1454 -392 1462 -392 ct
-p
-1485 -260 m 1485 -260 1485 -260 1485 -57 ct 1485 -41 1486 -31 1488 -26 ct 1491 -20 1494 -16 1498 -14 ct
-1503 -11 1510 -10 1522 -10 ct 1522 -10 1522 -10 1522 0 ct 1522 0 1522 0 1402 0 ct
-1402 0 1402 0 1402 -10 ct 1414 -10 1422 -11 1426 -14 ct 1430 -16 1433 -20 1435 -25 ct
-1438 -31 1439 -41 1439 -57 ct 1439 -57 1439 -57 1439 -154 ct 1439 -181 1438 -199 1437 -207 ct
-1435 -213 1433 -217 1431 -220 ct 1428 -222 1424 -223 1419 -223 ct 1414 -223 1408 -222 1401 -219 ct
-1401 -219 1401 -219 1397 -229 ct 1397 -229 1397 -229 1473 -260 ct 1473 -260 1473 -260 1485 -260 ct
-p ef
-1774 -77 m 1774 -77 1774 -77 1771 0 ct 1771 0 1771 0 1548 0 ct 1548 0 1548 0 1548 -10 ct
-1548 -10 1548 -10 1717 -234 ct 1717 -234 1717 -234 1632 -234 ct 1614 -234 1603 -233 1597 -231 ct
-1592 -228 1587 -224 1584 -217 ct 1579 -208 1576 -197 1575 -183 ct 1575 -183 1575 -183 1565 -183 ct
-1565 -183 1565 -183 1566 -253 ct 1566 -253 1566 -253 1778 -253 ct 1778 -253 1778 -253 1778 -243 ct
-1778 -243 1778 -243 1609 -18 ct 1609 -18 1609 -18 1701 -18 ct 1720 -18 1733 -20 1740 -23 ct
-1747 -26 1752 -32 1757 -40 ct 1760 -46 1762 -58 1764 -77 ct 1764 -77 1764 -77 1774 -77 ct
-p ef
-1846 -158 m 1846 -121 1855 -92 1873 -71 ct 1891 -50 1912 -39 1937 -39 ct 1953 -39 1968 -43 1980 -52 ct
-1992 -61 2002 -77 2010 -99 ct 2010 -99 2010 -99 2019 -94 ct 2015 -68 2004 -45 1985 -24 ct
-1967 -3 1944 7 1916 7 ct 1886 7 1860 -5 1838 -28 ct 1817 -52 1806 -83 1806 -123 ct
-1806 -166 1817 -200 1839 -224 ct 1861 -248 1889 -260 1922 -260 ct 1950 -260 1974 -251 1992 -232 ct
-2010 -214 2019 -189 2019 -158 ct 2019 -158 2019 -158 1846 -158 ct p
-1846 -174 m 1846 -174 1846 -174 1962 -174 ct 1961 -190 1959 -201 1956 -208 ct
-1952 -218 1945 -226 1936 -231 ct 1927 -237 1917 -240 1908 -240 ct 1892 -240 1879 -234 1867 -223 ct
-1855 -211 1848 -195 1846 -174 ct p ef
-pom
-gr
-gr
-gs
-16136 15641 m 17407 15641 l 17407 16436 l 16136 16436 l 16136 15641 l eoclip newpath
-gs
-tm setmatrix
-13705 12594 t
-1 1 s
-gs
-gs
-0 0 m 1272 0 l 1272 795 l 0 795 l 0 0 l eoclip newpath
-gs
-pum
-212 556 t
-208 -345 m 197 -344 l 113 -410 l 25 -342 l 11 -345 l 113 -462 l 208 -345 l
-p ef
-pom
-gr
-gs
-pum
-159 556 t
-331 -261 m 331 -261 331 -261 322 -229 ct 322 -229 322 -229 270 -229 ct 274 -218 276 -207 276 -198 ct
-276 -170 264 -146 241 -124 ct 217 -103 185 -91 144 -89 ct 122 -82 106 -75 95 -65 ct
-91 -62 89 -59 89 -55 ct 89 -51 91 -47 95 -44 ct 98 -40 108 -37 123 -33 ct 123 -33 123 -33 183 -20 ct
-216 -12 238 -3 248 8 ct 259 19 264 31 264 46 ct 264 63 258 78 245 92 ct 233 106 215 117 190 125 ct
-166 133 140 137 111 137 ct 85 137 62 134 41 128 ct 20 122 5 114 -4 103 ct -13 93 -18 82 -18 71 ct
--18 63 -15 53 -9 44 ct -3 34 4 26 13 20 ct 19 16 35 7 61 -8 ct 52 -15 47 -23 47 -32 ct
-47 -40 51 -49 59 -58 ct 67 -68 85 -78 111 -89 ct 89 -93 71 -103 58 -118 ct 45 -132 39 -149 39 -167 ct
-39 -196 52 -222 78 -245 ct 104 -268 138 -280 181 -280 ct 196 -280 209 -278 219 -275 ct
-229 -272 239 -268 248 -261 ct 248 -261 248 -261 331 -261 ct p
-225 -211 m 225 -228 220 -240 211 -250 ct 201 -259 189 -264 173 -264 ct 149 -264 129 -252 114 -229 ct
-98 -206 90 -182 90 -157 ct 90 -141 95 -128 105 -118 ct 115 -108 127 -103 142 -103 ct
-153 -103 164 -106 174 -112 ct 185 -118 194 -126 201 -136 ct 209 -147 214 -160 219 -176 ct
-223 -192 225 -204 225 -211 ct p
-74 0 m 57 8 45 18 36 30 ct 27 42 23 53 23 65 ct 23 79 29 90 42 99 ct 59 112 85 118 120 118 ct
-149 118 175 113 196 103 ct 217 93 227 80 227 64 ct 227 56 223 48 215 41 ct 208 34 193 28 170 24 ct
-158 21 126 13 74 0 ct p ef
-pom
-gr
-gs
-pum
-529 714 t
-134 -168 m 134 -168 134 -168 124 -111 ct 124 -111 124 -111 117 -111 ct 116 -128 113 -140 107 -148 ct
-101 -155 93 -159 84 -159 ct 77 -159 71 -157 66 -153 ct 62 -148 60 -143 60 -137 ct
-60 -133 61 -129 63 -126 ct 64 -122 68 -117 74 -110 ct 89 -93 99 -79 103 -70 ct
-108 -62 110 -53 110 -45 ct 110 -32 105 -21 94 -11 ct 84 -1 71 4 55 4 ct 46 4 36 2 24 -3 ct
-20 -4 17 -5 15 -5 ct 10 -5 6 -2 3 4 ct 3 4 3 4 -4 4 ct -4 4 -4 4 6 -56 ct 6 -56 6 -56 13 -56 ct
-14 -37 18 -24 25 -17 ct 32 -9 41 -5 53 -5 ct 63 -5 70 -8 76 -13 ct 81 -18 84 -25 84 -32 ct
-84 -37 83 -42 81 -46 ct 78 -53 71 -63 60 -76 ct 49 -89 42 -99 39 -106 ct 36 -112 34 -119 34 -125 ct
-34 -137 38 -147 47 -156 ct 55 -164 66 -168 80 -168 ct 83 -168 87 -168 90 -167 ct
-92 -167 96 -165 102 -163 ct 108 -160 112 -159 114 -159 ct 119 -159 124 -162 127 -168 ct
-127 -168 127 -168 134 -168 ct p ef
-331 -164 m 331 -164 331 -164 297 -52 ct 292 -35 289 -24 289 -20 ct 289 -18 290 -16 290 -15 ct
-291 -14 292 -14 293 -14 ct 294 -14 296 -15 298 -17 ct 300 -18 306 -26 314 -39 ct
-314 -39 314 -39 319 -35 ct 311 -20 302 -9 293 -2 ct 287 2 281 4 276 4 ct 271 4 268 3 266 0 ct
-263 -3 262 -6 262 -10 ct 262 -15 263 -20 264 -27 ct 267 -35 273 -55 282 -86 ct
-260 -51 242 -28 227 -15 ct 212 -2 198 4 186 4 ct 180 4 175 2 171 -2 ct 167 -6 165 -11 165 -17 ct
-165 -26 169 -40 175 -59 ct 175 -59 175 -59 194 -117 ct 199 -130 202 -139 202 -142 ct
-202 -144 201 -145 200 -146 ct 198 -147 197 -148 196 -148 ct 192 -148 189 -147 186 -145 ct
-183 -143 176 -136 165 -124 ct 165 -124 165 -124 159 -128 ct 169 -143 180 -153 191 -160 ct
-200 -165 208 -168 215 -168 ct 220 -168 224 -166 227 -163 ct 230 -160 232 -155 232 -150 ct
-232 -143 229 -131 223 -114 ct 223 -114 223 -114 203 -55 ct 197 -39 194 -29 194 -24 ct
-194 -22 195 -20 197 -19 ct 199 -17 201 -16 203 -16 ct 208 -16 213 -18 220 -23 ct
-227 -27 236 -36 247 -50 ct 259 -64 268 -77 275 -90 ct 282 -102 290 -122 299 -149 ct
-299 -149 299 -149 304 -164 ct 304 -164 304 -164 331 -164 ct p ef
-453 -265 m 453 -265 453 -265 415 -136 ct 427 -148 437 -157 445 -161 ct 454 -166 463 -168 472 -168 ct
-485 -168 496 -164 504 -154 ct 513 -145 517 -133 517 -118 ct 517 -98 511 -78 500 -59 ct
-489 -39 475 -23 459 -12 ct 442 -2 425 4 409 4 ct 391 4 372 -3 353 -17 ct 353 -17 353 -17 409 -213 ct
-414 -228 416 -236 416 -239 ct 416 -242 415 -244 413 -246 ct 410 -248 406 -249 400 -249 ct
-397 -249 393 -249 387 -248 ct 387 -248 387 -248 387 -255 ct 387 -255 387 -255 453 -265 ct
-p
-380 -15 m 392 -8 403 -5 412 -5 ct 422 -5 433 -9 444 -17 ct 456 -25 465 -38 474 -57 ct
-482 -76 486 -95 486 -114 ct 486 -125 483 -134 478 -140 ct 473 -147 466 -150 459 -150 ct
-448 -150 437 -145 427 -136 ct 417 -127 409 -114 404 -97 ct 404 -97 404 -97 380 -15 ct
-p ef
-648 -164 m 648 -164 648 -164 645 -150 ct 645 -150 645 -150 617 -150 ct 617 -150 617 -150 594 -69 ct
-584 -34 574 -6 565 13 ct 552 41 538 60 523 70 ct 511 78 500 82 488 82 ct 481 82 474 80 469 75 ct
-465 72 463 68 463 63 ct 463 59 465 55 468 52 ct 471 49 475 48 479 48 ct 483 48 485 49 488 51 ct
-490 53 491 56 491 58 ct 491 61 490 64 488 66 ct 486 68 485 69 485 70 ct 485 71 485 72 486 73 ct
-487 74 489 74 491 74 ct 497 74 502 72 508 69 ct 514 66 519 61 524 54 ct 528 48 532 38 537 26 ct
-538 21 543 4 551 -25 ct 551 -25 551 -25 588 -150 ct 588 -150 588 -150 551 -150 ct
-551 -150 551 -150 554 -164 ct 565 -164 573 -165 578 -166 ct 582 -168 586 -170 590 -174 ct
-594 -178 599 -186 604 -197 ct 611 -212 618 -224 624 -232 ct 633 -243 642 -251 652 -257 ct
-661 -262 671 -265 679 -265 ct 688 -265 695 -263 701 -258 ct 706 -253 709 -248 709 -242 ct
-709 -238 708 -234 705 -231 ct 702 -228 698 -227 694 -227 ct 690 -227 687 -228 685 -230 ct
-682 -233 681 -235 681 -238 ct 681 -240 682 -243 684 -245 ct 686 -248 687 -250 687 -251 ct
-687 -253 686 -254 685 -255 ct 684 -256 682 -257 679 -257 ct 672 -257 665 -254 659 -249 ct
-651 -242 644 -232 638 -217 ct 635 -210 629 -192 621 -164 ct 621 -164 621 -164 648 -164 ct
-p ef
-pom
-gr
-gr
-gr
-gr
-gr
-17535 16605 m 16973 16793 l 16973 16418 l 17535 16605 l p ef
-16135 16580 m 17085 16580 l 17085 16630 l 16135 16630 l 16135 16580 l
-p ef
-tm setmatrix
-0 0 t
-1 1 s
-0 22011 t
-pom
-count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat b4_inc_state restore
-%%PageTrailer
-%%Trailer
-%%EOF
diff --git a/3rdparty/speex/doc/speex_abs.odg b/3rdparty/speex/doc/speex_abs.odg
deleted file mode 100644
index a43291bf..00000000
--- a/3rdparty/speex/doc/speex_abs.odg
+++ /dev/null
Binary files differ
diff --git a/3rdparty/speex/doc/speex_analysis.eps b/3rdparty/speex/doc/speex_analysis.eps
deleted file mode 100644
index 5f34fc2d..00000000
--- a/3rdparty/speex/doc/speex_analysis.eps
+++ /dev/null
@@ -1,744 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%BoundingBox: 0 0 465 180
-%%Pages: 0
-%%Creator: Sun Microsystems, Inc.
-%%Title: none
-%%CreationDate: none
-%%LanguageLevel: 2
-%%EndComments
-%%BeginProlog
-%%BeginResource: SDRes
-/b4_inc_state save def
-/dict_count countdictstack def
-/op_count count 1 sub def
-userdict begin
-0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit[] 0 setdash newpath
-/languagelevel where {pop languagelevel 1 ne {false setstrokeadjust false setoverprint} if} if
-/bdef {bind def} bind def
-/c {setgray} bdef
-/l {neg lineto} bdef
-/rl {neg rlineto} bdef
-/lc {setlinecap} bdef
-/lj {setlinejoin} bdef
-/lw {setlinewidth} bdef
-/ml {setmiterlimit} bdef
-/ld {setdash} bdef
-/m {neg moveto} bdef
-/ct {6 2 roll neg 6 2 roll neg 6 2 roll neg curveto} bdef
-/r {rotate} bdef
-/t {neg translate} bdef
-/s {scale} bdef
-/sw {show} bdef
-/gs {gsave} bdef
-/gr {grestore} bdef
-/f {findfont dup length dict begin
-{1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def
-currentdict end /NFont exch definefont pop /NFont findfont} bdef
-/p {closepath} bdef
-/sf {scalefont setfont} bdef
-/ef {eofill}bdef
-/pc {closepath stroke}bdef
-/ps {stroke}bdef
-/pum {matrix currentmatrix}bdef
-/pom {setmatrix}bdef
-/bs {/aString exch def /nXOfs exch def /nWidth exch def currentpoint nXOfs 0 rmoveto pum nWidth aString stringwidth pop div 1 scale aString show pom moveto} bdef
-%%EndResource
-%%EndProlog
-%%BeginSetup
-%%EndSetup
-%%Page: 1 1
-%%BeginPageSetup
-%%EndPageSetup
-pum
-0.02832 0.02831 s
-0 -6358 t
-/tm matrix currentmatrix def
-tm setmatrix
--700 -3000 t
-1 1 s
-50 lw 1 lj 0.000 c 3900 7000 m 3100 7000 l 3100 5500 l 4700 5500 l 4700 7000 l
-3900 7000 l pc
-gs
-gs
-pum
-3293 6460 t
-47 0 m 47 -455 l 107 -455 l 107 -54 l 330 -54 l 330 0 l 47 0 l p ef
-400 0 m 400 0 400 0 400 -455 ct 400 -455 400 -455 571 -455 ct 602 -455 625 -454 641 -451 ct
-663 -447 682 -440 697 -429 ct 712 -419 724 -404 733 -385 ct 742 -367 747 -346 747 -323 ct
-747 -285 735 -252 710 -225 ct 685 -198 641 -185 577 -185 ct 577 -185 577 -185 460 -185 ct
-460 -185 460 -185 460 0 ct 460 0 460 0 400 0 ct p
-460 -239 m 460 -239 460 -239 578 -239 ct 617 -239 644 -246 660 -261 ct 677 -275 685 -295 685 -322 ct
-685 -341 680 -357 671 -370 ct 661 -384 648 -393 633 -397 ct 622 -400 604 -401 576 -401 ct
-576 -401 576 -401 460 -401 ct 460 -401 460 -401 460 -239 ct p ef
-1149 -159 m 1149 -159 1149 -159 1209 -144 ct 1196 -95 1174 -57 1141 -31 ct
-1108 -5 1068 8 1021 8 ct 972 8 932 -2 901 -22 ct 870 -42 847 -71 831 -109 ct 815 -147 807 -187 807 -231 ct
-807 -278 816 -320 834 -355 ct 852 -390 878 -417 911 -436 ct 945 -454 981 -463 1022 -463 ct
-1067 -463 1105 -451 1136 -428 ct 1167 -405 1189 -373 1201 -331 ct 1201 -331 1201 -331 1142 -317 ct
-1131 -350 1116 -374 1096 -389 ct 1076 -404 1051 -412 1020 -412 ct 985 -412 956 -404 933 -387 ct
-909 -370 893 -347 883 -319 ct 874 -291 869 -261 869 -231 ct 869 -192 875 -158 886 -129 ct
-897 -101 915 -79 939 -65 ct 962 -50 988 -43 1016 -43 ct 1050 -43 1078 -53 1102 -72 ct
-1125 -92 1141 -121 1149 -159 ct p ef
-pom
-gr
-gr
-gs
-gs
-pum
-1170 3636 t
-181 -260 m 181 -260 181 -260 181 -174 ct 181 -174 181 -174 171 -174 ct 164 -201 155 -220 145 -229 ct
-134 -239 120 -244 103 -244 ct 91 -244 80 -241 73 -234 ct 65 -227 61 -219 61 -211 ct
-61 -201 64 -192 70 -185 ct 75 -177 87 -169 104 -161 ct 104 -161 104 -161 144 -141 ct
-181 -123 200 -99 200 -69 ct 200 -47 191 -28 174 -14 ct 157 0 138 7 116 7 ct 101 7 83 4 64 -1 ct
-58 -2 53 -3 49 -3 ct 45 -3 41 -1 39 3 ct 39 3 39 3 29 3 ct 29 3 29 3 29 -87 ct 29 -87 29 -87 39 -87 ct
-44 -61 54 -42 68 -29 ct 83 -16 99 -9 116 -9 ct 129 -9 139 -13 147 -20 ct 155 -28 159 -37 159 -47 ct
-159 -60 155 -70 146 -79 ct 137 -88 119 -98 93 -111 ct 66 -124 48 -136 40 -147 ct
-32 -157 28 -171 28 -187 ct 28 -208 35 -225 49 -239 ct 63 -253 82 -260 104 -260 ct
-114 -260 126 -258 140 -254 ct 149 -251 155 -250 158 -250 ct 161 -250 164 -251 165 -252 ct
-167 -253 169 -256 171 -260 ct 171 -260 171 -260 181 -260 ct p ef
-220 -228 m 220 -228 220 -228 298 -259 ct 298 -259 298 -259 309 -259 ct 309 -259 309 -259 309 -201 ct
-322 -223 335 -238 348 -247 ct 361 -256 375 -260 389 -260 ct 414 -260 435 -250 452 -230 ct
-473 -206 483 -175 483 -136 ct 483 -92 471 -56 446 -28 ct 425 -5 400 7 369 7 ct
-355 7 343 5 334 1 ct 326 -2 318 -7 309 -16 ct 309 -16 309 -16 309 63 ct 309 80 310 91 312 96 ct
-314 100 318 104 323 107 ct 329 110 338 111 352 111 ct 352 111 352 111 352 121 ct
-352 121 352 121 217 121 ct 217 121 217 121 217 111 ct 217 111 217 111 224 111 ct
-234 111 243 109 251 105 ct 254 103 257 100 259 95 ct 261 91 262 79 262 61 ct 262 61 262 61 262 -179 ct
-262 -195 261 -205 260 -209 ct 258 -213 256 -216 253 -219 ct 250 -221 245 -222 240 -222 ct
-236 -222 230 -221 223 -218 ct 223 -218 223 -218 220 -228 ct p
-309 -185 m 309 -185 309 -185 309 -90 ct 309 -70 310 -57 311 -50 ct 314 -40 320 -30 330 -22 ct
-340 -14 353 -10 368 -10 ct 386 -10 401 -17 412 -31 ct 427 -50 434 -77 434 -111 ct
-434 -149 426 -179 409 -200 ct 397 -214 383 -221 367 -221 ct 359 -221 350 -219 341 -214 ct
-335 -211 324 -201 309 -185 ct p ef
-564 -158 m 564 -121 573 -92 591 -71 ct 609 -50 630 -39 655 -39 ct 671 -39 686 -43 698 -52 ct
-710 -61 720 -77 728 -99 ct 728 -99 728 -99 737 -94 ct 733 -68 722 -45 703 -24 ct
-685 -3 662 7 634 7 ct 604 7 578 -5 556 -28 ct 535 -52 524 -83 524 -123 ct 524 -166 535 -200 557 -224 ct
-579 -248 607 -260 640 -260 ct 668 -260 692 -251 710 -232 ct 728 -214 737 -189 737 -158 ct
-737 -158 737 -158 564 -158 ct p
-564 -174 m 564 -174 564 -174 680 -174 ct 679 -190 677 -201 674 -208 ct 670 -218 663 -226 654 -231 ct
-645 -237 635 -240 626 -240 ct 610 -240 597 -234 585 -223 ct 573 -211 566 -195 564 -174 ct
-p ef
-814 -158 m 814 -121 823 -92 841 -71 ct 859 -50 880 -39 905 -39 ct 921 -39 936 -43 948 -52 ct
-960 -61 970 -77 978 -99 ct 978 -99 978 -99 987 -94 ct 983 -68 972 -45 953 -24 ct
-935 -3 912 7 884 7 ct 854 7 828 -5 806 -28 ct 785 -52 774 -83 774 -123 ct 774 -166 785 -200 807 -224 ct
-829 -248 857 -260 890 -260 ct 918 -260 942 -251 960 -232 ct 978 -214 987 -189 987 -158 ct
-987 -158 987 -158 814 -158 ct p
-814 -174 m 814 -174 814 -174 930 -174 ct 929 -190 927 -201 924 -208 ct 920 -218 913 -226 904 -231 ct
-895 -237 885 -240 876 -240 ct 860 -240 847 -234 835 -223 ct 823 -211 816 -195 814 -174 ct
-p ef
-1236 -95 m 1229 -62 1216 -37 1196 -19 ct 1176 -2 1154 7 1130 7 ct 1101 7 1076 -5 1055 -29 ct
-1034 -53 1023 -85 1023 -126 ct 1023 -166 1035 -198 1058 -223 ct 1082 -248 1111 -260 1144 -260 ct
-1169 -260 1189 -253 1205 -240 ct 1221 -227 1229 -214 1229 -199 ct 1229 -192 1227 -187 1222 -182 ct
-1218 -178 1211 -176 1203 -176 ct 1193 -176 1185 -180 1179 -187 ct 1176 -190 1174 -198 1173 -209 ct
-1172 -220 1168 -228 1161 -234 ct 1155 -239 1146 -242 1135 -242 ct 1116 -242 1102 -235 1090 -222 ct
-1075 -204 1068 -180 1068 -150 ct 1068 -120 1075 -94 1090 -71 ct 1105 -48 1125 -36 1150 -36 ct
-1168 -36 1184 -42 1199 -54 ct 1209 -62 1218 -77 1228 -99 ct 1228 -99 1228 -99 1236 -95 ct
-p ef
-1345 -392 m 1345 -392 1345 -392 1345 -208 ct 1365 -230 1381 -244 1393 -251 ct
-1405 -257 1417 -260 1429 -260 ct 1443 -260 1456 -256 1466 -248 ct 1476 -240 1484 -228 1489 -211 ct
-1492 -199 1494 -178 1494 -146 ct 1494 -146 1494 -146 1494 -57 ct 1494 -41 1495 -30 1498 -24 ct
-1500 -20 1503 -16 1507 -14 ct 1511 -11 1519 -10 1531 -10 ct 1531 -10 1531 -10 1531 0 ct
-1531 0 1531 0 1407 0 ct 1407 0 1407 0 1407 -10 ct 1407 -10 1407 -10 1413 -10 ct
-1425 -10 1433 -12 1437 -15 ct 1442 -19 1445 -24 1447 -31 ct 1448 -34 1448 -43 1448 -57 ct
-1448 -57 1448 -57 1448 -147 ct 1448 -174 1447 -192 1444 -201 ct 1441 -210 1436 -216 1430 -221 ct
-1424 -225 1417 -227 1408 -227 ct 1399 -227 1389 -225 1380 -220 ct 1370 -215 1359 -205 1345 -191 ct
-1345 -191 1345 -191 1345 -57 ct 1345 -40 1346 -29 1348 -25 ct 1350 -21 1353 -17 1359 -14 ct
-1364 -11 1373 -10 1386 -10 ct 1386 -10 1386 -10 1386 0 ct 1386 0 1386 0 1262 0 ct
-1262 0 1262 0 1262 -10 ct 1273 -10 1281 -12 1287 -15 ct 1291 -17 1294 -21 1296 -26 ct
-1298 -31 1299 -41 1299 -57 ct 1299 -57 1299 -57 1299 -286 ct 1299 -314 1298 -332 1297 -338 ct
-1296 -345 1294 -349 1291 -352 ct 1288 -354 1284 -355 1279 -355 ct 1276 -355 1269 -354 1261 -351 ct
-1261 -351 1261 -351 1257 -361 ct 1257 -361 1257 -361 1332 -392 ct 1332 -392 1332 -392 1345 -392 ct
-p ef
-pom
-gr
-gs
-pum
-1286 4263 t
-117 -233 m 117 -233 117 -233 117 -67 ct 117 -43 120 -28 125 -22 ct 132 -14 141 -10 152 -10 ct
-152 -10 152 -10 175 -10 ct 175 -10 175 -10 175 0 ct 175 0 175 0 24 0 ct 24 0 24 0 24 -10 ct
-24 -10 24 -10 35 -10 ct 43 -10 49 -12 55 -16 ct 61 -19 65 -24 68 -30 ct 70 -37 71 -49 71 -67 ct
-71 -67 71 -67 71 -233 ct 71 -233 71 -233 22 -233 ct 22 -233 22 -233 22 -253 ct
-22 -253 22 -253 71 -253 ct 71 -253 71 -253 71 -270 ct 71 -295 75 -316 83 -334 ct
-91 -351 104 -365 120 -376 ct 137 -387 156 -392 177 -392 ct 196 -392 214 -386 230 -373 ct
-241 -365 246 -355 246 -345 ct 246 -340 244 -334 239 -329 ct 234 -324 229 -322 223 -322 ct
-219 -322 215 -324 210 -327 ct 205 -330 200 -336 193 -346 ct 186 -356 180 -363 174 -367 ct
-168 -370 162 -372 155 -372 ct 147 -372 139 -370 134 -365 ct 128 -361 123 -354 121 -344 ct
-118 -335 117 -310 117 -271 ct 117 -271 117 -271 117 -253 ct 117 -253 117 -253 182 -253 ct
-182 -253 182 -253 182 -233 ct 182 -233 182 -233 117 -233 ct p ef
-283 -260 m 283 -260 283 -260 283 -203 ct 304 -241 326 -260 348 -260 ct 358 -260 366 -257 373 -251 ct
-380 -245 383 -238 383 -230 ct 383 -222 381 -216 376 -211 ct 371 -206 365 -204 359 -204 ct
-352 -204 345 -207 337 -214 ct 329 -220 323 -223 319 -223 ct 316 -223 312 -221 309 -217 ct
-300 -210 292 -198 283 -180 ct 283 -180 283 -180 283 -59 ct 283 -45 285 -34 288 -27 ct
-291 -22 295 -18 301 -15 ct 307 -12 316 -10 328 -10 ct 328 -10 328 -10 328 0 ct
-328 0 328 0 196 0 ct 196 0 196 0 196 -10 ct 209 -10 219 -12 226 -16 ct 230 -19 234 -24 236 -30 ct
-237 -33 237 -42 237 -57 ct 237 -57 237 -57 237 -154 ct 237 -184 236 -201 235 -207 ct
-234 -213 232 -217 229 -219 ct 226 -222 222 -223 217 -223 ct 211 -223 205 -222 198 -219 ct
-198 -219 198 -219 195 -229 ct 195 -229 195 -229 271 -260 ct 271 -260 271 -260 283 -260 ct
-p ef
-538 -37 m 512 -17 496 -5 489 -2 ct 479 3 469 5 457 5 ct 440 5 425 -1 414 -13 ct
-403 -25 397 -40 397 -60 ct 397 -72 400 -83 405 -92 ct 413 -104 426 -116 445 -127 ct
-463 -138 495 -151 538 -167 ct 538 -167 538 -167 538 -177 ct 538 -202 534 -219 526 -228 ct
-518 -237 507 -242 491 -242 ct 480 -242 471 -239 464 -233 ct 457 -226 453 -219 453 -211 ct
-453 -211 453 -211 454 -195 ct 454 -187 452 -180 447 -176 ct 443 -171 437 -169 430 -169 ct
-424 -169 418 -171 414 -176 ct 409 -181 407 -188 407 -196 ct 407 -212 415 -227 431 -240 ct
-447 -253 470 -260 499 -260 ct 521 -260 540 -256 554 -249 ct 565 -243 573 -234 578 -222 ct
-581 -214 583 -198 583 -174 ct 583 -174 583 -174 583 -89 ct 583 -65 583 -50 584 -45 ct
-585 -39 587 -36 589 -34 ct 591 -32 593 -31 596 -31 ct 599 -31 602 -32 604 -33 ct
-608 -35 615 -42 626 -53 ct 626 -53 626 -53 626 -38 ct 606 -10 586 4 568 4 ct 559 4 551 1 546 -5 ct
-541 -11 538 -22 538 -37 ct p
-538 -54 m 538 -54 538 -54 538 -149 ct 510 -138 492 -130 484 -126 ct 469 -118 459 -110 452 -101 ct
-446 -92 443 -83 443 -72 ct 443 -59 447 -49 455 -40 ct 463 -31 472 -27 482 -27 ct
-497 -27 515 -36 538 -54 ct p ef
-720 -206 m 738 -225 749 -235 752 -238 ct 761 -245 769 -250 779 -254 ct 789 -258 798 -260 807 -260 ct
-823 -260 837 -255 848 -246 ct 859 -237 867 -224 871 -206 ct 890 -228 906 -243 919 -250 ct
-932 -257 945 -260 959 -260 ct 972 -260 984 -257 994 -250 ct 1005 -243 1013 -232 1019 -216 ct
-1023 -205 1025 -188 1025 -166 ct 1025 -166 1025 -166 1025 -57 ct 1025 -41 1026 -30 1028 -25 ct
-1030 -21 1034 -17 1038 -14 ct 1043 -11 1051 -10 1062 -10 ct 1062 -10 1062 -10 1062 0 ct
-1062 0 1062 0 938 0 ct 938 0 938 0 938 -10 ct 938 -10 938 -10 943 -10 ct 954 -10 963 -12 969 -16 ct
-973 -19 976 -24 978 -30 ct 979 -33 979 -42 979 -57 ct 979 -57 979 -57 979 -166 ct
-979 -186 977 -201 972 -209 ct 964 -221 953 -227 937 -227 ct 928 -227 918 -225 908 -220 ct
-898 -215 886 -206 873 -193 ct 873 -193 873 -193 872 -189 ct 872 -189 872 -189 873 -178 ct
-873 -178 873 -178 873 -57 ct 873 -40 874 -29 876 -25 ct 878 -21 881 -17 887 -14 ct
-892 -11 901 -10 914 -10 ct 914 -10 914 -10 914 0 ct 914 0 914 0 786 0 ct 786 0 786 0 786 -10 ct
-800 -10 810 -12 815 -15 ct 820 -18 824 -23 826 -30 ct 827 -33 827 -42 827 -57 ct
-827 -57 827 -57 827 -166 ct 827 -186 824 -201 818 -210 ct 810 -221 799 -227 784 -227 ct
-774 -227 765 -224 755 -219 ct 740 -211 728 -202 720 -193 ct 720 -193 720 -193 720 -57 ct
-720 -41 721 -30 723 -25 ct 726 -20 729 -16 734 -14 ct 738 -11 747 -10 761 -10 ct
-761 -10 761 -10 761 0 ct 761 0 761 0 637 0 ct 637 0 637 0 637 -10 ct 648 -10 656 -11 660 -14 ct
-665 -16 668 -20 671 -26 ct 673 -31 674 -41 674 -57 ct 674 -57 674 -57 674 -154 ct
-674 -182 673 -199 672 -207 ct 670 -213 668 -217 666 -220 ct 663 -222 659 -223 654 -223 ct
-649 -223 643 -222 636 -219 ct 636 -219 636 -219 632 -229 ct 632 -229 632 -229 708 -260 ct
-708 -260 708 -260 720 -260 ct 720 -260 720 -260 720 -206 ct p ef
-1114 -158 m 1114 -121 1123 -92 1141 -71 ct 1159 -50 1180 -39 1205 -39 ct 1221 -39 1236 -43 1248 -52 ct
-1260 -61 1270 -77 1278 -99 ct 1278 -99 1278 -99 1287 -94 ct 1283 -68 1272 -45 1253 -24 ct
-1235 -3 1212 7 1184 7 ct 1154 7 1128 -5 1106 -28 ct 1085 -52 1074 -83 1074 -123 ct
-1074 -166 1085 -200 1107 -224 ct 1129 -248 1157 -260 1190 -260 ct 1218 -260 1242 -251 1260 -232 ct
-1278 -214 1287 -189 1287 -158 ct 1287 -158 1287 -158 1114 -158 ct p
-1114 -174 m 1114 -174 1114 -174 1230 -174 ct 1229 -190 1227 -201 1224 -208 ct
-1220 -218 1213 -226 1204 -231 ct 1195 -237 1185 -240 1176 -240 ct 1160 -240 1147 -234 1135 -223 ct
-1123 -211 1116 -195 1114 -174 ct p ef
-pom
-gr
-gr
-3100 6250 m 2538 6438 l 2538 6063 l 3100 6250 l p ef
-1975 4500 m 1975 6250 l 1950 6250 l 1925 6250 l 1925 4500 l 1950 4500 l
-1975 4500 l p ef
-1950 6250 m 1950 6275 l 1946 6275 l 1941 6273 l 1938 6272 l 1934 6269 l
-1931 6266 l 1928 6263 l 1927 6259 l 1925 6254 l 1925 6250 l 1925 6250 l
-1950 6250 l p ef
-1950 6225 m 2650 6225 l 2650 6250 l 2650 6275 l 1950 6275 l 1950 6250 l
-1950 6225 l p ef
-gs
-4635 7681 m 6248 7681 l 6248 9206 l 4635 9206 l 4635 7681 l eoclip newpath
-gs
-tm setmatrix
-3942 4683 t
-1 1 s
-gs
-gs
-0 0 m 1613 0 l 1613 1525 l 0 1525 l 0 0 l eoclip newpath
-gs
-pum
-661 556 t
-74 -379 m 74 -379 74 -379 176 -429 ct 176 -429 176 -429 186 -429 ct 186 -429 186 -429 186 -74 ct
-186 -50 187 -36 189 -30 ct 191 -24 195 -19 201 -16 ct 207 -13 220 -11 239 -11 ct
-239 -11 239 -11 239 0 ct 239 0 239 0 82 0 ct 82 0 82 0 82 -11 ct 101 -11 114 -13 120 -16 ct
-125 -19 129 -23 132 -28 ct 134 -33 135 -49 135 -74 ct 135 -74 135 -74 135 -301 ct
-135 -331 134 -351 132 -359 ct 130 -366 128 -371 124 -374 ct 120 -377 116 -379 110 -379 ct
-103 -379 92 -375 79 -369 ct 79 -369 79 -369 74 -379 ct p ef
-pom
-gr
-gs
-132 741 m 1350 0 rl 0 31 rl 1350 neg 0 rl ef p ef
-
-gr
-gs
-pum
-238 1376 t
-328 -430 m 328 -430 328 -430 296 -80 ct 294 -64 294 -53 294 -48 ct 294 -40 295 -33 298 -29 ct
-302 -23 307 -18 314 -15 ct 321 -12 332 -11 348 -11 ct 348 -11 348 -11 345 0 ct
-345 0 345 0 180 0 ct 180 0 180 0 184 -11 ct 184 -11 184 -11 191 -11 ct 204 -11 215 -14 224 -20 ct
-230 -24 234 -30 238 -39 ct 240 -46 242 -61 244 -85 ct 244 -85 244 -85 249 -138 ct
-249 -138 249 -138 128 -138 ct 128 -138 128 -138 86 -80 ct 76 -67 70 -57 67 -52 ct
-65 -46 64 -41 64 -36 ct 64 -29 66 -24 72 -19 ct 77 -14 86 -11 98 -11 ct 98 -11 98 -11 95 0 ct
-95 0 95 0 -30 0 ct -30 0 -30 0 -27 -11 ct -12 -12 2 -17 14 -26 ct 25 -36 43 -57 66 -88 ct
-66 -88 66 -88 317 -430 ct 317 -430 317 -430 328 -430 ct p
-268 -327 m 144 -159 l 251 -159 l 268 -327 l p ef
-pom
-gr
-gs
-pum
-661 1376 t
-168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
-98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
-89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
-p ef
-pom
-gr
-gs
-pum
-953 1376 t
-54 -273 m 54 -273 54 -273 249 -273 ct 249 -273 249 -273 249 -265 ct 249 -265 249 -265 35 -42 ct
-35 -42 35 -42 125 -42 ct 147 -42 161 -43 166 -44 ct 172 -46 178 -50 183 -55 ct
-187 -60 193 -70 199 -84 ct 199 -84 199 -84 210 -84 ct 210 -84 210 -84 183 0 ct
-183 0 183 0 -18 0 ct -18 0 -18 0 -18 -9 ct -18 -9 -18 -9 196 -232 ct 196 -232 196 -232 109 -232 ct
-90 -232 78 -232 74 -231 ct 68 -229 63 -226 57 -221 ct 51 -216 45 -208 39 -196 ct
-39 -196 39 -196 28 -196 ct 28 -196 28 -196 54 -273 ct p ef
-pom
-gr
-gs
-pum
-1270 1376 t
-33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
-86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
-143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
-33 131 33 131 33 116 ct p ef
-pom
-gr
-gr
-gr
-gr
-gr
-5400 9300 m 4400 9300 l 4400 7500 l 6400 7500 l 6400 9300 l 5400 9300 l
-pc
-7700 7000 m 6800 7000 l 6800 5500 l 8600 5500 l 8600 7000 l 7700 7000 l
-pc
-gs
-gs
-pum
-7102 6460 t
-47 0 m 47 -455 l 107 -455 l 107 -54 l 330 -54 l 330 0 l 47 0 l p ef
-380 -146 m 380 -146 380 -146 437 -151 ct 440 -128 446 -110 456 -95 ct 465 -80 481 -69 501 -60 ct
-522 -51 545 -46 571 -46 ct 593 -46 614 -49 631 -56 ct 649 -63 662 -72 670 -84 ct
-679 -96 683 -109 683 -123 ct 683 -138 679 -150 670 -161 ct 662 -171 648 -180 629 -187 ct
-617 -192 590 -200 549 -210 ct 507 -220 478 -229 461 -238 ct 440 -249 424 -264 413 -280 ct
-402 -297 397 -316 397 -337 ct 397 -360 404 -382 416 -402 ct 429 -422 448 -437 473 -447 ct
-498 -458 526 -463 557 -463 ct 590 -463 620 -458 646 -447 ct 671 -436 691 -420 705 -399 ct
-719 -378 726 -354 727 -327 ct 727 -327 727 -327 669 -323 ct 666 -351 656 -373 638 -387 ct
-620 -402 594 -409 559 -409 ct 523 -409 496 -402 480 -389 ct 463 -376 455 -360 455 -341 ct
-455 -324 461 -311 473 -300 ct 484 -290 514 -279 563 -268 ct 611 -257 645 -247 663 -239 ct
-690 -227 709 -211 722 -193 ct 735 -174 741 -153 741 -128 ct 741 -104 734 -81 720 -60 ct
-706 -38 687 -22 661 -10 ct 635 2 606 8 573 8 ct 532 8 498 2 470 -10 ct 442 -22 421 -40 405 -64 ct
-389 -88 381 -116 380 -146 ct p ef
-824 0 m 824 0 824 0 824 -455 ct 824 -455 824 -455 995 -455 ct 1026 -455 1049 -454 1065 -451 ct
-1087 -447 1106 -440 1121 -429 ct 1136 -419 1148 -404 1157 -385 ct 1166 -367 1171 -346 1171 -323 ct
-1171 -285 1159 -252 1134 -225 ct 1109 -198 1065 -185 1001 -185 ct 1001 -185 1001 -185 884 -185 ct
-884 -185 884 -185 884 0 ct 884 0 884 0 824 0 ct p
-884 -239 m 884 -239 884 -239 1002 -239 ct 1041 -239 1068 -246 1084 -261 ct
-1101 -275 1109 -295 1109 -322 ct 1109 -341 1104 -357 1095 -370 ct 1085 -384 1072 -393 1057 -397 ct
-1046 -400 1028 -401 1000 -401 ct 1000 -401 1000 -401 884 -401 ct 884 -401 884 -401 884 -239 ct
-p ef
-pom
-gr
-gr
-6800 6250 m 6238 6438 l 6238 6063 l 6800 6250 l p ef
-4700 6225 m 6350 6225 l 6350 6275 l 4700 6275 l 4700 6225 l p ef
-4400 8400 m 3988 8538 l 3988 8263 l 4400 8400 l p ef
-4070 8425 m 1950 8425 l 1950 8400 l 1950 8375 l 4070 8375 l 4070 8400 l
-4070 8425 l p ef
-1950 8400 m 1950 8425 l 1946 8425 l 1941 8423 l 1938 8422 l 1934 8419 l
-1931 8416 l 1928 8413 l 1927 8409 l 1925 8404 l 1925 8400 l 1925 8400 l
-1950 8400 l p ef
-1925 8400 m 1925 4500 l 1950 4500 l 1975 4500 l 1975 8400 l 1950 8400 l
-1925 8400 l p ef
-1950 4500 m 1950 4500 l 1950 4500 l 1950 4500 l 1950 4500 l 1950 4500 l
-1950 4500 l p ef
-5400 7500 m 5213 6938 l 5588 6938 l 5400 7500 l p ef
-4700 6225 m 5400 6225 l 5400 6250 l 5400 6275 l 4700 6275 l 4700 6250 l
-4700 6225 l p ef
-5400 6250 m 5400 6225 l 5404 6225 l 5409 6227 l 5412 6228 l 5416 6231 l
-5419 6234 l 5422 6237 l 5423 6241 l 5425 6246 l 5425 6250 l 5425 6250 l
-5400 6250 l p ef
-5425 6250 m 5425 7050 l 5400 7050 l 5375 7050 l 5375 6250 l 5400 6250 l
-5425 6250 l p ef
-10600 7000 m 9700 7000 l 9700 5500 l 11500 5500 l 11500 7000 l 10600 7000 l
-pc
-gs
-gs
-pum
-10153 6460 t
-178 0 m 178 0 178 0 2 -455 ct 2 -455 2 -455 67 -455 ct 67 -455 67 -455 186 -124 ct
-195 -98 203 -73 210 -50 ct 217 -74 225 -99 234 -124 ct 234 -124 234 -124 357 -455 ct
-357 -455 357 -455 419 -455 ct 419 -455 419 -455 241 0 ct 241 0 241 0 178 0 ct p ef
-817 -48 m 845 -29 870 -15 894 -6 ct 894 -6 894 -6 876 36 ct 843 24 811 5 778 -21 ct
-745 -2 707 8 667 8 ct 625 8 588 -2 555 -22 ct 521 -42 495 -70 477 -106 ct 459 -142 450 -182 450 -227 ct
-450 -272 459 -313 477 -350 ct 496 -387 521 -415 555 -434 ct 589 -453 626 -463 668 -463 ct
-710 -463 748 -453 781 -433 ct 815 -413 841 -385 858 -349 ct 876 -313 885 -273 885 -227 ct
-885 -190 879 -156 868 -126 ct 857 -96 839 -70 817 -48 ct p
-684 -125 m 719 -115 747 -101 770 -82 ct 805 -114 823 -162 823 -227 ct 823 -264 817 -296 804 -324 ct
-792 -352 773 -373 749 -388 ct 725 -403 698 -411 668 -411 ct 623 -411 586 -396 556 -365 ct
-527 -334 512 -288 512 -227 ct 512 -168 527 -122 556 -91 ct 585 -59 623 -43 668 -43 ct
-690 -43 710 -47 729 -55 ct 710 -67 690 -76 669 -81 ct 669 -81 669 -81 684 -125 ct
-p ef
-pom
-gr
-gr
-9700 6250 m 9138 6438 l 9138 6063 l 9700 6250 l p ef
-8600 6225 m 9250 6225 l 9250 6275 l 8600 6275 l 8600 6225 l p ef
-gs
-8135 7931 m 9830 7931 l 9830 8806 l 8135 8806 l 8135 7931 l eoclip newpath
-gs
-tm setmatrix
-7435 4921 t
-1 1 s
-gs
-gs
-0 0 m 1695 0 l 1695 875 l 0 875 l 0 0 l eoclip newpath
-gs
-pum
-106 741 t
-650 93 m 650 93 650 93 56 93 ct 56 93 56 93 56 76 ct 56 76 56 76 359 -301 ct 359 -301 359 -301 56 -670 ct
-56 -670 56 -670 56 -687 ct 56 -687 56 -687 634 -687 ct 634 -687 634 -687 646 -534 ct
-646 -534 646 -534 627 -534 ct 620 -611 582 -650 516 -650 ct 516 -650 516 -650 181 -650 ct
-181 -650 181 -650 435 -339 ct 435 -339 435 -339 150 13 ct 150 13 150 13 520 13 ct
-595 13 642 -24 661 -98 ct 661 -98 661 -98 679 -96 ct 679 -96 679 -96 650 93 ct
-p ef
-pom
-gr
-gs
-pum
-953 661 t
-168 131 m 127 98 96 50 75 -12 ct 56 -66 47 -123 47 -183 ct 47 -241 56 -298 75 -354 ct
-98 -419 128 -467 168 -497 ct 168 -497 168 -497 168 -481 ct 139 -454 116 -408 101 -342 ct
-89 -290 83 -237 83 -183 ct 83 -129 89 -76 101 -24 ct 116 43 139 89 168 116 ct 168 116 168 116 168 131 ct
-p ef
-pom
-gr
-gs
-pum
-1217 661 t
-33 116 m 61 90 82 46 97 -18 ct 110 -70 117 -120 117 -170 ct 117 -229 111 -284 100 -335 ct
-86 -404 63 -453 33 -481 ct 33 -481 33 -481 33 -497 ct 72 -468 103 -421 125 -354 ct
-143 -299 153 -241 153 -183 ct 153 -123 144 -66 125 -11 ct 103 54 72 102 33 131 ct
-33 131 33 131 33 116 ct p ef
-pom
-gr
-gs
-pum
-1402 344 t
-175 -48 m 175 -48 175 -48 157 0 ct 157 0 157 0 8 0 ct 8 0 8 0 8 -7 ct 52 -47 83 -79 101 -105 ct
-119 -130 128 -153 128 -174 ct 128 -190 123 -204 113 -214 ct 103 -225 91 -230 78 -230 ct
-65 -230 54 -226 44 -219 ct 34 -212 27 -202 22 -188 ct 22 -188 22 -188 15 -188 ct
-18 -211 26 -228 39 -240 ct 52 -252 68 -258 88 -258 ct 108 -258 125 -251 139 -238 ct
-153 -225 160 -209 160 -191 ct 160 -179 157 -166 151 -153 ct 142 -133 127 -112 106 -89 ct
-75 -55 55 -35 48 -28 ct 48 -28 48 -28 114 -28 ct 127 -28 137 -29 142 -29 ct 147 -30 152 -32 157 -36 ct
-161 -39 165 -43 168 -48 ct 168 -48 168 -48 175 -48 ct p ef
-pom
-gr
-gr
-gr
-gr
-gr
-8950 9100 m 7900 9100 l 7900 7700 l 10000 7700 l 10000 9100 l 8950 9100 l
-pc
-7900 8400 m 7338 8588 l 7338 8213 l 7900 8400 l p ef
-6400 8375 m 7450 8375 l 7450 8425 l 6400 8425 l 6400 8375 l p ef
-13350 9100 m 12300 9100 l 12300 7700 l 14400 7700 l 14400 9100 l 13350 9100 l
-pc
-gs
-gs
-pum
-12395 8584 t
-242 -260 m 242 -260 242 -260 242 64 ct 242 81 243 91 245 96 ct 248 101 251 104 256 107 ct
-260 110 269 111 283 111 ct 283 111 283 111 283 121 ct 283 121 283 121 156 121 ct
-156 121 156 121 156 111 ct 156 111 156 111 161 111 ct 172 111 179 109 185 106 ct
-189 104 191 101 194 95 ct 196 90 197 79 197 64 ct 197 64 197 64 197 -45 ct 180 -25 166 -11 153 -4 ct
-141 3 128 7 114 7 ct 90 7 68 -4 49 -26 ct 30 -48 20 -78 20 -115 ct 20 -158 33 -193 58 -220 ct
-83 -247 114 -260 149 -260 ct 160 -260 170 -259 178 -256 ct 187 -253 195 -248 202 -243 ct
-213 -248 223 -253 233 -260 ct 233 -260 233 -260 242 -260 ct p
-197 -62 m 197 -62 197 -62 197 -180 ct 197 -194 195 -205 192 -213 ct 188 -221 182 -227 172 -233 ct
-163 -238 153 -241 141 -241 ct 121 -241 103 -232 88 -215 ct 73 -197 66 -171 66 -136 ct
-66 -102 74 -76 89 -58 ct 104 -41 122 -32 143 -32 ct 154 -32 163 -34 172 -39 ct
-181 -44 189 -51 197 -62 ct p ef
-523 -253 m 523 -253 523 -253 523 -99 ct 523 -70 524 -53 525 -47 ct 526 -40 529 -36 532 -33 ct
-535 -31 538 -29 542 -29 ct 548 -29 554 -31 561 -34 ct 561 -34 561 -34 565 -24 ct
-565 -24 565 -24 490 7 ct 490 7 490 7 478 7 ct 478 7 478 7 478 -46 ct 456 -23 440 -8 428 -2 ct
-417 4 405 7 392 7 ct 378 7 365 3 355 -5 ct 344 -14 337 -24 333 -37 ct 329 -50 327 -68 327 -92 ct
-327 -92 327 -92 327 -205 ct 327 -217 326 -225 323 -229 ct 321 -234 317 -237 312 -240 ct
-307 -242 297 -243 284 -243 ct 284 -243 284 -243 284 -253 ct 284 -253 284 -253 373 -253 ct
-373 -253 373 -253 373 -84 ct 373 -60 377 -44 385 -37 ct 394 -30 403 -26 415 -26 ct
-423 -26 432 -28 442 -33 ct 452 -38 464 -48 478 -62 ct 478 -62 478 -62 478 -205 ct
-478 -220 475 -230 470 -235 ct 465 -240 454 -243 437 -243 ct 437 -243 437 -243 437 -253 ct
-437 -253 437 -253 523 -253 ct p ef
-728 -37 m 702 -17 686 -5 679 -2 ct 669 3 659 5 647 5 ct 630 5 615 -1 604 -13 ct
-593 -25 587 -40 587 -60 ct 587 -72 590 -83 595 -92 ct 603 -104 616 -116 635 -127 ct
-653 -138 685 -151 728 -167 ct 728 -167 728 -167 728 -177 ct 728 -202 724 -219 716 -228 ct
-708 -237 697 -242 681 -242 ct 670 -242 661 -239 654 -233 ct 647 -226 643 -219 643 -211 ct
-643 -211 643 -211 644 -195 ct 644 -187 642 -180 637 -176 ct 633 -171 627 -169 620 -169 ct
-614 -169 608 -171 604 -176 ct 599 -181 597 -188 597 -196 ct 597 -212 605 -227 621 -240 ct
-637 -253 660 -260 689 -260 ct 711 -260 730 -256 744 -249 ct 755 -243 763 -234 768 -222 ct
-771 -214 773 -198 773 -174 ct 773 -174 773 -174 773 -89 ct 773 -65 773 -50 774 -45 ct
-775 -39 777 -36 779 -34 ct 781 -32 783 -31 786 -31 ct 789 -31 792 -32 794 -33 ct
-798 -35 805 -42 816 -53 ct 816 -53 816 -53 816 -38 ct 796 -10 776 4 758 4 ct 749 4 741 1 736 -5 ct
-731 -11 728 -22 728 -37 ct p
-728 -54 m 728 -54 728 -54 728 -149 ct 700 -138 682 -130 674 -126 ct 659 -118 649 -110 642 -101 ct
-636 -92 633 -83 633 -72 ct 633 -59 637 -49 645 -40 ct 653 -31 662 -27 672 -27 ct
-687 -27 705 -36 728 -54 ct p ef
-909 -207 m 938 -242 966 -260 993 -260 ct 1007 -260 1019 -257 1028 -250 ct 1038 -243 1046 -231 1052 -216 ct
-1056 -205 1058 -188 1058 -165 ct 1058 -165 1058 -165 1058 -57 ct 1058 -41 1059 -30 1062 -25 ct
-1064 -20 1067 -16 1071 -14 ct 1075 -11 1083 -10 1095 -10 ct 1095 -10 1095 -10 1095 0 ct
-1095 0 1095 0 971 0 ct 971 0 971 0 971 -10 ct 971 -10 971 -10 976 -10 ct 988 -10 996 -12 1001 -15 ct
-1006 -19 1009 -24 1011 -31 ct 1012 -34 1012 -43 1012 -57 ct 1012 -57 1012 -57 1012 -161 ct
-1012 -184 1009 -201 1003 -211 ct 997 -222 987 -227 973 -227 ct 952 -227 930 -215 909 -191 ct
-909 -191 909 -191 909 -57 ct 909 -40 910 -29 912 -25 ct 915 -20 918 -16 923 -14 ct
-927 -11 936 -10 950 -10 ct 950 -10 950 -10 950 0 ct 950 0 950 0 826 0 ct 826 0 826 0 826 -10 ct
-826 -10 826 -10 831 -10 ct 844 -10 852 -13 856 -20 ct 861 -26 863 -39 863 -57 ct
-863 -57 863 -57 863 -151 ct 863 -181 862 -200 861 -206 ct 860 -213 858 -217 855 -220 ct
-852 -222 848 -223 843 -223 ct 838 -223 832 -222 825 -219 ct 825 -219 825 -219 821 -229 ct
-821 -229 821 -229 897 -260 ct 897 -260 897 -260 909 -260 ct 909 -260 909 -260 909 -207 ct
-p ef
-1192 -337 m 1192 -337 1192 -337 1192 -253 ct 1192 -253 1192 -253 1251 -253 ct
-1251 -253 1251 -253 1251 -234 ct 1251 -234 1251 -234 1192 -234 ct 1192 -234 1192 -234 1192 -70 ct
-1192 -53 1194 -42 1199 -37 ct 1204 -31 1210 -28 1217 -28 ct 1223 -28 1229 -30 1235 -34 ct
-1240 -37 1245 -43 1248 -50 ct 1248 -50 1248 -50 1259 -50 ct 1253 -32 1243 -19 1232 -10 ct
-1220 -1 1207 4 1195 4 ct 1186 4 1178 2 1170 -3 ct 1162 -8 1156 -14 1152 -23 ct
-1148 -32 1146 -45 1146 -64 ct 1146 -64 1146 -64 1146 -234 ct 1146 -234 1146 -234 1106 -234 ct
-1106 -234 1106 -234 1106 -243 ct 1116 -247 1126 -254 1137 -264 ct 1148 -273 1157 -285 1165 -298 ct
-1170 -305 1175 -318 1183 -337 ct 1183 -337 1183 -337 1192 -337 ct p ef
-1339 -392 m 1347 -392 1353 -389 1359 -384 ct 1364 -378 1367 -372 1367 -364 ct
-1367 -356 1364 -350 1359 -344 ct 1353 -339 1347 -336 1339 -336 ct 1331 -336 1325 -339 1319 -344 ct
-1314 -350 1311 -356 1311 -364 ct 1311 -372 1314 -378 1319 -384 ct 1325 -389 1331 -392 1339 -392 ct
-p
-1362 -260 m 1362 -260 1362 -260 1362 -57 ct 1362 -41 1363 -31 1365 -26 ct 1368 -20 1371 -16 1375 -14 ct
-1380 -11 1387 -10 1399 -10 ct 1399 -10 1399 -10 1399 0 ct 1399 0 1399 0 1279 0 ct
-1279 0 1279 0 1279 -10 ct 1291 -10 1299 -11 1303 -14 ct 1307 -16 1310 -20 1312 -25 ct
-1315 -31 1316 -41 1316 -57 ct 1316 -57 1316 -57 1316 -154 ct 1316 -181 1315 -199 1314 -207 ct
-1312 -213 1310 -217 1308 -220 ct 1305 -222 1301 -223 1296 -223 ct 1291 -223 1285 -222 1278 -219 ct
-1278 -219 1278 -219 1274 -229 ct 1274 -229 1274 -229 1350 -260 ct 1350 -260 1350 -260 1362 -260 ct
-p ef
-1651 -77 m 1651 -77 1651 -77 1648 0 ct 1648 0 1648 0 1425 0 ct 1425 0 1425 0 1425 -10 ct
-1425 -10 1425 -10 1594 -234 ct 1594 -234 1594 -234 1509 -234 ct 1491 -234 1480 -233 1474 -231 ct
-1469 -228 1464 -224 1461 -217 ct 1456 -208 1453 -197 1452 -183 ct 1452 -183 1452 -183 1442 -183 ct
-1442 -183 1442 -183 1443 -253 ct 1443 -253 1443 -253 1655 -253 ct 1655 -253 1655 -253 1655 -243 ct
-1655 -243 1655 -243 1486 -18 ct 1486 -18 1486 -18 1578 -18 ct 1597 -18 1610 -20 1617 -23 ct
-1624 -26 1629 -32 1634 -40 ct 1637 -46 1639 -58 1641 -77 ct 1641 -77 1641 -77 1651 -77 ct
-p ef
-1724 -158 m 1724 -121 1733 -92 1751 -71 ct 1769 -50 1790 -39 1815 -39 ct 1831 -39 1846 -43 1858 -52 ct
-1870 -61 1880 -77 1888 -99 ct 1888 -99 1888 -99 1897 -94 ct 1893 -68 1882 -45 1863 -24 ct
-1845 -3 1822 7 1794 7 ct 1764 7 1738 -5 1716 -28 ct 1695 -52 1684 -83 1684 -123 ct
-1684 -166 1695 -200 1717 -224 ct 1739 -248 1767 -260 1800 -260 ct 1828 -260 1852 -251 1870 -232 ct
-1888 -214 1897 -189 1897 -158 ct 1897 -158 1897 -158 1724 -158 ct p
-1724 -174 m 1724 -174 1724 -174 1840 -174 ct 1839 -190 1837 -201 1834 -208 ct
-1830 -218 1823 -226 1814 -231 ct 1805 -237 1795 -240 1786 -240 ct 1770 -240 1757 -234 1745 -223 ct
-1733 -211 1726 -195 1724 -174 ct p ef
-pom
-gr
-gr
-12300 8400 m 11738 8588 l 11738 8213 l 12300 8400 l p ef
-10000 8375 m 11850 8375 l 11850 8425 l 10000 8425 l 10000 8375 l p ef
-gs
-10100 7500 m 11689 7500 l 11689 8295 l 10100 8295 l 10100 7500 l eoclip newpath
-gs
-tm setmatrix
-9393 4498 t
-1 1 s
-gs
-gs
-0 0 m 1589 0 l 1589 795 l 0 795 l 0 0 l eoclip newpath
-gs
-pum
-159 556 t
-331 -261 m 331 -261 331 -261 322 -229 ct 322 -229 322 -229 270 -229 ct 274 -218 276 -207 276 -198 ct
-276 -170 264 -146 241 -124 ct 217 -103 185 -91 144 -89 ct 122 -82 106 -75 95 -65 ct
-91 -62 89 -59 89 -55 ct 89 -51 91 -47 95 -44 ct 98 -40 108 -37 123 -33 ct 123 -33 123 -33 183 -20 ct
-216 -12 238 -3 248 8 ct 259 19 264 31 264 46 ct 264 63 258 78 245 92 ct 233 106 215 117 190 125 ct
-166 133 140 137 111 137 ct 85 137 62 134 41 128 ct 20 122 5 114 -4 103 ct -13 93 -18 82 -18 71 ct
--18 63 -15 53 -9 44 ct -3 34 4 26 13 20 ct 19 16 35 7 61 -8 ct 52 -15 47 -23 47 -32 ct
-47 -40 51 -49 59 -58 ct 67 -68 85 -78 111 -89 ct 89 -93 71 -103 58 -118 ct 45 -132 39 -149 39 -167 ct
-39 -196 52 -222 78 -245 ct 104 -268 138 -280 181 -280 ct 196 -280 209 -278 219 -275 ct
-229 -272 239 -268 248 -261 ct 248 -261 248 -261 331 -261 ct p
-225 -211 m 225 -228 220 -240 211 -250 ct 201 -259 189 -264 173 -264 ct 149 -264 129 -252 114 -229 ct
-98 -206 90 -182 90 -157 ct 90 -141 95 -128 105 -118 ct 115 -108 127 -103 142 -103 ct
-153 -103 164 -106 174 -112 ct 185 -118 194 -126 201 -136 ct 209 -147 214 -160 219 -176 ct
-223 -192 225 -204 225 -211 ct p
-74 0 m 57 8 45 18 36 30 ct 27 42 23 53 23 65 ct 23 79 29 90 42 99 ct 59 112 85 118 120 118 ct
-149 118 175 113 196 103 ct 217 93 227 80 227 64 ct 227 56 223 48 215 41 ct 208 34 193 28 170 24 ct
-158 21 126 13 74 0 ct p ef
-pom
-gr
-gs
-pum
-609 714 t
-119 -164 m 119 -164 119 -164 116 -150 ct 116 -150 116 -150 88 -150 ct 88 -150 88 -150 65 -69 ct
-55 -34 45 -6 36 13 ct 23 41 9 60 -6 70 ct -18 78 -29 82 -41 82 ct -49 82 -55 80 -60 75 ct
--64 72 -66 68 -66 63 ct -66 59 -64 55 -61 52 ct -58 49 -54 48 -50 48 ct -46 48 -44 49 -41 51 ct
--39 53 -38 56 -38 58 ct -38 61 -39 64 -41 66 ct -43 68 -44 69 -44 70 ct -44 71 -44 72 -43 73 ct
--42 74 -40 74 -38 74 ct -32 74 -27 72 -21 69 ct -15 66 -10 61 -5 54 ct -1 48 3 38 8 26 ct
-9 21 14 4 22 -25 ct 22 -25 22 -25 59 -150 ct 59 -150 59 -150 22 -150 ct 22 -150 22 -150 25 -164 ct
-36 -164 44 -165 49 -166 ct 53 -168 57 -170 61 -174 ct 65 -178 70 -186 75 -197 ct
-82 -212 89 -224 95 -232 ct 104 -243 113 -251 123 -257 ct 132 -262 142 -265 150 -265 ct
-159 -265 166 -263 172 -258 ct 177 -253 180 -248 180 -242 ct 180 -238 179 -234 176 -231 ct
-173 -228 169 -227 165 -227 ct 161 -227 158 -228 156 -230 ct 153 -233 152 -235 152 -238 ct
-152 -240 153 -243 155 -245 ct 157 -248 158 -250 158 -251 ct 158 -253 157 -254 156 -255 ct
-155 -256 153 -257 150 -257 ct 143 -257 136 -254 130 -249 ct 122 -242 115 -232 109 -217 ct
-106 -210 100 -192 92 -164 ct 92 -164 92 -164 119 -164 ct p ef
-125 -158 m 125 -158 125 -158 189 -168 ct 189 -168 189 -168 163 -78 ct 185 -115 204 -141 222 -155 ct
-232 -164 240 -168 247 -168 ct 251 -168 254 -167 256 -164 ct 259 -162 260 -158 260 -154 ct
-260 -146 258 -138 254 -130 ct 251 -125 247 -122 241 -122 ct 238 -122 236 -123 234 -125 ct
-232 -127 230 -130 230 -134 ct 230 -136 229 -138 228 -138 ct 227 -139 226 -140 225 -140 ct
-223 -140 221 -140 219 -139 ct 216 -137 211 -132 204 -124 ct 194 -112 183 -96 171 -77 ct
-166 -68 161 -59 158 -49 ct 153 -35 150 -26 149 -23 ct 149 -23 149 -23 142 0 ct
-142 0 142 0 114 0 ct 114 0 114 0 147 -116 ct 151 -129 153 -139 153 -144 ct 153 -146 153 -148 151 -150 ct
-148 -152 145 -153 141 -153 ct 139 -153 134 -152 128 -151 ct 128 -151 128 -151 125 -158 ct
-p ef
-443 -166 m 443 -166 443 -166 406 -40 ct 406 -40 406 -40 402 -23 ct 402 -21 401 -20 401 -19 ct
-401 -17 402 -15 403 -14 ct 403 -13 404 -13 405 -13 ct 406 -13 408 -13 409 -15 ct
-413 -18 417 -26 423 -37 ct 423 -37 423 -37 429 -33 ct 422 -20 415 -11 407 -5 ct
-399 1 392 4 386 4 ct 382 4 378 3 376 0 ct 373 -3 372 -6 372 -11 ct 372 -17 373 -25 376 -35 ct
-376 -35 376 -35 380 -50 ct 362 -29 346 -14 331 -5 ct 320 1 309 4 299 4 ct 289 4 280 0 273 -7 ct
-266 -14 262 -25 262 -38 ct 262 -57 268 -77 281 -99 ct 294 -120 311 -138 331 -151 ct
-346 -161 361 -166 374 -166 ct 383 -166 390 -164 395 -160 ct 401 -157 405 -151 408 -142 ct
-408 -142 408 -142 413 -162 ct 413 -162 413 -162 443 -166 ct p
-373 -157 m 365 -157 356 -153 346 -146 ct 332 -136 320 -120 309 -100 ct 298 -80 293 -61 293 -45 ct
-293 -37 295 -30 300 -25 ct 305 -20 310 -18 317 -18 ct 332 -18 349 -28 367 -47 ct
-389 -73 399 -100 398 -128 ct 398 -138 396 -145 392 -150 ct 387 -155 381 -157 373 -157 ct
-p ef
-528 -168 m 528 -168 528 -168 504 -84 ct 515 -104 524 -119 532 -129 ct 544 -144 555 -155 567 -162 ct
-573 -166 580 -168 588 -168 ct 594 -168 599 -166 603 -162 ct 607 -158 609 -153 609 -147 ct
-609 -141 608 -133 605 -123 ct 605 -123 605 -123 591 -76 ct 612 -114 632 -140 652 -155 ct
-662 -164 673 -168 683 -168 ct 689 -168 694 -166 698 -162 ct 702 -158 704 -151 704 -143 ct
-704 -135 703 -128 700 -120 ct 700 -120 700 -120 677 -48 ct 672 -33 669 -24 669 -22 ct
-669 -21 670 -19 671 -18 ct 672 -17 673 -17 674 -17 ct 675 -17 677 -18 680 -20 ct
-686 -25 692 -33 698 -42 ct 698 -42 698 -42 704 -38 ct 701 -33 696 -26 688 -18 ct
-681 -9 674 -3 669 0 ct 663 3 658 4 654 4 ct 650 4 646 3 643 0 ct 641 -3 639 -7 639 -11 ct
-639 -17 642 -29 648 -47 ct 648 -47 648 -47 668 -106 ct 672 -120 674 -128 675 -129 ct
-675 -132 675 -134 675 -136 ct 675 -139 675 -142 673 -143 ct 671 -145 670 -146 668 -146 ct
-662 -146 656 -143 650 -138 ct 631 -122 613 -100 597 -72 ct 586 -53 576 -29 567 0 ct
-567 0 567 0 540 0 ct 540 0 540 0 574 -112 ct 578 -124 580 -132 580 -136 ct 580 -140 579 -142 577 -144 ct
-576 -145 574 -146 572 -146 ct 568 -146 564 -145 559 -142 ct 551 -137 542 -126 530 -111 ct
-518 -95 508 -80 502 -65 ct 499 -59 491 -37 479 0 ct 479 0 479 0 452 0 ct 452 0 452 0 487 -120 ct
-487 -120 487 -120 491 -136 ct 492 -138 493 -140 493 -141 ct 493 -144 491 -146 489 -148 ct
-486 -150 483 -151 479 -151 ct 478 -151 473 -150 466 -149 ct 466 -149 466 -149 464 -156 ct
-464 -156 464 -156 528 -168 ct p ef
-763 -70 m 762 -64 762 -59 762 -55 ct 762 -44 766 -35 774 -27 ct 782 -20 792 -16 803 -16 ct
-812 -16 821 -18 830 -21 ct 838 -25 851 -33 867 -45 ct 867 -45 867 -45 871 -40 ct
-841 -11 813 4 786 4 ct 768 4 754 -2 745 -13 ct 736 -24 731 -37 731 -51 ct 731 -69 737 -88 748 -107 ct
-760 -126 774 -141 792 -152 ct 809 -163 827 -168 845 -168 ct 858 -168 868 -165 874 -160 ct
-881 -155 884 -148 884 -141 ct 884 -131 880 -121 871 -112 ct 860 -99 844 -89 823 -82 ct
-809 -77 789 -73 763 -70 ct p
-764 -79 m 783 -81 799 -85 811 -90 ct 826 -97 838 -105 846 -114 ct 854 -124 858 -133 858 -141 ct
-858 -147 856 -151 853 -154 ct 850 -157 845 -159 838 -159 ct 825 -159 811 -152 797 -139 ct
-782 -125 771 -105 764 -79 ct p ef
-pom
-gr
-gr
-gr
-gr
-gr
-gs
-14601 7501 m 16190 7501 l 16190 8296 l 14601 8296 l 14601 7501 l eoclip newpath
-gs
-tm setmatrix
-13891 4498 t
-1 1 s
-gs
-gs
-0 0 m 1590 0 l 1590 795 l 0 795 l 0 0 l eoclip newpath
-gs
-pum
-212 556 t
-208 -345 m 197 -344 l 113 -410 l 25 -342 l 11 -345 l 113 -462 l 208 -345 l
-p ef
-pom
-gr
-gs
-pum
-159 556 t
-331 -261 m 331 -261 331 -261 322 -229 ct 322 -229 322 -229 270 -229 ct 274 -218 276 -207 276 -198 ct
-276 -170 264 -146 241 -124 ct 217 -103 185 -91 144 -89 ct 122 -82 106 -75 95 -65 ct
-91 -62 89 -59 89 -55 ct 89 -51 91 -47 95 -44 ct 98 -40 108 -37 123 -33 ct 123 -33 123 -33 183 -20 ct
-216 -12 238 -3 248 8 ct 259 19 264 31 264 46 ct 264 63 258 78 245 92 ct 233 106 215 117 190 125 ct
-166 133 140 137 111 137 ct 85 137 62 134 41 128 ct 20 122 5 114 -4 103 ct -13 93 -18 82 -18 71 ct
--18 63 -15 53 -9 44 ct -3 34 4 26 13 20 ct 19 16 35 7 61 -8 ct 52 -15 47 -23 47 -32 ct
-47 -40 51 -49 59 -58 ct 67 -68 85 -78 111 -89 ct 89 -93 71 -103 58 -118 ct 45 -132 39 -149 39 -167 ct
-39 -196 52 -222 78 -245 ct 104 -268 138 -280 181 -280 ct 196 -280 209 -278 219 -275 ct
-229 -272 239 -268 248 -261 ct 248 -261 248 -261 331 -261 ct p
-225 -211 m 225 -228 220 -240 211 -250 ct 201 -259 189 -264 173 -264 ct 149 -264 129 -252 114 -229 ct
-98 -206 90 -182 90 -157 ct 90 -141 95 -128 105 -118 ct 115 -108 127 -103 142 -103 ct
-153 -103 164 -106 174 -112 ct 185 -118 194 -126 201 -136 ct 209 -147 214 -160 219 -176 ct
-223 -192 225 -204 225 -211 ct p
-74 0 m 57 8 45 18 36 30 ct 27 42 23 53 23 65 ct 23 79 29 90 42 99 ct 59 112 85 118 120 118 ct
-149 118 175 113 196 103 ct 217 93 227 80 227 64 ct 227 56 223 48 215 41 ct 208 34 193 28 170 24 ct
-158 21 126 13 74 0 ct p ef
-pom
-gr
-gs
-pum
-609 714 t
-119 -164 m 119 -164 119 -164 116 -150 ct 116 -150 116 -150 88 -150 ct 88 -150 88 -150 65 -69 ct
-55 -34 45 -6 36 13 ct 23 41 9 60 -6 70 ct -18 78 -29 82 -41 82 ct -49 82 -55 80 -60 75 ct
--64 72 -66 68 -66 63 ct -66 59 -64 55 -61 52 ct -58 49 -54 48 -50 48 ct -46 48 -44 49 -41 51 ct
--39 53 -38 56 -38 58 ct -38 61 -39 64 -41 66 ct -43 68 -44 69 -44 70 ct -44 71 -44 72 -43 73 ct
--42 74 -40 74 -38 74 ct -32 74 -27 72 -21 69 ct -15 66 -10 61 -5 54 ct -1 48 3 38 8 26 ct
-9 21 14 4 22 -25 ct 22 -25 22 -25 59 -150 ct 59 -150 59 -150 22 -150 ct 22 -150 22 -150 25 -164 ct
-36 -164 44 -165 49 -166 ct 53 -168 57 -170 61 -174 ct 65 -178 70 -186 75 -197 ct
-82 -212 89 -224 95 -232 ct 104 -243 113 -251 123 -257 ct 132 -262 142 -265 150 -265 ct
-159 -265 166 -263 172 -258 ct 177 -253 180 -248 180 -242 ct 180 -238 179 -234 176 -231 ct
-173 -228 169 -227 165 -227 ct 161 -227 158 -228 156 -230 ct 153 -233 152 -235 152 -238 ct
-152 -240 153 -243 155 -245 ct 157 -248 158 -250 158 -251 ct 158 -253 157 -254 156 -255 ct
-155 -256 153 -257 150 -257 ct 143 -257 136 -254 130 -249 ct 122 -242 115 -232 109 -217 ct
-106 -210 100 -192 92 -164 ct 92 -164 92 -164 119 -164 ct p ef
-125 -158 m 125 -158 125 -158 189 -168 ct 189 -168 189 -168 163 -78 ct 185 -115 204 -141 222 -155 ct
-232 -164 240 -168 247 -168 ct 251 -168 254 -167 256 -164 ct 259 -162 260 -158 260 -154 ct
-260 -146 258 -138 254 -130 ct 251 -125 247 -122 241 -122 ct 238 -122 236 -123 234 -125 ct
-232 -127 230 -130 230 -134 ct 230 -136 229 -138 228 -138 ct 227 -139 226 -140 225 -140 ct
-223 -140 221 -140 219 -139 ct 216 -137 211 -132 204 -124 ct 194 -112 183 -96 171 -77 ct
-166 -68 161 -59 158 -49 ct 153 -35 150 -26 149 -23 ct 149 -23 149 -23 142 0 ct
-142 0 142 0 114 0 ct 114 0 114 0 147 -116 ct 151 -129 153 -139 153 -144 ct 153 -146 153 -148 151 -150 ct
-148 -152 145 -153 141 -153 ct 139 -153 134 -152 128 -151 ct 128 -151 128 -151 125 -158 ct
-p ef
-443 -166 m 443 -166 443 -166 406 -40 ct 406 -40 406 -40 402 -23 ct 402 -21 401 -20 401 -19 ct
-401 -17 402 -15 403 -14 ct 403 -13 404 -13 405 -13 ct 406 -13 408 -13 409 -15 ct
-413 -18 417 -26 423 -37 ct 423 -37 423 -37 429 -33 ct 422 -20 415 -11 407 -5 ct
-399 1 392 4 386 4 ct 382 4 378 3 376 0 ct 373 -3 372 -6 372 -11 ct 372 -17 373 -25 376 -35 ct
-376 -35 376 -35 380 -50 ct 362 -29 346 -14 331 -5 ct 320 1 309 4 299 4 ct 289 4 280 0 273 -7 ct
-266 -14 262 -25 262 -38 ct 262 -57 268 -77 281 -99 ct 294 -120 311 -138 331 -151 ct
-346 -161 361 -166 374 -166 ct 383 -166 390 -164 395 -160 ct 401 -157 405 -151 408 -142 ct
-408 -142 408 -142 413 -162 ct 413 -162 413 -162 443 -166 ct p
-373 -157 m 365 -157 356 -153 346 -146 ct 332 -136 320 -120 309 -100 ct 298 -80 293 -61 293 -45 ct
-293 -37 295 -30 300 -25 ct 305 -20 310 -18 317 -18 ct 332 -18 349 -28 367 -47 ct
-389 -73 399 -100 398 -128 ct 398 -138 396 -145 392 -150 ct 387 -155 381 -157 373 -157 ct
-p ef
-528 -168 m 528 -168 528 -168 504 -84 ct 515 -104 524 -119 532 -129 ct 544 -144 555 -155 567 -162 ct
-573 -166 580 -168 588 -168 ct 594 -168 599 -166 603 -162 ct 607 -158 609 -153 609 -147 ct
-609 -141 608 -133 605 -123 ct 605 -123 605 -123 591 -76 ct 612 -114 632 -140 652 -155 ct
-662 -164 673 -168 683 -168 ct 689 -168 694 -166 698 -162 ct 702 -158 704 -151 704 -143 ct
-704 -135 703 -128 700 -120 ct 700 -120 700 -120 677 -48 ct 672 -33 669 -24 669 -22 ct
-669 -21 670 -19 671 -18 ct 672 -17 673 -17 674 -17 ct 675 -17 677 -18 680 -20 ct
-686 -25 692 -33 698 -42 ct 698 -42 698 -42 704 -38 ct 701 -33 696 -26 688 -18 ct
-681 -9 674 -3 669 0 ct 663 3 658 4 654 4 ct 650 4 646 3 643 0 ct 641 -3 639 -7 639 -11 ct
-639 -17 642 -29 648 -47 ct 648 -47 648 -47 668 -106 ct 672 -120 674 -128 675 -129 ct
-675 -132 675 -134 675 -136 ct 675 -139 675 -142 673 -143 ct 671 -145 670 -146 668 -146 ct
-662 -146 656 -143 650 -138 ct 631 -122 613 -100 597 -72 ct 586 -53 576 -29 567 0 ct
-567 0 567 0 540 0 ct 540 0 540 0 574 -112 ct 578 -124 580 -132 580 -136 ct 580 -140 579 -142 577 -144 ct
-576 -145 574 -146 572 -146 ct 568 -146 564 -145 559 -142 ct 551 -137 542 -126 530 -111 ct
-518 -95 508 -80 502 -65 ct 499 -59 491 -37 479 0 ct 479 0 479 0 452 0 ct 452 0 452 0 487 -120 ct
-487 -120 487 -120 491 -136 ct 492 -138 493 -140 493 -141 ct 493 -144 491 -146 489 -148 ct
-486 -150 483 -151 479 -151 ct 478 -151 473 -150 466 -149 ct 466 -149 466 -149 464 -156 ct
-464 -156 464 -156 528 -168 ct p ef
-763 -70 m 762 -64 762 -59 762 -55 ct 762 -44 766 -35 774 -27 ct 782 -20 792 -16 803 -16 ct
-812 -16 821 -18 830 -21 ct 838 -25 851 -33 867 -45 ct 867 -45 867 -45 871 -40 ct
-841 -11 813 4 786 4 ct 768 4 754 -2 745 -13 ct 736 -24 731 -37 731 -51 ct 731 -69 737 -88 748 -107 ct
-760 -126 774 -141 792 -152 ct 809 -163 827 -168 845 -168 ct 858 -168 868 -165 874 -160 ct
-881 -155 884 -148 884 -141 ct 884 -131 880 -121 871 -112 ct 860 -99 844 -89 823 -82 ct
-809 -77 789 -73 763 -70 ct p
-764 -79 m 783 -81 799 -85 811 -90 ct 826 -97 838 -105 846 -114 ct 854 -124 858 -133 858 -141 ct
-858 -147 856 -151 853 -154 ct 850 -157 845 -159 838 -159 ct 825 -159 811 -152 797 -139 ct
-782 -125 771 -105 764 -79 ct p ef
-pom
-gr
-gr
-gr
-gr
-gr
-16800 8400 m 16238 8588 l 16238 8213 l 16800 8400 l p ef
-14400 8375 m 16350 8375 l 16350 8425 l 14400 8425 l 14400 8375 l p ef
-13028 6249 m 12578 6399 l 12578 6099 l 13028 6249 l p ef
-1 lw 0 lj 11500 6250 m 12527 6250 l 12527 6249 l 12668 6249 l ps
-tm setmatrix
-0 0 t
-1 1 s
-0 6358 t
-pom
-count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat b4_inc_state restore
-%%PageTrailer
-%%Trailer
-%%EOF
diff --git a/3rdparty/speex/doc/speex_analysis.odg b/3rdparty/speex/doc/speex_analysis.odg
deleted file mode 100644
index 919945d8..00000000
--- a/3rdparty/speex/doc/speex_analysis.odg
+++ /dev/null
Binary files differ
diff --git a/3rdparty/speex/html/index.html b/3rdparty/speex/html/index.html
deleted file mode 100644
index 789a796e..00000000
--- a/3rdparty/speex/html/index.html
+++ /dev/null
@@ -1,215 +0,0 @@
-<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en"><html><head>
-
-
-
-
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-
-
-
-
-
-
-
- <meta name="GENERATOR" content="Mozilla/4.78 [fr] (X11; U; Linux 2.4.17 i686) [Netscape]">
-
-
-
-
-
-
-
- <meta name="Author" content="Jean-Marc Valin">
- <title>The Speex Speech Codec</title>
-
-
-
-
-
-
- </head>
-
-<body text="#000000" bgcolor="#ffffff" link="#0000ef" vlink="#59188e" alink="#ff0000">
-
-<center>
-<img src="speex.png" alt="Speex">
-</center>
-<br>
-<br>
-
-
- <a href="http://sourceforge.net/projects/speex">The Speex project</a>
- aims to build an open-source (LGPL) <A href="patents.html">patent-free</A> voice codec. Unlike
- other codecs like MP3 and <a href="http://www.vorbis.org/">Ogg Vorbis</a>,
-Speex is specially designed for compressing voice at low bit-rates in the
-8-32 kbps/channel range. Possible applications include Voice over IP (VoIP),
- Internet audio streaming, archiving of speech data (e.g. voice mail), and
-audio books. In some sense, it is meant to be complementary to the
-Ogg Vorbis codec.
-<p>If you are interested in participating to the project, contact us at <a href="mailto:speex-devel@lists.sourceforge.net">
- speex-devel@lists.sourceforge.net</a> or <a href="http://lists.sourceforge.net/lists/listinfo/speex-devel">
- join our mailing list</a>. Right now, we are mostly looking for
- developers with signal processing and speech coding knowledge, as well
- as people with knowledge about patents in that field. See the
-<A href="http://sourceforge.net/pm/task.php?group_project_id=19556&group_id=46651&func=browse">task list</A> for more details about what's left to do in Speex<br>
-</p>
-
-
-
-
-<h2>Download</h2>
-
-
-
- You can download Speex from <a href="http://sourceforge.net/project/showfiles.php?group_id=46651">
- here</a>.<br>
-
-
-<h2>Documentation</h2>
-This Speex manual includes information about the
-algorithms used in Speex, the bit-stream, the API and more.
-<br>
-<A href="manual.pdf">Speex manual (PDF)</A>
-<br>
-<A href="manual.ps">Speex manual (Postscript)</A>
-<br>
-<A href="manual/">Speex manual (HTML online)</A>
-<br>
-<A href="manual.tar.gz">Speex manual (HTML tarball)</A>
-<br><br>
-There is also some API documentation generated by Doxygen directly from the header files
-<br>
-<A href="refman.pdf">Speex API (PDF)</A>
-
-<h2>Samples</h2>
-
-You can listen to samples encoded with Speex <A href="/audio/samples/">here</A>
-
-<h2>Who uses Speex</h2>
-
-<A href="http://www.linphone.org">LinPhone</a>: A SIP-based VoIP phone written for GNOME
-<br>
-<A href="http://jzb.rapanden.dk/speex/">Speex XMMS plugin</a> written by <a href="mailto:jzb@rapanden.dk">Jens Burkal</a>
-<br>
-<A href="http://www.openh323.org">OpenH323</a>: An open-source H.323 stack
-<br>
-<A href="http://www.gnomemeeting.org">GnomeMeeting</A>: A H323 Video Conferencing Program
-
-<br><br>
-In development:
-<br>
-<A href="http://www.asteriskpbx.org">Asterisk</a>: An open-source PBX
-
-<h2>News</h2>
-
-<h3>2002/09/04</h3>
-
-Speex 0.8.1 released. This release fixes a bug in the new 0.8 API (function
-speex_mode_query). For those using only speexenc/speexdec, no need to upgrade
-but those using libspeex (directly or through another application) should.
-
-<h3>2002/08/24</h3>
- Speex 0.8.0 released. The speex_decode() function no longer uses the
-'lost' parameter. Applications will need
- to be updated.
-
-<h3>2002/08/09</h3>
- Speex 0.7.0 released. The format of the bit stream has changed once again
-and the bandwidth required has been
- reduced slightly.
-
-<h3>2002/08/01</h3>
-
-Speex 0.6.0 has been released. This is a major release that contains many improvements and lots of bug-fixing. The post-filter that was causing problems throughout 0.5.x was replaced with a new perceptual enhancement system, which sounds better and consume much less CPU. Also many changes to Ogg encoder/decoder, including possibility to see the bit-rate being played/encoded. There is also a discontinuous transmission (DTX) mode. Last but not least, 0.6.0 now reports no error when being run with the valgrind memory debugger.
-
-<h3>2002/07/26</h3>
-
-Speex 0.5.2 is out and brings a number of improvements and bug fixes. First,
-the search has been improved and it is now possible to choose the right
-quality/encoding time tradeoff (--comp option). Is is also possible to pack
-more that one frame in an Ogg packet (--nframes), reducing the overhead for
-low bit-rates. Last but not least: there is now some documentation about
-Speex!
-
-
-<h3>2002/07/17</h3>
-
-Version 0.5.1 is released. This release brings quality improvements at very
-low bit-rate (5.7 kbps) and a new post-filter. VBR should also be a bit
-better though there's still a lot to do. Most of the modes are bit-rate
-compatible with 0.5.0, with the exception of the very low bit-rate (which is
-sometimes used in VBR, so expect some glitches). The source (and probably
-binary) compatibility with 0.5.0 is maintained.
-
-<h3>2002/07/08</h3>
-
-Speex 0.5.0 is out. The most important new feature is Varible Bit-Rate
-(VBR). It can be enabled by using the --vbr option to speexenc. When
-encoding in VBR, the --quality option can still be used. Note VBR
-implementation in this release is experimental and still requires lots of
-tuning.
-
-<h3>2002/06/23</h3>
-
-Speex 0.4.0 is here, adding many more bit-rates to both narrowband and wideband, as
-well as the ability to change bit-rate dynamically from frame to frame. The
-narrowband modes now range from 8 kbps to 18 kbps, while wideband range from
-10 kbps to 28 kbps. There is also a "noise coding" mode at 2 kbps for
-narrowband and 3 kbps for wideband. All this will lead to real Variable
-Bit-Rate (VBR) in the future. Also, worth mentioning the codec latency has
-been reduced from 40 ms to 30 ms (20 ms frames + 10 ms lookahead).
-
-<h3>2002/06/12</h3>
-
-Speex 0.3.0 has been released. There is now a new "low bit-rate" narrowband
-mode for coding speech at 8 kbps. There's also support for big-endian
-machines (untested, please report bugs). Speex files now have real header
-containing information like bit-stream version (revents from playing an
-incompatible bit-stream), sampling rate, bit-rate and user comments. On the
-quality side, the post-filter has been improved and there has been more
-codebook optimization. Note that this release breaks bit-stream
-compatibility with previous releases.
-
-<h3>2002/06/07</h3>
-
-Speex 0.2.0 is out. This is a major release with lots of improvements and
-bugfixes. First, the encoder and decoder can work directly from wav files
-(mono only for now) and the decoder can play directly to soundcard. Also,
-most of the codebooks have been re-trained in order to improve quality (but
-this also breaks format compatibility with previous versions), while
-slightly decreasing complexity. Speex is now able to encode both DTMF and
-music (not as good as Vorbis of course) after bugs were fixed in the pitch
-prediction and LSP quantization. Last but not the least, the perceptual
-post-filter has been improved.
-
-<h3>2002/06/04</h3>
-
-Speex 0.1.2 is out. This adds a perceptual post-filter at the decoder to
-(hopefully) increase quality. It can be enabled with the --pf option to
-speexdec. The Speex format remains the same for both narrowband
-and wideband.
-
-<h3>2002/05/15</h3>
-
-Speex 0.1.0 has been released. Speex now uses the Ogg bitstream (using
-libogg). That means that there is now (limited) bitstream error
-recovery. Also, the narrowband bit-rate has been reduced from 15.7 kbps to
-15.1 kbps and the wideband bit-rate has been reduced from 31.3 kbps to 27.7
-kbps. The quality remains roughly the same for both narrowband and
-wideband. Once again, this breaks compatibility with previous versions.
-
-<hr width="100%" size="2">
-<div align="right"><a href="http://uk.eurorights.org/issues/cd/quick/"><img
-border="0" width="160" height="40" src="badcd002.png"
-alt="Say NO to corrupt audio discs" /></a>
-<br>
-<img src="http://sourceforge.net/sflogo.php?group_id=46651&amp;amp;type=5" alt="SourceForge Logo">
-<br>
-
-<a href="mailto:jean-marc.valin@hermes.usherb.ca">Jean-Mrc Valin</a> <br>
- $Date: 2002/09/16 00:59:10 $</div>
-
-
-
-
-</body></html>
diff --git a/3rdparty/speex/html/patents.html b/3rdparty/speex/html/patents.html
deleted file mode 100644
index d81c961e..00000000
--- a/3rdparty/speex/html/patents.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>Speex and patents</title>
-
- <meta name="author" content="Jean-Marc Valin">
-</head>
- <body>
-
-<div align="center">
-<h1>Position regarding patents</h1>
-
-<div align="left">The goal of Speex is to provide a codec that is open-source
-(released under the <a href="http://www.gnu.org/licenses/lgpl.html">LGPL</a>)
-and that can be used in open-source software. This implies that it also has
-to be free from patent restrictions. Unfortunately, the field of speech coding
-known to be a real patent minefield and to make the matter worse, each country
-has its own patent laws and list of granted patents so tracking them all
-would be next to impossible. This is why we cannot provide an absolute warranty
-that Speex is indeed completely patent-free.<br>
-<br>
- That being said, we are doing our best to keep away from known patents and
-we do not patent the algorithms we use. That's about all we can do about it.
-If you are aware of a patent issue with Speex, please <a
- href="mailto:speex-devel@lists.sourceforge.net">let us know</a>.<br>
- <br>
-Normally there shouldn't be any problem when you use Speex. However for the
-reasons explained above, if you are thinking about using Speex commercially,
-we strongly suggest that you have a closer look at patent issues with respect
-to your country. Note that this is not specific to Speex, since many "standardized"
-codecs have an unclear patent status (like <a
- href="http://www.mp3-tech.org/patents.html">MP3</a>, <a
- href="http://kbs.cs.tu-berlin.de/%7Ejutta/toast.html">GSM</a> and probably
-others), not to mention the risks of a previously unknown patent holder claiming
-rights on a standardized codec long after standardization (<a href="http://lpf.ai.mit.edu/Patents/Gif/Gif.html">GIF</a>, <a href="http://www.itworld.com/Man/2687/020719jpegpatent/">JPEG</a>).<br>
-</div>
- </div>
-</body>
-</html>
diff --git a/3rdparty/speex/html/speex.png b/3rdparty/speex/html/speex.png
deleted file mode 100644
index 4db28733..00000000
--- a/3rdparty/speex/html/speex.png
+++ /dev/null
Binary files differ
diff --git a/3rdparty/speex/html/speex.webprj b/3rdparty/speex/html/speex.webprj
deleted file mode 100644
index 23139f61..00000000
--- a/3rdparty/speex/html/speex.webprj
+++ /dev/null
@@ -1,7 +0,0 @@
-<!DOCTYPE webproject ><webproject>
- <project usePreviewPrefix="0" previewPrefix="" type="Local" name="speex" >
- <upload/>
- <author></author>
- <email></email>
- </project>
-</webproject>
diff --git a/3rdparty/speex/html/speex.xcf b/3rdparty/speex/html/speex.xcf
deleted file mode 100644
index e5547123..00000000
--- a/3rdparty/speex/html/speex.xcf
+++ /dev/null
Binary files differ
diff --git a/3rdparty/speex/include/Makefile.am b/3rdparty/speex/include/Makefile.am
deleted file mode 100644
index 09613b63..00000000
--- a/3rdparty/speex/include/Makefile.am
+++ /dev/null
@@ -1,2 +0,0 @@
-
-SUBDIRS = speex
diff --git a/3rdparty/speex/include/speex/Makefile.am b/3rdparty/speex/include/speex/Makefile.am
deleted file mode 100644
index 08cd88b8..00000000
--- a/3rdparty/speex/include/speex/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-nodist_pkginclude_HEADERS = speex_config_types.h
-
-pkginclude_HEADERS = speex.h \
- speex_types.h \
- speex_bits.h \
- speex_header.h \
- speex_callbacks.h \
- speex_stereo.h \
- speex_preprocess.h \
- speex_jitter.h \
- speex_echo.h \
- speex_resampler.h
-
diff --git a/3rdparty/speex/include/speex/speex.h b/3rdparty/speex/include/speex/speex.h
deleted file mode 100644
index f17fa19d..00000000
--- a/3rdparty/speex/include/speex/speex.h
+++ /dev/null
@@ -1,425 +0,0 @@
-/* Copyright (C) 2002-2006 Jean-Marc Valin*/
-/**
- @file speex.h
- @brief Describes the different modes of the codec
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifndef SPEEX_H
-#define SPEEX_H
-/** @defgroup Codec Speex encoder and decoder
- * This is the Speex codec itself.
- * @{
- */
-
-#include "speex/speex_bits.h"
-#include "speex/speex_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Values allowed for *ctl() requests */
-
-/** Set enhancement on/off (decoder only) */
-#define SPEEX_SET_ENH 0
-/** Get enhancement state (decoder only) */
-#define SPEEX_GET_ENH 1
-
-/*Would be SPEEX_SET_FRAME_SIZE, but it's (currently) invalid*/
-/** Obtain frame size used by encoder/decoder */
-#define SPEEX_GET_FRAME_SIZE 3
-
-/** Set quality value */
-#define SPEEX_SET_QUALITY 4
-/** Get current quality setting */
-/* #define SPEEX_GET_QUALITY 5 -- Doesn't make much sense, does it? */
-
-/** Set sub-mode to use */
-#define SPEEX_SET_MODE 6
-/** Get current sub-mode in use */
-#define SPEEX_GET_MODE 7
-
-/** Set low-band sub-mode to use (wideband only)*/
-#define SPEEX_SET_LOW_MODE 8
-/** Get current low-band mode in use (wideband only)*/
-#define SPEEX_GET_LOW_MODE 9
-
-/** Set high-band sub-mode to use (wideband only)*/
-#define SPEEX_SET_HIGH_MODE 10
-/** Get current high-band mode in use (wideband only)*/
-#define SPEEX_GET_HIGH_MODE 11
-
-/** Set VBR on (1) or off (0) */
-#define SPEEX_SET_VBR 12
-/** Get VBR status (1 for on, 0 for off) */
-#define SPEEX_GET_VBR 13
-
-/** Set quality value for VBR encoding (0-10) */
-#define SPEEX_SET_VBR_QUALITY 14
-/** Get current quality value for VBR encoding (0-10) */
-#define SPEEX_GET_VBR_QUALITY 15
-
-/** Set complexity of the encoder (0-10) */
-#define SPEEX_SET_COMPLEXITY 16
-/** Get current complexity of the encoder (0-10) */
-#define SPEEX_GET_COMPLEXITY 17
-
-/** Set bit-rate used by the encoder (or lower) */
-#define SPEEX_SET_BITRATE 18
-/** Get current bit-rate used by the encoder or decoder */
-#define SPEEX_GET_BITRATE 19
-
-/** Define a handler function for in-band Speex request*/
-#define SPEEX_SET_HANDLER 20
-
-/** Define a handler function for in-band user-defined request*/
-#define SPEEX_SET_USER_HANDLER 22
-
-/** Set sampling rate used in bit-rate computation */
-#define SPEEX_SET_SAMPLING_RATE 24
-/** Get sampling rate used in bit-rate computation */
-#define SPEEX_GET_SAMPLING_RATE 25
-
-/** Reset the encoder/decoder memories to zero*/
-#define SPEEX_RESET_STATE 26
-
-/** Get VBR info (mostly used internally) */
-#define SPEEX_GET_RELATIVE_QUALITY 29
-
-/** Set VAD status (1 for on, 0 for off) */
-#define SPEEX_SET_VAD 30
-
-/** Get VAD status (1 for on, 0 for off) */
-#define SPEEX_GET_VAD 31
-
-/** Set Average Bit-Rate (ABR) to n bits per seconds */
-#define SPEEX_SET_ABR 32
-/** Get Average Bit-Rate (ABR) setting (in bps) */
-#define SPEEX_GET_ABR 33
-
-/** Set DTX status (1 for on, 0 for off) */
-#define SPEEX_SET_DTX 34
-/** Get DTX status (1 for on, 0 for off) */
-#define SPEEX_GET_DTX 35
-
-/** Set submode encoding in each frame (1 for yes, 0 for no, setting to no breaks the standard) */
-#define SPEEX_SET_SUBMODE_ENCODING 36
-/** Get submode encoding in each frame */
-#define SPEEX_GET_SUBMODE_ENCODING 37
-
-/*#define SPEEX_SET_LOOKAHEAD 38*/
-/** Returns the lookahead used by Speex */
-#define SPEEX_GET_LOOKAHEAD 39
-
-/** Sets tuning for packet-loss concealment (expected loss rate) */
-#define SPEEX_SET_PLC_TUNING 40
-/** Gets tuning for PLC */
-#define SPEEX_GET_PLC_TUNING 41
-
-/** Sets the max bit-rate allowed in VBR mode */
-#define SPEEX_SET_VBR_MAX_BITRATE 42
-/** Gets the max bit-rate allowed in VBR mode */
-#define SPEEX_GET_VBR_MAX_BITRATE 43
-
-/** Turn on/off input/output high-pass filtering */
-#define SPEEX_SET_HIGHPASS 44
-/** Get status of input/output high-pass filtering */
-#define SPEEX_GET_HIGHPASS 45
-
-
-/* Preserving compatibility:*/
-/** Equivalent to SPEEX_SET_ENH */
-#define SPEEX_SET_PF 0
-/** Equivalent to SPEEX_GET_ENH */
-#define SPEEX_GET_PF 1
-
-
-
-
-/* Values allowed for mode queries */
-/** Query the frame size of a mode */
-#define SPEEX_MODE_FRAME_SIZE 0
-
-/** Query the size of an encoded frame for a particular sub-mode */
-#define SPEEX_SUBMODE_BITS_PER_FRAME 1
-
-
-
-/** Get major Speex version */
-#define SPEEX_LIB_GET_MAJOR_VERSION 1
-/** Get minor Speex version */
-#define SPEEX_LIB_GET_MINOR_VERSION 3
-/** Get micro Speex version */
-#define SPEEX_LIB_GET_MICRO_VERSION 5
-/** Get extra Speex version */
-#define SPEEX_LIB_GET_EXTRA_VERSION 7
-/** Get Speex version string */
-#define SPEEX_LIB_GET_VERSION_STRING 9
-
-/*#define SPEEX_LIB_SET_ALLOC_FUNC 10
-#define SPEEX_LIB_GET_ALLOC_FUNC 11
-#define SPEEX_LIB_SET_FREE_FUNC 12
-#define SPEEX_LIB_GET_FREE_FUNC 13
-
-#define SPEEX_LIB_SET_WARNING_FUNC 14
-#define SPEEX_LIB_GET_WARNING_FUNC 15
-#define SPEEX_LIB_SET_ERROR_FUNC 16
-#define SPEEX_LIB_GET_ERROR_FUNC 17
-*/
-
-/** Number of defined modes in Speex */
-#define SPEEX_NB_MODES 3
-
-/** modeID for the defined narrowband mode */
-#define SPEEX_MODEID_NB 0
-
-/** modeID for the defined wideband mode */
-#define SPEEX_MODEID_WB 1
-
-/** modeID for the defined ultra-wideband mode */
-#define SPEEX_MODEID_UWB 2
-
-#ifdef EPIC_48K
-/** modeID for the Epic 48K mode */
-#define SPEEX_MODEID_NB_48K 1000
-#endif
-
-struct SpeexMode;
-
-
-/* Prototypes for mode function pointers */
-
-/** Encoder state initialization function */
-typedef void *(*encoder_init_func)(const struct SpeexMode *mode);
-
-/** Encoder state destruction function */
-typedef void (*encoder_destroy_func)(void *st);
-
-/** Main encoding function */
-typedef int (*encode_func)(void *state, void *in, SpeexBits *bits);
-
-/** Function for controlling the encoder options */
-typedef int (*encoder_ctl_func)(void *state, int request, void *ptr);
-
-/** Decoder state initialization function */
-typedef void *(*decoder_init_func)(const struct SpeexMode *mode);
-
-/** Decoder state destruction function */
-typedef void (*decoder_destroy_func)(void *st);
-
-/** Main decoding function */
-typedef int (*decode_func)(void *state, SpeexBits *bits, void *out);
-
-/** Function for controlling the decoder options */
-typedef int (*decoder_ctl_func)(void *state, int request, void *ptr);
-
-
-/** Query function for a mode */
-typedef int (*mode_query_func)(const void *mode, int request, void *ptr);
-
-/** Struct defining a Speex mode */
-typedef struct SpeexMode {
- /** Pointer to the low-level mode data */
- const void *mode;
-
- /** Pointer to the mode query function */
- mode_query_func query;
-
- /** The name of the mode (you should not rely on this to identify the mode)*/
- const char *modeName;
-
- /**ID of the mode*/
- int modeID;
-
- /**Version number of the bitstream (incremented every time we break
- bitstream compatibility*/
- int bitstream_version;
-
- /** Pointer to encoder initialization function */
- encoder_init_func enc_init;
-
- /** Pointer to encoder destruction function */
- encoder_destroy_func enc_destroy;
-
- /** Pointer to frame encoding function */
- encode_func enc;
-
- /** Pointer to decoder initialization function */
- decoder_init_func dec_init;
-
- /** Pointer to decoder destruction function */
- decoder_destroy_func dec_destroy;
-
- /** Pointer to frame decoding function */
- decode_func dec;
-
- /** ioctl-like requests for encoder */
- encoder_ctl_func enc_ctl;
-
- /** ioctl-like requests for decoder */
- decoder_ctl_func dec_ctl;
-
-} SpeexMode;
-
-/**
- * Returns a handle to a newly created Speex encoder state structure. For now,
- * the "mode" argument can be &nb_mode or &wb_mode . In the future, more modes
- * may be added. Note that for now if you have more than one channels to
- * encode, you need one state per channel.
- *
- * @param mode The mode to use (either speex_nb_mode or speex_wb.mode)
- * @return A newly created encoder state or NULL if state allocation fails
- */
-void *speex_encoder_init(const SpeexMode *mode);
-
-/** Frees all resources associated to an existing Speex encoder state.
- * @param state Encoder state to be destroyed */
-void speex_encoder_destroy(void *state);
-
-/** Uses an existing encoder state to encode one frame of speech pointed to by
- "in". The encoded bit-stream is saved in "bits".
- @param state Encoder state
- @param in Frame that will be encoded with a +-2^15 range. This data MAY be
- overwritten by the encoder and should be considered uninitialised
- after the call.
- @param bits Bit-stream where the data will be written
- @return 0 if frame needs not be transmitted (DTX only), 1 otherwise
- */
-int speex_encode(void *state, float *in, SpeexBits *bits);
-
-/** Uses an existing encoder state to encode one frame of speech pointed to by
- "in". The encoded bit-stream is saved in "bits".
- @param state Encoder state
- @param in Frame that will be encoded with a +-2^15 range
- @param bits Bit-stream where the data will be written
- @return 0 if frame needs not be transmitted (DTX only), 1 otherwise
- */
-int speex_encode_int(void *state, spx_int16_t *in, SpeexBits *bits);
-
-/** Used like the ioctl function to control the encoder parameters
- *
- * @param state Encoder state
- * @param request ioctl-type request (one of the SPEEX_* macros)
- * @param ptr Data exchanged to-from function
- * @return 0 if no error, -1 if request in unknown, -2 for invalid parameter
- */
-int speex_encoder_ctl(void *state, int request, void *ptr);
-
-
-/** Returns a handle to a newly created decoder state structure. For now,
- * the mode argument can be &nb_mode or &wb_mode . In the future, more modes
- * may be added. Note that for now if you have more than one channels to
- * decode, you need one state per channel.
- *
- * @param mode Speex mode (one of speex_nb_mode or speex_wb_mode)
- * @return A newly created decoder state or NULL if state allocation fails
- */
-void *speex_decoder_init(const SpeexMode *mode);
-
-/** Frees all resources associated to an existing decoder state.
- *
- * @param state State to be destroyed
- */
-void speex_decoder_destroy(void *state);
-
-/** Uses an existing decoder state to decode one frame of speech from
- * bit-stream bits. The output speech is saved written to out.
- *
- * @param state Decoder state
- * @param bits Bit-stream from which to decode the frame (NULL if the packet was lost)
- * @param out Where to write the decoded frame
- * @return return status (0 for no error, -1 for end of stream, -2 corrupt stream)
- */
-int speex_decode(void *state, SpeexBits *bits, float *out);
-
-/** Uses an existing decoder state to decode one frame of speech from
- * bit-stream bits. The output speech is saved written to out.
- *
- * @param state Decoder state
- * @param bits Bit-stream from which to decode the frame (NULL if the packet was lost)
- * @param out Where to write the decoded frame
- * @return return status (0 for no error, -1 for end of stream, -2 corrupt stream)
- */
-int speex_decode_int(void *state, SpeexBits *bits, spx_int16_t *out);
-
-/** Used like the ioctl function to control the encoder parameters
- *
- * @param state Decoder state
- * @param request ioctl-type request (one of the SPEEX_* macros)
- * @param ptr Data exchanged to-from function
- * @return 0 if no error, -1 if request in unknown, -2 for invalid parameter
- */
-int speex_decoder_ctl(void *state, int request, void *ptr);
-
-
-/** Query function for mode information
- *
- * @param mode Speex mode
- * @param request ioctl-type request (one of the SPEEX_* macros)
- * @param ptr Data exchanged to-from function
- * @return 0 if no error, -1 if request in unknown, -2 for invalid parameter
- */
-int speex_mode_query(const SpeexMode *mode, int request, void *ptr);
-
-/** Functions for controlling the behavior of libspeex
- * @param request ioctl-type request (one of the SPEEX_LIB_* macros)
- * @param ptr Data exchanged to-from function
- * @return 0 if no error, -1 if request in unknown, -2 for invalid parameter
- */
-int speex_lib_ctl(int request, void *ptr);
-
-/** Default narrowband mode */
-extern const SpeexMode speex_nb_mode;
-
-/** Default wideband mode */
-extern const SpeexMode speex_wb_mode;
-
-/** Default "ultra-wideband" mode */
-extern const SpeexMode speex_uwb_mode;
-
-#ifdef EPIC_48K
-/** 4.8 kbps narrowband mode */
-extern const SpeexMode speex_nb_48k_mode;
-#endif
-
-/** List of all modes available */
-extern const SpeexMode * const speex_mode_list[SPEEX_NB_MODES];
-
-/** Obtain one of the modes available */
-const SpeexMode * speex_lib_get_mode (int mode);
-
-#ifdef __cplusplus
-}
-#endif
-
-/** @}*/
-#endif
diff --git a/3rdparty/speex/include/speex/speex_bits.h b/3rdparty/speex/include/speex/speex_bits.h
deleted file mode 100644
index 88334c42..00000000
--- a/3rdparty/speex/include/speex/speex_bits.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin */
-/**
- @file speex_bits.h
- @brief Handles bit packing/unpacking
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifndef BITS_H
-#define BITS_H
-/** @defgroup SpeexBits SpeexBits: Bit-stream manipulations
- * This is the structure that holds the bit-stream when encoding or decoding
- * with Speex. It allows some manipulations as well.
- * @{
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Bit-packing data structure representing (part of) a bit-stream. */
-typedef struct SpeexBits {
- char *chars; /**< "raw" data */
- int nbBits; /**< Total number of bits stored in the stream*/
- int charPtr; /**< Position of the byte "cursor" */
- int bitPtr; /**< Position of the bit "cursor" within the current char */
- int owner; /**< Does the struct "own" the "raw" buffer (member "chars") */
- int overflow;/**< Set to one if we try to read past the valid data */
- int buf_size;/**< Allocated size for buffer */
- int reserved1; /**< Reserved for future use */
- void *reserved2; /**< Reserved for future use */
-} SpeexBits;
-
-/** Initializes and allocates resources for a SpeexBits struct */
-void speex_bits_init(SpeexBits *bits);
-
-/** Initializes SpeexBits struct using a pre-allocated buffer*/
-void speex_bits_init_buffer(SpeexBits *bits, void *buff, int buf_size);
-
-/** Frees all resources associated to a SpeexBits struct. Right now this does nothing since no resources are allocated, but this could change in the future.*/
-void speex_bits_destroy(SpeexBits *bits);
-
-/** Resets bits to initial value (just after initialization, erasing content)*/
-void speex_bits_reset(SpeexBits *bits);
-
-/** Rewind the bit-stream to the beginning (ready for read) without erasing the content */
-void speex_bits_rewind(SpeexBits *bits);
-
-/** Initializes the bit-stream from the data in an area of memory */
-void speex_bits_read_from(SpeexBits *bits, char *bytes, int len);
-
-/** Append bytes to the bit-stream
- *
- * @param bits Bit-stream to operate on
- * @param bytes pointer to the bytes what will be appended
- * @param len Number of bytes of append
- */
-void speex_bits_read_whole_bytes(SpeexBits *bits, char *bytes, int len);
-
-/** Write the content of a bit-stream to an area of memory
- *
- * @param bits Bit-stream to operate on
- * @param bytes Memory location where to write the bits
- * @param max_len Maximum number of bytes to write (i.e. size of the "bytes" buffer)
- * @return Number of bytes written to the "bytes" buffer
-*/
-int speex_bits_write(SpeexBits *bits, char *bytes, int max_len);
-
-/** Like speex_bits_write, but writes only the complete bytes in the stream. Also removes the written bytes from the stream */
-int speex_bits_write_whole_bytes(SpeexBits *bits, char *bytes, int max_len);
-
-/** Append bits to the bit-stream
- * @param bits Bit-stream to operate on
- * @param data Value to append as integer
- * @param nbBits number of bits to consider in "data"
- */
-void speex_bits_pack(SpeexBits *bits, int data, int nbBits);
-
-/** Interpret the next bits in the bit-stream as a signed integer
- *
- * @param bits Bit-stream to operate on
- * @param nbBits Number of bits to interpret
- * @return A signed integer represented by the bits read
- */
-int speex_bits_unpack_signed(SpeexBits *bits, int nbBits);
-
-/** Interpret the next bits in the bit-stream as an unsigned integer
- *
- * @param bits Bit-stream to operate on
- * @param nbBits Number of bits to interpret
- * @return An unsigned integer represented by the bits read
- */
-unsigned int speex_bits_unpack_unsigned(SpeexBits *bits, int nbBits);
-
-/** Returns the number of bytes in the bit-stream, including the last one even if it is not "full"
- *
- * @param bits Bit-stream to operate on
- * @return Number of bytes in the stream
- */
-int speex_bits_nbytes(SpeexBits *bits);
-
-/** Same as speex_bits_unpack_unsigned, but without modifying the cursor position
- *
- * @param bits Bit-stream to operate on
- * @param nbBits Number of bits to look for
- * @return Value of the bits peeked, interpreted as unsigned
- */
-unsigned int speex_bits_peek_unsigned(SpeexBits *bits, int nbBits);
-
-/** Get the value of the next bit in the stream, without modifying the
- * "cursor" position
- *
- * @param bits Bit-stream to operate on
- * @return Value of the bit peeked (one bit only)
- */
-int speex_bits_peek(SpeexBits *bits);
-
-/** Advances the position of the "bit cursor" in the stream
- *
- * @param bits Bit-stream to operate on
- * @param n Number of bits to advance
- */
-void speex_bits_advance(SpeexBits *bits, int n);
-
-/** Returns the number of bits remaining to be read in a stream
- *
- * @param bits Bit-stream to operate on
- * @return Number of bits that can still be read from the stream
- */
-int speex_bits_remaining(SpeexBits *bits);
-
-/** Insert a terminator so that the data can be sent as a packet while auto-detecting
- * the number of frames in each packet
- *
- * @param bits Bit-stream to operate on
- */
-void speex_bits_insert_terminator(SpeexBits *bits);
-
-#ifdef __cplusplus
-}
-#endif
-
-/* @} */
-#endif
diff --git a/3rdparty/speex/include/speex/speex_callbacks.h b/3rdparty/speex/include/speex/speex_callbacks.h
deleted file mode 100644
index 7892e2f9..00000000
--- a/3rdparty/speex/include/speex/speex_callbacks.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin*/
-/**
- @file speex_callbacks.h
- @brief Describes callback handling and in-band signalling
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifndef SPEEX_CALLBACKS_H
-#define SPEEX_CALLBACKS_H
-/** @defgroup SpeexCallbacks Various definitions for Speex callbacks supported by the decoder.
- * @{
- */
-
-#include "speex.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Total number of callbacks */
-#define SPEEX_MAX_CALLBACKS 16
-
-/* Describes all the in-band requests */
-
-/*These are 1-bit requests*/
-/** Request for perceptual enhancement (1 for on, 0 for off) */
-#define SPEEX_INBAND_ENH_REQUEST 0
-/** Reserved */
-#define SPEEX_INBAND_RESERVED1 1
-
-/*These are 4-bit requests*/
-/** Request for a mode change */
-#define SPEEX_INBAND_MODE_REQUEST 2
-/** Request for a low mode change */
-#define SPEEX_INBAND_LOW_MODE_REQUEST 3
-/** Request for a high mode change */
-#define SPEEX_INBAND_HIGH_MODE_REQUEST 4
-/** Request for VBR (1 on, 0 off) */
-#define SPEEX_INBAND_VBR_QUALITY_REQUEST 5
-/** Request to be sent acknowledge */
-#define SPEEX_INBAND_ACKNOWLEDGE_REQUEST 6
-/** Request for VBR (1 for on, 0 for off) */
-#define SPEEX_INBAND_VBR_REQUEST 7
-
-/*These are 8-bit requests*/
-/** Send a character in-band */
-#define SPEEX_INBAND_CHAR 8
-/** Intensity stereo information */
-#define SPEEX_INBAND_STEREO 9
-
-/*These are 16-bit requests*/
-/** Transmit max bit-rate allowed */
-#define SPEEX_INBAND_MAX_BITRATE 10
-
-/*These are 32-bit requests*/
-/** Acknowledge packet reception */
-#define SPEEX_INBAND_ACKNOWLEDGE 12
-
-/** Callback function type */
-typedef int (*speex_callback_func)(SpeexBits *bits, void *state, void *data);
-
-/** Callback information */
-typedef struct SpeexCallback {
- int callback_id; /**< ID associated to the callback */
- speex_callback_func func; /**< Callback handler function */
- void *data; /**< Data that will be sent to the handler */
- void *reserved1; /**< Reserved for future use */
- int reserved2; /**< Reserved for future use */
-} SpeexCallback;
-
-/** Handle in-band request */
-int speex_inband_handler(SpeexBits *bits, SpeexCallback *callback_list, void *state);
-
-/** Standard handler for mode request (change mode, no questions asked) */
-int speex_std_mode_request_handler(SpeexBits *bits, void *state, void *data);
-
-/** Standard handler for high mode request (change high mode, no questions asked) */
-int speex_std_high_mode_request_handler(SpeexBits *bits, void *state, void *data);
-
-/** Standard handler for in-band characters (write to stderr) */
-int speex_std_char_handler(SpeexBits *bits, void *state, void *data);
-
-/** Default handler for user-defined requests: in this case, just ignore */
-int speex_default_user_handler(SpeexBits *bits, void *state, void *data);
-
-
-
-/** Standard handler for low mode request (change low mode, no questions asked) */
-int speex_std_low_mode_request_handler(SpeexBits *bits, void *state, void *data);
-
-/** Standard handler for VBR request (Set VBR, no questions asked) */
-int speex_std_vbr_request_handler(SpeexBits *bits, void *state, void *data);
-
-/** Standard handler for enhancer request (Turn ehnancer on/off, no questions asked) */
-int speex_std_enh_request_handler(SpeexBits *bits, void *state, void *data);
-
-/** Standard handler for VBR quality request (Set VBR quality, no questions asked) */
-int speex_std_vbr_quality_request_handler(SpeexBits *bits, void *state, void *data);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-/** @} */
-#endif
diff --git a/3rdparty/speex/include/speex/speex_config_types.h.in b/3rdparty/speex/include/speex/speex_config_types.h.in
deleted file mode 100644
index 3fab2ae4..00000000
--- a/3rdparty/speex/include/speex/speex_config_types.h.in
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef __SPEEX_TYPES_H__
-#define __SPEEX_TYPES_H__
-
-/* these are filled in by configure */
-typedef @SIZE16@ spx_int16_t;
-typedef unsigned @SIZE16@ spx_uint16_t;
-typedef @SIZE32@ spx_int32_t;
-typedef unsigned @SIZE32@ spx_uint32_t;
-
-#endif
-
diff --git a/3rdparty/speex/include/speex/speex_echo.h b/3rdparty/speex/include/speex/speex_echo.h
deleted file mode 100644
index 44358c73..00000000
--- a/3rdparty/speex/include/speex/speex_echo.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/* Copyright (C) Jean-Marc Valin */
-/**
- @file speex_echo.h
- @brief Echo cancellation
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef SPEEX_ECHO_H
-#define SPEEX_ECHO_H
-/** @defgroup SpeexEchoState SpeexEchoState: Acoustic echo canceller
- * This is the acoustic echo canceller module.
- * @{
- */
-#include "speex/speex_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Obtain frame size used by the AEC */
-#define SPEEX_ECHO_GET_FRAME_SIZE 3
-
-/** Set sampling rate */
-#define SPEEX_ECHO_SET_SAMPLING_RATE 24
-/** Get sampling rate */
-#define SPEEX_ECHO_GET_SAMPLING_RATE 25
-
-/** Internal echo canceller state. Should never be accessed directly. */
-struct SpeexEchoState_;
-
-/** @class SpeexEchoState
- * This holds the state of the echo canceller. You need one per channel.
-*/
-
-/** Internal echo canceller state. Should never be accessed directly. */
-typedef struct SpeexEchoState_ SpeexEchoState;
-
-/** Creates a new echo canceller state
- * @param frame_size Number of samples to process at one time (should correspond to 10-20 ms)
- * @param filter_length Number of samples of echo to cancel (should generally correspond to 100-500 ms)
- * @return Newly-created echo canceller state
- */
-SpeexEchoState *speex_echo_state_init(int frame_size, int filter_length);
-
-/** Destroys an echo canceller state
- * @param st Echo canceller state
-*/
-void speex_echo_state_destroy(SpeexEchoState *st);
-
-/** Performs echo cancellation a frame, based on the audio sent to the speaker (no delay is added
- * to playback ni this form)
- *
- * @param st Echo canceller state
- * @param rec signal from the microphone (near end + far end echo)
- * @param play Signal played to the speaker (received from far end)
- * @param out Returns near-end signal with echo removed
- */
-void speex_echo_cancellation(SpeexEchoState *st, const spx_int16_t *rec, const spx_int16_t *play, spx_int16_t *out);
-
-/** Performs echo cancellation a frame (deprecated) */
-void speex_echo_cancel(SpeexEchoState *st, const spx_int16_t *rec, const spx_int16_t *play, spx_int16_t *out, spx_int32_t *Yout);
-
-/** Perform echo cancellation using internal playback buffer, which is delayed by two frames
- * to account for the delay introduced by most soundcards (but it could be off!)
- * @param st Echo canceller state
- * @param rec signal from the microphone (near end + far end echo)
- * @param out Returns near-end signal with echo removed
-*/
-void speex_echo_capture(SpeexEchoState *st, const spx_int16_t *rec, spx_int16_t *out);
-
-/** Let the echo canceller know that a frame was just queued to the soundcard
- * @param st Echo canceller state
- * @param play Signal played to the speaker (received from far end)
-*/
-void speex_echo_playback(SpeexEchoState *st, const spx_int16_t *play);
-
-/** Reset the echo canceller to its original state
- * @param st Echo canceller state
- */
-void speex_echo_state_reset(SpeexEchoState *st);
-
-/** Used like the ioctl function to control the echo canceller parameters
- *
- * @param st Echo canceller state
- * @param request ioctl-type request (one of the SPEEX_ECHO_* macros)
- * @param ptr Data exchanged to-from function
- * @return 0 if no error, -1 if request in unknown
- */
-int speex_echo_ctl(SpeexEchoState *st, int request, void *ptr);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-/** @}*/
-#endif
diff --git a/3rdparty/speex/include/speex/speex_header.h b/3rdparty/speex/include/speex/speex_header.h
deleted file mode 100644
index 54164596..00000000
--- a/3rdparty/speex/include/speex/speex_header.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin */
-/**
- @file speex_header.h
- @brief Describes the Speex header
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-
-#ifndef SPEEX_HEADER_H
-#define SPEEX_HEADER_H
-/** @defgroup SpeexHeader SpeexHeader: Makes it easy to write/parse an Ogg/Speex header
- * This is the Speex header for the Ogg encapsulation. You don't need that if you just use RTP.
- * @{
- */
-
-#include "speex/speex_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct SpeexMode;
-
-/** Length of the Speex header identifier */
-#define SPEEX_HEADER_STRING_LENGTH 8
-
-/** Maximum number of characters for encoding the Speex version number in the header */
-#define SPEEX_HEADER_VERSION_LENGTH 20
-
-/** Speex header info for file-based formats */
-typedef struct SpeexHeader {
- char speex_string[SPEEX_HEADER_STRING_LENGTH]; /**< Identifies a Speex bit-stream, always set to "Speex " */
- char speex_version[SPEEX_HEADER_VERSION_LENGTH]; /**< Speex version */
- spx_int32_t speex_version_id; /**< Version for Speex (for checking compatibility) */
- spx_int32_t header_size; /**< Total size of the header ( sizeof(SpeexHeader) ) */
- spx_int32_t rate; /**< Sampling rate used */
- spx_int32_t mode; /**< Mode used (0 for narrowband, 1 for wideband) */
- spx_int32_t mode_bitstream_version; /**< Version ID of the bit-stream */
- spx_int32_t nb_channels; /**< Number of channels encoded */
- spx_int32_t bitrate; /**< Bit-rate used */
- spx_int32_t frame_size; /**< Size of frames */
- spx_int32_t vbr; /**< 1 for a VBR encoding, 0 otherwise */
- spx_int32_t frames_per_packet; /**< Number of frames stored per Ogg packet */
- spx_int32_t extra_headers; /**< Number of additional headers after the comments */
- spx_int32_t reserved1; /**< Reserved for future use, must be zero */
- spx_int32_t reserved2; /**< Reserved for future use, must be zero */
-} SpeexHeader;
-
-/** Initializes a SpeexHeader using basic information */
-void speex_init_header(SpeexHeader *header, int rate, int nb_channels, const struct SpeexMode *m);
-
-/** Creates the header packet from the header itself (mostly involves endianness conversion) */
-char *speex_header_to_packet(SpeexHeader *header, int *size);
-
-/** Creates a SpeexHeader from a packet */
-SpeexHeader *speex_packet_to_header(char *packet, int size);
-
-#ifdef __cplusplus
-}
-#endif
-
-/** @} */
-#endif
diff --git a/3rdparty/speex/include/speex/speex_jitter.h b/3rdparty/speex/include/speex/speex_jitter.h
deleted file mode 100644
index 570e22b1..00000000
--- a/3rdparty/speex/include/speex/speex_jitter.h
+++ /dev/null
@@ -1,192 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin */
-/**
- @file speex_jitter.h
- @brief Adaptive jitter buffer for Speex
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifndef SPEEX_JITTER_H
-#define SPEEX_JITTER_H
-/** @defgroup JitterBuffer JitterBuffer: Adaptive jitter buffer
- * This is the jitter buffer that reorders UDP/RTP packets and adjusts the buffer size
- * to maintain good quality and low latency.
- * @{
- */
-
-#include "speex.h"
-#include "speex_bits.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Generic adaptive jitter buffer state */
-struct JitterBuffer_;
-
-/** Generic adaptive jitter buffer state */
-typedef struct JitterBuffer_ JitterBuffer;
-
-/** Definition of an incoming packet */
-typedef struct _JitterBufferPacket JitterBufferPacket;
-
-/** Definition of an incoming packet */
-struct _JitterBufferPacket {
- char *data; /**< Data bytes contained in the packet */
- spx_uint32_t len; /**< Length of the packet in bytes */
- spx_uint32_t timestamp; /**< Timestamp for the packet */
- spx_uint32_t span; /**< Time covered by the packet (same units as timestamp) */
-};
-
-/** Packet has been retrieved */
-#define JITTER_BUFFER_OK 0
-/** Packet is missing */
-#define JITTER_BUFFER_MISSING 1
-/** Packet is incomplete (does not cover the entive tick */
-#define JITTER_BUFFER_INCOMPLETE 2
-/** There was an error in the jitter buffer */
-#define JITTER_BUFFER_INTERNAL_ERROR -1
-/** Invalid argument */
-#define JITTER_BUFFER_BAD_ARGUMENT -2
-
-
-/** Set minimum amount of extra buffering required (margin) */
-#define JITTER_BUFFER_SET_MARGIN 0
-/** Get minimum amount of extra buffering required (margin) */
-#define JITTER_BUFFER_GET_MARGIN 1
-/* JITTER_BUFFER_SET_AVALIABLE_COUNT wouldn't make sense */
-/** Get the amount of avaliable packets currently buffered */
-#define JITTER_BUFFER_GET_AVALIABLE_COUNT 3
-
-#define JITTER_BUFFER_ADJUST_INTERPOLATE -1
-#define JITTER_BUFFER_ADJUST_OK 0
-#define JITTER_BUFFER_ADJUST_DROP 1
-
-/** Initialises jitter buffer
- *
- * @param tick Number of samples per "tick", i.e. the time period of the elements that will be retrieved
- * @return Newly created jitter buffer state
- */
-JitterBuffer *jitter_buffer_init(int tick);
-
-/** Restores jitter buffer to its original state
- *
- * @param jitter Jitter buffer state
- */
-void jitter_buffer_reset(JitterBuffer *jitter);
-
-/** Destroys jitter buffer
- *
- * @param jitter Jitter buffer state
- */
-void jitter_buffer_destroy(JitterBuffer *jitter);
-
-/** Put one packet into the jitter buffer
- *
- * @param jitter Jitter buffer state
- * @param packet Incoming packet
-*/
-void jitter_buffer_put(JitterBuffer *jitter, const JitterBufferPacket *packet);
-
-/** Get one packet from the jitter buffer
- *
- * @param jitter Jitter buffer state
- * @param packet Returned packet
- * @param current_timestamp Timestamp for the returned packet
-*/
-int jitter_buffer_get(JitterBuffer *jitter, JitterBufferPacket *packet, spx_int32_t *start_offset);
-
-/** Get pointer timestamp of jitter buffer
- *
- * @param jitter Jitter buffer state
-*/
-int jitter_buffer_get_pointer_timestamp(JitterBuffer *jitter);
-
-/** Advance by one tick
- *
- * @param jitter Jitter buffer state
-*/
-void jitter_buffer_tick(JitterBuffer *jitter);
-
-/** Used like the ioctl function to control the jitter buffer parameters
- *
- * @param jitter Jitter buffer state
- * @param request ioctl-type request (one of the JITTER_BUFFER_* macros)
- * @param ptr Data exchanged to-from function
- * @return 0 if no error, -1 if request in unknown
-*/
-int jitter_buffer_ctl(JitterBuffer *jitter, int request, void *ptr);
-
-int jitter_buffer_update_delay(JitterBuffer *jitter, JitterBufferPacket *packet, spx_int32_t *start_offset);
-
-/* @} */
-
-/** @defgroup SpeexJitter SpeexJitter: Adaptive jitter buffer specifically for Speex
- * This is the jitter buffer that reorders UDP/RTP packets and adjusts the buffer size
- * to maintain good quality and low latency. This is a simplified version that works only
- * with Speex, but is much easier to use.
- * @{
-*/
-
-/** Speex jitter-buffer state. Never use it directly! */
-typedef struct SpeexJitter {
- SpeexBits current_packet; /**< Current Speex packet */
- int valid_bits; /**< True if Speex bits are valid */
- JitterBuffer *packets; /**< Generic jitter buffer state */
- void *dec; /**< Pointer to Speex decoder */
- spx_int32_t frame_size; /**< Frame size of Speex decoder */
-} SpeexJitter;
-
-/** Initialise jitter buffer
- *
- * @param jitter State of the Speex jitter buffer
- * @param decoder Speex decoder to call
- * @param sampling_rate Sampling rate used by the decoder
-*/
-void speex_jitter_init(SpeexJitter *jitter, void *decoder, int sampling_rate);
-
-/** Destroy jitter buffer */
-void speex_jitter_destroy(SpeexJitter *jitter);
-
-/** Put one packet into the jitter buffer */
-void speex_jitter_put(SpeexJitter *jitter, char *packet, int len, int timestamp);
-
-/** Get one packet from the jitter buffer */
-void speex_jitter_get(SpeexJitter *jitter, spx_int16_t *out, int *start_offset);
-
-/** Get pointer timestamp of jitter buffer */
-int speex_jitter_get_pointer_timestamp(SpeexJitter *jitter);
-
-#ifdef __cplusplus
-}
-#endif
-
-/* @} */
-#endif
diff --git a/3rdparty/speex/include/speex/speex_preprocess.h b/3rdparty/speex/include/speex/speex_preprocess.h
deleted file mode 100644
index 59b0aab0..00000000
--- a/3rdparty/speex/include/speex/speex_preprocess.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/* Copyright (C) 2003 Epic Games
- Written by Jean-Marc Valin */
-/**
- * @file speex_preprocess.h
- * @brief Speex preprocessor. The preprocess can do noise suppression,
- * residual echo suppression (after using the echo canceller), automatic
- * gain control (AGC) and voice activity detection (VAD).
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef SPEEX_PREPROCESS_H
-#define SPEEX_PREPROCESS_H
-/** @defgroup SpeexPreprocessState SpeexPreprocessState: The Speex preprocessor
- * This is the Speex preprocessor. The preprocess can do noise suppression,
- * residual echo suppression (after using the echo canceller), automatic
- * gain control (AGC) and voice activity detection (VAD).
- * @{
- */
-
-#include "speex/speex_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** State of the preprocessor (one per channel). Should never be accessed directly. */
-struct SpeexPreprocessState_;
-
-/** State of the preprocessor (one per channel). Should never be accessed directly. */
-typedef struct SpeexPreprocessState_ SpeexPreprocessState;
-
-
-/** Creates a new preprocessing state. You MUST create one state per channel processed.
- * @param frame_size Number of samples to process at one time (should correspond to 10-20 ms). Must be
- * the same value as that used for the echo canceller for residual echo cancellation to work.
- * @param sampling_rate Sampling rate used for the input.
- * @return Newly created preprocessor state
-*/
-SpeexPreprocessState *speex_preprocess_state_init(int frame_size, int sampling_rate);
-
-/** Destroys a preprocessor state
- * @param st Preprocessor state to destroy
-*/
-void speex_preprocess_state_destroy(SpeexPreprocessState *st);
-
-/** Preprocess a frame
- * @param st Preprocessor state
- * @param x Audio sample vector (in and out). Must be same size as specified in speex_preprocess_state_init().
- * @return Bool value for voice activity (1 for speech, 0 for noise/silence), ONLY if VAD turned on.
-*/
-int speex_preprocess_run(SpeexPreprocessState *st, spx_int16_t *x);
-
-/** Preprocess a frame (deprecated, use speex_preprocess_run() instead)*/
-int speex_preprocess(SpeexPreprocessState *st, spx_int16_t *x, spx_int32_t *echo);
-
-/** Update preprocessor state, but do not compute the output
- * @param st Preprocessor state
- * @param x Audio sample vector (in only). Must be same size as specified in speex_preprocess_state_init().
-*/
-void speex_preprocess_estimate_update(SpeexPreprocessState *st, spx_int16_t *x);
-
-/** Used like the ioctl function to control the preprocessor parameters
- * @param st Preprocessor state
- * @param request ioctl-type request (one of the SPEEX_PREPROCESS_* macros)
- * @param ptr Data exchanged to-from function
- * @return 0 if no error, -1 if request in unknown
-*/
-int speex_preprocess_ctl(SpeexPreprocessState *st, int request, void *ptr);
-
-
-
-/** Set preprocessor denoiser state */
-#define SPEEX_PREPROCESS_SET_DENOISE 0
-/** Get preprocessor denoiser state */
-#define SPEEX_PREPROCESS_GET_DENOISE 1
-
-/** Set preprocessor Automatic Gain Control state */
-#define SPEEX_PREPROCESS_SET_AGC 2
-/** Get preprocessor Automatic Gain Control state */
-#define SPEEX_PREPROCESS_GET_AGC 3
-
-/** Set preprocessor Voice Activity Detection state */
-#define SPEEX_PREPROCESS_SET_VAD 4
-/** Get preprocessor Voice Activity Detection state */
-#define SPEEX_PREPROCESS_GET_VAD 5
-
-/** Set preprocessor Automatic Gain Control level */
-#define SPEEX_PREPROCESS_SET_AGC_LEVEL 6
-/** Get preprocessor Automatic Gain Control level */
-#define SPEEX_PREPROCESS_GET_AGC_LEVEL 7
-
-/** Set preprocessor dereverb state */
-#define SPEEX_PREPROCESS_SET_DEREVERB 8
-/** Get preprocessor dereverb state */
-#define SPEEX_PREPROCESS_GET_DEREVERB 9
-
-/** Set preprocessor dereverb level */
-#define SPEEX_PREPROCESS_SET_DEREVERB_LEVEL 10
-/** Get preprocessor dereverb level */
-#define SPEEX_PREPROCESS_GET_DEREVERB_LEVEL 11
-
-/** Set preprocessor dereverb decay */
-#define SPEEX_PREPROCESS_SET_DEREVERB_DECAY 12
-/** Get preprocessor dereverb decay */
-#define SPEEX_PREPROCESS_GET_DEREVERB_DECAY 13
-
-/** Set probability required for the VAD to go from silence to voice */
-#define SPEEX_PREPROCESS_SET_PROB_START 14
-/** Get probability required for the VAD to go from silence to voice */
-#define SPEEX_PREPROCESS_GET_PROB_START 15
-
-/** Set probability required for the VAD to stay in the voice state (integer percent) */
-#define SPEEX_PREPROCESS_SET_PROB_CONTINUE 16
-/** Get probability required for the VAD to stay in the voice state (integer percent) */
-#define SPEEX_PREPROCESS_GET_PROB_CONTINUE 17
-
-/** Set maximum attenuation of the noise in dB (negative number) */
-#define SPEEX_PREPROCESS_SET_NOISE_SUPPRESS 18
-/** Get maximum attenuation of the noise in dB (negative number) */
-#define SPEEX_PREPROCESS_GET_NOISE_SUPPRESS 19
-
-/** Set maximum attenuation of the residual echo in dB (negative number) */
-#define SPEEX_PREPROCESS_SET_ECHO_SUPPRESS 20
-/** Get maximum attenuation of the residual echo in dB (negative number) */
-#define SPEEX_PREPROCESS_GET_ECHO_SUPPRESS 21
-
-/** Set maximum attenuation of the residual echo in dB when near end is active (negative number) */
-#define SPEEX_PREPROCESS_SET_ECHO_SUPPRESS_ACTIVE 22
-/** Get maximum attenuation of the residual echo in dB when near end is active (negative number) */
-#define SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE 23
-
-/** Set the corresponding echo canceller state so that residual echo suppression can be performed (NULL for no residual echo suppression) */
-#define SPEEX_PREPROCESS_SET_ECHO_STATE 24
-/** Get the corresponding echo canceller state */
-#define SPEEX_PREPROCESS_GET_ECHO_STATE 25
-
-/** Set maximal gain increase in dB/second (int32) */
-#define SPEEX_PREPROCESS_SET_AGC_INCREMENT 26
-
-/** Get maximal gain increase in dB/second (int32) */
-#define SPEEX_PREPROCESS_GET_AGC_INCREMENT 27
-
-/** Set maximal gain decrease in dB/second (int32) */
-#define SPEEX_PREPROCESS_SET_AGC_DECREMENT 28
-
-/** Get maximal gain decrease in dB/second (int32) */
-#define SPEEX_PREPROCESS_GET_AGC_DECREMENT 29
-
-/** Set maximal gain in dB (int32) */
-#define SPEEX_PREPROCESS_SET_AGC_MAX_GAIN 30
-
-/** Get maximal gain in dB (int32) */
-#define SPEEX_PREPROCESS_GET_AGC_MAX_GAIN 31
-
-#ifdef __cplusplus
-}
-#endif
-
-/** @}*/
-#endif
diff --git a/3rdparty/speex/include/speex/speex_resampler.h b/3rdparty/speex/include/speex/speex_resampler.h
deleted file mode 100644
index 2159be8e..00000000
--- a/3rdparty/speex/include/speex/speex_resampler.h
+++ /dev/null
@@ -1,309 +0,0 @@
-/* Copyright (C) 2007 Jean-Marc Valin
-
- File: speex_resampler.h
- Resampling code
-
- The design goals of this code are:
- - Very fast algorithm
- - Low memory requirement
- - Good *perceptual* quality (and not best SNR)
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-#ifndef SPEEX_RESAMPLER_H
-#define SPEEX_RESAMPLER_H
-
-#ifdef OUTSIDE_SPEEX
-
-/********* WARNING: MENTAL SANITY ENDS HERE *************/
-
-/* If the resampler is defined outside of Speex, we change the symbol names so that
- there won't be any clash if linking with Speex later on. */
-
-/* #define RANDOM_PREFIX your software name here */
-#ifndef RANDOM_PREFIX
-#error "Please define RANDOM_PREFIX (above) to something specific to your project to prevent symbol name clashes"
-#endif
-
-#define CAT_PREFIX2(a,b) a ## b
-#define CAT_PREFIX(a,b) CAT_PREFIX2(a, b)
-
-#define speex_resampler_init CAT_PREFIX(RANDOM_PREFIX,_resampler_init)
-#define speex_resampler_init_frac CAT_PREFIX(RANDOM_PREFIX,_resampler_init_frac)
-#define speex_resampler_destroy CAT_PREFIX(RANDOM_PREFIX,_resampler_destroy)
-#define speex_resampler_process_float CAT_PREFIX(RANDOM_PREFIX,_resampler_process_float)
-#define speex_resampler_process_int CAT_PREFIX(RANDOM_PREFIX,_resampler_process_int)
-#define speex_resampler_process_interleaved_float CAT_PREFIX(RANDOM_PREFIX,_resampler_process_interleaved_float)
-#define speex_resampler_process_interleaved_int CAT_PREFIX(RANDOM_PREFIX,_resampler_process_interleaved_int)
-#define speex_resampler_set_rate CAT_PREFIX(RANDOM_PREFIX,_resampler_set_rate)
-#define speex_resampler_get_rate CAT_PREFIX(RANDOM_PREFIX,_resampler_get_rate)
-#define speex_resampler_set_rate_frac CAT_PREFIX(RANDOM_PREFIX,_resampler_set_rate_frac)
-#define speex_resampler_get_ratio CAT_PREFIX(RANDOM_PREFIX,_resampler_get_ratio)
-#define speex_resampler_set_quality CAT_PREFIX(RANDOM_PREFIX,_resampler_set_quality)
-#define speex_resampler_get_quality CAT_PREFIX(RANDOM_PREFIX,_resampler_get_quality)
-#define speex_resampler_set_input_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_set_input_stride)
-#define speex_resampler_get_input_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_get_input_stride)
-#define speex_resample_set_output_stride CAT_PREFIX(RANDOM_PREFIX,_resample_set_output_stride)
-#define speex_resample_get_output_stride CAT_PREFIX(RANDOM_PREFIX,_resample_get_output_stride)
-#define speex_resampler_skip_zeros CAT_PREFIX(RANDOM_PREFIX,_resampler_skip_zeros)
-#define speex_resampler_reset_mem CAT_PREFIX(RANDOM_PREFIX,_resampler_reset_mem)
-
-#define spx_int16_t short
-#define spx_int32_t int
-#define spx_uint16_t unsigned short
-#define spx_uint32_t unsigned int
-
-#else /* OUTSIDE_SPEEX */
-
-#include "speex/speex_types.h"
-
-#endif /* OUTSIDE_SPEEX */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define SPEEX_RESAMPLER_QUALITY_MAX 10
-#define SPEEX_RESAMPLER_QUALITY_MIN 0
-#define SPEEX_RESAMPLER_QUALITY_DEFAULT 4
-#define SPEEX_RESAMPLER_QUALITY_VOIP 3
-#define SPEEX_RESAMPLER_QUALITY_DESKTOP 5
-
-struct SpeexResamplerState_;
-typedef struct SpeexResamplerState_ SpeexResamplerState;
-
-/** Create a new resampler with integer input and output rates.
- * @param nb_channels Number of channels to be processed
- * @param in_rate Input sampling rate (integer number of Hz).
- * @param out_rate Output sampling rate (integer number of Hz).
- * @param quality Resampling quality between 0 and 10, where 0 has poor quality
- * and 10 has very high quality.
- * @return Newly created resampler state
- * @retval NULL Error: not enough memory
- */
-SpeexResamplerState *speex_resampler_init(spx_uint32_t nb_channels,
- spx_uint32_t in_rate,
- spx_uint32_t out_rate,
- int quality);
-
-/** Create a new resampler with fractional input/output rates. The sampling
- * rate ratio is an arbitrary rational number with both the numerator and
- * denominator being 32-bit integers.
- * @param nb_channels Number of channels to be processed
- * @param ratio_num Numerator of the sampling rate ratio
- * @param ratio_den Denominator of the sampling rate ratio
- * @param in_rate Input sampling rate rounded to the nearest integer (in Hz).
- * @param out_rate Output sampling rate rounded to the nearest integer (in Hz).
- * @param quality Resampling quality between 0 and 10, where 0 has poor quality
- * and 10 has very high quality.
- * @return Newly created resampler state
- * @retval NULL Error: not enough memory
- */
-SpeexResamplerState *speex_resampler_init_frac(spx_uint32_t nb_channels,
- spx_uint32_t ratio_num,
- spx_uint32_t ratio_den,
- spx_uint32_t in_rate,
- spx_uint32_t out_rate,
- int quality);
-
-/** Destroy a resampler state.
- * @param st Resampler state
- */
-void speex_resampler_destroy(SpeexResamplerState *st);
-
-/** Resample a float array. The input and output buffers must *not* overlap.
- * @param st Resampler state
- * @param channel_index Index of the channel to process for the multi-channel
- * base (0 otherwise)
- * @param in Input buffer
- * @param in_len Number of input samples in the input buffer. Returns the
- * number of samples processed
- * @param out Output buffer
- * @param out_len Size of the output buffer. Returns the number of samples written
- */
-void speex_resampler_process_float(SpeexResamplerState *st,
- spx_uint32_t channel_index,
- const float *in,
- spx_uint32_t *in_len,
- float *out,
- spx_uint32_t *out_len);
-
-/** Resample an int array. The input and output buffers must *not* overlap.
- * @param st Resampler state
- * @param channel_index Index of the channel to process for the multi-channel
- * base (0 otherwise)
- * @param in Input buffer
- * @param in_len Number of input samples in the input buffer. Returns the number
- * of samples processed
- * @param out Output buffer
- * @param out_len Size of the output buffer. Returns the number of samples written
- */
-void speex_resampler_process_int(SpeexResamplerState *st,
- spx_uint32_t channel_index,
- const spx_int16_t *in,
- spx_uint32_t *in_len,
- spx_int16_t *out,
- spx_uint32_t *out_len);
-
-/** Resample an interleaved float array. The input and output buffers must *not* overlap.
- * @param st Resampler state
- * @param in Input buffer
- * @param in_len Number of input samples in the input buffer. Returns the number
- * of samples processed. This is all per-channel.
- * @param out Output buffer
- * @param out_len Size of the output buffer. Returns the number of samples written.
- * This is all per-channel.
- */
-void speex_resampler_process_interleaved_float(SpeexResamplerState *st,
- const float *in,
- spx_uint32_t *in_len,
- float *out,
- spx_uint32_t *out_len);
-
-/** Resample an interleaved int array. The input and output buffers must *not* overlap.
- * @param st Resampler state
- * @param in Input buffer
- * @param in_len Number of input samples in the input buffer. Returns the number
- * of samples processed. This is all per-channel.
- * @param out Output buffer
- * @param out_len Size of the output buffer. Returns the number of samples written.
- * This is all per-channel.
- */
-void speex_resampler_process_interleaved_int(SpeexResamplerState *st,
- const spx_int16_t *in,
- spx_uint32_t *in_len,
- spx_int16_t *out,
- spx_uint32_t *out_len);
-
-/** Set (change) the input/output sampling rates (integer value).
- * @param st Resampler state
- * @param in_rate Input sampling rate (integer number of Hz).
- * @param out_rate Output sampling rate (integer number of Hz).
- */
-void speex_resampler_set_rate(SpeexResamplerState *st,
- spx_uint32_t in_rate,
- spx_uint32_t out_rate);
-
-/** Get the current input/output sampling rates (integer value).
- * @param st Resampler state
- * @param in_rate Input sampling rate (integer number of Hz) copied.
- * @param out_rate Output sampling rate (integer number of Hz) copied.
- */
-void speex_resampler_get_rate(SpeexResamplerState *st,
- spx_uint32_t *in_rate,
- spx_uint32_t *out_rate);
-
-/** Set (change) the input/output sampling rates and resampling ratio
- * (fractional values in Hz supported).
- * @param st Resampler state
- * @param ratio_num Numerator of the sampling rate ratio
- * @param ratio_den Denominator of the sampling rate ratio
- * @param in_rate Input sampling rate rounded to the nearest integer (in Hz).
- * @param out_rate Output sampling rate rounded to the nearest integer (in Hz).
- */
-void speex_resampler_set_rate_frac(SpeexResamplerState *st,
- spx_uint32_t ratio_num,
- spx_uint32_t ratio_den,
- spx_uint32_t in_rate,
- spx_uint32_t out_rate);
-
-/** Get the current resampling ratio. This will be reduced to the least
- * common denominator.
- * @param st Resampler state
- * @param ratio_num Numerator of the sampling rate ratio copied
- * @param ratio_den Denominator of the sampling rate ratio copied
- */
-void speex_resampler_get_ratio(SpeexResamplerState *st,
- spx_uint32_t *ratio_num,
- spx_uint32_t *ratio_den);
-
-/** Set (change) the conversion quality.
- * @param st Resampler state
- * @param quality Resampling quality between 0 and 10, where 0 has poor
- * quality and 10 has very high quality.
- */
-void speex_resampler_set_quality(SpeexResamplerState *st,
- int quality);
-
-/** Get the conversion quality.
- * @param st Resampler state
- * @param quality Resampling quality between 0 and 10, where 0 has poor
- * quality and 10 has very high quality.
- */
-void speex_resampler_get_quality(SpeexResamplerState *st,
- int *quality);
-
-/** Set (change) the input stride.
- * @param st Resampler state
- * @param stride Input stride
- */
-void speex_resampler_set_input_stride(SpeexResamplerState *st,
- spx_uint32_t stride);
-
-/** Get the input stride.
- * @param st Resampler state
- * @param stride Input stride copied
- */
-void speex_resampler_get_input_stride(SpeexResamplerState *st,
- spx_uint32_t *stride);
-
-/** Set (change) the output stride.
- * @param st Resampler state
- * @param stride Output stride
- */
-void speex_resample_set_output_stride(SpeexResamplerState *st,
- spx_uint32_t stride);
-
-/** Get the output stride.
- * @param st Resampler state copied
- * @param stride Output stride
- */
-void speex_resample_get_output_stride(SpeexResamplerState *st,
- spx_uint32_t *stride);
-
-/** Make sure that the first samples to go out of the resamplers don't have
- * leading zeros. This is only useful before starting to use a newly created
- * resampler. It is recommended to use that when resampling an audio file, as
- * it will generate a file with the same length. For real-time processing,
- * it is probably easier not to use this call (so that the output duration
- * is the same for the first frame).
- * @param st Resampler state
- */
-void speex_resampler_skip_zeros(SpeexResamplerState *st);
-
-/** Reset a resampler so a new (unrelated) stream can be processed.
- * @param st Resampler state
- */
-void speex_resampler_reset_mem(SpeexResamplerState *st);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/3rdparty/speex/include/speex/speex_stereo.h b/3rdparty/speex/include/speex/speex_stereo.h
deleted file mode 100644
index 45da338f..00000000
--- a/3rdparty/speex/include/speex/speex_stereo.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin*/
-/**
- @file speex_stereo.h
- @brief Describes the handling for intensity stereo
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef STEREO_H
-#define STEREO_H
-/** @defgroup SpeexStereoState SpeexStereoState: Handling Speex stereo files
- * This describes the Speex intensity stereo encoding/decoding
- * @{
- */
-
-#include "speex/speex_types.h"
-#include "speex/speex_bits.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** State used for decoding (intensity) stereo information */
-typedef struct SpeexStereoState {
- float balance; /**< Left/right balance info */
- float e_ratio; /**< Ratio of energies: E(left+right)/[E(left)+E(right)] */
- float smooth_left; /**< Smoothed left channel gain */
- float smooth_right; /**< Smoothed right channel gain */
- float reserved1; /**< Reserved for future use */
- float reserved2; /**< Reserved for future use */
-} SpeexStereoState;
-
-/** Initialization value for a stereo state */
-#define SPEEX_STEREO_STATE_INIT {1,.5,1,1,0,0}
-
-/** Transforms a stereo frame into a mono frame and stores intensity stereo info in 'bits' */
-void speex_encode_stereo(float *data, int frame_size, SpeexBits *bits);
-
-/** Transforms a stereo frame into a mono frame and stores intensity stereo info in 'bits' */
-void speex_encode_stereo_int(spx_int16_t *data, int frame_size, SpeexBits *bits);
-
-/** Transforms a mono frame into a stereo frame using intensity stereo info */
-void speex_decode_stereo(float *data, int frame_size, SpeexStereoState *stereo);
-
-/** Transforms a mono frame into a stereo frame using intensity stereo info */
-void speex_decode_stereo_int(spx_int16_t *data, int frame_size, SpeexStereoState *stereo);
-
-/** Callback handler for intensity stereo info */
-int speex_std_stereo_request_handler(SpeexBits *bits, void *state, void *data);
-
-#ifdef __cplusplus
-}
-#endif
-
-/** @} */
-#endif
diff --git a/3rdparty/speex/include/speex/speex_types.h b/3rdparty/speex/include/speex/speex_types.h
deleted file mode 100644
index c746d4f6..00000000
--- a/3rdparty/speex/include/speex/speex_types.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/* speex_types.h taken from libogg */
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
- * by the Xiph.Org Foundation http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: #ifdef jail to whip a few platforms into the UNIX ideal.
- last mod: $Id: os_types.h 7524 2004-08-11 04:20:36Z conrad $
-
- ********************************************************************/
-/**
- @file speex_types.h
- @brief Speex types
-*/
-#ifndef _SPEEX_TYPES_H
-#define _SPEEX_TYPES_H
-
-#if defined(_WIN32)
-
-# if defined(__CYGWIN__)
-# include <_G_config.h>
- typedef _G_int32_t spx_int32_t;
- typedef _G_uint32_t spx_uint32_t;
- typedef _G_int16_t spx_int16_t;
- typedef _G_uint16_t spx_uint16_t;
-# elif defined(__MINGW32__)
- typedef short spx_int16_t;
- typedef unsigned short spx_uint16_t;
- typedef int spx_int32_t;
- typedef unsigned int spx_uint32_t;
-# elif defined(__MWERKS__)
- typedef int spx_int32_t;
- typedef unsigned int spx_uint32_t;
- typedef short spx_int16_t;
- typedef unsigned short spx_uint16_t;
-# else
- /* MSVC/Borland */
- typedef __int32 spx_int32_t;
- typedef unsigned __int32 spx_uint32_t;
- typedef __int16 spx_int16_t;
- typedef unsigned __int16 spx_uint16_t;
-# endif
-
-#elif defined(__MACOS__)
-
-# include <sys/types.h>
- typedef SInt16 spx_int16_t;
- typedef UInt16 spx_uint16_t;
- typedef SInt32 spx_int32_t;
- typedef UInt32 spx_uint32_t;
-
-#elif defined(__MACOSX__) /* MacOS X Framework build */
-
-# include <sys/types.h>
- typedef int16_t spx_int16_t;
- typedef u_int16_t spx_uint16_t;
- typedef int32_t spx_int32_t;
- typedef u_int32_t spx_uint32_t;
-
-#elif defined(__BEOS__)
-
- /* Be */
-# include <inttypes.h>
- typedef int16_t spx_int16_t;
- typedef u_int16_t spx_uint16_t;
- typedef int32_t spx_int32_t;
- typedef u_int32_t spx_uint32_t;
-
-#elif defined (__EMX__)
-
- /* OS/2 GCC */
- typedef short spx_int16_t;
- typedef unsigned short spx_uint16_t;
- typedef int spx_int32_t;
- typedef unsigned int spx_uint32_t;
-
-#elif defined (DJGPP)
-
- /* DJGPP */
- typedef short spx_int16_t;
- typedef int spx_int32_t;
- typedef unsigned int spx_uint32_t;
-
-#elif defined(R5900)
-
- /* PS2 EE */
- typedef int spx_int32_t;
- typedef unsigned spx_uint32_t;
- typedef short spx_int16_t;
-
-#elif defined(__SYMBIAN32__)
-
- /* Symbian GCC */
- typedef signed short spx_int16_t;
- typedef unsigned short spx_uint16_t;
- typedef signed int spx_int32_t;
- typedef unsigned int spx_uint32_t;
-
-#elif defined(CONFIG_TI_C54X) || defined (CONFIG_TI_C55X)
-
- typedef short spx_int16_t;
- typedef unsigned short spx_uint16_t;
- typedef long spx_int32_t;
- typedef unsigned long spx_uint32_t;
-
-#elif defined(CONFIG_TI_C6X)
-
- typedef short spx_int16_t;
- typedef unsigned short spx_uint16_t;
- typedef int spx_int32_t;
- typedef unsigned int spx_uint32_t;
-
-#else
-
-# include <speex/speex_config_types.h>
-
-#endif
-
-#endif /* _SPEEX_TYPES_H */
diff --git a/3rdparty/speex/libspeex/.cvsignore b/3rdparty/speex/libspeex/.cvsignore
deleted file mode 100644
index 09a90ac7..00000000
--- a/3rdparty/speex/libspeex/.cvsignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.deps
-.libs
-*.la
-*.lo
-*.o
-Makefile
-Makefile.in
-testdenoise
-testenc
-testenc_uwb
-testenc_wb
diff --git a/3rdparty/speex/libspeex/Makefile.am b/3rdparty/speex/libspeex/Makefile.am
deleted file mode 100644
index ff6d4bc8..00000000
--- a/3rdparty/speex/libspeex/Makefile.am
+++ /dev/null
@@ -1,42 +0,0 @@
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-
-EXTRA_DIST=echo_diagnostic.m
-
-INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_builddir) @OGG_CFLAGS@
-
-lib_LTLIBRARIES = libspeex.la
-
-# Sources for compilation in the library
-libspeex_la_SOURCES = nb_celp.c sb_celp.c lpc.c ltp.c lsp.c quant_lsp.c \
- lsp_tables_nb.c gain_table.c gain_table_lbr.c cb_search.c filters.c bits.c \
- modes.c speex.c vq.c high_lsp_tables.c vbr.c hexc_table.c \
- exc_5_256_table.c exc_5_64_table.c exc_8_128_table.c exc_10_32_table.c \
- exc_10_16_table.c exc_20_32_table.c hexc_10_32_table.c misc.c speex_header.c \
- speex_callbacks.c math_approx.c stereo.c preprocess.c smallft.c lbr_48k_tables.c \
- jitter.c mdf.c vorbis_psy.c fftwrap.c kiss_fft.c _kiss_fft_guts.h kiss_fft.h \
- kiss_fftr.c kiss_fftr.h window.c filterbank.c resample.c
-
-noinst_HEADERS = lsp.h nb_celp.h lpc.h lpc_bfin.h ltp.h quant_lsp.h \
- cb_search.h filters.h stack_alloc.h vq.h vq_sse.h vq_arm4.h vq_bfin.h \
- modes.h sb_celp.h vbr.h misc.h misc_bfin.h ltp_sse.h ltp_arm4.h \
- ltp_bfin.h filters_sse.h filters_arm4.h filters_bfin.h math_approx.h \
- smallft.h arch.h fixed_arm4.h fixed_arm5e.h fixed_bfin.h fixed_debug.h \
- fixed_generic.h cb_search_sse.h cb_search_arm4.h cb_search_bfin.h vorbis_psy.h \
- fftwrap.h pseudofloat.h lsp_bfin.h quant_lsp_bfin.h filterbank.h
-
-
-libspeex_la_LDFLAGS = -no-undefined -version-info @SPEEX_LT_CURRENT@:@SPEEX_LT_REVISION@:@SPEEX_LT_AGE@
-
-noinst_PROGRAMS = testenc testenc_wb testenc_uwb testdenoise testecho
-testenc_SOURCES = testenc.c
-testenc_LDADD = libspeex.la
-testenc_wb_SOURCES = testenc_wb.c
-testenc_wb_LDADD = libspeex.la
-testenc_uwb_SOURCES = testenc_uwb.c
-testenc_uwb_LDADD = libspeex.la
-testdenoise_SOURCES = testdenoise.c
-testdenoise_LDADD = libspeex.la
-testecho_SOURCES = testecho.c
-testecho_LDADD = libspeex.la
diff --git a/3rdparty/speex/libspeex/_kiss_fft_guts.h b/3rdparty/speex/libspeex/_kiss_fft_guts.h
deleted file mode 100644
index 526a73b7..00000000
--- a/3rdparty/speex/libspeex/_kiss_fft_guts.h
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
-Copyright (c) 2003-2004, Mark Borgerding
-
-All rights reserved.
-
-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 author nor the names of any 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 COPYRIGHT OWNER 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.
-*/
-
-#define MIN(a,b) ((a)<(b) ? (a):(b))
-#define MAX(a,b) ((a)>(b) ? (a):(b))
-
-/* kiss_fft.h
- defines kiss_fft_scalar as either short or a float type
- and defines
- typedef struct { kiss_fft_scalar r; kiss_fft_scalar i; }kiss_fft_cpx; */
-#include "kiss_fft.h"
-#include "math_approx.h"
-
-#define MAXFACTORS 32
-/* e.g. an fft of length 128 has 4 factors
- as far as kissfft is concerned
- 4*4*4*2
- */
-
-struct kiss_fft_state{
- int nfft;
- int inverse;
- int factors[2*MAXFACTORS];
- kiss_fft_cpx twiddles[1];
-};
-
-/*
- Explanation of macros dealing with complex math:
-
- C_MUL(m,a,b) : m = a*b
- C_FIXDIV( c , div ) : if a fixed point impl., c /= div. noop otherwise
- C_SUB( res, a,b) : res = a - b
- C_SUBFROM( res , a) : res -= a
- C_ADDTO( res , a) : res += a
- * */
-#ifdef FIXED_POINT
-#include "misc.h"
-# define FRACBITS 15
-# define SAMPPROD spx_int32_t
-#define SAMP_MAX 32767
-
-#define SAMP_MIN -SAMP_MAX
-
-#if defined(CHECK_OVERFLOW)
-# define CHECK_OVERFLOW_OP(a,op,b) \
- if ( (SAMPPROD)(a) op (SAMPPROD)(b) > SAMP_MAX || (SAMPPROD)(a) op (SAMPPROD)(b) < SAMP_MIN ) { \
- fprintf(stderr,"WARNING:overflow @ " __FILE__ "(%d): (%d " #op" %d) = %ld\n",__LINE__,(a),(b),(SAMPPROD)(a) op (SAMPPROD)(b) ); }
-#endif
-
-
-# define smul(a,b) ( (SAMPPROD)(a)*(b) )
-# define sround( x ) (kiss_fft_scalar)( ( (x) + (1<<(FRACBITS-1)) ) >> FRACBITS )
-
-# define S_MUL(a,b) sround( smul(a,b) )
-
-# define C_MUL(m,a,b) \
- do{ (m).r = sround( smul((a).r,(b).r) - smul((a).i,(b).i) ); \
- (m).i = sround( smul((a).r,(b).i) + smul((a).i,(b).r) ); }while(0)
-
-# define C_MUL4(m,a,b) \
- do{ (m).r = PSHR32( smul((a).r,(b).r) - smul((a).i,(b).i),17 ); \
- (m).i = PSHR32( smul((a).r,(b).i) + smul((a).i,(b).r),17 ); }while(0)
-
-# define DIVSCALAR(x,k) \
- (x) = sround( smul( x, SAMP_MAX/k ) )
-
-# define C_FIXDIV(c,div) \
- do { DIVSCALAR( (c).r , div); \
- DIVSCALAR( (c).i , div); }while (0)
-
-# define C_MULBYSCALAR( c, s ) \
- do{ (c).r = sround( smul( (c).r , s ) ) ;\
- (c).i = sround( smul( (c).i , s ) ) ; }while(0)
-
-#else /* not FIXED_POINT*/
-
-# define S_MUL(a,b) ( (a)*(b) )
-#define C_MUL(m,a,b) \
- do{ (m).r = (a).r*(b).r - (a).i*(b).i;\
- (m).i = (a).r*(b).i + (a).i*(b).r; }while(0)
-
-#define C_MUL4(m,a,b) C_MUL(m,a,b)
-
-# define C_FIXDIV(c,div) /* NOOP */
-# define C_MULBYSCALAR( c, s ) \
- do{ (c).r *= (s);\
- (c).i *= (s); }while(0)
-#endif
-
-#ifndef CHECK_OVERFLOW_OP
-# define CHECK_OVERFLOW_OP(a,op,b) /* noop */
-#endif
-
-#define C_ADD( res, a,b)\
- do { \
- CHECK_OVERFLOW_OP((a).r,+,(b).r)\
- CHECK_OVERFLOW_OP((a).i,+,(b).i)\
- (res).r=(a).r+(b).r; (res).i=(a).i+(b).i; \
- }while(0)
-#define C_SUB( res, a,b)\
- do { \
- CHECK_OVERFLOW_OP((a).r,-,(b).r)\
- CHECK_OVERFLOW_OP((a).i,-,(b).i)\
- (res).r=(a).r-(b).r; (res).i=(a).i-(b).i; \
- }while(0)
-#define C_ADDTO( res , a)\
- do { \
- CHECK_OVERFLOW_OP((res).r,+,(a).r)\
- CHECK_OVERFLOW_OP((res).i,+,(a).i)\
- (res).r += (a).r; (res).i += (a).i;\
- }while(0)
-
-#define C_SUBFROM( res , a)\
- do {\
- CHECK_OVERFLOW_OP((res).r,-,(a).r)\
- CHECK_OVERFLOW_OP((res).i,-,(a).i)\
- (res).r -= (a).r; (res).i -= (a).i; \
- }while(0)
-
-
-#ifdef FIXED_POINT
-# define KISS_FFT_COS(phase) floor(MIN(32767,MAX(-32767,.5+32768 * cos (phase))))
-# define KISS_FFT_SIN(phase) floor(MIN(32767,MAX(-32767,.5+32768 * sin (phase))))
-# define HALF_OF(x) ((x)>>1)
-#elif defined(USE_SIMD)
-# define KISS_FFT_COS(phase) _mm_set1_ps( cos(phase) )
-# define KISS_FFT_SIN(phase) _mm_set1_ps( sin(phase) )
-# define HALF_OF(x) ((x)*_mm_set1_ps(.5))
-#else
-# define KISS_FFT_COS(phase) (kiss_fft_scalar) cos(phase)
-# define KISS_FFT_SIN(phase) (kiss_fft_scalar) sin(phase)
-# define HALF_OF(x) ((x)*.5)
-#endif
-
-#define kf_cexp(x,phase) \
- do{ \
- (x)->r = KISS_FFT_COS(phase);\
- (x)->i = KISS_FFT_SIN(phase);\
- }while(0)
-#define kf_cexp2(x,phase) \
- do{ \
- (x)->r = spx_cos_norm((phase));\
- (x)->i = spx_cos_norm((phase)-32768);\
-}while(0)
-
-
-/* a debugging function */
-#define pcpx(c)\
- fprintf(stderr,"%g + %gi\n",(double)((c)->r),(double)((c)->i) )
diff --git a/3rdparty/speex/libspeex/arch.h b/3rdparty/speex/libspeex/arch.h
deleted file mode 100644
index e2d731ac..00000000
--- a/3rdparty/speex/libspeex/arch.h
+++ /dev/null
@@ -1,197 +0,0 @@
-/* Copyright (C) 2003 Jean-Marc Valin */
-/**
- @file arch.h
- @brief Various architecture definitions Speex
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef ARCH_H
-#define ARCH_H
-
-#ifndef OUTSIDE_SPEEX
-#include "speex/speex_types.h"
-#endif
-
-#define ABS(x) ((x) < 0 ? (-(x)) : (x)) /**< Absolute integer value. */
-#define ABS16(x) ((x) < 0 ? (-(x)) : (x)) /**< Absolute 16-bit value. */
-#define MIN16(a,b) ((a) < (b) ? (a) : (b)) /**< Maximum 16-bit value. */
-#define MAX16(a,b) ((a) > (b) ? (a) : (b)) /**< Maximum 16-bit value. */
-#define ABS32(x) ((x) < 0 ? (-(x)) : (x)) /**< Absolute 32-bit value. */
-#define MIN32(a,b) ((a) < (b) ? (a) : (b)) /**< Maximum 32-bit value. */
-#define MAX32(a,b) ((a) > (b) ? (a) : (b)) /**< Maximum 32-bit value. */
-
-#ifdef FIXED_POINT
-
-typedef spx_int16_t spx_word16_t;
-typedef spx_int32_t spx_word32_t;
-typedef spx_word32_t spx_mem_t;
-typedef spx_word16_t spx_coef_t;
-typedef spx_word16_t spx_lsp_t;
-typedef spx_word32_t spx_sig_t;
-
-#define Q15ONE 32767
-
-#define LPC_SCALING 8192
-#define SIG_SCALING 16384
-#define LSP_SCALING 8192.
-#define GAMMA_SCALING 32768.
-#define GAIN_SCALING 64
-#define GAIN_SCALING_1 0.015625
-
-#define LPC_SHIFT 13
-#define LSP_SHIFT 13
-#define SIG_SHIFT 14
-
-#define VERY_SMALL 0
-#define VERY_LARGE32 ((spx_word32_t)2147483647)
-#define VERY_LARGE16 ((spx_word16_t)32767)
-#define Q15_ONE ((spx_word16_t)32767)
-
-
-#ifdef FIXED_DEBUG
-#include "fixed_debug.h"
-#else
-
-#include "fixed_generic.h"
-
-#ifdef ARM5E_ASM
-#include "fixed_arm5e.h"
-#elif defined (ARM4_ASM)
-#include "fixed_arm4.h"
-#elif defined (ARM5E_ASM)
-#include "fixed_arm5e.h"
-#elif defined (BFIN_ASM)
-#include "fixed_bfin.h"
-#endif
-
-#endif
-
-
-#else
-
-typedef float spx_mem_t;
-typedef float spx_coef_t;
-typedef float spx_lsp_t;
-typedef float spx_sig_t;
-typedef float spx_word16_t;
-typedef float spx_word32_t;
-
-#define Q15ONE 1.0f
-#define LPC_SCALING 1.f
-#define SIG_SCALING 1.f
-#define LSP_SCALING 1.f
-#define GAMMA_SCALING 1.f
-#define GAIN_SCALING 1.f
-#define GAIN_SCALING_1 1.f
-
-#define LPC_SHIFT 0
-#define LSP_SHIFT 0
-#define SIG_SHIFT 0
-
-#define VERY_SMALL 1e-15f
-#define VERY_LARGE32 1e15f
-#define VERY_LARGE16 1e15f
-#define Q15_ONE ((spx_word16_t)1.f)
-
-#define QCONST16(x,bits) (x)
-#define QCONST32(x,bits) (x)
-
-#define NEG16(x) (-(x))
-#define NEG32(x) (-(x))
-#define EXTRACT16(x) (x)
-#define EXTEND32(x) (x)
-#define SHR16(a,shift) (a)
-#define SHL16(a,shift) (a)
-#define SHR32(a,shift) (a)
-#define SHL32(a,shift) (a)
-#define PSHR16(a,shift) (a)
-#define PSHR32(a,shift) (a)
-#define VSHR32(a,shift) (a)
-#define SATURATE16(x,a) (x)
-#define SATURATE32(x,a) (x)
-
-#define PSHR(a,shift) (a)
-#define SHR(a,shift) (a)
-#define SHL(a,shift) (a)
-#define SATURATE(x,a) (x)
-
-#define ADD16(a,b) ((a)+(b))
-#define SUB16(a,b) ((a)-(b))
-#define ADD32(a,b) ((a)+(b))
-#define SUB32(a,b) ((a)-(b))
-#define MULT16_16_16(a,b) ((a)*(b))
-#define MULT16_16(a,b) ((spx_word32_t)(a)*(spx_word32_t)(b))
-#define MAC16_16(c,a,b) ((c)+(spx_word32_t)(a)*(spx_word32_t)(b))
-
-#define MULT16_32_Q11(a,b) ((a)*(b))
-#define MULT16_32_Q13(a,b) ((a)*(b))
-#define MULT16_32_Q14(a,b) ((a)*(b))
-#define MULT16_32_Q15(a,b) ((a)*(b))
-#define MULT16_32_P15(a,b) ((a)*(b))
-
-#define MAC16_32_Q11(c,a,b) ((c)+(a)*(b))
-#define MAC16_32_Q15(c,a,b) ((c)+(a)*(b))
-
-#define MAC16_16_Q11(c,a,b) ((c)+(a)*(b))
-#define MAC16_16_Q13(c,a,b) ((c)+(a)*(b))
-#define MAC16_16_P13(c,a,b) ((c)+(a)*(b))
-#define MULT16_16_Q11_32(a,b) ((a)*(b))
-#define MULT16_16_Q13(a,b) ((a)*(b))
-#define MULT16_16_Q14(a,b) ((a)*(b))
-#define MULT16_16_Q15(a,b) ((a)*(b))
-#define MULT16_16_P15(a,b) ((a)*(b))
-#define MULT16_16_P13(a,b) ((a)*(b))
-#define MULT16_16_P14(a,b) ((a)*(b))
-
-#define DIV32_16(a,b) (((spx_word32_t)(a))/(spx_word16_t)(b))
-#define PDIV32_16(a,b) (((spx_word32_t)(a))/(spx_word16_t)(b))
-#define DIV32(a,b) (((spx_word32_t)(a))/(spx_word32_t)(b))
-#define PDIV32(a,b) (((spx_word32_t)(a))/(spx_word32_t)(b))
-
-
-#endif
-
-
-#if defined (CONFIG_TI_C54X) || defined (CONFIG_TI_C55X)
-
-/* 2 on TI C5x DSP */
-#define BYTES_PER_CHAR 2
-#define BITS_PER_CHAR 16
-#define LOG2_BITS_PER_CHAR 4
-
-#else
-
-#define BYTES_PER_CHAR 1
-#define BITS_PER_CHAR 8
-#define LOG2_BITS_PER_CHAR 3
-
-#endif
-
-#endif
diff --git a/3rdparty/speex/libspeex/bits.c b/3rdparty/speex/libspeex/bits.c
deleted file mode 100644
index 5c4cb0e4..00000000
--- a/3rdparty/speex/libspeex/bits.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: speex_bits.c
-
- Handles bit packing/unpacking
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <speex/speex_bits.h>
-#include "misc.h"
-
-/* Maximum size of the bit-stream (for fixed-size allocation) */
-#ifndef MAX_CHARS_PER_FRAME
-#define MAX_CHARS_PER_FRAME (2000/BYTES_PER_CHAR)
-#endif
-
-void speex_bits_init(SpeexBits *bits)
-{
- bits->chars = (char*)speex_alloc(MAX_CHARS_PER_FRAME);
- if (!bits->chars)
- return;
-
- bits->buf_size = MAX_CHARS_PER_FRAME;
-
- bits->owner=1;
-
- speex_bits_reset(bits);
-}
-
-void speex_bits_init_buffer(SpeexBits *bits, void *buff, int buf_size)
-{
- bits->chars = (char*)buff;
- bits->buf_size = buf_size;
-
- bits->owner=0;
-
- speex_bits_reset(bits);
-}
-
-void speex_bits_destroy(SpeexBits *bits)
-{
- if (bits->owner)
- speex_free(bits->chars);
- /* Will do something once the allocation is dynamic */
-}
-
-void speex_bits_reset(SpeexBits *bits)
-{
- /* We only need to clear the first byte now */
- bits->chars[0]=0;
- bits->nbBits=0;
- bits->charPtr=0;
- bits->bitPtr=0;
- bits->overflow=0;
-}
-
-void speex_bits_rewind(SpeexBits *bits)
-{
- bits->charPtr=0;
- bits->bitPtr=0;
- bits->overflow=0;
-}
-
-void speex_bits_read_from(SpeexBits *bits, char *chars, int len)
-{
- int i;
- int nchars = len / BYTES_PER_CHAR;
- if (nchars > bits->buf_size)
- {
- speex_notify("Packet is larger than allocated buffer");
- if (bits->owner)
- {
- char *tmp = (char*)speex_realloc(bits->chars, nchars);
- if (tmp)
- {
- bits->buf_size=nchars;
- bits->chars=tmp;
- } else {
- nchars=bits->buf_size;
- speex_warning("Could not resize input buffer: truncating input");
- }
- } else {
- speex_warning("Do not own input buffer: truncating oversize input");
- nchars=bits->buf_size;
- }
- }
-#if (BYTES_PER_CHAR==2)
-/* Swap bytes to proper endian order (could be done externally) */
-#define HTOLS(A) ((((A) >> 8)&0xff)|(((A) & 0xff)<<8))
-#else
-#define HTOLS(A) (A)
-#endif
- for (i=0;i<nchars;i++)
- bits->chars[i]=HTOLS(chars[i]);
-
- bits->nbBits=nchars<<LOG2_BITS_PER_CHAR;
- bits->charPtr=0;
- bits->bitPtr=0;
- bits->overflow=0;
-}
-
-static void speex_bits_flush(SpeexBits *bits)
-{
- int i;
- int nchars = ((bits->nbBits+BITS_PER_CHAR-1)>>LOG2_BITS_PER_CHAR);
- if (bits->charPtr>0)
- {
- for (i=bits->charPtr;i<nchars; i++)
- bits->chars[i-bits->charPtr]=bits->chars[i];
- }
- bits->nbBits -= bits->charPtr<<LOG2_BITS_PER_CHAR;
- bits->charPtr=0;
-}
-
-void speex_bits_read_whole_bytes(SpeexBits *bits, char *chars, int nbytes)
-{
- int i,pos;
- int nchars = nbytes/BYTES_PER_CHAR;
-
- if (((bits->nbBits+BITS_PER_CHAR-1)>>LOG2_BITS_PER_CHAR)+nchars > bits->buf_size)
- {
- /* Packet is larger than allocated buffer */
- if (bits->owner)
- {
- char *tmp = (char*)speex_realloc(bits->chars, (bits->nbBits>>LOG2_BITS_PER_CHAR)+nchars+1);
- if (tmp)
- {
- bits->buf_size=(bits->nbBits>>LOG2_BITS_PER_CHAR)+nchars+1;
- bits->chars=tmp;
- } else {
- nchars=bits->buf_size-(bits->nbBits>>LOG2_BITS_PER_CHAR)-1;
- speex_warning("Could not resize input buffer: truncating oversize input");
- }
- } else {
- speex_warning("Do not own input buffer: truncating oversize input");
- nchars=bits->buf_size;
- }
- }
-
- speex_bits_flush(bits);
- pos=bits->nbBits>>LOG2_BITS_PER_CHAR;
- for (i=0;i<nchars;i++)
- bits->chars[pos+i]=HTOLS(chars[i]);
- bits->nbBits+=nchars<<LOG2_BITS_PER_CHAR;
-}
-
-int speex_bits_write(SpeexBits *bits, char *chars, int max_nbytes)
-{
- int i;
- int max_nchars = max_nbytes/BYTES_PER_CHAR;
- int charPtr, bitPtr, nbBits;
-
- /* Insert terminator, but save the data so we can put it back after */
- bitPtr=bits->bitPtr;
- charPtr=bits->charPtr;
- nbBits=bits->nbBits;
- speex_bits_insert_terminator(bits);
- bits->bitPtr=bitPtr;
- bits->charPtr=charPtr;
- bits->nbBits=nbBits;
-
- if (max_nchars > ((bits->nbBits+BITS_PER_CHAR-1)>>LOG2_BITS_PER_CHAR))
- max_nchars = ((bits->nbBits+BITS_PER_CHAR-1)>>LOG2_BITS_PER_CHAR);
-
- for (i=0;i<max_nchars;i++)
- chars[i]=HTOLS(bits->chars[i]);
- return max_nchars*BYTES_PER_CHAR;
-}
-
-int speex_bits_write_whole_bytes(SpeexBits *bits, char *chars, int max_nbytes)
-{
- int max_nchars = max_nbytes/BYTES_PER_CHAR;
- int i;
- if (max_nchars > ((bits->nbBits)>>LOG2_BITS_PER_CHAR))
- max_nchars = ((bits->nbBits)>>LOG2_BITS_PER_CHAR);
- for (i=0;i<max_nchars;i++)
- chars[i]=HTOLS(bits->chars[i]);
-
- if (bits->bitPtr>0)
- bits->chars[0]=bits->chars[max_nchars];
- else
- bits->chars[0]=0;
- for (i=1;i<((bits->nbBits)>>LOG2_BITS_PER_CHAR)+1;i++)
- bits->chars[i]=0;
- bits->charPtr=0;
- bits->nbBits &= (BITS_PER_CHAR-1);
- return max_nchars*BYTES_PER_CHAR;
-}
-
-void speex_bits_pack(SpeexBits *bits, int data, int nbBits)
-{
- unsigned int d=data;
-
- if (bits->charPtr+((nbBits+bits->bitPtr)>>LOG2_BITS_PER_CHAR) >= bits->buf_size)
- {
- speex_notify("Buffer too small to pack bits");
- if (bits->owner)
- {
- int new_nchars = ((bits->buf_size+5)*3)>>1;
- char *tmp = (char*)speex_realloc(bits->chars, new_nchars);
- if (tmp)
- {
- bits->buf_size=new_nchars;
- bits->chars=tmp;
- } else {
- speex_warning("Could not resize input buffer: not packing");
- return;
- }
- } else {
- speex_warning("Do not own input buffer: not packing");
- return;
- }
- }
-
- while(nbBits)
- {
- int bit;
- bit = (d>>(nbBits-1))&1;
- bits->chars[bits->charPtr] |= bit<<(BITS_PER_CHAR-1-bits->bitPtr);
- bits->bitPtr++;
-
- if (bits->bitPtr==BITS_PER_CHAR)
- {
- bits->bitPtr=0;
- bits->charPtr++;
- bits->chars[bits->charPtr] = 0;
- }
- bits->nbBits++;
- nbBits--;
- }
-}
-
-int speex_bits_unpack_signed(SpeexBits *bits, int nbBits)
-{
- unsigned int d=speex_bits_unpack_unsigned(bits,nbBits);
- /* If number is negative */
- if (d>>(nbBits-1))
- {
- d |= (-1)<<nbBits;
- }
- return d;
-}
-
-unsigned int speex_bits_unpack_unsigned(SpeexBits *bits, int nbBits)
-{
- unsigned int d=0;
- if ((bits->charPtr<<LOG2_BITS_PER_CHAR)+bits->bitPtr+nbBits>bits->nbBits)
- bits->overflow=1;
- if (bits->overflow)
- return 0;
- while(nbBits)
- {
- d<<=1;
- d |= (bits->chars[bits->charPtr]>>(BITS_PER_CHAR-1 - bits->bitPtr))&1;
- bits->bitPtr++;
- if (bits->bitPtr==BITS_PER_CHAR)
- {
- bits->bitPtr=0;
- bits->charPtr++;
- }
- nbBits--;
- }
- return d;
-}
-
-unsigned int speex_bits_peek_unsigned(SpeexBits *bits, int nbBits)
-{
- unsigned int d=0;
- int bitPtr, charPtr;
- char *chars;
-
- if ((bits->charPtr<<LOG2_BITS_PER_CHAR)+bits->bitPtr+nbBits>bits->nbBits)
- bits->overflow=1;
- if (bits->overflow)
- return 0;
-
- bitPtr=bits->bitPtr;
- charPtr=bits->charPtr;
- chars = bits->chars;
- while(nbBits)
- {
- d<<=1;
- d |= (chars[charPtr]>>(BITS_PER_CHAR-1 - bitPtr))&1;
- bitPtr++;
- if (bitPtr==BITS_PER_CHAR)
- {
- bitPtr=0;
- charPtr++;
- }
- nbBits--;
- }
- return d;
-}
-
-int speex_bits_peek(SpeexBits *bits)
-{
- if ((bits->charPtr<<LOG2_BITS_PER_CHAR)+bits->bitPtr+1>bits->nbBits)
- bits->overflow=1;
- if (bits->overflow)
- return 0;
- return (bits->chars[bits->charPtr]>>(BITS_PER_CHAR-1 - bits->bitPtr))&1;
-}
-
-void speex_bits_advance(SpeexBits *bits, int n)
-{
- if (((bits->charPtr<<LOG2_BITS_PER_CHAR)+bits->bitPtr+n>bits->nbBits) || bits->overflow){
- bits->overflow=1;
- return;
- }
- bits->charPtr += (bits->bitPtr+n) >> LOG2_BITS_PER_CHAR; /* divide by BITS_PER_CHAR */
- bits->bitPtr = (bits->bitPtr+n) & (BITS_PER_CHAR-1); /* modulo by BITS_PER_CHAR */
-}
-
-int speex_bits_remaining(SpeexBits *bits)
-{
- if (bits->overflow)
- return -1;
- else
- return bits->nbBits-((bits->charPtr<<LOG2_BITS_PER_CHAR)+bits->bitPtr);
-}
-
-int speex_bits_nbytes(SpeexBits *bits)
-{
- return ((bits->nbBits+BITS_PER_CHAR-1)>>LOG2_BITS_PER_CHAR);
-}
-
-void speex_bits_insert_terminator(SpeexBits *bits)
-{
- if (bits->bitPtr)
- speex_bits_pack(bits, 0, 1);
- while (bits->bitPtr)
- speex_bits_pack(bits, 1, 1);
-}
diff --git a/3rdparty/speex/libspeex/cb_search.c b/3rdparty/speex/libspeex/cb_search.c
deleted file mode 100644
index 6c4f0680..00000000
--- a/3rdparty/speex/libspeex/cb_search.c
+++ /dev/null
@@ -1,608 +0,0 @@
-/* Copyright (C) 2002-2006 Jean-Marc Valin
- File: cb_search.c
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "cb_search.h"
-#include "filters.h"
-#include "stack_alloc.h"
-#include "vq.h"
-#include "misc.h"
-
-#ifdef _USE_SSE
-#include "cb_search_sse.h"
-#elif defined(ARM4_ASM) || defined(ARM5E_ASM)
-#include "cb_search_arm4.h"
-#elif defined(BFIN_ASM)
-#include "cb_search_bfin.h"
-#endif
-
-#ifndef OVERRIDE_COMPUTE_WEIGHTED_CODEBOOK
-static void compute_weighted_codebook(const signed char *shape_cb, const spx_word16_t *r, spx_word16_t *resp, spx_word16_t *resp2, spx_word32_t *E, int shape_cb_size, int subvect_size, char *stack)
-{
- int i, j, k;
- VARDECL(spx_word16_t *shape);
- ALLOC(shape, subvect_size, spx_word16_t);
- for (i=0;i<shape_cb_size;i++)
- {
- spx_word16_t *res;
-
- res = resp+i*subvect_size;
- for (k=0;k<subvect_size;k++)
- shape[k] = (spx_word16_t)shape_cb[i*subvect_size+k];
- E[i]=0;
-
- /* Compute codeword response using convolution with impulse response */
- for(j=0;j<subvect_size;j++)
- {
- spx_word32_t resj=0;
- spx_word16_t res16;
- for (k=0;k<=j;k++)
- resj = MAC16_16(resj,shape[k],r[j-k]);
-#ifdef FIXED_POINT
- res16 = EXTRACT16(SHR32(resj, 13));
-#else
- res16 = 0.03125f*resj;
-#endif
- /* Compute codeword energy */
- E[i]=MAC16_16(E[i],res16,res16);
- res[j] = res16;
- /*printf ("%d\n", (int)res[j]);*/
- }
- }
-
-}
-#endif
-
-#ifndef OVERRIDE_TARGET_UPDATE
-static inline void target_update(spx_word16_t *t, spx_word16_t g, spx_word16_t *r, int len)
-{
- int n;
- for (n=0;n<len;n++)
- t[n] = SUB16(t[n],PSHR32(MULT16_16(g,r[n]),13));
-}
-#endif
-
-
-
-static void split_cb_search_shape_sign_N1(
-spx_word16_t target[], /* target vector */
-spx_coef_t ak[], /* LPCs for this subframe */
-spx_coef_t awk1[], /* Weighted LPCs for this subframe */
-spx_coef_t awk2[], /* Weighted LPCs for this subframe */
-const void *par, /* Codebook/search parameters*/
-int p, /* number of LPC coeffs */
-int nsf, /* number of samples in subframe */
-spx_sig_t *exc,
-spx_word16_t *r,
-SpeexBits *bits,
-char *stack,
-int update_target
-)
-{
- int i,j,m,q;
- VARDECL(spx_word16_t *resp);
-#ifdef _USE_SSE
- VARDECL(__m128 *resp2);
- VARDECL(__m128 *E);
-#else
- spx_word16_t *resp2;
- VARDECL(spx_word32_t *E);
-#endif
- VARDECL(spx_word16_t *t);
- VARDECL(spx_sig_t *e);
- const signed char *shape_cb;
- int shape_cb_size, subvect_size, nb_subvect;
- const split_cb_params *params;
- int best_index;
- spx_word32_t best_dist;
- int have_sign;
-
- params = (const split_cb_params *) par;
- subvect_size = params->subvect_size;
- nb_subvect = params->nb_subvect;
- shape_cb_size = 1<<params->shape_bits;
- shape_cb = params->shape_cb;
- have_sign = params->have_sign;
- ALLOC(resp, shape_cb_size*subvect_size, spx_word16_t);
-#ifdef _USE_SSE
- ALLOC(resp2, (shape_cb_size*subvect_size)>>2, __m128);
- ALLOC(E, shape_cb_size>>2, __m128);
-#else
- resp2 = resp;
- ALLOC(E, shape_cb_size, spx_word32_t);
-#endif
- ALLOC(t, nsf, spx_word16_t);
- ALLOC(e, nsf, spx_sig_t);
-
- /* FIXME: Do we still need to copy the target? */
- for (i=0;i<nsf;i++)
- t[i]=target[i];
-
- compute_weighted_codebook(shape_cb, r, resp, resp2, E, shape_cb_size, subvect_size, stack);
-
- for (i=0;i<nb_subvect;i++)
- {
- spx_word16_t *x=t+subvect_size*i;
- /*Find new n-best based on previous n-best j*/
- if (have_sign)
- vq_nbest_sign(x, resp2, subvect_size, shape_cb_size, E, 1, &best_index, &best_dist, stack);
- else
- vq_nbest(x, resp2, subvect_size, shape_cb_size, E, 1, &best_index, &best_dist, stack);
-
- speex_bits_pack(bits,best_index,params->shape_bits+have_sign);
-
- {
- int rind;
- spx_word16_t *res;
- spx_word16_t sign=1;
- rind = best_index;
- if (rind>=shape_cb_size)
- {
- sign=-1;
- rind-=shape_cb_size;
- }
- res = resp+rind*subvect_size;
- if (sign>0)
- for (m=0;m<subvect_size;m++)
- t[subvect_size*i+m] = SUB16(t[subvect_size*i+m], res[m]);
- else
- for (m=0;m<subvect_size;m++)
- t[subvect_size*i+m] = ADD16(t[subvect_size*i+m], res[m]);
-
-#ifdef FIXED_POINT
- if (sign)
- {
- for (j=0;j<subvect_size;j++)
- e[subvect_size*i+j]=SHL32(EXTEND32(shape_cb[rind*subvect_size+j]),SIG_SHIFT-5);
- } else {
- for (j=0;j<subvect_size;j++)
- e[subvect_size*i+j]=NEG32(SHL32(EXTEND32(shape_cb[rind*subvect_size+j]),SIG_SHIFT-5));
- }
-#else
- for (j=0;j<subvect_size;j++)
- e[subvect_size*i+j]=sign*0.03125*shape_cb[rind*subvect_size+j];
-#endif
-
- }
-
- for (m=0;m<subvect_size;m++)
- {
- spx_word16_t g;
- int rind;
- spx_word16_t sign=1;
- rind = best_index;
- if (rind>=shape_cb_size)
- {
- sign=-1;
- rind-=shape_cb_size;
- }
-
- q=subvect_size-m;
-#ifdef FIXED_POINT
- g=sign*shape_cb[rind*subvect_size+m];
-#else
- g=sign*0.03125*shape_cb[rind*subvect_size+m];
-#endif
- target_update(t+subvect_size*(i+1), g, r+q, nsf-subvect_size*(i+1));
- }
- }
-
- /* Update excitation */
- /* FIXME: We could update the excitation directly above */
- for (j=0;j<nsf;j++)
- exc[j]=ADD32(exc[j],e[j]);
-
- /* Update target: only update target if necessary */
- if (update_target)
- {
- VARDECL(spx_word16_t *r2);
- ALLOC(r2, nsf, spx_word16_t);
- for (j=0;j<nsf;j++)
- r2[j] = EXTRACT16(PSHR32(e[j] ,6));
- syn_percep_zero16(r2, ak, awk1, awk2, r2, nsf,p, stack);
- for (j=0;j<nsf;j++)
- target[j]=SUB16(target[j],PSHR16(r2[j],2));
- }
-}
-
-
-
-void split_cb_search_shape_sign(
-spx_word16_t target[], /* target vector */
-spx_coef_t ak[], /* LPCs for this subframe */
-spx_coef_t awk1[], /* Weighted LPCs for this subframe */
-spx_coef_t awk2[], /* Weighted LPCs for this subframe */
-const void *par, /* Codebook/search parameters*/
-int p, /* number of LPC coeffs */
-int nsf, /* number of samples in subframe */
-spx_sig_t *exc,
-spx_word16_t *r,
-SpeexBits *bits,
-char *stack,
-int complexity,
-int update_target
-)
-{
- int i,j,k,m,n,q;
- VARDECL(spx_word16_t *resp);
-#ifdef _USE_SSE
- VARDECL(__m128 *resp2);
- VARDECL(__m128 *E);
-#else
- spx_word16_t *resp2;
- VARDECL(spx_word32_t *E);
-#endif
- VARDECL(spx_word16_t *t);
- VARDECL(spx_sig_t *e);
- VARDECL(spx_word16_t *tmp);
- VARDECL(spx_word32_t *ndist);
- VARDECL(spx_word32_t *odist);
- VARDECL(int *itmp);
- VARDECL(spx_word16_t **ot2);
- VARDECL(spx_word16_t **nt2);
- spx_word16_t **ot, **nt;
- VARDECL(int **nind);
- VARDECL(int **oind);
- VARDECL(int *ind);
- const signed char *shape_cb;
- int shape_cb_size, subvect_size, nb_subvect;
- const split_cb_params *params;
- int N=2;
- VARDECL(int *best_index);
- VARDECL(spx_word32_t *best_dist);
- VARDECL(int *best_nind);
- VARDECL(int *best_ntarget);
- int have_sign;
- N=complexity;
- if (N>10)
- N=10;
- /* Complexity isn't as important for the codebooks as it is for the pitch */
- N=(2*N)/3;
- if (N<1)
- N=1;
- if (N==1)
- {
- split_cb_search_shape_sign_N1(target,ak,awk1,awk2,par,p,nsf,exc,r,bits,stack,update_target);
- return;
- }
- ALLOC(ot2, N, spx_word16_t*);
- ALLOC(nt2, N, spx_word16_t*);
- ALLOC(oind, N, int*);
- ALLOC(nind, N, int*);
-
- params = (const split_cb_params *) par;
- subvect_size = params->subvect_size;
- nb_subvect = params->nb_subvect;
- shape_cb_size = 1<<params->shape_bits;
- shape_cb = params->shape_cb;
- have_sign = params->have_sign;
- ALLOC(resp, shape_cb_size*subvect_size, spx_word16_t);
-#ifdef _USE_SSE
- ALLOC(resp2, (shape_cb_size*subvect_size)>>2, __m128);
- ALLOC(E, shape_cb_size>>2, __m128);
-#else
- resp2 = resp;
- ALLOC(E, shape_cb_size, spx_word32_t);
-#endif
- ALLOC(t, nsf, spx_word16_t);
- ALLOC(e, nsf, spx_sig_t);
- ALLOC(ind, nb_subvect, int);
-
- ALLOC(tmp, 2*N*nsf, spx_word16_t);
- for (i=0;i<N;i++)
- {
- ot2[i]=tmp+2*i*nsf;
- nt2[i]=tmp+(2*i+1)*nsf;
- }
- ot=ot2;
- nt=nt2;
- ALLOC(best_index, N, int);
- ALLOC(best_dist, N, spx_word32_t);
- ALLOC(best_nind, N, int);
- ALLOC(best_ntarget, N, int);
- ALLOC(ndist, N, spx_word32_t);
- ALLOC(odist, N, spx_word32_t);
-
- ALLOC(itmp, 2*N*nb_subvect, int);
- for (i=0;i<N;i++)
- {
- nind[i]=itmp+2*i*nb_subvect;
- oind[i]=itmp+(2*i+1)*nb_subvect;
- }
-
- for (i=0;i<nsf;i++)
- t[i]=target[i];
-
- for (j=0;j<N;j++)
- speex_move(&ot[j][0], t, nsf*sizeof(spx_word16_t));
-
- /* Pre-compute codewords response and energy */
- compute_weighted_codebook(shape_cb, r, resp, resp2, E, shape_cb_size, subvect_size, stack);
-
- for (j=0;j<N;j++)
- odist[j]=0;
-
- /*For all subvectors*/
- for (i=0;i<nb_subvect;i++)
- {
- /*"erase" nbest list*/
- for (j=0;j<N;j++)
- ndist[j]=VERY_LARGE32;
-
- /*For all n-bests of previous subvector*/
- for (j=0;j<N;j++)
- {
- spx_word16_t *x=ot[j]+subvect_size*i;
- spx_word32_t tener = 0;
- for (m=0;m<subvect_size;m++)
- tener = MAC16_16(tener, x[m],x[m]);
-#ifdef FIXED_POINT
- tener = SHR32(tener,1);
-#else
- tener *= .5;
-#endif
- /*Find new n-best based on previous n-best j*/
- if (have_sign)
- vq_nbest_sign(x, resp2, subvect_size, shape_cb_size, E, N, best_index, best_dist, stack);
- else
- vq_nbest(x, resp2, subvect_size, shape_cb_size, E, N, best_index, best_dist, stack);
-
- /*For all new n-bests*/
- for (k=0;k<N;k++)
- {
- /* Compute total distance (including previous sub-vectors */
- spx_word32_t err = ADD32(ADD32(odist[j],best_dist[k]),tener);
-
- /*update n-best list*/
- if (err<ndist[N-1])
- {
- for (m=0;m<N;m++)
- {
- if (err < ndist[m])
- {
- for (n=N-1;n>m;n--)
- {
- ndist[n] = ndist[n-1];
- best_nind[n] = best_nind[n-1];
- best_ntarget[n] = best_ntarget[n-1];
- }
- ndist[m] = err;
- best_nind[n] = best_index[k];
- best_ntarget[n] = j;
- break;
- }
- }
- }
- }
- if (i==0)
- break;
- }
- for (j=0;j<N;j++)
- {
- /*previous target (we don't care what happened before*/
- for (m=(i+1)*subvect_size;m<nsf;m++)
- nt[j][m]=ot[best_ntarget[j]][m];
-
- /* New code: update the rest of the target only if it's worth it */
- for (m=0;m<subvect_size;m++)
- {
- spx_word16_t g;
- int rind;
- spx_word16_t sign=1;
- rind = best_nind[j];
- if (rind>=shape_cb_size)
- {
- sign=-1;
- rind-=shape_cb_size;
- }
-
- q=subvect_size-m;
-#ifdef FIXED_POINT
- g=sign*shape_cb[rind*subvect_size+m];
-#else
- g=sign*0.03125*shape_cb[rind*subvect_size+m];
-#endif
- target_update(nt[j]+subvect_size*(i+1), g, r+q, nsf-subvect_size*(i+1));
- }
-
- for (q=0;q<nb_subvect;q++)
- nind[j][q]=oind[best_ntarget[j]][q];
- nind[j][i]=best_nind[j];
- }
-
- /*update old-new data*/
- /* just swap pointers instead of a long copy */
- {
- spx_word16_t **tmp2;
- tmp2=ot;
- ot=nt;
- nt=tmp2;
- }
- for (j=0;j<N;j++)
- for (m=0;m<nb_subvect;m++)
- oind[j][m]=nind[j][m];
- for (j=0;j<N;j++)
- odist[j]=ndist[j];
- }
-
- /*save indices*/
- for (i=0;i<nb_subvect;i++)
- {
- ind[i]=nind[0][i];
- speex_bits_pack(bits,ind[i],params->shape_bits+have_sign);
- }
-
- /* Put everything back together */
- for (i=0;i<nb_subvect;i++)
- {
- int rind;
- spx_word16_t sign=1;
- rind = ind[i];
- if (rind>=shape_cb_size)
- {
- sign=-1;
- rind-=shape_cb_size;
- }
-#ifdef FIXED_POINT
- if (sign==1)
- {
- for (j=0;j<subvect_size;j++)
- e[subvect_size*i+j]=SHL32(EXTEND32(shape_cb[rind*subvect_size+j]),SIG_SHIFT-5);
- } else {
- for (j=0;j<subvect_size;j++)
- e[subvect_size*i+j]=NEG32(SHL32(EXTEND32(shape_cb[rind*subvect_size+j]),SIG_SHIFT-5));
- }
-#else
- for (j=0;j<subvect_size;j++)
- e[subvect_size*i+j]=sign*0.03125*shape_cb[rind*subvect_size+j];
-#endif
- }
- /* Update excitation */
- for (j=0;j<nsf;j++)
- exc[j]=ADD32(exc[j],e[j]);
-
- /* Update target: only update target if necessary */
- if (update_target)
- {
- VARDECL(spx_word16_t *r2);
- ALLOC(r2, nsf, spx_word16_t);
- for (j=0;j<nsf;j++)
- r2[j] = EXTRACT16(PSHR32(e[j] ,6));
- syn_percep_zero16(r2, ak, awk1, awk2, r2, nsf,p, stack);
- for (j=0;j<nsf;j++)
- target[j]=SUB16(target[j],PSHR16(r2[j],2));
- }
-}
-
-
-void split_cb_shape_sign_unquant(
-spx_sig_t *exc,
-const void *par, /* non-overlapping codebook */
-int nsf, /* number of samples in subframe */
-SpeexBits *bits,
-char *stack,
-spx_int32_t *seed
-)
-{
- int i,j;
- VARDECL(int *ind);
- VARDECL(int *signs);
- const signed char *shape_cb;
- int shape_cb_size, subvect_size, nb_subvect;
- const split_cb_params *params;
- int have_sign;
-
- params = (const split_cb_params *) par;
- subvect_size = params->subvect_size;
- nb_subvect = params->nb_subvect;
- shape_cb_size = 1<<params->shape_bits;
- shape_cb = params->shape_cb;
- have_sign = params->have_sign;
-
- ALLOC(ind, nb_subvect, int);
- ALLOC(signs, nb_subvect, int);
-
- /* Decode codewords and gains */
- for (i=0;i<nb_subvect;i++)
- {
- if (have_sign)
- signs[i] = speex_bits_unpack_unsigned(bits, 1);
- else
- signs[i] = 0;
- ind[i] = speex_bits_unpack_unsigned(bits, params->shape_bits);
- }
- /* Compute decoded excitation */
- for (i=0;i<nb_subvect;i++)
- {
- spx_word16_t s=1;
- if (signs[i])
- s=-1;
-#ifdef FIXED_POINT
- if (s==1)
- {
- for (j=0;j<subvect_size;j++)
- exc[subvect_size*i+j]=SHL32(EXTEND32(shape_cb[ind[i]*subvect_size+j]),SIG_SHIFT-5);
- } else {
- for (j=0;j<subvect_size;j++)
- exc[subvect_size*i+j]=NEG32(SHL32(EXTEND32(shape_cb[ind[i]*subvect_size+j]),SIG_SHIFT-5));
- }
-#else
- for (j=0;j<subvect_size;j++)
- exc[subvect_size*i+j]+=s*0.03125*shape_cb[ind[i]*subvect_size+j];
-#endif
- }
-}
-
-void noise_codebook_quant(
-spx_word16_t target[], /* target vector */
-spx_coef_t ak[], /* LPCs for this subframe */
-spx_coef_t awk1[], /* Weighted LPCs for this subframe */
-spx_coef_t awk2[], /* Weighted LPCs for this subframe */
-const void *par, /* Codebook/search parameters*/
-int p, /* number of LPC coeffs */
-int nsf, /* number of samples in subframe */
-spx_sig_t *exc,
-spx_word16_t *r,
-SpeexBits *bits,
-char *stack,
-int complexity,
-int update_target
-)
-{
- int i;
- VARDECL(spx_word16_t *tmp);
- ALLOC(tmp, nsf, spx_word16_t);
- residue_percep_zero16(target, ak, awk1, awk2, tmp, nsf, p, stack);
-
- for (i=0;i<nsf;i++)
- exc[i]+=SHL32(EXTEND32(tmp[i]),8);
- for (i=0;i<nsf;i++)
- target[i]=0;
-}
-
-
-void noise_codebook_unquant(
-spx_sig_t *exc,
-const void *par, /* non-overlapping codebook */
-int nsf, /* number of samples in subframe */
-SpeexBits *bits,
-char *stack,
-spx_int32_t *seed
-)
-{
- int i;
- /* FIXME: This is bad, but I don't think the function ever gets called anyway */
- for (i=0;i<nsf;i++)
- exc[i]=SHL32(EXTEND32(speex_rand(1, seed)),SIG_SHIFT);
-}
diff --git a/3rdparty/speex/libspeex/cb_search.h b/3rdparty/speex/libspeex/cb_search.h
deleted file mode 100644
index fd5c110e..00000000
--- a/3rdparty/speex/libspeex/cb_search.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin & David Rowe */
-/**
- @file cb_search.h
- @brief Overlapped codebook search
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef CB_SEARCH_H
-#define CB_SEARCH_H
-
-#include <speex/speex_bits.h>
-#include "misc.h"
-
-/** Split codebook parameters. */
-typedef struct split_cb_params {
- int subvect_size;
- int nb_subvect;
- const signed char *shape_cb;
- int shape_bits;
- int have_sign;
-} split_cb_params;
-
-
-void split_cb_search_shape_sign(
-spx_word16_t target[], /* target vector */
-spx_coef_t ak[], /* LPCs for this subframe */
-spx_coef_t awk1[], /* Weighted LPCs for this subframe */
-spx_coef_t awk2[], /* Weighted LPCs for this subframe */
-const void *par, /* Codebook/search parameters */
-int p, /* number of LPC coeffs */
-int nsf, /* number of samples in subframe */
-spx_sig_t *exc,
-spx_word16_t *r,
-SpeexBits *bits,
-char *stack,
-int complexity,
-int update_target
-);
-
-void split_cb_shape_sign_unquant(
-spx_sig_t *exc,
-const void *par, /* non-overlapping codebook */
-int nsf, /* number of samples in subframe */
-SpeexBits *bits,
-char *stack,
-spx_int32_t *seed
-);
-
-
-void noise_codebook_quant(
-spx_word16_t target[], /* target vector */
-spx_coef_t ak[], /* LPCs for this subframe */
-spx_coef_t awk1[], /* Weighted LPCs for this subframe */
-spx_coef_t awk2[], /* Weighted LPCs for this subframe */
-const void *par, /* Codebook/search parameters */
-int p, /* number of LPC coeffs */
-int nsf, /* number of samples in subframe */
-spx_sig_t *exc,
-spx_word16_t *r,
-SpeexBits *bits,
-char *stack,
-int complexity,
-int update_target
-);
-
-
-void noise_codebook_unquant(
-spx_sig_t *exc,
-const void *par, /* non-overlapping codebook */
-int nsf, /* number of samples in subframe */
-SpeexBits *bits,
-char *stack,
-spx_int32_t *seed
-);
-
-#endif
diff --git a/3rdparty/speex/libspeex/cb_search_arm4.h b/3rdparty/speex/libspeex/cb_search_arm4.h
deleted file mode 100644
index 19b752a4..00000000
--- a/3rdparty/speex/libspeex/cb_search_arm4.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/* Copyright (C) 2004 Jean-Marc Valin */
-/**
- @file cb_search_arm4.h
- @brief Fixed codebook functions (ARM4 version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/* This optimization is temporaly disabled until it is fixed to account for the fact
- that "r" is now a 16-bit array */
-#if 0
-#define OVERRIDE_COMPUTE_WEIGHTED_CODEBOOK
-static void compute_weighted_codebook(const signed char *shape_cb, const spx_word16_t *r, spx_word16_t *resp, spx_word16_t *resp2, spx_word32_t *E, int shape_cb_size, int subvect_size, char *stack)
-{
- int i, j, k;
- //const signed char *shape;
- for (i=0;i<shape_cb_size;i+=4)
- {
-
- //shape = shape_cb;
- E[0]=0;
- E[1]=0;
- E[2]=0;
- E[3]=0;
-
- /* Compute codeword response using convolution with impulse response */
- for(j=0;j<subvect_size;j++)
- {
-#if 1
- spx_word16_t *res;
- res = resp+j;
- spx_word32_t resj0,resj1,resj2,resj3;
- spx_word32_t dead1, dead2, dead3, dead4, dead5, dead6, dead7, dead8;
- __asm__ __volatile__ (
- "mov %0, #0 \n\t"
- "mov %1, #0 \n\t"
- "mov %2, #0 \n\t"
- "mov %3, #0 \n\t"
- ".weighted%=: \n\t"
- "ldrsb %8, [%6] \n\t"
- "ldr %10, [%5], #-4 \n\t"
- "mov %9, %6 \n\t"
- "ldrsb %11, [%9, %7]! \n\t"
- "mla %0, %10, %8, %0 \n\t"
- "ldrsb %8, [%9, %7]! \n\t"
- "mla %1, %10, %11, %1 \n\t"
- "ldrsb %11, [%9, %7]! \n\t"
- "mla %2, %10, %8, %2 \n\t"
- "subs %4, %4, #1 \n\t"
- "mla %3, %10, %11, %3 \n\t"
- "add %6, %6, #1 \n\t"
- "bne .weighted%= \n\t"
- : "=r" (resj0), "=r" (resj1), "=r" (resj2), "=r" (resj3),
- "=r" (dead1), "=r" (dead2), "=r" (dead3), "=r" (dead4),
- "=r" (dead5), "=r" (dead6), "=r" (dead7), "=r" (dead8)
- : "4" (j+1), "5" (r+j), "6" (shape_cb), "7" (subvect_size)
- : "cc", "memory");
-#else
- spx_word16_t *res;
- res = resp+j;
- spx_word32_t resj0=0;
- spx_word32_t resj1=0;
- spx_word32_t resj2=0;
- spx_word32_t resj3=0;
- for (k=0;k<=j;k++)
- {
- const signed char *shape=shape_cb+k;
- resj0 = MAC16_16(resj0,*shape,r[j-k]);
- shape += subvect_size;
- resj1 = MAC16_16(resj1,*shape,r[j-k]);
- shape += subvect_size;
- resj2 = MAC16_16(resj2,*shape,r[j-k]);
- shape += subvect_size;
- resj3 = MAC16_16(resj3,*shape,r[j-k]);
- shape += subvect_size;
- }
-#endif
-
-#ifdef FIXED_POINT
- resj0 = SHR(resj0, 11);
- resj1 = SHR(resj1, 11);
- resj2 = SHR(resj2, 11);
- resj3 = SHR(resj3, 11);
-#else
- resj0 *= 0.03125;
- resj1 *= 0.03125;
- resj2 *= 0.03125;
- resj3 *= 0.03125;
-#endif
-
- /* Compute codeword energy */
- E[0]=ADD32(E[0],MULT16_16(resj0,resj0));
- E[1]=ADD32(E[1],MULT16_16(resj1,resj1));
- E[2]=ADD32(E[2],MULT16_16(resj2,resj2));
- E[3]=ADD32(E[3],MULT16_16(resj3,resj3));
- *res = resj0;
- res += subvect_size;
- *res = resj1;
- res += subvect_size;
- *res = resj2;
- res += subvect_size;
- *res = resj3;
- res += subvect_size;
- }
- resp += subvect_size<<2;
- shape_cb += subvect_size<<2;
- E+=4;
- }
-
-}
-#endif
diff --git a/3rdparty/speex/libspeex/cb_search_bfin.h b/3rdparty/speex/libspeex/cb_search_bfin.h
deleted file mode 100644
index ae9cf834..00000000
--- a/3rdparty/speex/libspeex/cb_search_bfin.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/* Copyright (C) 2005 Analog Devices */
-/**
- @author Jean-Marc Valin
- @file cb_search_bfin.h
- @brief Fixed codebook functions (Blackfin version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#define OVERRIDE_COMPUTE_WEIGHTED_CODEBOOK
-void compute_weighted_codebook(const signed char *shape_cb, const spx_word16_t *r, spx_word16_t *resp, spx_word16_t *resp2, spx_word32_t *E, int shape_cb_size, int subvect_size, char *stack)
-{
- int i;
- for (i=0;i<shape_cb_size;i++)
- {
- __asm__ __volatile__ (
- "P0 = %0;\n\t"
- "LC0 = P0;\n\t"
- "P1 = %1;\n\t"
- "P2 = %2;\n\t"
- "P3 = %3;\n\t"
- "P0 = 1;\n\t"
- "L0 = 0;\n\t"
- "L1 = 0;\n\t"
- "R2 = 0;\n\t"
- "A1 = 0;\n\t"
- "LOOP outter%= LC0;\n\t"
- "LOOP_BEGIN outter%=;\n\t"
- "A0 = 0;\n\t"
- "P4 = P1;\n\t"
- "I1 = P2;\n\t"
- "R0 = B[P4++] (X) || R1.L = W[I1--];\n\t"
- "LOOP inner%= LC1 = P0;\n\t"
- "LOOP_BEGIN inner%=;\n\t"
- "A0 += R0.L*R1.L (IS) || R0 = B[P4++] (X) || R1.L = W[I1--];\n\t"
- "LOOP_END inner%=;\n\t"
- "R0 = A0;\n\t"
- "R0 >>>= 13;\n\t"
- "A1 += R0.L*R0.L (IS);\n\t"
- "W[P3++] = R0;\n\t"
- "P0 += 1;\n\t"
- "P2 += 2;\n\t"
- "LOOP_END outter%=;\n\t"
- "P4 = %4;\n\t"
- "R1 = A1;\n\t"
- "[P4] = R1;\n\t"
- :
- : "m" (subvect_size), "m" (shape_cb), "m" (r), "m" (resp), "m" (E)
- : "A0", "P0", "P1", "P2", "P3", "P4", "R0", "R1", "R2", "I0", "I1", "L0",
- "L1", "A0", "A1", "memory"
-#if !(__GNUC__ == 3)
- , "LC0", "LC1" /* gcc 3.4 doesn't know about LC registers */
-#endif
- );
- shape_cb += subvect_size;
- resp += subvect_size;
- E++;
- }
-}
-
-#define OVERRIDE_TARGET_UPDATE
-static inline void target_update(spx_word16_t *t, spx_word16_t g, spx_word16_t *r, int len)
-{
- if (!len)
- return;
- __asm__ __volatile__
- (
- "I0 = %0;\n\t"
- "I1 = %1;\n\t"
- "L0 = 0;\n\t"
- "L1 = 0;\n\t"
- "R2 = 4096;\n\t"
- "LOOP tupdate%= LC0 = %3;\n\t"
- "LOOP_BEGIN tupdate%=;\n\t"
- "R0.L = W[I0] || R1.L = W[I1++];\n\t"
- "R1 = (A1 = R1.L*%2.L) (IS);\n\t"
- "R1 = R1 + R2;\n\t"
- "R1 >>>= 13;\n\t"
- "R0.L = R0.L - R1.L;\n\t"
- "W[I0++] = R0.L;\n\t"
- "LOOP_END tupdate%=;\n\t"
- :
- : "a" (t), "a" (r), "d" (g), "a" (len)
- : "R0", "R1", "R2", "A1", "I0", "I1", "L0", "L1"
- );
-}
diff --git a/3rdparty/speex/libspeex/cb_search_sse.h b/3rdparty/speex/libspeex/cb_search_sse.h
deleted file mode 100644
index 8b039686..00000000
--- a/3rdparty/speex/libspeex/cb_search_sse.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Copyright (C) 2004 Jean-Marc Valin */
-/**
- @file cb_search_sse.h
- @brief Fixed codebook functions (SSE version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <xmmintrin.h>
-
-static inline void _spx_mm_getr_ps (__m128 U, float *__Z, float *__Y, float *__X, float *__W)
-{
- union {
- float __a[4];
- __m128 __v;
- } __u;
-
- __u.__v = U;
-
- *__Z = __u.__a[0];
- *__Y = __u.__a[1];
- *__X = __u.__a[2];
- *__W = __u.__a[3];
-
-}
-
-#define OVERRIDE_COMPUTE_WEIGHTED_CODEBOOK
-static void compute_weighted_codebook(const signed char *shape_cb, const spx_sig_t *_r, float *resp, __m128 *resp2, __m128 *E, int shape_cb_size, int subvect_size, char *stack)
-{
- int i, j, k;
- __m128 resj, EE;
- VARDECL(__m128 *r);
- VARDECL(__m128 *shape);
- ALLOC(r, subvect_size, __m128);
- ALLOC(shape, subvect_size, __m128);
- for(j=0;j<subvect_size;j++)
- r[j] = _mm_load_ps1(_r+j);
- for (i=0;i<shape_cb_size;i+=4)
- {
- float *_res = resp+i*subvect_size;
- const signed char *_shape = shape_cb+i*subvect_size;
- EE = _mm_setzero_ps();
- for(j=0;j<subvect_size;j++)
- {
- shape[j] = _mm_setr_ps(0.03125*_shape[j], 0.03125*_shape[subvect_size+j], 0.03125*_shape[2*subvect_size+j], 0.03125*_shape[3*subvect_size+j]);
- }
- for(j=0;j<subvect_size;j++)
- {
- resj = _mm_setzero_ps();
- for (k=0;k<=j;k++)
- resj = _mm_add_ps(resj, _mm_mul_ps(shape[k],r[j-k]));
- _spx_mm_getr_ps(resj, _res+j, _res+subvect_size+j, _res+2*subvect_size+j, _res+3*subvect_size+j);
- *resp2++ = resj;
- EE = _mm_add_ps(EE, _mm_mul_ps(resj, resj));
- }
- E[i>>2] = EE;
- }
-}
diff --git a/3rdparty/speex/libspeex/echo_diagnostic.m b/3rdparty/speex/libspeex/echo_diagnostic.m
deleted file mode 100644
index aebf3906..00000000
--- a/3rdparty/speex/libspeex/echo_diagnostic.m
+++ /dev/null
@@ -1,72 +0,0 @@
-% Attempts to diagnose AEC problems from recorded samples
-%
-% out = echo_diagnostic(rec_file, play_file, out_file, tail_length)
-%
-% Computes the full matrix inversion to cancel echo from the
-% recording 'rec_file' using the far end signal 'play_file' using
-% a filter length of 'tail_length'. The output is saved to 'out_file'.
-function out = echo_diagnostic(rec_file, play_file, out_file, tail_length)
-
-F=fopen(rec_file,'rb');
-rec=fread(F,Inf,'short');
-fclose (F);
-F=fopen(play_file,'rb');
-play=fread(F,Inf,'short');
-fclose (F);
-
-rec = [rec; zeros(1024,1)];
-play = [play; zeros(1024,1)];
-
-N = length(rec);
-corr = real(ifft(fft(rec).*conj(fft(play))));
-acorr = real(ifft(fft(play).*conj(fft(play))));
-
-[a,b] = max(corr);
-
-if b > N/2
- b = b-N;
-end
-printf ("Far end to near end delay is %d samples\n", b);
-if (b > .3*tail_length)
- printf ('This is too much delay, try delaying the far-end signal a bit\n');
-else if (b < 0)
- printf ('You have a negative delay, the echo canceller has no chance to cancel anything!\n');
- else
- printf ('Delay looks OK.\n');
- end
- end
-end
-N2 = round(N/2);
-corr1 = real(ifft(fft(rec(1:N2)).*conj(fft(play(1:N2)))));
-corr2 = real(ifft(fft(rec(N2+1:end)).*conj(fft(play(N2+1:end)))));
-
-[a,b1] = max(corr1);
-if b1 > N2/2
- b1 = b1-N2;
-end
-[a,b2] = max(corr2);
-if b2 > N2/2
- b2 = b2-N2;
-end
-drift = (b1-b2)/N2;
-printf ('Drift estimate is %f%% (%d samples)\n', 100*drift, b1-b2);
-if abs(b1-b2) < 10
- printf ('A drift of a few (+-10) samples is normal.\n');
-else
- if abs(b1-b2) < 30
- printf ('There may be (not sure) excessive clock drift. Is the capture and playback done on the same soundcard?\n');
- else
- printf ('Your clock is drifting! No way the AEC will be able to do anything with that. Most likely, you''re doing capture and playback from two different cards.\n');
- end
- end
-end
-acorr(1) = .001+1.00001*acorr(1);
-AtA = toeplitz(acorr(1:tail_length));
-bb = corr(1:tail_length);
-h = AtA\bb;
-
-out = (rec - filter(h, 1, play));
-
-F=fopen(out_file,'w');
-fwrite(F,out,'short');
-fclose (F);
diff --git a/3rdparty/speex/libspeex/exc_10_16_table.c b/3rdparty/speex/libspeex/exc_10_16_table.c
deleted file mode 100644
index 98ae357d..00000000
--- a/3rdparty/speex/libspeex/exc_10_16_table.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: exc_10_16_table.c
- Codebook for excitation in narrowband CELP mode (3200 bps)
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-const signed char exc_10_16_table[160] = {
-22,39,14,44,11,35,-2,23,-4,6,
-46,-28,13,-27,-23,12,4,20,-5,9,
-37,-18,-23,23,0,9,-6,-20,4,-1,
--17,-5,-4,17,0,1,9,-2,1,2,
-2,-12,8,-25,39,15,9,16,-55,-11,
-9,11,5,10,-2,-60,8,13,-6,11,
--16,27,-47,-12,11,1,16,-7,9,-3,
--29,9,-14,25,-19,34,36,12,40,-10,
--3,-24,-14,-37,-21,-35,-2,-36,3,-6,
-67,28,6,-17,-3,-12,-16,-15,-17,-7,
--59,-36,-13,1,7,1,2,10,2,11,
-13,10,8,-2,7,3,5,4,2,2,
--3,-8,4,-5,6,7,-42,15,35,-2,
--46,38,28,-20,-9,1,7,-3,0,-2,
-0,0,0,0,0,0,0,0,0,0,
--15,-28,52,32,5,-5,-17,-20,-10,-1};
diff --git a/3rdparty/speex/libspeex/exc_10_32_table.c b/3rdparty/speex/libspeex/exc_10_32_table.c
deleted file mode 100644
index 1ee56a25..00000000
--- a/3rdparty/speex/libspeex/exc_10_32_table.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: exc_10_32_table.c
- Codebook for excitation in narrowband CELP mode (4000 bps)
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-const signed char exc_10_32_table[320] = {
-7,17,17,27,25,22,12,4,-3,0,
-28,-36,39,-24,-15,3,-9,15,-5,10,
-31,-28,11,31,-21,9,-11,-11,-2,-7,
--25,14,-22,31,4,-14,19,-12,14,-5,
-4,-7,4,-5,9,0,-2,42,-47,-16,
-1,8,0,9,23,-57,0,28,-11,6,
--31,55,-45,3,-5,4,2,-2,4,-7,
--3,6,-2,7,-3,12,5,8,54,-10,
-8,-7,-8,-24,-25,-27,-14,-5,8,5,
-44,23,5,-9,-11,-11,-13,-9,-12,-8,
--29,-8,-22,6,-15,3,-12,-1,-5,-3,
-34,-1,29,-16,17,-4,12,2,1,4,
--2,-4,2,-1,11,-3,-52,28,30,-9,
--32,25,44,-20,-24,4,6,-1,0,0,
-0,0,0,0,0,0,0,0,0,0,
--25,-10,22,29,13,-13,-22,-13,-4,0,
--4,-16,10,15,-36,-24,28,25,-1,-3,
-66,-33,-11,-15,6,0,3,4,-2,5,
-24,-20,-47,29,19,-2,-4,-1,0,-1,
--2,3,1,8,-11,5,5,-57,28,28,
-0,-16,4,-4,12,-6,-1,2,-20,61,
--9,24,-22,-42,29,6,17,8,4,2,
--65,15,8,10,5,6,5,3,2,-2,
--3,5,-9,4,-5,23,13,23,-3,-63,
-3,-5,-4,-6,0,-3,23,-36,-46,9,
-5,5,8,4,9,-5,1,-3,10,1,
--6,10,-11,24,-47,31,22,-12,14,-10,
-6,11,-7,-7,7,-31,51,-12,-6,7,
-6,-17,9,-11,-20,52,-19,3,-6,-6,
--8,-5,23,-41,37,1,-21,10,-14,8,
-7,5,-15,-15,23,39,-26,-33,7,2,
--32,-30,-21,-8,4,12,17,15,14,11};
diff --git a/3rdparty/speex/libspeex/exc_20_32_table.c b/3rdparty/speex/libspeex/exc_20_32_table.c
deleted file mode 100644
index e4098b8d..00000000
--- a/3rdparty/speex/libspeex/exc_20_32_table.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: exc_20_32_table.c
- Codebook for excitation in narrowband CELP mode (2000 bps)
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-const signed char exc_20_32_table[640] = {
-12,32,25,46,36,33,9,14,-3,6,1,-8,0,-10,-5,-7,-7,-7,-5,-5,
-31,-27,24,-32,-4,10,-11,21,-3,19,23,-9,22,24,-10,-1,-10,-13,-7,-11,
-42,-33,31,19,-8,0,-10,-16,1,-21,-17,10,-8,14,8,4,11,-2,5,-2,
--33,11,-16,33,11,-4,9,-4,11,2,6,-5,8,-5,11,-4,-6,26,-36,-16,
-0,4,-2,-8,12,6,-1,34,-46,-22,9,9,21,9,5,-66,-5,26,2,10,
-13,2,19,9,12,-81,3,13,13,0,-14,22,-35,6,-7,-4,6,-6,10,-6,
--31,38,-33,0,-10,-11,5,-12,12,-17,5,0,-6,13,-9,10,8,25,33,2,
--12,8,-6,10,-2,21,7,17,43,5,11,-7,-9,-20,-36,-20,-23,-4,-4,-3,
-27,-9,-9,-49,-39,-38,-11,-9,6,5,23,25,5,3,3,4,1,2,-3,-1,
-87,39,17,-21,-9,-19,-9,-15,-13,-14,-17,-11,-10,-11,-8,-6,-1,-3,-3,-1,
--54,-34,-27,-8,-11,-4,-5,0,0,4,8,6,9,7,9,7,6,5,5,5,
-48,10,19,-10,12,-1,9,-3,2,5,-3,2,-2,-2,0,-2,-26,6,9,-7,
--16,-9,2,7,7,-5,-43,11,22,-11,-9,34,37,-15,-13,-6,1,-1,1,1,
--64,56,52,-11,-27,5,4,3,1,2,1,3,-1,-4,-4,-10,-7,-4,-4,2,
--1,-7,-7,-12,-10,-15,-9,-5,-5,-11,-16,-13,6,16,4,-13,-16,-10,-4,2,
--47,-13,25,47,19,-14,-20,-8,-17,0,-3,-13,1,6,-17,-14,15,1,10,6,
--24,0,-10,19,-69,-8,14,49,17,-5,33,-29,3,-4,0,2,-8,5,-6,2,
-120,-56,-12,-47,23,-9,6,-5,1,2,-5,1,-10,4,-1,-1,4,-1,0,-3,
-30,-52,-67,30,22,11,-1,-4,3,0,7,2,0,1,-10,-4,-8,-13,5,1,
-1,-1,5,13,-9,-3,-10,-62,22,48,-4,-6,2,3,5,1,1,4,1,13,
-3,-20,10,-9,13,-2,-4,9,-20,44,-1,20,-32,-67,19,0,28,11,8,2,
--11,15,-19,-53,31,2,34,10,6,-4,-58,8,10,13,14,1,12,2,0,0,
--128,37,-8,44,-9,26,-3,18,2,6,11,-1,9,1,5,3,0,1,1,2,
-12,3,-2,-3,7,25,9,18,-6,-37,3,-8,-16,3,-10,-7,17,-34,-44,11,
-17,-15,-3,-16,-1,-13,11,-46,-65,-2,8,13,2,4,4,5,15,5,9,6,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
--9,19,-12,12,-28,38,29,-1,12,2,5,23,-10,3,4,-15,21,-4,3,3,
-6,17,-9,-4,-8,-20,26,5,-10,6,1,-19,18,-15,-12,47,-6,-2,-7,-9,
--1,-17,-2,-2,-14,30,-14,2,-7,-4,-1,-12,11,-25,16,-3,-12,11,-7,7,
--17,1,19,-28,31,-7,-10,7,-10,3,12,5,-16,6,24,41,-29,-54,0,1,
-7,-1,5,-6,13,10,-4,-8,8,-9,-27,-53,-38,-1,10,19,17,16,12,12,
-0,3,-7,-4,13,12,-31,-14,6,-5,3,5,17,43,50,25,10,1,-6,-2};
diff --git a/3rdparty/speex/libspeex/exc_5_256_table.c b/3rdparty/speex/libspeex/exc_5_256_table.c
deleted file mode 100644
index 4137996d..00000000
--- a/3rdparty/speex/libspeex/exc_5_256_table.c
+++ /dev/null
@@ -1,290 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: exc_5_256_table.c
- Codebook for excitation in narrowband CELP mode (12800 bps)
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-const signed char exc_5_256_table[1280] = {
--8,-37,5,-43,5,
-73,61,39,12,-3,
--61,-32,2,42,30,
--3,17,-27,9,34,
-20,-1,-5,2,23,
--7,-46,26,53,-47,
-20,-2,-33,-89,-51,
--64,27,11,15,-34,
--5,-56,25,-9,-1,
--29,1,40,67,-23,
--16,16,33,19,7,
-14,85,22,-10,-10,
--12,-7,-1,52,89,
-29,11,-20,-37,-46,
--15,17,-24,-28,24,
-2,1,0,23,-101,
-23,14,-1,-23,-18,
-9,5,-13,38,1,
--28,-28,4,27,51,
--26,34,-40,35,47,
-54,38,-54,-26,-6,
-42,-25,13,-30,-36,
-18,41,-4,-33,23,
--32,-7,-4,51,-3,
-17,-52,56,-47,36,
--2,-21,36,10,8,
--33,31,19,9,-5,
--40,10,-9,-21,19,
-18,-78,-18,-5,0,
--26,-36,-47,-51,-44,
-18,40,27,-2,29,
-49,-26,2,32,-54,
-30,-73,54,3,-5,
-36,22,53,10,-1,
--84,-53,-29,-5,3,
--44,53,-51,4,22,
-71,-35,-1,33,-5,
--27,-7,36,17,-23,
--39,16,-9,-55,-15,
--20,39,-35,6,-39,
--14,18,48,-64,-17,
--15,9,39,81,37,
--68,37,47,-21,-6,
--104,13,6,9,-2,
-35,8,-23,18,42,
-45,21,33,-5,-49,
-9,-6,-43,-56,39,
-2,-16,-25,87,1,
--3,-9,17,-25,-11,
--9,-1,10,2,-14,
--14,4,-1,-10,28,
--23,40,-32,26,-9,
-26,4,-27,-23,3,
-42,-60,1,49,-3,
-27,10,-52,-40,-2,
-18,45,-23,17,-44,
-3,-3,17,-46,52,
--40,-47,25,75,31,
--49,53,30,-30,-32,
--36,38,-6,-15,-16,
-54,-27,-48,3,38,
--29,-32,-22,-14,-4,
--23,-13,32,-39,9,
-8,-45,-13,34,-16,
-49,40,32,31,28,
-23,23,32,47,59,
--68,8,62,44,25,
--14,-24,-65,-16,36,
-67,-25,-38,-21,4,
--33,-2,42,5,-63,
-40,11,26,-42,-23,
--61,79,-31,23,-20,
-10,-32,53,-25,-36,
-10,-26,-5,3,0,
--71,5,-10,-37,1,
--24,21,-54,-17,1,
--29,-25,-15,-27,32,
-68,45,-16,-37,-18,
--5,1,0,-77,71,
--6,3,-20,71,-67,
-29,-35,10,-30,19,
-4,16,17,5,0,
--14,19,2,28,26,
-59,3,2,24,39,
-55,-50,-45,-18,-17,
-33,-35,14,-1,1,
-8,87,-35,-29,0,
--27,13,-7,23,-13,
-37,-40,50,-35,14,
-19,-7,-14,49,54,
--5,22,-2,-29,-8,
--27,38,13,27,48,
-12,-41,-21,-15,28,
-7,-16,-24,-19,-20,
-11,-20,9,2,13,
-23,-20,11,27,-27,
-71,-69,8,2,-6,
-22,12,16,16,9,
--16,-8,-17,1,25,
-1,40,-37,-33,66,
-94,53,4,-22,-25,
--41,-42,25,35,-16,
--15,57,31,-29,-32,
-21,16,-60,45,15,
--1,7,57,-26,-47,
--29,11,8,15,19,
--105,-8,54,27,10,
--17,6,-12,-1,-10,
-4,0,23,-10,31,
-13,11,10,12,-64,
-23,-3,-8,-19,16,
-52,24,-40,16,10,
-40,5,9,0,-13,
--7,-21,-8,-6,-7,
--21,59,16,-53,18,
--60,11,-47,14,-18,
-25,-13,-24,4,-39,
-16,-28,54,26,-67,
-30,27,-20,-52,20,
--12,55,12,18,-16,
-39,-14,-6,-26,56,
--88,-55,12,25,26,
--37,6,75,0,-34,
--81,54,-30,1,-7,
-49,-23,-14,21,10,
--62,-58,-57,-47,-34,
-15,-4,34,-78,31,
-25,-11,7,50,-10,
-42,-63,14,-36,-4,
-57,55,57,53,42,
--42,-1,15,40,37,
-15,25,-11,6,1,
-31,-2,-6,-1,-7,
--64,34,28,30,-1,
-3,21,0,-88,-12,
--56,25,-28,40,8,
--28,-14,9,12,2,
--6,-17,22,49,-6,
--26,14,28,-20,4,
--12,50,35,40,13,
--38,-58,-29,17,30,
-22,60,26,-54,-39,
--12,58,-28,-63,10,
--21,-8,-12,26,-62,
-6,-10,-11,-22,-6,
--7,4,1,18,2,
--70,11,14,4,13,
-19,-24,-34,24,67,
-17,51,-21,13,23,
-54,-30,48,1,-13,
-80,26,-16,-2,13,
--4,6,-30,29,-24,
-73,-58,30,-27,20,
--2,-21,41,45,30,
--27,-3,-5,-18,-20,
--49,-3,-35,10,42,
--19,-67,-53,-11,9,
-13,-15,-33,-51,-30,
-15,7,25,-30,4,
-28,-22,-34,54,-29,
-39,-46,20,16,34,
--4,47,75,1,-44,
--55,-24,7,-1,9,
--42,50,-8,-36,41,
-68,0,-4,-10,-23,
--15,-50,64,36,-9,
--27,12,25,-38,-47,
--37,32,-49,51,-36,
-2,-4,69,-26,19,
-7,45,67,46,13,
--63,46,15,-47,4,
--41,13,-6,5,-21,
-37,26,-55,-7,33,
--1,-28,10,-17,-64,
--14,0,-36,-17,93,
--3,-9,-66,44,-21,
-3,-12,38,-6,-13,
--12,19,13,43,-43,
--10,-12,6,-5,9,
--49,32,-5,2,4,
-5,15,-16,10,-21,
-8,-62,-8,64,8,
-79,-1,-66,-49,-18,
-5,40,-5,-30,-45,
-1,-6,21,-32,93,
--18,-30,-21,32,21,
--18,22,8,5,-41,
--54,80,22,-10,-7,
--8,-23,-64,66,56,
--14,-30,-41,-46,-14,
--29,-37,27,-14,42,
--2,-9,-29,34,14,
-33,-14,22,4,10,
-26,26,28,32,23,
--72,-32,3,0,-14,
-35,-42,-78,-32,6,
-29,-18,-45,-5,7,
--33,-45,-3,-22,-34,
-8,-8,4,-51,-25,
--9,59,-78,21,-5,
--25,-48,66,-15,-17,
--24,-49,-13,25,-23,
--64,-6,40,-24,-19,
--11,57,-33,-8,1,
-10,-52,-54,28,39,
-49,34,-11,-61,-41,
--43,10,15,-15,51,
-30,15,-51,32,-34,
--2,-34,14,18,16,
-1,1,-3,-3,1,
-1,-18,6,16,48,
-12,-5,-42,7,36,
-48,7,-20,-10,7,
-12,2,54,39,-38,
-37,54,4,-11,-8,
--46,-10,5,-10,-34,
-46,-12,29,-37,39,
-36,-11,24,56,17,
-14,20,25,0,-25,
--28,55,-7,-5,27,
-3,9,-26,-8,6,
--24,-10,-30,-31,-34,
-18,4,22,21,40,
--1,-29,-37,-8,-21,
-92,-29,11,-3,11,
-73,23,22,7,4,
--44,-9,-11,21,-13,
-11,9,-78,-1,47,
-114,-12,-37,-19,-5,
--11,-22,19,12,-30,
-7,38,45,-21,-8,
--9,55,-45,56,-21,
-7,17,46,-57,-87,
--6,27,31,31,7,
--56,-12,46,21,-5,
--12,36,3,3,-21,
-43,19,12,-7,9,
--14,0,-9,-33,-91,
-7,26,3,-11,64,
-83,-31,-46,25,2,
-9,5,2,2,-1,
-20,-17,10,-5,-27,
--8,20,8,-19,16,
--21,-13,-31,5,5,
-42,24,9,34,-20,
-28,-61,22,11,-39,
-64,-20,-1,-30,-9,
--20,24,-25,-24,-29,
-22,-60,6,-5,41,
--9,-87,14,34,15,
--57,52,69,15,-3,
--102,58,16,3,6,
-60,-75,-32,26,7,
--57,-27,-32,-24,-21,
--29,-16,62,-46,31,
-30,-27,-15,7,15};
diff --git a/3rdparty/speex/libspeex/exc_5_64_table.c b/3rdparty/speex/libspeex/exc_5_64_table.c
deleted file mode 100644
index 2c66d518..00000000
--- a/3rdparty/speex/libspeex/exc_5_64_table.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: exc_5_64_table.c
- Codebook for excitation in narrowband CELP mode (9600 bps)
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-const signed char exc_5_64_table[320]={
-1,5,-15,49,-66,
--48,-4,50,-44,7,
-37,16,-18,25,-26,
--26,-15,19,19,-27,
--47,28,57,5,-17,
--32,-41,68,21,-2,
-64,56,8,-16,-13,
--26,-9,-16,11,6,
--39,25,-19,22,-31,
-20,-45,55,-43,10,
--16,47,-40,40,-20,
--51,3,-17,-14,-15,
--24,53,-20,-46,46,
-27,-68,32,3,-18,
--5,9,-31,16,-9,
--10,-1,-23,48,95,
-47,25,-41,-32,-3,
-15,-25,-55,36,41,
--27,20,5,13,14,
--22,5,2,-23,18,
-46,-15,17,-18,-34,
--5,-8,27,-55,73,
-16,2,-1,-17,40,
--78,33,0,2,19,
-4,53,-16,-15,-16,
--28,-3,-13,49,8,
--7,-29,27,-13,32,
-20,32,-61,16,14,
-41,44,40,24,20,
-7,4,48,-60,-77,
-17,-6,-48,65,-15,
-32,-30,-71,-10,-3,
--6,10,-2,-7,-29,
--56,67,-30,7,-5,
-86,-6,-10,0,5,
--31,60,34,-38,-3,
-24,10,-2,30,23,
-24,-41,12,70,-43,
-15,-17,6,13,16,
--13,8,30,-15,-8,
-5,23,-34,-98,-4,
--13,13,-48,-31,70,
-12,31,25,24,-24,
-26,-7,33,-16,8,
-5,-11,-14,-8,-65,
-13,10,-2,-9,0,
--3,-68,5,35,7,
-0,-31,-1,-17,-9,
--9,16,-37,-18,-1,
-69,-48,-28,22,-21,
--11,5,49,55,23,
--86,-36,16,2,13,
-63,-51,30,-11,13,
-24,-18,-6,14,-19,
-1,41,9,-5,27,
--36,-44,-34,-37,-21,
--26,31,-39,15,43,
-5,-8,29,20,-8,
--20,-52,-28,-1,13,
-26,-34,-10,-9,27,
--8,8,27,-66,4,
-12,-22,49,10,-77,
-32,-18,3,-38,12,
--3,-1,2,2,0};
diff --git a/3rdparty/speex/libspeex/exc_8_128_table.c b/3rdparty/speex/libspeex/exc_8_128_table.c
deleted file mode 100644
index 17ee64b9..00000000
--- a/3rdparty/speex/libspeex/exc_8_128_table.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: exc_8_128_table.c
- Codebook for excitation in narrowband CELP mode (7000 bps)
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-const signed char exc_8_128_table[1024] = {
--14,9,13,-32,2,-10,31,-10,
--8,-8,6,-4,-1,10,-64,23,
-6,20,13,6,8,-22,16,34,
-7,42,-49,-28,5,26,4,-15,
-41,34,41,32,33,24,23,14,
-8,40,34,4,-24,-41,-19,-15,
-13,-13,33,-54,24,27,-44,33,
-27,-15,-15,24,-19,14,-36,14,
--9,24,-12,-4,37,-5,16,-34,
-5,10,33,-15,-54,-16,12,25,
-12,1,2,0,3,-1,-4,-4,
-11,2,-56,54,27,-20,13,-6,
--46,-41,-33,-11,-5,7,12,14,
--14,-5,8,20,6,3,4,-8,
--5,-42,11,8,-14,25,-2,2,
-13,11,-22,39,-9,9,5,-45,
--9,7,-9,12,-7,34,-17,-102,
-7,2,-42,18,35,-9,-34,11,
--5,-2,3,22,46,-52,-25,-9,
--94,8,11,-5,-5,-5,4,-7,
--35,-7,54,5,-32,3,24,-9,
--22,8,65,37,-1,-12,-23,-6,
--9,-28,55,-33,14,-3,2,18,
--60,41,-17,8,-16,17,-11,0,
--11,29,-28,37,9,-53,33,-14,
--9,7,-25,-7,-11,26,-32,-8,
-24,-21,22,-19,19,-10,29,-14,
-0,0,0,0,0,0,0,0,
--5,-52,10,41,6,-30,-4,16,
-32,22,-27,-22,32,-3,-28,-3,
-3,-35,6,17,23,21,8,2,
-4,-45,-17,14,23,-4,-31,-11,
--3,14,1,19,-11,2,61,-8,
-9,-12,7,-10,12,-3,-24,99,
--48,23,50,-37,-5,-23,0,8,
--14,35,-64,-5,46,-25,13,-1,
--49,-19,-15,9,34,50,25,11,
--6,-9,-16,-20,-32,-33,-32,-27,
-10,-8,12,-15,56,-14,-32,33,
-3,-9,1,65,-9,-9,-10,-2,
--6,-23,9,17,3,-28,13,-32,
-4,-2,-10,4,-16,76,12,-52,
-6,13,33,-6,4,-14,-9,-3,
-1,-15,-16,28,1,-15,11,16,
-9,4,-21,-37,-40,-6,22,12,
--15,-23,-14,-17,-16,-9,-10,-9,
-13,-39,41,5,-9,16,-38,25,
-46,-47,4,49,-14,17,-2,6,
-18,5,-6,-33,-22,44,50,-2,
-1,3,-6,7,7,-3,-21,38,
--18,34,-14,-41,60,-13,6,16,
--24,35,19,-13,-36,24,3,-17,
--14,-10,36,44,-44,-29,-3,3,
--54,-8,12,55,26,4,-2,-5,
-2,-11,22,-23,2,22,1,-25,
--39,66,-49,21,-8,-2,10,-14,
--60,25,6,10,27,-25,16,5,
--2,-9,26,-13,-20,58,-2,7,
-52,-9,2,5,-4,-15,23,-1,
--38,23,8,27,-6,0,-27,-7,
-39,-10,-14,26,11,-45,-12,9,
--5,34,4,-35,10,43,-22,-11,
-56,-7,20,1,10,1,-26,9,
-94,11,-27,-14,-13,1,-11,0,
-14,-5,-6,-10,-4,-15,-8,-41,
-21,-5,1,-28,-8,22,-9,33,
--23,-4,-4,-12,39,4,-7,3,
--60,80,8,-17,2,-6,12,-5,
-1,9,15,27,31,30,27,23,
-61,47,26,10,-5,-8,-12,-13,
-5,-18,25,-15,-4,-15,-11,12,
--2,-2,-16,-2,-6,24,12,11,
--4,9,1,-9,14,-45,57,12,
-20,-35,26,11,-64,32,-10,-10,
-42,-4,-9,-16,32,24,7,10,
-52,-11,-57,29,0,8,0,-6,
-17,-17,-56,-40,7,20,18,12,
--6,16,5,7,-1,9,1,10,
-29,12,16,13,-2,23,7,9,
--3,-4,-5,18,-64,13,55,-25,
-9,-9,24,14,-25,15,-11,-40,
--30,37,1,-19,22,-5,-31,13,
--2,0,7,-4,16,-67,12,66,
--36,24,-8,18,-15,-23,19,0,
--45,-7,4,3,-13,13,35,5,
-13,33,10,27,23,0,-7,-11,
-43,-74,36,-12,2,5,-8,6,
--33,11,-16,-14,-5,-7,-3,17,
--34,27,-16,11,-9,15,33,-31,
-8,-16,7,-6,-7,63,-55,-17,
-11,-1,20,-46,34,-30,6,9,
-19,28,-9,5,-24,-8,-23,-2,
-31,-19,-16,-5,-15,-18,0,26,
-18,37,-5,-15,-2,17,5,-27,
-21,-33,44,12,-27,-9,17,11,
-25,-21,-31,-7,13,33,-8,-25,
--7,7,-10,4,-6,-9,48,-82,
--23,-8,6,11,-23,3,-3,49,
--29,25,31,4,14,16,9,-4,
--18,10,-26,3,5,-44,-9,9,
--47,-55,15,9,28,1,4,-3,
-46,6,-6,-38,-29,-31,-15,-6,
-3,0,14,-6,8,-54,-50,33,
--5,1,-14,33,-48,26,-4,-5,
--3,-5,-3,-5,-28,-22,77,55,
--1,2,10,10,-9,-14,-66,-49,
-11,-36,-6,-20,10,-10,16,12,
-4,-1,-16,45,-44,-50,31,-2,
-25,42,23,-32,-22,0,11,20,
--40,-35,-40,-36,-32,-26,-21,-13,
-52,-22,6,-24,-20,17,-5,-8,
-36,-25,-11,21,-26,6,34,-8,
-7,20,-3,5,-25,-8,18,-5,
--9,-4,1,-9,20,20,39,48,
--24,9,5,-65,22,29,4,3,
--43,-11,32,-6,9,19,-27,-10,
--47,-14,24,10,-7,-36,-7,-1,
--4,-5,-5,16,53,25,-26,-29,
--4,-12,45,-58,-34,33,-5,2,
--1,27,-48,31,-15,22,-5,4,
-7,7,-25,-3,11,-22,16,-12,
-8,-3,7,-11,45,14,-73,-19,
-56,-46,24,-20,28,-12,-2,-1,
--36,-3,-33,19,-6,7,2,-15,
-5,-31,-45,8,35,13,20,0,
--9,48,-13,-43,-3,-13,2,-5,
-72,-68,-27,2,1,-2,-7,5,
-36,33,-40,-12,-4,-5,23,19};
diff --git a/3rdparty/speex/libspeex/fftwrap.c b/3rdparty/speex/libspeex/fftwrap.c
deleted file mode 100644
index 35e2d05a..00000000
--- a/3rdparty/speex/libspeex/fftwrap.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/* Copyright (C) 2005-2006 Jean-Marc Valin
- File: fftwrap.c
-
- Wrapper for various FFTs
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/*#define USE_SMALLFT*/
-#define USE_KISS_FFT
-
-
-#include "misc.h"
-
-#define MAX_FFT_SIZE 2048
-
-#ifdef FIXED_POINT
-static int maximize_range(spx_word16_t *in, spx_word16_t *out, spx_word16_t bound, int len)
-{
- int i, shift;
- spx_word16_t max_val = 0;
- for (i=0;i<len;i++)
- {
- if (in[i]>max_val)
- max_val = in[i];
- if (-in[i]>max_val)
- max_val = -in[i];
- }
- shift=0;
- while (max_val <= (bound>>1) && max_val != 0)
- {
- max_val <<= 1;
- shift++;
- }
- for (i=0;i<len;i++)
- {
- out[i] = SHL16(in[i], shift);
- }
- return shift;
-}
-
-static void renorm_range(spx_word16_t *in, spx_word16_t *out, int shift, int len)
-{
- int i;
- for (i=0;i<len;i++)
- {
- out[i] = PSHR16(in[i], shift);
- }
-}
-#endif
-
-#ifdef USE_SMALLFT
-
-#include "smallft.h"
-#include <math.h>
-
-void *spx_fft_init(int size)
-{
- struct drft_lookup *table;
- table = speex_alloc(sizeof(struct drft_lookup));
- spx_drft_init((struct drft_lookup *)table, size);
- return (void*)table;
-}
-
-void spx_fft_destroy(void *table)
-{
- spx_drft_clear(table);
- speex_free(table);
-}
-
-void spx_fft(void *table, float *in, float *out)
-{
- if (in==out)
- {
- int i;
- float scale = 1./((struct drft_lookup *)table)->n;
- speex_warning("FFT should not be done in-place");
- for (i=0;i<((struct drft_lookup *)table)->n;i++)
- out[i] = scale*in[i];
- } else {
- int i;
- float scale = 1./((struct drft_lookup *)table)->n;
- for (i=0;i<((struct drft_lookup *)table)->n;i++)
- out[i] = scale*in[i];
- }
- spx_drft_forward((struct drft_lookup *)table, out);
-}
-
-void spx_ifft(void *table, float *in, float *out)
-{
- if (in==out)
- {
- speex_warning("FFT should not be done in-place");
- } else {
- int i;
- for (i=0;i<((struct drft_lookup *)table)->n;i++)
- out[i] = in[i];
- }
- spx_drft_backward((struct drft_lookup *)table, out);
-}
-
-#elif defined(USE_KISS_FFT)
-
-#include "kiss_fftr.h"
-#include "kiss_fft.h"
-
-struct kiss_config {
- kiss_fftr_cfg forward;
- kiss_fftr_cfg backward;
- int N;
-};
-
-void *spx_fft_init(int size)
-{
- struct kiss_config *table;
- table = (struct kiss_config*)speex_alloc(sizeof(struct kiss_config));
- table->forward = kiss_fftr_alloc(size,0,NULL,NULL);
- table->backward = kiss_fftr_alloc(size,1,NULL,NULL);
- table->N = size;
- return table;
-}
-
-void spx_fft_destroy(void *table)
-{
- struct kiss_config *t = (struct kiss_config *)table;
- kiss_fftr_free(t->forward);
- kiss_fftr_free(t->backward);
- speex_free(table);
-}
-
-#ifdef FIXED_POINT
-
-void spx_fft(void *table, spx_word16_t *in, spx_word16_t *out)
-{
- int shift;
- struct kiss_config *t = (struct kiss_config *)table;
- shift = maximize_range(in, in, 32000, t->N);
- kiss_fftr2(t->forward, in, out);
- renorm_range(in, in, shift, t->N);
- renorm_range(out, out, shift, t->N);
-}
-
-#else
-
-void spx_fft(void *table, spx_word16_t *in, spx_word16_t *out)
-{
- int i;
- float scale;
- struct kiss_config *t = (struct kiss_config *)table;
- scale = 1./t->N;
- kiss_fftr2(t->forward, in, out);
- for (i=0;i<t->N;i++)
- out[i] *= scale;
-}
-#endif
-
-void spx_ifft(void *table, spx_word16_t *in, spx_word16_t *out)
-{
- struct kiss_config *t = (struct kiss_config *)table;
- kiss_fftri2(t->backward, in, out);
-}
-
-
-#else
-
-#error No other FFT implemented
-
-#endif
-
-
-#ifdef FIXED_POINT
-/*#include "smallft.h"*/
-
-
-void spx_fft_float(void *table, float *in, float *out)
-{
- int i;
-#ifdef USE_SMALLFT
- int N = ((struct drft_lookup *)table)->n;
-#elif defined(USE_KISS_FFT)
- int N = ((struct kiss_config *)table)->N;
-#else
-#endif
-#ifdef VAR_ARRAYS
- spx_word16_t _in[N];
- spx_word16_t _out[N];
-#else
- spx_word16_t _in[MAX_FFT_SIZE];
- spx_word16_t _out[MAX_FFT_SIZE];
-#endif
- for (i=0;i<N;i++)
- _in[i] = (int)floor(.5+in[i]);
- spx_fft(table, _in, _out);
- for (i=0;i<N;i++)
- out[i] = _out[i];
-#if 0
- if (!fixed_point)
- {
- float scale;
- struct drft_lookup t;
- spx_drft_init(&t, ((struct kiss_config *)table)->N);
- scale = 1./((struct kiss_config *)table)->N;
- for (i=0;i<((struct kiss_config *)table)->N;i++)
- out[i] = scale*in[i];
- spx_drft_forward(&t, out);
- spx_drft_clear(&t);
- }
-#endif
-}
-
-void spx_ifft_float(void *table, float *in, float *out)
-{
- int i;
-#ifdef USE_SMALLFT
- int N = ((struct drft_lookup *)table)->n;
-#elif defined(USE_KISS_FFT)
- int N = ((struct kiss_config *)table)->N;
-#else
-#endif
-#ifdef VAR_ARRAYS
- spx_word16_t _in[N];
- spx_word16_t _out[N];
-#else
- spx_word16_t _in[MAX_FFT_SIZE];
- spx_word16_t _out[MAX_FFT_SIZE];
-#endif
- for (i=0;i<N;i++)
- _in[i] = (int)floor(.5+in[i]);
- spx_ifft(table, _in, _out);
- for (i=0;i<N;i++)
- out[i] = _out[i];
-#if 0
- if (!fixed_point)
- {
- int i;
- struct drft_lookup t;
- spx_drft_init(&t, ((struct kiss_config *)table)->N);
- for (i=0;i<((struct kiss_config *)table)->N;i++)
- out[i] = in[i];
- spx_drft_backward(&t, out);
- spx_drft_clear(&t);
- }
-#endif
-}
-
-#else
-
-void spx_fft_float(void *table, float *in, float *out)
-{
- spx_fft(table, in, out);
-}
-void spx_ifft_float(void *table, float *in, float *out)
-{
- spx_ifft(table, in, out);
-}
-
-#endif
diff --git a/3rdparty/speex/libspeex/fftwrap.h b/3rdparty/speex/libspeex/fftwrap.h
deleted file mode 100644
index 826b38e9..00000000
--- a/3rdparty/speex/libspeex/fftwrap.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Copyright (C) 2005 Jean-Marc Valin
- File: fftwrap.h
-
- Wrapper for various FFTs
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifndef FFTWRAP_H
-#define FFTWRAP_H
-
-#include "misc.h"
-
-/** Compute tables for an FFT */
-void *spx_fft_init(int size);
-
-/** Destroy tables for an FFT */
-void spx_fft_destroy(void *table);
-
-/** Forward (real to half-complex) transform */
-void spx_fft(void *table, spx_word16_t *in, spx_word16_t *out);
-
-/** Backward (half-complex to real) transform */
-void spx_ifft(void *table, spx_word16_t *in, spx_word16_t *out);
-
-/** Forward (real to half-complex) transform of float data */
-void spx_fft_float(void *table, float *in, float *out);
-
-/** Backward (half-complex to real) transform of float data */
-void spx_ifft_float(void *table, float *in, float *out);
-
-#endif
diff --git a/3rdparty/speex/libspeex/filterbank.c b/3rdparty/speex/libspeex/filterbank.c
deleted file mode 100644
index 187d5eea..00000000
--- a/3rdparty/speex/libspeex/filterbank.c
+++ /dev/null
@@ -1,226 +0,0 @@
-/* Copyright (C) 2006 Jean-Marc Valin */
-/**
- @file filterbank.c
- @brief Converting between psd and filterbank
- */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "filterbank.h"
-#include "misc.h"
-#include <math.h>
-#include "math_approx.h"
-
-#ifdef FIXED_POINT
-
-#define toBARK(n) (MULT16_16(26829,spx_atan(SHR32(MULT16_16(97,n),2))) + MULT16_16(4588,spx_atan(MULT16_32_Q15(20,MULT16_16(n,n)))) + MULT16_16(3355,n))
-
-#else
-#define toBARK(n) (13.1f*atan(.00074f*(n))+2.24f*atan((n)*(n)*1.85e-8f)+1e-4f*(n))
-#endif
-
-#define toMEL(n) (2595.f*log10(1.f+(n)/700.f))
-
-FilterBank *filterbank_new(int banks, spx_word32_t sampling, int len, int type)
-{
- FilterBank *bank;
- spx_word32_t df;
- spx_word32_t max_mel, mel_interval;
- int i;
- int id1;
- int id2;
- df = DIV32(SHL32(sampling,15),MULT16_16(2,len));
- max_mel = toBARK(EXTRACT16(MULT16_16_Q15(QCONST16(.5f,15),sampling)));
- mel_interval = PDIV32(max_mel,banks-1);
-
- bank = (FilterBank*)speex_alloc(sizeof(FilterBank));
- bank->nb_banks = banks;
- bank->len = len;
- bank->bank_left = (int*)speex_alloc(len*sizeof(int));
- bank->bank_right = (int*)speex_alloc(len*sizeof(int));
- bank->filter_left = (spx_word16_t*)speex_alloc(len*sizeof(spx_word16_t));
- bank->filter_right = (spx_word16_t*)speex_alloc(len*sizeof(spx_word16_t));
- /* Think I can safely disable normalisation that for fixed-point (and probably float as well) */
-#ifndef FIXED_POINT
- bank->scaling = (float*)speex_alloc(banks*sizeof(float));
-#endif
- for (i=0;i<len;i++)
- {
- spx_word16_t curr_freq;
- spx_word32_t mel;
- spx_word16_t val;
- curr_freq = EXTRACT16(MULT16_32_P15(i,df));
- mel = toBARK(curr_freq);
- if (mel > max_mel)
- break;
-#ifdef FIXED_POINT
- id1 = DIV32(mel,mel_interval);
-#else
- id1 = (int)(floor(mel/mel_interval));
-#endif
- if (id1>banks-2)
- {
- id1 = banks-2;
- val = Q15_ONE;
- } else {
- val = DIV32_16(mel - id1*mel_interval,EXTRACT16(PSHR32(mel_interval,15)));
- }
- id2 = id1+1;
- bank->bank_left[i] = id1;
- bank->filter_left[i] = SUB16(Q15_ONE,val);
- bank->bank_right[i] = id2;
- bank->filter_right[i] = val;
- }
-
- /* Think I can safely disable normalisation for fixed-point (and probably float as well) */
-#ifndef FIXED_POINT
- for (i=0;i<bank->nb_banks;i++)
- bank->scaling[i] = 0;
- for (i=0;i<bank->len;i++)
- {
- int id = bank->bank_left[i];
- bank->scaling[id] += bank->filter_left[i];
- id = bank->bank_right[i];
- bank->scaling[id] += bank->filter_right[i];
- }
- for (i=0;i<bank->nb_banks;i++)
- bank->scaling[i] = Q15_ONE/(bank->scaling[i]);
-#endif
- return bank;
-}
-
-void filterbank_destroy(FilterBank *bank)
-{
- speex_free(bank->bank_left);
- speex_free(bank->bank_right);
- speex_free(bank->filter_left);
- speex_free(bank->filter_right);
-#ifndef FIXED_POINT
- speex_free(bank->scaling);
-#endif
- speex_free(bank);
-}
-
-void filterbank_compute_bank32(FilterBank *bank, spx_word32_t *ps, spx_word32_t *mel)
-{
- int i;
- for (i=0;i<bank->nb_banks;i++)
- mel[i] = 0;
-
- for (i=0;i<bank->len;i++)
- {
- int id;
- id = bank->bank_left[i];
- mel[id] += MULT16_32_P15(bank->filter_left[i],ps[i]);
- id = bank->bank_right[i];
- mel[id] += MULT16_32_P15(bank->filter_right[i],ps[i]);
- }
- /* Think I can safely disable normalisation that for fixed-point (and probably float as well) */
-#ifndef FIXED_POINT
- /*for (i=0;i<bank->nb_banks;i++)
- mel[i] = MULT16_32_P15(Q15(bank->scaling[i]),mel[i]);
- */
-#endif
-}
-
-void filterbank_compute_psd16(FilterBank *bank, spx_word16_t *mel, spx_word16_t *ps)
-{
- int i;
- for (i=0;i<bank->len;i++)
- {
- spx_word32_t tmp;
- int id1, id2;
- id1 = bank->bank_left[i];
- id2 = bank->bank_right[i];
- tmp = MULT16_16(mel[id1],bank->filter_left[i]);
- tmp += MULT16_16(mel[id2],bank->filter_right[i]);
- ps[i] = EXTRACT16(PSHR32(tmp,15));
- }
-}
-
-
-#ifndef FIXED_POINT
-void filterbank_compute_bank(FilterBank *bank, float *ps, float *mel)
-{
- int i;
- for (i=0;i<bank->nb_banks;i++)
- mel[i] = 0;
-
- for (i=0;i<bank->len;i++)
- {
- int id = bank->bank_left[i];
- mel[id] += bank->filter_left[i]*ps[i];
- id = bank->bank_right[i];
- mel[id] += bank->filter_right[i]*ps[i];
- }
- for (i=0;i<bank->nb_banks;i++)
- mel[i] *= bank->scaling[i];
-}
-
-void filterbank_compute_psd(FilterBank *bank, float *mel, float *ps)
-{
- int i;
- for (i=0;i<bank->len;i++)
- {
- int id = bank->bank_left[i];
- ps[i] = mel[id]*bank->filter_left[i];
- id = bank->bank_right[i];
- ps[i] += mel[id]*bank->filter_right[i];
- }
-}
-
-void filterbank_psy_smooth(FilterBank *bank, float *ps, float *mask)
-{
- /* Low freq slope: 14 dB/Bark*/
- /* High freq slope: 9 dB/Bark*/
- /* Noise vs tone: 5 dB difference */
- /* FIXME: Temporary kludge */
- float bark[100];
- int i;
- /* Assumes 1/3 Bark resolution */
- float decay_low = 0.34145f;
- float decay_high = 0.50119f;
- filterbank_compute_bank(bank, ps, bark);
- for (i=1;i<bank->nb_banks;i++)
- {
- /*float decay_high = 13-1.6*log10(bark[i-1]);
- decay_high = pow(10,(-decay_high/30.f));*/
- bark[i] = bark[i] + decay_high*bark[i-1];
- }
- for (i=bank->nb_banks-2;i>=0;i--)
- {
- bark[i] = bark[i] + decay_low*bark[i+1];
- }
- filterbank_compute_psd(bank, bark, mask);
-}
-
-#endif
diff --git a/3rdparty/speex/libspeex/filterbank.h b/3rdparty/speex/libspeex/filterbank.h
deleted file mode 100644
index 5ded6b93..00000000
--- a/3rdparty/speex/libspeex/filterbank.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Copyright (C) 2006 Jean-Marc Valin */
-/**
- @file filterbank.h
- @brief Converting between psd and filterbank
- */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef FILTERBANK_H
-#define FILTERBANK_H
-
-#include "misc.h"
-
-typedef struct {
- int *bank_left;
- int *bank_right;
- spx_word16_t *filter_left;
- spx_word16_t *filter_right;
-#ifndef FIXED_POINT
- float *scaling;
-#endif
- int nb_banks;
- int len;
-} FilterBank;
-
-
-FilterBank *filterbank_new(int banks, spx_word32_t sampling, int len, int type);
-
-void filterbank_destroy(FilterBank *bank);
-
-void filterbank_compute_bank32(FilterBank *bank, spx_word32_t *ps, spx_word32_t *mel);
-
-void filterbank_compute_psd16(FilterBank *bank, spx_word16_t *mel, spx_word16_t *psd);
-
-#ifndef FIXED_POINT
-void filterbank_compute_bank(FilterBank *bank, float *psd, float *mel);
-void filterbank_compute_psd(FilterBank *bank, float *mel, float *psd);
-#endif
-
-
-#endif
diff --git a/3rdparty/speex/libspeex/filters.c b/3rdparty/speex/libspeex/filters.c
deleted file mode 100644
index 48b47537..00000000
--- a/3rdparty/speex/libspeex/filters.c
+++ /dev/null
@@ -1,821 +0,0 @@
-/* Copyright (C) 2002-2006 Jean-Marc Valin
- File: filters.c
- Various analysis/synthesis filters
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "filters.h"
-#include "stack_alloc.h"
-#include "misc.h"
-#include "math_approx.h"
-#include "ltp.h"
-#include <math.h>
-
-#ifdef _USE_SSE
-#include "filters_sse.h"
-#elif defined (ARM4_ASM) || defined(ARM5E_ASM)
-#include "filters_arm4.h"
-#elif defined (BFIN_ASM)
-#include "filters_bfin.h"
-#endif
-
-
-
-void bw_lpc(spx_word16_t gamma, const spx_coef_t *lpc_in, spx_coef_t *lpc_out, int order)
-{
- int i;
- spx_word16_t tmp=gamma;
- for (i=0;i<order;i++)
- {
- lpc_out[i] = MULT16_16_P15(tmp,lpc_in[i]);
- tmp = MULT16_16_P15(tmp, gamma);
- }
-}
-
-void sanitize_values32(spx_word32_t *vec, spx_word32_t min_val, spx_word32_t max_val, int len)
-{
- int i;
- for (i=0;i<len;i++)
- {
- /* It's important we do the test that way so we can catch NaNs, which are neither greater nor smaller */
- if (!(vec[i]>=min_val && vec[i] <= max_val))
- {
- if (vec[i] < min_val)
- vec[i] = min_val;
- else if (vec[i] > max_val)
- vec[i] = max_val;
- else /* Has to be NaN */
- vec[i] = 0;
- }
- }
-}
-
-void highpass(const spx_word16_t *x, spx_word16_t *y, int len, int filtID, spx_mem_t *mem)
-{
- int i;
-#ifdef FIXED_POINT
- const spx_word16_t Pcoef[5][3] = {{16384, -31313, 14991}, {16384, -31569, 15249}, {16384, -31677, 15328}, {16384, -32313, 15947}, {16384, -22446, 6537}};
- const spx_word16_t Zcoef[5][3] = {{15672, -31344, 15672}, {15802, -31601, 15802}, {15847, -31694, 15847}, {16162, -32322, 16162}, {14418, -28836, 14418}};
-#else
- const spx_word16_t Pcoef[5][3] = {{1.00000f, -1.91120f, 0.91498f}, {1.00000f, -1.92683f, 0.93071f}, {1.00000f, -1.93338f, 0.93553f}, {1.00000f, -1.97226f, 0.97332f}, {1.00000f, -1.37000f, 0.39900f}};
- const spx_word16_t Zcoef[5][3] = {{0.95654f, -1.91309f, 0.95654f}, {0.96446f, -1.92879f, 0.96446f}, {0.96723f, -1.93445f, 0.96723f}, {0.98645f, -1.97277f, 0.98645f}, {0.88000f, -1.76000f, 0.88000f}};
-#endif
- const spx_word16_t *den, *num;
- if (filtID>4)
- filtID=4;
-
- den = Pcoef[filtID]; num = Zcoef[filtID];
- /*return;*/
- for (i=0;i<len;i++)
- {
- spx_word16_t yi;
- spx_word32_t vout = ADD32(MULT16_16(num[0], x[i]),mem[0]);
- yi = EXTRACT16(SATURATE(PSHR32(vout,14),32767));
- mem[0] = ADD32(MAC16_16(mem[1], num[1],x[i]), SHL32(MULT16_32_Q15(-den[1],vout),1));
- mem[1] = ADD32(MULT16_16(num[2],x[i]), SHL32(MULT16_32_Q15(-den[2],vout),1));
- y[i] = yi;
- }
-}
-
-#ifdef FIXED_POINT
-
-/* FIXME: These functions are ugly and probably introduce too much error */
-void signal_mul(const spx_sig_t *x, spx_sig_t *y, spx_word32_t scale, int len)
-{
- int i;
- for (i=0;i<len;i++)
- {
- y[i] = SHL32(MULT16_32_Q14(EXTRACT16(SHR32(x[i],7)),scale),7);
- }
-}
-
-void signal_div(const spx_word16_t *x, spx_word16_t *y, spx_word32_t scale, int len)
-{
- int i;
- if (scale > SHL32(EXTEND32(SIG_SCALING), 8))
- {
- spx_word16_t scale_1;
- scale = PSHR32(scale, SIG_SHIFT);
- scale_1 = EXTRACT16(PDIV32_16(SHL32(EXTEND32(SIG_SCALING),7),scale));
- for (i=0;i<len;i++)
- {
- y[i] = MULT16_16_P15(scale_1, x[i]);
- }
- } else if (scale > SHR32(EXTEND32(SIG_SCALING), 2)) {
- spx_word16_t scale_1;
- scale = PSHR32(scale, SIG_SHIFT-5);
- scale_1 = DIV32_16(SHL32(EXTEND32(SIG_SCALING),3),scale);
- for (i=0;i<len;i++)
- {
- y[i] = PSHR32(MULT16_16(scale_1, SHL16(x[i],2)),8);
- }
- } else {
- spx_word16_t scale_1;
- scale = PSHR32(scale, SIG_SHIFT-7);
- if (scale < 5)
- scale = 5;
- scale_1 = DIV32_16(SHL32(EXTEND32(SIG_SCALING),3),scale);
- for (i=0;i<len;i++)
- {
- y[i] = PSHR32(MULT16_16(scale_1, SHL16(x[i],2)),6);
- }
- }
-}
-
-#else
-
-void signal_mul(const spx_sig_t *x, spx_sig_t *y, spx_word32_t scale, int len)
-{
- int i;
- for (i=0;i<len;i++)
- y[i] = scale*x[i];
-}
-
-void signal_div(const spx_sig_t *x, spx_sig_t *y, spx_word32_t scale, int len)
-{
- int i;
- float scale_1 = 1/scale;
- for (i=0;i<len;i++)
- y[i] = scale_1*x[i];
-}
-#endif
-
-
-
-#ifdef FIXED_POINT
-
-
-
-spx_word16_t compute_rms(const spx_sig_t *x, int len)
-{
- int i;
- spx_word32_t sum=0;
- spx_sig_t max_val=1;
- int sig_shift;
-
- for (i=0;i<len;i++)
- {
- spx_sig_t tmp = x[i];
- if (tmp<0)
- tmp = -tmp;
- if (tmp > max_val)
- max_val = tmp;
- }
-
- sig_shift=0;
- while (max_val>16383)
- {
- sig_shift++;
- max_val >>= 1;
- }
-
- for (i=0;i<len;i+=4)
- {
- spx_word32_t sum2=0;
- spx_word16_t tmp;
- tmp = EXTRACT16(SHR32(x[i],sig_shift));
- sum2 = MAC16_16(sum2,tmp,tmp);
- tmp = EXTRACT16(SHR32(x[i+1],sig_shift));
- sum2 = MAC16_16(sum2,tmp,tmp);
- tmp = EXTRACT16(SHR32(x[i+2],sig_shift));
- sum2 = MAC16_16(sum2,tmp,tmp);
- tmp = EXTRACT16(SHR32(x[i+3],sig_shift));
- sum2 = MAC16_16(sum2,tmp,tmp);
- sum = ADD32(sum,SHR32(sum2,6));
- }
-
- return EXTRACT16(PSHR32(SHL32(EXTEND32(spx_sqrt(DIV32(sum,len))),(sig_shift+3)),SIG_SHIFT));
-}
-
-spx_word16_t compute_rms16(const spx_word16_t *x, int len)
-{
- int i;
- spx_word16_t max_val=10;
-
- for (i=0;i<len;i++)
- {
- spx_sig_t tmp = x[i];
- if (tmp<0)
- tmp = -tmp;
- if (tmp > max_val)
- max_val = tmp;
- }
- if (max_val>16383)
- {
- spx_word32_t sum=0;
- for (i=0;i<len;i+=4)
- {
- spx_word32_t sum2=0;
- sum2 = MAC16_16(sum2,SHR16(x[i],1),SHR16(x[i],1));
- sum2 = MAC16_16(sum2,SHR16(x[i+1],1),SHR16(x[i+1],1));
- sum2 = MAC16_16(sum2,SHR16(x[i+2],1),SHR16(x[i+2],1));
- sum2 = MAC16_16(sum2,SHR16(x[i+3],1),SHR16(x[i+3],1));
- sum = ADD32(sum,SHR32(sum2,6));
- }
- return SHL16(spx_sqrt(DIV32(sum,len)),4);
- } else {
- spx_word32_t sum=0;
- int sig_shift=0;
- if (max_val < 8192)
- sig_shift=1;
- if (max_val < 4096)
- sig_shift=2;
- if (max_val < 2048)
- sig_shift=3;
- for (i=0;i<len;i+=4)
- {
- spx_word32_t sum2=0;
- sum2 = MAC16_16(sum2,SHL16(x[i],sig_shift),SHL16(x[i],sig_shift));
- sum2 = MAC16_16(sum2,SHL16(x[i+1],sig_shift),SHL16(x[i+1],sig_shift));
- sum2 = MAC16_16(sum2,SHL16(x[i+2],sig_shift),SHL16(x[i+2],sig_shift));
- sum2 = MAC16_16(sum2,SHL16(x[i+3],sig_shift),SHL16(x[i+3],sig_shift));
- sum = ADD32(sum,SHR32(sum2,6));
- }
- return SHL16(spx_sqrt(DIV32(sum,len)),3-sig_shift);
- }
-}
-
-#ifndef OVERRIDE_NORMALIZE16
-int normalize16(const spx_sig_t *x, spx_word16_t *y, spx_sig_t max_scale, int len)
-{
- int i;
- spx_sig_t max_val=1;
- int sig_shift;
-
- for (i=0;i<len;i++)
- {
- spx_sig_t tmp = x[i];
- if (tmp<0)
- tmp = NEG32(tmp);
- if (tmp >= max_val)
- max_val = tmp;
- }
-
- sig_shift=0;
- while (max_val>max_scale)
- {
- sig_shift++;
- max_val >>= 1;
- }
-
- for (i=0;i<len;i++)
- y[i] = EXTRACT16(SHR32(x[i], sig_shift));
-
- return sig_shift;
-}
-#endif
-
-#else
-
-spx_word16_t compute_rms(const spx_sig_t *x, int len)
-{
- int i;
- float sum=0;
- for (i=0;i<len;i++)
- {
- sum += x[i]*x[i];
- }
- return sqrt(.1+sum/len);
-}
-spx_word16_t compute_rms16(const spx_word16_t *x, int len)
-{
- return compute_rms(x, len);
-}
-#endif
-
-
-
-#ifndef OVERRIDE_FILTER_MEM16
-void filter_mem16(const spx_word16_t *x, const spx_coef_t *num, const spx_coef_t *den, spx_word16_t *y, int N, int ord, spx_mem_t *mem, char *stack)
-{
- int i,j;
- spx_word16_t xi,yi,nyi;
- for (i=0;i<N;i++)
- {
- xi= x[i];
- yi = EXTRACT16(SATURATE(ADD32(EXTEND32(x[i]),PSHR32(mem[0],LPC_SHIFT)),32767));
- nyi = NEG16(yi);
- for (j=0;j<ord-1;j++)
- {
- mem[j] = MAC16_16(MAC16_16(mem[j+1], num[j],xi), den[j],nyi);
- }
- mem[ord-1] = ADD32(MULT16_16(num[ord-1],xi), MULT16_16(den[ord-1],nyi));
- y[i] = yi;
- }
-}
-#endif
-
-#ifndef OVERRIDE_IIR_MEM16
-void iir_mem16(const spx_word16_t *x, const spx_coef_t *den, spx_word16_t *y, int N, int ord, spx_mem_t *mem, char *stack)
-{
- int i,j;
- spx_word16_t yi,nyi;
-
- for (i=0;i<N;i++)
- {
- yi = EXTRACT16(SATURATE(ADD32(EXTEND32(x[i]),PSHR32(mem[0],LPC_SHIFT)),32767));
- nyi = NEG16(yi);
- for (j=0;j<ord-1;j++)
- {
- mem[j] = MAC16_16(mem[j+1],den[j],nyi);
- }
- mem[ord-1] = MULT16_16(den[ord-1],nyi);
- y[i] = yi;
- }
-}
-#endif
-
-#ifndef OVERRIDE_FIR_MEM16
-void fir_mem16(const spx_word16_t *x, const spx_coef_t *num, spx_word16_t *y, int N, int ord, spx_mem_t *mem, char *stack)
-{
- int i,j;
- spx_word16_t xi,yi;
-
- for (i=0;i<N;i++)
- {
- xi=x[i];
- yi = EXTRACT16(SATURATE(ADD32(EXTEND32(x[i]),PSHR32(mem[0],LPC_SHIFT)),32767));
- for (j=0;j<ord-1;j++)
- {
- mem[j] = MAC16_16(mem[j+1], num[j],xi);
- }
- mem[ord-1] = MULT16_16(num[ord-1],xi);
- y[i] = yi;
- }
-}
-#endif
-
-
-void syn_percep_zero16(const spx_word16_t *xx, const spx_coef_t *ak, const spx_coef_t *awk1, const spx_coef_t *awk2, spx_word16_t *y, int N, int ord, char *stack)
-{
- int i;
- VARDECL(spx_mem_t *mem);
- ALLOC(mem, ord, spx_mem_t);
- for (i=0;i<ord;i++)
- mem[i]=0;
- iir_mem16(xx, ak, y, N, ord, mem, stack);
- for (i=0;i<ord;i++)
- mem[i]=0;
- filter_mem16(y, awk1, awk2, y, N, ord, mem, stack);
-}
-void residue_percep_zero16(const spx_word16_t *xx, const spx_coef_t *ak, const spx_coef_t *awk1, const spx_coef_t *awk2, spx_word16_t *y, int N, int ord, char *stack)
-{
- int i;
- VARDECL(spx_mem_t *mem);
- ALLOC(mem, ord, spx_mem_t);
- for (i=0;i<ord;i++)
- mem[i]=0;
- filter_mem16(xx, ak, awk1, y, N, ord, mem, stack);
- for (i=0;i<ord;i++)
- mem[i]=0;
- fir_mem16(y, awk2, y, N, ord, mem, stack);
-}
-
-
-#ifndef OVERRIDE_COMPUTE_IMPULSE_RESPONSE
-void compute_impulse_response(const spx_coef_t *ak, const spx_coef_t *awk1, const spx_coef_t *awk2, spx_word16_t *y, int N, int ord, char *stack)
-{
- int i,j;
- spx_word16_t y1, ny1i, ny2i;
- VARDECL(spx_mem_t *mem1);
- VARDECL(spx_mem_t *mem2);
- ALLOC(mem1, ord, spx_mem_t);
- ALLOC(mem2, ord, spx_mem_t);
-
- y[0] = LPC_SCALING;
- for (i=0;i<ord;i++)
- y[i+1] = awk1[i];
- i++;
- for (;i<N;i++)
- y[i] = VERY_SMALL;
- for (i=0;i<ord;i++)
- mem1[i] = mem2[i] = 0;
- for (i=0;i<N;i++)
- {
- y1 = ADD16(y[i], EXTRACT16(PSHR32(mem1[0],LPC_SHIFT)));
- ny1i = NEG16(y1);
- y[i] = PSHR32(ADD32(SHL32(EXTEND32(y1),LPC_SHIFT+1),mem2[0]),LPC_SHIFT);
- ny2i = NEG16(y[i]);
- for (j=0;j<ord-1;j++)
- {
- mem1[j] = MAC16_16(mem1[j+1], awk2[j],ny1i);
- mem2[j] = MAC16_16(mem2[j+1], ak[j],ny2i);
- }
- mem1[ord-1] = MULT16_16(awk2[ord-1],ny1i);
- mem2[ord-1] = MULT16_16(ak[ord-1],ny2i);
- }
-}
-#endif
-
-/* Decomposes a signal into low-band and high-band using a QMF */
-void qmf_decomp(const spx_word16_t *xx, const spx_word16_t *aa, spx_word16_t *y1, spx_word16_t *y2, int N, int M, spx_word16_t *mem, char *stack)
-{
- int i,j,k,M2;
- VARDECL(spx_word16_t *a);
- VARDECL(spx_word16_t *x);
- spx_word16_t *x2;
-
- ALLOC(a, M, spx_word16_t);
- ALLOC(x, N+M-1, spx_word16_t);
- x2=x+M-1;
- M2=M>>1;
- for (i=0;i<M;i++)
- a[M-i-1]= aa[i];
- for (i=0;i<M-1;i++)
- x[i]=mem[M-i-2];
- for (i=0;i<N;i++)
- x[i+M-1]=SHR16(xx[i],1);
- for (i=0;i<M-1;i++)
- mem[i]=SHR16(xx[N-i-1],1);
- for (i=0,k=0;i<N;i+=2,k++)
- {
- spx_word32_t y1k=0, y2k=0;
- for (j=0;j<M2;j++)
- {
- y1k=ADD32(y1k,MULT16_16(a[j],ADD16(x[i+j],x2[i-j])));
- y2k=SUB32(y2k,MULT16_16(a[j],SUB16(x[i+j],x2[i-j])));
- j++;
- y1k=ADD32(y1k,MULT16_16(a[j],ADD16(x[i+j],x2[i-j])));
- y2k=ADD32(y2k,MULT16_16(a[j],SUB16(x[i+j],x2[i-j])));
- }
- y1[k] = EXTRACT16(SATURATE(PSHR32(y1k,15),32767));
- y2[k] = EXTRACT16(SATURATE(PSHR32(y2k,15),32767));
- }
-}
-
-/* Re-synthesised a signal from the QMF low-band and high-band signals */
-void qmf_synth(const spx_word16_t *x1, const spx_word16_t *x2, const spx_word16_t *a, spx_word16_t *y, int N, int M, spx_word32_t *mem1, spx_word32_t *mem2, char *stack)
- /* assumptions:
- all odd x[i] are zero -- well, actually they are left out of the array now
- N and M are multiples of 4 */
-{
- int i, j;
- int M2, N2;
- VARDECL(spx_word16_t *xx1);
- VARDECL(spx_word16_t *xx2);
-
- M2 = M>>1;
- N2 = N>>1;
- ALLOC(xx1, M2+N2, spx_word16_t);
- ALLOC(xx2, M2+N2, spx_word16_t);
-
- for (i = 0; i < N2; i++)
- xx1[i] = x1[N2-1-i];
- for (i = 0; i < M2; i++)
- xx1[N2+i] = mem1[2*i+1];
- for (i = 0; i < N2; i++)
- xx2[i] = x2[N2-1-i];
- for (i = 0; i < M2; i++)
- xx2[N2+i] = mem2[2*i+1];
-
- for (i = 0; i < N2; i += 2) {
- spx_sig_t y0, y1, y2, y3;
- spx_word16_t x10, x20;
-
- y0 = y1 = y2 = y3 = 0;
- x10 = xx1[N2-2-i];
- x20 = xx2[N2-2-i];
-
- for (j = 0; j < M2; j += 2) {
- spx_word16_t x11, x21;
- spx_word16_t a0, a1;
-
- a0 = a[2*j];
- a1 = a[2*j+1];
- x11 = xx1[N2-1+j-i];
- x21 = xx2[N2-1+j-i];
-
-#ifdef FIXED_POINT
- /* We multiply twice by the same coef to avoid overflows */
- y0 = MAC16_16(MAC16_16(y0, a0, x11), NEG16(a0), x21);
- y1 = MAC16_16(MAC16_16(y1, a1, x11), a1, x21);
- y2 = MAC16_16(MAC16_16(y2, a0, x10), NEG16(a0), x20);
- y3 = MAC16_16(MAC16_16(y3, a1, x10), a1, x20);
-#else
- y0 = ADD32(y0,MULT16_16(a0, x11-x21));
- y1 = ADD32(y1,MULT16_16(a1, x11+x21));
- y2 = ADD32(y2,MULT16_16(a0, x10-x20));
- y3 = ADD32(y3,MULT16_16(a1, x10+x20));
-#endif
- a0 = a[2*j+2];
- a1 = a[2*j+3];
- x10 = xx1[N2+j-i];
- x20 = xx2[N2+j-i];
-
-#ifdef FIXED_POINT
- /* We multiply twice by the same coef to avoid overflows */
- y0 = MAC16_16(MAC16_16(y0, a0, x10), NEG16(a0), x20);
- y1 = MAC16_16(MAC16_16(y1, a1, x10), a1, x20);
- y2 = MAC16_16(MAC16_16(y2, a0, x11), NEG16(a0), x21);
- y3 = MAC16_16(MAC16_16(y3, a1, x11), a1, x21);
-#else
- y0 = ADD32(y0,MULT16_16(a0, x10-x20));
- y1 = ADD32(y1,MULT16_16(a1, x10+x20));
- y2 = ADD32(y2,MULT16_16(a0, x11-x21));
- y3 = ADD32(y3,MULT16_16(a1, x11+x21));
-#endif
- }
-#ifdef FIXED_POINT
- y[2*i] = EXTRACT16(SATURATE32(PSHR32(y0,15),32767));
- y[2*i+1] = EXTRACT16(SATURATE32(PSHR32(y1,15),32767));
- y[2*i+2] = EXTRACT16(SATURATE32(PSHR32(y2,15),32767));
- y[2*i+3] = EXTRACT16(SATURATE32(PSHR32(y3,15),32767));
-#else
- /* Normalize up explicitly if we're in float */
- y[2*i] = 2.f*y0;
- y[2*i+1] = 2.f*y1;
- y[2*i+2] = 2.f*y2;
- y[2*i+3] = 2.f*y3;
-#endif
- }
-
- for (i = 0; i < M2; i++)
- mem1[2*i+1] = xx1[i];
- for (i = 0; i < M2; i++)
- mem2[2*i+1] = xx2[i];
-}
-
-#ifdef FIXED_POINT
-#if 0
-const spx_word16_t shift_filt[3][7] = {{-33, 1043, -4551, 19959, 19959, -4551, 1043},
- {-98, 1133, -4425, 29179, 8895, -2328, 444},
- {444, -2328, 8895, 29179, -4425, 1133, -98}};
-#else
-const spx_word16_t shift_filt[3][7] = {{-390, 1540, -4993, 20123, 20123, -4993, 1540},
- {-1064, 2817, -6694, 31589, 6837, -990, -209},
- {-209, -990, 6837, 31589, -6694, 2817, -1064}};
-#endif
-#else
-#if 0
-const float shift_filt[3][7] = {{-9.9369e-04, 3.1831e-02, -1.3889e-01, 6.0910e-01, 6.0910e-01, -1.3889e-01, 3.1831e-02},
- {-0.0029937, 0.0345613, -0.1350474, 0.8904793, 0.2714479, -0.0710304, 0.0135403},
- {0.0135403, -0.0710304, 0.2714479, 0.8904793, -0.1350474, 0.0345613, -0.0029937}};
-#else
-const float shift_filt[3][7] = {{-0.011915f, 0.046995f, -0.152373f, 0.614108f, 0.614108f, -0.152373f, 0.046995f},
- {-0.0324855f, 0.0859768f, -0.2042986f, 0.9640297f, 0.2086420f, -0.0302054f, -0.0063646f},
- {-0.0063646f, -0.0302054f, 0.2086420f, 0.9640297f, -0.2042986f, 0.0859768f, -0.0324855f}};
-#endif
-#endif
-
-int interp_pitch(
-spx_word16_t *exc, /*decoded excitation*/
-spx_word16_t *interp, /*decoded excitation*/
-int pitch, /*pitch period*/
-int len
-)
-{
- int i,j,k;
- spx_word32_t corr[4][7];
- spx_word32_t maxcorr;
- int maxi, maxj;
- for (i=0;i<7;i++)
- {
- corr[0][i] = inner_prod(exc, exc-pitch-3+i, len);
- }
- for (i=0;i<3;i++)
- {
- for (j=0;j<7;j++)
- {
- int i1, i2;
- spx_word32_t tmp=0;
- i1 = 3-j;
- if (i1<0)
- i1 = 0;
- i2 = 10-j;
- if (i2>7)
- i2 = 7;
- for (k=i1;k<i2;k++)
- tmp += MULT16_32_Q15(shift_filt[i][k],corr[0][j+k-3]);
- corr[i+1][j] = tmp;
- }
- }
- maxi=maxj=0;
- maxcorr = corr[0][0];
- for (i=0;i<4;i++)
- {
- for (j=0;j<7;j++)
- {
- if (corr[i][j] > maxcorr)
- {
- maxcorr = corr[i][j];
- maxi=i;
- maxj=j;
- }
- }
- }
- for (i=0;i<len;i++)
- {
- spx_word32_t tmp = 0;
- if (maxi>0)
- {
- for (k=0;k<7;k++)
- {
- tmp += MULT16_16(exc[i-(pitch-maxj+3)+k-3],shift_filt[maxi-1][k]);
- }
- } else {
- tmp = SHL32(exc[i-(pitch-maxj+3)],15);
- }
- interp[i] = PSHR32(tmp,15);
- }
- return pitch-maxj+3;
-}
-
-void multicomb(
-spx_word16_t *exc, /*decoded excitation*/
-spx_word16_t *new_exc, /*enhanced excitation*/
-spx_coef_t *ak, /*LPC filter coefs*/
-int p, /*LPC order*/
-int nsf, /*sub-frame size*/
-int pitch, /*pitch period*/
-int max_pitch,
-spx_word16_t comb_gain, /*gain of comb filter*/
-char *stack
-)
-{
- int i;
- VARDECL(spx_word16_t *iexc);
- spx_word16_t old_ener, new_ener;
- int corr_pitch;
-
- spx_word16_t iexc0_mag, iexc1_mag, exc_mag;
- spx_word32_t corr0, corr1;
- spx_word16_t gain0, gain1;
- spx_word16_t pgain1, pgain2;
- spx_word16_t c1, c2;
- spx_word16_t g1, g2;
- spx_word16_t ngain;
- spx_word16_t gg1, gg2;
-#ifdef FIXED_POINT
- int scaledown=0;
-#endif
-#if 0 /* Set to 1 to enable full pitch search */
- int nol_pitch[6];
- spx_word16_t nol_pitch_coef[6];
- spx_word16_t ol_pitch_coef;
- open_loop_nbest_pitch(exc, 20, 120, nsf,
- nol_pitch, nol_pitch_coef, 6, stack);
- corr_pitch=nol_pitch[0];
- ol_pitch_coef = nol_pitch_coef[0];
- /*Try to remove pitch multiples*/
- for (i=1;i<6;i++)
- {
-#ifdef FIXED_POINT
- if ((nol_pitch_coef[i]>MULT16_16_Q15(nol_pitch_coef[0],19661)) &&
-#else
- if ((nol_pitch_coef[i]>.6*nol_pitch_coef[0]) &&
-#endif
- (ABS(2*nol_pitch[i]-corr_pitch)<=2 || ABS(3*nol_pitch[i]-corr_pitch)<=3 ||
- ABS(4*nol_pitch[i]-corr_pitch)<=4 || ABS(5*nol_pitch[i]-corr_pitch)<=5))
- {
- corr_pitch = nol_pitch[i];
- }
- }
-#else
- corr_pitch = pitch;
-#endif
-
- ALLOC(iexc, 2*nsf, spx_word16_t);
-
- interp_pitch(exc, iexc, corr_pitch, 80);
- if (corr_pitch>max_pitch)
- interp_pitch(exc, iexc+nsf, 2*corr_pitch, 80);
- else
- interp_pitch(exc, iexc+nsf, -corr_pitch, 80);
-
-#ifdef FIXED_POINT
- for (i=0;i<nsf;i++)
- {
- if (ABS16(exc[i])>16383)
- {
- scaledown = 1;
- break;
- }
- }
- if (scaledown)
- {
- for (i=0;i<nsf;i++)
- exc[i] = SHR16(exc[i],1);
- for (i=0;i<2*nsf;i++)
- iexc[i] = SHR16(iexc[i],1);
- }
-#endif
- /*interp_pitch(exc, iexc+2*nsf, 2*corr_pitch, 80);*/
-
- /*printf ("%d %d %f\n", pitch, corr_pitch, max_corr*ener_1);*/
- iexc0_mag = spx_sqrt(1000+inner_prod(iexc,iexc,nsf));
- iexc1_mag = spx_sqrt(1000+inner_prod(iexc+nsf,iexc+nsf,nsf));
- exc_mag = spx_sqrt(1+inner_prod(exc,exc,nsf));
- corr0 = inner_prod(iexc,exc,nsf);
- if (corr0<0)
- corr0=0;
- corr1 = inner_prod(iexc+nsf,exc,nsf);
- if (corr1<0)
- corr1=0;
-#ifdef FIXED_POINT
- /* Doesn't cost much to limit the ratio and it makes the rest easier */
- if (SHL32(EXTEND32(iexc0_mag),6) < EXTEND32(exc_mag))
- iexc0_mag = ADD16(1,PSHR16(exc_mag,6));
- if (SHL32(EXTEND32(iexc1_mag),6) < EXTEND32(exc_mag))
- iexc1_mag = ADD16(1,PSHR16(exc_mag,6));
-#endif
- if (corr0 > MULT16_16(iexc0_mag,exc_mag))
- pgain1 = QCONST16(1., 14);
- else
- pgain1 = PDIV32_16(SHL32(PDIV32(corr0, exc_mag),14),iexc0_mag);
- if (corr1 > MULT16_16(iexc1_mag,exc_mag))
- pgain2 = QCONST16(1., 14);
- else
- pgain2 = PDIV32_16(SHL32(PDIV32(corr1, exc_mag),14),iexc1_mag);
- gg1 = PDIV32_16(SHL32(EXTEND32(exc_mag),8), iexc0_mag);
- gg2 = PDIV32_16(SHL32(EXTEND32(exc_mag),8), iexc1_mag);
- if (comb_gain>0)
- {
-#ifdef FIXED_POINT
- c1 = (MULT16_16_Q15(QCONST16(.4,15),comb_gain)+QCONST16(.07,15));
- c2 = QCONST16(.5,15)+MULT16_16_Q14(QCONST16(1.72,14),(c1-QCONST16(.07,15)));
-#else
- c1 = .4*comb_gain+.07;
- c2 = .5+1.72*(c1-.07);
-#endif
- } else
- {
- c1=c2=0;
- }
-#ifdef FIXED_POINT
- g1 = 32767 - MULT16_16_Q13(MULT16_16_Q15(c2, pgain1),pgain1);
- g2 = 32767 - MULT16_16_Q13(MULT16_16_Q15(c2, pgain2),pgain2);
-#else
- g1 = 1-c2*pgain1*pgain1;
- g2 = 1-c2*pgain2*pgain2;
-#endif
- if (g1<c1)
- g1 = c1;
- if (g2<c1)
- g2 = c1;
- g1 = (spx_word16_t)PDIV32_16(SHL32(EXTEND32(c1),14),(spx_word16_t)g1);
- g2 = (spx_word16_t)PDIV32_16(SHL32(EXTEND32(c1),14),(spx_word16_t)g2);
- if (corr_pitch>max_pitch)
- {
- gain0 = MULT16_16_Q15(QCONST16(.7,15),MULT16_16_Q14(g1,gg1));
- gain1 = MULT16_16_Q15(QCONST16(.3,15),MULT16_16_Q14(g2,gg2));
- } else {
- gain0 = MULT16_16_Q15(QCONST16(.6,15),MULT16_16_Q14(g1,gg1));
- gain1 = MULT16_16_Q15(QCONST16(.6,15),MULT16_16_Q14(g2,gg2));
- }
- for (i=0;i<nsf;i++)
- new_exc[i] = ADD16(exc[i], EXTRACT16(PSHR32(ADD32(MULT16_16(gain0,iexc[i]), MULT16_16(gain1,iexc[i+nsf])),8)));
- /* FIXME: compute_rms16 is currently not quite accurate enough (but close) */
- new_ener = compute_rms16(new_exc, nsf);
- old_ener = compute_rms16(exc, nsf);
-
- if (old_ener < 1)
- old_ener = 1;
- if (new_ener < 1)
- new_ener = 1;
- if (old_ener > new_ener)
- old_ener = new_ener;
- ngain = PDIV32_16(SHL32(EXTEND32(old_ener),14),new_ener);
-
- for (i=0;i<nsf;i++)
- new_exc[i] = MULT16_16_Q14(ngain, new_exc[i]);
-#ifdef FIXED_POINT
- if (scaledown)
- {
- for (i=0;i<nsf;i++)
- exc[i] = SHL16(exc[i],1);
- for (i=0;i<nsf;i++)
- new_exc[i] = SHL16(SATURATE16(new_exc[i],16383),1);
- }
-#endif
-}
-
diff --git a/3rdparty/speex/libspeex/filters.h b/3rdparty/speex/libspeex/filters.h
deleted file mode 100644
index b363a9a6..00000000
--- a/3rdparty/speex/libspeex/filters.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin */
-/**
- @file filters.h
- @brief Various analysis/synthesis filters
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef FILTERS_H
-#define FILTERS_H
-
-#include "misc.h"
-
-spx_word16_t compute_rms(const spx_sig_t *x, int len);
-spx_word16_t compute_rms16(const spx_word16_t *x, int len);
-void signal_mul(const spx_sig_t *x, spx_sig_t *y, spx_word32_t scale, int len);
-void signal_div(const spx_word16_t *x, spx_word16_t *y, spx_word32_t scale, int len);
-
-#ifdef FIXED_POINT
-
-int normalize16(const spx_sig_t *x, spx_word16_t *y, spx_sig_t max_scale, int len);
-
-#endif
-
-
-#define HIGHPASS_NARROWBAND 0
-#define HIGHPASS_WIDEBAND 2
-#define HIGHPASS_INPUT 0
-#define HIGHPASS_OUTPUT 1
-#define HIGHPASS_IRS 4
-
-void highpass(const spx_word16_t *x, spx_word16_t *y, int len, int filtID, spx_mem_t *mem);
-
-
-void qmf_decomp(const spx_word16_t *xx, const spx_word16_t *aa, spx_word16_t *, spx_word16_t *y2, int N, int M, spx_word16_t *mem, char *stack);
-void qmf_synth(const spx_word16_t *x1, const spx_word16_t *x2, const spx_word16_t *a, spx_word16_t *y, int N, int M, spx_word32_t *mem1, spx_word32_t *mem2, char *stack);
-
-void filter_mem16(const spx_word16_t *x, const spx_coef_t *num, const spx_coef_t *den, spx_word16_t *y, int N, int ord, spx_mem_t *mem, char *stack);
-void iir_mem16(const spx_word16_t *x, const spx_coef_t *den, spx_word16_t *y, int N, int ord, spx_mem_t *mem, char *stack);
-void fir_mem16(const spx_word16_t *x, const spx_coef_t *num, spx_word16_t *y, int N, int ord, spx_mem_t *mem, char *stack);
-
-/* Apply bandwidth expansion on LPC coef */
-void bw_lpc(spx_word16_t , const spx_coef_t *lpc_in, spx_coef_t *lpc_out, int order);
-void sanitize_values32(spx_word32_t *vec, spx_word32_t min_val, spx_word32_t max_val, int len);
-
-
-void syn_percep_zero16(const spx_word16_t *xx, const spx_coef_t *ak, const spx_coef_t *awk1, const spx_coef_t *awk2, spx_word16_t *y, int N, int ord, char *stack);
-void residue_percep_zero16(const spx_word16_t *xx, const spx_coef_t *ak, const spx_coef_t *awk1, const spx_coef_t *awk2, spx_word16_t *y, int N, int ord, char *stack);
-
-void compute_impulse_response(const spx_coef_t *ak, const spx_coef_t *awk1, const spx_coef_t *awk2, spx_word16_t *y, int N, int ord, char *stack);
-
-void multicomb(
-spx_word16_t *exc, /*decoded excitation*/
-spx_word16_t *new_exc, /*enhanced excitation*/
-spx_coef_t *ak, /*LPC filter coefs*/
-int p, /*LPC order*/
-int nsf, /*sub-frame size*/
-int pitch, /*pitch period*/
-int max_pitch, /*pitch gain (3-tap)*/
-spx_word16_t comb_gain, /*gain of comb filter*/
-char *stack
-);
-
-#endif
diff --git a/3rdparty/speex/libspeex/filters_arm4.h b/3rdparty/speex/libspeex/filters_arm4.h
deleted file mode 100644
index 91386100..00000000
--- a/3rdparty/speex/libspeex/filters_arm4.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Copyright (C) 2004 Jean-Marc Valin */
-/**
- @file filters_arm4.h
- @brief Various analysis/synthesis filters (ARM4 version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#define OVERRIDE_NORMALIZE16
-int normalize16(const spx_sig_t *x, spx_word16_t *y, int max_scale, int len)
-{
- int i;
- spx_sig_t max_val=1;
- int sig_shift;
- int dead1, dead2, dead3, dead4, dead5, dead6;
-
- __asm__ __volatile__ (
- "\tmov %1, #1 \n"
- "\tmov %3, #0 \n"
-
- ".normalize16loop1%=: \n"
-
- "\tldr %4, [%0], #4 \n"
- "\tcmps %4, %1 \n"
- "\tmovgt %1, %4 \n"
- "\tcmps %4, %3 \n"
- "\tmovlt %3, %4 \n"
-
- "\tsubs %2, %2, #1 \n"
- "\tbne .normalize16loop1%=\n"
-
- "\trsb %3, %3, #0 \n"
- "\tcmp %1, %3 \n"
- "\tmovlt %1, %3 \n"
- : "=r" (dead1), "=r" (max_val), "=r" (dead3), "=r" (dead4),
- "=r" (dead5), "=r" (dead6)
- : "0" (x), "2" (len)
- : "cc");
-
- sig_shift=0;
- while (max_val>max_scale)
- {
- sig_shift++;
- max_val >>= 1;
- }
-
- __asm__ __volatile__ (
- ".normalize16loop%=: \n"
-
- "\tldr %4, [%0], #4 \n"
- "\tldr %5, [%0], #4 \n"
- "\tmov %4, %4, asr %3 \n"
- "\tstrh %4, [%1], #2 \n"
- "\tldr %4, [%0], #4 \n"
- "\tmov %5, %5, asr %3 \n"
- "\tstrh %5, [%1], #2 \n"
- "\tldr %5, [%0], #4 \n"
- "\tmov %4, %4, asr %3 \n"
- "\tstrh %4, [%1], #2 \n"
- "\tsubs %2, %2, #1 \n"
- "\tmov %5, %5, asr %3 \n"
- "\tstrh %5, [%1], #2 \n"
-
- "\tbge .normalize16loop%=\n"
- : "=r" (dead1), "=r" (dead2), "=r" (dead3), "=r" (dead4),
- "=r" (dead5), "=r" (dead6)
- : "0" (x), "1" (y), "2" (len>>2), "3" (sig_shift)
- : "cc", "memory");
- return sig_shift;
-}
-
diff --git a/3rdparty/speex/libspeex/filters_bfin.h b/3rdparty/speex/libspeex/filters_bfin.h
deleted file mode 100644
index 1e433ee1..00000000
--- a/3rdparty/speex/libspeex/filters_bfin.h
+++ /dev/null
@@ -1,515 +0,0 @@
-/* Copyright (C) 2005 Analog Devices */
-/**
- @file filters_bfin.h
- @brief Various analysis/synthesis filters (Blackfin version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#define OVERRIDE_NORMALIZE16
-int normalize16(const spx_sig_t *x, spx_word16_t *y, spx_sig_t max_scale, int len)
-{
- spx_sig_t max_val=1;
- int sig_shift;
- __asm__
- (
- "%0 = 0;\n\t"
- "I0 = %1;\n\t"
- "L0 = 0;\n\t"
- "R1 = [I0++];\n\t"
- "LOOP norm_max%= LC0 = %2;\n\t"
- "LOOP_BEGIN norm_max%=;\n\t"
- "R2 = ABS R1 || R1 = [I0++];\n\t"
- "%0 = MAX(%0, R2);\n\t"
- "LOOP_END norm_max%=;\n\t"
- : "=&d" (max_val)
- : "a" (x), "a" (len)
- : "R1", "R2"
- );
-
- sig_shift=0;
- while (max_val>max_scale)
- {
- sig_shift++;
- max_val >>= 1;
- }
-
- __asm__ __volatile__
- (
- "I0 = %0;\n\t"
- "L0 = 0;\n\t"
- "P1 = %1;\n\t"
- "R0 = [I0++];\n\t"
- "LOOP norm_shift%= LC0 = %3;\n\t"
- "LOOP_BEGIN norm_shift%=;\n\t"
- "R1 = ASHIFT R0 by %2.L || R0 = [I0++];\n\t"
- "W[P1++] = R1;\n\t"
- "LOOP_END norm_shift%=;\n\t"
- "R1 = ASHIFT R0 by %2.L;\n\t"
- "W[P1++] = R1;\n\t"
- : : "a" (x), "a" (y), "d" (-sig_shift), "a" (len-1)
- : "I0", "L0", "P1", "R0", "R1", "memory"
- );
- return sig_shift;
-}
-
-
-
-#define OVERRIDE_FILTER_MEM16
-void filter_mem16(const spx_word16_t *_x, const spx_coef_t *num, const spx_coef_t *den, spx_word16_t *_y, int N, int ord, spx_mem_t *mem, char *stack)
-{
- VARDECL(spx_word32_t *xy2);
- VARDECL(spx_word32_t *numden_a);
- spx_word32_t *xy;
- spx_word16_t *numden;
- int i;
-
- ALLOC(xy2, (N+1), spx_word32_t);
- ALLOC(numden_a, (2*ord+2), spx_word32_t);
- xy = xy2+1;
- numden = (spx_word16_t*) numden_a;
-
- for (i=0;i<ord;i++)
- {
- numden[2*i] = num[i];
- numden[2*i+1] = den[i];
- }
- __asm__ __volatile__
- (
- /* Register setup */
- "R0 = %5;\n\t" /*ord */
-
- "P0 = %3;\n\t"
- "I0 = P0;\n\t"
- "B0 = P0;\n\t" /* numden */
- "L0 = 0;\n\t"
-
- "P2 = %0;\n\t" /* Fused xy */
- "I2 = P2;\n\t"
- "L2 = 0;\n\t"
-
- "P4 = %6;\n\t" /* mem */
- "P0 = %1;\n\t" /* _x */
- "P1 = %2;\n\t" /* _y */
-
- /* First sample */
- "R1 = [P4++];\n\t"
- "R1 <<= 3;\n\t" /* shift mem */
- "R1.L = R1 (RND);\n\t"
- "R2 = W[P0++];\n\t" /* load x[0] */
- "R1.L = R1.L + R2.L;\n\t"
- "W[P1++] = R1;\n\t" /* store y[0] */
- "R2 = PACK(R1.L, R2.L);\n\t" /* pack x16 and y16 */
- "[P2] = R2;\n\t"
-
- /* Samples 1 to ord-1 (using memory) */
- "R0 += -1;\n\t"
- "R3 = 0;\n\t"
- "LC0 = R0;\n\t"
- "LOOP filter_start%= LC0;\n\t"
- "LOOP_BEGIN filter_start%=;\n\t"
- "R3 += 1;\n\t"
- "LC1 = R3;\n\t"
-
- "R1 = [P4++];\n\t"
- "A1 = R1;\n\t"
- "A0 = 0;\n\t"
- "I0 = B0;\n\t"
- "I2 = P2;\n\t"
- "P2 += 4;\n\t"
- "R4 = [I0++] || R5 = [I2--];\n\t"
- "LOOP filter_start_inner%= LC1;\n\t"
- "LOOP_BEGIN filter_start_inner%=;\n\t"
- "A1 -= R4.H*R5.H, A0 += R4.L*R5.L (IS) || R4 = [I0++] || R5 = [I2--];\n\t"
- "LOOP_END filter_start_inner%=;\n\t"
- "A0 += A1;\n\t"
- "R4 = A0;\n\t"
- "R4 <<= 3;\n\t" /* shift mem */
- "R4.L = R4 (RND);\n\t"
- "R2 = W[P0++];\n\t" /* load x */
- "R4.L = R4.L + R2.L;\n\t"
- "W[P1++] = R4;\n\t" /* store y */
- //"R4 <<= 2;\n\t"
- //"R2 <<= 2;\n\t"
- "R2 = PACK(R4.L, R2.L);\n\t" /* pack x16 and y16 */
- "[P2] = R2;\n\t"
-
- "LOOP_END filter_start%=;\n\t"
-
- /* Samples ord to N*/
- "R0 = %5;\n\t"
- "R0 <<= 1;\n\t"
- "I0 = B0;\n\t" /* numden */
- "R0 <<= 1;\n\t"
- "L0 = R0;\n\t"
-
- "R0 = %5;\n\t" /* org */
- "R2 = %4;\n\t" /* N */
- "R2 = R2 - R0;\n\t"
- "R4 = [I0++];\n\t" /* numden */
- "LC0 = R2;\n\t"
- "P3 = R0;\n\t"
- "R0 <<= 2;\n\t"
- "R0 += 8;\n\t"
- "I2 = P2;\n\t"
- "M0 = R0;\n\t"
- "A1 = A0 = 0;\n\t"
- "R5 = [I2--];\n\t" /* load xy */
- "LOOP filter_mid%= LC0;\n\t"
- "LOOP_BEGIN filter_mid%=;\n\t"
- "LOOP filter_mid_inner%= LC1=P3;\n\t"
- "LOOP_BEGIN filter_mid_inner%=;\n\t"
- "A1 -= R4.H*R5.H, A0 += R4.L*R5.L (IS) || R4 = [I0++] || R5 = [I2--];\n\t"
- "LOOP_END filter_mid_inner%=;\n\t"
- "R0 = (A0 += A1) || I2 += M0;\n\t"
- "R0 = R0 << 3 || R5 = W[P0++];\n\t" /* load x */
- "R0.L = R0 (RND);\n\t"
- "R0.L = R0.L + R5.L;\n\t"
- "R5 = PACK(R0.L, R5.L) || W[P1++] = R0;\n\t" /* shift y | store y */
- "A1 = A0 = 0 || [I2--] = R5\n\t"
- "LOOP_END filter_mid%=;\n\t"
- "I2 += 4;\n\t"
- "P2 = I2;\n\t"
- /* Update memory */
- "P4 = %6;\n\t"
- "R0 = %5;\n\t"
- "LC0 = R0;\n\t"
- "P0 = B0;\n\t"
- "A1 = A0 = 0;\n\t"
- "LOOP mem_update%= LC0;\n\t"
- "LOOP_BEGIN mem_update%=;\n\t"
- "I2 = P2;\n\t"
- "I0 = P0;\n\t"
- "P0 += 4;\n\t"
- "R0 = LC0;\n\t"
- "LC1 = R0;\n\t"
- "R5 = [I2--] || R4 = [I0++];\n\t"
- "LOOP mem_accum%= LC1;\n\t"
- "LOOP_BEGIN mem_accum%=;\n\t"
- "A1 -= R4.H*R5.H, A0 += R4.L*R5.L (IS) || R4 = [I0++] || R5 = [I2--];\n\t"
- "LOOP_END mem_accum%=;\n\t"
- "R0 = (A0 += A1);\n\t"
- "A1 = A0 = 0 || [P4++] = R0;\n\t"
- "LOOP_END mem_update%=;\n\t"
- "L0 = 0;\n\t"
- : : "m" (xy), "m" (_x), "m" (_y), "m" (numden), "m" (N), "m" (ord), "m" (mem)
- : "A0", "A1", "R0", "R1", "R2", "R3", "R4", "R5", "P0", "P1", "P2", "P3", "P4", "B0", "I0", "I2", "L0", "L2", "M0", "memory"
- );
-
-}
-
-
-
-#define OVERRIDE_IIR_MEM16
-void iir_mem16(const spx_word16_t *_x, const spx_coef_t *den, spx_word16_t *_y, int N, int ord, spx_mem_t *mem, char *stack)
-{
- VARDECL(spx_word16_t *y);
- spx_word16_t *yy;
-
- ALLOC(y, (N+2), spx_word16_t);
- yy = y+2;
-
- __asm__ __volatile__
- (
- /* Register setup */
- "R0 = %5;\n\t" /*ord */
-
- "P1 = %3;\n\t"
- "I1 = P1;\n\t"
- "B1 = P1;\n\t"
- "L1 = 0;\n\t"
-
- "P3 = %0;\n\t"
- "I3 = P3;\n\t"
- "L3 = 0;\n\t"
-
- "P4 = %6;\n\t"
- "P0 = %1;\n\t"
- "P1 = %2;\n\t"
-
- /* First sample */
- "R1 = [P4++];\n\t"
- "R1 = R1 << 3 (S);\n\t"
- "R1.L = R1 (RND);\n\t"
- "R2 = W[P0++];\n\t"
- "R1 = R1 + R2;\n\t"
- "W[P1++] = R1;\n\t"
- "W[P3] = R1;\n\t"
-
- /* Samples 1 to ord-1 (using memory) */
- "R0 += -1;\n\t"
- "R3 = 0;\n\t"
- "LC0 = R0;\n\t"
- "LOOP filter_start%= LC0;\n\t"
- "LOOP_BEGIN filter_start%=;\n\t"
- "R3 += 1;\n\t"
- "LC1 = R3;\n\t"
-
- "R1 = [P4++];\n\t"
- "A1 = R1;\n\t"
- "I1 = B1;\n\t"
- "I3 = P3;\n\t"
- "P3 += 2;\n\t"
- "LOOP filter_start_inner%= LC1;\n\t"
- "LOOP_BEGIN filter_start_inner%=;\n\t"
- "R4.L = W[I1++];\n\t"
- "R5.L = W[I3--];\n\t"
- "A1 -= R4.L*R5.L (IS);\n\t"
- "LOOP_END filter_start_inner%=;\n\t"
-
- "R1 = A1;\n\t"
- "R1 <<= 3;\n\t"
- "R1.L = R1 (RND);\n\t"
- "R2 = W[P0++];\n\t"
- "R1 = R1 + R2;\n\t"
- "W[P1++] = R1;\n\t"
- "W[P3] = R1;\n\t"
- "LOOP_END filter_start%=;\n\t"
-
- /* Samples ord to N*/
- "R0 = %5;\n\t"
- "R0 <<= 1;\n\t"
- "I1 = B1;\n\t"
- "L1 = R0;\n\t"
-
- "R0 = %5;\n\t"
- "R2 = %4;\n\t"
- "R2 = R2 - R0;\n\t"
- "R4.L = W[I1++];\n\t"
- "LC0 = R2;\n\t"
- "LOOP filter_mid%= LC0;\n\t"
- "LOOP_BEGIN filter_mid%=;\n\t"
- "LC1 = R0;\n\t"
- "A1 = 0;\n\t"
- "I3 = P3;\n\t"
- "P3 += 2;\n\t"
- "R5.L = W[I3--];\n\t"
- "LOOP filter_mid_inner%= LC1;\n\t"
- "LOOP_BEGIN filter_mid_inner%=;\n\t"
- "A1 -= R4.L*R5.L (IS) || R4.L = W[I1++] || R5.L = W[I3--];\n\t"
- "LOOP_END filter_mid_inner%=;\n\t"
- "R1 = A1;\n\t"
- "R1 = R1 << 3 || R2 = W[P0++];\n\t"
- "R1.L = R1 (RND);\n\t"
- "R1 = R1 + R2;\n\t"
- "W[P1++] = R1;\n\t"
- "W[P3] = R1;\n\t"
- "LOOP_END filter_mid%=;\n\t"
-
- /* Update memory */
- "P4 = %6;\n\t"
- "R0 = %5;\n\t"
- "LC0 = R0;\n\t"
- "P1 = B1;\n\t"
- "LOOP mem_update%= LC0;\n\t"
- "LOOP_BEGIN mem_update%=;\n\t"
- "A0 = 0;\n\t"
- "I3 = P3;\n\t"
- "I1 = P1;\n\t"
- "P1 += 2;\n\t"
- "R0 = LC0;\n\t"
- "LC1=R0;\n\t"
- "R5.L = W[I3--] || R4.L = W[I1++];\n\t"
- "LOOP mem_accum%= LC1;\n\t"
- "LOOP_BEGIN mem_accum%=;\n\t"
- "A0 -= R4.L*R5.L (IS) || R4.L = W[I1++] || R5.L = W[I3--];\n\t"
- "LOOP_END mem_accum%=;\n\t"
- "R0 = A0;\n\t"
- "[P4++] = R0;\n\t"
- "LOOP_END mem_update%=;\n\t"
- "L1 = 0;\n\t"
- : : "m" (yy), "m" (_x), "m" (_y), "m" (den), "m" (N), "m" (ord), "m" (mem)
- : "A0", "A1", "R0", "R1", "R2", "R3", "R4", "R5", "P0", "P1", "P2", "P3", "P4", "B1", "I1", "I3", "L1", "L3", "memory"
- );
-
-}
-
-
-#define OVERRIDE_FIR_MEM16
-void fir_mem16(const spx_word16_t *x, const spx_coef_t *num, spx_word16_t *y, int N, int ord, spx_mem_t *mem, char *stack)
-{
- int i;
- spx_coef_t den2[12];
- spx_coef_t *den;
- den = (spx_coef_t*)((((int)den2)+4)&0xfffffffc);
- for (i=0;i<10;i++)
- den[i] = 0;
- filter_mem16(x, num, den, y, N, ord, mem, stack);
-}
-
-
-#define OVERRIDE_COMPUTE_IMPULSE_RESPONSE
-void compute_impulse_response(const spx_coef_t *ak, const spx_coef_t *awk1, const spx_coef_t *awk2, spx_word16_t *y, int N, int ord, char *stack)
-{
- int i;
- VARDECL(spx_word16_t *ytmp);
- ALLOC(ytmp, N, spx_word16_t);
- spx_word16_t *ytmp2 = ytmp;
- y[0] = LPC_SCALING;
- for (i=0;i<ord;i++)
- y[i+1] = awk1[i];
- i++;
- for (;i<N;i++)
- y[i] = 0;
-
- N-=1;
- __asm__ __volatile__
- (
- "I0 = %0;\n\t"
- "I1 = %1;\n\t"
- "L0 = 0;\n\t"
- "L1 = 0;\n\t"
- "L2 = 0;\n\t"
- "L3 = 0;\n\t"
- "R0 = 1;\n\t"
- "R0 <<= 13;\n\t"
- "W[I0] = R0.L;\n\t"
- "R0 <<= 1;\n\t"
- "W[I1] = R0.L;\n\t"
- "R0 = %5;\n\t"
- "LC0 = R0;\n\t"
- "R2 = 0;\n\t"
- "LOOP samples%= LC0;\n\t"
- "LOOP_BEGIN samples%=;\n\t"
- "R2 += 1;\n\t"
- "R2 = MIN(R2, %4);\n\t"
- "I0 = %0;\n\t"
- "I1 = %1;\n\t"
- "I2 = %2;\n\t"
- "I3 = %3;\n\t"
- "%0 += 2;\n\t"
- "%1 += 2;\n\t"
- "A1 = A0 = 0;\n\t"
- "R0.L = W[I0--] || R1.L = W[I2++];\n\t"
- "LC1 = R2;\n\t"
- "LOOP filter%= LC1;\n\t"
- "LOOP_BEGIN filter%=;\n\t"
- "A0 -= R0.L*R1.L (IS) || R0.L = W[I1--] || R1.L = W[I3++];\n\t"
- "A1 -= R0.L*R1.L (IS) || R0.L = W[I0--] || R1.L = W[I2++];\n\t"
- "LOOP_END filter%=;\n\t"
- "R0 = A0, R1 = A1;\n\t"
- "R3 = W[%1] (X);\n\t"
- "R3 <<= 13;\n\t"
- "R0 = R0 + R3;\n\t"
- "R3 = R0 >>> 13;\n\t"
- "W[%0] = R3.L;\n\t"
- "R0 <<= 1;\n\t"
- "R1 = R1 + R0;\n\t"
- "R1 >>>= 13;\n\t"
- "W[%1] = R1.L;\n\t"
- "LOOP_END samples%=;\n\t"
- : "=a" (ytmp2), "=a" (y)
- : "a" (awk2), "a" (ak), "d" (ord), "m" (N), "0" (ytmp2), "1" (y)
- : "A0", "A1", "R0", "R1", "R2", "R3", "I0", "I1", "I2", "I3", "L0", "L1", "L2", "L3", "A0", "A1"
- );
-}
-
-
-
-#if 0 /* Equivalent C function for filter_mem2 and compute_impulse_response */
-#define min(a,b) ((a)<(b) ? (a):(b))
-
-void compute_impulse_response(const spx_coef_t *ak, const spx_coef_t *awk1, const spx_coef_t *awk2, spx_word16_t *y, int N, int ord, char *stack)
-{
- int i,j;
- VARDECL(spx_word16_t *ytmp);
- ALLOC(ytmp, N, spx_word16_t);
-
- y[0] = LPC_SCALING;
- for (i=0;i<ord;i++)
- y[i+1] = awk1[i];
- i++;
- for (;i<N;i++)
- y[i] = 0;
-
- for (i=0;i<N;i++)
- {
- spx_word32_t yi = SHL32(EXTEND32(y[i]),LPC_SHIFT);
- spx_word32_t yi2 = 0;
- for (j=0;j<min(i,ord);j++)
- {
- yi = MAC16_16(yi, awk2[j], -ytmp[i-j-1]);
- yi2 = MAC16_16(yi2, ak[j], -y[i-j-1]);
- }
- ytmp[i] = EXTRACT16(SHR32(yi,LPC_SHIFT));
- yi2 = ADD32(yi2,SHL32(yi,1));
- y[i] = EXTRACT16(SHR32(yi2,LPC_SHIFT));
- }
-
-}
-
-
-void filter_mem2(const spx_sig_t *_x, const spx_coef_t *num, const spx_coef_t *den, spx_sig_t *_y, int N, int ord, spx_mem_t *mem)
-{
- int i,j;
- spx_word16_t xi,yi,nyi;
- spx_word16_t x[N],y[N];
- spx_word16_t *xx, *yy;
- xx = x;
- yy = y;
- for (i=0;i<N;i++)
- {
- x[i] = EXTRACT16(SHR32(_x[i],SIG_SHIFT));
- }
-
- for (i=0;i<ord;i++)
- {
- spx_word32_t yi = mem[i];
- for (j=0;j<i;j++)
- {
- yi = MAC16_16(yi, num[j], x[i-j-1]);
- yi = MAC16_16(yi, den[j], -y[i-j-1]);
- }
- _y[i] = ADD32(_x[i],SHL32(yi,1));
- y[i] = EXTRACT16(SHR32(_y[i],SIG_SHIFT));
- }
- for (i=ord;i<N;i++)
- {
- spx_word32_t yi = 0;
- for (j=0;j<ord;j++)
- {
- yi = MAC16_16(yi, num[j], x[i-j-1]);
- yi = MAC16_16(yi, den[j], -y[i-j-1]);
- }
- _y[i] = ADD32(_x[i],SHL32(yi,1));
- y[i] = EXTRACT16(SHR32(_y[i],SIG_SHIFT));
- }
-
- for (i=0;i<ord;i++)
- {
- spx_mem_t m = 0;
- for (j=0;j<ord-i;j++)
- {
- m = MAC16_16(m, x[N-1-j], num[j+i]);
- m = MAC16_16(m, -y[N-1-j], den[j+i]);
- }
- mem[i] = m;
- }
-}
-#endif
diff --git a/3rdparty/speex/libspeex/filters_sse.h b/3rdparty/speex/libspeex/filters_sse.h
deleted file mode 100644
index 4bb333da..00000000
--- a/3rdparty/speex/libspeex/filters_sse.h
+++ /dev/null
@@ -1,336 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin */
-/**
- @file filters_sse.h
- @brief Various analysis/synthesis filters (SSE version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <xmmintrin.h>
-
-void filter_mem16_10(const float *x, const float *_num, const float *_den, float *y, int N, int ord, float *_mem)
-{
- __m128 num[3], den[3], mem[3];
-
- int i;
-
- /* Copy numerator, denominator and memory to aligned xmm */
- for (i=0;i<2;i++)
- {
- mem[i] = _mm_loadu_ps(_mem+4*i);
- num[i] = _mm_loadu_ps(_num+4*i);
- den[i] = _mm_loadu_ps(_den+4*i);
- }
- mem[2] = _mm_setr_ps(_mem[8], _mem[9], 0, 0);
- num[2] = _mm_setr_ps(_num[8], _num[9], 0, 0);
- den[2] = _mm_setr_ps(_den[8], _den[9], 0, 0);
-
- for (i=0;i<N;i++)
- {
- __m128 xx;
- __m128 yy;
- /* Compute next filter result */
- xx = _mm_load_ps1(x+i);
- yy = _mm_add_ss(xx, mem[0]);
- _mm_store_ss(y+i, yy);
- yy = _mm_shuffle_ps(yy, yy, 0);
-
- /* Update memory */
- mem[0] = _mm_move_ss(mem[0], mem[1]);
- mem[0] = _mm_shuffle_ps(mem[0], mem[0], 0x39);
-
- mem[0] = _mm_add_ps(mem[0], _mm_mul_ps(xx, num[0]));
- mem[0] = _mm_sub_ps(mem[0], _mm_mul_ps(yy, den[0]));
-
- mem[1] = _mm_move_ss(mem[1], mem[2]);
- mem[1] = _mm_shuffle_ps(mem[1], mem[1], 0x39);
-
- mem[1] = _mm_add_ps(mem[1], _mm_mul_ps(xx, num[1]));
- mem[1] = _mm_sub_ps(mem[1], _mm_mul_ps(yy, den[1]));
-
- mem[2] = _mm_shuffle_ps(mem[2], mem[2], 0xfd);
-
- mem[2] = _mm_add_ps(mem[2], _mm_mul_ps(xx, num[2]));
- mem[2] = _mm_sub_ps(mem[2], _mm_mul_ps(yy, den[2]));
- }
- /* Put memory back in its place */
- _mm_storeu_ps(_mem, mem[0]);
- _mm_storeu_ps(_mem+4, mem[1]);
- _mm_store_ss(_mem+8, mem[2]);
- mem[2] = _mm_shuffle_ps(mem[2], mem[2], 0x55);
- _mm_store_ss(_mem+9, mem[2]);
-}
-
-void filter_mem16_8(const float *x, const float *_num, const float *_den, float *y, int N, int ord, float *_mem)
-{
- __m128 num[2], den[2], mem[2];
-
- int i;
-
- /* Copy numerator, denominator and memory to aligned xmm */
- for (i=0;i<2;i++)
- {
- mem[i] = _mm_loadu_ps(_mem+4*i);
- num[i] = _mm_loadu_ps(_num+4*i);
- den[i] = _mm_loadu_ps(_den+4*i);
- }
-
- for (i=0;i<N;i++)
- {
- __m128 xx;
- __m128 yy;
- /* Compute next filter result */
- xx = _mm_load_ps1(x+i);
- yy = _mm_add_ss(xx, mem[0]);
- _mm_store_ss(y+i, yy);
- yy = _mm_shuffle_ps(yy, yy, 0);
-
- /* Update memory */
- mem[0] = _mm_move_ss(mem[0], mem[1]);
- mem[0] = _mm_shuffle_ps(mem[0], mem[0], 0x39);
-
- mem[0] = _mm_add_ps(mem[0], _mm_mul_ps(xx, num[0]));
- mem[0] = _mm_sub_ps(mem[0], _mm_mul_ps(yy, den[0]));
-
- mem[1] = _mm_sub_ss(mem[1], mem[1]);
- mem[1] = _mm_shuffle_ps(mem[1], mem[1], 0x39);
-
- mem[1] = _mm_add_ps(mem[1], _mm_mul_ps(xx, num[1]));
- mem[1] = _mm_sub_ps(mem[1], _mm_mul_ps(yy, den[1]));
- }
- /* Put memory back in its place */
- _mm_storeu_ps(_mem, mem[0]);
- _mm_storeu_ps(_mem+4, mem[1]);
-}
-
-
-#define OVERRIDE_FILTER_MEM16
-void filter_mem16(const float *x, const float *_num, const float *_den, float *y, int N, int ord, float *_mem, char *stack)
-{
- if(ord==10)
- filter_mem16_10(x, _num, _den, y, N, ord, _mem);
- else if (ord==8)
- filter_mem16_8(x, _num, _den, y, N, ord, _mem);
-}
-
-
-
-void iir_mem16_10(const float *x, const float *_den, float *y, int N, int ord, float *_mem)
-{
- __m128 den[3], mem[3];
-
- int i;
-
- /* Copy numerator, denominator and memory to aligned xmm */
- for (i=0;i<2;i++)
- {
- mem[i] = _mm_loadu_ps(_mem+4*i);
- den[i] = _mm_loadu_ps(_den+4*i);
- }
- mem[2] = _mm_setr_ps(_mem[8], _mem[9], 0, 0);
- den[2] = _mm_setr_ps(_den[8], _den[9], 0, 0);
-
- for (i=0;i<N;i++)
- {
- __m128 xx;
- __m128 yy;
- /* Compute next filter result */
- xx = _mm_load_ps1(x+i);
- yy = _mm_add_ss(xx, mem[0]);
- _mm_store_ss(y+i, yy);
- yy = _mm_shuffle_ps(yy, yy, 0);
-
- /* Update memory */
- mem[0] = _mm_move_ss(mem[0], mem[1]);
- mem[0] = _mm_shuffle_ps(mem[0], mem[0], 0x39);
-
- mem[0] = _mm_sub_ps(mem[0], _mm_mul_ps(yy, den[0]));
-
- mem[1] = _mm_move_ss(mem[1], mem[2]);
- mem[1] = _mm_shuffle_ps(mem[1], mem[1], 0x39);
-
- mem[1] = _mm_sub_ps(mem[1], _mm_mul_ps(yy, den[1]));
-
- mem[2] = _mm_shuffle_ps(mem[2], mem[2], 0xfd);
-
- mem[2] = _mm_sub_ps(mem[2], _mm_mul_ps(yy, den[2]));
- }
- /* Put memory back in its place */
- _mm_storeu_ps(_mem, mem[0]);
- _mm_storeu_ps(_mem+4, mem[1]);
- _mm_store_ss(_mem+8, mem[2]);
- mem[2] = _mm_shuffle_ps(mem[2], mem[2], 0x55);
- _mm_store_ss(_mem+9, mem[2]);
-}
-
-
-void iir_mem16_8(const float *x, const float *_den, float *y, int N, int ord, float *_mem)
-{
- __m128 den[2], mem[2];
-
- int i;
-
- /* Copy numerator, denominator and memory to aligned xmm */
- for (i=0;i<2;i++)
- {
- mem[i] = _mm_loadu_ps(_mem+4*i);
- den[i] = _mm_loadu_ps(_den+4*i);
- }
-
- for (i=0;i<N;i++)
- {
- __m128 xx;
- __m128 yy;
- /* Compute next filter result */
- xx = _mm_load_ps1(x+i);
- yy = _mm_add_ss(xx, mem[0]);
- _mm_store_ss(y+i, yy);
- yy = _mm_shuffle_ps(yy, yy, 0);
-
- /* Update memory */
- mem[0] = _mm_move_ss(mem[0], mem[1]);
- mem[0] = _mm_shuffle_ps(mem[0], mem[0], 0x39);
-
- mem[0] = _mm_sub_ps(mem[0], _mm_mul_ps(yy, den[0]));
-
- mem[1] = _mm_sub_ss(mem[1], mem[1]);
- mem[1] = _mm_shuffle_ps(mem[1], mem[1], 0x39);
-
- mem[1] = _mm_sub_ps(mem[1], _mm_mul_ps(yy, den[1]));
- }
- /* Put memory back in its place */
- _mm_storeu_ps(_mem, mem[0]);
- _mm_storeu_ps(_mem+4, mem[1]);
-}
-
-#define OVERRIDE_IIR_MEM16
-void iir_mem16(const float *x, const float *_den, float *y, int N, int ord, float *_mem, char *stack)
-{
- if(ord==10)
- iir_mem16_10(x, _den, y, N, ord, _mem);
- else if (ord==8)
- iir_mem16_8(x, _den, y, N, ord, _mem);
-}
-
-
-void fir_mem16_10(const float *x, const float *_num, float *y, int N, int ord, float *_mem)
-{
- __m128 num[3], mem[3];
-
- int i;
-
- /* Copy numerator, denominator and memory to aligned xmm */
- for (i=0;i<2;i++)
- {
- mem[i] = _mm_loadu_ps(_mem+4*i);
- num[i] = _mm_loadu_ps(_num+4*i);
- }
- mem[2] = _mm_setr_ps(_mem[8], _mem[9], 0, 0);
- num[2] = _mm_setr_ps(_num[8], _num[9], 0, 0);
-
- for (i=0;i<N;i++)
- {
- __m128 xx;
- __m128 yy;
- /* Compute next filter result */
- xx = _mm_load_ps1(x+i);
- yy = _mm_add_ss(xx, mem[0]);
- _mm_store_ss(y+i, yy);
- yy = _mm_shuffle_ps(yy, yy, 0);
-
- /* Update memory */
- mem[0] = _mm_move_ss(mem[0], mem[1]);
- mem[0] = _mm_shuffle_ps(mem[0], mem[0], 0x39);
-
- mem[0] = _mm_add_ps(mem[0], _mm_mul_ps(xx, num[0]));
-
- mem[1] = _mm_move_ss(mem[1], mem[2]);
- mem[1] = _mm_shuffle_ps(mem[1], mem[1], 0x39);
-
- mem[1] = _mm_add_ps(mem[1], _mm_mul_ps(xx, num[1]));
-
- mem[2] = _mm_shuffle_ps(mem[2], mem[2], 0xfd);
-
- mem[2] = _mm_add_ps(mem[2], _mm_mul_ps(xx, num[2]));
- }
- /* Put memory back in its place */
- _mm_storeu_ps(_mem, mem[0]);
- _mm_storeu_ps(_mem+4, mem[1]);
- _mm_store_ss(_mem+8, mem[2]);
- mem[2] = _mm_shuffle_ps(mem[2], mem[2], 0x55);
- _mm_store_ss(_mem+9, mem[2]);
-}
-
-void fir_mem16_8(const float *x, const float *_num, float *y, int N, int ord, float *_mem)
-{
- __m128 num[2], mem[2];
-
- int i;
-
- /* Copy numerator, denominator and memory to aligned xmm */
- for (i=0;i<2;i++)
- {
- mem[i] = _mm_loadu_ps(_mem+4*i);
- num[i] = _mm_loadu_ps(_num+4*i);
- }
-
- for (i=0;i<N;i++)
- {
- __m128 xx;
- __m128 yy;
- /* Compute next filter result */
- xx = _mm_load_ps1(x+i);
- yy = _mm_add_ss(xx, mem[0]);
- _mm_store_ss(y+i, yy);
- yy = _mm_shuffle_ps(yy, yy, 0);
-
- /* Update memory */
- mem[0] = _mm_move_ss(mem[0], mem[1]);
- mem[0] = _mm_shuffle_ps(mem[0], mem[0], 0x39);
-
- mem[0] = _mm_add_ps(mem[0], _mm_mul_ps(xx, num[0]));
-
- mem[1] = _mm_sub_ss(mem[1], mem[1]);
- mem[1] = _mm_shuffle_ps(mem[1], mem[1], 0x39);
-
- mem[1] = _mm_add_ps(mem[1], _mm_mul_ps(xx, num[1]));
- }
- /* Put memory back in its place */
- _mm_storeu_ps(_mem, mem[0]);
- _mm_storeu_ps(_mem+4, mem[1]);
-}
-
-#define OVERRIDE_FIR_MEM16
-void fir_mem16(const float *x, const float *_num, float *y, int N, int ord, float *_mem, char *stack)
-{
- if(ord==10)
- fir_mem16_10(x, _num, y, N, ord, _mem);
- else if (ord==8)
- fir_mem16_8(x, _num, y, N, ord, _mem);
-}
diff --git a/3rdparty/speex/libspeex/fixed_arm4.h b/3rdparty/speex/libspeex/fixed_arm4.h
deleted file mode 100644
index b6981cae..00000000
--- a/3rdparty/speex/libspeex/fixed_arm4.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Copyright (C) 2004 Jean-Marc Valin */
-/**
- @file fixed_arm4.h
- @brief ARM4 fixed-point operations
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef FIXED_ARM4_H
-#define FIXED_ARM4_H
-
-#undef MULT16_32_Q14
-static inline spx_word32_t MULT16_32_Q14(spx_word16_t x, spx_word32_t y) {
- int res;
- int dummy;
- asm (
- "smull %0,%1,%2,%3 \n\t"
- "mov %0, %0, lsr #14 \n\t"
- "add %0, %0, %1, lsl #18 \n\t"
- : "=&r"(res), "=&r" (dummy)
- : "r"(y),"r"((int)x));
- return(res);
-}
-
-#undef MULT16_32_Q15
-static inline spx_word32_t MULT16_32_Q15(spx_word16_t x, spx_word32_t y) {
- int res;
- int dummy;
- asm (
- "smull %0,%1,%2,%3 \n\t"
- "mov %0, %0, lsr #15 \n\t"
- "add %0, %0, %1, lsl #17 \n\t"
- : "=&r"(res), "=&r" (dummy)
- : "r"(y),"r"((int)x));
- return(res);
-}
-
-#undef DIV32_16
-static inline short DIV32_16(int a, int b)
-{
- int res=0;
- int dead1, dead2, dead3, dead4, dead5;
- __asm__ __volatile__ (
- "\teor %5, %0, %1\n"
- "\tmovs %4, %0\n"
- "\trsbmi %0, %0, #0 \n"
- "\tmovs %4, %1\n"
- "\trsbmi %1, %1, #0 \n"
- "\tmov %4, #1\n"
-
- "\tsubs %3, %0, %1, asl #14 \n"
- "\tmovpl %0, %3 \n"
- "\torrpl %2, %2, %4, asl #14 \n"
-
- "\tsubs %3, %0, %1, asl #13 \n"
- "\tmovpl %0, %3 \n"
- "\torrpl %2, %2, %4, asl #13 \n"
-
- "\tsubs %3, %0, %1, asl #12 \n"
- "\tmovpl %0, %3 \n"
- "\torrpl %2, %2, %4, asl #12 \n"
-
- "\tsubs %3, %0, %1, asl #11 \n"
- "\tmovpl %0, %3 \n"
- "\torrpl %2, %2, %4, asl #11 \n"
-
- "\tsubs %3, %0, %1, asl #10 \n"
- "\tmovpl %0, %3 \n"
- "\torrpl %2, %2, %4, asl #10 \n"
-
- "\tsubs %3, %0, %1, asl #9 \n"
- "\tmovpl %0, %3 \n"
- "\torrpl %2, %2, %4, asl #9 \n"
-
- "\tsubs %3, %0, %1, asl #8 \n"
- "\tmovpl %0, %3 \n"
- "\torrpl %2, %2, %4, asl #8 \n"
-
- "\tsubs %3, %0, %1, asl #7 \n"
- "\tmovpl %0, %3 \n"
- "\torrpl %2, %2, %4, asl #7 \n"
-
- "\tsubs %3, %0, %1, asl #6 \n"
- "\tmovpl %0, %3 \n"
- "\torrpl %2, %2, %4, asl #6 \n"
-
- "\tsubs %3, %0, %1, asl #5 \n"
- "\tmovpl %0, %3 \n"
- "\torrpl %2, %2, %4, asl #5 \n"
-
- "\tsubs %3, %0, %1, asl #4 \n"
- "\tmovpl %0, %3 \n"
- "\torrpl %2, %2, %4, asl #4 \n"
-
- "\tsubs %3, %0, %1, asl #3 \n"
- "\tmovpl %0, %3 \n"
- "\torrpl %2, %2, %4, asl #3 \n"
-
- "\tsubs %3, %0, %1, asl #2 \n"
- "\tmovpl %0, %3 \n"
- "\torrpl %2, %2, %4, asl #2 \n"
-
- "\tsubs %3, %0, %1, asl #1 \n"
- "\tmovpl %0, %3 \n"
- "\torrpl %2, %2, %4, asl #1 \n"
-
- "\tsubs %3, %0, %1 \n"
- "\tmovpl %0, %3 \n"
- "\torrpl %2, %2, %4 \n"
-
- "\tmovs %5, %5, lsr #31 \n"
- "\trsbne %2, %2, #0 \n"
- : "=r" (dead1), "=r" (dead2), "=r" (res),
- "=r" (dead3), "=r" (dead4), "=r" (dead5)
- : "0" (a), "1" (b), "2" (res)
- : "cc"
- );
- return res;
-}
-
-
-#endif
diff --git a/3rdparty/speex/libspeex/fixed_arm5e.h b/3rdparty/speex/libspeex/fixed_arm5e.h
deleted file mode 100644
index 9b4861c9..00000000
--- a/3rdparty/speex/libspeex/fixed_arm5e.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/* Copyright (C) 2003 Jean-Marc Valin */
-/**
- @file fixed_arm5e.h
- @brief ARM-tuned fixed-point operations
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef FIXED_ARM5E_H
-#define FIXED_ARM5E_H
-
-#undef MULT16_16
-static inline spx_word32_t MULT16_16(spx_word16_t x, spx_word16_t y) {
- int res;
- asm ("smulbb %0,%1,%2;\n"
- : "=&r"(res)
- : "%r"(x),"r"(y));
- return(res);
-}
-
-#undef MAC16_16
-static inline spx_word32_t MAC16_16(spx_word32_t a, spx_word16_t x, spx_word32_t y) {
- int res;
- asm ("smlabb %0,%1,%2,%3;\n"
- : "=&r"(res)
- : "%r"(x),"r"(y),"r"(a));
- return(res);
-}
-
-#undef MULT16_32_Q15
-static inline spx_word32_t MULT16_32_Q15(spx_word16_t x, spx_word32_t y) {
- int res;
- asm ("smulwb %0,%1,%2;\n"
- : "=&r"(res)
- : "%r"(y<<1),"r"(x));
- return(res);
-}
-
-#undef MAC16_32_Q15
-static inline spx_word32_t MAC16_32_Q15(spx_word32_t a, spx_word16_t x, spx_word32_t y) {
- int res;
- asm ("smlawb %0,%1,%2,%3;\n"
- : "=&r"(res)
- : "%r"(y<<1),"r"(x),"r"(a));
- return(res);
-}
-
-#undef MULT16_32_Q11
-static inline spx_word32_t MULT16_32_Q11(spx_word16_t x, spx_word32_t y) {
- int res;
- asm ("smulwb %0,%1,%2;\n"
- : "=&r"(res)
- : "%r"(y<<5),"r"(x));
- return(res);
-}
-
-#undef MAC16_32_Q11
-static inline spx_word32_t MAC16_32_Q11(spx_word32_t a, spx_word16_t x, spx_word32_t y) {
- int res;
- asm ("smlawb %0,%1,%2,%3;\n"
- : "=&r"(res)
- : "%r"(y<<5),"r"(x),"r"(a));
- return(res);
-}
-
-#undef DIV32_16
-static inline short DIV32_16(int a, int b)
-{
- int res=0;
- int dead1, dead2, dead3, dead4, dead5;
- __asm__ __volatile__ (
- "\teor %5, %0, %1\n"
- "\tmovs %4, %0\n"
- "\trsbmi %0, %0, #0 \n"
- "\tmovs %4, %1\n"
- "\trsbmi %1, %1, #0 \n"
- "\tmov %4, #1\n"
-
- "\tsubs %3, %0, %1, asl #14 \n"
- "\torrpl %2, %2, %4, asl #14 \n"
- "\tmovpl %0, %3 \n"
-
- "\tsubs %3, %0, %1, asl #13 \n"
- "\torrpl %2, %2, %4, asl #13 \n"
- "\tmovpl %0, %3 \n"
-
- "\tsubs %3, %0, %1, asl #12 \n"
- "\torrpl %2, %2, %4, asl #12 \n"
- "\tmovpl %0, %3 \n"
-
- "\tsubs %3, %0, %1, asl #11 \n"
- "\torrpl %2, %2, %4, asl #11 \n"
- "\tmovpl %0, %3 \n"
-
- "\tsubs %3, %0, %1, asl #10 \n"
- "\torrpl %2, %2, %4, asl #10 \n"
- "\tmovpl %0, %3 \n"
-
- "\tsubs %3, %0, %1, asl #9 \n"
- "\torrpl %2, %2, %4, asl #9 \n"
- "\tmovpl %0, %3 \n"
-
- "\tsubs %3, %0, %1, asl #8 \n"
- "\torrpl %2, %2, %4, asl #8 \n"
- "\tmovpl %0, %3 \n"
-
- "\tsubs %3, %0, %1, asl #7 \n"
- "\torrpl %2, %2, %4, asl #7 \n"
- "\tmovpl %0, %3 \n"
-
- "\tsubs %3, %0, %1, asl #6 \n"
- "\torrpl %2, %2, %4, asl #6 \n"
- "\tmovpl %0, %3 \n"
-
- "\tsubs %3, %0, %1, asl #5 \n"
- "\torrpl %2, %2, %4, asl #5 \n"
- "\tmovpl %0, %3 \n"
-
- "\tsubs %3, %0, %1, asl #4 \n"
- "\torrpl %2, %2, %4, asl #4 \n"
- "\tmovpl %0, %3 \n"
-
- "\tsubs %3, %0, %1, asl #3 \n"
- "\torrpl %2, %2, %4, asl #3 \n"
- "\tmovpl %0, %3 \n"
-
- "\tsubs %3, %0, %1, asl #2 \n"
- "\torrpl %2, %2, %4, asl #2 \n"
- "\tmovpl %0, %3 \n"
-
- "\tsubs %3, %0, %1, asl #1 \n"
- "\torrpl %2, %2, %4, asl #1 \n"
- "\tmovpl %0, %3 \n"
-
- "\tsubs %3, %0, %1 \n"
- "\torrpl %2, %2, %4 \n"
- "\tmovpl %0, %3 \n"
-
- "\tmovs %5, %5, lsr #31 \n"
- "\trsbne %2, %2, #0 \n"
- : "=r" (dead1), "=r" (dead2), "=r" (res),
- "=r" (dead3), "=r" (dead4), "=r" (dead5)
- : "0" (a), "1" (b), "2" (res)
- : "memory", "cc"
- );
- return res;
-}
-
-
-
-
-#endif
diff --git a/3rdparty/speex/libspeex/fixed_bfin.h b/3rdparty/speex/libspeex/fixed_bfin.h
deleted file mode 100644
index aa26f6a8..00000000
--- a/3rdparty/speex/libspeex/fixed_bfin.h
+++ /dev/null
@@ -1,173 +0,0 @@
-/* Copyright (C) 2005 Analog Devices
- Author: Jean-Marc Valin */
-/**
- @file fixed_bfin.h
- @brief Blackfin fixed-point operations
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef FIXED_BFIN_H
-#define FIXED_BFIN_H
-
-#undef PDIV32_16
-static inline spx_word16_t PDIV32_16(spx_word32_t a, spx_word16_t b)
-{
- spx_word32_t res, bb;
- bb = b;
- a += b>>1;
- __asm__ (
- "P0 = 15;\n\t"
- "R0 = %1;\n\t"
- "R1 = %2;\n\t"
- //"R0 = R0 + R1;\n\t"
- "R0 <<= 1;\n\t"
- "DIVS (R0, R1);\n\t"
- "LOOP divide%= LC0 = P0;\n\t"
- "LOOP_BEGIN divide%=;\n\t"
- "DIVQ (R0, R1);\n\t"
- "LOOP_END divide%=;\n\t"
- "R0 = R0.L;\n\t"
- "%0 = R0;\n\t"
- : "=m" (res)
- : "m" (a), "m" (bb)
- : "P0", "R0", "R1", "cc");
- return res;
-}
-
-#undef DIV32_16
-static inline spx_word16_t DIV32_16(spx_word32_t a, spx_word16_t b)
-{
- spx_word32_t res, bb;
- bb = b;
- /* Make the roundinf consistent with the C version
- (do we need to do that?)*/
- if (a<0)
- a += (b-1);
- __asm__ (
- "P0 = 15;\n\t"
- "R0 = %1;\n\t"
- "R1 = %2;\n\t"
- "R0 <<= 1;\n\t"
- "DIVS (R0, R1);\n\t"
- "LOOP divide%= LC0 = P0;\n\t"
- "LOOP_BEGIN divide%=;\n\t"
- "DIVQ (R0, R1);\n\t"
- "LOOP_END divide%=;\n\t"
- "R0 = R0.L;\n\t"
- "%0 = R0;\n\t"
- : "=m" (res)
- : "m" (a), "m" (bb)
- : "P0", "R0", "R1", "cc");
- return res;
-}
-
-#undef MAX16
-static inline spx_word16_t MAX16(spx_word16_t a, spx_word16_t b)
-{
- spx_word32_t res;
- __asm__ (
- "%1 = %1.L (X);\n\t"
- "%2 = %2.L (X);\n\t"
- "%0 = MAX(%1,%2);"
- : "=d" (res)
- : "%d" (a), "d" (b)
- );
- return res;
-}
-
-#undef MULT16_32_Q15
-static inline spx_word32_t MULT16_32_Q15(spx_word16_t a, spx_word32_t b)
-{
- spx_word32_t res;
- __asm__
- (
- "A1 = %2.L*%1.L (M);\n\t"
- "A1 = A1 >>> 15;\n\t"
- "%0 = (A1 += %2.L*%1.H) ;\n\t"
- : "=&W" (res), "=&d" (b)
- : "d" (a), "1" (b)
- : "A1"
- );
- return res;
-}
-
-#undef MAC16_32_Q15
-static inline spx_word32_t MAC16_32_Q15(spx_word32_t c, spx_word16_t a, spx_word32_t b)
-{
- spx_word32_t res;
- __asm__
- (
- "A1 = %2.L*%1.L (M);\n\t"
- "A1 = A1 >>> 15;\n\t"
- "%0 = (A1 += %2.L*%1.H);\n\t"
- "%0 = %0 + %4;\n\t"
- : "=&W" (res), "=&d" (b)
- : "d" (a), "1" (b), "d" (c)
- : "A1"
- );
- return res;
-}
-
-#undef MULT16_32_Q14
-static inline spx_word32_t MULT16_32_Q14(spx_word16_t a, spx_word32_t b)
-{
- spx_word32_t res;
- __asm__
- (
- "%2 <<= 1;\n\t"
- "A1 = %1.L*%2.L (M);\n\t"
- "A1 = A1 >>> 15;\n\t"
- "%0 = (A1 += %1.L*%2.H);\n\t"
- : "=W" (res), "=d" (a), "=d" (b)
- : "1" (a), "2" (b)
- : "A1"
- );
- return res;
-}
-
-#undef MAC16_32_Q14
-static inline spx_word32_t MAC16_32_Q14(spx_word32_t c, spx_word16_t a, spx_word32_t b)
-{
- spx_word32_t res;
- __asm__
- (
- "%1 <<= 1;\n\t"
- "A1 = %2.L*%1.L (M);\n\t"
- "A1 = A1 >>> 15;\n\t"
- "%0 = (A1 += %2.L*%1.H);\n\t"
- "%0 = %0 + %4;\n\t"
- : "=&W" (res), "=&d" (b)
- : "d" (a), "1" (b), "d" (c)
- : "A1"
- );
- return res;
-}
-
-#endif
diff --git a/3rdparty/speex/libspeex/fixed_debug.h b/3rdparty/speex/libspeex/fixed_debug.h
deleted file mode 100644
index d5c449f4..00000000
--- a/3rdparty/speex/libspeex/fixed_debug.h
+++ /dev/null
@@ -1,487 +0,0 @@
-/* Copyright (C) 2003 Jean-Marc Valin */
-/**
- @file fixed_debug.h
- @brief Fixed-point operations with debugging
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef FIXED_DEBUG_H
-#define FIXED_DEBUG_H
-
-#include <stdio.h>
-
-extern long long spx_mips;
-#define MIPS_INC spx_mips++,
-
-#define QCONST16(x,bits) ((spx_word16_t)(.5+(x)*(((spx_word32_t)1)<<(bits))))
-#define QCONST32(x,bits) ((spx_word32_t)(.5+(x)*(((spx_word32_t)1)<<(bits))))
-
-
-#define VERIFY_SHORT(x) ((x)<=32767&&(x)>=-32768)
-#define VERIFY_INT(x) ((x)<=2147483647LL&&(x)>=-2147483648LL)
-
-static inline short NEG16(int x)
-{
- int res;
- if (!VERIFY_SHORT(x))
- {
- fprintf (stderr, "NEG16: input is not short: %d\n", (int)x);
- }
- res = -x;
- if (!VERIFY_SHORT(res))
- fprintf (stderr, "NEG16: output is not short: %d\n", (int)res);
- spx_mips++;
- return res;
-}
-static inline int NEG32(long long x)
-{
- long long res;
- if (!VERIFY_INT(x))
- {
- fprintf (stderr, "NEG16: input is not int: %d\n", (int)x);
- }
- res = -x;
- if (!VERIFY_INT(res))
- fprintf (stderr, "NEG16: output is not int: %d\n", (int)res);
- spx_mips++;
- return res;
-}
-
-#define EXTRACT16(x) _EXTRACT16(x, __FILE__, __LINE__)
-static inline short _EXTRACT16(int x, char *file, int line)
-{
- int res;
- if (!VERIFY_SHORT(x))
- {
- fprintf (stderr, "EXTRACT16: input is not short: %d in %s: line %d\n", x, file, line);
- }
- res = x;
- spx_mips++;
- return res;
-}
-
-#define EXTEND32(x) _EXTEND32(x, __FILE__, __LINE__)
-static inline int _EXTEND32(int x, char *file, int line)
-{
- int res;
- if (!VERIFY_SHORT(x))
- {
- fprintf (stderr, "EXTEND32: input is not short: %d in %s: line %d\n", x, file, line);
- }
- res = x;
- spx_mips++;
- return res;
-}
-
-#define SHR16(a, shift) _SHR16(a, shift, __FILE__, __LINE__)
-static inline short _SHR16(int a, int shift, char *file, int line)
-{
- int res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(shift))
- {
- fprintf (stderr, "SHR16: inputs are not short: %d >> %d in %s: line %d\n", a, shift, file, line);
- }
- res = a>>shift;
- if (!VERIFY_SHORT(res))
- fprintf (stderr, "SHR16: output is not short: %d in %s: line %d\n", res, file, line);
- spx_mips++;
- return res;
-}
-#define SHL16(a, shift) _SHL16(a, shift, __FILE__, __LINE__)
-static inline short _SHL16(int a, int shift, char *file, int line)
-{
- int res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(shift))
- {
- fprintf (stderr, "SHL16: inputs are not short: %d %d in %s: line %d\n", a, shift, file, line);
- }
- res = a<<shift;
- if (!VERIFY_SHORT(res))
- fprintf (stderr, "SHL16: output is not short: %d in %s: line %d\n", res, file, line);
- spx_mips++;
- return res;
-}
-
-static inline int SHR32(long long a, int shift)
-{
- long long res;
- if (!VERIFY_INT(a) || !VERIFY_SHORT(shift))
- {
- fprintf (stderr, "SHR32: inputs are not int: %d %d\n", (int)a, shift);
- }
- res = a>>shift;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "SHR32: output is not int: %d\n", (int)res);
- }
- spx_mips++;
- return res;
-}
-static inline int SHL32(long long a, int shift)
-{
- long long res;
- if (!VERIFY_INT(a) || !VERIFY_SHORT(shift))
- {
- fprintf (stderr, "SHL32: inputs are not int: %d %d\n", (int)a, shift);
- }
- res = a<<shift;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "SHL32: output is not int: %d\n", (int)res);
- }
- spx_mips++;
- return res;
-}
-
-#define PSHR16(a,shift) (SHR16(ADD16((a),((1<<((shift))>>1))),shift))
-#define PSHR32(a,shift) (SHR32(ADD32((a),((1<<((shift))>>1))),shift))
-#define VSHR32(a, shift) (((shift)>0) ? SHR32(a, shift) : SHL32(a, -(shift)))
-
-#define SATURATE16(x,a) (((x)>(a) ? (a) : (x)<-(a) ? -(a) : (x)))
-#define SATURATE32(x,a) (((x)>(a) ? (a) : (x)<-(a) ? -(a) : (x)))
-
-//#define SHR(a,shift) ((a) >> (shift))
-//#define SHL(a,shift) ((a) << (shift))
-
-#define ADD16(a, b) _ADD16(a, b, __FILE__, __LINE__)
-static inline short _ADD16(int a, int b, char *file, int line)
-{
- int res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "ADD16: inputs are not short: %d %d in %s: line %d\n", a, b, file, line);
- }
- res = a+b;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "ADD16: output is not short: %d+%d=%d in %s: line %d\n", a,b,res, file, line);
- }
- spx_mips++;
- return res;
-}
-
-#define SUB16(a, b) _SUB16(a, b, __FILE__, __LINE__)
-static inline short _SUB16(int a, int b, char *file, int line)
-{
- int res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "SUB16: inputs are not short: %d %d in %s: line %d\n", a, b, file, line);
- }
- res = a-b;
- if (!VERIFY_SHORT(res))
- fprintf (stderr, "SUB16: output is not short: %d in %s: line %d\n", res, file, line);
- spx_mips++;
- return res;
-}
-
-#define ADD32(a, b) _ADD32(a, b, __FILE__, __LINE__)
-static inline int _ADD32(long long a, long long b, char *file, int line)
-{
- long long res;
- if (!VERIFY_INT(a) || !VERIFY_INT(b))
- {
- fprintf (stderr, "ADD32: inputs are not int: %d %d in %s: line %d\n", (int)a, (int)b, file, line);
- }
- res = a+b;
- if (!VERIFY_INT(res))
- {
- fprintf (stderr, "ADD32: output is not int: %d in %s: line %d\n", (int)res, file, line);
- }
- spx_mips++;
- return res;
-}
-
-static inline int SUB32(long long a, long long b)
-{
- long long res;
- if (!VERIFY_INT(a) || !VERIFY_INT(b))
- {
- fprintf (stderr, "SUB32: inputs are not int: %d %d\n", (int)a, (int)b);
- }
- res = a-b;
- if (!VERIFY_INT(res))
- fprintf (stderr, "SUB32: output is not int: %d\n", (int)res);
- spx_mips++;
- return res;
-}
-
-#define ADD64(a,b) (MIPS_INC(a)+(b))
-
-/* result fits in 16 bits */
-static inline short MULT16_16_16(int a, int b)
-{
- int res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_16: inputs are not short: %d %d\n", a, b);
- }
- res = a*b;
- if (!VERIFY_SHORT(res))
- fprintf (stderr, "MULT16_16_16: output is not short: %d\n", res);
- spx_mips++;
- return res;
-}
-
-#define MULT16_16(a, b) _MULT16_16(a, b, __FILE__, __LINE__)
-static inline int _MULT16_16(int a, int b, char *file, int line)
-{
- long long res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16: inputs are not short: %d %d in %s: line %d\n", a, b, file, line);
- }
- res = ((long long)a)*b;
- if (!VERIFY_INT(res))
- fprintf (stderr, "MULT16_16: output is not int: %d in %s: line %d\n", (int)res, file, line);
- spx_mips++;
- return res;
-}
-
-#define MAC16_16(c,a,b) (spx_mips--,ADD32((c),MULT16_16((a),(b))))
-#define MAC16_16_Q11(c,a,b) (EXTRACT16(ADD16((c),EXTRACT16(SHR32(MULT16_16((a),(b)),11)))))
-#define MAC16_16_Q13(c,a,b) (EXTRACT16(ADD16((c),EXTRACT16(SHR32(MULT16_16((a),(b)),13)))))
-#define MAC16_16_P13(c,a,b) (EXTRACT16(ADD32((c),SHR32(ADD32(4096,MULT16_16((a),(b))),13))))
-
-
-#define MULT16_32_QX(a, b, Q) _MULT16_32_QX(a, b, Q, __FILE__, __LINE__)
-static inline int _MULT16_32_QX(int a, long long b, int Q, char *file, int line)
-{
- long long res;
- if (!VERIFY_SHORT(a) || !VERIFY_INT(b))
- {
- fprintf (stderr, "MULT16_32_Q%d: inputs are not short+int: %d %d in %s: line %d\n", Q, (int)a, (int)b, file, line);
- }
- if (ABS32(b)>=(1<<(15+Q)))
- fprintf (stderr, "MULT16_32_Q%d: second operand too large: %d %d in %s: line %d\n", Q, (int)a, (int)b, file, line);
- res = (((long long)a)*(long long)b) >> Q;
- if (!VERIFY_INT(res))
- fprintf (stderr, "MULT16_32_Q%d: output is not int: %d*%d=%d in %s: line %d\n", Q, (int)a, (int)b,(int)res, file, line);
- spx_mips+=5;
- return res;
-}
-
-static inline int MULT16_32_PX(int a, long long b, int Q)
-{
- long long res;
- if (!VERIFY_SHORT(a) || !VERIFY_INT(b))
- {
- fprintf (stderr, "MULT16_32_P%d: inputs are not short+int: %d %d\n", Q, (int)a, (int)b);
- }
- if (ABS32(b)>=(1<<(15+Q)))
- fprintf (stderr, "MULT16_32_Q%d: second operand too large: %d %d\n", Q, (int)a, (int)b);
- res = ((((long long)a)*(long long)b) + ((1<<Q)>>1))>> Q;
- if (!VERIFY_INT(res))
- fprintf (stderr, "MULT16_32_P%d: output is not int: %d*%d=%d\n", Q, (int)a, (int)b,(int)res);
- spx_mips+=5;
- return res;
-}
-
-
-#define MULT16_32_Q11(a,b) MULT16_32_QX(a,b,11)
-#define MAC16_32_Q11(c,a,b) ADD32((c),MULT16_32_Q11((a),(b)))
-#define MULT16_32_Q12(a,b) MULT16_32_QX(a,b,12)
-#define MULT16_32_Q13(a,b) MULT16_32_QX(a,b,13)
-#define MULT16_32_Q14(a,b) MULT16_32_QX(a,b,14)
-#define MULT16_32_Q15(a,b) MULT16_32_QX(a,b,15)
-#define MULT16_32_P15(a,b) MULT16_32_PX(a,b,15)
-#define MAC16_32_Q15(c,a,b) ADD32((c),MULT16_32_Q15((a),(b)))
-
-static inline int SATURATE(int a, int b)
-{
- if (a>b)
- a=b;
- if (a<-b)
- a = -b;
- return a;
-}
-
-static inline int MULT16_16_Q11_32(int a, int b)
-{
- long long res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_Q11: inputs are not short: %d %d\n", a, b);
- }
- res = ((long long)a)*b;
- res >>= 11;
- if (!VERIFY_INT(res))
- fprintf (stderr, "MULT16_16_Q11: output is not short: %d*%d=%d\n", (int)a, (int)b, (int)res);
- spx_mips+=3;
- return res;
-}
-static inline short MULT16_16_Q13(int a, int b)
-{
- long long res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_Q13: inputs are not short: %d %d\n", a, b);
- }
- res = ((long long)a)*b;
- res >>= 13;
- if (!VERIFY_SHORT(res))
- fprintf (stderr, "MULT16_16_Q13: output is not short: %d*%d=%d\n", a, b, (int)res);
- spx_mips+=3;
- return res;
-}
-static inline short MULT16_16_Q14(int a, int b)
-{
- long long res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_Q14: inputs are not short: %d %d\n", a, b);
- }
- res = ((long long)a)*b;
- res >>= 14;
- if (!VERIFY_SHORT(res))
- fprintf (stderr, "MULT16_16_Q14: output is not short: %d\n", (int)res);
- spx_mips+=3;
- return res;
-}
-static inline short MULT16_16_Q15(int a, int b)
-{
- long long res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_Q15: inputs are not short: %d %d\n", a, b);
- }
- res = ((long long)a)*b;
- res >>= 15;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "MULT16_16_Q15: output is not short: %d\n", (int)res);
- }
- spx_mips+=3;
- return res;
-}
-
-static inline short MULT16_16_P13(int a, int b)
-{
- long long res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_P13: inputs are not short: %d %d\n", a, b);
- }
- res = ((long long)a)*b;
- res += 4096;
- if (!VERIFY_INT(res))
- fprintf (stderr, "MULT16_16_P13: overflow: %d*%d=%d\n", a, b, (int)res);
- res >>= 13;
- if (!VERIFY_SHORT(res))
- fprintf (stderr, "MULT16_16_P13: output is not short: %d*%d=%d\n", a, b, (int)res);
- spx_mips+=4;
- return res;
-}
-static inline short MULT16_16_P14(int a, int b)
-{
- long long res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_P14: inputs are not short: %d %d\n", a, b);
- }
- res = ((long long)a)*b;
- res += 8192;
- if (!VERIFY_INT(res))
- fprintf (stderr, "MULT16_16_P14: overflow: %d*%d=%d\n", a, b, (int)res);
- res >>= 14;
- if (!VERIFY_SHORT(res))
- fprintf (stderr, "MULT16_16_P14: output is not short: %d*%d=%d\n", a, b, (int)res);
- spx_mips+=4;
- return res;
-}
-static inline short MULT16_16_P15(int a, int b)
-{
- long long res;
- if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "MULT16_16_P15: inputs are not short: %d %d\n", a, b);
- }
- res = ((long long)a)*b;
- res += 16384;
- if (!VERIFY_INT(res))
- fprintf (stderr, "MULT16_16_P15: overflow: %d*%d=%d\n", a, b, (int)res);
- res >>= 15;
- if (!VERIFY_SHORT(res))
- fprintf (stderr, "MULT16_16_P15: output is not short: %d*%d=%d\n", a, b, (int)res);
- spx_mips+=4;
- return res;
-}
-
-#define DIV32_16(a, b) _DIV32_16(a, b, __FILE__, __LINE__)
-
-static inline int _DIV32_16(long long a, long long b, char *file, int line)
-{
- long long res;
- if (b==0)
- {
- fprintf(stderr, "DIV32_16: divide by zero: %d/%d in %s: line %d\n", (int)a, (int)b, file, line);
- return 0;
- }
- if (!VERIFY_INT(a) || !VERIFY_SHORT(b))
- {
- fprintf (stderr, "DIV32_16: inputs are not int/short: %d %d in %s: line %d\n", (int)a, (int)b, file, line);
- }
- res = a/b;
- if (!VERIFY_SHORT(res))
- {
- fprintf (stderr, "DIV32_16: output is not short: %d / %d = %d in %s: line %d\n", (int)a,(int)b,(int)res, file, line);
- if (res>32767)
- res = 32767;
- if (res<-32768)
- res = -32768;
- }
- spx_mips+=20;
- return res;
-}
-
-#define DIV32(a, b) _DIV32(a, b, __FILE__, __LINE__)
-static inline int _DIV32(long long a, long long b, char *file, int line)
-{
- long long res;
- if (b==0)
- {
- fprintf(stderr, "DIV32: divide by zero: %d/%d in %s: line %d\n", (int)a, (int)b, file, line);
- return 0;
- }
-
- if (!VERIFY_INT(a) || !VERIFY_INT(b))
- {
- fprintf (stderr, "DIV32: inputs are not int/short: %d %d in %s: line %d\n", (int)a, (int)b, file, line);
- }
- res = a/b;
- if (!VERIFY_INT(res))
- fprintf (stderr, "DIV32: output is not int: %d in %s: line %d\n", (int)res, file, line);
- spx_mips+=36;
- return res;
-}
-#define PDIV32(a,b) DIV32(ADD32((a),(b)>>1),b)
-#define PDIV32_16(a,b) DIV32_16(ADD32((a),(b)>>1),b)
-
-#endif
diff --git a/3rdparty/speex/libspeex/fixed_generic.h b/3rdparty/speex/libspeex/fixed_generic.h
deleted file mode 100644
index 2948177c..00000000
--- a/3rdparty/speex/libspeex/fixed_generic.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Copyright (C) 2003 Jean-Marc Valin */
-/**
- @file fixed_generic.h
- @brief Generic fixed-point operations
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef FIXED_GENERIC_H
-#define FIXED_GENERIC_H
-
-#define QCONST16(x,bits) ((spx_word16_t)(.5+(x)*(((spx_word32_t)1)<<(bits))))
-#define QCONST32(x,bits) ((spx_word32_t)(.5+(x)*(((spx_word32_t)1)<<(bits))))
-
-#define NEG16(x) (-(x))
-#define NEG32(x) (-(x))
-#define EXTRACT16(x) ((spx_word16_t)(x))
-#define EXTEND32(x) ((spx_word32_t)(x))
-#define SHR16(a,shift) ((a) >> (shift))
-#define SHL16(a,shift) ((a) << (shift))
-#define SHR32(a,shift) ((a) >> (shift))
-#define SHL32(a,shift) ((a) << (shift))
-#define PSHR16(a,shift) (SHR16((a)+((1<<((shift))>>1)),shift))
-#define PSHR32(a,shift) (SHR32((a)+((1<<((shift))>>1)),shift))
-#define VSHR32(a, shift) (((shift)>0) ? SHR32(a, shift) : SHL32(a, -(shift)))
-#define SATURATE16(x,a) (((x)>(a) ? (a) : (x)<-(a) ? -(a) : (x)))
-#define SATURATE32(x,a) (((x)>(a) ? (a) : (x)<-(a) ? -(a) : (x)))
-
-#define SHR(a,shift) ((a) >> (shift))
-#define SHL(a,shift) ((spx_word32_t)(a) << (shift))
-#define PSHR(a,shift) (SHR((a)+((1<<((shift))>>1)),shift))
-#define SATURATE(x,a) (((x)>(a) ? (a) : (x)<-(a) ? -(a) : (x)))
-
-
-#define ADD16(a,b) ((spx_word16_t)((spx_word16_t)(a)+(spx_word16_t)(b)))
-#define SUB16(a,b) ((spx_word16_t)(a)-(spx_word16_t)(b))
-#define ADD32(a,b) ((spx_word32_t)(a)+(spx_word32_t)(b))
-#define SUB32(a,b) ((spx_word32_t)(a)-(spx_word32_t)(b))
-
-
-/* result fits in 16 bits */
-#define MULT16_16_16(a,b) ((((spx_word16_t)(a))*((spx_word16_t)(b))))
-
-/* (spx_word32_t)(spx_word16_t) gives TI compiler a hint that it's 16x16->32 multiply */
-#define MULT16_16(a,b) (((spx_word32_t)(spx_word16_t)(a))*((spx_word32_t)(spx_word16_t)(b)))
-
-#define MAC16_16(c,a,b) (ADD32((c),MULT16_16((a),(b))))
-#define MULT16_32_Q12(a,b) ADD32(MULT16_16((a),SHR((b),12)), SHR(MULT16_16((a),((b)&0x00000fff)),12))
-#define MULT16_32_Q13(a,b) ADD32(MULT16_16((a),SHR((b),13)), SHR(MULT16_16((a),((b)&0x00001fff)),13))
-#define MULT16_32_Q14(a,b) ADD32(MULT16_16((a),SHR((b),14)), SHR(MULT16_16((a),((b)&0x00003fff)),14))
-
-#define MULT16_32_Q11(a,b) ADD32(MULT16_16((a),SHR((b),11)), SHR(MULT16_16((a),((b)&0x000007ff)),11))
-#define MAC16_32_Q11(c,a,b) ADD32(c,ADD32(MULT16_16((a),SHR((b),11)), SHR(MULT16_16((a),((b)&0x000007ff)),11)))
-
-#define MULT16_32_P15(a,b) ADD32(MULT16_16((a),SHR((b),15)), PSHR(MULT16_16((a),((b)&0x00007fff)),15))
-#define MULT16_32_Q15(a,b) ADD32(MULT16_16((a),SHR((b),15)), SHR(MULT16_16((a),((b)&0x00007fff)),15))
-#define MAC16_32_Q15(c,a,b) ADD32(c,ADD32(MULT16_16((a),SHR((b),15)), SHR(MULT16_16((a),((b)&0x00007fff)),15)))
-
-
-#define MAC16_16_Q11(c,a,b) (ADD32((c),SHR(MULT16_16((a),(b)),11)))
-#define MAC16_16_Q13(c,a,b) (ADD32((c),SHR(MULT16_16((a),(b)),13)))
-#define MAC16_16_P13(c,a,b) (ADD32((c),SHR(ADD32(4096,MULT16_16((a),(b))),13)))
-
-#define MULT16_16_Q11_32(a,b) (SHR(MULT16_16((a),(b)),11))
-#define MULT16_16_Q13(a,b) (SHR(MULT16_16((a),(b)),13))
-#define MULT16_16_Q14(a,b) (SHR(MULT16_16((a),(b)),14))
-#define MULT16_16_Q15(a,b) (SHR(MULT16_16((a),(b)),15))
-
-#define MULT16_16_P13(a,b) (SHR(ADD32(4096,MULT16_16((a),(b))),13))
-#define MULT16_16_P14(a,b) (SHR(ADD32(8192,MULT16_16((a),(b))),14))
-#define MULT16_16_P15(a,b) (SHR(ADD32(16384,MULT16_16((a),(b))),15))
-
-#define MUL_16_32_R15(a,bh,bl) ADD32(MULT16_16((a),(bh)), SHR(MULT16_16((a),(bl)),15))
-
-#define DIV32_16(a,b) ((spx_word16_t)(((spx_word32_t)(a))/((spx_word16_t)(b))))
-#define PDIV32_16(a,b) ((spx_word16_t)(((spx_word32_t)(a)+((spx_word16_t)(b)>>1))/((spx_word16_t)(b))))
-#define DIV32(a,b) (((spx_word32_t)(a))/((spx_word32_t)(b)))
-#define PDIV32(a,b) (((spx_word32_t)(a)+((spx_word16_t)(b)>>1))/((spx_word32_t)(b)))
-
-#endif
diff --git a/3rdparty/speex/libspeex/gain_table.c b/3rdparty/speex/libspeex/gain_table.c
deleted file mode 100644
index 00b82442..00000000
--- a/3rdparty/speex/libspeex/gain_table.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: gain_table.c
- Codebook for 3-tap pitch prediction gain (128 entries)
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-const signed char gain_cdbk_nb[512] = {
--32, -32, -32, 0,
--28, -67, -5, 33,
--42, -6, -32, 18,
--57, -10, -54, 35,
--16, 27, -41, 42,
-19, -19, -40, 36,
--45, 24, -21, 40,
--8, -14, -18, 28,
-1, 14, -58, 53,
--18, -88, -39, 39,
--38, 21, -18, 37,
--19, 20, -43, 38,
-10, 17, -48, 54,
--52, -58, -13, 33,
--44, -1, -11, 32,
--12, -11, -34, 22,
-14, 0, -46, 46,
--37, -35, -34, 5,
--25, 44, -30, 43,
-6, -4, -63, 49,
--31, 43, -41, 43,
--23, 30, -43, 41,
--43, 26, -14, 44,
--33, 1, -13, 27,
--13, 18, -37, 37,
--46, -73, -45, 34,
--36, 24, -25, 34,
--36, -11, -20, 19,
--25, 12, -18, 33,
--36, -69, -59, 34,
--45, 6, 8, 46,
--22, -14, -24, 18,
--1, 13, -44, 44,
--39, -48, -26, 15,
--32, 31, -37, 34,
--33, 15, -46, 31,
--24, 30, -36, 37,
--41, 31, -23, 41,
--50, 22, -4, 50,
--22, 2, -21, 28,
--17, 30, -34, 40,
--7, -60, -28, 29,
--38, 42, -28, 42,
--44, -11, 21, 43,
--16, 8, -44, 34,
--39, -55, -43, 21,
--11, -35, 26, 41,
--9, 0, -34, 29,
--8, 121, -81, 113,
-7, -16, -22, 33,
--37, 33, -31, 36,
--27, -7, -36, 17,
--34, 70, -57, 65,
--37, -11, -48, 21,
--40, 17, -1, 44,
--33, 6, -6, 33,
--9, 0, -20, 34,
--21, 69, -33, 57,
--29, 33, -31, 35,
--55, 12, -1, 49,
--33, 27, -22, 35,
--50, -33, -47, 17,
--50, 54, 51, 94,
--1, -5, -44, 35,
--4, 22, -40, 45,
--39, -66, -25, 24,
--33, 1, -26, 20,
--24, -23, -25, 12,
--11, 21, -45, 44,
--25, -45, -19, 17,
--43, 105, -16, 82,
-5, -21, 1, 41,
--16, 11, -33, 30,
--13, -99, -4, 57,
--37, 33, -15, 44,
--25, 37, -63, 54,
--36, 24, -31, 31,
--53, -56, -38, 26,
--41, -4, 4, 37,
--33, 13, -30, 24,
-49, 52, -94, 114,
--5, -30, -15, 23,
-1, 38, -40, 56,
--23, 12, -36, 29,
--17, 40, -47, 51,
--37, -41, -39, 11,
--49, 34, 0, 58,
--18, -7, -4, 34,
--16, 17, -27, 35,
-30, 5, -62, 65,
-4, 48, -68, 76,
--43, 11, -11, 38,
--18, 19, -15, 41,
--23, -62, -39, 23,
--42, 10, -2, 41,
--21, -13, -13, 25,
--9, 13, -47, 42,
--23, -62, -24, 24,
--44, 60, -21, 58,
--18, -3, -52, 32,
--22, 22, -36, 34,
--75, 57, 16, 90,
--19, 3, 10, 45,
--29, 23, -38, 32,
--5, -62, -51, 38,
--51, 40, -18, 53,
--42, 13, -24, 32,
--34, 14, -20, 30,
--56, -75, -26, 37,
--26, 32, 15, 59,
--26, 17, -29, 29,
--7, 28, -52, 53,
--12, -30, 5, 30,
--5, -48, -5, 35,
-2, 2, -43, 40,
-21, 16, 16, 75,
--25, -45, -32, 10,
--43, 18, -10, 42,
-9, 0, -1, 52,
--1, 7, -30, 36,
-19, -48, -4, 48,
--28, 25, -29, 32,
--22, 0, -31, 22,
--32, 17, -10, 36,
--64, -41, -62, 36,
--52, 15, 16, 58,
--30, -22, -32, 6,
--7, 9, -38, 36};
diff --git a/3rdparty/speex/libspeex/gain_table_lbr.c b/3rdparty/speex/libspeex/gain_table_lbr.c
deleted file mode 100644
index 3c1c3dba..00000000
--- a/3rdparty/speex/libspeex/gain_table_lbr.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: gain_table_lbr.c
- Codebook for 3-tap pitch prediction gain (32 entries)
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-const signed char gain_cdbk_lbr[128] = {
--32, -32, -32, 0,
--31, -58, -16, 22,
--41, -24, -43, 14,
--56, -22, -55, 29,
--13, 33, -41, 47,
--4, -39, -9, 29,
--41, 15, -12, 38,
--8, -15, -12, 31,
-1, 2, -44, 40,
--22, -66, -42, 27,
--38, 28, -23, 38,
--21, 14, -37, 31,
-0, 21, -50, 52,
--53, -71, -27, 33,
--37, -1, -19, 25,
--19, -5, -28, 22,
-6, 65, -44, 74,
--33, -48, -33, 9,
--40, 57, -14, 58,
--17, 4, -45, 32,
--31, 38, -33, 36,
--23, 28, -40, 39,
--43, 29, -12, 46,
--34, 13, -23, 28,
--16, 15, -27, 34,
--14, -82, -15, 43,
--31, 25, -32, 29,
--21, 5, -5, 38,
--47, -63, -51, 33,
--46, 12, 3, 47,
--28, -17, -29, 11,
--10, 14, -40, 38};
diff --git a/3rdparty/speex/libspeex/hexc_10_32_table.c b/3rdparty/speex/libspeex/hexc_10_32_table.c
deleted file mode 100644
index 8dd408f2..00000000
--- a/3rdparty/speex/libspeex/hexc_10_32_table.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: hexc_10_32_table.c
- Codebook for high-band excitation in SB-CELP mode (4000 bps)
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-const signed char hexc_10_32_table[320] = {
--3, -2, -1, 0, -4, 5, 35, -40, -9, 13,
--44, 5, -27, -1, -7, 6, -11, 7, -8, 7,
-19, -14, 15, -4, 9, -10, 10, -8, 10, -9,
--1, 1, 0, 0, 2, 5, -18, 22, -53, 50,
-1, -23, 50, -36, 15, 3, -13, 14, -10, 6,
-1, 5, -3, 4, -2, 5, -32, 25, 5, -2,
--1, -4, 1, 11, -29, 26, -6, -15, 30, -18,
-0, 15, -17, 40, -41, 3, 9, -2, -2, 3,
--3, -1, -5, 2, 21, -6, -16, -21, 23, 2,
-60, 15, 16, -16, -9, 14, 9, -1, 7, -9,
-0, 1, 1, 0, -1, -6, 17, -28, 54, -45,
--1, 1, -1, -6, -6, 2, 11, 26, -29, -2,
-46, -21, 34, 12, -23, 32, -23, 16, -10, 3,
-66, 19, -20, 24, 7, 11, -3, 0, -3, -1,
--50, -46, 2, -18, -3, 4, -1, -2, 3, -3,
--19, 41, -36, 9, 11, -24, 21, -16, 9, -3,
--25, -3, 10, 18, -9, -2, -5, -1, -5, 6,
--4, -3, 2, -26, 21, -19, 35, -15, 7, -13,
-17, -19, 39, -43, 48, -31, 16, -9, 7, -2,
--5, 3, -4, 9, -19, 27, -55, 63, -35, 10,
-26, -44, -2, 9, 4, 1, -6, 8, -9, 5,
--8, -1, -3, -16, 45, -42, 5, 15, -16, 10,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
--16, 24, -55, 47, -38, 27, -19, 7, -3, 1,
-16, 27, 20, -19, 18, 5, -7, 1, -5, 2,
--6, 8, -22, 0, -3, -3, 8, -1, 7, -8,
-1, -3, 5, 0, 17, -48, 58, -52, 29, -7,
--2, 3, -10, 6, -26, 58, -31, 1, -6, 3,
-93, -29, 39, 3, 17, 5, 6, -1, -1, -1,
-27, 13, 10, 19, -7, -34, 12, 10, -4, 9,
--76, 9, 8, -28, -2, -11, 2, -1, 3, 1,
--83, 38, -39, 4, -16, -6, -2, -5, 5, -2,
-};
diff --git a/3rdparty/speex/libspeex/hexc_table.c b/3rdparty/speex/libspeex/hexc_table.c
deleted file mode 100644
index 268408a8..00000000
--- a/3rdparty/speex/libspeex/hexc_table.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: hexc_table.c
- Codebook for high-band excitation in SB-CELP mode (8000 bps with sign)
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-const signed char hexc_table[1024] = {
--24, 21, -20, 5, -5, -7, 14, -10,
-2, -27, 16, -20, 0, -32, 26, 19,
-8, -11, -41, 31, 28, -27, -32, 34,
-42, 34, -17, 22, -10, 13, -29, 18,
--12, -26, -24, 11, 22, 5, -5, -5,
-54, -68, -43, 57, -25, 24, 4, 4,
-26, -8, -12, -17, 54, 30, -45, 1,
-10, -15, 18, -41, 11, 68, -67, 37,
--16, -24, -16, 38, -22, 6, -29, 30,
-66, -27, 5, 7, -16, 13, 2, -12,
--7, -3, -20, 36, 4, -28, 9, 3,
-32, 48, 26, 39, 3, 0, 7, -21,
--13, 5, -82, -7, 73, -20, 34, -9,
--5, 1, -1, 10, -5, -10, -1, 9,
-1, -9, 10, 0, -14, 11, -1, -2,
--1, 11, 20, 96, -81, -22, -12, -9,
--58, 9, 24, -30, 26, -35, 27, -12,
-13, -18, 56, -59, 15, -7, 23, -15,
--1, 6, -25, 14, -22, -20, 47, -11,
-16, 2, 38, -23, -19, -30, -9, 40,
--11, 5, 4, -6, 8, 26, -21, -11,
-127, 4, 1, 6, -9, 2, -7, -2,
--3, 7, -5, 10, -19, 7, -106, 91,
--3, 9, -4, 21, -8, 26, -80, 8,
-1, -2, -10, -17, -17, -27, 32, 71,
-6, -29, 11, -23, 54, -38, 29, -22,
-39, 87, -31, -12, -20, 3, -2, -2,
-2, 20, 0, -1, -35, 27, 9, -6,
--12, 3, -12, -6, 13, 1, 14, -22,
--59, -15, -17, -25, 13, -7, 7, 3,
-0, 1, -7, 6, -3, 61, -37, -23,
--23, -29, 38, -31, 27, 1, -8, 2,
--27, 23, -26, 36, -34, 5, 24, -24,
--6, 7, 3, -59, 78, -62, 44, -16,
-1, 6, 0, 17, 8, 45, 0, -110,
-6, 14, -2, 32, -77, -56, 62, -3,
-3, -13, 4, -16, 102, -15, -36, -1,
-9, -113, 6, 23, 0, 9, 9, 5,
--8, -1, -14, 5, -12, 121, -53, -27,
--8, -9, 22, -13, 3, 2, -3, 1,
--2, -71, 95, 38, -19, 15, -16, -5,
-71, 10, 2, -32, -13, -5, 15, -1,
--2, -14, -85, 30, 29, 6, 3, 2,
-0, 0, 0, 0, 0, 0, 0, 0,
-2, -65, -56, -9, 18, 18, 23, -14,
--2, 0, 12, -29, 26, -12, 1, 2,
--12, -64, 90, -6, 4, 1, 5, -5,
--110, -3, -31, 22, -29, 9, 0, 8,
--40, -5, 21, -5, -5, 13, 10, -18,
-40, 1, 35, -20, 30, -28, 11, -6,
-19, 7, 14, 18, -64, 9, -6, 16,
-51, 68, 8, 16, 12, -8, 0, -9,
-20, -22, 25, 7, -4, -13, 41, -35,
-93, -18, -54, 11, -1, 1, -9, 4,
--66, 66, -31, 20, -22, 25, -23, 11,
-10, 9, 19, 15, 11, -5, -31, -10,
--23, -28, -6, -6, -3, -4, 5, 3,
--28, 22, -11, -42, 25, -25, -16, 41,
-34, 47, -6, 2, 42, -19, -22, 5,
--39, 32, 6, -35, 22, 17, -30, 8,
--26, -11, -11, 3, -12, 33, 33, -37,
-21, -1, 6, -4, 3, 0, -5, 5,
-12, -12, 57, 27, -61, -3, 20, -17,
-2, 0, 4, 0, -2, -33, -58, 81,
--23, 39, -10, -5, 2, 6, -7, 5,
-4, -3, -2, -13, -23, -72, 107, 15,
--5, 0, -7, -3, -6, 5, -4, 15,
-47, 12, -31, 25, -16, 8, 22, -25,
--62, -56, -18, 14, 28, 12, 2, -11,
-74, -66, 41, -20, -7, 16, -20, 16,
--8, 0, -16, 4, -19, 92, 12, -59,
--14, -39, 49, -25, -16, 23, -27, 19,
--3, -33, 19, 85, -29, 6, -7, -10,
-16, -7, -12, 1, -6, 2, 4, -2,
-64, 10, -25, 41, -2, -31, 15, 0,
-110, 50, 69, 35, 28, 19, -10, 2,
--43, -49, -56, -15, -16, 10, 3, 12,
--1, -8, 1, 26, -12, -1, 7, -11,
--27, 41, 25, 1, -11, -18, 22, -7,
--1, -47, -8, 23, -3, -17, -7, 18,
--125, 59, -5, 3, 18, 1, 2, 3,
-27, -35, 65, -53, 50, -46, 37, -21,
--28, 7, 14, -37, -5, -5, 12, 5,
--8, 78, -19, 21, -6, -16, 8, -7,
-5, 2, 7, 2, 10, -6, 12, -60,
-44, 11, -36, -32, 31, 0, 2, -2,
-2, 1, -3, 7, -10, 17, -21, 10,
-6, -2, 19, -2, 59, -38, -86, 38,
-8, -41, -30, -45, -33, 7, 15, 28,
-29, -7, 24, -40, 7, 7, 5, -2,
-9, 24, -23, -18, 6, -29, 30, 2,
-28, 49, -11, -46, 10, 43, -13, -9,
--1, -3, -7, -7, -17, -6, 97, -33,
--21, 3, 5, 1, 12, -43, -8, 28,
-7, -43, -7, 17, -20, 19, -1, 2,
--13, 9, 54, 34, 9, -28, -11, -9,
--17, 110, -59, 44, -26, 0, 3, -12,
--47, 73, -34, -43, 38, -33, 16, -5,
--46, -4, -6, -2, -25, 19, -29, 28,
--13, 5, 14, 27, -40, -43, 4, 32,
--13, -2, -35, -4, 112, -42, 9, -12,
-37, -28, 17, 14, -19, 35, -39, 23,
-3, -14, -1, -57, -5, 94, -9, 3,
--39, 5, 30, -10, -32, 42, -13, -14,
--97, -63, 30, -9, 1, -7, 12, 5,
-20, 17, -9, -36, -30, 25, 47, -9,
--15, 12, -22, 98, -8, -50, 15, -27,
-21, -16, -11, 2, 12, -10, 10, -3,
-33, 36, -96, 0, -17, 31, -9, 9,
-3, -20, 13, -11, 8, -4, 10, -10,
-9, 1, 112, -70, -27, 5, -21, 2,
--57, -3, -29, 10, 19, -21, 21, -10,
--66, -3, 91, -35, 30, -12, 0, -7,
-59, -28, 26, 2, 14, -18, 1, 1,
-11, 17, 20, -54, -59, 27, 4, 29,
-32, 5, 19, 12, -4, 1, 7, -10,
-5, -2, 10, 0, 23, -5, 28, -104,
-46, 11, 16, 3, 29, 1, -8, -14,
-1, 7, -50, 88, -62, 26, 8, -17,
--14, 50, 0, 32, -12, -3, -27, 18,
--8, -5, 8, 3, -20, -11, 37, -12,
-9, 33, 46, -101, -1, -4, 1, 6,
--1, 28, -42, -15, 16, 5, -1, -2,
--55, 85, 38, -9, -4, 11, -2, -9,
--6, 3, -20, -10, -77, 89, 24, -3,
--104, -57, -26, -31, -20, -6, -9, 14,
-20, -23, 46, -15, -31, 28, 1, -15,
--2, 6, -2, 31, 45, -76, 23, -25,
-};
diff --git a/3rdparty/speex/libspeex/high_lsp_tables.c b/3rdparty/speex/libspeex/high_lsp_tables.c
deleted file mode 100644
index e82e8755..00000000
--- a/3rdparty/speex/libspeex/high_lsp_tables.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: high_lsp_tables.c
- Codebooks for high-band LSPs in SB-CELP mode
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-const signed char high_lsp_cdbk[512]={
-39,12,-14,-20,-29,-61,-67,-76,
--32,-71,-67,68,77,46,34,5,
--13,-48,-46,-72,-81,-84,-60,-58,
--40,-28,82,93,68,45,29,3,
--19,-47,-28,-43,-35,-30,-8,-13,
--39,-91,-91,-123,-96,10,10,-6,
--18,-55,-60,-91,-56,-36,-27,-16,
--48,-75,40,28,-10,-28,35,9,
-37,19,1,-20,-31,-41,-18,-25,
--35,-68,-80,45,27,-1,47,13,
-0,-29,-35,-57,-50,-79,-73,-38,
--19,5,35,14,-10,-23,16,-8,
-5,-24,-40,-62,-23,-27,-22,-16,
--18,-46,-72,-77,43,21,33,1,
--80,-70,-70,-64,-56,-52,-39,-33,
--31,-38,-19,-19,-15,32,33,-2,
-7,-15,-15,-24,-23,-33,-41,-56,
--24,-57,5,89,64,41,27,5,
--9,-47,-60,-97,-97,-124,-20,-9,
--44,-73,31,29,-4,64,48,7,
--35,-57,0,-3,-26,-47,-3,-6,
--40,-76,-79,-48,12,81,55,10,
-9,-24,-43,-73,-57,-69,16,5,
--28,-53,18,29,20,0,-4,-11,
-6,-13,23,7,-17,-35,-37,-37,
--30,-68,-63,6,24,-9,-14,3,
-21,-13,-27,-57,-49,-80,-24,-41,
--5,-16,-5,1,45,25,12,-7,
-3,-15,-6,-16,-15,-8,6,-13,
--42,-81,-80,-87,14,1,-10,-3,
--43,-69,-46,-24,-28,-29,36,6,
--43,-56,-12,12,54,79,43,9,
-54,22,2,8,-12,-43,-46,-52,
--38,-69,-89,-5,75,38,33,5,
--13,-53,-62,-87,-89,-113,-99,-55,
--34,-37,62,55,33,16,21,-2,
--17,-46,-29,-38,-38,-48,-39,-42,
--36,-75,-72,-88,-48,-30,21,2,
--15,-57,-64,-98,-84,-76,25,1,
--46,-80,-12,18,-7,3,34,6,
-38,31,23,4,-1,20,14,-15,
--43,-78,-91,-24,14,-3,54,16,
-0,-27,-28,-44,-56,-83,-92,-89,
--3,34,56,41,36,22,20,-8,
--7,-35,-42,-62,-49,3,12,-10,
--50,-87,-96,-66,92,70,38,9,
--70,-71,-62,-42,-39,-43,-11,-7,
--50,-79,-58,-50,-31,32,31,-6,
--4,-25,7,-17,-38,-70,-58,-27,
--43,-83,-28,59,36,20,31,2,
--27,-71,-80,-109,-98,-75,-33,-32,
--31,-2,33,15,-6,43,33,-5,
-0,-22,-10,-27,-34,-49,-11,-20,
--41,-91,-100,-121,-39,57,41,10,
--19,-50,-38,-59,-60,-70,-18,-20,
--8,-31,-8,-15,1,-14,-26,-25,
-33,21,32,17,1,-19,-19,-26,
--58,-81,-35,-22,45,30,11,-11,
-3,-26,-48,-87,-67,-83,-58,3,
--1,-26,-20,44,10,25,39,5,
--9,-35,-27,-38,7,10,4,-9,
--42,-85,-102,-127,52,44,28,10,
--47,-61,-40,-39,-17,-1,-10,-33,
--42,-74,-48,21,-4,70,52,10};
-
-
-const signed char high_lsp_cdbk2[512]={
--36,-62,6,-9,-10,-14,-56,23,
-1,-26,23,-48,-17,12,8,-7,
-23,29,-36,-28,-6,-29,-17,-5,
-40,23,10,10,-46,-13,36,6,
-4,-30,-29,62,32,-32,-1,22,
--14,1,-4,-22,-45,2,54,4,
--30,-57,-59,-12,27,-3,-31,8,
--9,5,10,-14,32,66,19,9,
-2,-25,-37,23,-15,18,-38,-31,
-5,-9,-21,15,0,22,62,30,
-15,-12,-14,-46,77,21,33,3,
-34,29,-19,50,2,11,9,-38,
--12,-37,62,1,-15,54,32,6,
-2,-24,20,35,-21,2,19,24,
--13,55,4,9,39,-19,30,-1,
--21,73,54,33,8,18,3,15,
-6,-19,-47,6,-3,-48,-50,1,
-26,20,8,-23,-50,65,-14,-55,
--17,-31,-37,-28,53,-1,-17,-53,
-1,57,11,-8,-25,-30,-37,64,
-5,-52,-45,15,23,31,15,14,
--25,24,33,-2,-44,-56,-18,6,
--21,-43,4,-12,17,-37,20,-10,
-34,15,2,15,55,21,-11,-31,
--6,46,25,16,-9,-25,-8,-62,
-28,17,20,-32,-29,26,30,25,
--19,2,-16,-17,26,-51,2,50,
-42,19,-66,23,29,-2,3,19,
--19,-37,32,15,6,30,-34,13,
-11,-5,40,31,10,-42,4,-9,
-26,-9,-70,17,-2,-23,20,-22,
--55,51,-24,-31,22,-22,15,-13,
-3,-10,-28,-16,56,4,-63,11,
--18,-15,-18,-38,-35,16,-7,34,
--1,-21,-49,-47,9,-37,7,8,
-69,55,20,6,-33,-45,-10,-9,
-6,-9,12,71,15,-3,-42,-7,
--24,32,-35,-2,-42,-17,-5,0,
--2,-33,-54,13,-12,-34,47,23,
-19,55,7,-8,74,31,14,16,
--23,-26,19,12,-18,-49,-28,-31,
--20,2,-14,-20,-47,78,40,13,
--23,-11,21,-6,18,1,47,5,
-38,35,32,46,22,8,13,16,
--14,18,51,19,40,39,11,-26,
--1,-17,47,2,-53,-15,31,-22,
-38,21,-15,-16,5,-33,53,15,
--38,86,11,-3,-24,49,13,-4,
--11,-18,28,20,-12,-27,-26,35,
--25,-35,-3,-20,-61,30,10,-55,
--12,-22,-52,-54,-14,19,-32,-12,
-45,15,-8,-48,-9,11,-32,8,
--16,-34,-13,51,18,38,-2,-32,
--17,22,-2,-18,-28,-70,59,27,
--28,-19,-10,-20,-9,-9,-8,-21,
-21,-8,35,-2,45,-3,-9,12,
-0,30,7,-39,43,27,-38,-91,
-30,26,19,-55,-4,63,14,-17,
-13,9,13,2,7,4,6,61,
-72,-1,-17,29,-1,-22,-17,8,
--28,-37,63,44,41,3,2,14,
-9,-6,75,-8,-7,-12,-15,-12,
-13,9,-4,30,-22,-65,15,0,
--45,4,-4,1,5,22,11,23};
diff --git a/3rdparty/speex/libspeex/jitter.c b/3rdparty/speex/libspeex/jitter.c
deleted file mode 100644
index 2b64453a..00000000
--- a/3rdparty/speex/libspeex/jitter.c
+++ /dev/null
@@ -1,627 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: speex_jitter.h
-
- Adaptive jitter buffer for Speex
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-
-#include "misc.h"
-#include <speex/speex.h>
-#include <speex/speex_bits.h>
-#include <speex/speex_jitter.h>
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-#define LATE_BINS 15
-#define MAX_MARGIN 30 /**< Number of bins in margin histogram */
-
-#define SPEEX_JITTER_MAX_BUFFER_SIZE 200 /**< Maximum number of packets in jitter buffer */
-
-
-
-#define GT32(a,b) (((spx_int32_t)((a)-(b)))>0)
-#define GE32(a,b) (((spx_int32_t)((a)-(b)))>=0)
-#define LT32(a,b) (((spx_int32_t)((a)-(b)))<0)
-#define LE32(a,b) (((spx_int32_t)((a)-(b)))<=0)
-
-/** Jitter buffer structure */
-struct JitterBuffer_ {
- spx_uint32_t pointer_timestamp; /**< Timestamp of what we will *get* next */
- spx_uint32_t current_timestamp; /**< Timestamp of the local clock (what we will *play* next) */
-
- char *buf[SPEEX_JITTER_MAX_BUFFER_SIZE]; /**< Buffer of packets (NULL if slot is free) */
- spx_uint32_t timestamp[SPEEX_JITTER_MAX_BUFFER_SIZE]; /**< Timestamp of packet */
- int span[SPEEX_JITTER_MAX_BUFFER_SIZE]; /**< Timestamp of packet */
- int len[SPEEX_JITTER_MAX_BUFFER_SIZE]; /**< Number of bytes in packet */
-
- int tick_size; /**< Output granularity */
- int reset_state; /**< True if state was just reset */
- int buffer_margin; /**< How many frames we want to keep in the buffer (lower bound) */
- int late_cutoff; /**< How late must a packet be for it not to be considered at all */
- int interp_requested; /**< An interpolation is requested by speex_jitter_update_delay() */
-
- int lost_count; /**< Number of consecutive lost packets */
- float shortterm_margin[MAX_MARGIN]; /**< Short term margin histogram */
- float longterm_margin[MAX_MARGIN]; /**< Long term margin histogram */
- float loss_rate; /**< Average loss rate */
-};
-
-/** Initialise jitter buffer */
-JitterBuffer *jitter_buffer_init(int tick)
-{
- JitterBuffer *jitter = (JitterBuffer*)speex_alloc(sizeof(JitterBuffer));
- if (jitter)
- {
- int i;
- for (i=0;i<SPEEX_JITTER_MAX_BUFFER_SIZE;i++)
- jitter->buf[i]=NULL;
- jitter->tick_size = tick;
- jitter->buffer_margin = 1;
- jitter->late_cutoff = 50;
- jitter_buffer_reset(jitter);
- }
- return jitter;
-}
-
-/** Reset jitter buffer */
-void jitter_buffer_reset(JitterBuffer *jitter)
-{
- int i;
- for (i=0;i<SPEEX_JITTER_MAX_BUFFER_SIZE;i++)
- {
- if (jitter->buf[i])
- {
- speex_free(jitter->buf[i]);
- jitter->buf[i] = NULL;
- }
- }
- /* Timestamp is actually undefined at this point */
- jitter->pointer_timestamp = 0;
- jitter->current_timestamp = 0;
- jitter->reset_state = 1;
- jitter->lost_count = 0;
- jitter->loss_rate = 0;
- for (i=0;i<MAX_MARGIN;i++)
- {
- jitter->shortterm_margin[i] = 0;
- jitter->longterm_margin[i] = 0;
- }
- /*fprintf (stderr, "reset\n");*/
-}
-
-/** Destroy jitter buffer */
-void jitter_buffer_destroy(JitterBuffer *jitter)
-{
- jitter_buffer_reset(jitter);
- speex_free(jitter);
-}
-
-/** Put one packet into the jitter buffer */
-void jitter_buffer_put(JitterBuffer *jitter, const JitterBufferPacket *packet)
-{
- int i,j;
- spx_int32_t arrival_margin;
- /*fprintf (stderr, "put packet %d %d\n", timestamp, span);*/
- if (jitter->reset_state)
- {
- jitter->reset_state=0;
- jitter->pointer_timestamp = packet->timestamp;
- jitter->current_timestamp = packet->timestamp;
- /*fprintf(stderr, "reset to %d\n", timestamp);*/
- }
-
- /* Cleanup buffer (remove old packets that weren't played) */
- for (i=0;i<SPEEX_JITTER_MAX_BUFFER_SIZE;i++)
- {
- /* Make sure we don't discard a "just-late" packet in case we want to play it next (if we interpolate). */
- if (jitter->buf[i] && LE32(jitter->timestamp[i] + jitter->span[i], jitter->pointer_timestamp))
- {
- /*fprintf (stderr, "cleaned (not played)\n");*/
- speex_free(jitter->buf[i]);
- jitter->buf[i] = NULL;
- }
- }
-
- /*Find an empty slot in the buffer*/
- for (i=0;i<SPEEX_JITTER_MAX_BUFFER_SIZE;i++)
- {
- if (jitter->buf[i]==NULL)
- break;
- }
-
- /*fprintf(stderr, "%d %d %f\n", timestamp, jitter->pointer_timestamp, jitter->drift_average);*/
- /*No place left in the buffer*/
- if (i==SPEEX_JITTER_MAX_BUFFER_SIZE)
- {
- int earliest=jitter->timestamp[0];
- i=0;
- for (j=1;j<SPEEX_JITTER_MAX_BUFFER_SIZE;j++)
- {
- if (!jitter->buf[i] || LT32(jitter->timestamp[j],earliest))
- {
- earliest = jitter->timestamp[j];
- i=j;
- }
- }
- speex_free(jitter->buf[i]);
- jitter->buf[i]=NULL;
- if (jitter->lost_count>20)
- {
- jitter_buffer_reset(jitter);
- }
- /*fprintf (stderr, "Buffer is full, discarding earliest frame %d (currently at %d)\n", timestamp, jitter->pointer_timestamp);*/
- }
-
- /* Copy packet in buffer */
- jitter->buf[i]=(char*)speex_alloc(packet->len);
- for (j=0;j<packet->len;j++)
- jitter->buf[i][j]=packet->data[j];
- jitter->timestamp[i]=packet->timestamp;
- jitter->span[i]=packet->span;
- jitter->len[i]=packet->len;
-
- /* Adjust the buffer size depending on network conditions.
- The arrival margin is how much in advance (or late) the packet it */
- arrival_margin = (((spx_int32_t)packet->timestamp) - ((spx_int32_t)jitter->current_timestamp))/jitter->tick_size - jitter->buffer_margin;
-
- if (arrival_margin >= -jitter->late_cutoff)
- {
- /* Here we compute the histogram based on the time of arrival of the packet.
- This is based on a (first-order) recursive average. We keep both a short-term
- histogram and a long-term histogram */
- spx_int32_t int_margin;
- /* First, apply the "damping" of the recursive average to all bins */
- for (i=0;i<MAX_MARGIN;i++)
- {
- jitter->shortterm_margin[i] *= .98;
- jitter->longterm_margin[i] *= .995;
- }
- /* What histogram bin the packet should be counted in */
- int_margin = LATE_BINS + arrival_margin;
- if (int_margin>MAX_MARGIN-1)
- int_margin = MAX_MARGIN-1;
- if (int_margin<0)
- int_margin = 0;
- /* Add the packet to the right bin */
- jitter->shortterm_margin[int_margin] += .02;
- jitter->longterm_margin[int_margin] += .005;
- } else {
- /* Packet has arrived *way* too late, we pretty much consider it lost and not take it into account in the histogram */
- /*fprintf (stderr, "way too late = %d\n", arrival_margin);*/
- if (jitter->lost_count>20)
- {
- jitter_buffer_reset(jitter);
- }
- }
-#if 0 /* Enable to check how much is being buffered */
- if (rand()%1000==0)
- {
- int count = 0;
- for (j=0;j<SPEEX_JITTER_MAX_BUFFER_SIZE;j++)
- {
- if (jitter->buf[j])
- count++;
- }
- fprintf (stderr, "buffer_size = %d\n", count);
- }
-#endif
-}
-
-/** Get one packet from the jitter buffer */
-int jitter_buffer_get(JitterBuffer *jitter, JitterBufferPacket *packet, spx_int32_t *start_offset)
-{
- int i;
- unsigned int j;
- float late_ratio_short;
- float late_ratio_long;
- float ontime_ratio_short;
- float ontime_ratio_long;
- float early_ratio_short;
- float early_ratio_long;
- int chunk_size;
- int incomplete = 0;
-
- if (jitter->interp_requested)
- {
- jitter->interp_requested = 0;
- if (start_offset)
- *start_offset = 0;
- packet->timestamp = jitter->pointer_timestamp;
- packet->span = jitter->tick_size;
- jitter->pointer_timestamp += jitter->tick_size;
- packet->len = 0;
- return JITTER_BUFFER_MISSING;
- }
- if (LT32(jitter->current_timestamp+jitter->tick_size, jitter->pointer_timestamp))
- {
- jitter->current_timestamp = jitter->pointer_timestamp;
- speex_warning("did you forget to call jitter_buffer_tick() by any chance?");
- }
- /*fprintf (stderr, "get packet %d %d\n", jitter->pointer_timestamp, jitter->current_timestamp);*/
-
- /* FIXME: This should be only what remaining of the current tick */
- chunk_size = jitter->tick_size;
-
- /* Compiling arrival statistics */
-
- late_ratio_short = 0;
- late_ratio_long = 0;
- /* Count the proportion of packets that are late */
- for (i=0;i<LATE_BINS;i++)
- {
- late_ratio_short += jitter->shortterm_margin[i];
- late_ratio_long += jitter->longterm_margin[i];
- }
- /* Count the proportion of packets that are just on time */
- ontime_ratio_short = jitter->shortterm_margin[LATE_BINS];
- ontime_ratio_long = jitter->longterm_margin[LATE_BINS];
- early_ratio_short = early_ratio_long = 0;
- /* Count the proportion of packets that are early */
- for (i=LATE_BINS+1;i<MAX_MARGIN;i++)
- {
- early_ratio_short += jitter->shortterm_margin[i];
- early_ratio_long += jitter->longterm_margin[i];
- }
- if (0&&jitter->pointer_timestamp%1000==0)
- {
- /*fprintf (stderr, "%f %f %f %f %f %f\n", early_ratio_short, early_ratio_long, ontime_ratio_short, ontime_ratio_long, late_ratio_short, late_ratio_long);*/
- /*fprintf (stderr, "%f %f\n", early_ratio_short + ontime_ratio_short + late_ratio_short, early_ratio_long + ontime_ratio_long + late_ratio_long);*/
- }
-
-
- /* Searching for the packet that fits best */
-
- /* Search the buffer for a packet with the right timestamp and spanning the whole current chunk */
- for (i=0;i<SPEEX_JITTER_MAX_BUFFER_SIZE;i++)
- {
- if (jitter->buf[i] && jitter->timestamp[i]==jitter->pointer_timestamp && GE32(jitter->timestamp[i]+jitter->span[i],jitter->pointer_timestamp+chunk_size))
- break;
- }
-
- /* If no match, try for an "older" packet that still spans (fully) the current chunk */
- if (i==SPEEX_JITTER_MAX_BUFFER_SIZE)
- {
- for (i=0;i<SPEEX_JITTER_MAX_BUFFER_SIZE;i++)
- {
- if (jitter->buf[i] && LE32(jitter->timestamp[i], jitter->pointer_timestamp) && GE32(jitter->timestamp[i]+jitter->span[i],jitter->pointer_timestamp+chunk_size))
- break;
- }
- }
-
- /* If still no match, try for an "older" packet that spans part of the current chunk */
- if (i==SPEEX_JITTER_MAX_BUFFER_SIZE)
- {
- for (i=0;i<SPEEX_JITTER_MAX_BUFFER_SIZE;i++)
- {
- if (jitter->buf[i] && LE32(jitter->timestamp[i], jitter->pointer_timestamp) && GT32(jitter->timestamp[i]+jitter->span[i],jitter->pointer_timestamp))
- break;
- }
- }
-
- /* If still no match, try for earliest packet possible */
- if (i==SPEEX_JITTER_MAX_BUFFER_SIZE)
- {
- int found = 0;
- spx_uint32_t best_time=0;
- int best_span=0;
- int besti=0;
- for (i=0;i<SPEEX_JITTER_MAX_BUFFER_SIZE;i++)
- {
- /* check if packet starts within current chunk */
- if (jitter->buf[i] && LT32(jitter->timestamp[i],jitter->pointer_timestamp+chunk_size) && GE32(jitter->timestamp[i],jitter->pointer_timestamp))
- {
- if (!found || LT32(jitter->timestamp[i],best_time) || (jitter->timestamp[i]==best_time && GT32(jitter->span[i],best_span)))
- {
- best_time = jitter->timestamp[i];
- best_span = jitter->span[i];
- besti = i;
- found = 1;
- }
- }
- }
- if (found)
- {
- i=besti;
- incomplete = 1;
- /*fprintf (stderr, "incomplete: %d %d %d %d\n", jitter->timestamp[i], jitter->pointer_timestamp, chunk_size, jitter->span[i]);*/
- }
- }
-
- /* If we find something */
- if (i!=SPEEX_JITTER_MAX_BUFFER_SIZE)
- {
- /* We (obviously) haven't lost this packet */
- jitter->lost_count = 0;
- jitter->loss_rate = .999*jitter->loss_rate;
- /* Check for potential overflow */
- packet->len = jitter->len[i];
- /* Copy packet */
- for (j=0;j<packet->len;j++)
- packet->data[j] = jitter->buf[i][j];
- /* Remove packet */
- speex_free(jitter->buf[i]);
- jitter->buf[i] = NULL;
- /* Set timestamp and span (if requested) */
- if (start_offset)
- *start_offset = (spx_int32_t)jitter->timestamp[i]-(spx_int32_t)jitter->pointer_timestamp;
- packet->timestamp = jitter->timestamp[i];
- packet->span = jitter->span[i];
- /* Point at the end of the current packet */
- jitter->pointer_timestamp = jitter->timestamp[i]+jitter->span[i];
- if (incomplete)
- return JITTER_BUFFER_INCOMPLETE;
- else
- return JITTER_BUFFER_OK;
- }
-
-
- /* If we haven't found anything worth returning */
- /*fprintf (stderr, "not found\n");*/
- jitter->lost_count++;
- /*fprintf (stderr, "m");*/
- /*fprintf (stderr, "lost_count = %d\n", jitter->lost_count);*/
- jitter->loss_rate = .999*jitter->loss_rate + .001;
- if (start_offset)
- *start_offset = 0;
- packet->timestamp = jitter->pointer_timestamp;
- packet->span = jitter->tick_size;
- jitter->pointer_timestamp += chunk_size;
- packet->len = 0;
-
- /* Adjusting the buffering bssed on the amount of packets that are early/on time/late */
- if (late_ratio_short > .1 || late_ratio_long > .03)
- {
- /* If too many packets are arriving late */
- jitter->shortterm_margin[MAX_MARGIN-1] += jitter->shortterm_margin[MAX_MARGIN-2];
- jitter->longterm_margin[MAX_MARGIN-1] += jitter->longterm_margin[MAX_MARGIN-2];
- for (i=MAX_MARGIN-3;i>=0;i--)
- {
- jitter->shortterm_margin[i+1] = jitter->shortterm_margin[i];
- jitter->longterm_margin[i+1] = jitter->longterm_margin[i];
- }
- jitter->shortterm_margin[0] = 0;
- jitter->longterm_margin[0] = 0;
- jitter->pointer_timestamp -= jitter->tick_size;
- jitter->current_timestamp -= jitter->tick_size;
- /*fprintf (stderr, "i");*/
- /*fprintf (stderr, "interpolate (getting some slack)\n");*/
- }
-
- return JITTER_BUFFER_MISSING;
-
-}
-
-/** Get pointer timestamp of jitter buffer */
-int jitter_buffer_get_pointer_timestamp(JitterBuffer *jitter)
-{
- return jitter->pointer_timestamp;
-}
-
-void jitter_buffer_tick(JitterBuffer *jitter)
-{
- jitter->current_timestamp += jitter->tick_size;
-}
-
-/* Let the jitter buffer know it's the right time to adjust the buffering delay to the network conditions */
-int jitter_buffer_update_delay(JitterBuffer *jitter, JitterBufferPacket *packet, spx_int32_t *start_offset)
-{
- int i;
- float late_ratio_short;
- float late_ratio_long;
- float ontime_ratio_short;
- float ontime_ratio_long;
- float early_ratio_short;
- float early_ratio_long;
-
- if (LT32(jitter->current_timestamp+jitter->tick_size, jitter->pointer_timestamp))
- {
- jitter->current_timestamp = jitter->pointer_timestamp;
- speex_warning("did you forget to call jitter_buffer_tick() by any chance?");
- }
- /*fprintf (stderr, "get packet %d %d\n", jitter->pointer_timestamp, jitter->current_timestamp);*/
-
- /* FIXME: This should be only what remaining of the current tick */
- late_ratio_short = 0;
- late_ratio_long = 0;
- /* Count the proportion of packets that are late */
- for (i=0;i<LATE_BINS;i++)
- {
- late_ratio_short += jitter->shortterm_margin[i];
- late_ratio_long += jitter->longterm_margin[i];
- }
- /* Count the proportion of packets that are just on time */
- ontime_ratio_short = jitter->shortterm_margin[LATE_BINS];
- ontime_ratio_long = jitter->longterm_margin[LATE_BINS];
- early_ratio_short = early_ratio_long = 0;
- /* Count the proportion of packets that are early */
- for (i=LATE_BINS+1;i<MAX_MARGIN;i++)
- {
- early_ratio_short += jitter->shortterm_margin[i];
- early_ratio_long += jitter->longterm_margin[i];
- }
-
- /* Adjusting the buffering bssed on the amount of packets that are early/on time/late */
- if (late_ratio_short > .1 || late_ratio_long > .03)
- {
- /* If too many packets are arriving late */
- jitter->shortterm_margin[MAX_MARGIN-1] += jitter->shortterm_margin[MAX_MARGIN-2];
- jitter->longterm_margin[MAX_MARGIN-1] += jitter->longterm_margin[MAX_MARGIN-2];
- for (i=MAX_MARGIN-3;i>=0;i--)
- {
- jitter->shortterm_margin[i+1] = jitter->shortterm_margin[i];
- jitter->longterm_margin[i+1] = jitter->longterm_margin[i];
- }
- jitter->shortterm_margin[0] = 0;
- jitter->longterm_margin[0] = 0;
- jitter->pointer_timestamp -= jitter->tick_size;
- jitter->current_timestamp -= jitter->tick_size;
- jitter->interp_requested = 1;
- return JITTER_BUFFER_ADJUST_INTERPOLATE;
-
- } else if (late_ratio_short + ontime_ratio_short < .005 && late_ratio_long + ontime_ratio_long < .01 && early_ratio_short > .8)
- {
- /* Many frames arriving early */
- jitter->shortterm_margin[0] += jitter->shortterm_margin[1];
- jitter->longterm_margin[0] += jitter->longterm_margin[1];
- for (i=1;i<MAX_MARGIN-1;i++)
- {
- jitter->shortterm_margin[i] = jitter->shortterm_margin[i+1];
- jitter->longterm_margin[i] = jitter->longterm_margin[i+1];
- }
- jitter->shortterm_margin[MAX_MARGIN-1] = 0;
- jitter->longterm_margin[MAX_MARGIN-1] = 0;
- /*fprintf (stderr, "drop frame\n");*/
- /*fprintf (stderr, "d");*/
- jitter->pointer_timestamp += jitter->tick_size;
- jitter->current_timestamp += jitter->tick_size;
- return JITTER_BUFFER_ADJUST_DROP;
- }
-
- return JITTER_BUFFER_ADJUST_OK;
-}
-
-/* Used like the ioctl function to control the jitter buffer parameters */
-int jitter_buffer_ctl(JitterBuffer *jitter, int request, void *ptr)
-{
- int count, i;
- switch(request)
- {
- case JITTER_BUFFER_SET_MARGIN:
- jitter->buffer_margin = *(spx_int32_t*)ptr;
- break;
- case JITTER_BUFFER_GET_MARGIN:
- *(spx_int32_t*)ptr = jitter->buffer_margin;
- break;
- case JITTER_BUFFER_GET_AVALIABLE_COUNT:
- count = 0;
- for (i=0;i<SPEEX_JITTER_MAX_BUFFER_SIZE;i++)
- {
- if (jitter->buf[i] && LE32(jitter->pointer_timestamp, jitter->timestamp[i]))
- {
- count++;
- }
- }
- *(spx_int32_t*)ptr = count;
- break;
- default:
- speex_warning_int("Unknown jitter_buffer_ctl request: ", request);
- return -1;
- }
- return 0;
-}
-
-
-
-void speex_jitter_init(SpeexJitter *jitter, void *decoder, int sampling_rate)
-{
- jitter->dec = decoder;
- speex_decoder_ctl(decoder, SPEEX_GET_FRAME_SIZE, &jitter->frame_size);
-
- jitter->packets = jitter_buffer_init(jitter->frame_size);
-
- speex_bits_init(&jitter->current_packet);
- jitter->valid_bits = 0;
-
-}
-
-void speex_jitter_destroy(SpeexJitter *jitter)
-{
- jitter_buffer_destroy(jitter->packets);
- speex_bits_destroy(&jitter->current_packet);
-}
-
-void speex_jitter_put(SpeexJitter *jitter, char *packet, int len, int timestamp)
-{
- JitterBufferPacket p;
- p.data = packet;
- p.len = len;
- p.timestamp = timestamp;
- p.span = jitter->frame_size;
- jitter_buffer_put(jitter->packets, &p);
-}
-
-void speex_jitter_get(SpeexJitter *jitter, short *out, int *current_timestamp)
-{
- int i;
- int ret;
- char data[2048];
- JitterBufferPacket packet;
- packet.data = data;
-
- if (jitter->valid_bits)
- {
- /* Try decoding last received packet */
- ret = speex_decode_int(jitter->dec, &jitter->current_packet, out);
- if (ret == 0)
- {
- jitter_buffer_tick(jitter->packets);
- return;
- } else {
- jitter->valid_bits = 0;
- }
- }
-
- ret = jitter_buffer_get(jitter->packets, &packet, NULL);
-
- if (ret != JITTER_BUFFER_OK)
- {
- /* No packet found */
-
- /*fprintf (stderr, "lost/late frame\n");*/
- /*Packet is late or lost*/
- speex_decode_int(jitter->dec, NULL, out);
- } else {
- speex_bits_read_from(&jitter->current_packet, packet.data, packet.len);
- /* Decode packet */
- ret = speex_decode_int(jitter->dec, &jitter->current_packet, out);
- if (ret == 0)
- {
- jitter->valid_bits = 1;
- } else {
- /* Error while decoding */
- for (i=0;i<jitter->frame_size;i++)
- out[i]=0;
- }
- }
- jitter_buffer_update_delay(jitter->packets, &packet, NULL);
- jitter_buffer_tick(jitter->packets);
-}
-
-int speex_jitter_get_pointer_timestamp(SpeexJitter *jitter)
-{
- return jitter_buffer_get_pointer_timestamp(jitter->packets);
-}
diff --git a/3rdparty/speex/libspeex/kiss_fft.c b/3rdparty/speex/libspeex/kiss_fft.c
deleted file mode 100644
index 775a2573..00000000
--- a/3rdparty/speex/libspeex/kiss_fft.c
+++ /dev/null
@@ -1,522 +0,0 @@
-/*
-Copyright (c) 2003-2004, Mark Borgerding
-Copyright (c) 2005-2007, Jean-Marc Valin
-
-All rights reserved.
-
-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 author nor the names of any 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 COPYRIGHT OWNER 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.
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "_kiss_fft_guts.h"
-#include "misc.h"
-
-/* The guts header contains all the multiplication and addition macros that are defined for
- fixed or floating point complex numbers. It also delares the kf_ internal functions.
- */
-
-static void kf_bfly2(
- kiss_fft_cpx * Fout,
- const size_t fstride,
- const kiss_fft_cfg st,
- int m,
- int N,
- int mm
- )
-{
- kiss_fft_cpx * Fout2;
- kiss_fft_cpx * tw1;
- kiss_fft_cpx t;
- if (!st->inverse) {
- int i,j;
- kiss_fft_cpx * Fout_beg = Fout;
- for (i=0;i<N;i++)
- {
- Fout = Fout_beg + i*mm;
- Fout2 = Fout + m;
- tw1 = st->twiddles;
- for(j=0;j<m;j++)
- {
- /* Almost the same as the code path below, except that we divide the input by two
- (while keeping the best accuracy possible) */
- spx_word32_t tr, ti;
- tr = SHR32(SUB32(MULT16_16(Fout2->r , tw1->r),MULT16_16(Fout2->i , tw1->i)), 1);
- ti = SHR32(ADD32(MULT16_16(Fout2->i , tw1->r),MULT16_16(Fout2->r , tw1->i)), 1);
- tw1 += fstride;
- Fout2->r = PSHR32(SUB32(SHL32(EXTEND32(Fout->r), 14), tr), 15);
- Fout2->i = PSHR32(SUB32(SHL32(EXTEND32(Fout->i), 14), ti), 15);
- Fout->r = PSHR32(ADD32(SHL32(EXTEND32(Fout->r), 14), tr), 15);
- Fout->i = PSHR32(ADD32(SHL32(EXTEND32(Fout->i), 14), ti), 15);
- ++Fout2;
- ++Fout;
- }
- }
- } else {
- int i,j;
- kiss_fft_cpx * Fout_beg = Fout;
- for (i=0;i<N;i++)
- {
- Fout = Fout_beg + i*mm;
- Fout2 = Fout + m;
- tw1 = st->twiddles;
- for(j=0;j<m;j++)
- {
- C_MUL (t, *Fout2 , *tw1);
- tw1 += fstride;
- C_SUB( *Fout2 , *Fout , t );
- C_ADDTO( *Fout , t );
- ++Fout2;
- ++Fout;
- }
- }
- }
-}
-
-static void kf_bfly4(
- kiss_fft_cpx * Fout,
- const size_t fstride,
- const kiss_fft_cfg st,
- const size_t m,
- int N,
- int mm
- )
-{
- kiss_fft_cpx *tw1,*tw2,*tw3;
- kiss_fft_cpx scratch[6];
- const size_t m2=2*m;
- const size_t m3=3*m;
- int i, j;
-
- if (st->inverse)
- {
- kiss_fft_cpx * Fout_beg = Fout;
- for (i=0;i<N;i++)
- {
- Fout = Fout_beg + i*mm;
- tw3 = tw2 = tw1 = st->twiddles;
- for (j=0;j<m;j++)
- {
- C_MUL(scratch[0],Fout[m] , *tw1 );
- C_MUL(scratch[1],Fout[m2] , *tw2 );
- C_MUL(scratch[2],Fout[m3] , *tw3 );
-
- C_SUB( scratch[5] , *Fout, scratch[1] );
- C_ADDTO(*Fout, scratch[1]);
- C_ADD( scratch[3] , scratch[0] , scratch[2] );
- C_SUB( scratch[4] , scratch[0] , scratch[2] );
- C_SUB( Fout[m2], *Fout, scratch[3] );
- tw1 += fstride;
- tw2 += fstride*2;
- tw3 += fstride*3;
- C_ADDTO( *Fout , scratch[3] );
-
- Fout[m].r = scratch[5].r - scratch[4].i;
- Fout[m].i = scratch[5].i + scratch[4].r;
- Fout[m3].r = scratch[5].r + scratch[4].i;
- Fout[m3].i = scratch[5].i - scratch[4].r;
- ++Fout;
- }
- }
- } else
- {
- kiss_fft_cpx * Fout_beg = Fout;
- for (i=0;i<N;i++)
- {
- Fout = Fout_beg + i*mm;
- tw3 = tw2 = tw1 = st->twiddles;
- for (j=0;j<m;j++)
- {
- C_MUL4(scratch[0],Fout[m] , *tw1 );
- C_MUL4(scratch[1],Fout[m2] , *tw2 );
- C_MUL4(scratch[2],Fout[m3] , *tw3 );
-
- Fout->r = PSHR16(Fout->r, 2);
- Fout->i = PSHR16(Fout->i, 2);
- C_SUB( scratch[5] , *Fout, scratch[1] );
- C_ADDTO(*Fout, scratch[1]);
- C_ADD( scratch[3] , scratch[0] , scratch[2] );
- C_SUB( scratch[4] , scratch[0] , scratch[2] );
- Fout[m2].r = PSHR16(Fout[m2].r, 2);
- Fout[m2].i = PSHR16(Fout[m2].i, 2);
- C_SUB( Fout[m2], *Fout, scratch[3] );
- tw1 += fstride;
- tw2 += fstride*2;
- tw3 += fstride*3;
- C_ADDTO( *Fout , scratch[3] );
-
- Fout[m].r = scratch[5].r + scratch[4].i;
- Fout[m].i = scratch[5].i - scratch[4].r;
- Fout[m3].r = scratch[5].r - scratch[4].i;
- Fout[m3].i = scratch[5].i + scratch[4].r;
- ++Fout;
- }
- }
- }
-}
-
-static void kf_bfly3(
- kiss_fft_cpx * Fout,
- const size_t fstride,
- const kiss_fft_cfg st,
- size_t m
- )
-{
- size_t k=m;
- const size_t m2 = 2*m;
- kiss_fft_cpx *tw1,*tw2;
- kiss_fft_cpx scratch[5];
- kiss_fft_cpx epi3;
- epi3 = st->twiddles[fstride*m];
-
- tw1=tw2=st->twiddles;
-
- do{
- if (!st->inverse) {
- C_FIXDIV(*Fout,3); C_FIXDIV(Fout[m],3); C_FIXDIV(Fout[m2],3);
- }
-
- C_MUL(scratch[1],Fout[m] , *tw1);
- C_MUL(scratch[2],Fout[m2] , *tw2);
-
- C_ADD(scratch[3],scratch[1],scratch[2]);
- C_SUB(scratch[0],scratch[1],scratch[2]);
- tw1 += fstride;
- tw2 += fstride*2;
-
- Fout[m].r = Fout->r - HALF_OF(scratch[3].r);
- Fout[m].i = Fout->i - HALF_OF(scratch[3].i);
-
- C_MULBYSCALAR( scratch[0] , epi3.i );
-
- C_ADDTO(*Fout,scratch[3]);
-
- Fout[m2].r = Fout[m].r + scratch[0].i;
- Fout[m2].i = Fout[m].i - scratch[0].r;
-
- Fout[m].r -= scratch[0].i;
- Fout[m].i += scratch[0].r;
-
- ++Fout;
- }while(--k);
-}
-
-static void kf_bfly5(
- kiss_fft_cpx * Fout,
- const size_t fstride,
- const kiss_fft_cfg st,
- int m
- )
-{
- kiss_fft_cpx *Fout0,*Fout1,*Fout2,*Fout3,*Fout4;
- int u;
- kiss_fft_cpx scratch[13];
- kiss_fft_cpx * twiddles = st->twiddles;
- kiss_fft_cpx *tw;
- kiss_fft_cpx ya,yb;
- ya = twiddles[fstride*m];
- yb = twiddles[fstride*2*m];
-
- Fout0=Fout;
- Fout1=Fout0+m;
- Fout2=Fout0+2*m;
- Fout3=Fout0+3*m;
- Fout4=Fout0+4*m;
-
- tw=st->twiddles;
- for ( u=0; u<m; ++u ) {
- if (!st->inverse) {
- C_FIXDIV( *Fout0,5); C_FIXDIV( *Fout1,5); C_FIXDIV( *Fout2,5); C_FIXDIV( *Fout3,5); C_FIXDIV( *Fout4,5);
- }
- scratch[0] = *Fout0;
-
- C_MUL(scratch[1] ,*Fout1, tw[u*fstride]);
- C_MUL(scratch[2] ,*Fout2, tw[2*u*fstride]);
- C_MUL(scratch[3] ,*Fout3, tw[3*u*fstride]);
- C_MUL(scratch[4] ,*Fout4, tw[4*u*fstride]);
-
- C_ADD( scratch[7],scratch[1],scratch[4]);
- C_SUB( scratch[10],scratch[1],scratch[4]);
- C_ADD( scratch[8],scratch[2],scratch[3]);
- C_SUB( scratch[9],scratch[2],scratch[3]);
-
- Fout0->r += scratch[7].r + scratch[8].r;
- Fout0->i += scratch[7].i + scratch[8].i;
-
- scratch[5].r = scratch[0].r + S_MUL(scratch[7].r,ya.r) + S_MUL(scratch[8].r,yb.r);
- scratch[5].i = scratch[0].i + S_MUL(scratch[7].i,ya.r) + S_MUL(scratch[8].i,yb.r);
-
- scratch[6].r = S_MUL(scratch[10].i,ya.i) + S_MUL(scratch[9].i,yb.i);
- scratch[6].i = -S_MUL(scratch[10].r,ya.i) - S_MUL(scratch[9].r,yb.i);
-
- C_SUB(*Fout1,scratch[5],scratch[6]);
- C_ADD(*Fout4,scratch[5],scratch[6]);
-
- scratch[11].r = scratch[0].r + S_MUL(scratch[7].r,yb.r) + S_MUL(scratch[8].r,ya.r);
- scratch[11].i = scratch[0].i + S_MUL(scratch[7].i,yb.r) + S_MUL(scratch[8].i,ya.r);
- scratch[12].r = - S_MUL(scratch[10].i,yb.i) + S_MUL(scratch[9].i,ya.i);
- scratch[12].i = S_MUL(scratch[10].r,yb.i) - S_MUL(scratch[9].r,ya.i);
-
- C_ADD(*Fout2,scratch[11],scratch[12]);
- C_SUB(*Fout3,scratch[11],scratch[12]);
-
- ++Fout0;++Fout1;++Fout2;++Fout3;++Fout4;
- }
-}
-
-/* perform the butterfly for one stage of a mixed radix FFT */
-static void kf_bfly_generic(
- kiss_fft_cpx * Fout,
- const size_t fstride,
- const kiss_fft_cfg st,
- int m,
- int p
- )
-{
- int u,k,q1,q;
- kiss_fft_cpx * twiddles = st->twiddles;
- kiss_fft_cpx t;
- kiss_fft_cpx scratchbuf[17];
- int Norig = st->nfft;
-
- /*CHECKBUF(scratchbuf,nscratchbuf,p);*/
- if (p>17)
- speex_error("KissFFT: max radix supported is 17");
-
- for ( u=0; u<m; ++u ) {
- k=u;
- for ( q1=0 ; q1<p ; ++q1 ) {
- scratchbuf[q1] = Fout[ k ];
- if (!st->inverse) {
- C_FIXDIV(scratchbuf[q1],p);
- }
- k += m;
- }
-
- k=u;
- for ( q1=0 ; q1<p ; ++q1 ) {
- int twidx=0;
- Fout[ k ] = scratchbuf[0];
- for (q=1;q<p;++q ) {
- twidx += fstride * k;
- if (twidx>=Norig) twidx-=Norig;
- C_MUL(t,scratchbuf[q] , twiddles[twidx] );
- C_ADDTO( Fout[ k ] ,t);
- }
- k += m;
- }
- }
-}
-
-static
-void kf_shuffle(
- kiss_fft_cpx * Fout,
- const kiss_fft_cpx * f,
- const size_t fstride,
- int in_stride,
- int * factors,
- const kiss_fft_cfg st
- )
-{
- const int p=*factors++; /* the radix */
- const int m=*factors++; /* stage's fft length/p */
-
- /*printf ("fft %d %d %d %d %d %d\n", p*m, m, p, s2, fstride*in_stride, N);*/
- if (m==1)
- {
- int j;
- for (j=0;j<p;j++)
- {
- Fout[j] = *f;
- f += fstride*in_stride;
- }
- } else {
- int j;
- for (j=0;j<p;j++)
- {
- kf_shuffle( Fout , f, fstride*p, in_stride, factors,st);
- f += fstride*in_stride;
- Fout += m;
- }
- }
-}
-
-static
-void kf_work(
- kiss_fft_cpx * Fout,
- const kiss_fft_cpx * f,
- const size_t fstride,
- int in_stride,
- int * factors,
- const kiss_fft_cfg st,
- int N,
- int s2,
- int m2
- )
-{
- int i;
- kiss_fft_cpx * Fout_beg=Fout;
- const int p=*factors++; /* the radix */
- const int m=*factors++; /* stage's fft length/p */
-#if 0
- /*printf ("fft %d %d %d %d %d %d\n", p*m, m, p, s2, fstride*in_stride, N);*/
- if (m==1)
- {
- /* int j;
- for (j=0;j<p;j++)
- {
- Fout[j] = *f;
- f += fstride*in_stride;
- }*/
- } else {
- int j;
- for (j=0;j<p;j++)
- {
- kf_work( Fout , f, fstride*p, in_stride, factors,st, N*p, fstride*in_stride, m);
- f += fstride*in_stride;
- Fout += m;
- }
- }
-
- Fout=Fout_beg;
-
- switch (p) {
- case 2: kf_bfly2(Fout,fstride,st,m); break;
- case 3: kf_bfly3(Fout,fstride,st,m); break;
- case 4: kf_bfly4(Fout,fstride,st,m); break;
- case 5: kf_bfly5(Fout,fstride,st,m); break;
- default: kf_bfly_generic(Fout,fstride,st,m,p); break;
- }
-#else
- /*printf ("fft %d %d %d %d %d %d %d\n", p*m, m, p, s2, fstride*in_stride, N, m2);*/
- if (m==1)
- {
- /*for (i=0;i<N;i++)
- {
- int j;
- Fout = Fout_beg+i*m2;
- const kiss_fft_cpx * f2 = f+i*s2;
- for (j=0;j<p;j++)
- {
- *Fout++ = *f2;
- f2 += fstride*in_stride;
- }
- }*/
- }else{
- kf_work( Fout , f, fstride*p, in_stride, factors,st, N*p, fstride*in_stride, m);
- }
-
-
-
-
- switch (p) {
- case 2: kf_bfly2(Fout,fstride,st,m, N, m2); break;
- case 3: for (i=0;i<N;i++){Fout=Fout_beg+i*m2; kf_bfly3(Fout,fstride,st,m);} break;
- case 4: kf_bfly4(Fout,fstride,st,m, N, m2); break;
- case 5: for (i=0;i<N;i++){Fout=Fout_beg+i*m2; kf_bfly5(Fout,fstride,st,m);} break;
- default: for (i=0;i<N;i++){Fout=Fout_beg+i*m2; kf_bfly_generic(Fout,fstride,st,m,p);} break;
- }
-#endif
-}
-
-/* facbuf is populated by p1,m1,p2,m2, ...
- where
- p[i] * m[i] = m[i-1]
- m0 = n */
-static
-void kf_factor(int n,int * facbuf)
-{
- int p=4;
-
- /*factor out powers of 4, powers of 2, then any remaining primes */
- do {
- while (n % p) {
- switch (p) {
- case 4: p = 2; break;
- case 2: p = 3; break;
- default: p += 2; break;
- }
- if (p>32000 || (spx_int32_t)p*(spx_int32_t)p > n)
- p = n; /* no more factors, skip to end */
- }
- n /= p;
- *facbuf++ = p;
- *facbuf++ = n;
- } while (n > 1);
-}
-/*
- *
- * User-callable function to allocate all necessary storage space for the fft.
- *
- * The return value is a contiguous block of memory, allocated with malloc. As such,
- * It can be freed with free(), rather than a kiss_fft-specific function.
- * */
-kiss_fft_cfg kiss_fft_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem )
-{
- kiss_fft_cfg st=NULL;
- size_t memneeded = sizeof(struct kiss_fft_state)
- + sizeof(kiss_fft_cpx)*(nfft-1); /* twiddle factors*/
-
- if ( lenmem==NULL ) {
- st = ( kiss_fft_cfg)KISS_FFT_MALLOC( memneeded );
- }else{
- if (mem != NULL && *lenmem >= memneeded)
- st = (kiss_fft_cfg)mem;
- *lenmem = memneeded;
- }
- if (st) {
- int i;
- st->nfft=nfft;
- st->inverse = inverse_fft;
-#ifdef FIXED_POINT
- for (i=0;i<nfft;++i) {
- spx_word32_t phase = i;
- if (!st->inverse)
- phase = -phase;
- kf_cexp2(st->twiddles+i, DIV32(SHL32(phase,17),nfft));
- }
-#else
- for (i=0;i<nfft;++i) {
- const double pi=3.14159265358979323846264338327;
- double phase = ( -2*pi /nfft ) * i;
- if (st->inverse)
- phase *= -1;
- kf_cexp(st->twiddles+i, phase );
- }
-#endif
- kf_factor(nfft,st->factors);
- }
- return st;
-}
-
-
-
-
-void kiss_fft_stride(kiss_fft_cfg st,const kiss_fft_cpx *fin,kiss_fft_cpx *fout,int in_stride)
-{
- if (fin == fout)
- {
- speex_error("In-place FFT not supported");
- /*CHECKBUF(tmpbuf,ntmpbuf,st->nfft);
- kf_work(tmpbuf,fin,1,in_stride, st->factors,st);
- speex_move(fout,tmpbuf,sizeof(kiss_fft_cpx)*st->nfft);*/
- } else {
- kf_shuffle( fout, fin, 1,in_stride, st->factors,st);
- kf_work( fout, fin, 1,in_stride, st->factors,st, 1, in_stride, 1);
- }
-}
-
-void kiss_fft(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout)
-{
- kiss_fft_stride(cfg,fin,fout,1);
-}
-
diff --git a/3rdparty/speex/libspeex/kiss_fft.h b/3rdparty/speex/libspeex/kiss_fft.h
deleted file mode 100644
index 54627e7d..00000000
--- a/3rdparty/speex/libspeex/kiss_fft.h
+++ /dev/null
@@ -1,108 +0,0 @@
-#ifndef KISS_FFT_H
-#define KISS_FFT_H
-
-#include <stdlib.h>
-#include <math.h>
-#include "misc.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- ATTENTION!
- If you would like a :
- -- a utility that will handle the caching of fft objects
- -- real-only (no imaginary time component ) FFT
- -- a multi-dimensional FFT
- -- a command-line utility to perform ffts
- -- a command-line utility to perform fast-convolution filtering
-
- Then see kfc.h kiss_fftr.h kiss_fftnd.h fftutil.c kiss_fastfir.c
- in the tools/ directory.
-*/
-
-#ifdef USE_SIMD
-# include <xmmintrin.h>
-# define kiss_fft_scalar __m128
-#define KISS_FFT_MALLOC(nbytes) memalign(16,nbytes)
-#else
-#define KISS_FFT_MALLOC speex_alloc
-#endif
-
-
-#ifdef FIXED_POINT
-#include "misc.h"
-# define kiss_fft_scalar spx_int16_t
-#else
-# ifndef kiss_fft_scalar
-/* default is float */
-# define kiss_fft_scalar float
-# endif
-#endif
-
-typedef struct {
- kiss_fft_scalar r;
- kiss_fft_scalar i;
-}kiss_fft_cpx;
-
-typedef struct kiss_fft_state* kiss_fft_cfg;
-
-/*
- * kiss_fft_alloc
- *
- * Initialize a FFT (or IFFT) algorithm's cfg/state buffer.
- *
- * typical usage: kiss_fft_cfg mycfg=kiss_fft_alloc(1024,0,NULL,NULL);
- *
- * The return value from fft_alloc is a cfg buffer used internally
- * by the fft routine or NULL.
- *
- * If lenmem is NULL, then kiss_fft_alloc will allocate a cfg buffer using malloc.
- * The returned value should be free()d when done to avoid memory leaks.
- *
- * The state can be placed in a user supplied buffer 'mem':
- * If lenmem is not NULL and mem is not NULL and *lenmem is large enough,
- * then the function places the cfg in mem and the size used in *lenmem
- * and returns mem.
- *
- * If lenmem is not NULL and ( mem is NULL or *lenmem is not large enough),
- * then the function returns NULL and places the minimum cfg
- * buffer size in *lenmem.
- * */
-
-kiss_fft_cfg kiss_fft_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem);
-
-/*
- * kiss_fft(cfg,in_out_buf)
- *
- * Perform an FFT on a complex input buffer.
- * for a forward FFT,
- * fin should be f[0] , f[1] , ... ,f[nfft-1]
- * fout will be F[0] , F[1] , ... ,F[nfft-1]
- * Note that each element is complex and can be accessed like
- f[k].r and f[k].i
- * */
-void kiss_fft(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout);
-
-/*
- A more generic version of the above function. It reads its input from every Nth sample.
- * */
-void kiss_fft_stride(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout,int fin_stride);
-
-/* If kiss_fft_alloc allocated a buffer, it is one contiguous
- buffer and can be simply free()d when no longer needed*/
-#define kiss_fft_free speex_free
-
-/*
- Cleans up some memory that gets managed internally. Not necessary to call, but it might clean up
- your compiler output to call this before you exit.
-*/
-void kiss_fft_cleanup(void);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/3rdparty/speex/libspeex/kiss_fftr.c b/3rdparty/speex/libspeex/kiss_fftr.c
deleted file mode 100644
index 392945cb..00000000
--- a/3rdparty/speex/libspeex/kiss_fftr.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
-Copyright (c) 2003-2004, Mark Borgerding
-
-All rights reserved.
-
-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 author nor the names of any 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 COPYRIGHT OWNER 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.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "kiss_fftr.h"
-#include "_kiss_fft_guts.h"
-
-struct kiss_fftr_state{
- kiss_fft_cfg substate;
- kiss_fft_cpx * tmpbuf;
- kiss_fft_cpx * super_twiddles;
-#ifdef USE_SIMD
- long pad;
-#endif
-};
-
-kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem)
-{
- int i;
- kiss_fftr_cfg st = NULL;
- size_t subsize, memneeded;
-
- if (nfft & 1) {
- speex_warning("Real FFT optimization must be even.\n");
- return NULL;
- }
- nfft >>= 1;
-
- kiss_fft_alloc (nfft, inverse_fft, NULL, &subsize);
- memneeded = sizeof(struct kiss_fftr_state) + subsize + sizeof(kiss_fft_cpx) * ( nfft * 2);
-
- if (lenmem == NULL) {
- st = (kiss_fftr_cfg) KISS_FFT_MALLOC (memneeded);
- } else {
- if (*lenmem >= memneeded)
- st = (kiss_fftr_cfg) mem;
- *lenmem = memneeded;
- }
- if (!st)
- return NULL;
-
- st->substate = (kiss_fft_cfg) (st + 1); /*just beyond kiss_fftr_state struct */
- st->tmpbuf = (kiss_fft_cpx *) (((char *) st->substate) + subsize);
- st->super_twiddles = st->tmpbuf + nfft;
- kiss_fft_alloc(nfft, inverse_fft, st->substate, &subsize);
-
-#ifdef FIXED_POINT
- for (i=0;i<nfft;++i) {
- spx_word32_t phase = i+(nfft>>1);
- if (!inverse_fft)
- phase = -phase;
- kf_cexp2(st->super_twiddles+i, DIV32(SHL32(phase,16),nfft));
- }
-#else
- for (i=0;i<nfft;++i) {
- const double pi=3.14159265358979323846264338327;
- double phase = pi*(((double)i) /nfft + .5);
- if (!inverse_fft)
- phase = -phase;
- kf_cexp(st->super_twiddles+i, phase );
- }
-#endif
- return st;
-}
-
-void kiss_fftr(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata)
-{
- /* input buffer timedata is stored row-wise */
- int k,ncfft;
- kiss_fft_cpx fpnk,fpk,f1k,f2k,tw,tdc;
-
- if ( st->substate->inverse) {
- speex_error("kiss fft usage error: improper alloc\n");
- }
-
- ncfft = st->substate->nfft;
-
- /*perform the parallel fft of two real signals packed in real,imag*/
- kiss_fft( st->substate , (const kiss_fft_cpx*)timedata, st->tmpbuf );
- /* The real part of the DC element of the frequency spectrum in st->tmpbuf
- * contains the sum of the even-numbered elements of the input time sequence
- * The imag part is the sum of the odd-numbered elements
- *
- * The sum of tdc.r and tdc.i is the sum of the input time sequence.
- * yielding DC of input time sequence
- * The difference of tdc.r - tdc.i is the sum of the input (dot product) [1,-1,1,-1...
- * yielding Nyquist bin of input time sequence
- */
-
- tdc.r = st->tmpbuf[0].r;
- tdc.i = st->tmpbuf[0].i;
- C_FIXDIV(tdc,2);
- CHECK_OVERFLOW_OP(tdc.r ,+, tdc.i);
- CHECK_OVERFLOW_OP(tdc.r ,-, tdc.i);
- freqdata[0].r = tdc.r + tdc.i;
- freqdata[ncfft].r = tdc.r - tdc.i;
-#ifdef USE_SIMD
- freqdata[ncfft].i = freqdata[0].i = _mm_set1_ps(0);
-#else
- freqdata[ncfft].i = freqdata[0].i = 0;
-#endif
-
- for ( k=1;k <= ncfft/2 ; ++k ) {
- fpk = st->tmpbuf[k];
- fpnk.r = st->tmpbuf[ncfft-k].r;
- fpnk.i = - st->tmpbuf[ncfft-k].i;
- C_FIXDIV(fpk,2);
- C_FIXDIV(fpnk,2);
-
- C_ADD( f1k, fpk , fpnk );
- C_SUB( f2k, fpk , fpnk );
- C_MUL( tw , f2k , st->super_twiddles[k]);
-
- freqdata[k].r = HALF_OF(f1k.r + tw.r);
- freqdata[k].i = HALF_OF(f1k.i + tw.i);
- freqdata[ncfft-k].r = HALF_OF(f1k.r - tw.r);
- freqdata[ncfft-k].i = HALF_OF(tw.i - f1k.i);
- }
-}
-
-void kiss_fftri(kiss_fftr_cfg st,const kiss_fft_cpx *freqdata, kiss_fft_scalar *timedata)
-{
- /* input buffer timedata is stored row-wise */
- int k, ncfft;
-
- if (st->substate->inverse == 0) {
- speex_error ("kiss fft usage error: improper alloc\n");
- }
-
- ncfft = st->substate->nfft;
-
- st->tmpbuf[0].r = freqdata[0].r + freqdata[ncfft].r;
- st->tmpbuf[0].i = freqdata[0].r - freqdata[ncfft].r;
- /*C_FIXDIV(st->tmpbuf[0],2);*/
-
- for (k = 1; k <= ncfft / 2; ++k) {
- kiss_fft_cpx fk, fnkc, fek, fok, tmp;
- fk = freqdata[k];
- fnkc.r = freqdata[ncfft - k].r;
- fnkc.i = -freqdata[ncfft - k].i;
- /*C_FIXDIV( fk , 2 );
- C_FIXDIV( fnkc , 2 );*/
-
- C_ADD (fek, fk, fnkc);
- C_SUB (tmp, fk, fnkc);
- C_MUL (fok, tmp, st->super_twiddles[k]);
- C_ADD (st->tmpbuf[k], fek, fok);
- C_SUB (st->tmpbuf[ncfft - k], fek, fok);
-#ifdef USE_SIMD
- st->tmpbuf[ncfft - k].i *= _mm_set1_ps(-1.0);
-#else
- st->tmpbuf[ncfft - k].i *= -1;
-#endif
- }
- kiss_fft (st->substate, st->tmpbuf, (kiss_fft_cpx *) timedata);
-}
-
-void kiss_fftr2(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_scalar *freqdata)
-{
- /* input buffer timedata is stored row-wise */
- int k,ncfft;
- kiss_fft_cpx f2k,tdc;
- spx_word32_t f1kr, f1ki, twr, twi;
-
- if ( st->substate->inverse) {
- speex_error("kiss fft usage error: improper alloc\n");
- }
-
- ncfft = st->substate->nfft;
-
- /*perform the parallel fft of two real signals packed in real,imag*/
- kiss_fft( st->substate , (const kiss_fft_cpx*)timedata, st->tmpbuf );
- /* The real part of the DC element of the frequency spectrum in st->tmpbuf
- * contains the sum of the even-numbered elements of the input time sequence
- * The imag part is the sum of the odd-numbered elements
- *
- * The sum of tdc.r and tdc.i is the sum of the input time sequence.
- * yielding DC of input time sequence
- * The difference of tdc.r - tdc.i is the sum of the input (dot product) [1,-1,1,-1...
- * yielding Nyquist bin of input time sequence
- */
-
- tdc.r = st->tmpbuf[0].r;
- tdc.i = st->tmpbuf[0].i;
- C_FIXDIV(tdc,2);
- CHECK_OVERFLOW_OP(tdc.r ,+, tdc.i);
- CHECK_OVERFLOW_OP(tdc.r ,-, tdc.i);
- freqdata[0] = tdc.r + tdc.i;
- freqdata[2*ncfft-1] = tdc.r - tdc.i;
-
- for ( k=1;k <= ncfft/2 ; ++k )
- {
- /*fpk = st->tmpbuf[k];
- fpnk.r = st->tmpbuf[ncfft-k].r;
- fpnk.i = - st->tmpbuf[ncfft-k].i;
- C_FIXDIV(fpk,2);
- C_FIXDIV(fpnk,2);
-
- C_ADD( f1k, fpk , fpnk );
- C_SUB( f2k, fpk , fpnk );
-
- C_MUL( tw , f2k , st->super_twiddles[k]);
-
- freqdata[2*k-1] = HALF_OF(f1k.r + tw.r);
- freqdata[2*k] = HALF_OF(f1k.i + tw.i);
- freqdata[2*(ncfft-k)-1] = HALF_OF(f1k.r - tw.r);
- freqdata[2*(ncfft-k)] = HALF_OF(tw.i - f1k.i);
- */
-
- /*f1k.r = PSHR32(ADD32(EXTEND32(st->tmpbuf[k].r), EXTEND32(st->tmpbuf[ncfft-k].r)),1);
- f1k.i = PSHR32(SUB32(EXTEND32(st->tmpbuf[k].i), EXTEND32(st->tmpbuf[ncfft-k].i)),1);
- f2k.r = PSHR32(SUB32(EXTEND32(st->tmpbuf[k].r), EXTEND32(st->tmpbuf[ncfft-k].r)),1);
- f2k.i = SHR32(ADD32(EXTEND32(st->tmpbuf[k].i), EXTEND32(st->tmpbuf[ncfft-k].i)),1);
-
- C_MUL( tw , f2k , st->super_twiddles[k]);
-
- freqdata[2*k-1] = HALF_OF(f1k.r + tw.r);
- freqdata[2*k] = HALF_OF(f1k.i + tw.i);
- freqdata[2*(ncfft-k)-1] = HALF_OF(f1k.r - tw.r);
- freqdata[2*(ncfft-k)] = HALF_OF(tw.i - f1k.i);
- */
- f2k.r = SHR32(SUB32(EXTEND32(st->tmpbuf[k].r), EXTEND32(st->tmpbuf[ncfft-k].r)),1);
- f2k.i = PSHR32(ADD32(EXTEND32(st->tmpbuf[k].i), EXTEND32(st->tmpbuf[ncfft-k].i)),1);
-
- f1kr = SHL32(ADD32(EXTEND32(st->tmpbuf[k].r), EXTEND32(st->tmpbuf[ncfft-k].r)),13);
- f1ki = SHL32(SUB32(EXTEND32(st->tmpbuf[k].i), EXTEND32(st->tmpbuf[ncfft-k].i)),13);
-
- twr = SHR32(SUB32(MULT16_16(f2k.r,st->super_twiddles[k].r),MULT16_16(f2k.i,st->super_twiddles[k].i)), 1);
- twi = SHR32(ADD32(MULT16_16(f2k.i,st->super_twiddles[k].r),MULT16_16(f2k.r,st->super_twiddles[k].i)), 1);
-
-#ifdef FIXED_POINT
- freqdata[2*k-1] = PSHR32(f1kr + twr, 15);
- freqdata[2*k] = PSHR32(f1ki + twi, 15);
- freqdata[2*(ncfft-k)-1] = PSHR32(f1kr - twr, 15);
- freqdata[2*(ncfft-k)] = PSHR32(twi - f1ki, 15);
-#else
- freqdata[2*k-1] = .5f*(f1kr + twr);
- freqdata[2*k] = .5f*(f1ki + twi);
- freqdata[2*(ncfft-k)-1] = .5f*(f1kr - twr);
- freqdata[2*(ncfft-k)] = .5f*(twi - f1ki);
-
-#endif
- }
-}
-
-void kiss_fftri2(kiss_fftr_cfg st,const kiss_fft_scalar *freqdata,kiss_fft_scalar *timedata)
-{
- /* input buffer timedata is stored row-wise */
- int k, ncfft;
-
- if (st->substate->inverse == 0) {
- speex_error ("kiss fft usage error: improper alloc\n");
- }
-
- ncfft = st->substate->nfft;
-
- st->tmpbuf[0].r = freqdata[0] + freqdata[2*ncfft-1];
- st->tmpbuf[0].i = freqdata[0] - freqdata[2*ncfft-1];
- /*C_FIXDIV(st->tmpbuf[0],2);*/
-
- for (k = 1; k <= ncfft / 2; ++k) {
- kiss_fft_cpx fk, fnkc, fek, fok, tmp;
- fk.r = freqdata[2*k-1];
- fk.i = freqdata[2*k];
- fnkc.r = freqdata[2*(ncfft - k)-1];
- fnkc.i = -freqdata[2*(ncfft - k)];
- /*C_FIXDIV( fk , 2 );
- C_FIXDIV( fnkc , 2 );*/
-
- C_ADD (fek, fk, fnkc);
- C_SUB (tmp, fk, fnkc);
- C_MUL (fok, tmp, st->super_twiddles[k]);
- C_ADD (st->tmpbuf[k], fek, fok);
- C_SUB (st->tmpbuf[ncfft - k], fek, fok);
-#ifdef USE_SIMD
- st->tmpbuf[ncfft - k].i *= _mm_set1_ps(-1.0);
-#else
- st->tmpbuf[ncfft - k].i *= -1;
-#endif
- }
- kiss_fft (st->substate, st->tmpbuf, (kiss_fft_cpx *) timedata);
-}
diff --git a/3rdparty/speex/libspeex/kiss_fftr.h b/3rdparty/speex/libspeex/kiss_fftr.h
deleted file mode 100644
index 7bfb4233..00000000
--- a/3rdparty/speex/libspeex/kiss_fftr.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef KISS_FTR_H
-#define KISS_FTR_H
-
-#include "kiss_fft.h"
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/*
-
- Real optimized version can save about 45% cpu time vs. complex fft of a real seq.
-
-
-
- */
-
-typedef struct kiss_fftr_state *kiss_fftr_cfg;
-
-
-kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem, size_t * lenmem);
-/*
- nfft must be even
-
- If you don't care to allocate space, use mem = lenmem = NULL
-*/
-
-
-void kiss_fftr(kiss_fftr_cfg cfg,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata);
-/*
- input timedata has nfft scalar points
- output freqdata has nfft/2+1 complex points
-*/
-
-void kiss_fftr2(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_scalar *freqdata);
-
-void kiss_fftri(kiss_fftr_cfg cfg,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata);
-
-void kiss_fftri2(kiss_fftr_cfg st,const kiss_fft_scalar *freqdata, kiss_fft_scalar *timedata);
-
-/*
- input freqdata has nfft/2+1 complex points
- output timedata has nfft scalar points
-*/
-
-#define kiss_fftr_free speex_free
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/3rdparty/speex/libspeex/lbr_48k_tables.c b/3rdparty/speex/libspeex/lbr_48k_tables.c
deleted file mode 100644
index d4d80dc3..00000000
--- a/3rdparty/speex/libspeex/lbr_48k_tables.c
+++ /dev/null
@@ -1,678 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: lbr_48k_tables.c
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-
-const int dummy_epic_48k_variable=0;
-#ifdef EPIC_48K
-
-const signed char gain_cdbk_ulbr[256] = {
--31, -48, -30, 10,
--19, -10, -18, 25,
--33, -22, -45, 12,
--5, -56, -43, 31,
--30, -56, -3, 28,
--59, -17, -52, 31,
--41, -60, -58, 32,
--64, -47, -22, 29,
--30, -31, -31, 2,
--29, -14, -31, 11,
--22, -37, -58, 21,
--31, -44, 13, 29,
--37, 0, 1, 35,
--46, -55, -35, 20,
--56, -14, -53, 32,
--8, 1, -36, 31,
--29, -15, -27, 13,
--29, -39, -28, 7,
--43, -5, 3, 37,
--51, -27, -54, 23,
-10, -46, -36, 30,
-3, -3, -42, 37,
--27, 16, -22, 32,
--34, -52, 13, 34,
--31, -21, -28, 8,
--34, -45, -40, 12,
--20, -48, 4, 32,
--40, -27, 16, 31,
--6, 11, -44, 41,
--35, 12, -5, 37,
-19, -33, -37, 29,
--29, 18, -32, 27,
--29, -23, -19, 13,
-16, -47, -28, 34,
--34, -30, 17, 27,
--20, 2, -26, 26,
--38, -40, -36, 9,
-15, -14, -40, 37,
--39, 14, -9, 38,
--15, 25, -39, 41,
--26, 19, -32, 29,
--39, 17, -14, 37,
-10, -36, -26, 26,
-14, -13, -40, 37,
--29, -21, -12, 17,
--8, 19, -39, 41,
--36, -18, 15, 33,
--32, -38, -38, 6,
--19, 4, -23, 29,
--38, -7, 11, 37,
-9, -10, -39, 35,
--37, 24, -19, 37,
--34, -5, -8, 27,
--20, 23, -41, 38,
--4, 17, -31, 39,
--17, -26, -26, 14,
--24, 28, -36, 36,
--7, 15, -39, 40,
--42, 16, -11, 40,
--29, 14, -6, 38,
--36, 28, -27, 35,
--21, 5, -26, 27,
-11, -9, -39, 37,
--38, -7, 13, 38
-};
-
-
-const signed char exc_12_32_table[384] = {
-34, 55, 9, 55, 4, 44, -2, 25, 4, -6, 13, -22,
-20, 26, -13, -56, -37, 18, 5, 28, 4, 10, 6, -7,
-37, -24, -31, 22, 12, -6, -4, -7, 2, 0, -3, -2,
--16, -13, -1, 9, -2, 4, 6, 5, -3, 3, 8, -1,
--1, -6, -2, -1, 8, 24, 19, 33, -73, -53, 6, -18,
-14, 7, 11, 8, -33, -94, -5, 7, 0, 44, 1, 19,
--9, -7, -34, -16, 8, 2, 5, 0, 3, 1, -2, 3,
--22, 6, -2, 12, 16, 30, 39, 25, 25, 2, 10, -2,
--1, -40, -6, -51, -5, -48, -9, -33, -14, -1, -24, 15,
-104, 39, 12, -9, -20, -12, -30, -10, -31, -7, -30, -8,
--71, -53, -4, -11, 9, -10, 7, -10, 10, -1, 11, 8,
-24, 14, 6, -3, 10, 8, 8, 11, -6, 11, 0, -2,
--6, -2, 1, -1, -3, 8, -41, 27, 57, -7, 11, -16,
--61, 50, 10, -10, 4, -13, 14, -7, 1, 5, -4, 4,
-0, 2, -1, -2, -1, 1, 1, 0, -1, -1, -2, -3,
--3, -15, 69, 60, 10, -10, -10, -29, -21, -7, -16, 2,
-24, -32, 24, -18, -14, -2, -11, 11, -6, 10, 1, 3,
-24, -10, 14, 18, -13, 17, -16, 4, -3, -21, -3, -11,
--19, 12, -14, 26, 20, -9, 24, -15, 18, 1, -32, -2,
--1, 8, -3, 4, 11, -47, 7, 46, -4, -10, -10, -2,
--24, 29, -33, 6, -20, -3, 0, -12, 5, -30, 8, -13,
-28, 9, 5, -11, 0, -14, -13, -22, -12, -8, -4, 1,
--6, 28, 45, -18, -31, -5, 1, 2, 1, 5, 0, -3,
--19, -10, 10, 27, 8, -16, -28, -9, 2, -5, 8, -1,
-100, -49, 4, -43, 25, -7, 1, 9, -13, 13, -18, 13,
--1, -1, 0, 2, -2, -8, 9, -46, -7, 70, 23, 7,
--103, 20, 8, 42, -5, 21, -4, 4, 1, -8, 16, -8,
-3, 3, 8, 4, 7, -3, -3, -4, 9, 6, 2, 13,
-6, 3, -15, 11, -43, 31, 40, -13, 12, -21, -2, -3,
--10, -9, 16, -35, 31, -3, -12, 8, -34, 7, 12, 22,
--3, -4, -7, -12, 24, 53, -19, -43, 4, -3, -4, 6,
--18, -30, -58, -17, -11, 17, 23, 34, 30, 28, 28, 15,
-};
-
-
-const signed char cdbk_lsp_vlbr[5120]={
-23, 34, 108, 100, 102, 82, 69, 48, 52, 25,
-0, -37, -55, -78, -111, -79, 58, 57, 45, 32,
-27, -9, -12, -14, -41, -29, -17, -41, 44, 35,
--24, -68, -72, 61, 100, 73, 100, 80, 70, 37,
-12, -5, 22, 11, -10, -40, -33, -17, 19, 12,
--20, -57, -94, -92, 56, 71, 48, 31, 22, -5,
-41, 28, 6, -6, -12, -39, -18, -16, -30, -23,
-65, 54, 41, 28, 23, 9, 26, 18, 22, 6,
-17, -16, -33, -54, -87, -79, 8, -8, 44, 35,
--20, -62, -78, 22, 78, 47, 44, 33, 26, 14,
-8, 1, 45, 47, 72, 68, 55, 31, 36, 17,
--27, -68, -86, -65, -10, 23, 8, -22, -31, 25,
--4, -38, -55, -68, -96, -118, -39, 30, 28, 31,
--21, -66, -47, 99, 91, 68, 78, 56, 64, 36,
-33, 22, 13, -13, -36, -22, 44, 37, 54, 33,
--31, -76, -106, -100, -5, 21, 7, -17, 13, 48,
--26, -65, -84, -84, -46, 67, 97, 66, 58, 31,
--20, -52, -32, -20, 3, 16, 27, 40, 54, 29,
--6, -35, -56, -64, -8, -31, -36, 21, 26, -3,
-32, 23, 1, -23, -19, -44, -45, -7, 10, -10,
--24, -55, 2, 67, 72, 85, 90, 74, 77, 45,
--21, -58, -45, -49, 16, 34, 13, -15, -16, 16,
-8, -31, -34, -61, -83, 10, 24, 8, 56, 25,
--8, -49, -74, -95, -123, -77, 6, 40, 46, 42,
--21, -60, -59, -34, -12, 27, 8, -19, -48, -17,
--25, -66, -78, -73, -81, -16, 14, 0, -2, 33,
-78, 79, 69, 49, 44, 32, 50, 44, 46, 22,
-24, 9, -4, -18, -37, -56, 22, 34, 22, 11,
--19, -59, -85, -41, 46, 72, 60, 33, 29, -3,
--21, -66, -70, 65, 92, 57, 61, 41, 40, 23,
--4, -41, -60, -72, -102, -106, 4, 56, 57, 31,
--5, -48, -62, -91, -109, 1, 76, 54, 72, 39,
--21, -61, -86, -46, -34, -39, 42, 25, 15, 12,
-5, -16, -36, -56, 5, 18, 11, 13, 52, 23,
-12, -6, 30, 40, 59, 40, 27, 8, 19, 6,
-25, 8, -9, -19, -25, -53, -40, -38, -46, -4,
--17, -59, -83, 2, 58, 29, 18, -2, -17, -5,
--35, -80, -111, -117, -41, -9, 14, 23, 36, 56,
-48, 67, 93, 71, 77, 91, 110, 95, 83, 47,
--25, -62, -97, -93, 76, 96, 73, 52, 61, 28,
--9, -55, -46, 49, 33, 8, 1, -25, 28, 23,
--10, -47, -60, -45, -62, -58, 56, 57, 48, 28,
-34, 12, -9, 0, 34, 4, 6, 11, 3, -18,
-21, -9, -16, -13, -39, -41, 14, -8, 33, 28,
--7, -49, -61, 15, 34, 3, 2, -13, -28, -17,
--14, -50, -46, -65, -76, -13, -10, -29, -30, 22,
--28, -68, -97, -98, -8, 38, 36, 26, 25, 15,
-6, -33, -9, 1, -28, -11, -19, -24, 61, 36,
--15, -60, -19, 81, 58, 52, 42, 28, 66, 36,
--15, -52, -71, -15, 11, -13, 38, 28, 11, -4,
-34, 1, -9, -27, -57, -19, 36, 6, 14, 0,
--1, -43, -14, 16, -12, -5, -14, -29, -33, -32,
--13, -57, -75, -100, -111, 1, 2, 13, 48, 33,
-12, 16, 100, 85, 69, 49, 40, 29, 46, 23,
--4, -26, -41, -44, -7, -26, -39, -27, 18, 0,
--4, -47, -51, 17, 7, -19, 13, -10, -16, 9,
--24, -63, -93, -53, 25, 14, 73, 51, 35, 8,
--34, -77, -106, -83, -51, -47, 2, 12, 41, 53,
--13, -47, -67, -44, 42, 20, 24, 33, 21, -3,
-11, -15, -29, -51, -79, -88, 22, 56, 43, 20,
-11, -22, -37, -1, 61, 40, 28, 24, 22, -6,
--3, -33, -50, -66, -93, -100, -16, -16, 3, 41,
--18, -58, -82, -5, 95, 78, 56, 39, 30, 1,
--6, -47, -28, -26, -36, 49, 55, 51, 71, 35,
--6, -50, -42, -4, -32, -1, -1, -18, 67, 40,
--23, -63, -56, -48, -32, 0, -14, -43, -46, 25,
--17, -61, -63, 13, -1, 28, 23, 10, 67, 36,
-45, 92, 124, 111, 108, 86, 77, 56, 57, 28,
-50, 35, 13, 3, -2, -32, 3, 14, 6, -8,
-12, -17, -24, -42, -67, -23, 67, 49, 64, 38,
--21, -60, -90, -45, 32, 6, 7, -3, -15, 9,
--16, -62, -73, 50, 46, 18, 7, -13, 63, 39,
-19, -16, -19, 20, 5, -15, 16, -9, 5, 8,
--11, -46, -42, -39, -55, -68, -62, -27, -18, 23,
--23, -61, -67, -71, -29, 44, 32, 10, -15, -12,
--6, -45, -43, -40, -67, -22, 42, 19, 61, 38,
-9, -13, -38, -37, 40, 30, 15, 9, 11, -16,
-0, -18, -29, -34, -17, -44, -50, -3, 47, 15,
--3, -46, -26, 20, -10, 16, 20, -2, 43, 18,
--23, -46, 46, 91, 99, 100, 99, 79, 72, 42,
--1, -44, -33, -36, -56, 22, 17, 4, 71, 37,
-0, -38, -49, 0, -1, -30, -21, -35, -44, -6,
--32, -74, -101, -98, -14, -21, -23, 7, 26, 45,
-8, -28, -44, -63, -96, -84, 34, 21, 13, 23,
-10, -24, -38, -17, -29, -53, -16, -41, -14, 23,
--19, -61, -76, -12, 97, 99, 79, 60, 59, 25,
-5, -11, -26, -54, -26, -8, -13, 3, 25, 4,
-17, 16, 4, -24, -1, 42, 60, 63, 70, 37,
-10, -27, -22, -43, -62, -7, -16, 10, 75, 40,
--26, -64, -96, -106, -3, 73, 73, 46, 55, 29,
--2, -45, -43, 45, 46, 17, 37, 10, 30, 32,
-21, -2, -18, -28, -47, -63, -38, -56, -3, 27,
--17, -48, -9, 9, 3, 28, 50, 58, 73, 44,
-8, -14, -32, -56, -81, -106, -35, 41, 53, 26,
-1, -38, -51, -66, -100, -61, 32, 17, 66, 42,
-17, 5, -6, -21, -26, -52, -36, 23, 56, 22,
-6, -20, -31, -22, -19, -48, 16, 38, 22, -2,
--25, -67, -93, -51, 82, 62, 71, 69, 63, 35,
--12, -51, -71, -60, -76, -91, -14, 41, 35, 20,
--16, -31, 22, 32, 55, 80, 98, 91, 85, 49,
--21, -63, -92, -6, 57, 27, 36, 11, 60, 39,
--7, -45, -67, -81, -114, -110, 0, 24, 23, 45,
--18, -55, -61, -56, -60, -64, -32, -2, 58, 36,
--3, -33, -51, -24, 19, -10, -19, 4, 14, -15,
--19, -59, -81, -12, 7, -12, 36, 16, 48, 36,
-17, -13, -32, -49, -78, -95, -1, -3, -10, 25,
-15, 5, 41, 59, 108, 101, 103, 81, 70, 35,
--14, -52, -37, 15, 93, 83, 66, 50, 47, 15,
--3, -31, -49, -52, -9, -31, -10, 37, 62, 27,
--15, -56, -82, -17, 75, 56, 36, 22, 7, -16,
--24, -63, -93, -84, 25, 94, 98, 65, 60, 31,
--2, -45, -39, -61, -61, 48, 35, 32, 54, 18,
--19, -51, -45, -57, -28, -8, 10, 14, 38, 26,
--2, -46, -38, 45, 26, 22, 48, 21, 63, 40,
--22, -61, -73, -75, -67, -31, 13, 18, 51, 34,
--12, -2, -1, -17, -3, -27, -3, 6, -1, -15,
--16, -59, -78, 10, 36, 9, 4, -18, 33, 22,
--25, -62, -97, -107, 39, 87, 69, 46, 42, 12,
-11, -7, -30, -36, 19, 2, -10, -7, -4, -24,
-11, -8, 25, 28, 28, 5, -4, -10, 5, -2,
--10, -48, -37, -17, -38, -9, -2, -19, -30, -22,
--23, -61, -79, -81, -2, 15, -4, 17, 20, 2,
-25, -14, -3, -10, -38, 1, 14, -14, -9, -27,
-2, -18, -38, -36, -11, -39, -36, -28, -36, -11,
-32, 59, 127, 124, 127, 108, 91, 68, 64, 34,
-3, -32, -37, -10, -25, -46, 12, 1, -17, -24,
--29, -69, -102, -100, 2, -7, 11, 14, 1, 31,
-30, -6, -4, -16, -44, -5, 3, -9, 66, 40,
--9, -45, -52, -5, 37, 19, 26, 6, 51, 32,
--31, -73, -96, -45, -25, -37, -15, -16, 32, 39,
-3, -15, 18, 21, 28, 33, 58, 58, 69, 42,
--31, -73, -99, -99, -48, 14, 21, 5, 2, 39,
-7, -35, -20, 29, 2, -8, -8, -28, 38, 26,
--5, -39, -64, -36, 15, -15, -11, -21, -23, 5,
--8, -51, -56, 15, -1, -14, -8, -31, 36, 22,
--8, -53, -68, -98, -101, 42, 49, 38, 41, 12,
-10, -27, -22, 4, -23, -21, 30, -1, 22, 26,
--13, -56, -42, 31, 9, -1, -10, -2, 22, -4,
-15, 8, 56, 57, 45, 55, 57, 46, 72, 44,
--7, -53, -26, 53, 21, 17, 0, 0, 74, 41,
-3, -18, -2, 0, 19, 17, 42, 36, 47, 26,
-24, -7, -23, -34, -62, -60, 6, -22, 18, 25,
--11, -42, -46, -61, -83, -99, -67, -11, 28, 39,
-30, -3, -10, -1, -24, -30, -1, -28, 15, 18,
-19, -15, -10, -6, -35, -26, 33, 10, 56, 39,
--13, -53, -82, -42, 53, 37, 18, 10, -3, -21,
--21, -60, -89, -46, 89, 94, 71, 46, 42, 9,
--2, -34, -44, -46, -64, -84, -1, 37, 16, 0,
--17, -51, -65, -64, -7, -17, -29, -11, 52, 27,
-22, -15, -16, -39, -55, 26, 36, 21, 62, 28,
--2, -26, -38, -49, -55, -80, -75, 8, 20, 9,
--6, -47, -61, -82, -103, -17, -15, -25, 53, 40,
--8, -47, -66, -18, 56, 43, 25, 29, 39, 3,
--27, -66, -86, -69, -50, -59, -34, -1, 19, 42,
-3, -20, 2, 21, 72, 57, 52, 36, 31, 7,
--12, -49, -61, -13, -1, -33, 5, 37, 26, 2,
--27, -69, -92, -62, 2, 43, 88, 67, 64, 36,
-0, -40, -4, -6, -20, 43, 33, 25, 50, 20,
-14, -20, -30, -44, -73, -37, -24, -47, 26, 20,
-31, 53, 111, 118, 127, 126, 121, 99, 85, 46,
--14, -45, -51, -39, 24, 5, -6, 17, 46, 14,
--4, -43, -45, -70, -63, 8, 14, 58, 78, 39,
--8, -47, -66, -84, -114, -55, 10, -8, 32, 40,
-28, 22, 42, 26, 8, -21, -16, -6, 22, 10,
-24, 10, 34, 31, 35, 31, 46, 39, 59, 36,
--4, -43, -62, -10, 20, -14, 2, 14, -6, -19,
--21, -62, -89, -22, 62, 33, 30, 16, 15, 15,
-0, -22, -31, -45, -58, -80, -66, 13, 68, 34,
--16, -45, -6, 7, -6, -17, -14, -15, 2, 2,
-10, -5, -22, -38, -40, -70, -60, -15, -23, 0,
-22, -11, -22, -39, -67, -25, 30, 5, 58, 37,
--21, -47, 6, 43, 37, 45, 65, 66, 73, 43,
-2, -25, -40, -53, -72, -94, -35, 24, 9, 8,
--3, 0, -3, -9, 4, -23, -10, 20, 43, 14,
--2, -41, -60, -9, 57, 32, 17, 16, 6, -19,
-1, -31, -36, -36, -54, -68, -77, -75, 21, 37,
--19, -32, 79, 90, 92, 81, 67, 47, 52, 28,
--6, -36, -57, -62, 27, 40, 21, 11, 9, -19,
--10, -47, -49, -59, -74, -18, -14, -30, 25, 18,
--23, -69, -82, 60, 66, 40, 75, 54, 65, 38,
--19, -57, -92, -68, 66, 58, 34, 18, 1, -16,
--29, -68, -99, -88, -37, -38, 13, 8, 5, 40,
--22, -63, -75, 14, 15, 7, 75, 58, 59, 34,
--23, -62, -82, -39, -31, -53, -27, 5, -3, 20,
-13, -26, -20, 22, 2, -3, 35, 13, 54, 39,
-32, 5, -13, -22, -45, -58, -1, -20, -19, 7,
-30, 46, 70, 55, 89, 88, 91, 67, 56, 28,
--13, -50, -63, -25, -28, -50, -23, -32, -34, 19,
--13, -54, -65, -9, -20, -37, 29, 6, 11, 25,
-0, -40, -55, -78, -107, -25, 47, 20, 34, 16,
--20, -58, -96, -103, 38, 43, 27, 30, 15, -1,
--16, -49, -52, -66, -80, -57, -44, -39, 6, 38,
-0, -38, 5, 13, -8, 23, 24, 1, 7, -9,
--18, -56, -64, -7, 38, 13, 11, 32, 28, 0,
-14, -3, -20, -17, 4, -26, -34, -8, 19, -9,
--23, -60, -83, -38, -8, -32, 11, 19, -1, -5,
--5, -47, -12, 56, 38, 22, 18, -8, -5, -8,
-18, -4, -24, -16, 27, 2, -6, 5, 25, -5,
-13, 0, -19, -35, -23, -45, -59, -30, 19, 3,
-19, -12, -23, 1, -7, -35, -14, -32, -23, 4,
--23, -64, -67, -22, -27, -5, -5, -20, 20, 5,
-20, 11, 83, 92, 85, 89, 69, 53, 80, 48,
-15, -2, -21, -29, -18, -48, -52, -12, -11, -21,
--6, -38, -55, -68, -9, 33, 22, 19, 25, -1,
--8, -46, -49, -67, -64, 16, 8, -6, 32, 15,
-3, -25, -46, -46, 39, 50, 34, 21, 46, 14,
-8, -33, -37, -68, -82, 31, 34, 13, 19, -6,
-33, 0, 5, -7, -32, 2, 22, -3, 35, 17,
--23, -62, -91, -64, 6, 3, 36, 26, 7, -3,
--12, -54, -60, 26, 46, 16, 30, 22, 8, -4,
--23, -61, -40, 31, 58, 73, 88, 77, 74, 41,
--2, -42, -49, 13, 5, -15, 22, -4, 26, 27,
--13, -54, -39, 18, 2, -8, -12, 34, 56, 23,
--20, -31, 27, 23, 24, 28, 39, 33, 47, 27,
-36, 17, -4, -20, -30, -61, -8, 20, 0, -15,
--10, -51, -72, -82, -111, -73, 34, 25, 19, 38,
--10, -45, -63, -55, -46, -75, -45, 34, 34, 12,
-6, -18, 29, 26, 7, -9, 0, 5, 38, 22,
--7, -52, -16, 69, 43, 26, 23, 2, 51, 34,
--12, -51, -59, -78, -88, 15, 20, 0, -14, 12,
--3, -36, -59, -45, 60, 49, 28, 20, 16, -13,
--28, -70, -90, 9, 67, 48, 90, 77, 70, 38,
--10, -39, -58, -54, 15, -12, 3, 35, 27, -3,
-12, -1, 28, 29, 55, 53, 80, 65, 51, 23,
--17, -61, -39, 74, 56, 43, 75, 51, 58, 36,
--30, -71, -93, -43, -29, -26, 4, -19, -14, 37,
-3, -13, -31, -38, 11, -5, -22, -11, 43, 14,
--25, -65, -80, -79, -71, 3, 37, 32, 20, 9,
--20, -60, -77, -26, 18, 43, 44, 24, 22, -3,
--4, -42, -22, -19, -45, -32, -35, -39, -46, 1,
--25, -59, -27, -10, -7, -4, 7, 13, 25, 12,
-8, -25, -32, -47, -74, -32, 27, 6, 25, 7,
-41, 40, 62, 64, 64, 50, 54, 42, 49, 25,
--21, -63, -88, -21, 16, -3, -4, -26, 57, 38,
-8, -25, -34, 2, -8, -28, 2, -22, 12, 23,
--19, -49, 10, 71, 84, 71, 66, 48, 42, 22,
--20, -58, -89, -57, 62, 44, 33, 36, 25, -1,
--22, -55, -27, 1, 43, 37, 46, 50, 51, 26,
-1, -38, -46, 22, 34, 4, 20, -2, 3, 9,
--4, -42, -49, -75, -89, -24, -25, 19, 71, 39,
-5, -28, -45, -43, -63, -75, -17, -38, 14, 30,
--4, -36, -62, -59, -29, -43, -4, -16, 11, 23,
--19, -57, -82, -39, 26, 2, -2, 20, 11, -10,
--28, -68, -92, -70, 9, -1, -15, -30, 11, 31,
-1, -22, -41, -49, -30, -58, -48, 8, 4, -9,
-38, 41, 108, 115, 96, 98, 103, 84, 86, 51,
-15, 1, 58, 46, 26, 6, 16, 18, 41, 24,
-4, -34, -14, -27, -42, 20, 18, 2, 23, 1,
--22, -59, -83, -70, -22, -42, -26, 29, 29, 15,
--14, -34, 11, -1, -21, -35, -3, 1, 29, 16,
--16, -57, -78, -7, 17, -13, 8, -13, -6, 22,
--22, -32, -21, -20, 20, -4, 10, 13, 12, -4,
-8, -30, -30, -46, -71, -4, 3, -11, 4, -11,
-16, 5, -15, -21, 3, -23, -25, -19, -28, -32,
--28, -68, -98, -101, -34, 19, 71, 52, 49, 30,
--18, -57, -82, -56, -56, -66, 15, 12, 1, 29,
--21, -62, -76, -27, -33, -38, 18, 30, 54, 32,
-3, -36, -10, -17, -34, -3, -8, 32, 63, 27,
-1, -30, -44, -20, -13, -49, -25, 3, -14, -18,
--26, -68, -80, -46, -28, 17, 42, 37, 58, 34,
-30, 26, 57, 55, 49, 25, 16, 3, 24, 11,
-35, 35, 67, 57, 60, 82, 114, 103, 93, 55,
-18, -8, -23, -32, -53, -68, 15, 11, -6, -7,
--2, -43, -29, 0, -28, -5, -5, -15, 25, -1,
-4, -13, -35, -45, 14, -6, -2, 19, 16, -9,
--30, -72, -93, -93, -73, -10, -15, 6, 30, 45,
--23, -58, -50, -55, -74, -60, -23, 0, 6, 21,
--4, -40, -63, -24, 7, -19, 4, -18, 27, 28,
--12, 1, 88, 76, 74, 88, 93, 90, 80, 44,
--13, -59, -43, 52, 27, 21, 15, 12, 42, 11,
-22, -14, -17, -33, -57, -4, 5, -18, 40, 18,
--3, -23, -43, -44, 8, -16, -14, -4, -20, -29,
-35, 45, 75, 82, 111, 117, 125, 105, 89, 51,
--3, -38, -57, -30, 79, 71, 48, 33, 33, 0,
--17, -62, -57, 66, 67, 35, 29, 5, 22, 17,
-3, -31, -34, -21, -44, -49, 42, 23, 24, 26,
--23, -62, -74, -49, -30, -30, -37, -50, 9, 35,
--17, -57, -71, -81, -45, 61, 58, 37, 31, 9,
-3, -7, 28, 14, -2, 0, 40, 41, 58, 33,
--11, -51, -74, -17, 40, 12, 8, 13, -4, -22,
--16, -46, -31, -35, -49, -49, -26, -9, -7, -7,
-17, -9, -24, -41, -68, -73, 38, 33, 19, 16,
--15, -50, -47, -16, -24, -21, 59, 56, 53, 30,
--14, -54, -57, 2, -17, -33, -34, -21, 4, -4,
--23, -62, -93, -72, 48, 31, 21, 6, 3, 17,
--18, -63, -79, 44, 68, 36, 45, 20, 57, 37,
--29, -72, -99, -111, -86, -31, 7, 25, 39, 55,
--14, -49, -53, -63, -80, -31, 24, 13, 1, -1,
--9, -45, -55, -27, -31, -63, -23, 25, 13, -5,
--20, -61, -80, 7, 44, 16, 54, 40, 32, 17,
-24, 7, -8, -43, -62, -54, -11, 7, 35, 27,
--12, -55, -59, -48, -69, -4, -1, -12, 68, 39,
--12, -31, 52, 63, 53, 34, 29, 22, 36, 19,
--26, -66, -97, -79, 50, 41, 40, 48, 54, 28,
--2, -37, -41, -2, -11, -30, 29, 16, 4, -2,
-40, 49, 56, 37, 39, 40, 64, 59, 67, 39,
-11, -5, 20, 14, 25, 16, 25, 22, 37, 17,
--3, -43, -46, -10, -35, -38, -35, -39, 67, 43,
--7, -47, -33, -39, -60, -12, -18, 11, 43, 11,
--25, -65, -91, -76, -91, -81, 0, 13, 34, 50,
--9, -50, -52, 17, 0, -4, 43, 18, 63, 42,
--8, -15, 15, 41, 56, 35, 51, 45, 51, 29,
-0, -14, -24, -36, -43, -70, -39, 27, 33, 5,
--25, -62, -81, -66, -12, -26, -16, -4, -13, 21,
--29, -68, -60, -24, -3, 11, 18, 19, 30, 20,
-1, -35, -42, -30, -57, -51, 13, -17, 3, 22,
--8, -27, -12, -2, -7, -21, 36, 41, 34, 12,
--17, -56, -62, -72, -73, -17, -26, 9, 16, 13,
-11, -21, -37, -3, 16, -17, 1, -3, -18, -19,
-15, -20, -19, -22, -49, -30, -7, -29, 3, -2,
-17, -4, 11, 6, 51, 40, 36, 34, 48, 22,
--19, -55, -29, 37, 68, 49, 45, 33, 42, 23,
-7, -30, -22, 3, -22, -36, -36, -54, 20, 22,
-20, 2, -15, -39, -59, -85, -10, 37, 21, 2,
--15, -54, -77, -54, 74, 70, 48, 32, 51, 20,
--25, -64, -70, -75, -52, 17, 6, -20, -30, 26,
--13, -55, -15, 39, 16, 42, 30, 33, 62, 28,
--21, -56, -30, -35, 6, 13, -4, -29, 33, 27,
--17, -55, -75, -31, 3, -28, -26, 16, 18, -4,
--13, -44, -60, -52, -9, -36, -38, 1, -9, -9,
--12, -50, -77, -70, 43, 47, 28, 13, 43, 16,
--13, -57, -80, -104, -113, -30, 43, 45, 52, 39,
-3, -28, -42, -37, -58, -67, 23, 4, 38, 33,
--21, -64, -74, -22, 43, 83, 81, 56, 62, 32,
-34, 26, 23, 9, 14, 17, 26, 16, 37, 19,
--5, -48, -49, -75, -65, 9, -6, 41, 45, 15,
-32, 30, 63, 83, 90, 91, 100, 84, 85, 52,
--19, -54, -68, -71, 11, 30, 13, 1, 63, 37,
-44, 76, 99, 87, 117, 113, 103, 77, 64, 32,
--16, -45, -12, 30, 27, 15, 57, 49, 42, 22,
-9, -15, -31, -28, -36, -61, -13, -18, -33, -5,
--12, -55, -8, 82, 64, 47, 42, 21, 27, 9,
--15, -56, -74, -12, -19, -28, 7, -16, 53, 38,
--7, -45, -64, -55, -74, -80, 35, 45, 24, 15,
--25, -48, -34, -42, -6, -27, -9, 9, 13, -7,
--25, -65, -84, -35, 30, 14, 24, 39, 48, 28,
--22, -62, -86, -51, 64, 104, 94, 61, 62, 31,
-16, -15, -25, -28, -55, -56, -10, -23, 52, 36,
-10, -10, -22, -46, -71, -92, -45, -13, 16, 26,
--22, -65, -84, 17, 85, 55, 66, 48, 55, 31,
--1, -38, -33, -25, -49, -15, 18, -10, 41, 30,
--3, -24, -47, -60, -30, -46, -17, -13, -27, 1,
--7, -41, -61, -54, -50, -78, -28, 5, -2, 20,
-17, -12, -27, -4, 8, -27, -5, 23, 14, -12,
--36, -81, -111, -75, -17, -9, 9, 9, 39, 49,
--13, -59, -54, 68, 51, 32, 35, 14, 64, 38,
--11, -44, -69, -57, 11, -11, -5, 3, -16, -15,
-34, 36, 41, 16, -8, -24, 11, 23, 48, 28,
--17, -42, 8, 17, 45, 69, 71, 55, 49, 23,
-3, -30, -46, -64, -95, -109, 2, 39, 19, 19,
-25, -13, -7, 16, -11, -5, 8, -11, 52, 33,
--8, -37, -57, -60, 13, 7, -14, -4, 20, -7,
-7, -31, 9, 44, 20, 22, 29, 10, 52, 31,
-3, -22, -36, -53, -80, -77, -35, -41, 54, 41,
--21, -59, -87, -83, 12, 69, 57, 36, 32, 2,
-6, -14, -34, -42, -4, -32, -27, 10, 4, -20,
--11, -56, -59, 25, 8, -5, -9, -26, 68, 43,
-22, 13, 40, 39, 73, 81, 95, 88, 82, 45,
--18, -62, -79, 28, 60, 28, 29, 3, 23, 25,
-6, -31, -39, -55, -85, -32, 7, -17, 48, 30,
-7, -24, -42, -8, 39, 10, 7, 11, 1, -20,
--1, -36, -26, -30, -48, 2, 46, 26, 35, 14,
--17, -57, -56, -10, -4, 26, 22, 6, -4, -16,
--18, -55, -59, -67, -86, -50, 3, 29, 29, 16,
--25, -61, -33, 2, 26, 25, 23, 10, 24, 16,
-26, 15, -8, -20, 6, -21, -16, 3, 0, -22,
-13, -17, -26, -12, -31, -48, 15, -3, 1, 14,
-4, -27, -33, -21, -29, -53, -52, -64, -42, 22,
--11, -41, -42, -40, -42, -64, 0, 48, 50, 19,
--13, -47, -42, -56, -50, 10, 3, -9, -30, -16,
--4, -47, -12, 14, -13, 21, 13, 6, 73, 40,
--15, -50, -63, -41, -31, -55, -60, -13, 28, 15,
--6, -50, -56, -81, -95, 30, 29, 21, 71, 35,
--14, -58, -65, 37, 40, 9, 18, -10, -4, 20,
-31, 33, 79, 106, 119, 103, 100, 77, 64, 33,
-14, 7, 56, 81, 97, 85, 85, 61, 45, 20,
--24, -66, -74, -51, -17, 16, 5, -21, 22, 26,
--1, -25, -38, -24, -2, -35, -26, 21, 34, 1,
-20, 15, 75, 59, 39, 26, 48, 43, 50, 29,
-26, 1, -15, -4, -9, -38, 9, 2, -9, -8,
-20, 14, 19, 13, 2, -16, 24, 25, 19, 3,
--8, -41, -58, -78, -109, -106, -27, 9, 53, 46,
-17, 5, -13, -25, -24, -54, -20, 2, -21, -25,
--11, -50, -48, 19, 10, -7, 46, 26, 24, 17,
--28, -68, -69, -50, -49, -33, -7, 10, 20, 21,
-4, -36, -21, 38, 19, 1, 25, -3, 20, 22,
--18, -58, -87, -44, 82, 73, 49, 31, 19, -7,
--21, -61, -78, -44, -58, -66, -9, -23, 10, 40,
--25, -66, -76, -33, -33, 6, 16, -6, -21, 5,
--27, -69, -77, 5, -2, -7, 6, 9, 24, 6,
-1, -41, -41, -58, -79, 25, 69, 43, 68, 36,
--28, -67, -85, -71, -34, 0, 14, 12, -2, 4,
--2, -33, -55, -37, 37, 25, 6, 6, 29, -4,
--8, -25, -11, -9, 40, 23, 17, 25, 37, 12,
--21, -27, 52, 60, 47, 58, 76, 70, 69, 38,
-23, 15, 22, -8, -32, -50, -10, 3, 31, 21,
--10, -44, -67, -61, -29, -54, 8, 39, 21, 4,
-31, 18, 30, 36, 46, 28, 50, 42, 35, 13,
--21, -57, -24, -16, -15, 14, 3, -25, -17, 20,
-23, 6, 24, 35, 90, 72, 64, 55, 55, 23,
-7, -28, -42, -19, -36, -50, -15, -40, 29, 28,
--21, -59, -66, -59, -6, 85, 83, 53, 54, 26,
-2, -20, -42, -52, -27, -49, 5, 9, -9, -8,
--18, -56, -84, -72, 24, 51, 32, 20, 13, -10,
--13, -53, -64, -39, -63, -40, 24, 0, 34, 29,
-0, -31, -45, -63, -90, -53, 3, -18, -9, 24,
--13, -57, -71, 27, 19, -3, 25, -3, 45, 35,
-12, -9, -26, -40, -51, -78, -24, 11, -9, -6,
--12, -49, -45, -33, -50, -48, -46, -52, 2, 25,
--14, -56, -84, -108, -122, -50, 4, 22, 42, 53,
--6, -44, -54, -28, -41, -61, 19, 25, 6, 1,
--32, -75, -95, -38, -1, -15, 7, 14, 23, 23,
-11, 12, 37, 30, 38, 51, 80, 80, 82, 47,
--19, -56, -69, -82, -98, -64, -29, 2, 28, 42,
--18, -49, 3, 34, 41, 39, 32, 18, 21, 7,
--8, 23, 39, 30, 30, 27, 41, 36, 44, 23,
--16, -49, -69, -46, 1, -27, 41, 48, 35, 15,
-6, -32, -36, 5, -17, -30, 2, -16, 51, 35,
--23, -64, -91, -21, 71, 44, 52, 44, 40, 21,
--22, -55, -40, -20, 62, 52, 38, 29, 27, 5,
--27, -69, -75, -6, -8, 3, -2, -30, -42, 13,
-2, -29, -42, -10, 29, 2, 15, 30, 26, 0,
--27, -69, -85, -75, -54, -8, -14, -31, 16, 42,
--2, -44, -54, -75, -101, -6, 4, -3, 32, 13,
-7, -3, -22, -43, -14, -27, -24, -11, -14, -12,
--18, -57, -85, -66, 47, 86, 75, 45, 42, 10,
-18, 3, 39, 76, 80, 48, 48, 41, 44, 21,
--13, -51, -73, -22, -15, -41, 3, -4, -22, 3,
--10, -50, -63, -9, -23, -42, -6, -30, 11, 28,
-15, -11, -29, -39, -57, -71, -23, -40, -33, 20,
--2, -40, -48, -5, -21, -25, 31, 7, 53, 35,
--19, -63, -72, 39, 34, 16, 37, 17, 54, 31,
--18, -49, -28, -27, -40, -29, 4, 4, 19, 11,
--1, -43, -41, 24, 15, -12, -4, -31, -4, 23,
--11, -46, -79, -74, 34, 21, 9, 15, 3, -13,
--16, -51, -56, -55, 8, 62, 50, 30, 43, 14,
--1, -25, -27, -32, -46, -62, -66, -36, 53, 32,
--12, -49, -77, -50, 2, -21, 23, 6, 14, 21,
--5, -47, -58, -77, -105, -14, 30, 9, 73, 44,
--24, -52, -4, 10, 13, 13, 27, 27, 42, 24,
--10, -38, -27, -15, -24, -52, -53, 1, 14, -6,
--17, -45, -13, 2, 19, 53, 83, 79, 76, 43,
--21, -62, -86, -48, 40, 17, 14, -9, 40, 30,
--1, -32, -51, -33, -3, -35, 2, 17, -2, -12,
--21, -60, -85, -70, 33, 73, 58, 37, 67, 36,
--1, -45, -39, 37, 17, 3, 18, -8, 53, 35,
--8, -47, -65, -61, -87, -93, 9, 9, 2, 33,
--13, -55, -56, -19, -29, 14, 17, 6, 55, 28,
-5, 1, -7, -23, -26, -56, -39, 14, 11, -13,
--28, -69, -89, -74, -83, -45, 1, 0, 16, 45,
--3, 5, 91, 104, 119, 111, 97, 76, 72, 39,
-19, 5, -12, -34, -41, -72, -67, 14, 21, 1,
--17, -49, 15, 27, 13, 6, 2, 12, 27, 10,
--10, -30, 18, 36, 93, 87, 87, 69, 58, 26,
-37, 32, 64, 54, 53, 67, 78, 73, 80, 48,
-48, 46, 38, 9, -1, 8, 47, 44, 58, 33,
--23, -61, -88, -76, 27, 14, 9, 36, 36, 10,
--24, -66, -88, -97, -55, 20, 19, 16, 52, 31,
-4, -16, -1, -8, 2, 0, 15, 13, 29, 14,
--9, -44, -66, -72, 8, 32, 37, 38, 46, 16,
--22, -65, -62, 30, 22, 51, 57, 45, 68, 38,
--4, -42, -53, -33, -54, -53, -4, -18, 62, 40,
--5, -37, -61, -41, 35, 15, -2, -3, -12, -28,
--18, -65, -55, 90, 80, 49, 44, 21, 59, 36,
-5, -16, -31, -32, -37, -62, -19, -11, 9, 16,
--22, -60, -67, -51, -61, -35, -5, -18, -27, 24,
--18, -55, -39, -42, -40, 20, 25, 6, 6, 7,
-0, -25, -42, -50, -59, -84, -31, -13, -22, 17,
--32, -73, -100, -89, -21, -10, 18, 38, 31, 23,
--15, -54, -57, -13, -18, -41, -32, 17, 50, 21,
--16, -57, -71, -10, -8, -26, -38, -47, 42, 25,
--17, -58, -82, -7, 33, 3, 30, 11, 13, 24,
--23, -61, -97, -83, 82, 81, 57, 39, 31, 2,
-26, 32, 104, 86, 62, 55, 77, 70, 74, 43,
--8, -29, -33, -52, -74, -73, -17, 14, 39, 25,
--21, -60, -68, -22, 43, 37, 51, 54, 64, 36,
--5, -30, -50, -52, 22, 7, 10, 13, 0, -20,
--15, -53, -61, -34, -50, -25, 15, 6, 0, -14,
--10, -51, -60, 20, 77, 50, 34, 22, 8, -8,
--8, -45, -52, -59, -76, -35, -43, -49, 47, 40,
-41, 44, 53, 40, 41, 30, 38, 31, 46, 24,
-19, 3, -15, -26, -16, -45, -13, 24, 18, -5,
--3, -39, -54, -35, -49, -70, 2, -6, -19, 15,
--13, -53, -36, 6, -3, 45, 50, 30, 33, 10,
-15, -25, -16, -4, -32, 7, 23, 6, 67, 36,
--21, -58, -87, -71, 10, -12, -16, 19, 10, 0,
-9, -15, -6, 25, 31, 7, 30, 28, 20, 2,
-2, -28, -42, -50, -67, -75, 12, 12, -4, 8,
--17, -63, -58, 56, 49, 36, 60, 38, 37, 14,
--13, -48, -38, -29, -44, -25, -20, -33, 38, 20,
-2, -37, -42, -1, -18, -42, 3, -17, -19, 12,
--20, -60, -73, -7, 12, -13, -22, -38, 4, 10,
--8, -41, -63, -65, 42, 63, 45, 31, 31, 0,
--4, -46, -38, -9, -35, 15, 50, 27, 67, 39,
-3, -7, -13, -34, -51, -47, 9, 39, 54, 29,
--29, -71, -89, -52, -39, -6, 3, 2, 38, 28,
--14, -42, -13, -15, -19, 0, 20, 12, 37, 25,
-11, -26, -24, -40, -65, -11, -13, -27, 65, 37,
-0, -31, -46, -17, -21, -45, 11, -2, 25, 24,
-51, 91, 102, 87, 85, 63, 57, 42, 48, 23,
--4, -34, -56, -70, -10, -14, 4, 18, 3, -8,
--23, -59, -39, -44, -42, -14, -10, -23, -4, 17,
--2, 4, 35, 63, 69, 75, 82, 63, 78, 48,
--17, -55, -60, -3, -4, -19, 4, -4, -18, -29,
-2, -20, -36, -50, -32, -59, -16, 30, 16, -6,
--12, -47, 24, 68, 45, 46, 41, 32, 65, 37,
--4, -40, -54, -67, -96, -66, -9, -25, 42, 38,
--15, 13, 58, 58, 84, 104, 119, 104, 89, 51,
--15, -24, -9, -24, -27, -50, -7, 28, 29, 6,
--7, -33, -35, -49, -65, -53, -37, -10, 33, 14,
-31, 19, 46, 72, 67, 45, 83, 68, 63, 41,
--14, -53, -59, -17, 55, 79, 64, 39, 43, 10,
-};
-
-const signed char cdbk_lsp2_vlbr[160]={
--20, -30, -24, 17, 7, -13, -21, 61, 56, 16,
-12, 1, 10, 77, 32, 3, 7, 3, -25, -31,
--4, 2, -36, -83, 18, 5, -5, 5, 11, 23,
--2, -1, -11, -12, -20, -28, 68, 50, -17, -20,
-5, 2, 1, 20, 17, 4, -52, -66, 36, 24,
--4, -10, 7, -15, -32, 80, 37, 8, -13, -29,
-33, 37, 28, 15, 8, 14, 35, 18, 50, 36,
--4, -1, 4, -7, 3, 3, -11, -58, -75, 13,
-13, 21, 24, -11, -12, -38, -72, 33, 15, -12,
--44, -17, 83, 21, 2, 7, 0, 4, 0, -1,
--25, -42, -51, 33, 20, 15, 30, -13, 9, 32,
-6, 2, -8, 7, -38, -77, 6, -13, -7, 32,
-48, 57, 32, -12, -10, -4, 2, -15, -29, -29,
-2, 10, -9, -16, 79, 44, 7, 12, -5, -18,
--23, -29, -35, -3, -3, -18, -34, -3, -39, -50,
--5, -10, -8, -37, -76, 11, -4, -19, 30, 16,
-};
-
-#endif
diff --git a/3rdparty/speex/libspeex/lpc.c b/3rdparty/speex/libspeex/lpc.c
deleted file mode 100644
index fd5d3821..00000000
--- a/3rdparty/speex/libspeex/lpc.c
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann,
- Technische Universitaet Berlin
-
- Any use of this software is permitted provided that this notice is not
- removed and that neither the authors nor the Technische Universitaet 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
-
-
- Code modified by Jean-Marc Valin
-
- Speex License:
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "lpc.h"
-
-#ifdef BFIN_ASM
-#include "lpc_bfin.h"
-#endif
-
-/* LPC analysis
- *
- * The next two functions calculate linear prediction coefficients
- * and/or the related reflection coefficients from the first P_MAX+1
- * values of the autocorrelation function.
- */
-
-/* Invented by N. Levinson in 1947, modified by J. Durbin in 1959.
- */
-
-/* returns minimum mean square error */
-spx_word32_t _spx_lpc(
-spx_coef_t *lpc, /* out: [0...p-1] LPC coefficients */
-const spx_word16_t *ac, /* in: [0...p] autocorrelation values */
-int p
-)
-{
- int i, j;
- spx_word16_t r;
- spx_word16_t error = ac[0];
-
- if (ac[0] == 0)
- {
- for (i = 0; i < p; i++)
- lpc[i] = 0;
- return 0;
- }
-
- for (i = 0; i < p; i++) {
-
- /* Sum up this iteration's reflection coefficient */
- spx_word32_t rr = NEG32(SHL32(EXTEND32(ac[i + 1]),13));
- for (j = 0; j < i; j++)
- rr = SUB32(rr,MULT16_16(lpc[j],ac[i - j]));
-#ifdef FIXED_POINT
- r = DIV32_16(rr+PSHR32(error,1),ADD16(error,8));
-#else
- r = rr/(error+.003*ac[0]);
-#endif
- /* Update LPC coefficients and total error */
- lpc[i] = r;
- for (j = 0; j < i>>1; j++)
- {
- spx_word16_t tmp = lpc[j];
- lpc[j] = MAC16_16_P13(lpc[j],r,lpc[i-1-j]);
- lpc[i-1-j] = MAC16_16_P13(lpc[i-1-j],r,tmp);
- }
- if (i & 1)
- lpc[j] = MAC16_16_P13(lpc[j],lpc[j],r);
-
- error = SUB16(error,MULT16_16_Q13(r,MULT16_16_Q13(error,r)));
- }
- return error;
-}
-
-
-#ifdef FIXED_POINT
-
-/* Compute the autocorrelation
- * ,--,
- * ac(i) = > x(n) * x(n-i) for all n
- * `--'
- * for lags between 0 and lag-1, and x == 0 outside 0...n-1
- */
-
-#ifndef OVERRIDE_SPEEX_AUTOCORR
-void _spx_autocorr(
-const spx_word16_t *x, /* in: [0...n-1] samples x */
-spx_word16_t *ac, /* out: [0...lag-1] ac values */
-int lag,
-int n
-)
-{
- spx_word32_t d;
- int i, j;
- spx_word32_t ac0=1;
- int shift, ac_shift;
-
- for (j=0;j<n;j++)
- ac0 = ADD32(ac0,SHR32(MULT16_16(x[j],x[j]),8));
- ac0 = ADD32(ac0,n);
- shift = 8;
- while (shift && ac0<0x40000000)
- {
- shift--;
- ac0 <<= 1;
- }
- ac_shift = 18;
- while (ac_shift && ac0<0x40000000)
- {
- ac_shift--;
- ac0 <<= 1;
- }
-
-
- for (i=0;i<lag;i++)
- {
- d=0;
- for (j=i;j<n;j++)
- {
- d = ADD32(d,SHR32(MULT16_16(x[j],x[j-i]), shift));
- }
-
- ac[i] = SHR32(d, ac_shift);
- }
-}
-#endif
-
-
-#else
-
-
-
-/* Compute the autocorrelation
- * ,--,
- * ac(i) = > x(n) * x(n-i) for all n
- * `--'
- * for lags between 0 and lag-1, and x == 0 outside 0...n-1
- */
-void _spx_autocorr(
-const spx_word16_t *x, /* in: [0...n-1] samples x */
-float *ac, /* out: [0...lag-1] ac values */
-int lag,
-int n
-)
-{
- float d;
- int i;
- while (lag--)
- {
- for (i = lag, d = 0; i < n; i++)
- d += x[i] * x[i-lag];
- ac[lag] = d;
- }
- ac[0] += 10;
-}
-
-#endif
-
-
diff --git a/3rdparty/speex/libspeex/lpc.h b/3rdparty/speex/libspeex/lpc.h
deleted file mode 100644
index d64df967..00000000
--- a/3rdparty/speex/libspeex/lpc.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin */
-/**
- @file lpc.h
- @brief Functions for LPC (Linear Prediction Coefficients) analysis
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef LPC_H
-#define LPC_H
-
-#include "misc.h"
-
-void _spx_autocorr(
- const spx_word16_t * x, /* in: [0...n-1] samples x */
- spx_word16_t *ac, /* out: [0...lag-1] ac values */
- int lag, int n);
-
-spx_word32_t /* returns minimum mean square error */
-_spx_lpc(
- spx_coef_t * lpc, /* [0...p-1] LPC coefficients */
- const spx_word16_t * ac, /* in: [0...p] autocorrelation values */
- int p
- );
-
-
-#endif
diff --git a/3rdparty/speex/libspeex/lpc_bfin.h b/3rdparty/speex/libspeex/lpc_bfin.h
deleted file mode 100644
index 7310ffba..00000000
--- a/3rdparty/speex/libspeex/lpc_bfin.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/* Copyright (C) 2005 Analog Devices */
-/**
- @file lpc_bfin.h
- @author Jean-Marc Valin
- @brief Functions for LPC (Linear Prediction Coefficients) analysis (Blackfin version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#define OVERRIDE_SPEEX_AUTOCORR
-void _spx_autocorr(
-const spx_word16_t *x, /* in: [0...n-1] samples x */
-spx_word16_t *ac, /* out: [0...lag-1] ac values */
-int lag,
-int n
- )
-{
- spx_word32_t d;
- const spx_word16_t *xs;
- int i, j;
- spx_word32_t ac0=1;
- spx_word32_t ac32[11], *ac32top;
- int shift, ac_shift;
- ac32top = ac32+lag-1;
- int lag_1, N_lag;
- int nshift;
- lag_1 = lag-1;
- N_lag = n-lag_1;
- for (j=0;j<n;j++)
- ac0 = ADD32(ac0,SHR32(MULT16_16(x[j],x[j]),8));
- ac0 = ADD32(ac0,n);
- shift = 8;
- while (shift && ac0<0x40000000)
- {
- shift--;
- ac0 <<= 1;
- }
- ac_shift = 18;
- while (ac_shift && ac0<0x40000000)
- {
- ac_shift--;
- ac0 <<= 1;
- }
-
- xs = x+lag-1;
- nshift = -shift;
- __asm__ __volatile__
- (
- "P2 = %0;\n\t"
- "I0 = P2;\n\t" /* x in I0 */
- "B0 = P2;\n\t" /* x in B0 */
- "R0 = %3;\n\t" /* len in R0 */
- "P3 = %3;\n\t" /* len in R0 */
- "P4 = %4;\n\t" /* nb_pitch in R0 */
- "R1 = R0 << 1;\n\t" /* number of bytes in x */
- "L0 = R1;\n\t"
- "P0 = %1;\n\t"
- "P1 = %2;\n\t"
- "B1 = P1;\n\t"
- "R4 = %5;\n\t"
- "L1 = 0;\n\t" /*Disable looping on I1*/
-
- "r0 = [I0++];\n\t"
- "R2 = 0;R3=0;"
- "LOOP pitch%= LC0 = P4 >> 1;\n\t"
- "LOOP_BEGIN pitch%=;\n\t"
- "I1 = P0;\n\t"
- "A1 = A0 = 0;\n\t"
- "R1 = [I1++];\n\t"
- "LOOP inner_prod%= LC1 = P3 >> 1;\n\t"
- "LOOP_BEGIN inner_prod%=;\n\t"
- "A1 += R0.L*R1.H, A0 += R0.L*R1.L (IS) || R1.L = W[I1++];\n\t"
- "A1 += R0.H*R1.L, A0 += R0.H*R1.H (IS) || R1.H = W[I1++] || R0 = [I0++];\n\t"
- "LOOP_END inner_prod%=;\n\t"
- "A0 = ASHIFT A0 by R4.L;\n\t"
- "A1 = ASHIFT A1 by R4.L;\n\t"
-
- "R2 = A0, R3 = A1;\n\t"
- "[P1--] = R2;\n\t"
- "[P1--] = R3;\n\t"
- "P0 += 4;\n\t"
- "LOOP_END pitch%=;\n\t"
- : : "m" (xs), "m" (x), "m" (ac32top), "m" (N_lag), "m" (lag_1), "m" (nshift)
- : "A0", "A1", "P0", "P1", "P2", "P3", "P4", "R0", "R1", "R2", "R3", "R4", "I0", "I1", "L0", "L1", "B0", "B1", "memory"
- );
- d=0;
- for (j=0;j<n;j++)
- {
- d = ADD32(d,SHR32(MULT16_16(x[j],x[j]), shift));
- }
- ac32[0] = d;
-
- for (i=0;i<lag;i++)
- {
- d=0;
- for (j=i;j<lag_1;j++)
- {
- d = ADD32(d,SHR32(MULT16_16(x[j],x[j-i]), shift));
- }
- if (i)
- ac32[i] += d;
- ac[i] = SHR32(ac32[i], ac_shift);
- }
-}
-
diff --git a/3rdparty/speex/libspeex/lsp.c b/3rdparty/speex/libspeex/lsp.c
deleted file mode 100644
index a73d8835..00000000
--- a/3rdparty/speex/libspeex/lsp.c
+++ /dev/null
@@ -1,656 +0,0 @@
-/*---------------------------------------------------------------------------*\
-Original copyright
- FILE........: lsp.c
- AUTHOR......: David Rowe
- DATE CREATED: 24/2/93
-
-Heavily modified by Jean-Marc Valin (c) 2002-2006 (fixed-point,
- optimizations, additional functions, ...)
-
- This file contains functions for converting Linear Prediction
- Coefficients (LPC) to Line Spectral Pair (LSP) and back. Note that the
- LSP coefficients are not in radians format but in the x domain of the
- unit circle.
-
- Speex License:
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*---------------------------------------------------------------------------*\
-
- Introduction to Line Spectrum Pairs (LSPs)
- ------------------------------------------
-
- LSPs are used to encode the LPC filter coefficients {ak} for
- transmission over the channel. LSPs have several properties (like
- less sensitivity to quantisation noise) that make them superior to
- direct quantisation of {ak}.
-
- A(z) is a polynomial of order lpcrdr with {ak} as the coefficients.
-
- A(z) is transformed to P(z) and Q(z) (using a substitution and some
- algebra), to obtain something like:
-
- A(z) = 0.5[P(z)(z+z^-1) + Q(z)(z-z^-1)] (1)
-
- As you can imagine A(z) has complex zeros all over the z-plane. P(z)
- and Q(z) have the very neat property of only having zeros _on_ the
- unit circle. So to find them we take a test point z=exp(jw) and
- evaluate P (exp(jw)) and Q(exp(jw)) using a grid of points between 0
- and pi.
-
- The zeros (roots) of P(z) also happen to alternate, which is why we
- swap coefficients as we find roots. So the process of finding the
- LSP frequencies is basically finding the roots of 5th order
- polynomials.
-
- The root so P(z) and Q(z) occur in symmetrical pairs at +/-w, hence
- the name Line Spectrum Pairs (LSPs).
-
- To convert back to ak we just evaluate (1), "clocking" an impulse
- thru it lpcrdr times gives us the impulse response of A(z) which is
- {ak}.
-
-\*---------------------------------------------------------------------------*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <math.h>
-#include "lsp.h"
-#include "stack_alloc.h"
-#include "math_approx.h"
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846 /* pi */
-#endif
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-#ifdef FIXED_POINT
-
-#define FREQ_SCALE 16384
-
-/*#define ANGLE2X(a) (32768*cos(((a)/8192.)))*/
-#define ANGLE2X(a) (SHL16(spx_cos(a),2))
-
-/*#define X2ANGLE(x) (acos(.00006103515625*(x))*LSP_SCALING)*/
-#define X2ANGLE(x) (spx_acos(x))
-
-#ifdef BFIN_ASM
-#include "lsp_bfin.h"
-#endif
-
-#else
-
-/*#define C1 0.99940307
-#define C2 -0.49558072
-#define C3 0.03679168*/
-
-#define FREQ_SCALE 1.
-#define ANGLE2X(a) (spx_cos(a))
-#define X2ANGLE(x) (acos(x))
-
-#endif
-
-
-/*---------------------------------------------------------------------------*\
-
- FUNCTION....: cheb_poly_eva()
-
- AUTHOR......: David Rowe
- DATE CREATED: 24/2/93
-
- This function evaluates a series of Chebyshev polynomials
-
-\*---------------------------------------------------------------------------*/
-
-#ifdef FIXED_POINT
-
-#ifndef OVERRIDE_CHEB_POLY_EVA
-static inline spx_word32_t cheb_poly_eva(
- spx_word16_t *coef, /* P or Q coefs in Q13 format */
- spx_word16_t x, /* cos of freq (-1.0 to 1.0) in Q14 format */
- int m, /* LPC order/2 */
- char *stack
-)
-{
- int i;
- spx_word16_t b0, b1;
- spx_word32_t sum;
-
- /*Prevents overflows*/
- if (x>16383)
- x = 16383;
- if (x<-16383)
- x = -16383;
-
- /* Initialise values */
- b1=16384;
- b0=x;
-
- /* Evaluate Chebyshev series formulation usin g iterative approach */
- sum = ADD32(EXTEND32(coef[m]), EXTEND32(MULT16_16_P14(coef[m-1],x)));
- for(i=2;i<=m;i++)
- {
- spx_word16_t tmp=b0;
- b0 = SUB16(MULT16_16_Q13(x,b0), b1);
- b1 = tmp;
- sum = ADD32(sum, EXTEND32(MULT16_16_P14(coef[m-i],b0)));
- }
-
- return sum;
-}
-#endif
-
-#else
-
-static float cheb_poly_eva(spx_word32_t *coef, spx_word16_t x, int m, char *stack)
-{
- int k;
- float b0, b1, tmp;
-
- /* Initial conditions */
- b0=0; /* b_(m+1) */
- b1=0; /* b_(m+2) */
-
- x*=2;
-
- /* Calculate the b_(k) */
- for(k=m;k>0;k--)
- {
- tmp=b0; /* tmp holds the previous value of b0 */
- b0=x*b0-b1+coef[m-k]; /* b0 holds its new value based on b0 and b1 */
- b1=tmp; /* b1 holds the previous value of b0 */
- }
-
- return(-b1+.5*x*b0+coef[m]);
-}
-#endif
-
-/*---------------------------------------------------------------------------*\
-
- FUNCTION....: lpc_to_lsp()
-
- AUTHOR......: David Rowe
- DATE CREATED: 24/2/93
-
- This function converts LPC coefficients to LSP
- coefficients.
-
-\*---------------------------------------------------------------------------*/
-
-#ifdef FIXED_POINT
-#define SIGN_CHANGE(a,b) (((a)&0x70000000)^((b)&0x70000000)||(b==0))
-#else
-#define SIGN_CHANGE(a,b) (((a)*(b))<0.0)
-#endif
-
-
-int lpc_to_lsp (spx_coef_t *a,int lpcrdr,spx_lsp_t *freq,int nb,spx_word16_t delta, char *stack)
-/* float *a lpc coefficients */
-/* int lpcrdr order of LPC coefficients (10) */
-/* float *freq LSP frequencies in the x domain */
-/* int nb number of sub-intervals (4) */
-/* float delta grid spacing interval (0.02) */
-
-
-{
- spx_word16_t temp_xr,xl,xr,xm=0;
- spx_word32_t psuml,psumr,psumm,temp_psumr/*,temp_qsumr*/;
- int i,j,m,flag,k;
- VARDECL(spx_word32_t *Q); /* ptrs for memory allocation */
- VARDECL(spx_word32_t *P);
- VARDECL(spx_word16_t *Q16); /* ptrs for memory allocation */
- VARDECL(spx_word16_t *P16);
- spx_word32_t *px; /* ptrs of respective P'(z) & Q'(z) */
- spx_word32_t *qx;
- spx_word32_t *p;
- spx_word32_t *q;
- spx_word16_t *pt; /* ptr used for cheb_poly_eval()
- whether P' or Q' */
- int roots=0; /* DR 8/2/94: number of roots found */
- flag = 1; /* program is searching for a root when,
- 1 else has found one */
- m = lpcrdr/2; /* order of P'(z) & Q'(z) polynomials */
-
- /* Allocate memory space for polynomials */
- ALLOC(Q, (m+1), spx_word32_t);
- ALLOC(P, (m+1), spx_word32_t);
-
- /* determine P'(z)'s and Q'(z)'s coefficients where
- P'(z) = P(z)/(1 + z^(-1)) and Q'(z) = Q(z)/(1-z^(-1)) */
-
- px = P; /* initialise ptrs */
- qx = Q;
- p = px;
- q = qx;
-
-#ifdef FIXED_POINT
- *px++ = LPC_SCALING;
- *qx++ = LPC_SCALING;
- for(i=0;i<m;i++){
- *px++ = SUB32(ADD32(EXTEND32(a[i]),EXTEND32(a[lpcrdr-i-1])), *p++);
- *qx++ = ADD32(SUB32(EXTEND32(a[i]),EXTEND32(a[lpcrdr-i-1])), *q++);
- }
- px = P;
- qx = Q;
- for(i=0;i<m;i++)
- {
- /*if (fabs(*px)>=32768)
- speex_warning_int("px", *px);
- if (fabs(*qx)>=32768)
- speex_warning_int("qx", *qx);*/
- *px = PSHR32(*px,2);
- *qx = PSHR32(*qx,2);
- px++;
- qx++;
- }
- /* The reason for this lies in the way cheb_poly_eva() is implemented for fixed-point */
- P[m] = PSHR32(P[m],3);
- Q[m] = PSHR32(Q[m],3);
-#else
- *px++ = LPC_SCALING;
- *qx++ = LPC_SCALING;
- for(i=0;i<m;i++){
- *px++ = (a[i]+a[lpcrdr-1-i]) - *p++;
- *qx++ = (a[i]-a[lpcrdr-1-i]) + *q++;
- }
- px = P;
- qx = Q;
- for(i=0;i<m;i++){
- *px = 2**px;
- *qx = 2**qx;
- px++;
- qx++;
- }
-#endif
-
- px = P; /* re-initialise ptrs */
- qx = Q;
-
- /* now that we have computed P and Q convert to 16 bits to
- speed up cheb_poly_eval */
-
- ALLOC(P16, m+1, spx_word16_t);
- ALLOC(Q16, m+1, spx_word16_t);
-
- for (i=0;i<m+1;i++)
- {
- P16[i] = P[i];
- Q16[i] = Q[i];
- }
-
- /* Search for a zero in P'(z) polynomial first and then alternate to Q'(z).
- Keep alternating between the two polynomials as each zero is found */
-
- xr = 0; /* initialise xr to zero */
- xl = FREQ_SCALE; /* start at point xl = 1 */
-
- for(j=0;j<lpcrdr;j++){
- if(j&1) /* determines whether P' or Q' is eval. */
- pt = Q16;
- else
- pt = P16;
-
- psuml = cheb_poly_eva(pt,xl,m,stack); /* evals poly. at xl */
- flag = 1;
- while(flag && (xr >= -FREQ_SCALE)){
- spx_word16_t dd;
- /* Modified by JMV to provide smaller steps around x=+-1 */
-#ifdef FIXED_POINT
- dd = MULT16_16_Q15(delta,SUB16(FREQ_SCALE, MULT16_16_Q14(MULT16_16_Q14(xl,xl),14000)));
- if (psuml<512 && psuml>-512)
- dd = PSHR16(dd,1);
-#else
- dd=delta*(1-.9*xl*xl);
- if (fabs(psuml)<.2)
- dd *= .5;
-#endif
- xr = SUB16(xl, dd); /* interval spacing */
- psumr = cheb_poly_eva(pt,xr,m,stack);/* poly(xl-delta_x) */
- temp_psumr = psumr;
- temp_xr = xr;
-
- /* if no sign change increment xr and re-evaluate poly(xr). Repeat til
- sign change.
- if a sign change has occurred the interval is bisected and then
- checked again for a sign change which determines in which
- interval the zero lies in.
- If there is no sign change between poly(xm) and poly(xl) set interval
- between xm and xr else set interval between xl and xr and repeat till
- root is located within the specified limits */
-
- if(SIGN_CHANGE(psumr,psuml))
- {
- roots++;
-
- psumm=psuml;
- for(k=0;k<=nb;k++){
-#ifdef FIXED_POINT
- xm = ADD16(PSHR16(xl,1),PSHR16(xr,1)); /* bisect the interval */
-#else
- xm = .5*(xl+xr); /* bisect the interval */
-#endif
- psumm=cheb_poly_eva(pt,xm,m,stack);
- /*if(psumm*psuml>0.)*/
- if(!SIGN_CHANGE(psumm,psuml))
- {
- psuml=psumm;
- xl=xm;
- } else {
- psumr=psumm;
- xr=xm;
- }
- }
-
- /* once zero is found, reset initial interval to xr */
- freq[j] = X2ANGLE(xm);
- xl = xm;
- flag = 0; /* reset flag for next search */
- }
- else{
- psuml=temp_psumr;
- xl=temp_xr;
- }
- }
- }
- return(roots);
-}
-
-/*---------------------------------------------------------------------------*\
-
- FUNCTION....: lsp_to_lpc()
-
- AUTHOR......: David Rowe
- DATE CREATED: 24/2/93
-
- Converts LSP coefficients to LPC coefficients.
-
-\*---------------------------------------------------------------------------*/
-
-#ifdef FIXED_POINT
-
-void lsp_to_lpc(spx_lsp_t *freq,spx_coef_t *ak,int lpcrdr, char *stack)
-/* float *freq array of LSP frequencies in the x domain */
-/* float *ak array of LPC coefficients */
-/* int lpcrdr order of LPC coefficients */
-{
- int i,j;
- spx_word32_t xout1,xout2,xin;
- spx_word32_t mult, a;
- VARDECL(spx_word16_t *freqn);
- VARDECL(spx_word32_t **xp);
- VARDECL(spx_word32_t *xpmem);
- VARDECL(spx_word32_t **xq);
- VARDECL(spx_word32_t *xqmem);
- int m = lpcrdr>>1;
-
- /*
-
- Reconstruct P(z) and Q(z) by cascading second order polynomials
- in form 1 - 2cos(w)z(-1) + z(-2), where w is the LSP frequency.
- In the time domain this is:
-
- y(n) = x(n) - 2cos(w)x(n-1) + x(n-2)
-
- This is what the ALLOCS below are trying to do:
-
- int xp[m+1][lpcrdr+1+2]; // P matrix in QIMP
- int xq[m+1][lpcrdr+1+2]; // Q matrix in QIMP
-
- These matrices store the output of each stage on each row. The
- final (m-th) row has the output of the final (m-th) cascaded
- 2nd order filter. The first row is the impulse input to the
- system (not written as it is known).
-
- The version below takes advantage of the fact that a lot of the
- outputs are zero or known, for example if we put an inpulse
- into the first section the "clock" it 10 times only the first 3
- outputs samples are non-zero (it's an FIR filter).
- */
-
- ALLOC(xp, (m+1), spx_word32_t*);
- ALLOC(xpmem, (m+1)*(lpcrdr+1+2), spx_word32_t);
-
- ALLOC(xq, (m+1), spx_word32_t*);
- ALLOC(xqmem, (m+1)*(lpcrdr+1+2), spx_word32_t);
-
- for(i=0; i<=m; i++) {
- xp[i] = xpmem + i*(lpcrdr+1+2);
- xq[i] = xqmem + i*(lpcrdr+1+2);
- }
-
- /* work out 2cos terms in Q14 */
-
- ALLOC(freqn, lpcrdr, spx_word16_t);
- for (i=0;i<lpcrdr;i++)
- freqn[i] = ANGLE2X(freq[i]);
-
- #define QIMP 21 /* scaling for impulse */
-
- xin = SHL32(EXTEND32(1), (QIMP-1)); /* 0.5 in QIMP format */
-
- /* first col and last non-zero values of each row are trivial */
-
- for(i=0;i<=m;i++) {
- xp[i][1] = 0;
- xp[i][2] = xin;
- xp[i][2+2*i] = xin;
- xq[i][1] = 0;
- xq[i][2] = xin;
- xq[i][2+2*i] = xin;
- }
-
- /* 2nd row (first output row) is trivial */
-
- xp[1][3] = -MULT16_32_Q14(freqn[0],xp[0][2]);
- xq[1][3] = -MULT16_32_Q14(freqn[1],xq[0][2]);
-
- xout1 = xout2 = 0;
-
- /* now generate remaining rows */
-
- for(i=1;i<m;i++) {
-
- for(j=1;j<2*(i+1)-1;j++) {
- mult = MULT16_32_Q14(freqn[2*i],xp[i][j+1]);
- xp[i+1][j+2] = ADD32(SUB32(xp[i][j+2], mult), xp[i][j]);
- mult = MULT16_32_Q14(freqn[2*i+1],xq[i][j+1]);
- xq[i+1][j+2] = ADD32(SUB32(xq[i][j+2], mult), xq[i][j]);
- }
-
- /* for last col xp[i][j+2] = xq[i][j+2] = 0 */
-
- mult = MULT16_32_Q14(freqn[2*i],xp[i][j+1]);
- xp[i+1][j+2] = SUB32(xp[i][j], mult);
- mult = MULT16_32_Q14(freqn[2*i+1],xq[i][j+1]);
- xq[i+1][j+2] = SUB32(xq[i][j], mult);
- }
-
- /* process last row to extra a{k} */
-
- for(j=1;j<=lpcrdr;j++) {
- int shift = QIMP-13;
-
- /* final filter sections */
- a = PSHR32(xp[m][j+2] + xout1 + xq[m][j+2] - xout2, shift);
- xout1 = xp[m][j+2];
- xout2 = xq[m][j+2];
-
- /* hard limit ak's to +/- 32767 */
-
- if (a < -32767) a = -32767;
- if (a > 32767) a = 32767;
- ak[j-1] = (short)a;
-
- }
-
-}
-
-#else
-
-void lsp_to_lpc(spx_lsp_t *freq,spx_coef_t *ak,int lpcrdr, char *stack)
-/* float *freq array of LSP frequencies in the x domain */
-/* float *ak array of LPC coefficients */
-/* int lpcrdr order of LPC coefficients */
-
-
-{
- int i,j;
- float xout1,xout2,xin1,xin2;
- VARDECL(float *Wp);
- float *pw,*n1,*n2,*n3,*n4=NULL;
- VARDECL(float *x_freq);
- int m = lpcrdr>>1;
-
- ALLOC(Wp, 4*m+2, float);
- pw = Wp;
-
- /* initialise contents of array */
-
- for(i=0;i<=4*m+1;i++){ /* set contents of buffer to 0 */
- *pw++ = 0.0;
- }
-
- /* Set pointers up */
-
- pw = Wp;
- xin1 = 1.0;
- xin2 = 1.0;
-
- ALLOC(x_freq, lpcrdr, float);
- for (i=0;i<lpcrdr;i++)
- x_freq[i] = ANGLE2X(freq[i]);
-
- /* reconstruct P(z) and Q(z) by cascading second order
- polynomials in form 1 - 2xz(-1) +z(-2), where x is the
- LSP coefficient */
-
- for(j=0;j<=lpcrdr;j++){
- int i2=0;
- for(i=0;i<m;i++,i2+=2){
- n1 = pw+(i*4);
- n2 = n1 + 1;
- n3 = n2 + 1;
- n4 = n3 + 1;
- xout1 = xin1 - 2.f*x_freq[i2] * *n1 + *n2;
- xout2 = xin2 - 2.f*x_freq[i2+1] * *n3 + *n4;
- *n2 = *n1;
- *n4 = *n3;
- *n1 = xin1;
- *n3 = xin2;
- xin1 = xout1;
- xin2 = xout2;
- }
- xout1 = xin1 + *(n4+1);
- xout2 = xin2 - *(n4+2);
- if (j>0)
- ak[j-1] = (xout1 + xout2)*0.5f;
- *(n4+1) = xin1;
- *(n4+2) = xin2;
-
- xin1 = 0.0;
- xin2 = 0.0;
- }
-
-}
-#endif
-
-
-#ifdef FIXED_POINT
-
-/*Makes sure the LSPs are stable*/
-void lsp_enforce_margin(spx_lsp_t *lsp, int len, spx_word16_t margin)
-{
- int i;
- spx_word16_t m = margin;
- spx_word16_t m2 = 25736-margin;
-
- if (lsp[0]<m)
- lsp[0]=m;
- if (lsp[len-1]>m2)
- lsp[len-1]=m2;
- for (i=1;i<len-1;i++)
- {
- if (lsp[i]<lsp[i-1]+m)
- lsp[i]=lsp[i-1]+m;
-
- if (lsp[i]>lsp[i+1]-m)
- lsp[i]= SHR16(lsp[i],1) + SHR16(lsp[i+1]-m,1);
- }
-}
-
-
-void lsp_interpolate(spx_lsp_t *old_lsp, spx_lsp_t *new_lsp, spx_lsp_t *interp_lsp, int len, int subframe, int nb_subframes)
-{
- int i;
- spx_word16_t tmp = DIV32_16(SHL32(EXTEND32(1 + subframe),14),nb_subframes);
- spx_word16_t tmp2 = 16384-tmp;
- for (i=0;i<len;i++)
- {
- interp_lsp[i] = MULT16_16_P14(tmp2,old_lsp[i]) + MULT16_16_P14(tmp,new_lsp[i]);
- }
-}
-
-#else
-
-/*Makes sure the LSPs are stable*/
-void lsp_enforce_margin(spx_lsp_t *lsp, int len, spx_word16_t margin)
-{
- int i;
- if (lsp[0]<LSP_SCALING*margin)
- lsp[0]=LSP_SCALING*margin;
- if (lsp[len-1]>LSP_SCALING*(M_PI-margin))
- lsp[len-1]=LSP_SCALING*(M_PI-margin);
- for (i=1;i<len-1;i++)
- {
- if (lsp[i]<lsp[i-1]+LSP_SCALING*margin)
- lsp[i]=lsp[i-1]+LSP_SCALING*margin;
-
- if (lsp[i]>lsp[i+1]-LSP_SCALING*margin)
- lsp[i]= .5f* (lsp[i] + lsp[i+1]-LSP_SCALING*margin);
- }
-}
-
-
-void lsp_interpolate(spx_lsp_t *old_lsp, spx_lsp_t *new_lsp, spx_lsp_t *interp_lsp, int len, int subframe, int nb_subframes)
-{
- int i;
- float tmp = (1.0f + subframe)/nb_subframes;
- for (i=0;i<len;i++)
- {
- interp_lsp[i] = (1-tmp)*old_lsp[i] + tmp*new_lsp[i];
- }
-}
-
-#endif
diff --git a/3rdparty/speex/libspeex/lsp.h b/3rdparty/speex/libspeex/lsp.h
deleted file mode 100644
index 6266f42f..00000000
--- a/3rdparty/speex/libspeex/lsp.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*---------------------------------------------------------------------------*\
-Original Copyright
- FILE........: AK2LSPD.H
- TYPE........: Turbo C header file
- COMPANY.....: Voicetronix
- AUTHOR......: James Whitehall
- DATE CREATED: 21/11/95
-
-Modified by Jean-Marc Valin
-
- This file contains functions for converting Linear Prediction
- Coefficients (LPC) to Line Spectral Pair (LSP) and back. Note that the
- LSP coefficients are not in radians format but in the x domain of the
- unit circle.
-
-\*---------------------------------------------------------------------------*/
-/**
- @file lsp.h
- @brief Line Spectral Pair (LSP) functions.
-*/
-/* Speex License:
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef __AK2LSPD__
-#define __AK2LSPD__
-
-#include "misc.h"
-
-int lpc_to_lsp (spx_coef_t *a, int lpcrdr, spx_lsp_t *freq, int nb, spx_word16_t delta, char *stack);
-void lsp_to_lpc(spx_lsp_t *freq, spx_coef_t *ak, int lpcrdr, char *stack);
-
-/*Added by JMV*/
-void lsp_enforce_margin(spx_lsp_t *lsp, int len, spx_word16_t margin);
-
-void lsp_interpolate(spx_lsp_t *old_lsp, spx_lsp_t *new_lsp, spx_lsp_t *interp_lsp, int len, int subframe, int nb_subframes);
-
-#endif /* __AK2LSPD__ */
diff --git a/3rdparty/speex/libspeex/lsp_bfin.h b/3rdparty/speex/libspeex/lsp_bfin.h
deleted file mode 100644
index 20e50528..00000000
--- a/3rdparty/speex/libspeex/lsp_bfin.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Copyright (C) 2006 David Rowe */
-/**
- @file lsp_bfin.h
- @author David Rowe
- @brief LSP routines optimised for the Blackfin
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#define OVERRIDE_CHEB_POLY_EVA
-#ifdef OVERRIDE_CHEB_POLY_EVA
-static inline spx_word32_t cheb_poly_eva(
- spx_word16_t *coef, /* P or Q coefs in Q13 format */
- spx_word16_t x, /* cos of freq (-1.0 to 1.0) in Q14 format */
- int m, /* LPC order/2 */
- char *stack
-)
-{
- spx_word32_t sum;
-
- __asm__ __volatile__
- (
- "P0 = %2;\n\t" /* P0: coef[m], coef[m-1],..., coef[0] */
- "R4 = 8192;\n\t" /* R4: rounding constant */
- "R2 = %1;\n\t" /* R2: x */
-
- "R5 = -16383;\n\t"
- "R2 = MAX(R2,R5);\n\t"
- "R5 = 16383;\n\t"
- "R2 = MIN(R2,R5);\n\t"
-
- "R3 = W[P0--] (X);\n\t" /* R3: sum */
- "R5 = W[P0--] (X);\n\t"
- "R5 = R5.L * R2.L (IS);\n\t"
- "R5 = R5 + R4;\n\t"
- "R5 >>>= 14;\n\t"
- "R3 = R3 + R5;\n\t"
-
- "R0 = R2;\n\t" /* R0: b0 */
- "R1 = 16384;\n\t" /* R1: b1 */
- "LOOP cpe%= LC0 = %3;\n\t"
- "LOOP_BEGIN cpe%=;\n\t"
- "P1 = R0;\n\t"
- "R0 = R2.L * R0.L (IS) || R5 = W[P0--] (X);\n\t"
- "R0 >>>= 13;\n\t"
- "R0 = R0 - R1;\n\t"
- "R1 = P1;\n\t"
- "R5 = R5.L * R0.L (IS);\n\t"
- "R5 = R5 + R4;\n\t"
- "R5 >>>= 14;\n\t"
- "R3 = R3 + R5;\n\t"
- "LOOP_END cpe%=;\n\t"
- "%0 = R3;\n\t"
- : "=&d" (sum)
- : "a" (x), "a" (&coef[m]), "a" (m-1)
- : "R0", "R1", "R3", "R2", "R4", "R5", "P0", "P1"
- );
- return sum;
-}
-#endif
-
-
-
diff --git a/3rdparty/speex/libspeex/lsp_tables_nb.c b/3rdparty/speex/libspeex/lsp_tables_nb.c
deleted file mode 100644
index 16f2e1b6..00000000
--- a/3rdparty/speex/libspeex/lsp_tables_nb.c
+++ /dev/null
@@ -1,360 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: lsp_tables_nb.c
- Codebooks for LSPs in narrowband CELP mode
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-const signed char cdbk_nb[640]={
-30,19,38,34,40,32,46,43,58,43,
-5,-18,-25,-40,-33,-55,-52,20,34,28,
--20,-63,-97,-92,61,53,47,49,53,75,
--14,-53,-77,-79,0,-3,-5,19,22,26,
--9,-53,-55,66,90,72,85,68,74,52,
--4,-41,-58,-31,-18,-31,27,32,30,18,
-24,3,8,5,-12,-3,26,28,74,63,
--2,-39,-67,-77,-106,-74,59,59,73,65,
-44,40,71,72,82,83,98,88,89,60,
--6,-31,-47,-48,-13,-39,-9,7,2,79,
--1,-39,-60,-17,87,81,65,50,45,19,
--21,-67,-91,-87,-41,-50,7,18,39,74,
-10,-31,-28,39,24,13,23,5,56,45,
-29,10,-5,-13,-11,-35,-18,-8,-10,-8,
--25,-71,-77,-21,2,16,50,63,87,87,
-5,-32,-40,-51,-68,0,12,6,54,34,
-5,-12,32,52,68,64,69,59,65,45,
-14,-16,-31,-40,-65,-67,41,49,47,37,
--11,-52,-75,-84,-4,57,48,42,42,33,
--11,-51,-68,-6,13,0,8,-8,26,32,
--23,-53,0,36,56,76,97,105,111,97,
--1,-28,-39,-40,-43,-54,-44,-40,-18,35,
-16,-20,-19,-28,-42,29,47,38,74,45,
-3,-29,-48,-62,-80,-104,-33,56,59,59,
-10,17,46,72,84,101,117,123,123,106,
--7,-33,-49,-51,-70,-67,-27,-31,70,67,
--16,-62,-85,-20,82,71,86,80,85,74,
--19,-58,-75,-45,-29,-33,-18,-25,45,57,
--12,-42,-5,12,28,36,52,64,81,82,
-13,-9,-27,-28,22,3,2,22,26,6,
--6,-44,-51,2,15,10,48,43,49,34,
--19,-62,-84,-89,-102,-24,8,17,61,68,
-39,24,23,19,16,-5,12,15,27,15,
--8,-44,-49,-60,-18,-32,-28,52,54,62,
--8,-48,-77,-70,66,101,83,63,61,37,
--12,-50,-75,-64,33,17,13,25,15,77,
-1,-42,-29,72,64,46,49,31,61,44,
--8,-47,-54,-46,-30,19,20,-1,-16,0,
-16,-12,-18,-9,-26,-27,-10,-22,53,45,
--10,-47,-75,-82,-105,-109,8,25,49,77,
-50,65,114,117,124,118,115,96,90,61,
--9,-45,-63,-60,-75,-57,8,11,20,29,
-0,-35,-49,-43,40,47,35,40,55,38,
--24,-76,-103,-112,-27,3,23,34,52,75,
-8,-29,-43,12,63,38,35,29,24,8,
-25,11,1,-15,-18,-43,-7,37,40,21,
--20,-56,-19,-19,-4,-2,11,29,51,63,
--2,-44,-62,-75,-89,30,57,51,74,51,
-50,46,68,64,65,52,63,55,65,43,
-18,-9,-26,-35,-55,-69,3,6,8,17,
--15,-61,-86,-97,1,86,93,74,78,67,
--1,-38,-66,-48,48,39,29,25,17,-1,
-13,13,29,39,50,51,69,82,97,98,
--2,-36,-46,-27,-16,-30,-13,-4,-7,-4,
-25,-5,-11,-6,-25,-21,33,12,31,29,
--8,-38,-52,-63,-68,-89,-33,-1,10,74,
--2,-15,59,91,105,105,101,87,84,62,
--7,-33,-50,-35,-54,-47,25,17,82,81,
--13,-56,-83,21,58,31,42,25,72,65,
--24,-66,-91,-56,9,-2,21,10,69,75,
-2,-24,11,22,25,28,38,34,48,33,
-7,-29,-26,17,15,-1,14,0,-2,0,
--6,-41,-67,6,-2,-9,19,2,85,74,
--22,-67,-84,-71,-50,3,11,-9,2,62};
-
-const signed char cdbk_nb_low1[320]={
--34,-52,-15,45,2,
-23,21,52,24,-33,
--9,-1,9,-44,-41,
--13,-17,44,22,-17,
--6,-4,-1,22,38,
-26,16,2,50,27,
--35,-34,-9,-41,6,
-0,-16,-34,51,8,
--14,-31,-49,15,-33,
-45,49,33,-11,-37,
--62,-54,45,11,-5,
--72,11,-1,-12,-11,
-24,27,-11,-43,46,
-43,33,-12,-9,-1,
-1,-4,-23,-57,-71,
-11,8,16,17,-8,
--20,-31,-41,53,48,
--16,3,65,-24,-8,
--23,-32,-37,-32,-49,
--10,-17,6,38,5,
--9,-17,-46,8,52,
-3,6,45,40,39,
--7,-6,-34,-74,31,
-8,1,-16,43,68,
--11,-19,-31,4,6,
-0,-6,-17,-16,-38,
--16,-30,2,9,-39,
--16,-1,43,-10,48,
-3,3,-16,-31,-3,
-62,68,43,13,3,
--10,8,20,-56,12,
-12,-2,-18,22,-15,
--40,-36,1,7,41,
-0,1,46,-6,-62,
--4,-12,-2,-11,-83,
--13,-2,91,33,-10,
-0,4,-11,-16,79,
-32,37,14,9,51,
--21,-28,-56,-34,0,
-21,9,-26,11,28,
--42,-54,-23,-2,-15,
-31,30,8,-39,-66,
--39,-36,31,-28,-40,
--46,35,40,22,24,
-33,48,23,-34,14,
-40,32,17,27,-3,
-25,26,-13,-61,-17,
-11,4,31,60,-6,
--26,-41,-64,13,16,
--26,54,31,-11,-23,
--9,-11,-34,-71,-21,
--34,-35,55,50,29,
--22,-27,-50,-38,57,
-33,42,57,48,26,
-11,0,-49,-31,26,
--4,-14,5,78,37,
-17,0,-49,-12,-23,
-26,14,2,2,-43,
--17,-12,10,-8,-4,
-8,18,12,-6,20,
--12,-6,-13,-25,34,
-15,40,49,7,8,
-13,20,20,-19,-22,
--2,-8,2,51,-51};
-
-const signed char cdbk_nb_low2[320]={
--6,53,-21,-24,4,
-26,17,-4,-37,25,
-17,-36,-13,31,3,
--6,27,15,-10,31,
-28,26,-10,-10,-40,
-16,-7,15,13,41,
--9,0,-4,50,-6,
--7,14,38,22,0,
--48,2,1,-13,-19,
-32,-3,-60,11,-17,
--1,-24,-34,-1,35,
--5,-27,28,44,13,
-25,15,42,-11,15,
-51,35,-36,20,8,
--4,-12,-29,19,-47,
-49,-15,-4,16,-29,
--39,14,-30,4,25,
--9,-5,-51,-14,-3,
--40,-32,38,5,-9,
--8,-4,-1,-22,71,
--3,14,26,-18,-22,
-24,-41,-25,-24,6,
-23,19,-10,39,-26,
--27,65,45,2,-7,
--26,-8,22,-12,16,
-15,16,-35,-5,33,
--21,-8,0,23,33,
-34,6,21,36,6,
--7,-22,8,-37,-14,
-31,38,11,-4,-3,
--39,-32,-8,32,-23,
--6,-12,16,20,-28,
--4,23,13,-52,-1,
-22,6,-33,-40,-6,
-4,-62,13,5,-26,
-35,39,11,2,57,
--11,9,-20,-28,-33,
-52,-5,-6,-2,22,
--14,-16,-48,35,1,
--58,20,13,33,-1,
--74,56,-18,-22,-31,
-12,6,-14,4,-2,
--9,-47,10,-3,29,
--17,-5,61,14,47,
--12,2,72,-39,-17,
-92,64,-53,-51,-15,
--30,-38,-41,-29,-28,
-27,9,36,9,-35,
--42,81,-21,20,25,
--16,-5,-17,-35,21,
-15,-28,48,2,-2,
-9,-19,29,-40,30,
--18,-18,18,-16,-57,
-15,-20,-12,-15,-37,
--15,33,-39,21,-22,
--13,35,11,13,-38,
--63,29,23,-27,32,
-18,3,-26,42,33,
--64,-66,-17,16,56,
-2,36,3,31,21,
--41,-39,8,-57,14,
-37,-2,19,-36,-19,
--23,-29,-16,1,-3,
--8,-10,31,64,-65};
-
-const signed char cdbk_nb_high1[320]={
--26,-8,29,21,4,
-19,-39,33,-7,-36,
-56,54,48,40,29,
--4,-24,-42,-66,-43,
--60,19,-2,37,41,
--10,-37,-60,-64,18,
--22,77,73,40,25,
-4,19,-19,-66,-2,
-11,5,21,14,26,
--25,-86,-4,18,1,
-26,-37,10,37,-1,
-24,-12,-59,-11,20,
--6,34,-16,-16,42,
-19,-28,-51,53,32,
-4,10,62,21,-12,
--34,27,4,-48,-48,
--50,-49,31,-7,-21,
--42,-25,-4,-43,-22,
-59,2,27,12,-9,
--6,-16,-8,-32,-58,
--16,-29,-5,41,23,
--30,-33,-46,-13,-10,
--38,52,52,1,-17,
--9,10,26,-25,-6,
-33,-20,53,55,25,
--32,-5,-42,23,21,
-66,5,-28,20,9,
-75,29,-7,-42,-39,
-15,3,-23,21,6,
-11,1,-29,14,63,
-10,54,26,-24,-51,
--49,7,-23,-51,15,
--66,1,60,25,10,
-0,-30,-4,-15,17,
-19,59,40,4,-5,
-33,6,-22,-58,-70,
--5,23,-6,60,44,
--29,-16,-47,-29,52,
--19,50,28,16,35,
-31,36,0,-21,6,
-21,27,22,42,7,
--66,-40,-8,7,19,
-46,0,-4,60,36,
-45,-7,-29,-6,-32,
--39,2,6,-9,33,
-20,-51,-34,18,-6,
-19,6,11,5,-19,
--29,-2,42,-11,-45,
--21,-55,57,37,2,
--14,-67,-16,-27,-38,
-69,48,19,2,-17,
-20,-20,-16,-34,-17,
--25,-61,10,73,45,
-16,-40,-64,-17,-29,
--22,56,17,-39,8,
--11,8,-25,-18,-13,
--19,8,54,57,36,
--17,-26,-4,6,-21,
-40,42,-4,20,31,
-53,10,-34,-53,31,
--17,35,0,15,-6,
--20,-63,-73,22,25,
-29,17,8,-29,-39,
--69,18,15,-15,-5};
-
-const signed char cdbk_nb_high2[320]={
-11,47,16,-9,-46,
--32,26,-64,34,-5,
-38,-7,47,20,2,
--73,-99,-3,-45,20,
-70,-52,15,-6,-7,
--82,31,21,47,51,
-39,-3,9,0,-41,
--7,-15,-54,2,0,
-27,-31,9,-45,-22,
--38,-24,-24,8,-33,
-23,5,50,-36,-17,
--18,-51,-2,13,19,
-43,12,-15,-12,61,
-38,38,7,13,0,
-6,-1,3,62,9,
-27,22,-33,38,-35,
--9,30,-43,-9,-32,
--1,4,-4,1,-5,
--11,-8,38,31,11,
--10,-42,-21,-37,1,
-43,15,-13,-35,-19,
--18,15,23,-26,59,
-1,-21,53,8,-41,
--50,-14,-28,4,21,
-25,-28,-40,5,-40,
--41,4,51,-33,-8,
--8,1,17,-60,12,
-25,-41,17,34,43,
-19,45,7,-37,24,
--15,56,-2,35,-10,
-48,4,-47,-2,5,
--5,-54,5,-3,-33,
--10,30,-2,-44,-24,
--38,9,-9,42,4,
-6,-56,44,-16,9,
--40,-26,18,-20,10,
-28,-41,-21,-4,13,
--18,32,-30,-3,37,
-15,22,28,50,-40,
-3,-29,-64,7,51,
--19,-11,17,-27,-40,
--64,24,-12,-7,-27,
-3,37,48,-1,2,
--9,-38,-34,46,1,
-27,-6,19,-13,26,
-10,34,20,25,40,
-50,-6,-7,30,9,
--24,0,-23,71,-61,
-22,58,-34,-4,2,
--49,-33,25,30,-8,
--6,-16,77,2,38,
--8,-35,-6,-30,56,
-78,31,33,-20,13,
--39,20,22,4,21,
--8,4,-6,10,-83,
--41,9,-25,-43,15,
--7,-12,-34,-39,-37,
--33,19,30,16,-33,
-42,-25,25,-68,44,
--15,-11,-4,23,50,
-14,4,-39,-43,20,
--30,60,9,-20,7,
-16,19,-33,37,29,
-16,-35,7,38,-27};
diff --git a/3rdparty/speex/libspeex/ltp.c b/3rdparty/speex/libspeex/ltp.c
deleted file mode 100644
index fa77da2b..00000000
--- a/3rdparty/speex/libspeex/ltp.c
+++ /dev/null
@@ -1,846 +0,0 @@
-/* Copyright (C) 2002-2006 Jean-Marc Valin
- File: ltp.c
- Long-Term Prediction functions
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <math.h>
-#include "ltp.h"
-#include "stack_alloc.h"
-#include "filters.h"
-#include <speex/speex_bits.h>
-#include "math_approx.h"
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-
-#ifdef _USE_SSE
-#include "ltp_sse.h"
-#elif defined (ARM4_ASM) || defined(ARM5E_ASM)
-#include "ltp_arm4.h"
-#elif defined (BFIN_ASM)
-#include "ltp_bfin.h"
-#endif
-
-#ifndef OVERRIDE_INNER_PROD
-spx_word32_t inner_prod(const spx_word16_t *x, const spx_word16_t *y, int len)
-{
- spx_word32_t sum=0;
- len >>= 2;
- while(len--)
- {
- spx_word32_t part=0;
- part = MAC16_16(part,*x++,*y++);
- part = MAC16_16(part,*x++,*y++);
- part = MAC16_16(part,*x++,*y++);
- part = MAC16_16(part,*x++,*y++);
- /* HINT: If you had a 40-bit accumulator, you could shift only at the end */
- sum = ADD32(sum,SHR32(part,6));
- }
- return sum;
-}
-#endif
-
-#ifndef OVERRIDE_PITCH_XCORR
-#if 0 /* HINT: Enable this for machines with enough registers (i.e. not x86) */
-void pitch_xcorr(const spx_word16_t *_x, const spx_word16_t *_y, spx_word32_t *corr, int len, int nb_pitch, char *stack)
-{
- int i,j;
- for (i=0;i<nb_pitch;i+=4)
- {
- /* Compute correlation*/
- /*corr[nb_pitch-1-i]=inner_prod(x, _y+i, len);*/
- spx_word32_t sum1=0;
- spx_word32_t sum2=0;
- spx_word32_t sum3=0;
- spx_word32_t sum4=0;
- const spx_word16_t *y = _y+i;
- const spx_word16_t *x = _x;
- spx_word16_t y0, y1, y2, y3;
- /*y0=y[0];y1=y[1];y2=y[2];y3=y[3];*/
- y0=*y++;
- y1=*y++;
- y2=*y++;
- y3=*y++;
- for (j=0;j<len;j+=4)
- {
- spx_word32_t part1;
- spx_word32_t part2;
- spx_word32_t part3;
- spx_word32_t part4;
- part1 = MULT16_16(*x,y0);
- part2 = MULT16_16(*x,y1);
- part3 = MULT16_16(*x,y2);
- part4 = MULT16_16(*x,y3);
- x++;
- y0=*y++;
- part1 = MAC16_16(part1,*x,y1);
- part2 = MAC16_16(part2,*x,y2);
- part3 = MAC16_16(part3,*x,y3);
- part4 = MAC16_16(part4,*x,y0);
- x++;
- y1=*y++;
- part1 = MAC16_16(part1,*x,y2);
- part2 = MAC16_16(part2,*x,y3);
- part3 = MAC16_16(part3,*x,y0);
- part4 = MAC16_16(part4,*x,y1);
- x++;
- y2=*y++;
- part1 = MAC16_16(part1,*x,y3);
- part2 = MAC16_16(part2,*x,y0);
- part3 = MAC16_16(part3,*x,y1);
- part4 = MAC16_16(part4,*x,y2);
- x++;
- y3=*y++;
-
- sum1 = ADD32(sum1,SHR32(part1,6));
- sum2 = ADD32(sum2,SHR32(part2,6));
- sum3 = ADD32(sum3,SHR32(part3,6));
- sum4 = ADD32(sum4,SHR32(part4,6));
- }
- corr[nb_pitch-1-i]=sum1;
- corr[nb_pitch-2-i]=sum2;
- corr[nb_pitch-3-i]=sum3;
- corr[nb_pitch-4-i]=sum4;
- }
-
-}
-#else
-void pitch_xcorr(const spx_word16_t *_x, const spx_word16_t *_y, spx_word32_t *corr, int len, int nb_pitch, char *stack)
-{
- int i;
- for (i=0;i<nb_pitch;i++)
- {
- /* Compute correlation*/
- corr[nb_pitch-1-i]=inner_prod(_x, _y+i, len);
- }
-
-}
-#endif
-#endif
-
-#ifndef OVERRIDE_COMPUTE_PITCH_ERROR
-static inline spx_word32_t compute_pitch_error(spx_word16_t *C, spx_word16_t *g, spx_word16_t pitch_control)
-{
- spx_word32_t sum = 0;
- sum = ADD32(sum,MULT16_16(MULT16_16_16(g[0],pitch_control),C[0]));
- sum = ADD32(sum,MULT16_16(MULT16_16_16(g[1],pitch_control),C[1]));
- sum = ADD32(sum,MULT16_16(MULT16_16_16(g[2],pitch_control),C[2]));
- sum = SUB32(sum,MULT16_16(MULT16_16_16(g[0],g[1]),C[3]));
- sum = SUB32(sum,MULT16_16(MULT16_16_16(g[2],g[1]),C[4]));
- sum = SUB32(sum,MULT16_16(MULT16_16_16(g[2],g[0]),C[5]));
- sum = SUB32(sum,MULT16_16(MULT16_16_16(g[0],g[0]),C[6]));
- sum = SUB32(sum,MULT16_16(MULT16_16_16(g[1],g[1]),C[7]));
- sum = SUB32(sum,MULT16_16(MULT16_16_16(g[2],g[2]),C[8]));
- return sum;
-}
-#endif
-
-#ifndef OVERRIDE_OPEN_LOOP_NBEST_PITCH
-void open_loop_nbest_pitch(spx_word16_t *sw, int start, int end, int len, int *pitch, spx_word16_t *gain, int N, char *stack)
-{
- int i,j,k;
- VARDECL(spx_word32_t *best_score);
- VARDECL(spx_word32_t *best_ener);
- spx_word32_t e0;
- VARDECL(spx_word32_t *corr);
-#ifdef FIXED_POINT
- /* In fixed-point, we need only one (temporary) array of 32-bit values and two (corr16, ener16)
- arrays for (normalized) 16-bit values */
- VARDECL(spx_word16_t *corr16);
- VARDECL(spx_word16_t *ener16);
- spx_word32_t *energy;
- int cshift=0, eshift=0;
- int scaledown = 0;
- ALLOC(corr16, end-start+1, spx_word16_t);
- ALLOC(ener16, end-start+1, spx_word16_t);
- ALLOC(corr, end-start+1, spx_word32_t);
- energy = corr;
-#else
- /* In floating-point, we need to float arrays and no normalized copies */
- VARDECL(spx_word32_t *energy);
- spx_word16_t *corr16;
- spx_word16_t *ener16;
- ALLOC(energy, end-start+2, spx_word32_t);
- ALLOC(corr, end-start+1, spx_word32_t);
- corr16 = corr;
- ener16 = energy;
-#endif
-
- ALLOC(best_score, N, spx_word32_t);
- ALLOC(best_ener, N, spx_word32_t);
- for (i=0;i<N;i++)
- {
- best_score[i]=-1;
- best_ener[i]=0;
- pitch[i]=start;
- }
-
-#ifdef FIXED_POINT
- for (i=-end;i<len;i++)
- {
- if (ABS16(sw[i])>16383)
- {
- scaledown=1;
- break;
- }
- }
- /* If the weighted input is close to saturation, then we scale it down */
- if (scaledown)
- {
- for (i=-end;i<len;i++)
- {
- sw[i]=SHR16(sw[i],1);
- }
- }
-#endif
- energy[0]=inner_prod(sw-start, sw-start, len);
- e0=inner_prod(sw, sw, len);
- for (i=start;i<end;i++)
- {
- /* Update energy for next pitch*/
- energy[i-start+1] = SUB32(ADD32(energy[i-start],SHR32(MULT16_16(sw[-i-1],sw[-i-1]),6)), SHR32(MULT16_16(sw[-i+len-1],sw[-i+len-1]),6));
- if (energy[i-start+1] < 0)
- energy[i-start+1] = 0;
- }
-
-#ifdef FIXED_POINT
- eshift = normalize16(energy, ener16, 32766, end-start+1);
-#endif
-
- /* In fixed-point, this actually overrites the energy array (aliased to corr) */
- pitch_xcorr(sw, sw-end, corr, len, end-start+1, stack);
-
-#ifdef FIXED_POINT
- /* Normalize to 180 so we can square it and it still fits in 16 bits */
- cshift = normalize16(corr, corr16, 180, end-start+1);
- /* If we scaled weighted input down, we need to scale it up again (OK, so we've just lost the LSB, who cares?) */
- if (scaledown)
- {
- for (i=-end;i<len;i++)
- {
- sw[i]=SHL16(sw[i],1);
- }
- }
-#endif
-
- /* Search for the best pitch prediction gain */
- for (i=start;i<=end;i++)
- {
- spx_word16_t tmp = MULT16_16_16(corr16[i-start],corr16[i-start]);
- /* Instead of dividing the tmp by the energy, we multiply on the other side */
- if (MULT16_16(tmp,best_ener[N-1])>MULT16_16(best_score[N-1],ADD16(1,ener16[i-start])))
- {
- /* We can safely put it last and then check */
- best_score[N-1]=tmp;
- best_ener[N-1]=ener16[i-start]+1;
- pitch[N-1]=i;
- /* Check if it comes in front of others */
- for (j=0;j<N-1;j++)
- {
- if (MULT16_16(tmp,best_ener[j])>MULT16_16(best_score[j],ADD16(1,ener16[i-start])))
- {
- for (k=N-1;k>j;k--)
- {
- best_score[k]=best_score[k-1];
- best_ener[k]=best_ener[k-1];
- pitch[k]=pitch[k-1];
- }
- best_score[j]=tmp;
- best_ener[j]=ener16[i-start]+1;
- pitch[j]=i;
- break;
- }
- }
- }
- }
-
- /* Compute open-loop gain if necessary */
- if (gain)
- {
- for (j=0;j<N;j++)
- {
- spx_word16_t g;
- i=pitch[j];
- g = DIV32(SHL32(EXTEND32(corr16[i-start]),cshift), 10+SHR32(MULT16_16(spx_sqrt(e0),spx_sqrt(SHL32(EXTEND32(ener16[i-start]),eshift))),6));
- /* FIXME: g = max(g,corr/energy) */
- if (g<0)
- g = 0;
- gain[j]=g;
- }
- }
-
-
-}
-#endif
-
-#ifndef OVERRIDE_PITCH_GAIN_SEARCH_3TAP_VQ
-static int pitch_gain_search_3tap_vq(
- const signed char *gain_cdbk,
- int gain_cdbk_size,
- spx_word16_t *C16,
- spx_word16_t max_gain
-)
-{
- const signed char *ptr=gain_cdbk;
- int best_cdbk=0;
- spx_word32_t best_sum=-VERY_LARGE32;
- spx_word32_t sum=0;
- spx_word16_t g[3];
- spx_word16_t pitch_control=64;
- spx_word16_t gain_sum;
- int i;
-
- for (i=0;i<gain_cdbk_size;i++) {
-
- ptr = gain_cdbk+4*i;
- g[0]=ADD16((spx_word16_t)ptr[0],32);
- g[1]=ADD16((spx_word16_t)ptr[1],32);
- g[2]=ADD16((spx_word16_t)ptr[2],32);
- gain_sum = (spx_word16_t)ptr[3];
-
- sum = compute_pitch_error(C16, g, pitch_control);
-
- if (sum>best_sum && gain_sum<=max_gain) {
- best_sum=sum;
- best_cdbk=i;
- }
- }
-
- return best_cdbk;
-}
-#endif
-
-/** Finds the best quantized 3-tap pitch predictor by analysis by synthesis */
-static spx_word32_t pitch_gain_search_3tap(
-const spx_word16_t target[], /* Target vector */
-const spx_coef_t ak[], /* LPCs for this subframe */
-const spx_coef_t awk1[], /* Weighted LPCs #1 for this subframe */
-const spx_coef_t awk2[], /* Weighted LPCs #2 for this subframe */
-spx_sig_t exc[], /* Excitation */
-const signed char *gain_cdbk,
-int gain_cdbk_size,
-int pitch, /* Pitch value */
-int p, /* Number of LPC coeffs */
-int nsf, /* Number of samples in subframe */
-SpeexBits *bits,
-char *stack,
-const spx_word16_t *exc2,
-const spx_word16_t *r,
-spx_word16_t *new_target,
-int *cdbk_index,
-int plc_tuning,
-spx_word32_t cumul_gain,
-int scaledown
-)
-{
- int i,j;
- VARDECL(spx_word16_t *tmp1);
- VARDECL(spx_word16_t *e);
- spx_word16_t *x[3];
- spx_word32_t corr[3];
- spx_word32_t A[3][3];
- spx_word16_t gain[3];
- spx_word32_t err;
- spx_word16_t max_gain=128;
- int best_cdbk=0;
-
- ALLOC(tmp1, 3*nsf, spx_word16_t);
- ALLOC(e, nsf, spx_word16_t);
-
- if (cumul_gain > 262144)
- max_gain = 31;
-
- x[0]=tmp1;
- x[1]=tmp1+nsf;
- x[2]=tmp1+2*nsf;
-
- for (j=0;j<nsf;j++)
- new_target[j] = target[j];
-
- {
- VARDECL(spx_mem_t *mm);
- int pp=pitch-1;
- ALLOC(mm, p, spx_mem_t);
- for (j=0;j<nsf;j++)
- {
- if (j-pp<0)
- e[j]=exc2[j-pp];
- else if (j-pp-pitch<0)
- e[j]=exc2[j-pp-pitch];
- else
- e[j]=0;
- }
-#ifdef FIXED_POINT
- /* Scale target and excitation down if needed (avoiding overflow) */
- if (scaledown)
- {
- for (j=0;j<nsf;j++)
- e[j] = SHR16(e[j],1);
- for (j=0;j<nsf;j++)
- new_target[j] = SHR16(new_target[j],1);
- }
-#endif
- for (j=0;j<p;j++)
- mm[j] = 0;
- iir_mem16(e, ak, e, nsf, p, mm, stack);
- for (j=0;j<p;j++)
- mm[j] = 0;
- filter_mem16(e, awk1, awk2, e, nsf, p, mm, stack);
- for (j=0;j<nsf;j++)
- x[2][j] = e[j];
- }
- for (i=1;i>=0;i--)
- {
- spx_word16_t e0=exc2[-pitch-1+i];
-#ifdef FIXED_POINT
- /* Scale excitation down if needed (avoiding overflow) */
- if (scaledown)
- e0 = SHR16(e0,1);
-#endif
- x[i][0]=MULT16_16_Q14(r[0], e0);
- for (j=0;j<nsf-1;j++)
- x[i][j+1]=ADD32(x[i+1][j],MULT16_16_P14(r[j+1], e0));
- }
-
- for (i=0;i<3;i++)
- corr[i]=inner_prod(x[i],new_target,nsf);
- for (i=0;i<3;i++)
- for (j=0;j<=i;j++)
- A[i][j]=A[j][i]=inner_prod(x[i],x[j],nsf);
-
- {
- spx_word32_t C[9];
-#ifdef FIXED_POINT
- spx_word16_t C16[9];
-#else
- spx_word16_t *C16=C;
-#endif
- C[0]=corr[2];
- C[1]=corr[1];
- C[2]=corr[0];
- C[3]=A[1][2];
- C[4]=A[0][1];
- C[5]=A[0][2];
- C[6]=A[2][2];
- C[7]=A[1][1];
- C[8]=A[0][0];
-
- /*plc_tuning *= 2;*/
- if (plc_tuning<2)
- plc_tuning=2;
- if (plc_tuning>30)
- plc_tuning=30;
-#ifdef FIXED_POINT
- C[0] = SHL32(C[0],1);
- C[1] = SHL32(C[1],1);
- C[2] = SHL32(C[2],1);
- C[3] = SHL32(C[3],1);
- C[4] = SHL32(C[4],1);
- C[5] = SHL32(C[5],1);
- C[6] = MAC16_32_Q15(C[6],MULT16_16_16(plc_tuning,655),C[6]);
- C[7] = MAC16_32_Q15(C[7],MULT16_16_16(plc_tuning,655),C[7]);
- C[8] = MAC16_32_Q15(C[8],MULT16_16_16(plc_tuning,655),C[8]);
- normalize16(C, C16, 32767, 9);
-#else
- C[6]*=.5*(1+.02*plc_tuning);
- C[7]*=.5*(1+.02*plc_tuning);
- C[8]*=.5*(1+.02*plc_tuning);
-#endif
-
- best_cdbk = pitch_gain_search_3tap_vq(gain_cdbk, gain_cdbk_size, C16, max_gain);
-
-#ifdef FIXED_POINT
- gain[0] = ADD16(32,(spx_word16_t)gain_cdbk[best_cdbk*4]);
- gain[1] = ADD16(32,(spx_word16_t)gain_cdbk[best_cdbk*4+1]);
- gain[2] = ADD16(32,(spx_word16_t)gain_cdbk[best_cdbk*4+2]);
- /*printf ("%d %d %d %d\n",gain[0],gain[1],gain[2], best_cdbk);*/
-#else
- gain[0] = 0.015625*gain_cdbk[best_cdbk*4] + .5;
- gain[1] = 0.015625*gain_cdbk[best_cdbk*4+1]+ .5;
- gain[2] = 0.015625*gain_cdbk[best_cdbk*4+2]+ .5;
-#endif
- *cdbk_index=best_cdbk;
- }
-
- for (i=0;i<nsf;i++)
- exc[i]=0;
- for (i=0;i<3;i++)
- {
- int j;
- int tmp1, tmp3;
- int pp=pitch+1-i;
- tmp1=nsf;
- if (tmp1>pp)
- tmp1=pp;
- for (j=0;j<tmp1;j++)
- exc[j]=MAC16_16(exc[j],SHL16(gain[2-i],7),exc2[j-pp]);
- tmp3=nsf;
- if (tmp3>pp+pitch)
- tmp3=pp+pitch;
- for (j=tmp1;j<tmp3;j++)
- exc[j]=MAC16_16(exc[j],SHL16(gain[2-i],7),exc2[j-pp-pitch]);
- }
- for (i=0;i<nsf;i++)
- {
- spx_word32_t tmp = ADD32(ADD32(MULT16_16(gain[0],x[2][i]),MULT16_16(gain[1],x[1][i])),
- MULT16_16(gain[2],x[0][i]));
- new_target[i] = SUB16(new_target[i], EXTRACT16(PSHR32(tmp,6)));
- }
- err = inner_prod(new_target, new_target, nsf);
-
- return err;
-}
-
-/** Finds the best quantized 3-tap pitch predictor by analysis by synthesis */
-int pitch_search_3tap(
-spx_word16_t target[], /* Target vector */
-spx_word16_t *sw,
-spx_coef_t ak[], /* LPCs for this subframe */
-spx_coef_t awk1[], /* Weighted LPCs #1 for this subframe */
-spx_coef_t awk2[], /* Weighted LPCs #2 for this subframe */
-spx_sig_t exc[], /* Excitation */
-const void *par,
-int start, /* Smallest pitch value allowed */
-int end, /* Largest pitch value allowed */
-spx_word16_t pitch_coef, /* Voicing (pitch) coefficient */
-int p, /* Number of LPC coeffs */
-int nsf, /* Number of samples in subframe */
-SpeexBits *bits,
-char *stack,
-spx_word16_t *exc2,
-spx_word16_t *r,
-int complexity,
-int cdbk_offset,
-int plc_tuning,
-spx_word32_t *cumul_gain
-)
-{
- int i,j;
- int cdbk_index, pitch=0, best_gain_index=0;
- VARDECL(spx_sig_t *best_exc);
- VARDECL(spx_word16_t *new_target);
- VARDECL(spx_word16_t *best_target);
- int best_pitch=0;
- spx_word32_t err, best_err=-1;
- int N;
- const ltp_params *params;
- const signed char *gain_cdbk;
- int gain_cdbk_size;
- int scaledown=0;
-
- VARDECL(int *nbest);
-
- params = (const ltp_params*) par;
- gain_cdbk_size = 1<<params->gain_bits;
- gain_cdbk = params->gain_cdbk + 4*gain_cdbk_size*cdbk_offset;
-
- N=complexity;
- if (N>10)
- N=10;
- if (N<1)
- N=1;
-
- ALLOC(nbest, N, int);
- params = (const ltp_params*) par;
-
- if (end<start)
- {
- speex_bits_pack(bits, 0, params->pitch_bits);
- speex_bits_pack(bits, 0, params->gain_bits);
- for (i=0;i<nsf;i++)
- exc[i]=0;
- return start;
- }
-
-#ifdef FIXED_POINT
- /* Check if we need to scale everything down in the pitch search to avoid overflows */
- for (i=0;i<nsf;i++)
- {
- if (ABS16(target[i])>16383)
- {
- scaledown=1;
- break;
- }
- }
- for (i=-end;i<nsf;i++)
- {
- if (ABS16(exc2[i])>16383)
- {
- scaledown=1;
- break;
- }
- }
-#endif
- if (N>end-start+1)
- N=end-start+1;
- if (end != start)
- open_loop_nbest_pitch(sw, start, end, nsf, nbest, NULL, N, stack);
- else
- nbest[0] = start;
-
- ALLOC(best_exc, nsf, spx_sig_t);
- ALLOC(new_target, nsf, spx_word16_t);
- ALLOC(best_target, nsf, spx_word16_t);
-
- for (i=0;i<N;i++)
- {
- pitch=nbest[i];
- for (j=0;j<nsf;j++)
- exc[j]=0;
- err=pitch_gain_search_3tap(target, ak, awk1, awk2, exc, gain_cdbk, gain_cdbk_size, pitch, p, nsf,
- bits, stack, exc2, r, new_target, &cdbk_index, plc_tuning, *cumul_gain, scaledown);
- if (err<best_err || best_err<0)
- {
- for (j=0;j<nsf;j++)
- best_exc[j]=exc[j];
- for (j=0;j<nsf;j++)
- best_target[j]=new_target[j];
- best_err=err;
- best_pitch=pitch;
- best_gain_index=cdbk_index;
- }
- }
- /*printf ("pitch: %d %d\n", best_pitch, best_gain_index);*/
- speex_bits_pack(bits, best_pitch-start, params->pitch_bits);
- speex_bits_pack(bits, best_gain_index, params->gain_bits);
-#ifdef FIXED_POINT
- *cumul_gain = MULT16_32_Q13(SHL16(params->gain_cdbk[4*best_gain_index+3],8), MAX32(1024,*cumul_gain));
-#else
- *cumul_gain = 0.03125*MAX32(1024,*cumul_gain)*params->gain_cdbk[4*best_gain_index+3];
-#endif
- /*printf ("%f\n", cumul_gain);*/
- /*printf ("encode pitch: %d %d\n", best_pitch, best_gain_index);*/
- for (i=0;i<nsf;i++)
- exc[i]=best_exc[i];
- for (i=0;i<nsf;i++)
- target[i]=best_target[i];
-#ifdef FIXED_POINT
- /* Scale target back up if needed */
- if (scaledown)
- {
- for (i=0;i<nsf;i++)
- target[i]=SHL16(target[i],1);
- }
-#endif
- return pitch;
-}
-
-void pitch_unquant_3tap(
-spx_word16_t exc[], /* Input excitation */
-spx_word32_t exc_out[], /* Output excitation */
-int start, /* Smallest pitch value allowed */
-int end, /* Largest pitch value allowed */
-spx_word16_t pitch_coef, /* Voicing (pitch) coefficient */
-const void *par,
-int nsf, /* Number of samples in subframe */
-int *pitch_val,
-spx_word16_t *gain_val,
-SpeexBits *bits,
-char *stack,
-int count_lost,
-int subframe_offset,
-spx_word16_t last_pitch_gain,
-int cdbk_offset
-)
-{
- int i;
- int pitch;
- int gain_index;
- spx_word16_t gain[3];
- const signed char *gain_cdbk;
- int gain_cdbk_size;
- const ltp_params *params;
-
- params = (const ltp_params*) par;
- gain_cdbk_size = 1<<params->gain_bits;
- gain_cdbk = params->gain_cdbk + 4*gain_cdbk_size*cdbk_offset;
-
- pitch = speex_bits_unpack_unsigned(bits, params->pitch_bits);
- pitch += start;
- gain_index = speex_bits_unpack_unsigned(bits, params->gain_bits);
- /*printf ("decode pitch: %d %d\n", pitch, gain_index);*/
-#ifdef FIXED_POINT
- gain[0] = ADD16(32,(spx_word16_t)gain_cdbk[gain_index*4]);
- gain[1] = ADD16(32,(spx_word16_t)gain_cdbk[gain_index*4+1]);
- gain[2] = ADD16(32,(spx_word16_t)gain_cdbk[gain_index*4+2]);
-#else
- gain[0] = 0.015625*gain_cdbk[gain_index*4]+.5;
- gain[1] = 0.015625*gain_cdbk[gain_index*4+1]+.5;
- gain[2] = 0.015625*gain_cdbk[gain_index*4+2]+.5;
-#endif
-
- if (count_lost && pitch > subframe_offset)
- {
- spx_word16_t gain_sum;
- if (1) {
-#ifdef FIXED_POINT
- spx_word16_t tmp = count_lost < 4 ? last_pitch_gain : SHR16(last_pitch_gain,1);
- if (tmp>62)
- tmp=62;
-#else
- spx_word16_t tmp = count_lost < 4 ? last_pitch_gain : 0.5 * last_pitch_gain;
- if (tmp>.95)
- tmp=.95;
-#endif
- gain_sum = gain_3tap_to_1tap(gain);
-
- if (gain_sum > tmp)
- {
- spx_word16_t fact = DIV32_16(SHL32(EXTEND32(tmp),14),gain_sum);
- for (i=0;i<3;i++)
- gain[i]=MULT16_16_Q14(fact,gain[i]);
- }
-
- }
-
- }
-
- *pitch_val = pitch;
- gain_val[0]=gain[0];
- gain_val[1]=gain[1];
- gain_val[2]=gain[2];
- gain[0] = SHL16(gain[0],7);
- gain[1] = SHL16(gain[1],7);
- gain[2] = SHL16(gain[2],7);
- for (i=0;i<nsf;i++)
- exc_out[i]=0;
- for (i=0;i<3;i++)
- {
- int j;
- int tmp1, tmp3;
- int pp=pitch+1-i;
- tmp1=nsf;
- if (tmp1>pp)
- tmp1=pp;
- for (j=0;j<tmp1;j++)
- exc_out[j]=MAC16_16(exc_out[j],gain[2-i],exc[j-pp]);
- tmp3=nsf;
- if (tmp3>pp+pitch)
- tmp3=pp+pitch;
- for (j=tmp1;j<tmp3;j++)
- exc_out[j]=MAC16_16(exc_out[j],gain[2-i],exc[j-pp-pitch]);
- }
- /*for (i=0;i<nsf;i++)
- exc[i]=PSHR32(exc32[i],13);*/
-}
-
-
-/** Forced pitch delay and gain */
-int forced_pitch_quant(
-spx_word16_t target[], /* Target vector */
-spx_word16_t *sw,
-spx_coef_t ak[], /* LPCs for this subframe */
-spx_coef_t awk1[], /* Weighted LPCs #1 for this subframe */
-spx_coef_t awk2[], /* Weighted LPCs #2 for this subframe */
-spx_sig_t exc[], /* Excitation */
-const void *par,
-int start, /* Smallest pitch value allowed */
-int end, /* Largest pitch value allowed */
-spx_word16_t pitch_coef, /* Voicing (pitch) coefficient */
-int p, /* Number of LPC coeffs */
-int nsf, /* Number of samples in subframe */
-SpeexBits *bits,
-char *stack,
-spx_word16_t *exc2,
-spx_word16_t *r,
-int complexity,
-int cdbk_offset,
-int plc_tuning,
-spx_word32_t *cumul_gain
-)
-{
- int i;
- VARDECL(spx_word16_t *res);
- ALLOC(res, nsf, spx_word16_t);
-#ifdef FIXED_POINT
- if (pitch_coef>63)
- pitch_coef=63;
-#else
- if (pitch_coef>.99)
- pitch_coef=.99;
-#endif
- for (i=0;i<nsf&&i<start;i++)
- {
- exc[i]=MULT16_16(SHL16(pitch_coef, 7),exc2[i-start]);
- }
- for (;i<nsf;i++)
- {
- exc[i]=MULT16_32_Q15(SHL16(pitch_coef, 9),exc[i-start]);
- }
- for (i=0;i<nsf;i++)
- res[i] = EXTRACT16(PSHR32(exc[i], SIG_SHIFT-1));
- syn_percep_zero16(res, ak, awk1, awk2, res, nsf, p, stack);
- for (i=0;i<nsf;i++)
- target[i]=EXTRACT16(SATURATE(SUB32(EXTEND32(target[i]),EXTEND32(res[i])),32700));
- return start;
-}
-
-/** Unquantize forced pitch delay and gain */
-void forced_pitch_unquant(
-spx_word16_t exc[], /* Input excitation */
-spx_word32_t exc_out[], /* Output excitation */
-int start, /* Smallest pitch value allowed */
-int end, /* Largest pitch value allowed */
-spx_word16_t pitch_coef, /* Voicing (pitch) coefficient */
-const void *par,
-int nsf, /* Number of samples in subframe */
-int *pitch_val,
-spx_word16_t *gain_val,
-SpeexBits *bits,
-char *stack,
-int count_lost,
-int subframe_offset,
-spx_word16_t last_pitch_gain,
-int cdbk_offset
-)
-{
- int i;
-#ifdef FIXED_POINT
- if (pitch_coef>63)
- pitch_coef=63;
-#else
- if (pitch_coef>.99)
- pitch_coef=.99;
-#endif
- for (i=0;i<nsf;i++)
- {
- exc_out[i]=MULT16_16(exc[i-start],SHL16(pitch_coef,7));
- exc[i] = EXTRACT16(PSHR32(exc_out[i],13));
- }
- *pitch_val = start;
- gain_val[0]=gain_val[2]=0;
- gain_val[1] = pitch_coef;
-}
diff --git a/3rdparty/speex/libspeex/ltp.h b/3rdparty/speex/libspeex/ltp.h
deleted file mode 100644
index bc050c63..00000000
--- a/3rdparty/speex/libspeex/ltp.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin */
-/**
- @file ltp.h
- @brief Long-Term Prediction functions
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <speex/speex_bits.h>
-#include "misc.h"
-
-/** LTP parameters. */
-typedef struct {
- const signed char *gain_cdbk;
- int gain_bits;
- int pitch_bits;
-} ltp_params;
-
-#ifdef FIXED_POINT
-#define gain_3tap_to_1tap(g) (ABS(g[1]) + (g[0]>0 ? g[0] : -SHR16(g[0],1)) + (g[2]>0 ? g[2] : -SHR16(g[2],1)))
-#else
-#define gain_3tap_to_1tap(g) (ABS(g[1]) + (g[0]>0 ? g[0] : -.5*g[0]) + (g[2]>0 ? g[2] : -.5*g[2]))
-#endif
-
-spx_word32_t inner_prod(const spx_word16_t *x, const spx_word16_t *y, int len);
-void pitch_xcorr(const spx_word16_t *_x, const spx_word16_t *_y, spx_word32_t *corr, int len, int nb_pitch, char *stack);
-
-void open_loop_nbest_pitch(spx_word16_t *sw, int start, int end, int len, int *pitch, spx_word16_t *gain, int N, char *stack);
-
-
-/** Finds the best quantized 3-tap pitch predictor by analysis by synthesis */
-int pitch_search_3tap(
-spx_word16_t target[], /* Target vector */
-spx_word16_t *sw,
-spx_coef_t ak[], /* LPCs for this subframe */
-spx_coef_t awk1[], /* Weighted LPCs #1 for this subframe */
-spx_coef_t awk2[], /* Weighted LPCs #2 for this subframe */
-spx_sig_t exc[], /* Overlapping codebook */
-const void *par,
-int start, /* Smallest pitch value allowed */
-int end, /* Largest pitch value allowed */
-spx_word16_t pitch_coef, /* Voicing (pitch) coefficient */
-int p, /* Number of LPC coeffs */
-int nsf, /* Number of samples in subframe */
-SpeexBits *bits,
-char *stack,
-spx_word16_t *exc2,
-spx_word16_t *r,
-int complexity,
-int cdbk_offset,
-int plc_tuning,
-spx_word32_t *cumul_gain
-);
-
-/*Unquantize adaptive codebook and update pitch contribution*/
-void pitch_unquant_3tap(
-spx_word16_t exc[], /* Input excitation */
-spx_word32_t exc_out[], /* Output excitation */
-int start, /* Smallest pitch value allowed */
-int end, /* Largest pitch value allowed */
-spx_word16_t pitch_coef, /* Voicing (pitch) coefficient */
-const void *par,
-int nsf, /* Number of samples in subframe */
-int *pitch_val,
-spx_word16_t *gain_val,
-SpeexBits *bits,
-char *stack,
-int lost,
-int subframe_offset,
-spx_word16_t last_pitch_gain,
-int cdbk_offset
-);
-
-/** Forced pitch delay and gain */
-int forced_pitch_quant(
-spx_word16_t target[], /* Target vector */
-spx_word16_t *sw,
-spx_coef_t ak[], /* LPCs for this subframe */
-spx_coef_t awk1[], /* Weighted LPCs #1 for this subframe */
-spx_coef_t awk2[], /* Weighted LPCs #2 for this subframe */
-spx_sig_t exc[], /* Excitation */
-const void *par,
-int start, /* Smallest pitch value allowed */
-int end, /* Largest pitch value allowed */
-spx_word16_t pitch_coef, /* Voicing (pitch) coefficient */
-int p, /* Number of LPC coeffs */
-int nsf, /* Number of samples in subframe */
-SpeexBits *bits,
-char *stack,
-spx_word16_t *exc2,
-spx_word16_t *r,
-int complexity,
-int cdbk_offset,
-int plc_tuning,
-spx_word32_t *cumul_gain
-);
-
-/** Unquantize forced pitch delay and gain */
-void forced_pitch_unquant(
-spx_word16_t exc[], /* Input excitation */
-spx_word32_t exc_out[], /* Output excitation */
-int start, /* Smallest pitch value allowed */
-int end, /* Largest pitch value allowed */
-spx_word16_t pitch_coef, /* Voicing (pitch) coefficient */
-const void *par,
-int nsf, /* Number of samples in subframe */
-int *pitch_val,
-spx_word16_t *gain_val,
-SpeexBits *bits,
-char *stack,
-int lost,
-int subframe_offset,
-spx_word16_t last_pitch_gain,
-int cdbk_offset
-);
diff --git a/3rdparty/speex/libspeex/ltp_arm4.h b/3rdparty/speex/libspeex/ltp_arm4.h
deleted file mode 100644
index 7479e8bf..00000000
--- a/3rdparty/speex/libspeex/ltp_arm4.h
+++ /dev/null
@@ -1,188 +0,0 @@
-/* Copyright (C) 2004 Jean-Marc Valin */
-/**
- @file ltp_arm4.h
- @brief Long-Term Prediction functions (ARM4 version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#define OVERRIDE_INNER_PROD
-spx_word32_t inner_prod(const spx_word16_t *x, const spx_word16_t *y, int len)
-{
- spx_word32_t sum1=0,sum2=0;
- spx_word16_t *deadx, *deady;
- int deadlen, dead1, dead2, dead3, dead4, dead5, dead6;
- __asm__ __volatile__ (
- "\tldrsh %5, [%0], #2 \n"
- "\tldrsh %6, [%1], #2 \n"
- ".inner_prod_loop%=:\n"
- "\tsub %7, %7, %7\n"
- "\tsub %10, %10, %10\n"
-
- "\tldrsh %8, [%0], #2 \n"
- "\tldrsh %9, [%1], #2 \n"
- "\tmla %7, %5, %6, %7\n"
- "\tldrsh %5, [%0], #2 \n"
- "\tldrsh %6, [%1], #2 \n"
- "\tmla %10, %8, %9, %10\n"
- "\tldrsh %8, [%0], #2 \n"
- "\tldrsh %9, [%1], #2 \n"
- "\tmla %7, %5, %6, %7\n"
- "\tldrsh %5, [%0], #2 \n"
- "\tldrsh %6, [%1], #2 \n"
- "\tmla %10, %8, %9, %10\n"
-
- "\tldrsh %8, [%0], #2 \n"
- "\tldrsh %9, [%1], #2 \n"
- "\tmla %7, %5, %6, %7\n"
- "\tldrsh %5, [%0], #2 \n"
- "\tldrsh %6, [%1], #2 \n"
- "\tmla %10, %8, %9, %10\n"
- "\tldrsh %8, [%0], #2 \n"
- "\tldrsh %9, [%1], #2 \n"
- "\tmla %7, %5, %6, %7\n"
- "\tldrsh %5, [%0], #2 \n"
- "\tldrsh %6, [%1], #2 \n"
- "\tmla %10, %8, %9, %10\n"
-
- "\tsubs %4, %4, #1\n"
- "\tadd %2, %2, %7, asr #5\n"
- "\tadd %3, %3, %10, asr #5\n"
- "\tbne .inner_prod_loop%=\n"
- : "=r" (deadx), "=r" (deady), "=r" (sum1), "=r" (sum2), "=r" (deadlen),
- "=r" (dead1), "=r" (dead2), "=r" (dead3), "=r" (dead4), "=r" (dead5), "=r" (dead6)
- : "0" (x), "1" (y), "2" (sum1), "3" (sum2), "4" (len>>3)
- : "cc"
- );
- return (sum1+sum2)>>1;
-}
-
-#define OVERRIDE_PITCH_XCORR
-void pitch_xcorr(const spx_word16_t *_x, const spx_word16_t *_y, spx_word32_t *corr, int len, int nb_pitch, char *stack)
-{
- int i,j;
- for (i=0;i<nb_pitch;i+=4)
- {
- /* Compute correlation*/
- //corr[nb_pitch-1-i]=inner_prod(x, _y+i, len);
- spx_word32_t sum1=0;
- spx_word32_t sum2=0;
- spx_word32_t sum3=0;
- spx_word32_t sum4=0;
- const spx_word16_t *y = _y+i;
- const spx_word16_t *x = _x;
- spx_word32_t y0, y1, y2, y3;
- y0=*y++;
- y1=*y++;
- y2=*y++;
- y3=*y++;
- for (j=0;j<len;j+=4)
- {
- spx_word32_t part1, part2, part3, part4, x0;
- spx_word32_t dead1;
- __asm__ __volatile__ (
-#ifdef SHORTCUTS
- "\tldrsh %10, [%8], #4 \n"
- "\tmul %4, %10, %0 \n"
- "\tldrsh %15, [%8], #4 \n"
- "\tmul %5, %10, %1 \n"
- "\tldrsh %0, [%9], #2 \n"
- "\tmul %6, %10, %2 \n"
- "\tldrsh %1, [%9], #2 \n"
- "\tmul %7, %10, %3 \n"
-
-
- "\tmla %4, %15, %2, %4 \n"
- "\tldrsh %2, [%9], #2 \n"
- "\tmla %5, %15, %3, %5 \n"
- "\tldrsh %3, [%9], #2 \n"
- "\tmla %6, %15, %0, %6 \n"
- "\tmla %7, %15, %1, %7 \n"
-
-#else
- "\tldrsh %10, [%8], #2 \n"
- "\tmul %4, %10, %0 \n"
- "\tmul %5, %10, %1 \n"
- "\tmul %6, %10, %2 \n"
- "\tmul %7, %10, %3 \n"
-
- "\tldrsh %10, [%8], #2 \n"
- "\tldrsh %0, [%9], #2 \n"
- "\tmla %4, %10, %1, %4 \n"
- "\tmla %5, %10, %2, %5 \n"
- "\tmla %6, %10, %3, %6 \n"
- "\tmla %7, %10, %0, %7 \n"
-
- "\tldrsh %10, [%8], #2 \n"
- "\tldrsh %1, [%9], #2 \n"
- "\tmla %4, %10, %2, %4 \n"
- "\tmla %5, %10, %3, %5 \n"
- "\tmla %6, %10, %0, %6 \n"
- "\tmla %7, %10, %1, %7 \n"
-
- "\tldrsh %10, [%8], #2 \n"
- "\tldrsh %2, [%9], #2 \n"
- "\tmla %4, %10, %3, %4 \n"
- "\tmla %5, %10, %0, %5 \n"
- "\tmla %6, %10, %1, %6 \n"
- "\tmla %7, %10, %2, %7 \n"
-
- "\tldrsh %3, [%9], #2 \n"
-#endif
-
- "\tldr %10, %11 \n"
- "\tldr %15, %12 \n"
- "\tadd %4, %10, %4, asr #6 \n"
- "\tstr %4, %11 \n"
- "\tldr %10, %13 \n"
- "\tadd %5, %15, %5, asr #6 \n"
- "\tstr %5, %12 \n"
- "\tldr %15, %14 \n"
- "\tadd %6, %10, %6, asr #6 \n"
- "\tadd %7, %15, %7, asr #6 \n"
- "\tstr %6, %13 \n"
- "\tstr %7, %14 \n"
-
- : "=r" (y0), "=r" (y1), "=r" (y2), "=r" (y3),
- "=r" (part1), "=r" (part2), "=r" (part3), "=r" (part4),
- "=r" (x), "=r" (y), "=r" (x0),
- "=m" (sum1), "=m" (sum2), "=m" (sum3), "=m" (sum4), "=r" (dead1)
- : "0" (y0), "1" (y1), "2" (y2), "3" (y3),
- "8" (x), "9" (y),
- "11" (sum1), "12" (sum2), "13" (sum3), "14" (sum4)
- : "cc", "memory"
- );
- }
- corr[nb_pitch-1-i]=sum1;
- corr[nb_pitch-2-i]=sum2;
- corr[nb_pitch-3-i]=sum3;
- corr[nb_pitch-4-i]=sum4;
- }
-
-}
diff --git a/3rdparty/speex/libspeex/ltp_bfin.h b/3rdparty/speex/libspeex/ltp_bfin.h
deleted file mode 100644
index c4669022..00000000
--- a/3rdparty/speex/libspeex/ltp_bfin.h
+++ /dev/null
@@ -1,419 +0,0 @@
-/* Copyright (C) 2005 Analog Devices */
-/**
- @file ltp_bfin.h
- @author Jean-Marc Valin
- @brief Long-Term Prediction functions (Blackfin version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#define OVERRIDE_INNER_PROD
-spx_word32_t inner_prod(const spx_word16_t *x, const spx_word16_t *y, int len)
-{
- spx_word32_t sum=0;
- __asm__ __volatile__ (
- "P0 = %3;\n\t"
- "P1 = %1;\n\t"
- "P2 = %2;\n\t"
- "I0 = P1;\n\t"
- "I1 = P2;\n\t"
- "L0 = 0;\n\t"
- "L1 = 0;\n\t"
- "A0 = 0;\n\t"
- "R0.L = W[I0++] || R1.L = W[I1++];\n\t"
- "LOOP inner%= LC0 = P0;\n\t"
- "LOOP_BEGIN inner%=;\n\t"
- "A0 += R0.L*R1.L (IS) || R0.L = W[I0++] || R1.L = W[I1++];\n\t"
- "LOOP_END inner%=;\n\t"
- "A0 += R0.L*R1.L (IS);\n\t"
- "A0 = A0 >>> 6;\n\t"
- "R0 = A0;\n\t"
- "%0 = R0;\n\t"
- : "=m" (sum)
- : "m" (x), "m" (y), "d" (len-1)
- : "P0", "P1", "P2", "R0", "R1", "A0", "I0", "I1", "L0", "L1", "R3"
- );
- return sum;
-}
-
-#define OVERRIDE_PITCH_XCORR
-void pitch_xcorr(const spx_word16_t *_x, const spx_word16_t *_y, spx_word32_t *corr, int len, int nb_pitch, char *stack)
-{
- corr += nb_pitch - 1;
- __asm__ __volatile__ (
- "P2 = %0;\n\t"
- "I0 = P2;\n\t" /* x in I0 */
- "B0 = P2;\n\t" /* x in B0 */
- "R0 = %3;\n\t" /* len in R0 */
- "P3 = %3;\n\t"
- "P3 += -2;\n\t" /* len in R0 */
- "P4 = %4;\n\t" /* nb_pitch in R0 */
- "R1 = R0 << 1;\n\t" /* number of bytes in x */
- "L0 = R1;\n\t"
- "P0 = %1;\n\t"
-
- "P1 = %2;\n\t"
- "B1 = P1;\n\t"
- "L1 = 0;\n\t" /*Disable looping on I1*/
-
- "r0 = [I0++];\n\t"
- "LOOP pitch%= LC0 = P4 >> 1;\n\t"
- "LOOP_BEGIN pitch%=;\n\t"
- "I1 = P0;\n\t"
- "A1 = A0 = 0;\n\t"
- "R1 = [I1++];\n\t"
- "LOOP inner_prod%= LC1 = P3 >> 1;\n\t"
- "LOOP_BEGIN inner_prod%=;\n\t"
- "A1 += R0.L*R1.H, A0 += R0.L*R1.L (IS) || R1.L = W[I1++];\n\t"
- "A1 += R0.H*R1.L, A0 += R0.H*R1.H (IS) || R1.H = W[I1++] || R0 = [I0++];\n\t"
- "LOOP_END inner_prod%=;\n\t"
- "A1 += R0.L*R1.H, A0 += R0.L*R1.L (IS) || R1.L = W[I1++];\n\t"
- "A1 += R0.H*R1.L, A0 += R0.H*R1.H (IS) || R0 = [I0++];\n\t"
- "A0 = A0 >>> 6;\n\t"
- "A1 = A1 >>> 6;\n\t"
- "R2 = A0, R3 = A1;\n\t"
- "[P1--] = r2;\n\t"
- "[P1--] = r3;\n\t"
- "P0 += 4;\n\t"
- "LOOP_END pitch%=;\n\t"
- "L0 = 0;\n\t"
- : : "m" (_x), "m" (_y), "m" (corr), "m" (len), "m" (nb_pitch)
- : "A0", "A1", "P0", "P1", "P2", "P3", "P4", "R0", "R1", "R2", "R3", "I0", "I1", "L0", "L1", "B0", "B1", "memory"
- );
-}
-
-#define OVERRIDE_COMPUTE_PITCH_ERROR
-static inline spx_word32_t compute_pitch_error(spx_word16_t *C, spx_word16_t *g, spx_word16_t pitch_control)
-{
- spx_word32_t sum;
- __asm__ __volatile__
- (
- "A0 = 0;\n\t"
-
- "R0 = W[%1++];\n\t"
- "R1.L = %2.L*%5.L (IS);\n\t"
- "A0 += R1.L*R0.L (IS) || R0 = W[%1++];\n\t"
-
- "R1.L = %3.L*%5.L (IS);\n\t"
- "A0 += R1.L*R0.L (IS) || R0 = W[%1++];\n\t"
-
- "R1.L = %4.L*%5.L (IS);\n\t"
- "A0 += R1.L*R0.L (IS) || R0 = W[%1++];\n\t"
-
- "R1.L = %2.L*%3.L (IS);\n\t"
- "A0 -= R1.L*R0.L (IS) || R0 = W[%1++];\n\t"
-
- "R1.L = %4.L*%3.L (IS);\n\t"
- "A0 -= R1.L*R0.L (IS) || R0 = W[%1++];\n\t"
-
- "R1.L = %4.L*%2.L (IS);\n\t"
- "A0 -= R1.L*R0.L (IS) || R0 = W[%1++];\n\t"
-
- "R1.L = %2.L*%2.L (IS);\n\t"
- "A0 -= R1.L*R0.L (IS) || R0 = W[%1++];\n\t"
-
- "R1.L = %3.L*%3.L (IS);\n\t"
- "A0 -= R1.L*R0.L (IS) || R0 = W[%1++];\n\t"
-
- "R1.L = %4.L*%4.L (IS);\n\t"
- "A0 -= R1.L*R0.L (IS);\n\t"
-
- "%0 = A0;\n\t"
- : "=&D" (sum), "=a" (C)
- : "d" (g[0]), "d" (g[1]), "d" (g[2]), "d" (pitch_control), "1" (C)
- : "R0", "R1", "R2", "A0"
- );
- return sum;
-}
-
-#define OVERRIDE_OPEN_LOOP_NBEST_PITCH
-#ifdef OVERRIDE_OPEN_LOOP_NBEST_PITCH
-void open_loop_nbest_pitch(spx_word16_t *sw, int start, int end, int len, int *pitch, spx_word16_t *gain, int N, char *stack)
-{
- int i,j,k;
- VARDECL(spx_word32_t *best_score);
- VARDECL(spx_word32_t *best_ener);
- spx_word32_t e0;
- VARDECL(spx_word32_t *corr);
- VARDECL(spx_word32_t *energy);
-
- ALLOC(best_score, N, spx_word32_t);
- ALLOC(best_ener, N, spx_word32_t);
- ALLOC(corr, end-start+1, spx_word32_t);
- ALLOC(energy, end-start+2, spx_word32_t);
-
- for (i=0;i<N;i++)
- {
- best_score[i]=-1;
- best_ener[i]=0;
- pitch[i]=start;
- }
-
- energy[0]=inner_prod(sw-start, sw-start, len);
- e0=inner_prod(sw, sw, len);
-
- /* energy update -------------------------------------*/
-
- __asm__ __volatile__
- (
-" P0 = %0;\n\t"
-" I1 = %1;\n\t"
-" L1 = 0;\n\t"
-" I2 = %2;\n\t"
-" L2 = 0;\n\t"
-" R2 = [P0++];\n\t"
-" R3 = 0;\n\t"
-" LSETUP (eu1, eu2) LC1 = %3;\n\t"
-"eu1: R1.L = W [I1--] || R0.L = W [I2--] ;\n\t"
-" R1 = R1.L * R1.L (IS);\n\t"
-" R0 = R0.L * R0.L (IS);\n\t"
-" R1 >>>= 6;\n\t"
-" R1 = R1 + R2;\n\t"
-" R0 >>>= 6;\n\t"
-" R1 = R1 - R0;\n\t"
-" R2 = MAX(R1,R3);\n\t"
-"eu2: [P0++] = R2;\n\t"
- : : "d" (energy), "d" (&sw[-start-1]), "d" (&sw[-start+len-1]),
- "a" (end-start)
- : "P0", "I1", "I2", "R0", "R1", "R2", "R3"
-#if (__GNUC__ == 4)
- , "LC1"
-#endif
- );
-
- pitch_xcorr(sw, sw-end, corr, len, end-start+1, stack);
-
- /* FIXME: Fixed-point and floating-point code should be merged */
- {
- VARDECL(spx_word16_t *corr16);
- VARDECL(spx_word16_t *ener16);
- ALLOC(corr16, end-start+1, spx_word16_t);
- ALLOC(ener16, end-start+1, spx_word16_t);
- /* Normalize to 180 so we can square it and it still fits in 16 bits */
- normalize16(corr, corr16, 180, end-start+1);
- normalize16(energy, ener16, 180, end-start+1);
-
- if (N == 1) {
- /* optimised asm to handle N==1 case */
- __asm__ __volatile__
- (
-" I0 = %1;\n\t" /* I0: corr16[] */
-" L0 = 0;\n\t"
-" I1 = %2;\n\t" /* I1: energy */
-" L1 = 0;\n\t"
-" R2 = -1;\n\t" /* R2: best score */
-" R3 = 0;\n\t" /* R3: best energy */
-" P0 = %4;\n\t" /* P0: best pitch */
-" P1 = %4;\n\t" /* P1: counter */
-" LSETUP (sl1, sl2) LC1 = %3;\n\t"
-"sl1: R0.L = W [I0++] || R1.L = W [I1++];\n\t"
-" R0 = R0.L * R0.L (IS);\n\t"
-" R1 += 1;\n\t"
-" R4 = R0.L * R3.L;\n\t"
-" R5 = R2.L * R1.L;\n\t"
-" cc = R5 < R4;\n\t"
-" if cc R2 = R0;\n\t"
-" if cc R3 = R1;\n\t"
-" if cc P0 = P1;\n\t"
-"sl2: P1 += 1;\n\t"
-" %0 = P0;\n\t"
- : "=&d" (pitch[0])
- : "a" (corr16), "a" (ener16), "a" (end+1-start), "d" (start)
- : "P0", "P1", "I0", "I1", "R0", "R1", "R2", "R3", "R4", "R5"
-#if (__GNUC__ == 4)
- , "LC1"
-#endif
- );
-
- }
- else {
- for (i=start;i<=end;i++)
- {
- spx_word16_t tmp = MULT16_16_16(corr16[i-start],corr16[i-start]);
- /* Instead of dividing the tmp by the energy, we multiply on the other side */
- if (MULT16_16(tmp,best_ener[N-1])>MULT16_16(best_score[N-1],ADD16(1,ener16[i-start])))
- {
- /* We can safely put it last and then check */
- best_score[N-1]=tmp;
- best_ener[N-1]=ener16[i-start]+1;
- pitch[N-1]=i;
- /* Check if it comes in front of others */
- for (j=0;j<N-1;j++)
- {
- if (MULT16_16(tmp,best_ener[j])>MULT16_16(best_score[j],ADD16(1,ener16[i-start])))
- {
- for (k=N-1;k>j;k--)
- {
- best_score[k]=best_score[k-1];
- best_ener[k]=best_ener[k-1];
- pitch[k]=pitch[k-1];
- }
- best_score[j]=tmp;
- best_ener[j]=ener16[i-start]+1;
- pitch[j]=i;
- break;
- }
- }
- }
- }
- }
- }
-
- /* Compute open-loop gain */
- if (gain)
- {
- for (j=0;j<N;j++)
- {
- spx_word16_t g;
- i=pitch[j];
- g = DIV32(corr[i-start], 10+SHR32(MULT16_16(spx_sqrt(e0),spx_sqrt(energy[i-start])),6));
- /* FIXME: g = max(g,corr/energy) */
- if (g<0)
- g = 0;
- gain[j]=g;
- }
- }
-}
-#endif
-
-#define OVERRIDE_PITCH_GAIN_SEARCH_3TAP_VQ
-#ifdef OVERRIDE_PITCH_GAIN_SEARCH_3TAP_VQ
-static int pitch_gain_search_3tap_vq(
- const signed char *gain_cdbk,
- int gain_cdbk_size,
- spx_word16_t *C16,
- spx_word16_t max_gain
-)
-{
- const signed char *ptr=gain_cdbk;
- int best_cdbk=0;
- spx_word32_t best_sum=-VERY_LARGE32;
- spx_word32_t sum=0;
- spx_word16_t g[3];
- spx_word16_t pitch_control=64;
- spx_word16_t gain_sum;
- int i;
-
- /* fast asm version of VQ codebook search */
-
- __asm__ __volatile__
- (
-
-" P0 = %2;\n\t" /* P0: ptr to gain_cdbk */
-" L1 = 0;\n\t" /* no circ addr for L1 */
-" %0 = 0;\n\t" /* %0: best_sum */
-" %1 = 0;\n\t" /* %1: best_cbdk */
-" P1 = 0;\n\t" /* P1: loop counter */
-" R5 = 64;\n\t" /* R5: pitch_control */
-
-" LSETUP (pgs1, pgs2) LC1 = %4;\n\t"
-"pgs1: R2 = B [P0++] (X);\n\t" /* R2: g[0] */
-" R3 = B [P0++] (X);\n\t" /* R3: g[1] */
-" R4 = B [P0++] (X);\n\t" /* R4: g[2] */
-" R2 += 32;\n\t"
-" R3 += 32;\n\t"
-" R4 += 32;\n\t"
-
-" R0 = B [P0++] (X);\n\t"
-" B0 = R0;\n\t" /* BO: gain_sum */
-
- /* compute_pitch_error() -------------------------------*/
-
-" I1 = %3;\n\t" /* I1: ptr to C */
-" A0 = 0;\n\t"
-
-" R0.L = W[I1++];\n\t"
-" R1.L = R2.L*R5.L (IS);\n\t"
-" A0 += R1.L*R0.L (IS) || R0.L = W[I1++];\n\t"
-
-" R1.L = R3.L*R5.L (IS);\n\t"
-" A0 += R1.L*R0.L (IS) || R0.L = W[I1++];\n\t"
-
-" R1.L = R4.L*R5.L (IS);\n\t"
-" A0 += R1.L*R0.L (IS) || R0.L = W[I1++];\n\t"
-
-" R1.L = R2.L*R3.L (IS);\n\t"
-" A0 -= R1.L*R0.L (IS) || R0.L = W[I1++];\n\t"
-
-" R1.L = R4.L*R3.L (IS);\n\t"
-" A0 -= R1.L*R0.L (IS) || R0.L = W[I1++];\n\t"
-
-" R1.L = R4.L*R2.L (IS);\n\t"
-" A0 -= R1.L*R0.L (IS) || R0.L = W[I1++];\n\t"
-
-" R1.L = R2.L*R2.L (IS);\n\t"
-" A0 -= R1.L*R0.L (IS) || R0.L = W[I1++];\n\t"
-
-" R1.L = R3.L*R3.L (IS);\n\t"
-" A0 -= R1.L*R0.L (IS) || R0.L = W[I1++];\n\t"
-
-" R1.L = R4.L*R4.L (IS);\n\t"
-" R0 = (A0 -= R1.L*R0.L) (IS);\n\t"
-
-/*
- Re-arrange the if-then to code efficiently on the Blackfin:
-
- if (sum>best_sum && gain_sum<=max_gain) ------ (1)
-
- if (sum>best_sum && !(gain_sum>max_gain)) ------ (2)
-
- if (max_gain<=gain_sum) { ------ (3)
- sum = -VERY_LARGE32;
- }
- if (best_sum<=sum)
-
- The blackin cc instructions are all of the form:
-
- cc = x < y (or cc = x <= y)
-*/
-" R1 = B0\n\t"
-" R2 = %5\n\t"
-" R3 = %6\n\t"
-" cc = R2 <= R1;\n\t"
-" if cc R0 = R3;\n\t"
-" cc = %0 <= R0;\n\t"
-" if cc %0 = R0;\n\t"
-" if cc %1 = P1;\n\t"
-
-"pgs2: P1 += 1;\n\t"
-
- : "=&d" (best_sum), "=&d" (best_cdbk)
- : "a" (gain_cdbk), "a" (C16), "a" (gain_cdbk_size), "a" (max_gain),
- "b" (-VERY_LARGE32)
- : "R0", "R1", "R2", "R3", "R4", "R5", "P0",
- "P1", "I1", "L1", "A0", "B0"
-#if (__GNUC__ == 4)
- , "LC1"
-#endif
- );
-
- return best_cdbk;
-}
-#endif
-
diff --git a/3rdparty/speex/libspeex/ltp_sse.h b/3rdparty/speex/libspeex/ltp_sse.h
deleted file mode 100644
index bed6eaac..00000000
--- a/3rdparty/speex/libspeex/ltp_sse.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin */
-/**
- @file ltp_sse.h
- @brief Long-Term Prediction functions (SSE version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <xmmintrin.h>
-
-#define OVERRIDE_INNER_PROD
-float inner_prod(const float *a, const float *b, int len)
-{
- int i;
- float ret;
- __m128 sum = _mm_setzero_ps();
- for (i=0;i<(len>>2);i+=2)
- {
- sum = _mm_add_ps(sum, _mm_mul_ps(_mm_loadu_ps(a+0), _mm_loadu_ps(b+0)));
- sum = _mm_add_ps(sum, _mm_mul_ps(_mm_loadu_ps(a+4), _mm_loadu_ps(b+4)));
- a += 8;
- b += 8;
- }
- sum = _mm_add_ps(sum, _mm_movehl_ps(sum, sum));
- sum = _mm_add_ss(sum, _mm_shuffle_ps(sum, sum, 0x55));
- _mm_store_ss(&ret, sum);
- return ret;
-}
-
-#define OVERRIDE_PITCH_XCORR
-void pitch_xcorr(const float *_x, const float *_y, float *corr, int len, int nb_pitch, char *stack)
-{
- int i, offset;
- VARDECL(__m128 *x);
- VARDECL(__m128 *y);
- int N, L;
- N = len>>2;
- L = nb_pitch>>2;
- ALLOC(x, N, __m128);
- ALLOC(y, N+L, __m128);
- for (i=0;i<N;i++)
- x[i] = _mm_loadu_ps(_x+(i<<2));
- for (offset=0;offset<4;offset++)
- {
- for (i=0;i<N+L;i++)
- y[i] = _mm_loadu_ps(_y+(i<<2)+offset);
- for (i=0;i<L;i++)
- {
- int j;
- __m128 sum, *xx, *yy;
- sum = _mm_setzero_ps();
- yy = y+i;
- xx = x;
- for (j=0;j<N;j+=2)
- {
- sum = _mm_add_ps(sum, _mm_mul_ps(xx[0], yy[0]));
- sum = _mm_add_ps(sum, _mm_mul_ps(xx[1], yy[1]));
- xx += 2;
- yy += 2;
- }
- sum = _mm_add_ps(sum, _mm_movehl_ps(sum, sum));
- sum = _mm_add_ss(sum, _mm_shuffle_ps(sum, sum, 0x55));
- _mm_store_ss(corr+nb_pitch-1-(i<<2)-offset, sum);
- }
- }
-}
diff --git a/3rdparty/speex/libspeex/math_approx.c b/3rdparty/speex/libspeex/math_approx.c
deleted file mode 100644
index 21af7667..00000000
--- a/3rdparty/speex/libspeex/math_approx.c
+++ /dev/null
@@ -1,291 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: math_approx.c
- Various math approximation functions for Speex
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "math_approx.h"
-#include "misc.h"
-
-spx_int16_t spx_ilog2(spx_uint32_t x)
-{
- int r=0;
- if (x>=(spx_int32_t)65536)
- {
- x >>= 16;
- r += 16;
- }
- if (x>=256)
- {
- x >>= 8;
- r += 8;
- }
- if (x>=16)
- {
- x >>= 4;
- r += 4;
- }
- if (x>=4)
- {
- x >>= 2;
- r += 2;
- }
- if (x>=2)
- {
- r += 1;
- }
- return r;
-}
-
-spx_int16_t spx_ilog4(spx_uint32_t x)
-{
- int r=0;
- if (x>=(spx_int32_t)65536)
- {
- x >>= 16;
- r += 8;
- }
- if (x>=256)
- {
- x >>= 8;
- r += 4;
- }
- if (x>=16)
- {
- x >>= 4;
- r += 2;
- }
- if (x>=4)
- {
- r += 1;
- }
- return r;
-}
-
-#ifdef FIXED_POINT
-
-/* sqrt(x) ~= 0.22178 + 1.29227*x - 0.77070*x^2 + 0.25723*x^3 (for .25 < x < 1) */
-/*#define C0 3634
-#define C1 21173
-#define C2 -12627
-#define C3 4215*/
-
-/* sqrt(x) ~= 0.22178 + 1.29227*x - 0.77070*x^2 + 0.25659*x^3 (for .25 < x < 1) */
-#define C0 3634
-#define C1 21173
-#define C2 -12627
-#define C3 4204
-
-spx_word16_t spx_sqrt(spx_word32_t x)
-{
- int k;
- spx_word32_t rt;
- k = spx_ilog4(x)-6;
- x = VSHR32(x, (k<<1));
- rt = ADD16(C0, MULT16_16_Q14(x, ADD16(C1, MULT16_16_Q14(x, ADD16(C2, MULT16_16_Q14(x, (C3)))))));
- rt = VSHR32(rt,7-k);
- return rt;
-}
-
-/* log(x) ~= -2.18151 + 4.20592*x - 2.88938*x^2 + 0.86535*x^3 (for .5 < x < 1) */
-
-
-#define A1 16469
-#define A2 2242
-#define A3 1486
-
-spx_word16_t spx_acos(spx_word16_t x)
-{
- int s=0;
- spx_word16_t ret;
- spx_word16_t sq;
- if (x<0)
- {
- s=1;
- x = NEG16(x);
- }
- x = SUB16(16384,x);
-
- x = x >> 1;
- sq = MULT16_16_Q13(x, ADD16(A1, MULT16_16_Q13(x, ADD16(A2, MULT16_16_Q13(x, (A3))))));
- ret = spx_sqrt(SHL32(EXTEND32(sq),13));
-
- /*ret = spx_sqrt(67108864*(-1.6129e-04 + 2.0104e+00*f + 2.7373e-01*f*f + 1.8136e-01*f*f*f));*/
- if (s)
- ret = SUB16(25736,ret);
- return ret;
-}
-
-
-#define K1 8192
-#define K2 -4096
-#define K3 340
-#define K4 -10
-
-spx_word16_t spx_cos(spx_word16_t x)
-{
- spx_word16_t x2;
-
- if (x<12868)
- {
- x2 = MULT16_16_P13(x,x);
- return ADD32(K1, MULT16_16_P13(x2, ADD32(K2, MULT16_16_P13(x2, ADD32(K3, MULT16_16_P13(K4, x2))))));
- } else {
- x = SUB16(25736,x);
- x2 = MULT16_16_P13(x,x);
- return SUB32(-K1, MULT16_16_P13(x2, ADD32(K2, MULT16_16_P13(x2, ADD32(K3, MULT16_16_P13(K4, x2))))));
- }
-}
-
-#define L1 32767
-#define L2 -7651
-#define L3 8277
-#define L4 -626
-
-static inline spx_word16_t _spx_cos_pi_2(spx_word16_t x)
-{
- spx_word16_t x2;
-
- x2 = MULT16_16_P15(x,x);
- return ADD16(1,MIN16(32766,ADD32(SUB16(L1,x2), MULT16_16_P15(x2, ADD32(L2, MULT16_16_P15(x2, ADD32(L3, MULT16_16_P15(L4, x2))))))));
-}
-
-spx_word16_t spx_cos_norm(spx_word32_t x)
-{
- x = x&0x0001ffff;
- if (x>SHL32(EXTEND32(1), 16))
- x = SUB32(SHL32(EXTEND32(1), 17),x);
- if (x&0x00007fff)
- {
- if (x<SHL32(EXTEND32(1), 15))
- {
- return _spx_cos_pi_2(EXTRACT16(x));
- } else {
- return NEG32(_spx_cos_pi_2(EXTRACT16(65536-x)));
- }
- } else {
- if (x&0x0000ffff)
- return 0;
- else if (x&0x0001ffff)
- return -32767;
- else
- return 32767;
- }
-}
-
-/*
- K0 = 1
- K1 = log(2)
- K2 = 3-4*log(2)
- K3 = 3*log(2) - 2
-*/
-#define D0 16384
-#define D1 11356
-#define D2 3726
-#define D3 1301
-/* Input in Q11 format, output in Q16 */
-static spx_word32_t spx_exp2(spx_word16_t x)
-{
- int integer;
- spx_word16_t frac;
- integer = SHR16(x,11);
- if (integer>14)
- return 0x7fffffff;
- else if (integer < -15)
- return 0;
- frac = SHL16(x-SHL16(integer,11),3);
- frac = ADD16(D0, MULT16_16_Q14(frac, ADD16(D1, MULT16_16_Q14(frac, ADD16(D2 , MULT16_16_Q14(D3,frac))))));
- return VSHR32(EXTEND32(frac), -integer-2);
-}
-
-/* Input in Q11 format, output in Q16 */
-spx_word32_t spx_exp(spx_word16_t x)
-{
- if (x>21290)
- return 0x7fffffff;
- else if (x<-21290)
- return 0;
- else
- return spx_exp2(MULT16_16_P14(23637,x));
-}
-#define M1 32767
-#define M2 -21
-#define M3 -11943
-#define M4 4936
-
-static inline spx_word16_t spx_atan01(spx_word16_t x)
-{
- return MULT16_16_P15(x, ADD32(M1, MULT16_16_P15(x, ADD32(M2, MULT16_16_P15(x, ADD32(M3, MULT16_16_P15(M4, x)))))));
-}
-
-/* Input in Q15, output in Q14 */
-spx_word16_t spx_atan(spx_word32_t x)
-{
- if (x <= 32767)
- {
- return SHR16(spx_atan01(x),1);
- } else {
- int e = spx_ilog2(x);
- if (e>=29)
- return 25736;
- x = DIV32_16(SHL32(EXTEND32(32767),29-e), EXTRACT16(SHR32(x, e-14)));
- return SUB16(25736, SHR16(spx_atan01(x),1));
- }
-}
-#else
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846 /* pi */
-#endif
-
-#define C1 0.9999932946f
-#define C2 -0.4999124376f
-#define C3 0.0414877472f
-#define C4 -0.0012712095f
-
-
-#define SPX_PI_2 1.5707963268
-spx_word16_t spx_cos(spx_word16_t x)
-{
- if (x<SPX_PI_2)
- {
- x *= x;
- return C1 + x*(C2+x*(C3+C4*x));
- } else {
- x = M_PI-x;
- x *= x;
- return NEG16(C1 + x*(C2+x*(C3+C4*x)));
- }
-}
-
-#endif
diff --git a/3rdparty/speex/libspeex/math_approx.h b/3rdparty/speex/libspeex/math_approx.h
deleted file mode 100644
index 49cfda6e..00000000
--- a/3rdparty/speex/libspeex/math_approx.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin */
-/**
- @file math_approx.h
- @brief Various math approximation functions for Speex
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef MATH_APPROX_H
-#define MATH_APPROX_H
-
-#include "misc.h"
-
-spx_word16_t spx_cos(spx_word16_t x);
-spx_int16_t spx_ilog2(spx_uint32_t x);
-spx_int16_t spx_ilog4(spx_uint32_t x);
-#ifdef FIXED_POINT
-spx_word16_t spx_sqrt(spx_word32_t x);
-spx_word16_t spx_acos(spx_word16_t x);
-spx_word32_t spx_exp(spx_word16_t x);
-spx_word16_t spx_cos_norm(spx_word32_t x);
-
-/* Input in Q15, output in Q14 */
-spx_word16_t spx_atan(spx_word32_t x);
-
-#else
-
-#define spx_sqrt sqrt
-#define spx_acos acos
-#define spx_exp exp
-#define spx_cos_norm(x) (cos((.5f*M_PI)*(x)))
-#define spx_atan atan
-
-#endif
-
-#endif
diff --git a/3rdparty/speex/libspeex/mdf.c b/3rdparty/speex/libspeex/mdf.c
deleted file mode 100644
index bc68f91e..00000000
--- a/3rdparty/speex/libspeex/mdf.c
+++ /dev/null
@@ -1,1176 +0,0 @@
-/* Copyright (C) 2003-2006 Jean-Marc Valin
-
- File: mdf.c
- Echo canceller based on the MDF algorithm (see below)
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- The echo canceller is based on the MDF algorithm described in:
-
- J. S. Soo, K. K. Pang Multidelay block frequency adaptive filter,
- IEEE Trans. Acoust. Speech Signal Process., Vol. ASSP-38, No. 2,
- February 1990.
-
- We use the Alternatively Updated MDF (AUMDF) variant. Robustness to
- double-talk is achieved using a variable learning rate as described in:
-
- Valin, J.-M., On Adjusting the Learning Rate in Frequency Domain Echo
- Cancellation With Double-Talk. To appear in IEEE Transactions on Audio,
- Speech and Language Processing, 2006.
- http://people.xiph.org/~jm/papers/valin_taslp2006.pdf
-
- There is no explicit double-talk detection, but a continuous variation
- in the learning rate based on residual echo, double-talk and background
- noise.
-
- About the fixed-point version:
- All the signals are represented with 16-bit words. The filter weights
- are represented with 32-bit words, but only the top 16 bits are used
- in most cases. The lower 16 bits are completely unreliable (due to the
- fact that the update is done only on the top bits), but help in the
- adaptation -- probably by removing a "threshold effect" due to
- quantization (rounding going to zero) when the gradient is small.
-
- Another kludge that seems to work good: when performing the weight
- update, we only move half the way toward the "goal" this seems to
- reduce the effect of quantization noise in the update phase. This
- can be seen as applying a gradient descent on a "soft constraint"
- instead of having a hard constraint.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "misc.h"
-#include "speex/speex_echo.h"
-#include "fftwrap.h"
-#include "pseudofloat.h"
-#include "math_approx.h"
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-#ifdef FIXED_POINT
-#define WEIGHT_SHIFT 11
-#define NORMALIZE_SCALEDOWN 5
-#define NORMALIZE_SCALEUP 3
-#else
-#define WEIGHT_SHIFT 0
-#endif
-
-/* If enabled, the AEC will use a foreground filter and a background filter to be more robust to double-talk
- and difficult signals in general. The cost is an extra FFT and a matrix-vector multiply */
-#define TWO_PATH
-
-#ifdef FIXED_POINT
-static const spx_float_t MIN_LEAK = {20972, -22};
-
-/* Constants for the two-path filter */
-static const spx_float_t VAR1_SMOOTH = {23593, -16};
-static const spx_float_t VAR2_SMOOTH = {23675, -15};
-static const spx_float_t VAR1_UPDATE = {16384, -15};
-static const spx_float_t VAR2_UPDATE = {16384, -16};
-static const spx_float_t VAR_BACKTRACK = {16384, -12};
-#define TOP16(x) ((x)>>16)
-
-#else
-
-static const spx_float_t MIN_LEAK = .005f;
-
-/* Constants for the two-path filter */
-static const spx_float_t VAR1_SMOOTH = .36f;
-static const spx_float_t VAR2_SMOOTH = .7225f;
-static const spx_float_t VAR1_UPDATE = .5f;
-static const spx_float_t VAR2_UPDATE = .25f;
-static const spx_float_t VAR_BACKTRACK = 4.f;
-#define TOP16(x) (x)
-#endif
-
-
-#define PLAYBACK_DELAY 2
-
-void speex_echo_get_residual(SpeexEchoState *st, spx_word32_t *Yout, int len);
-
-
-/** Speex echo cancellation state. */
-struct SpeexEchoState_ {
- int frame_size; /**< Number of samples processed each time */
- int window_size;
- int M;
- int cancel_count;
- int adapted;
- int saturated;
- int screwed_up;
- spx_int32_t sampling_rate;
- spx_word16_t spec_average;
- spx_word16_t beta0;
- spx_word16_t beta_max;
- spx_word32_t sum_adapt;
- spx_word16_t leak_estimate;
-
- spx_word16_t *e; /* scratch */
- spx_word16_t *x; /* Far-end input buffer (2N) */
- spx_word16_t *X; /* Far-end buffer (M+1 frames) in frequency domain */
- spx_word16_t *input; /* scratch */
- spx_word16_t *y; /* scratch */
- spx_word16_t *last_y;
- spx_word16_t *Y; /* scratch */
- spx_word16_t *E;
- spx_word32_t *PHI; /* scratch */
- spx_word32_t *W; /* (Background) filter weights */
-#ifdef TWO_PATH
- spx_word16_t *foreground; /* Foreground filter weights */
- spx_word32_t Davg1; /* 1st recursive average of the residual power difference */
- spx_word32_t Davg2; /* 2nd recursive average of the residual power difference */
- spx_float_t Dvar1; /* Estimated variance of 1st estimator */
- spx_float_t Dvar2; /* Estimated variance of 2nd estimator */
-#endif
- spx_word32_t *power; /* Power of the far-end signal */
- spx_float_t *power_1;/* Inverse power of far-end */
- spx_word16_t *wtmp; /* scratch */
-#ifdef FIXED_POINT
- spx_word16_t *wtmp2; /* scratch */
-#endif
- spx_word32_t *Rf; /* scratch */
- spx_word32_t *Yf; /* scratch */
- spx_word32_t *Xf; /* scratch */
- spx_word32_t *Eh;
- spx_word32_t *Yh;
- spx_float_t Pey;
- spx_float_t Pyy;
- spx_word16_t *window;
- spx_word16_t *prop;
- void *fft_table;
- spx_word16_t memX, memD, memE;
- spx_word16_t preemph;
- spx_word16_t notch_radius;
- spx_mem_t notch_mem[2];
-
- /* NOTE: If you only use speex_echo_cancel() and want to save some memory, remove this */
- spx_int16_t *play_buf;
- int play_buf_pos;
- int play_buf_started;
-};
-
-static inline void filter_dc_notch16(const spx_int16_t *in, spx_word16_t radius, spx_word16_t *out, int len, spx_mem_t *mem)
-{
- int i;
- spx_word16_t den2;
-#ifdef FIXED_POINT
- den2 = MULT16_16_Q15(radius,radius) + MULT16_16_Q15(QCONST16(.7,15),MULT16_16_Q15(32767-radius,32767-radius));
-#else
- den2 = radius*radius + .7*(1-radius)*(1-radius);
-#endif
- /*printf ("%d %d %d %d %d %d\n", num[0], num[1], num[2], den[0], den[1], den[2]);*/
- for (i=0;i<len;i++)
- {
- spx_word16_t vin = in[i];
- spx_word32_t vout = mem[0] + SHL32(EXTEND32(vin),15);
-#ifdef FIXED_POINT
- mem[0] = mem[1] + SHL32(SHL32(-EXTEND32(vin),15) + MULT16_32_Q15(radius,vout),1);
-#else
- mem[0] = mem[1] + 2*(-vin + radius*vout);
-#endif
- mem[1] = SHL32(EXTEND32(vin),15) - MULT16_32_Q15(den2,vout);
- out[i] = SATURATE32(PSHR32(MULT16_32_Q15(radius,vout),15),32767);
- }
-}
-
-/* This inner product is slightly different from the codec version because of fixed-point */
-static inline spx_word32_t mdf_inner_prod(const spx_word16_t *x, const spx_word16_t *y, int len)
-{
- spx_word32_t sum=0;
- len >>= 1;
- while(len--)
- {
- spx_word32_t part=0;
- part = MAC16_16(part,*x++,*y++);
- part = MAC16_16(part,*x++,*y++);
- /* HINT: If you had a 40-bit accumulator, you could shift only at the end */
- sum = ADD32(sum,SHR32(part,6));
- }
- return sum;
-}
-
-/** Compute power spectrum of a half-complex (packed) vector */
-static inline void power_spectrum(const spx_word16_t *X, spx_word32_t *ps, int N)
-{
- int i, j;
- ps[0]=MULT16_16(X[0],X[0]);
- for (i=1,j=1;i<N-1;i+=2,j++)
- {
- ps[j] = MULT16_16(X[i],X[i]) + MULT16_16(X[i+1],X[i+1]);
- }
- ps[j]=MULT16_16(X[i],X[i]);
-}
-
-/** Compute cross-power spectrum of a half-complex (packed) vectors and add to acc */
-#ifdef FIXED_POINT
-static inline void spectral_mul_accum(const spx_word16_t *X, const spx_word32_t *Y, spx_word16_t *acc, int N, int M)
-{
- int i,j;
- spx_word32_t tmp1=0,tmp2=0;
- for (j=0;j<M;j++)
- {
- tmp1 = MAC16_16(tmp1, X[j*N],TOP16(Y[j*N]));
- }
- acc[0] = PSHR32(tmp1,WEIGHT_SHIFT);
- for (i=1;i<N-1;i+=2)
- {
- tmp1 = tmp2 = 0;
- for (j=0;j<M;j++)
- {
- tmp1 = SUB32(MAC16_16(tmp1, X[j*N+i],TOP16(Y[j*N+i])), MULT16_16(X[j*N+i+1],TOP16(Y[j*N+i+1])));
- tmp2 = MAC16_16(MAC16_16(tmp2, X[j*N+i+1],TOP16(Y[j*N+i])), X[j*N+i], TOP16(Y[j*N+i+1]));
- }
- acc[i] = PSHR32(tmp1,WEIGHT_SHIFT);
- acc[i+1] = PSHR32(tmp2,WEIGHT_SHIFT);
- }
- tmp1 = tmp2 = 0;
- for (j=0;j<M;j++)
- {
- tmp1 = MAC16_16(tmp1, X[(j+1)*N-1],TOP16(Y[(j+1)*N-1]));
- }
- acc[N-1] = PSHR32(tmp1,WEIGHT_SHIFT);
-}
-static inline void spectral_mul_accum16(const spx_word16_t *X, const spx_word16_t *Y, spx_word16_t *acc, int N, int M)
-{
- int i,j;
- spx_word32_t tmp1=0,tmp2=0;
- for (j=0;j<M;j++)
- {
- tmp1 = MAC16_16(tmp1, X[j*N],Y[j*N]);
- }
- acc[0] = PSHR32(tmp1,WEIGHT_SHIFT);
- for (i=1;i<N-1;i+=2)
- {
- tmp1 = tmp2 = 0;
- for (j=0;j<M;j++)
- {
- tmp1 = SUB32(MAC16_16(tmp1, X[j*N+i],Y[j*N+i]), MULT16_16(X[j*N+i+1],Y[j*N+i+1]));
- tmp2 = MAC16_16(MAC16_16(tmp2, X[j*N+i+1],Y[j*N+i]), X[j*N+i], Y[j*N+i+1]);
- }
- acc[i] = PSHR32(tmp1,WEIGHT_SHIFT);
- acc[i+1] = PSHR32(tmp2,WEIGHT_SHIFT);
- }
- tmp1 = tmp2 = 0;
- for (j=0;j<M;j++)
- {
- tmp1 = MAC16_16(tmp1, X[(j+1)*N-1],Y[(j+1)*N-1]);
- }
- acc[N-1] = PSHR32(tmp1,WEIGHT_SHIFT);
-}
-
-#else
-static inline void spectral_mul_accum(const spx_word16_t *X, const spx_word32_t *Y, spx_word16_t *acc, int N, int M)
-{
- int i,j;
- for (i=0;i<N;i++)
- acc[i] = 0;
- for (j=0;j<M;j++)
- {
- acc[0] += X[0]*Y[0];
- for (i=1;i<N-1;i+=2)
- {
- acc[i] += (X[i]*Y[i] - X[i+1]*Y[i+1]);
- acc[i+1] += (X[i+1]*Y[i] + X[i]*Y[i+1]);
- }
- acc[i] += X[i]*Y[i];
- X += N;
- Y += N;
- }
-}
-#define spectral_mul_accum16 spectral_mul_accum
-#endif
-
-/** Compute weighted cross-power spectrum of a half-complex (packed) vector with conjugate */
-static inline void weighted_spectral_mul_conj(const spx_float_t *w, const spx_float_t p, const spx_word16_t *X, const spx_word16_t *Y, spx_word32_t *prod, int N)
-{
- int i, j;
- spx_float_t W;
- W = FLOAT_AMULT(p, w[0]);
- prod[0] = FLOAT_MUL32(W,MULT16_16(X[0],Y[0]));
- for (i=1,j=1;i<N-1;i+=2,j++)
- {
- W = FLOAT_AMULT(p, w[j]);
- prod[i] = FLOAT_MUL32(W,MAC16_16(MULT16_16(X[i],Y[i]), X[i+1],Y[i+1]));
- prod[i+1] = FLOAT_MUL32(W,MAC16_16(MULT16_16(-X[i+1],Y[i]), X[i],Y[i+1]));
- }
- W = FLOAT_AMULT(p, w[j]);
- prod[i] = FLOAT_MUL32(W,MULT16_16(X[i],Y[i]));
-}
-
-static inline void mdf_adjust_prop(const spx_word32_t *W, int N, int M, spx_word16_t *prop)
-{
- int i, j;
- spx_word16_t max_sum = 1;
- spx_word32_t prop_sum = 1;
- for (i=0;i<M;i++)
- {
- spx_word32_t tmp = 1;
- for (j=0;j<N;j++)
- tmp += MULT16_16(EXTRACT16(SHR32(W[i*N+j],18)), EXTRACT16(SHR32(W[i*N+j],18)));
-#ifdef FIXED_POINT
- /* Just a security in case an overflow were to occur */
- tmp = MIN32(ABS32(tmp), 536870912);
-#endif
- prop[i] = spx_sqrt(tmp);
- if (prop[i] > max_sum)
- max_sum = prop[i];
- }
- for (i=0;i<M;i++)
- {
- prop[i] += MULT16_16_Q15(QCONST16(.1f,15),max_sum);
- prop_sum += EXTEND32(prop[i]);
- }
- for (i=0;i<M;i++)
- {
- prop[i] = DIV32(MULT16_16(QCONST16(.99f,15), prop[i]),prop_sum);
- /*printf ("%f ", prop[i]);*/
- }
- /*printf ("\n");*/
-}
-
-#ifdef DUMP_ECHO_CANCEL_DATA
-#include <stdio.h>
-static FILE *rFile=NULL, *pFile=NULL, *oFile=NULL;
-
-static void dump_audio(const spx_int16_t *rec, const spx_int16_t *play, const spx_int16_t *out, int len)
-{
- if (!(rFile && pFile && oFile))
- {
- speex_error("Dump files not open");
- }
- fwrite(rec, sizeof(spx_int16_t), len, rFile);
- fwrite(play, sizeof(spx_int16_t), len, pFile);
- fwrite(out, sizeof(spx_int16_t), len, oFile);
-}
-#endif
-
-/** Creates a new echo canceller state */
-SpeexEchoState *speex_echo_state_init(int frame_size, int filter_length)
-{
- int i,N,M;
- SpeexEchoState *st = (SpeexEchoState *)speex_alloc(sizeof(SpeexEchoState));
-
-#ifdef DUMP_ECHO_CANCEL_DATA
- if (rFile || pFile || oFile)
- speex_error("Opening dump files twice");
- rFile = fopen("aec_rec.sw", "w");
- pFile = fopen("aec_play.sw", "w");
- oFile = fopen("aec_out.sw", "w");
-#endif
-
- st->frame_size = frame_size;
- st->window_size = 2*frame_size;
- N = st->window_size;
- M = st->M = (filter_length+st->frame_size-1)/frame_size;
- st->cancel_count=0;
- st->sum_adapt = 0;
- st->saturated = 0;
- st->screwed_up = 0;
- /* This is the default sampling rate */
- st->sampling_rate = 8000;
- st->spec_average = DIV32_16(SHL32(EXTEND32(st->frame_size), 15), st->sampling_rate);
-#ifdef FIXED_POINT
- st->beta0 = DIV32_16(SHL32(EXTEND32(st->frame_size), 16), st->sampling_rate);
- st->beta_max = DIV32_16(SHL32(EXTEND32(st->frame_size), 14), st->sampling_rate);
-#else
- st->beta0 = (2.0f*st->frame_size)/st->sampling_rate;
- st->beta_max = (.5f*st->frame_size)/st->sampling_rate;
-#endif
- st->leak_estimate = 0;
-
- st->fft_table = spx_fft_init(N);
-
- st->e = (spx_word16_t*)speex_alloc(N*sizeof(spx_word16_t));
- st->x = (spx_word16_t*)speex_alloc(N*sizeof(spx_word16_t));
- st->input = (spx_word16_t*)speex_alloc(st->frame_size*sizeof(spx_word16_t));
- st->y = (spx_word16_t*)speex_alloc(N*sizeof(spx_word16_t));
- st->last_y = (spx_word16_t*)speex_alloc(N*sizeof(spx_word16_t));
- st->Yf = (spx_word32_t*)speex_alloc((st->frame_size+1)*sizeof(spx_word32_t));
- st->Rf = (spx_word32_t*)speex_alloc((st->frame_size+1)*sizeof(spx_word32_t));
- st->Xf = (spx_word32_t*)speex_alloc((st->frame_size+1)*sizeof(spx_word32_t));
- st->Yh = (spx_word32_t*)speex_alloc((st->frame_size+1)*sizeof(spx_word32_t));
- st->Eh = (spx_word32_t*)speex_alloc((st->frame_size+1)*sizeof(spx_word32_t));
-
- st->X = (spx_word16_t*)speex_alloc((M+1)*N*sizeof(spx_word16_t));
- st->Y = (spx_word16_t*)speex_alloc(N*sizeof(spx_word16_t));
- st->E = (spx_word16_t*)speex_alloc(N*sizeof(spx_word16_t));
- st->W = (spx_word32_t*)speex_alloc(M*N*sizeof(spx_word32_t));
-#ifdef TWO_PATH
- st->foreground = (spx_word16_t*)speex_alloc(M*N*sizeof(spx_word16_t));
-#endif
- st->PHI = (spx_word32_t*)speex_alloc(N*sizeof(spx_word32_t));
- st->power = (spx_word32_t*)speex_alloc((frame_size+1)*sizeof(spx_word32_t));
- st->power_1 = (spx_float_t*)speex_alloc((frame_size+1)*sizeof(spx_float_t));
- st->window = (spx_word16_t*)speex_alloc(N*sizeof(spx_word16_t));
- st->prop = (spx_word16_t*)speex_alloc(M*sizeof(spx_word16_t));
- st->wtmp = (spx_word16_t*)speex_alloc(N*sizeof(spx_word16_t));
-#ifdef FIXED_POINT
- st->wtmp2 = (spx_word16_t*)speex_alloc(N*sizeof(spx_word16_t));
- for (i=0;i<N>>1;i++)
- {
- st->window[i] = (16383-SHL16(spx_cos(DIV32_16(MULT16_16(25736,i<<1),N)),1));
- st->window[N-i-1] = st->window[i];
- }
-#else
- for (i=0;i<N;i++)
- st->window[i] = .5-.5*cos(2*M_PI*i/N);
-#endif
- for (i=0;i<=st->frame_size;i++)
- st->power_1[i] = FLOAT_ONE;
- for (i=0;i<N*M;i++)
- st->W[i] = 0;
- {
- spx_word32_t sum = 0;
- /* Ratio of ~10 between adaptation rate of first and last block */
- spx_word16_t decay = SHR32(spx_exp(NEG16(DIV32_16(QCONST16(2.4,11),M))),1);
- st->prop[0] = QCONST16(.7, 15);
- sum = EXTEND32(st->prop[0]);
- for (i=1;i<M;i++)
- {
- st->prop[i] = MULT16_16_Q15(st->prop[i-1], decay);
- sum = ADD32(sum, EXTEND32(st->prop[i]));
- }
- for (i=M-1;i>=0;i--)
- {
- st->prop[i] = DIV32(MULT16_16(QCONST16(.8,15), st->prop[i]),sum);
- }
- }
-
- st->memX=st->memD=st->memE=0;
- st->preemph = QCONST16(.9,15);
- if (st->sampling_rate<12000)
- st->notch_radius = QCONST16(.9, 15);
- else if (st->sampling_rate<24000)
- st->notch_radius = QCONST16(.982, 15);
- else
- st->notch_radius = QCONST16(.992, 15);
-
- st->notch_mem[0] = st->notch_mem[1] = 0;
- st->adapted = 0;
- st->Pey = st->Pyy = FLOAT_ONE;
-
-#ifdef TWO_PATH
- st->Davg1 = st->Davg2 = 0;
- st->Dvar1 = st->Dvar2 = FLOAT_ZERO;
-#endif
-
- st->play_buf = (spx_int16_t*)speex_alloc((PLAYBACK_DELAY+1)*st->frame_size*sizeof(spx_int16_t));
- st->play_buf_pos = PLAYBACK_DELAY*st->frame_size;
- st->play_buf_started = 0;
-
- return st;
-}
-
-/** Resets echo canceller state */
-void speex_echo_state_reset(SpeexEchoState *st)
-{
- int i, M, N;
- st->cancel_count=0;
- st->screwed_up = 0;
- N = st->window_size;
- M = st->M;
- for (i=0;i<N*M;i++)
- st->W[i] = 0;
-#ifdef TWO_PATH
- for (i=0;i<N*M;i++)
- st->foreground[i] = 0;
-#endif
- for (i=0;i<N*(M+1);i++)
- st->X[i] = 0;
- for (i=0;i<=st->frame_size;i++)
- {
- st->power[i] = 0;
- st->power_1[i] = FLOAT_ONE;
- st->Eh[i] = 0;
- st->Yh[i] = 0;
- }
- for (i=0;i<st->frame_size;i++)
- {
- st->last_y[i] = 0;
- }
- for (i=0;i<N;i++)
- {
- st->E[i] = 0;
- st->x[i] = 0;
- }
- st->notch_mem[0] = st->notch_mem[1] = 0;
- st->memX=st->memD=st->memE=0;
-
- st->saturated = 0;
- st->adapted = 0;
- st->sum_adapt = 0;
- st->Pey = st->Pyy = FLOAT_ONE;
-#ifdef TWO_PATH
- st->Davg1 = st->Davg2 = 0;
- st->Dvar1 = st->Dvar2 = FLOAT_ZERO;
-#endif
- for (i=0;i<3*st->frame_size;i++)
- st->play_buf[i] = 0;
- st->play_buf_pos = PLAYBACK_DELAY*st->frame_size;
- st->play_buf_started = 0;
-
-}
-
-/** Destroys an echo canceller state */
-void speex_echo_state_destroy(SpeexEchoState *st)
-{
- spx_fft_destroy(st->fft_table);
-
- speex_free(st->e);
- speex_free(st->x);
- speex_free(st->input);
- speex_free(st->y);
- speex_free(st->last_y);
- speex_free(st->Yf);
- speex_free(st->Rf);
- speex_free(st->Xf);
- speex_free(st->Yh);
- speex_free(st->Eh);
-
- speex_free(st->X);
- speex_free(st->Y);
- speex_free(st->E);
- speex_free(st->W);
-#ifdef TWO_PATH
- speex_free(st->foreground);
-#endif
- speex_free(st->PHI);
- speex_free(st->power);
- speex_free(st->power_1);
- speex_free(st->window);
- speex_free(st->prop);
- speex_free(st->wtmp);
-#ifdef FIXED_POINT
- speex_free(st->wtmp2);
-#endif
- speex_free(st->play_buf);
- speex_free(st);
-
-#ifdef DUMP_ECHO_CANCEL_DATA
- fclose(rFile);
- fclose(pFile);
- fclose(oFile);
- rFile = pFile = oFile = NULL;
-#endif
-}
-
-void speex_echo_capture(SpeexEchoState *st, const spx_int16_t *rec, spx_int16_t *out)
-{
- int i;
- /*speex_warning_int("capture with fill level ", st->play_buf_pos/st->frame_size);*/
- st->play_buf_started = 1;
- if (st->play_buf_pos>=st->frame_size)
- {
- speex_echo_cancellation(st, rec, st->play_buf, out);
- st->play_buf_pos -= st->frame_size;
- for (i=0;i<st->play_buf_pos;i++)
- st->play_buf[i] = st->play_buf[i+st->frame_size];
- } else {
- speex_warning("No playback frame available (your application is buggy and/or got xruns)");
- if (st->play_buf_pos!=0)
- {
- speex_warning("internal playback buffer corruption?");
- st->play_buf_pos = 0;
- }
- for (i=0;i<st->frame_size;i++)
- out[i] = rec[i];
- }
-}
-
-void speex_echo_playback(SpeexEchoState *st, const spx_int16_t *play)
-{
- /*speex_warning_int("playback with fill level ", st->play_buf_pos/st->frame_size);*/
- if (!st->play_buf_started)
- {
- speex_warning("discarded first playback frame");
- return;
- }
- if (st->play_buf_pos<=PLAYBACK_DELAY*st->frame_size)
- {
- int i;
- for (i=0;i<st->frame_size;i++)
- st->play_buf[st->play_buf_pos+i] = play[i];
- st->play_buf_pos += st->frame_size;
- if (st->play_buf_pos <= (PLAYBACK_DELAY-1)*st->frame_size)
- {
- speex_warning("Auto-filling the buffer (your application is buggy and/or got xruns)");
- for (i=0;i<st->frame_size;i++)
- st->play_buf[st->play_buf_pos+i] = play[i];
- st->play_buf_pos += st->frame_size;
- }
- } else {
- speex_warning("Had to discard a playback frame (your application is buggy and/or got xruns)");
- }
-}
-
-/** Performs echo cancellation on a frame */
-void speex_echo_cancel(SpeexEchoState *st, const spx_int16_t *in, const spx_int16_t *far_end, spx_int16_t *out, spx_int32_t *Yout)
-{
- speex_echo_cancellation(st, in, far_end, out);
-}
-
-/** Performs echo cancellation on a frame (deprecated, last arg now ignored) */
-void speex_echo_cancellation(SpeexEchoState *st, const spx_int16_t *in, const spx_int16_t *far_end, spx_int16_t *out)
-{
- int i,j;
- int N,M;
- spx_word32_t Syy,See,Sxx,Sdd, Sff;
-#ifdef TWO_PATH
- spx_word32_t Dbf;
- int update_foreground;
-#endif
- spx_word32_t Sey;
- spx_word16_t ss, ss_1;
- spx_float_t Pey = FLOAT_ONE, Pyy=FLOAT_ONE;
- spx_float_t alpha, alpha_1;
- spx_word16_t RER;
- spx_word32_t tmp32;
-
- N = st->window_size;
- M = st->M;
- st->cancel_count++;
-#ifdef FIXED_POINT
- ss=DIV32_16(11469,M);
- ss_1 = SUB16(32767,ss);
-#else
- ss=.35/M;
- ss_1 = 1-ss;
-#endif
-
- /* Apply a notch filter to make sure DC doesn't end up causing problems */
- filter_dc_notch16(in, st->notch_radius, st->input, st->frame_size, st->notch_mem);
- /* Copy input data to buffer and apply pre-emphasis */
- for (i=0;i<st->frame_size;i++)
- {
- spx_word32_t tmp32;
- tmp32 = SUB32(EXTEND32(far_end[i]), EXTEND32(MULT16_16_P15(st->preemph, st->memX)));
-#ifdef FIXED_POINT
- /* If saturation occurs here, we need to freeze adaptation for M+1 frames (not just one) */
- if (tmp32 > 32767)
- {
- tmp32 = 32767;
- st->saturated = M+1;
- }
- if (tmp32 < -32767)
- {
- tmp32 = -32767;
- st->saturated = M+1;
- }
-#endif
- st->x[i+st->frame_size] = EXTRACT16(tmp32);
- st->memX = far_end[i];
-
- tmp32 = SUB32(EXTEND32(st->input[i]), EXTEND32(MULT16_16_P15(st->preemph, st->memD)));
-#ifdef FIXED_POINT
- if (tmp32 > 32767)
- {
- tmp32 = 32767;
- if (st->saturated == 0)
- st->saturated = 1;
- }
- if (tmp32 < -32767)
- {
- tmp32 = -32767;
- if (st->saturated == 0)
- st->saturated = 1;
- }
-#endif
- st->memD = st->input[i];
- st->input[i] = tmp32;
- }
-
- /* Shift memory: this could be optimized eventually*/
- for (j=M-1;j>=0;j--)
- {
- for (i=0;i<N;i++)
- st->X[(j+1)*N+i] = st->X[j*N+i];
- }
-
- /* Convert x (far end) to frequency domain */
- spx_fft(st->fft_table, st->x, &st->X[0]);
- for (i=0;i<N;i++)
- st->last_y[i] = st->x[i];
- Sxx = mdf_inner_prod(st->x+st->frame_size, st->x+st->frame_size, st->frame_size);
- for (i=0;i<st->frame_size;i++)
- st->x[i] = st->x[i+st->frame_size];
- /* From here on, the top part of x is used as scratch space */
-
-#ifdef TWO_PATH
- /* Compute foreground filter */
- spectral_mul_accum16(st->X, st->foreground, st->Y, N, M);
- spx_ifft(st->fft_table, st->Y, st->e);
- for (i=0;i<st->frame_size;i++)
- st->x[i+st->frame_size] = SUB16(st->input[i], st->e[i+st->frame_size]);
- Sff = mdf_inner_prod(st->x+st->frame_size, st->x+st->frame_size, st->frame_size);
-#endif
-
- /* Adjust proportional adaption rate */
- mdf_adjust_prop (st->W, N, M, st->prop);
- /* Compute weight gradient */
- if (st->saturated == 0)
- {
- for (j=M-1;j>=0;j--)
- {
- weighted_spectral_mul_conj(st->power_1, FLOAT_SHL(PSEUDOFLOAT(st->prop[j]),-15), &st->X[(j+1)*N], st->E, st->PHI, N);
- for (i=0;i<N;i++)
- st->W[j*N+i] = ADD32(st->W[j*N+i], st->PHI[i]);
-
- }
- } else {
- st->saturated--;
- }
-
- /* Update weight to prevent circular convolution (MDF / AUMDF) */
- for (j=0;j<M;j++)
- {
- /* This is a variant of the Alternatively Updated MDF (AUMDF) */
- /* Remove the "if" to make this an MDF filter */
- if (j==0 || st->cancel_count%(M-1) == j-1)
- {
-#ifdef FIXED_POINT
- for (i=0;i<N;i++)
- st->wtmp2[i] = EXTRACT16(PSHR32(st->W[j*N+i],NORMALIZE_SCALEDOWN+16));
- spx_ifft(st->fft_table, st->wtmp2, st->wtmp);
- for (i=0;i<st->frame_size;i++)
- {
- st->wtmp[i]=0;
- }
- for (i=st->frame_size;i<N;i++)
- {
- st->wtmp[i]=SHL16(st->wtmp[i],NORMALIZE_SCALEUP);
- }
- spx_fft(st->fft_table, st->wtmp, st->wtmp2);
- /* The "-1" in the shift is a sort of kludge that trades less efficient update speed for decrease noise */
- for (i=0;i<N;i++)
- st->W[j*N+i] -= SHL32(EXTEND32(st->wtmp2[i]),16+NORMALIZE_SCALEDOWN-NORMALIZE_SCALEUP-1);
-#else
- spx_ifft(st->fft_table, &st->W[j*N], st->wtmp);
- for (i=st->frame_size;i<N;i++)
- {
- st->wtmp[i]=0;
- }
- spx_fft(st->fft_table, st->wtmp, &st->W[j*N]);
-#endif
- }
- }
-
- /* Compute filter response Y */
- spectral_mul_accum(st->X, st->W, st->Y, N, M);
- spx_ifft(st->fft_table, st->Y, st->y);
-
-#ifdef TWO_PATH
- /* Difference in response, this is used to estimate the variance of our residual power estimate */
- for (i=0;i<st->frame_size;i++)
- st->x[i+st->frame_size] = SUB16(st->e[i+st->frame_size], st->y[i+st->frame_size]);
- Dbf = 10+mdf_inner_prod(st->x+st->frame_size, st->x+st->frame_size, st->frame_size);
-#endif
-
- for (i=0;i<st->frame_size;i++)
- st->x[i+st->frame_size] = SUB16(st->input[i], st->y[i+st->frame_size]);
- See = mdf_inner_prod(st->x+st->frame_size, st->x+st->frame_size, st->frame_size);
-#ifndef TWO_PATH
- Sff = See;
-#endif
-
-#ifdef TWO_PATH
- /* Logic for updating the foreground filter */
-
- /* For two time windows, compute the mean of the energy difference, as well as the variance */
- st->Davg1 = ADD32(MULT16_32_Q15(QCONST16(.6f,15),st->Davg1), MULT16_32_Q15(QCONST16(.4f,15),SUB32(Sff,See)));
- st->Davg2 = ADD32(MULT16_32_Q15(QCONST16(.85f,15),st->Davg2), MULT16_32_Q15(QCONST16(.15f,15),SUB32(Sff,See)));
- st->Dvar1 = FLOAT_ADD(FLOAT_MULT(VAR1_SMOOTH, st->Dvar1), FLOAT_MUL32U(MULT16_32_Q15(QCONST16(.4f,15),Sff), MULT16_32_Q15(QCONST16(.4f,15),Dbf)));
- st->Dvar2 = FLOAT_ADD(FLOAT_MULT(VAR2_SMOOTH, st->Dvar2), FLOAT_MUL32U(MULT16_32_Q15(QCONST16(.15f,15),Sff), MULT16_32_Q15(QCONST16(.15f,15),Dbf)));
-
- /* Equivalent float code:
- st->Davg1 = .6*st->Davg1 + .4*(Sff-See);
- st->Davg2 = .85*st->Davg2 + .15*(Sff-See);
- st->Dvar1 = .36*st->Dvar1 + .16*Sff*Dbf;
- st->Dvar2 = .7225*st->Dvar2 + .0225*Sff*Dbf;
- */
-
- update_foreground = 0;
- /* Check if we have a statistically significant reduction in the residual echo */
- /* Note that this is *not* Gaussian, so we need to be careful about the longer tail */
- if (FLOAT_GT(FLOAT_MUL32U(SUB32(Sff,See),ABS32(SUB32(Sff,See))), FLOAT_MUL32U(Sff,Dbf)))
- update_foreground = 1;
- else if (FLOAT_GT(FLOAT_MUL32U(st->Davg1, ABS32(st->Davg1)), FLOAT_MULT(VAR1_UPDATE,(st->Dvar1))))
- update_foreground = 1;
- else if (FLOAT_GT(FLOAT_MUL32U(st->Davg2, ABS32(st->Davg2)), FLOAT_MULT(VAR2_UPDATE,(st->Dvar2))))
- update_foreground = 1;
-
- /* Do we update? */
- if (update_foreground)
- {
- st->Davg1 = st->Davg2 = 0;
- st->Dvar1 = st->Dvar2 = FLOAT_ZERO;
- /* Copy background filter to foreground filter */
- for (i=0;i<N*M;i++)
- st->foreground[i] = EXTRACT16(PSHR32(st->W[i],16));
- /* Apply a smooth transition so as to not introduce blocking artifacts */
- for (i=0;i<st->frame_size;i++)
- st->e[i+st->frame_size] = MULT16_16_Q15(st->window[i+st->frame_size],st->e[i+st->frame_size]) + MULT16_16_Q15(st->window[i],st->y[i+st->frame_size]);
- } else {
- int reset_background=0;
- /* Otherwise, check if the background filter is significantly worse */
- if (FLOAT_GT(FLOAT_MUL32U(NEG32(SUB32(Sff,See)),ABS32(SUB32(Sff,See))), FLOAT_MULT(VAR_BACKTRACK,FLOAT_MUL32U(Sff,Dbf))))
- reset_background = 1;
- if (FLOAT_GT(FLOAT_MUL32U(NEG32(st->Davg1), ABS32(st->Davg1)), FLOAT_MULT(VAR_BACKTRACK,st->Dvar1)))
- reset_background = 1;
- if (FLOAT_GT(FLOAT_MUL32U(NEG32(st->Davg2), ABS32(st->Davg2)), FLOAT_MULT(VAR_BACKTRACK,st->Dvar2)))
- reset_background = 1;
- if (reset_background)
- {
- /* Copy foreground filter to background filter */
- for (i=0;i<N*M;i++)
- st->W[i] = SHL32(EXTEND32(st->foreground[i]),16);
- /* We also need to copy the output so as to get correct adaptation */
- for (i=0;i<st->frame_size;i++)
- st->y[i+st->frame_size] = st->e[i+st->frame_size];
- for (i=0;i<st->frame_size;i++)
- st->x[i+st->frame_size] = SUB16(st->input[i], st->y[i+st->frame_size]);
- See = Sff;
- st->Davg1 = st->Davg2 = 0;
- st->Dvar1 = st->Dvar2 = FLOAT_ZERO;
- }
- }
-#endif
-
- /* Compute error signal (for the output with de-emphasis) */
- for (i=0;i<st->frame_size;i++)
- {
- spx_word32_t tmp_out;
-#ifdef TWO_PATH
- tmp_out = SUB32(EXTEND32(st->input[i]), EXTEND32(st->e[i+st->frame_size]));
-#else
- tmp_out = SUB32(EXTEND32(st->input[i]), EXTEND32(st->y[i+st->frame_size]));
-#endif
- /* Saturation */
- if (tmp_out>32767)
- tmp_out = 32767;
- else if (tmp_out<-32768)
- tmp_out = -32768;
- tmp_out = ADD32(tmp_out, EXTEND32(MULT16_16_P15(st->preemph, st->memE)));
- /* This is an arbitrary test for saturation in the microphone signal */
- if (in[i] <= -32000 || in[i] >= 32000)
- {
- tmp_out = 0;
- if (st->saturated == 0)
- st->saturated = 1;
- }
- out[i] = (spx_int16_t)tmp_out;
- st->memE = tmp_out;
- }
-
-#ifdef DUMP_ECHO_CANCEL_DATA
- dump_audio(in, far_end, out, st->frame_size);
-#endif
-
- /* Compute error signal (filter update version) */
- for (i=0;i<st->frame_size;i++)
- {
- st->e[i] = 0;
- st->e[i+st->frame_size] = st->x[i+st->frame_size];
- }
-
- /* Compute a bunch of correlations */
- Sey = mdf_inner_prod(st->e+st->frame_size, st->y+st->frame_size, st->frame_size);
- Syy = mdf_inner_prod(st->y+st->frame_size, st->y+st->frame_size, st->frame_size);
- Sdd = mdf_inner_prod(st->input, st->input, st->frame_size);
-
- /*printf ("%f %f %f %f\n", Sff, See, Syy, Sdd, st->update_cond);*/
-
- /* Do some sanity check */
- if (!(Syy>=0 && Sxx>=0 && See >= 0)
-#ifndef FIXED_POINT
- || !(Sff < N*1e9 && Syy < N*1e9 && Sxx < N*1e9)
-#endif
- )
- {
- /* Things have gone really bad */
- st->screwed_up += 50;
- for (i=0;i<st->frame_size;i++)
- out[i] = 0;
- } else if (SHR32(Sff, 2) > ADD32(Sdd, SHR32(MULT16_16(N, 10000),6)))
- {
- /* AEC seems to add lots of echo instead of removing it, let's see if it will improve */
- st->screwed_up++;
- } else {
- /* Everything's fine */
- st->screwed_up=0;
- }
- if (st->screwed_up>=50)
- {
- speex_warning("The echo canceller started acting funny and got slapped (reset). It swears it will behave now.");
- speex_echo_state_reset(st);
- return;
- }
-
- /* Add a small noise floor to make sure not to have problems when dividing */
- See = MAX32(See, SHR32(MULT16_16(N, 100),6));
-
- /* Convert error to frequency domain */
- spx_fft(st->fft_table, st->e, st->E);
- for (i=0;i<st->frame_size;i++)
- st->y[i] = 0;
- spx_fft(st->fft_table, st->y, st->Y);
-
- /* Compute power spectrum of far end (X), error (E) and filter response (Y) */
- power_spectrum(st->E, st->Rf, N);
- power_spectrum(st->Y, st->Yf, N);
- power_spectrum(st->X, st->Xf, N);
-
- /* Smooth far end energy estimate over time */
- for (j=0;j<=st->frame_size;j++)
- st->power[j] = MULT16_32_Q15(ss_1,st->power[j]) + 1 + MULT16_32_Q15(ss,st->Xf[j]);
-
- /* Enable this to compute the power based only on the tail (would need to compute more
- efficiently to make this really useful */
- if (0)
- {
- float scale2 = .5f/M;
- for (j=0;j<=st->frame_size;j++)
- st->power[j] = 100;
- for (i=0;i<M;i++)
- {
- power_spectrum(&st->X[i*N], st->Xf, N);
- for (j=0;j<=st->frame_size;j++)
- st->power[j] += scale2*st->Xf[j];
- }
- }
-
- /* Compute filtered spectra and (cross-)correlations */
- for (j=st->frame_size;j>=0;j--)
- {
- spx_float_t Eh, Yh;
- Eh = PSEUDOFLOAT(st->Rf[j] - st->Eh[j]);
- Yh = PSEUDOFLOAT(st->Yf[j] - st->Yh[j]);
- Pey = FLOAT_ADD(Pey,FLOAT_MULT(Eh,Yh));
- Pyy = FLOAT_ADD(Pyy,FLOAT_MULT(Yh,Yh));
-#ifdef FIXED_POINT
- st->Eh[j] = MAC16_32_Q15(MULT16_32_Q15(SUB16(32767,st->spec_average),st->Eh[j]), st->spec_average, st->Rf[j]);
- st->Yh[j] = MAC16_32_Q15(MULT16_32_Q15(SUB16(32767,st->spec_average),st->Yh[j]), st->spec_average, st->Yf[j]);
-#else
- st->Eh[j] = (1-st->spec_average)*st->Eh[j] + st->spec_average*st->Rf[j];
- st->Yh[j] = (1-st->spec_average)*st->Yh[j] + st->spec_average*st->Yf[j];
-#endif
- }
-
- Pyy = FLOAT_SQRT(Pyy);
- Pey = FLOAT_DIVU(Pey,Pyy);
-
- /* Compute correlation updatete rate */
- tmp32 = MULT16_32_Q15(st->beta0,Syy);
- if (tmp32 > MULT16_32_Q15(st->beta_max,See))
- tmp32 = MULT16_32_Q15(st->beta_max,See);
- alpha = FLOAT_DIV32(tmp32, See);
- alpha_1 = FLOAT_SUB(FLOAT_ONE, alpha);
- /* Update correlations (recursive average) */
- st->Pey = FLOAT_ADD(FLOAT_MULT(alpha_1,st->Pey) , FLOAT_MULT(alpha,Pey));
- st->Pyy = FLOAT_ADD(FLOAT_MULT(alpha_1,st->Pyy) , FLOAT_MULT(alpha,Pyy));
- if (FLOAT_LT(st->Pyy, FLOAT_ONE))
- st->Pyy = FLOAT_ONE;
- /* We don't really hope to get better than 33 dB (MIN_LEAK-3dB) attenuation anyway */
- if (FLOAT_LT(st->Pey, FLOAT_MULT(MIN_LEAK,st->Pyy)))
- st->Pey = FLOAT_MULT(MIN_LEAK,st->Pyy);
- if (FLOAT_GT(st->Pey, st->Pyy))
- st->Pey = st->Pyy;
- /* leak_estimate is the linear regression result */
- st->leak_estimate = FLOAT_EXTRACT16(FLOAT_SHL(FLOAT_DIVU(st->Pey, st->Pyy),14));
- /* This looks like a stupid bug, but it's right (because we convert from Q14 to Q15) */
- if (st->leak_estimate > 16383)
- st->leak_estimate = 32767;
- else
- st->leak_estimate = SHL16(st->leak_estimate,1);
- /*printf ("%f\n", st->leak_estimate);*/
-
- /* Compute Residual to Error Ratio */
-#ifdef FIXED_POINT
- tmp32 = MULT16_32_Q15(st->leak_estimate,Syy);
- tmp32 = ADD32(SHR32(Sxx,13), ADD32(tmp32, SHL32(tmp32,1)));
- /* Check for y in e (lower bound on RER) */
- {
- spx_float_t bound = PSEUDOFLOAT(Sey);
- bound = FLOAT_DIVU(FLOAT_MULT(bound, bound), PSEUDOFLOAT(ADD32(1,Syy)));
- if (FLOAT_GT(bound, PSEUDOFLOAT(See)))
- tmp32 = See;
- else if (tmp32 < FLOAT_EXTRACT32(bound))
- tmp32 = FLOAT_EXTRACT32(bound);
- }
- if (tmp32 > SHR32(See,1))
- tmp32 = SHR32(See,1);
- RER = FLOAT_EXTRACT16(FLOAT_SHL(FLOAT_DIV32(tmp32,See),15));
-#else
- RER = (.0001*Sxx + 3.*MULT16_32_Q15(st->leak_estimate,Syy)) / See;
- /* Check for y in e (lower bound on RER) */
- if (RER < Sey*Sey/(1+See*Syy))
- RER = Sey*Sey/(1+See*Syy);
- if (RER > .5)
- RER = .5;
-#endif
-
- /* We consider that the filter has had minimal adaptation if the following is true*/
- if (!st->adapted && st->sum_adapt > QCONST32(M,15) && MULT16_32_Q15(st->leak_estimate,Syy) > MULT16_32_Q15(QCONST16(.03f,15),Syy))
- {
- st->adapted = 1;
- }
-
- if (st->adapted)
- {
- /* Normal learning rate calculation once we're past the minimal adaptation phase */
- for (i=0;i<=st->frame_size;i++)
- {
- spx_word32_t r, e;
- /* Compute frequency-domain adaptation mask */
- r = MULT16_32_Q15(st->leak_estimate,SHL32(st->Yf[i],3));
- e = SHL32(st->Rf[i],3)+1;
-#ifdef FIXED_POINT
- if (r>SHR32(e,1))
- r = SHR32(e,1);
-#else
- if (r>.5*e)
- r = .5*e;
-#endif
- r = MULT16_32_Q15(QCONST16(.7,15),r) + MULT16_32_Q15(QCONST16(.3,15),(spx_word32_t)(MULT16_32_Q15(RER,e)));
- /*st->power_1[i] = adapt_rate*r/(e*(1+st->power[i]));*/
- st->power_1[i] = FLOAT_SHL(FLOAT_DIV32_FLOAT(r,FLOAT_MUL32U(e,st->power[i]+10)),WEIGHT_SHIFT+16);
- }
- } else {
- /* Temporary adaption rate if filter is not yet adapted enough */
- spx_word16_t adapt_rate=0;
-
- if (Sxx > SHR32(MULT16_16(N, 1000),6))
- {
- tmp32 = MULT16_32_Q15(QCONST16(.25f, 15), Sxx);
-#ifdef FIXED_POINT
- if (tmp32 > SHR32(See,2))
- tmp32 = SHR32(See,2);
-#else
- if (tmp32 > .25*See)
- tmp32 = .25*See;
-#endif
- adapt_rate = FLOAT_EXTRACT16(FLOAT_SHL(FLOAT_DIV32(tmp32, See),15));
- }
- for (i=0;i<=st->frame_size;i++)
- st->power_1[i] = FLOAT_SHL(FLOAT_DIV32(EXTEND32(adapt_rate),ADD32(st->power[i],10)),WEIGHT_SHIFT+1);
-
-
- /* How much have we adapted so far? */
- st->sum_adapt = ADD32(st->sum_adapt,adapt_rate);
- }
-
- /* Save residual echo so it can be used by the nonlinear processor */
- if (st->adapted)
- {
- /* If the filter is adapted, take the filtered echo */
- for (i=0;i<st->frame_size;i++)
- st->last_y[i] = st->last_y[st->frame_size+i];
- for (i=0;i<st->frame_size;i++)
- st->last_y[st->frame_size+i] = in[i]-out[i];
- } else {
- /* If filter isn't adapted yet, all we can do is take the far end signal directly */
- /* moved earlier: for (i=0;i<N;i++)
- st->last_y[i] = st->x[i];*/
- }
-
-}
-
-/* Compute spectrum of estimated echo for use in an echo post-filter */
-void speex_echo_get_residual(SpeexEchoState *st, spx_word32_t *residual_echo, int len)
-{
- int i;
- spx_word16_t leak2;
- int N;
-
- N = st->window_size;
-
- /* Apply hanning window (should pre-compute it)*/
- for (i=0;i<N;i++)
- st->y[i] = MULT16_16_Q15(st->window[i],st->last_y[i]);
-
- /* Compute power spectrum of the echo */
- spx_fft(st->fft_table, st->y, st->Y);
- power_spectrum(st->Y, residual_echo, N);
-
-#ifdef FIXED_POINT
- if (st->leak_estimate > 16383)
- leak2 = 32767;
- else
- leak2 = SHL16(st->leak_estimate, 1);
-#else
- if (st->leak_estimate>.5)
- leak2 = 1;
- else
- leak2 = 2*st->leak_estimate;
-#endif
- /* Estimate residual echo */
- for (i=0;i<=st->frame_size;i++)
- residual_echo[i] = (spx_int32_t)MULT16_32_Q15(leak2,residual_echo[i]);
-
-}
-
-int speex_echo_ctl(SpeexEchoState *st, int request, void *ptr)
-{
- switch(request)
- {
-
- case SPEEX_ECHO_GET_FRAME_SIZE:
- (*(int*)ptr) = st->frame_size;
- break;
- case SPEEX_ECHO_SET_SAMPLING_RATE:
- st->sampling_rate = (*(int*)ptr);
- st->spec_average = DIV32_16(SHL32(EXTEND32(st->frame_size), 15), st->sampling_rate);
-#ifdef FIXED_POINT
- st->beta0 = DIV32_16(SHL32(EXTEND32(st->frame_size), 16), st->sampling_rate);
- st->beta_max = DIV32_16(SHL32(EXTEND32(st->frame_size), 14), st->sampling_rate);
-#else
- st->beta0 = (2.0f*st->frame_size)/st->sampling_rate;
- st->beta_max = (.5f*st->frame_size)/st->sampling_rate;
-#endif
- if (st->sampling_rate<12000)
- st->notch_radius = QCONST16(.9, 15);
- else if (st->sampling_rate<24000)
- st->notch_radius = QCONST16(.982, 15);
- else
- st->notch_radius = QCONST16(.992, 15);
- break;
- case SPEEX_ECHO_GET_SAMPLING_RATE:
- (*(int*)ptr) = st->sampling_rate;
- break;
- default:
- speex_warning_int("Unknown speex_echo_ctl request: ", request);
- return -1;
- }
- return 0;
-}
diff --git a/3rdparty/speex/libspeex/medfilter.c b/3rdparty/speex/libspeex/medfilter.c
deleted file mode 100644
index 83872e54..00000000
--- a/3rdparty/speex/libspeex/medfilter.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Copyright (C) 2004 Jean-Marc Valin
- File medfilter.c
- Median filter
-
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#include "medfilter.h"
-#include "misc.h"
-
-MedianFilter *median_filter_new(int N)
-{
- MedianFilter *f = (MedianFilter*)speex_alloc(sizeof(MedianFilter));
- f->N = N;
- f->ids = (int*)speex_alloc(sizeof(int)*N);
- f->val = (float*)speex_alloc(sizeof(float)*N);
- f->filled = 0;
- return f;
-}
-
-void median_filter_update(MedianFilter *f, float val)
-{
- int i=0;
- int insert = 0;
- while (insert<f->filled && f->val[insert] < val)
- {
- insert++;
- }
- if (f->filled == f->N)
- {
- int remove;
- for (remove=0;remove<f->N;remove++)
- if (f->ids[remove] == 0)
- break;
- if (insert>remove)
- insert--;
- if (insert > remove)
- {
- for (i=remove;i<insert;i++)
- {
- f->val[i] = f->val[i+1];
- f->ids[i] = f->ids[i+1];
- }
- } else if (insert < remove)
- {
- for (i=remove;i>insert;i--)
- {
- f->val[i] = f->val[i-1];
- f->ids[i] = f->ids[i-1];
- }
- }
- for (i=0;i<f->filled;i++)
- f->ids[i]--;
- } else {
- for (i=f->filled;i>insert;i--)
- {
- f->val[i] = f->val[i-1];
- f->ids[i] = f->ids[i-1];
- }
- f->filled++;
- }
- f->val[insert]=val;
- f->ids[insert]=f->filled-1;
-}
-
-float median_filter_get(MedianFilter *f)
-{
- return f->val[f->filled>>1];
-}
-
diff --git a/3rdparty/speex/libspeex/medfilter.h b/3rdparty/speex/libspeex/medfilter.h
deleted file mode 100644
index 718869c3..00000000
--- a/3rdparty/speex/libspeex/medfilter.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright (C) 2004 Jean-Marc Valin */
-/**
- @file medfilter.h
- @brief Median filter
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifndef MEDFILTER_H
-#define MEDFILTER_H
-
-/** Median filter. */
-typedef struct {
- int N;
- int filled;
- int *ids;
- float *val;
-} MedianFilter;
-
-MedianFilter *median_filter_new(int N);
-void median_filter_update(MedianFilter *f, float val);
-float median_filter_get(MedianFilter *f);
-
-#endif
diff --git a/3rdparty/speex/libspeex/misc.c b/3rdparty/speex/libspeex/misc.c
deleted file mode 100644
index c7ce7a87..00000000
--- a/3rdparty/speex/libspeex/misc.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/* Copyright (C) 2002-2005 Jean-Marc Valin
- File: misc.c
- Various utility routines for Speex
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include "misc.h"
-
-#ifdef USER_MISC
-#include "user_misc.h"
-#endif
-
-#ifdef BFIN_ASM
-#include "misc_bfin.h"
-#endif
-
-#ifndef RELEASE
-void print_vec(float *vec, int len, char *name)
-{
- int i;
- printf ("%s ", name);
- for (i=0;i<len;i++)
- printf (" %f", vec[i]);
- printf ("\n");
-}
-#endif
-
-#ifdef FIXED_DEBUG
-long long spx_mips=0;
-#endif
-
-
-spx_uint32_t be_int(spx_uint32_t i)
-{
- spx_uint32_t ret=i;
-#ifndef WORDS_BIGENDIAN
- ret = i>>24;
- ret += (i>>8)&0x0000ff00;
- ret += (i<<8)&0x00ff0000;
- ret += (i<<24);
-#endif
- return ret;
-}
-
-spx_uint32_t le_int(spx_uint32_t i)
-{
- spx_uint32_t ret=i;
-#ifdef WORDS_BIGENDIAN
- ret = i>>24;
- ret += (i>>8)&0x0000ff00;
- ret += (i<<8)&0x00ff0000;
- ret += (i<<24);
-#endif
- return ret;
-}
-
-#ifndef OVERRIDE_SPEEX_ALLOC
-void *speex_alloc (int size)
-{
- return calloc(size,1);
-}
-#endif
-
-#ifndef OVERRIDE_SPEEX_ALLOC_SCRATCH
-void *speex_alloc_scratch (int size)
-{
- return calloc(size,1);
-}
-#endif
-
-#ifndef OVERRIDE_SPEEX_REALLOC
-void *speex_realloc (void *ptr, int size)
-{
- return realloc(ptr, size);
-}
-#endif
-
-#ifndef OVERRIDE_SPEEX_FREE
-void speex_free (void *ptr)
-{
- free(ptr);
-}
-#endif
-
-#ifndef OVERRIDE_SPEEX_FREE_SCRATCH
-void speex_free_scratch (void *ptr)
-{
- free(ptr);
-}
-#endif
-
-#ifndef OVERRIDE_SPEEX_MOVE
-void *speex_move (void *dest, void *src, int n)
-{
- return memmove(dest,src,n);
-}
-#endif
-
-#ifndef OVERRIDE_SPEEX_ERROR
-void speex_error(const char *str)
-{
- fprintf (stderr, "Fatal (internal) error: %s\n", str);
- exit(1);
-}
-#endif
-
-#ifndef OVERRIDE_SPEEX_WARNING
-void speex_warning(const char *str)
-{
-#ifndef DISABLE_WARNINGS
- fprintf (stderr, "warning: %s\n", str);
-#endif
-}
-#endif
-
-#ifndef OVERRIDE_SPEEX_WARNING_INT
-void speex_warning_int(const char *str, int val)
-{
-#ifndef DISABLE_WARNINGS
- fprintf (stderr, "warning: %s %d\n", str, val);
-#endif
-}
-#endif
-
-#ifndef OVERRIDE_SPEEX_NOTIFY
-void speex_notify(const char *str)
-{
-#ifndef DISABLE_NOTIFICATIONS
- fprintf (stderr, "notification: %s\n", str);
-#endif
-}
-#endif
-
-#ifdef FIXED_POINT
-spx_word16_t speex_rand(spx_word16_t std, spx_int32_t *seed)
-{
- spx_word32_t res;
- *seed = 1664525 * *seed + 1013904223;
- res = MULT16_16(EXTRACT16(SHR32(*seed,16)),std);
- return EXTRACT16(PSHR32(SUB32(res, SHR32(res, 3)),14));
-}
-#else
-spx_word16_t speex_rand(spx_word16_t std, spx_int32_t *seed)
-{
- const unsigned int jflone = 0x3f800000;
- const unsigned int jflmsk = 0x007fffff;
- union {int i; float f;} ran;
- *seed = 1664525 * *seed + 1013904223;
- ran.i = jflone | (jflmsk & *seed);
- ran.f -= 1.5;
- return 3.4642*std*ran.f;
-}
-#endif
-
-#ifndef OVERRIDE_SPEEX_PUTC
-void _speex_putc(int ch, void *file)
-{
- FILE *f = (FILE *)file;
- fprintf(f, "%c", ch);
-}
-#endif
diff --git a/3rdparty/speex/libspeex/misc.h b/3rdparty/speex/libspeex/misc.h
deleted file mode 100644
index 25cf1c0b..00000000
--- a/3rdparty/speex/libspeex/misc.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin */
-/**
- @file misc.h
- @brief Various compatibility routines for Speex
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef MISC_H
-#define MISC_H
-
-#ifndef SPEEX_VERSION
-#define SPEEX_MAJOR_VERSION 1 /**< Major Speex version. */
-#define SPEEX_MINOR_VERSION 1 /**< Minor Speex version. */
-#define SPEEX_MICRO_VERSION 13 /**< Micro Speex version. */
-#define SPEEX_EXTRA_VERSION "" /**< Extra Speex version. */
-#define SPEEX_VERSION "speex-1.2beta1" /**< Speex version string. */
-#endif
-
-/* A couple test to catch stupid option combinations */
-#ifdef FIXED_POINT
-
-#ifdef _USE_SSE
-#error SSE is only for floating-point
-#endif
-#if ((defined (ARM4_ASM)||defined (ARM4_ASM)) && defined(BFIN_ASM)) || (defined (ARM4_ASM)&&defined(ARM5E_ASM))
-#error Make up your mind. What CPU do you have?
-#endif
-#ifdef VORBIS_PSYCHO
-#error Vorbis-psy model currently not implemented in fixed-point
-#endif
-
-#else
-
-#if defined (ARM4_ASM) || defined(ARM5E_ASM) || defined(BFIN_ASM)
-#error I suppose you can have a [ARM4/ARM5E/Blackfin] that has float instructions?
-#endif
-#ifdef FIXED_POINT_DEBUG
-#error "Don't you think enabling fixed-point is a good thing to do if you want to debug that?"
-#endif
-
-
-#endif
-
-#include "arch.h"
-
-#ifndef RELEASE
-/** Print a named vector to stdout */
-void print_vec(float *vec, int len, char *name);
-#endif
-
-/** Convert big endian */
-spx_uint32_t be_int(spx_uint32_t i);
-/** Convert little endian */
-spx_uint32_t le_int(spx_uint32_t i);
-
-/** Speex wrapper for calloc. To do your own dynamic allocation, all you need to do is replace this function, speex_realloc and speex_free */
-void *speex_alloc (int size);
-
-/** Same as speex_alloc, except that the area is only needed inside a Speex call (might cause problem with wideband though) */
-void *speex_alloc_scratch (int size);
-
-/** Speex wrapper for realloc. To do your own dynamic allocation, all you need to do is replace this function, speex_alloc and speex_free */
-void *speex_realloc (void *ptr, int size);
-
-/** Speex wrapper for calloc. To do your own dynamic allocation, all you need to do is replace this function, speex_realloc and speex_alloc */
-void speex_free (void *ptr);
-
-/** Same as speex_alloc, except that the area is only needed inside a Speex call (might cause problem with wideband though) */
-void speex_free_scratch (void *ptr);
-
-/** Speex wrapper for mem_move */
-void *speex_move (void *dest, void *src, int n);
-
-/** Abort with an error message to stderr (internal Speex error) */
-void speex_error(const char *str);
-
-/** Print warning message to stderr (programming error) */
-void speex_warning(const char *str);
-
-/** Print warning message with integer argument to stderr */
-void speex_warning_int(const char *str, int val);
-
-/** Print notification message to stderr */
-void speex_notify(const char *str);
-
-/** Generate a random number */
-spx_word16_t speex_rand(spx_word16_t std, spx_int32_t *seed);
-
-/** Speex wrapper for putc */
-void _speex_putc(int ch, void *file);
-
-#endif
diff --git a/3rdparty/speex/libspeex/misc_bfin.h b/3rdparty/speex/libspeex/misc_bfin.h
deleted file mode 100644
index 77b082c0..00000000
--- a/3rdparty/speex/libspeex/misc_bfin.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright (C) 2005 Analog Devices */
-/**
- @file misc_bfin.h
- @author Jean-Marc Valin
- @brief Various compatibility routines for Speex (Blackfin version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#define OVERRIDE_SPEEX_MOVE
-void *speex_move (void *dest, void *src, int n)
-{
- __asm__ __volatile__
- (
- "L0 = 0;\n\t"
- "I0 = %0;\n\t"
- "R0 = [I0++];\n\t"
- "LOOP move%= LC0 = %2;\n\t"
- "LOOP_BEGIN move%=;\n\t"
- "[%1++] = R0 || R0 = [I0++];\n\t"
- "LOOP_END move%=;\n\t"
- "[%1++] = R0;\n\t"
- : "=a" (src), "=a" (dest)
- : "a" ((n>>2)-1), "0" (src), "1" (dest)
- : "R0", "I0", "L0", "memory"
- );
- return dest;
-}
diff --git a/3rdparty/speex/libspeex/modes.c b/3rdparty/speex/libspeex/modes.c
deleted file mode 100644
index 4b21ad75..00000000
--- a/3rdparty/speex/libspeex/modes.c
+++ /dev/null
@@ -1,668 +0,0 @@
-/* Copyright (C) 2002-2006 Jean-Marc Valin
- File: modes.c
-
- Describes the different modes of the codec
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "modes.h"
-#include "ltp.h"
-#include "quant_lsp.h"
-#include "cb_search.h"
-#include "sb_celp.h"
-#include "nb_celp.h"
-#include "vbr.h"
-#include "misc.h"
-#include <math.h>
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-#define MAX_IN_SAMPLES 640
-
-const SpeexMode * const speex_mode_list[SPEEX_NB_MODES] = {&speex_nb_mode, &speex_wb_mode, &speex_uwb_mode};
-
-/* Extern declarations for all codebooks we use here */
-extern const signed char gain_cdbk_nb[];
-extern const signed char gain_cdbk_lbr[];
-extern const signed char hexc_table[];
-extern const signed char exc_5_256_table[];
-extern const signed char exc_5_64_table[];
-extern const signed char exc_8_128_table[];
-extern const signed char exc_10_32_table[];
-extern const signed char exc_10_16_table[];
-extern const signed char exc_20_32_table[];
-extern const signed char hexc_10_32_table[];
-
-
-/* Parameters for Long-Term Prediction (LTP)*/
-static const ltp_params ltp_params_nb = {
- gain_cdbk_nb,
- 7,
- 7
-};
-
-/* Parameters for Long-Term Prediction (LTP)*/
-static const ltp_params ltp_params_vlbr = {
- gain_cdbk_lbr,
- 5,
- 0
-};
-
-/* Parameters for Long-Term Prediction (LTP)*/
-static const ltp_params ltp_params_lbr = {
- gain_cdbk_lbr,
- 5,
- 7
-};
-
-/* Parameters for Long-Term Prediction (LTP)*/
-static const ltp_params ltp_params_med = {
- gain_cdbk_lbr,
- 5,
- 7
-};
-
-/* Split-VQ innovation parameters for very low bit-rate narrowband */
-static const split_cb_params split_cb_nb_vlbr = {
- 10, /*subvect_size*/
- 4, /*nb_subvect*/
- exc_10_16_table, /*shape_cb*/
- 4, /*shape_bits*/
- 0,
-};
-
-/* Split-VQ innovation parameters for very low bit-rate narrowband */
-static const split_cb_params split_cb_nb_ulbr = {
- 20, /*subvect_size*/
- 2, /*nb_subvect*/
- exc_20_32_table, /*shape_cb*/
- 5, /*shape_bits*/
- 0,
-};
-
-/* Split-VQ innovation parameters for low bit-rate narrowband */
-static const split_cb_params split_cb_nb_lbr = {
- 10, /*subvect_size*/
- 4, /*nb_subvect*/
- exc_10_32_table, /*shape_cb*/
- 5, /*shape_bits*/
- 0,
-};
-
-
-/* Split-VQ innovation parameters narrowband */
-static const split_cb_params split_cb_nb = {
- 5, /*subvect_size*/
- 8, /*nb_subvect*/
- exc_5_64_table, /*shape_cb*/
- 6, /*shape_bits*/
- 0,
-};
-
-/* Split-VQ innovation parameters narrowband */
-static const split_cb_params split_cb_nb_med = {
- 8, /*subvect_size*/
- 5, /*nb_subvect*/
- exc_8_128_table, /*shape_cb*/
- 7, /*shape_bits*/
- 0,
-};
-
-/* Split-VQ innovation for low-band wideband */
-static const split_cb_params split_cb_sb = {
- 5, /*subvect_size*/
- 8, /*nb_subvect*/
- exc_5_256_table, /*shape_cb*/
- 8, /*shape_bits*/
- 0,
-};
-
-#ifndef DISABLE_WIDEBAND
-
-/* Split-VQ innovation for high-band wideband */
-static const split_cb_params split_cb_high = {
- 8, /*subvect_size*/
- 5, /*nb_subvect*/
- hexc_table, /*shape_cb*/
- 7, /*shape_bits*/
- 1,
-};
-
-
-/* Split-VQ innovation for high-band wideband */
-static const split_cb_params split_cb_high_lbr = {
- 10, /*subvect_size*/
- 4, /*nb_subvect*/
- hexc_10_32_table, /*shape_cb*/
- 5, /*shape_bits*/
- 0,
-};
-
-#endif
-
-/* 2150 bps "vocoder-like" mode for comfort noise */
-static const SpeexSubmode nb_submode1 = {
- 0,
- 1,
- 0,
- 0,
- /* LSP quantization */
- lsp_quant_lbr,
- lsp_unquant_lbr,
- /* No pitch quantization */
- forced_pitch_quant,
- forced_pitch_unquant,
- NULL,
- /* No innovation quantization (noise only) */
- noise_codebook_quant,
- noise_codebook_unquant,
- NULL,
- -1,
- 43
-};
-
-/* 3.95 kbps very low bit-rate mode */
-static const SpeexSubmode nb_submode8 = {
- 0,
- 1,
- 0,
- 0,
- /*LSP quantization*/
- lsp_quant_lbr,
- lsp_unquant_lbr,
- /*No pitch quantization*/
- forced_pitch_quant,
- forced_pitch_unquant,
- NULL,
- /*Innovation quantization*/
- split_cb_search_shape_sign,
- split_cb_shape_sign_unquant,
- &split_cb_nb_ulbr,
- QCONST16(.5,15),
- 79
-};
-
-/* 5.95 kbps very low bit-rate mode */
-static const SpeexSubmode nb_submode2 = {
- 0,
- 0,
- 0,
- 0,
- /*LSP quantization*/
- lsp_quant_lbr,
- lsp_unquant_lbr,
- /*No pitch quantization*/
- pitch_search_3tap,
- pitch_unquant_3tap,
- &ltp_params_vlbr,
- /*Innovation quantization*/
- split_cb_search_shape_sign,
- split_cb_shape_sign_unquant,
- &split_cb_nb_vlbr,
- QCONST16(.6,15),
- 119
-};
-
-/* 8 kbps low bit-rate mode */
-static const SpeexSubmode nb_submode3 = {
- -1,
- 0,
- 1,
- 0,
- /*LSP quantization*/
- lsp_quant_lbr,
- lsp_unquant_lbr,
- /*Pitch quantization*/
- pitch_search_3tap,
- pitch_unquant_3tap,
- &ltp_params_lbr,
- /*Innovation quantization*/
- split_cb_search_shape_sign,
- split_cb_shape_sign_unquant,
- &split_cb_nb_lbr,
- QCONST16(.55,15),
- 160
-};
-
-/* 11 kbps medium bit-rate mode */
-static const SpeexSubmode nb_submode4 = {
- -1,
- 0,
- 1,
- 0,
- /*LSP quantization*/
- lsp_quant_lbr,
- lsp_unquant_lbr,
- /*Pitch quantization*/
- pitch_search_3tap,
- pitch_unquant_3tap,
- &ltp_params_med,
- /*Innovation quantization*/
- split_cb_search_shape_sign,
- split_cb_shape_sign_unquant,
- &split_cb_nb_med,
- QCONST16(.45,15),
- 220
-};
-
-/* 15 kbps high bit-rate mode */
-static const SpeexSubmode nb_submode5 = {
- -1,
- 0,
- 3,
- 0,
- /*LSP quantization*/
- lsp_quant_nb,
- lsp_unquant_nb,
- /*Pitch quantization*/
- pitch_search_3tap,
- pitch_unquant_3tap,
- &ltp_params_nb,
- /*Innovation quantization*/
- split_cb_search_shape_sign,
- split_cb_shape_sign_unquant,
- &split_cb_nb,
- QCONST16(.3,15),
- 300
-};
-
-/* 18.2 high bit-rate mode */
-static const SpeexSubmode nb_submode6 = {
- -1,
- 0,
- 3,
- 0,
- /*LSP quantization*/
- lsp_quant_nb,
- lsp_unquant_nb,
- /*Pitch quantization*/
- pitch_search_3tap,
- pitch_unquant_3tap,
- &ltp_params_nb,
- /*Innovation quantization*/
- split_cb_search_shape_sign,
- split_cb_shape_sign_unquant,
- &split_cb_sb,
- QCONST16(.2,15),
- 364
-};
-
-/* 24.6 kbps high bit-rate mode */
-static const SpeexSubmode nb_submode7 = {
- -1,
- 0,
- 3,
- 1,
- /*LSP quantization*/
- lsp_quant_nb,
- lsp_unquant_nb,
- /*Pitch quantization*/
- pitch_search_3tap,
- pitch_unquant_3tap,
- &ltp_params_nb,
- /*Innovation quantization*/
- split_cb_search_shape_sign,
- split_cb_shape_sign_unquant,
- &split_cb_nb,
- QCONST16(.1,15),
- 492
-};
-
-
-/* Default mode for narrowband */
-static const SpeexNBMode nb_mode = {
- 160, /*frameSize*/
- 40, /*subframeSize*/
- 10, /*lpcSize*/
- 17, /*pitchStart*/
- 144, /*pitchEnd*/
-#ifdef FIXED_POINT
- 29491, 19661, /* gamma1, gamma2 */
-#else
- 0.9, 0.6, /* gamma1, gamma2 */
-#endif
- .012, /*lag_factor*/
- QCONST16(.0002,15), /*lpc_floor*/
-#ifdef EPIC_48K
- 0,
-#endif
- {NULL, &nb_submode1, &nb_submode2, &nb_submode3, &nb_submode4, &nb_submode5, &nb_submode6, &nb_submode7,
- &nb_submode8, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
- 5,
- {1, 8, 2, 3, 3, 4, 4, 5, 5, 6, 7}
-};
-
-
-/* Default mode for narrowband */
-const SpeexMode speex_nb_mode = {
- &nb_mode,
- nb_mode_query,
- "narrowband",
- 0,
- 4,
- &nb_encoder_init,
- &nb_encoder_destroy,
- &nb_encode,
- &nb_decoder_init,
- &nb_decoder_destroy,
- &nb_decode,
- &nb_encoder_ctl,
- &nb_decoder_ctl,
-};
-
-
-/* Wideband part */
-
-static const SpeexSubmode wb_submode1 = {
- 0,
- 0,
- 1,
- 0,
- /*LSP quantization*/
- lsp_quant_high,
- lsp_unquant_high,
- /*Pitch quantization*/
- NULL,
- NULL,
- NULL,
- /*No innovation quantization*/
- NULL,
- NULL,
- NULL,
- -1,
- 36
-};
-
-
-static const SpeexSubmode wb_submode2 = {
- 0,
- 0,
- 1,
- 0,
- /*LSP quantization*/
- lsp_quant_high,
- lsp_unquant_high,
- /*Pitch quantization*/
- NULL,
- NULL,
- NULL,
- /*Innovation quantization*/
- split_cb_search_shape_sign,
- split_cb_shape_sign_unquant,
-#ifdef DISABLE_WIDEBAND
- NULL,
-#else
- &split_cb_high_lbr,
-#endif
- -1,
- 112
-};
-
-
-static const SpeexSubmode wb_submode3 = {
- 0,
- 0,
- 1,
- 0,
- /*LSP quantization*/
- lsp_quant_high,
- lsp_unquant_high,
- /*Pitch quantization*/
- NULL,
- NULL,
- NULL,
- /*Innovation quantization*/
- split_cb_search_shape_sign,
- split_cb_shape_sign_unquant,
-#ifdef DISABLE_WIDEBAND
- NULL,
-#else
- &split_cb_high,
-#endif
- -1,
- 192
-};
-
-static const SpeexSubmode wb_submode4 = {
- 0,
- 0,
- 1,
- 1,
- /*LSP quantization*/
- lsp_quant_high,
- lsp_unquant_high,
- /*Pitch quantization*/
- NULL,
- NULL,
- NULL,
- /*Innovation quantization*/
- split_cb_search_shape_sign,
- split_cb_shape_sign_unquant,
-#ifdef DISABLE_WIDEBAND
- NULL,
-#else
- &split_cb_high,
-#endif
- -1,
- 352
-};
-
-
-/* Split-band wideband CELP mode*/
-static const SpeexSBMode sb_wb_mode = {
- &speex_nb_mode,
- 160, /*frameSize*/
- 40, /*subframeSize*/
- 8, /*lpcSize*/
- 640, /*bufSize*/
-#ifdef FIXED_POINT
- 29491, 19661, /* gamma1, gamma2 */
-#else
- 0.9, 0.6, /* gamma1, gamma2 */
-#endif
- .012, /*lag_factor*/
- QCONST16(.0002,15), /*lpc_floor*/
- QCONST16(0.9f,15),
- {NULL, &wb_submode1, &wb_submode2, &wb_submode3, &wb_submode4, NULL, NULL, NULL},
- 3,
- {1, 8, 2, 3, 4, 5, 5, 6, 6, 7, 7},
- {1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 4},
- vbr_hb_thresh,
- 5
-};
-
-
-const SpeexMode speex_wb_mode = {
- &sb_wb_mode,
- wb_mode_query,
- "wideband (sub-band CELP)",
- 1,
- 4,
- &sb_encoder_init,
- &sb_encoder_destroy,
- &sb_encode,
- &sb_decoder_init,
- &sb_decoder_destroy,
- &sb_decode,
- &sb_encoder_ctl,
- &sb_decoder_ctl,
-};
-
-
-
-/* "Ultra-wideband" mode stuff */
-
-
-
-/* Split-band "ultra-wideband" (32 kbps) CELP mode*/
-static const SpeexSBMode sb_uwb_mode = {
- &speex_wb_mode,
- 320, /*frameSize*/
- 80, /*subframeSize*/
- 8, /*lpcSize*/
- 1280, /*bufSize*/
-#ifdef FIXED_POINT
- 29491, 19661, /* gamma1, gamma2 */
-#else
- 0.9, 0.6, /* gamma1, gamma2 */
-#endif
- .012, /*lag_factor*/
- QCONST16(.0002,15), /*lpc_floor*/
- QCONST16(0.7f,15),
- {NULL, &wb_submode1, NULL, NULL, NULL, NULL, NULL, NULL},
- 1,
- {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
- {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
- vbr_uhb_thresh,
- 2
-};
-
-
-const SpeexMode speex_uwb_mode = {
- &sb_uwb_mode,
- wb_mode_query,
- "ultra-wideband (sub-band CELP)",
- 2,
- 4,
- &sb_encoder_init,
- &sb_encoder_destroy,
- &sb_encode,
- &sb_decoder_init,
- &sb_decoder_destroy,
- &sb_decode,
- &sb_encoder_ctl,
- &sb_decoder_ctl,
-};
-
-
-
-
-#ifdef EPIC_48K
-
-extern const signed char gain_cdbk_ulbr[];
-extern const signed char exc_12_32_table[];
-
-/* Parameters for Long-Term Prediction (LTP)*/
-static const ltp_params ltp_params_48k = {
- gain_cdbk_ulbr,
- 3,
- 0
-};
-
-static const split_cb_params split_cb_nb_48k = {
- 12, /*subvect_size*/
- 4, /*nb_subvect*/
- exc_12_32_table, /*shape_cb*/
- 5, /*shape_bits*/
- 0,
-};
-
-
-/* 4.8 kbps very low bit-rate mode */
-static const SpeexSubmode nb_48k_submode = {
- 0,
- 0,
- 0,
- 0,
- /*LSP quantization*/
- lsp_quant_48k,
- lsp_unquant_48k,
- /*No pitch quantization*/
- pitch_search_3tap,
- pitch_unquant_3tap,
- &ltp_params_48k,
- /*Innovation quantization*/
- split_cb_search_shape_sign,
- split_cb_shape_sign_unquant,
- &split_cb_nb_48k,
- QCONST16(.7,15),
- 144
-};
-
-
-/* Special, non-standard 4.8 kbps mode */
-static const SpeexNBMode nb_48k_mode = {
- 240, /*frameSize*/
- 48, /*subframeSize*/
- 10, /*lpcSize*/
- 17, /*pitchStart*/
- 144, /*pitchEnd*/
- 0.9, /*gamma1*/
- 0.6, /*gamma2*/
- .01, /*lag_factor*/
- QCONST16(.0003,15), /*lpc_floor*/
- 1,
- {NULL, NULL, &nb_48k_submode, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
- 2,
- {2,2,2,2,2,2,2,2,2,2,2}
-};
-
-
-/* Default mode for narrowband */
-const SpeexMode speex_nb_48k_mode = {
- &nb_48k_mode,
- nb_mode_query,
- "narrowband 4.8 kbps",
- 1000,
- 4,
- &nb_encoder_init,
- &nb_encoder_destroy,
- &nb_encode,
- &nb_decoder_init,
- &nb_decoder_destroy,
- &nb_decode,
- &nb_encoder_ctl,
- &nb_decoder_ctl,
-};
-
-
-#endif
-
-int speex_mode_query(const SpeexMode *mode, int request, void *ptr)
-{
- return mode->query(mode->mode, request, ptr);
-}
-
-const SpeexMode * speex_lib_get_mode (int mode)
-{
-#ifdef EPIC_48K
- if (mode == SPEEX_MODEID_NB_48K) return &speex_nb_48k_mode;
-#endif
-
- if (mode < 0 || mode > SPEEX_NB_MODES) return NULL;
-
- return speex_mode_list[mode];
-}
diff --git a/3rdparty/speex/libspeex/modes.h b/3rdparty/speex/libspeex/modes.h
deleted file mode 100644
index 5bf1971c..00000000
--- a/3rdparty/speex/libspeex/modes.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/* Copyright (C) 2002-2006 Jean-Marc Valin */
-/**
- @file modes.h
- @brief Describes the different modes of the codec
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifndef MODES_H
-#define MODES_H
-
-#include <speex/speex.h>
-#include <speex/speex_bits.h>
-#include "misc.h"
-
-#define NB_SUBMODES 16
-#define NB_SUBMODE_BITS 4
-
-#define SB_SUBMODES 8
-#define SB_SUBMODE_BITS 3
-
-/* Used internally, NOT TO BE USED in applications */
-/** Used internally*/
-#define SPEEX_GET_PI_GAIN 100
-/** Used internally*/
-#define SPEEX_GET_EXC 101
-/** Used internally*/
-#define SPEEX_GET_INNOV 102
-/** Used internally*/
-#define SPEEX_GET_DTX_STATUS 103
-/** Used internally*/
-#define SPEEX_SET_INNOVATION_SAVE 104
-/** Used internally*/
-#define SPEEX_SET_WIDEBAND 105
-
-/** Used internally*/
-#define SPEEX_GET_STACK 106
-
-
-/** Quantizes LSPs */
-typedef void (*lsp_quant_func)(spx_lsp_t *, spx_lsp_t *, int, SpeexBits *);
-
-/** Decodes quantized LSPs */
-typedef void (*lsp_unquant_func)(spx_lsp_t *, int, SpeexBits *);
-
-
-/** Long-term predictor quantization */
-typedef int (*ltp_quant_func)(spx_word16_t *, spx_word16_t *, spx_coef_t *, spx_coef_t *,
- spx_coef_t *, spx_sig_t *, const void *, int, int, spx_word16_t,
- int, int, SpeexBits*, char *, spx_word16_t *, spx_word16_t *, int, int, int, spx_word32_t *);
-
-/** Long-term un-quantize */
-typedef void (*ltp_unquant_func)(spx_word16_t *, spx_word32_t *, int, int, spx_word16_t, const void *, int, int *,
- spx_word16_t *, SpeexBits*, char*, int, int, spx_word16_t, int);
-
-
-/** Innovation quantization function */
-typedef void (*innovation_quant_func)(spx_word16_t *, spx_coef_t *, spx_coef_t *, spx_coef_t *, const void *, int, int,
- spx_sig_t *, spx_word16_t *, SpeexBits *, char *, int, int);
-
-/** Innovation unquantization function */
-typedef void (*innovation_unquant_func)(spx_sig_t *, const void *, int, SpeexBits*, char *, spx_int32_t *);
-
-/** Description of a Speex sub-mode (wither narrowband or wideband */
-typedef struct SpeexSubmode {
- int lbr_pitch; /**< Set to -1 for "normal" modes, otherwise encode pitch using a global pitch and allowing a +- lbr_pitch variation (for low not-rates)*/
- int forced_pitch_gain; /**< Use the same (forced) pitch gain for all sub-frames */
- int have_subframe_gain; /**< Number of bits to use as sub-frame innovation gain */
- int double_codebook; /**< Apply innovation quantization twice for higher quality (and higher bit-rate)*/
- /*LSP functions*/
- lsp_quant_func lsp_quant; /**< LSP quantization function */
- lsp_unquant_func lsp_unquant; /**< LSP unquantization function */
-
- /*Lont-term predictor functions*/
- ltp_quant_func ltp_quant; /**< Long-term predictor (pitch) quantizer */
- ltp_unquant_func ltp_unquant; /**< Long-term predictor (pitch) un-quantizer */
- const void *ltp_params; /**< Pitch parameters (options) */
-
- /*Quantization of innovation*/
- innovation_quant_func innovation_quant; /**< Innovation quantization */
- innovation_unquant_func innovation_unquant; /**< Innovation un-quantization */
- const void *innovation_params; /**< Innovation quantization parameters*/
-
- spx_word16_t comb_gain; /**< Gain of enhancer comb filter */
-
- int bits_per_frame; /**< Number of bits per frame after encoding*/
-} SpeexSubmode;
-
-/** Struct defining the encoding/decoding mode*/
-typedef struct SpeexNBMode {
- int frameSize; /**< Size of frames used for encoding */
- int subframeSize; /**< Size of sub-frames used for encoding */
- int lpcSize; /**< Order of LPC filter */
- int pitchStart; /**< Smallest pitch value allowed */
- int pitchEnd; /**< Largest pitch value allowed */
-
- spx_word16_t gamma1; /**< Perceptual filter parameter #1 */
- spx_word16_t gamma2; /**< Perceptual filter parameter #2 */
- float lag_factor; /**< Lag-windowing parameter */
- spx_word16_t lpc_floor; /**< Noise floor for LPC analysis */
-
-#ifdef EPIC_48K
- int lbr48k; /**< 1 for the special 4.8 kbps mode */
-#endif
-
- const SpeexSubmode *submodes[NB_SUBMODES]; /**< Sub-mode data for the mode */
- int defaultSubmode; /**< Default sub-mode to use when encoding */
- int quality_map[11]; /**< Mode corresponding to each quality setting */
-} SpeexNBMode;
-
-
-/** Struct defining the encoding/decoding mode for SB-CELP (wideband) */
-typedef struct SpeexSBMode {
- const SpeexMode *nb_mode; /**< Embedded narrowband mode */
- int frameSize; /**< Size of frames used for encoding */
- int subframeSize; /**< Size of sub-frames used for encoding */
- int lpcSize; /**< Order of LPC filter */
- int bufSize; /**< Signal buffer size in encoder */
- spx_word16_t gamma1; /**< Perceptual filter parameter #1 */
- spx_word16_t gamma2; /**< Perceptual filter parameter #1 */
- float lag_factor; /**< Lag-windowing parameter */
- spx_word16_t lpc_floor; /**< Noise floor for LPC analysis */
- spx_word16_t folding_gain;
-
- const SpeexSubmode *submodes[SB_SUBMODES]; /**< Sub-mode data for the mode */
- int defaultSubmode; /**< Default sub-mode to use when encoding */
- int low_quality_map[11]; /**< Mode corresponding to each quality setting */
- int quality_map[11]; /**< Mode corresponding to each quality setting */
- const float (*vbr_thresh)[11];
- int nb_modes;
-} SpeexSBMode;
-
-int speex_encode_native(void *state, spx_word16_t *in, SpeexBits *bits);
-int speex_decode_native(void *state, SpeexBits *bits, spx_word16_t *out);
-
-int nb_mode_query(const void *mode, int request, void *ptr);
-int wb_mode_query(const void *mode, int request, void *ptr);
-
-#endif
diff --git a/3rdparty/speex/libspeex/nb_celp.c b/3rdparty/speex/libspeex/nb_celp.c
deleted file mode 100644
index 1828aed6..00000000
--- a/3rdparty/speex/libspeex/nb_celp.c
+++ /dev/null
@@ -1,2049 +0,0 @@
-/* Copyright (C) 2002-2006 Jean-Marc Valin
- File: nb_celp.c
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <math.h>
-#include "nb_celp.h"
-#include "lpc.h"
-#include "lsp.h"
-#include "ltp.h"
-#include "quant_lsp.h"
-#include "cb_search.h"
-#include "filters.h"
-#include "stack_alloc.h"
-#include "vq.h"
-#include <speex/speex_bits.h>
-#include "vbr.h"
-#include "misc.h"
-#include "math_approx.h"
-#include <speex/speex_callbacks.h>
-
-#ifdef VORBIS_PSYCHO
-#include "vorbis_psy.h"
-#endif
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846 /* pi */
-#endif
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-#define SUBMODE(x) st->submodes[st->submodeID]->x
-
-/* Default size for the encoder and decoder stack (can be changed at compile time).
- This does not apply when using variable-size arrays or alloca. */
-#ifndef NB_ENC_STACK
-#define NB_ENC_STACK (8000*sizeof(spx_sig_t))
-#endif
-
-#ifndef NB_DEC_STACK
-#define NB_DEC_STACK (4000*sizeof(spx_sig_t))
-#endif
-
-
-#ifdef FIXED_POINT
-const spx_word32_t ol_gain_table[32]={18900, 25150, 33468, 44536, 59265, 78865, 104946, 139653, 185838, 247297, 329081, 437913, 582736, 775454, 1031906, 1373169, 1827293, 2431601, 3235761, 4305867, 5729870, 7624808, 10146425, 13501971, 17967238, 23909222, 31816294, 42338330, 56340132, 74972501, 99766822, 132760927};
-const spx_word16_t exc_gain_quant_scal3_bound[7]={1841, 3883, 6051, 8062, 10444, 13580, 18560};
-const spx_word16_t exc_gain_quant_scal3[8]={1002, 2680, 5086, 7016, 9108, 11781, 15380, 21740};
-const spx_word16_t exc_gain_quant_scal1_bound[1]={14385};
-const spx_word16_t exc_gain_quant_scal1[2]={11546, 17224};
-
-#define LSP_MARGIN 16
-#define LSP_DELTA1 6553
-#define LSP_DELTA2 1638
-
-#else
-
-const float exc_gain_quant_scal3_bound[7]={0.112338f, 0.236980f, 0.369316f, 0.492054f, 0.637471f, 0.828874f, 1.132784f};
-const float exc_gain_quant_scal3[8]={0.061130f, 0.163546f, 0.310413f, 0.428220f, 0.555887f, 0.719055f, 0.938694f, 1.326874f};
-const float exc_gain_quant_scal1_bound[1]={0.87798f};
-const float exc_gain_quant_scal1[2]={0.70469f, 1.05127f};
-
-#define LSP_MARGIN .002f
-#define LSP_DELTA1 .2f
-#define LSP_DELTA2 .05f
-
-#endif
-
-#ifdef VORBIS_PSYCHO
-#define EXTRA_BUFFER 100
-#else
-#define EXTRA_BUFFER 0
-#endif
-
-
-#define sqr(x) ((x)*(x))
-
-extern const spx_word16_t lpc_window[];
-
-void *nb_encoder_init(const SpeexMode *m)
-{
- EncState *st;
- const SpeexNBMode *mode;
- int i;
-
- mode=(const SpeexNBMode *)m->mode;
- st = (EncState*)speex_alloc(sizeof(EncState));
- if (!st)
- return NULL;
-#if defined(VAR_ARRAYS) || defined (USE_ALLOCA)
- st->stack = NULL;
-#else
- st->stack = (char*)speex_alloc_scratch(NB_ENC_STACK);
-#endif
-
- st->mode=m;
-
- st->frameSize = mode->frameSize;
- st->nbSubframes=mode->frameSize/mode->subframeSize;
- st->subframeSize=mode->subframeSize;
- st->windowSize = st->frameSize+st->subframeSize;
- st->lpcSize = mode->lpcSize;
- st->gamma1=mode->gamma1;
- st->gamma2=mode->gamma2;
- st->min_pitch=mode->pitchStart;
- st->max_pitch=mode->pitchEnd;
- st->lag_factor=mode->lag_factor;
- st->lpc_floor = mode->lpc_floor;
-
- st->submodes=mode->submodes;
- st->submodeID=st->submodeSelect=mode->defaultSubmode;
- st->bounded_pitch = 1;
-
- st->encode_submode = 1;
-#ifdef EPIC_48K
- st->lbr_48k=mode->lbr48k;
-#endif
-
-#ifdef VORBIS_PSYCHO
- st->psy = vorbis_psy_init(8000, 256);
- st->curve = (float*)speex_alloc(128*sizeof(float));
- st->old_curve = (float*)speex_alloc(128*sizeof(float));
- st->psy_window = (float*)speex_alloc(256*sizeof(float));
-#endif
-
- st->cumul_gain = 1024;
-
- /* Allocating input buffer */
- st->winBuf = (spx_word16_t*)speex_alloc((st->windowSize-st->frameSize)*sizeof(spx_word16_t));
- /* Allocating excitation buffer */
- st->excBuf = (spx_word16_t*)speex_alloc((mode->frameSize+mode->pitchEnd+2)*sizeof(spx_word16_t));
- st->exc = st->excBuf + mode->pitchEnd + 2;
- st->swBuf = (spx_word16_t*)speex_alloc((mode->frameSize+mode->pitchEnd+2)*sizeof(spx_word16_t));
- st->sw = st->swBuf + mode->pitchEnd + 2;
-
- st->window= lpc_window;
-
- /* Create the window for autocorrelation (lag-windowing) */
- st->lagWindow = (spx_word16_t*)speex_alloc((st->lpcSize+1)*sizeof(spx_word16_t));
- for (i=0;i<st->lpcSize+1;i++)
- st->lagWindow[i]=16384*exp(-.5*sqr(2*M_PI*st->lag_factor*i));
-
- st->old_lsp = (spx_lsp_t*)speex_alloc((st->lpcSize)*sizeof(spx_lsp_t));
- st->old_qlsp = (spx_lsp_t*)speex_alloc((st->lpcSize)*sizeof(spx_lsp_t));
- st->first = 1;
- for (i=0;i<st->lpcSize;i++)
- {
- st->old_lsp[i]=LSP_SCALING*(M_PI*((float)(i+1)))/(st->lpcSize+1);
- }
-
- st->mem_sp = (spx_mem_t*)speex_alloc((st->lpcSize)*sizeof(spx_mem_t));
- st->mem_sw = (spx_mem_t*)speex_alloc((st->lpcSize)*sizeof(spx_mem_t));
- st->mem_sw_whole = (spx_mem_t*)speex_alloc((st->lpcSize)*sizeof(spx_mem_t));
- st->mem_exc = (spx_mem_t*)speex_alloc((st->lpcSize)*sizeof(spx_mem_t));
- st->mem_exc2 = (spx_mem_t*)speex_alloc((st->lpcSize)*sizeof(spx_mem_t));
-
- st->pi_gain = (spx_word32_t*)speex_alloc((st->nbSubframes)*sizeof(spx_word32_t));
- st->innov_rms_save = NULL;
-
- st->pitch = (int*)speex_alloc((st->nbSubframes)*sizeof(int));
-
- st->vbr = (VBRState*)speex_alloc(sizeof(VBRState));
- vbr_init(st->vbr);
- st->vbr_quality = 8;
- st->vbr_enabled = 0;
- st->vbr_max = 0;
- st->vad_enabled = 0;
- st->dtx_enabled = 0;
- st->abr_enabled = 0;
- st->abr_drift = 0;
-
- st->plc_tuning = 2;
- st->complexity=2;
- st->sampling_rate=8000;
- st->dtx_count=0;
- st->isWideband = 0;
- st->highpass_enabled = 1;
-
-#ifdef ENABLE_VALGRIND
- VALGRIND_MAKE_READABLE(st, (st->stack-(char*)st));
-#endif
- return st;
-}
-
-void nb_encoder_destroy(void *state)
-{
- EncState *st=(EncState *)state;
- /* Free all allocated memory */
-#if !(defined(VAR_ARRAYS) || defined (USE_ALLOCA))
- speex_free_scratch(st->stack);
-#endif
-
- speex_free (st->winBuf);
- speex_free (st->excBuf);
- speex_free (st->old_qlsp);
- speex_free (st->swBuf);
-
- speex_free (st->lagWindow);
-
- speex_free (st->old_lsp);
- speex_free (st->mem_sp);
- speex_free (st->mem_sw);
- speex_free (st->mem_sw_whole);
- speex_free (st->mem_exc);
- speex_free (st->mem_exc2);
- speex_free (st->pi_gain);
- speex_free (st->pitch);
-
- vbr_destroy(st->vbr);
- speex_free (st->vbr);
-
-#ifdef VORBIS_PSYCHO
- vorbis_psy_destroy(st->psy);
- speex_free (st->curve);
- speex_free (st->old_curve);
- speex_free (st->psy_window);
-#endif
-
- /*Free state memory... should be last*/
- speex_free(st);
-}
-
-int nb_encode(void *state, void *vin, SpeexBits *bits)
-{
- EncState *st;
- int i, sub, roots;
- int ol_pitch;
- spx_word16_t ol_pitch_coef;
- spx_word32_t ol_gain;
- VARDECL(spx_word16_t *ringing);
- VARDECL(spx_word16_t *target);
- VARDECL(spx_sig_t *innov);
- VARDECL(spx_word32_t *exc32);
- VARDECL(spx_mem_t *mem);
- VARDECL(spx_coef_t *bw_lpc1);
- VARDECL(spx_coef_t *bw_lpc2);
- VARDECL(spx_coef_t *lpc);
- VARDECL(spx_lsp_t *lsp);
- VARDECL(spx_lsp_t *qlsp);
- VARDECL(spx_lsp_t *interp_lsp);
- VARDECL(spx_lsp_t *interp_qlsp);
- VARDECL(spx_coef_t *interp_lpc);
- VARDECL(spx_coef_t *interp_qlpc);
- char *stack;
- VARDECL(spx_word16_t *syn_resp);
- VARDECL(spx_word16_t *real_exc);
-#ifdef EPIC_48K
- int pitch_half[2];
- int ol_pitch_id=0;
-#endif
- spx_word32_t ener=0;
- spx_word16_t fine_gain;
- spx_word16_t *in = (spx_word16_t*)vin;
-
- st=(EncState *)state;
- stack=st->stack;
-
- ALLOC(lpc, st->lpcSize, spx_coef_t);
- ALLOC(bw_lpc1, st->lpcSize, spx_coef_t);
- ALLOC(bw_lpc2, st->lpcSize, spx_coef_t);
- ALLOC(lsp, st->lpcSize, spx_lsp_t);
- ALLOC(qlsp, st->lpcSize, spx_lsp_t);
- ALLOC(interp_lsp, st->lpcSize, spx_lsp_t);
- ALLOC(interp_qlsp, st->lpcSize, spx_lsp_t);
- ALLOC(interp_lpc, st->lpcSize, spx_coef_t);
- ALLOC(interp_qlpc, st->lpcSize, spx_coef_t);
-
- /* Move signals 1 frame towards the past */
- speex_move(st->excBuf, st->excBuf+st->frameSize, (st->max_pitch+2)*sizeof(spx_word16_t));
- speex_move(st->swBuf, st->swBuf+st->frameSize, (st->max_pitch+2)*sizeof(spx_word16_t));
-
- if (st->highpass_enabled)
- highpass(in, in, st->frameSize, (st->isWideband?HIGHPASS_WIDEBAND:HIGHPASS_NARROWBAND)|HIGHPASS_INPUT, st->mem_hp);
-
- {
- VARDECL(spx_word16_t *w_sig);
- VARDECL(spx_word16_t *autocorr);
- ALLOC(w_sig, st->windowSize, spx_word16_t);
- ALLOC(autocorr, st->lpcSize+1, spx_word16_t);
- /* Window for analysis */
- for (i=0;i<st->windowSize-st->frameSize;i++)
- w_sig[i] = EXTRACT16(SHR32(MULT16_16(st->winBuf[i],st->window[i]),SIG_SHIFT));
- for (;i<st->windowSize;i++)
- w_sig[i] = EXTRACT16(SHR32(MULT16_16(in[i-st->windowSize+st->frameSize],st->window[i]),SIG_SHIFT));
- /* Compute auto-correlation */
- _spx_autocorr(w_sig, autocorr, st->lpcSize+1, st->windowSize);
- autocorr[0] = ADD16(autocorr[0],MULT16_16_Q15(autocorr[0],st->lpc_floor)); /* Noise floor in auto-correlation domain */
-
- /* Lag windowing: equivalent to filtering in the power-spectrum domain */
- for (i=0;i<st->lpcSize+1;i++)
- autocorr[i] = MULT16_16_Q14(autocorr[i],st->lagWindow[i]);
-
- /* Levinson-Durbin */
- _spx_lpc(lpc, autocorr, st->lpcSize);
- /* LPC to LSPs (x-domain) transform */
- roots=lpc_to_lsp (lpc, st->lpcSize, lsp, 10, LSP_DELTA1, stack);
- /* Check if we found all the roots */
- if (roots!=st->lpcSize)
- {
- /*If we can't find all LSP's, do some damage control and use previous filter*/
- for (i=0;i<st->lpcSize;i++)
- {
- lsp[i]=st->old_lsp[i];
- }
- }
- }
-
-
-
-
- /* Whole frame analysis (open-loop estimation of pitch and excitation gain) */
- {
- if (st->first)
- for (i=0;i<st->lpcSize;i++)
- interp_lsp[i] = lsp[i];
- else
- lsp_interpolate(st->old_lsp, lsp, interp_lsp, st->lpcSize, st->nbSubframes, st->nbSubframes<<1);
-
- lsp_enforce_margin(interp_lsp, st->lpcSize, LSP_MARGIN);
-
- /* Compute interpolated LPCs (unquantized) for whole frame*/
- lsp_to_lpc(interp_lsp, interp_lpc, st->lpcSize,stack);
-
-
- /*Open-loop pitch*/
- if (st->complexity>2 || !st->submodes[st->submodeID] || st->vbr_enabled || st->vad_enabled || SUBMODE(forced_pitch_gain) ||
- SUBMODE(lbr_pitch) != -1)
- {
- int nol_pitch[6];
- spx_word16_t nol_pitch_coef[6];
-
- bw_lpc(st->gamma1, interp_lpc, bw_lpc1, st->lpcSize);
- bw_lpc(st->gamma2, interp_lpc, bw_lpc2, st->lpcSize);
-
- for (i=0;i<st->windowSize-st->frameSize;i++)
- st->sw[i] = st->winBuf[i];
- for (;i<st->frameSize;i++)
- st->sw[i] = in[i-st->windowSize+st->frameSize];
- filter_mem16(st->sw, bw_lpc1, bw_lpc2, st->sw, st->frameSize, st->lpcSize, st->mem_sw_whole, stack);
-
- open_loop_nbest_pitch(st->sw, st->min_pitch, st->max_pitch, st->frameSize,
- nol_pitch, nol_pitch_coef, 6, stack);
- ol_pitch=nol_pitch[0];
- ol_pitch_coef = nol_pitch_coef[0];
- /*Try to remove pitch multiples*/
- for (i=1;i<6;i++)
- {
-#ifdef FIXED_POINT
- if ((nol_pitch_coef[i]>MULT16_16_Q15(nol_pitch_coef[0],27853)) &&
-#else
- if ((nol_pitch_coef[i]>.85*nol_pitch_coef[0]) &&
-#endif
- (ABS(2*nol_pitch[i]-ol_pitch)<=2 || ABS(3*nol_pitch[i]-ol_pitch)<=3 ||
- ABS(4*nol_pitch[i]-ol_pitch)<=4 || ABS(5*nol_pitch[i]-ol_pitch)<=5))
- {
- /*ol_pitch_coef=nol_pitch_coef[i];*/
- ol_pitch = nol_pitch[i];
- }
- }
- /*if (ol_pitch>50)
- ol_pitch/=2;*/
- /*ol_pitch_coef = sqrt(ol_pitch_coef);*/
-
-#ifdef EPIC_48K
- if (st->lbr_48k)
- {
- if (ol_pitch < st->min_pitch+2)
- ol_pitch = st->min_pitch+2;
- if (ol_pitch > st->max_pitch-2)
- ol_pitch = st->max_pitch-2;
- open_loop_nbest_pitch(st->sw, ol_pitch-2, ol_pitch+2, st->frameSize>>1,
- &pitch_half[0], nol_pitch_coef, 1, stack);
- open_loop_nbest_pitch(st->sw+(st->frameSize>>1), pitch_half[0]-1, pitch_half[0]+2, st->frameSize>>1,
- &pitch_half[1], nol_pitch_coef, 1, stack);
- }
-#endif
- } else {
- ol_pitch=0;
- ol_pitch_coef=0;
- }
-
- /*Compute "real" excitation*/
- for (i=0;i<st->windowSize-st->frameSize;i++)
- st->exc[i] = st->winBuf[i];
- for (;i<st->frameSize;i++)
- st->exc[i] = in[i-st->windowSize+st->frameSize];
- fir_mem16(st->exc, interp_lpc, st->exc, st->frameSize, st->lpcSize, st->mem_exc, stack);
-
- /* Compute open-loop excitation gain */
-#ifdef EPIC_48K
- if (st->lbr_48k)
- {
- float ol1=0,ol2=0;
- float ol_gain2;
- ol1 = compute_rms16(st->exc, st->frameSize>>1);
- ol2 = compute_rms16(st->exc+(st->frameSize>>1), st->frameSize>>1);
- ol1 *= ol1*(st->frameSize>>1);
- ol2 *= ol2*(st->frameSize>>1);
-
- ol_gain2=ol1;
- if (ol2>ol1)
- ol_gain2=ol2;
- ol_gain2 = sqrt(2*ol_gain2*(ol1+ol2))*1.3*(1-.5*GAIN_SCALING_1*GAIN_SCALING_1*ol_pitch_coef*ol_pitch_coef);
-
- ol_gain=SHR32(sqrt(1+ol_gain2/st->frameSize),SIG_SHIFT);
-
- } else
-#endif
- {
- spx_word16_t g = compute_rms16(st->exc, st->frameSize);
- if (ol_pitch>0)
- ol_gain = MULT16_16(g, MULT16_16_Q14(QCONST16(1.1,14),
- spx_sqrt(QCONST32(1.,28)-MULT16_32_Q15(QCONST16(.8,15),SHL32(MULT16_16(ol_pitch_coef,ol_pitch_coef),16)))));
- else
- ol_gain = SHL32(EXTEND32(g),SIG_SHIFT);
- }
- }
-
-#ifdef VORBIS_PSYCHO
- for(i=0;i<256-st->frameSize;i++)
- st->psy_window[i] = st->psy_window[i+st->frameSize];
- for(i=0;i<st->frameSize;i++)
- st->psy_window[256-st->frameSize+i] = in[i];
- compute_curve(st->psy, st->psy_window, st->curve);
- /*print_vec(st->curve, 128, "curve");*/
- if (st->first)
- for (i=0;i<128;i++)
- st->old_curve[i] = st->curve[i];
-#endif
-
- /*VBR stuff*/
- if (st->vbr && (st->vbr_enabled||st->vad_enabled))
- {
- float lsp_dist=0;
- for (i=0;i<st->lpcSize;i++)
- lsp_dist += (st->old_lsp[i] - lsp[i])*(st->old_lsp[i] - lsp[i]);
- lsp_dist /= LSP_SCALING*LSP_SCALING;
-
- if (st->abr_enabled)
- {
- float qual_change=0;
- if (st->abr_drift2 * st->abr_drift > 0)
- {
- /* Only adapt if long-term and short-term drift are the same sign */
- qual_change = -.00001*st->abr_drift/(1+st->abr_count);
- if (qual_change>.05)
- qual_change=.05;
- if (qual_change<-.05)
- qual_change=-.05;
- }
- st->vbr_quality += qual_change;
- if (st->vbr_quality>10)
- st->vbr_quality=10;
- if (st->vbr_quality<0)
- st->vbr_quality=0;
- }
-
- st->relative_quality = vbr_analysis(st->vbr, in, st->frameSize, ol_pitch, GAIN_SCALING_1*ol_pitch_coef);
- /*if (delta_qual<0)*/
- /* delta_qual*=.1*(3+st->vbr_quality);*/
- if (st->vbr_enabled)
- {
- spx_int32_t mode;
- int choice=0;
- float min_diff=100;
- mode = 8;
- while (mode)
- {
- int v1;
- float thresh;
- v1=(int)floor(st->vbr_quality);
- if (v1==10)
- thresh = vbr_nb_thresh[mode][v1];
- else
- thresh = (st->vbr_quality-v1)*vbr_nb_thresh[mode][v1+1] + (1+v1-st->vbr_quality)*vbr_nb_thresh[mode][v1];
- if (st->relative_quality > thresh &&
- st->relative_quality-thresh<min_diff)
- {
- choice = mode;
- min_diff = st->relative_quality-thresh;
- }
- mode--;
- }
- mode=choice;
- if (mode==0)
- {
- if (st->dtx_count==0 || lsp_dist>.05 || !st->dtx_enabled || st->dtx_count>20)
- {
- mode=1;
- st->dtx_count=1;
- } else {
- mode=0;
- st->dtx_count++;
- }
- } else {
- st->dtx_count=0;
- }
-
- speex_encoder_ctl(state, SPEEX_SET_MODE, &mode);
- if (st->vbr_max>0)
- {
- spx_int32_t rate;
- speex_encoder_ctl(state, SPEEX_GET_BITRATE, &rate);
- if (rate > st->vbr_max)
- {
- rate = st->vbr_max;
- speex_encoder_ctl(state, SPEEX_SET_BITRATE, &rate);
- }
- }
-
- if (st->abr_enabled)
- {
- spx_int32_t bitrate;
- speex_encoder_ctl(state, SPEEX_GET_BITRATE, &bitrate);
- st->abr_drift+=(bitrate-st->abr_enabled);
- st->abr_drift2 = .95*st->abr_drift2 + .05*(bitrate-st->abr_enabled);
- st->abr_count += 1.0;
- }
-
- } else {
- /*VAD only case*/
- int mode;
- if (st->relative_quality<2)
- {
- if (st->dtx_count==0 || lsp_dist>.05 || !st->dtx_enabled || st->dtx_count>20)
- {
- st->dtx_count=1;
- mode=1;
- } else {
- mode=0;
- st->dtx_count++;
- }
- } else {
- st->dtx_count = 0;
- mode=st->submodeSelect;
- }
- /*speex_encoder_ctl(state, SPEEX_SET_MODE, &mode);*/
- st->submodeID=mode;
- }
- } else {
- st->relative_quality = -1;
- }
-
- if (st->encode_submode)
- {
-#ifdef EPIC_48K
- if (!st->lbr_48k) {
-#endif
-
- /* First, transmit a zero for narrowband */
- speex_bits_pack(bits, 0, 1);
-
- /* Transmit the sub-mode we use for this frame */
- speex_bits_pack(bits, st->submodeID, NB_SUBMODE_BITS);
-
-#ifdef EPIC_48K
- }
-#endif
- }
-
- /* If null mode (no transmission), just set a couple things to zero*/
- if (st->submodes[st->submodeID] == NULL)
- {
- for (i=0;i<st->frameSize;i++)
- st->exc[i]=st->sw[i]=VERY_SMALL;
-
- for (i=0;i<st->lpcSize;i++)
- st->mem_sw[i]=0;
- st->first=1;
- st->bounded_pitch = 1;
-
- speex_move(st->winBuf, in+2*st->frameSize-st->windowSize, (st->windowSize-st->frameSize)*sizeof(spx_word16_t));
-
- /* Clear memory (no need to really compute it) */
- for (i=0;i<st->lpcSize;i++)
- st->mem_sp[i] = 0;
- return 0;
-
- }
-
- /* LSP Quantization */
- if (st->first)
- {
- for (i=0;i<st->lpcSize;i++)
- st->old_lsp[i] = lsp[i];
- }
-
-
- /*Quantize LSPs*/
-#if 1 /*0 for unquantized*/
- SUBMODE(lsp_quant)(lsp, qlsp, st->lpcSize, bits);
-#else
- for (i=0;i<st->lpcSize;i++)
- qlsp[i]=lsp[i];
-#endif
-
-#ifdef EPIC_48K
- if (st->lbr_48k) {
- speex_bits_pack(bits, pitch_half[0]-st->min_pitch, 7);
- speex_bits_pack(bits, pitch_half[1]-pitch_half[0]+1, 2);
-
- {
- int quant = (int)floor(.5+7.4*GAIN_SCALING_1*ol_pitch_coef);
- if (quant>7)
- quant=7;
- if (quant<0)
- quant=0;
- ol_pitch_id=quant;
- speex_bits_pack(bits, quant, 3);
- ol_pitch_coef=GAIN_SCALING*0.13514*quant;
-
- }
- {
- int qe = (int)(floor(.5+2.1*log(ol_gain*1.0/SIG_SCALING)))-2;
- if (qe<0)
- qe=0;
- if (qe>15)
- qe=15;
- ol_gain = exp((qe+2)/2.1)*SIG_SCALING;
- speex_bits_pack(bits, qe, 4);
- }
-
- } else {
-#endif
-
- /*If we use low bit-rate pitch mode, transmit open-loop pitch*/
- if (SUBMODE(lbr_pitch)!=-1)
- {
- speex_bits_pack(bits, ol_pitch-st->min_pitch, 7);
- }
-
- if (SUBMODE(forced_pitch_gain))
- {
- int quant;
- quant = (int)floor(.5+15*ol_pitch_coef*GAIN_SCALING_1);
- if (quant>15)
- quant=15;
- if (quant<0)
- quant=0;
- speex_bits_pack(bits, quant, 4);
- ol_pitch_coef=GAIN_SCALING*0.066667*quant;
- }
-
-
- /*Quantize and transmit open-loop excitation gain*/
-#ifdef FIXED_POINT
- {
- int qe = scal_quant32(ol_gain, ol_gain_table, 32);
- /*ol_gain = exp(qe/3.5)*SIG_SCALING;*/
- ol_gain = MULT16_32_Q15(28406,ol_gain_table[qe]);
- speex_bits_pack(bits, qe, 5);
- }
-#else
- {
- int qe = (int)(floor(.5+3.5*log(ol_gain*1.0/SIG_SCALING)));
- if (qe<0)
- qe=0;
- if (qe>31)
- qe=31;
- ol_gain = exp(qe/3.5)*SIG_SCALING;
- speex_bits_pack(bits, qe, 5);
- }
-#endif
-
-
-#ifdef EPIC_48K
- }
-#endif
-
-
- /* Special case for first frame */
- if (st->first)
- {
- for (i=0;i<st->lpcSize;i++)
- st->old_qlsp[i] = qlsp[i];
- }
-
- /* Target signal */
- ALLOC(target, st->subframeSize, spx_word16_t);
- ALLOC(innov, st->subframeSize, spx_sig_t);
- ALLOC(exc32, st->subframeSize, spx_word32_t);
- ALLOC(ringing, st->subframeSize, spx_word16_t);
- ALLOC(syn_resp, st->subframeSize, spx_word16_t);
- ALLOC(real_exc, st->subframeSize, spx_word16_t);
- ALLOC(mem, st->lpcSize, spx_mem_t);
-
- /* Loop on sub-frames */
- for (sub=0;sub<st->nbSubframes;sub++)
- {
- int offset;
- spx_word16_t *sw;
- spx_word16_t *exc;
- int pitch;
- int response_bound = st->subframeSize;
-#ifdef EPIC_48K
- if (st->lbr_48k)
- {
- if (sub*2 < st->nbSubframes)
- ol_pitch = pitch_half[0];
- else
- ol_pitch = pitch_half[1];
- }
-#endif
-
- /* Offset relative to start of frame */
- offset = st->subframeSize*sub;
- /* Excitation */
- exc=st->exc+offset;
- /* Weighted signal */
- sw=st->sw+offset;
-
- /* LSP interpolation (quantized and unquantized) */
- lsp_interpolate(st->old_lsp, lsp, interp_lsp, st->lpcSize, sub, st->nbSubframes);
- lsp_interpolate(st->old_qlsp, qlsp, interp_qlsp, st->lpcSize, sub, st->nbSubframes);
-
- /* Make sure the filters are stable */
- lsp_enforce_margin(interp_lsp, st->lpcSize, LSP_MARGIN);
- lsp_enforce_margin(interp_qlsp, st->lpcSize, LSP_MARGIN);
-
- /* Compute interpolated LPCs (quantized and unquantized) */
- lsp_to_lpc(interp_lsp, interp_lpc, st->lpcSize,stack);
-
- lsp_to_lpc(interp_qlsp, interp_qlpc, st->lpcSize, stack);
-
- /* Compute analysis filter gain at w=pi (for use in SB-CELP) */
- {
- spx_word32_t pi_g=LPC_SCALING;
- for (i=0;i<st->lpcSize;i+=2)
- {
- /*pi_g += -st->interp_qlpc[i] + st->interp_qlpc[i+1];*/
- pi_g = ADD32(pi_g, SUB32(EXTEND32(interp_qlpc[i+1]),EXTEND32(interp_qlpc[i])));
- }
- st->pi_gain[sub] = pi_g;
- }
-
-#ifdef VORBIS_PSYCHO
- {
- float curr_curve[128];
- float fact = ((float)sub+1.0f)/st->nbSubframes;
- for (i=0;i<128;i++)
- curr_curve[i] = (1.0f-fact)*st->old_curve[i] + fact*st->curve[i];
- curve_to_lpc(st->psy, curr_curve, bw_lpc1, bw_lpc2, 10);
- }
-#else
- /* Compute bandwidth-expanded (unquantized) LPCs for perceptual weighting */
- bw_lpc(st->gamma1, interp_lpc, bw_lpc1, st->lpcSize);
- if (st->gamma2>=0)
- bw_lpc(st->gamma2, interp_lpc, bw_lpc2, st->lpcSize);
- else
- {
- bw_lpc2[0]=1;
- for (i=1;i<=st->lpcSize;i++)
- bw_lpc2[i]=0;
- }
- /*print_vec(st->bw_lpc1, 10, "bw_lpc");*/
-#endif
-
- {
- /*FIXME: This will break if we change the window size */
- if (st->windowSize-st->frameSize != st->subframeSize)
- speex_error("windowSize-frameSize != subframeSize");
- if (sub==0)
- {
- for (i=0;i<st->subframeSize;i++)
- real_exc[i] = sw[i] = st->winBuf[i];
- } else {
- for (i=0;i<st->subframeSize;i++)
- real_exc[i] = sw[i] = in[i+((sub-1)*st->subframeSize)];
- }
- }
- fir_mem16(real_exc, interp_qlpc, real_exc, st->subframeSize, st->lpcSize, st->mem_exc2, stack);
-
- if (st->complexity==0)
- response_bound >>= 1;
- compute_impulse_response(interp_qlpc, bw_lpc1, bw_lpc2, syn_resp, response_bound, st->lpcSize, stack);
- for (i=response_bound;i<st->subframeSize;i++)
- syn_resp[i]=VERY_SMALL;
-
- /* Compute zero response of A(z/g1) / ( A(z/g2) * A(z) ) */
- for (i=0;i<st->lpcSize;i++)
- mem[i]=SHL32(st->mem_sp[i],1);
- for (i=0;i<st->subframeSize;i++)
- ringing[i] = VERY_SMALL;
-#ifdef SHORTCUTS2
- iir_mem16(ringing, interp_qlpc, ringing, response_bound, st->lpcSize, mem, stack);
- for (i=0;i<st->lpcSize;i++)
- mem[i]=SHL32(st->mem_sw[i],1);
- filter_mem16(ringing, st->bw_lpc1, st->bw_lpc2, ringing, response_bound, st->lpcSize, mem, stack);
- for (i=response_bound;i<st->subframeSize;i++)
- ringing[i]=0;
-#else
- iir_mem16(ringing, interp_qlpc, ringing, st->subframeSize, st->lpcSize, mem, stack);
- for (i=0;i<st->lpcSize;i++)
- mem[i]=SHL32(st->mem_sw[i],1);
- filter_mem16(ringing, bw_lpc1, bw_lpc2, ringing, st->subframeSize, st->lpcSize, mem, stack);
-#endif
-
- /* Compute weighted signal */
- for (i=0;i<st->lpcSize;i++)
- mem[i]=st->mem_sw[i];
- filter_mem16(sw, bw_lpc1, bw_lpc2, sw, st->subframeSize, st->lpcSize, mem, stack);
-
- if (st->complexity==0)
- for (i=0;i<st->lpcSize;i++)
- st->mem_sw[i]=mem[i];
-
- /* Compute target signal (saturation prevents overflows on clipped input speech) */
- for (i=0;i<st->subframeSize;i++)
- target[i]=EXTRACT16(SATURATE(SUB32(sw[i],PSHR32(ringing[i],1)),32767));
-
- /* Reset excitation */
- for (i=0;i<st->subframeSize;i++)
- exc[i]=0;
-
- /* If we have a long-term predictor (otherwise, something's wrong) */
- if (SUBMODE(ltp_quant))
- {
- int pit_min, pit_max;
- /* Long-term prediction */
- if (SUBMODE(lbr_pitch) != -1)
- {
- /* Low bit-rate pitch handling */
- int margin;
- margin = SUBMODE(lbr_pitch);
- if (margin)
- {
- if (ol_pitch < st->min_pitch+margin-1)
- ol_pitch=st->min_pitch+margin-1;
- if (ol_pitch > st->max_pitch-margin)
- ol_pitch=st->max_pitch-margin;
- pit_min = ol_pitch-margin+1;
- pit_max = ol_pitch+margin;
- } else {
- pit_min=pit_max=ol_pitch;
- }
- } else {
- pit_min = st->min_pitch;
- pit_max = st->max_pitch;
- }
-
- /* Force pitch to use only the current frame if needed */
- if (st->bounded_pitch && pit_max>offset)
- pit_max=offset;
-
-#ifdef EPIC_48K
- if (st->lbr_48k)
- {
- pitch = SUBMODE(ltp_quant)(target, sw, interp_qlpc, bw_lpc1, bw_lpc2,
- exc32, SUBMODE(ltp_params), pit_min, pit_max, ol_pitch_coef,
- st->lpcSize, st->subframeSize, bits, stack,
- exc, syn_resp, st->complexity, ol_pitch_id, st->plc_tuning, &st->cumul_gain);
- } else {
-#endif
-
- /* Perform pitch search */
- pitch = SUBMODE(ltp_quant)(target, sw, interp_qlpc, bw_lpc1, bw_lpc2,
- exc32, SUBMODE(ltp_params), pit_min, pit_max, ol_pitch_coef,
- st->lpcSize, st->subframeSize, bits, stack,
- exc, syn_resp, st->complexity, 0, st->plc_tuning, &st->cumul_gain);
-#ifdef EPIC_48K
- }
-#endif
-
- st->pitch[sub]=pitch;
- } else {
- speex_error ("No pitch prediction, what's wrong");
- }
-
- /* Quantization of innovation */
- for (i=0;i<st->subframeSize;i++)
- innov[i]=0;
-
- /* FIXME: Make sure this is save from overflows (so far so good) */
- for (i=0;i<st->subframeSize;i++)
- real_exc[i] = EXTRACT16(SUB32(EXTEND32(real_exc[i]), PSHR32(exc32[i],SIG_SHIFT-1)));
-
- ener = SHL32(EXTEND32(compute_rms16(real_exc, st->subframeSize)),SIG_SHIFT);
-
- /*FIXME: Should use DIV32_16 and make sure result fits in 16 bits */
-#ifdef FIXED_POINT
- {
- spx_word32_t f = PDIV32(ener,PSHR32(ol_gain,SIG_SHIFT));
- if (f<=32767)
- fine_gain = f;
- else
- fine_gain = 32767;
- }
-#else
- fine_gain = PDIV32_16(ener,PSHR32(ol_gain,SIG_SHIFT));
-#endif
- /* Calculate gain correction for the sub-frame (if any) */
- if (SUBMODE(have_subframe_gain))
- {
- int qe;
- if (SUBMODE(have_subframe_gain)==3)
- {
- qe = scal_quant(fine_gain, exc_gain_quant_scal3_bound, 8);
- speex_bits_pack(bits, qe, 3);
- ener=MULT16_32_Q14(exc_gain_quant_scal3[qe],ol_gain);
- } else {
- qe = scal_quant(fine_gain, exc_gain_quant_scal1_bound, 2);
- speex_bits_pack(bits, qe, 1);
- ener=MULT16_32_Q14(exc_gain_quant_scal1[qe],ol_gain);
- }
- } else {
- ener=ol_gain;
- }
-
- /*printf ("%f %f\n", ener, ol_gain);*/
-
- /* Normalize innovation */
- signal_div(target, target, ener, st->subframeSize);
-
- /* Quantize innovation */
- if (SUBMODE(innovation_quant))
- {
- /* Codebook search */
- SUBMODE(innovation_quant)(target, interp_qlpc, bw_lpc1, bw_lpc2,
- SUBMODE(innovation_params), st->lpcSize, st->subframeSize,
- innov, syn_resp, bits, stack, st->complexity, SUBMODE(double_codebook));
-
- /* De-normalize innovation and update excitation */
- signal_mul(innov, innov, ener, st->subframeSize);
-
- for (i=0;i<st->subframeSize;i++)
- exc[i] = EXTRACT16(SATURATE32(PSHR32(ADD32(SHL32(exc32[i],1),innov[i]),SIG_SHIFT),32767));
-
- /* In some (rare) modes, we do a second search (more bits) to reduce noise even more */
- if (SUBMODE(double_codebook)) {
- char *tmp_stack=stack;
- VARDECL(spx_sig_t *innov2);
- ALLOC(innov2, st->subframeSize, spx_sig_t);
- for (i=0;i<st->subframeSize;i++)
- innov2[i]=0;
- for (i=0;i<st->subframeSize;i++)
- target[i]=MULT16_16_P13(QCONST16(2.2f,13), target[i]);
- SUBMODE(innovation_quant)(target, interp_qlpc, bw_lpc1, bw_lpc2,
- SUBMODE(innovation_params), st->lpcSize, st->subframeSize,
- innov2, syn_resp, bits, stack, st->complexity, 0);
- signal_mul(innov2, innov2, MULT16_32_Q15(QCONST16(0.454545f,15),ener), st->subframeSize);
- for (i=0;i<st->subframeSize;i++)
- innov[i] = ADD32(innov[i],innov2[i]);
- stack = tmp_stack;
- }
- for (i=0;i<st->subframeSize;i++)
- exc[i] = EXTRACT16(SATURATE32(PSHR32(ADD32(SHL32(exc32[i],1),innov[i]),SIG_SHIFT),32767));
- if (st->innov_rms_save)
- {
- st->innov_rms_save[sub] = compute_rms(innov, st->subframeSize);
- }
- } else {
- speex_error("No fixed codebook");
- }
-
-
- for (i=0;i<st->subframeSize;i++)
- sw[i] = exc[i];
- /* Final signal synthesis from excitation */
- iir_mem16(sw, interp_qlpc, sw, st->subframeSize, st->lpcSize, st->mem_sp, stack);
-
- /* Compute weighted signal again, from synthesized speech (not sure it's the right thing) */
- if (st->complexity!=0)
- filter_mem16(sw, bw_lpc1, bw_lpc2, sw, st->subframeSize, st->lpcSize, st->mem_sw, stack);
-
- }
-
- /* Store the LSPs for interpolation in the next frame */
- if (st->submodeID>=1)
- {
- for (i=0;i<st->lpcSize;i++)
- st->old_lsp[i] = lsp[i];
- for (i=0;i<st->lpcSize;i++)
- st->old_qlsp[i] = qlsp[i];
- }
-
-#ifdef VORBIS_PSYCHO
- if (st->submodeID>=1)
- {
- for (i=0;i<128;i++)
- st->old_curve[i] = st->curve[i];
- }
-#endif
-
- if (st->submodeID==1)
- {
- if (st->dtx_count)
- speex_bits_pack(bits, 15, 4);
- else
- speex_bits_pack(bits, 0, 4);
- }
-
- /* The next frame will not be the first (Duh!) */
- st->first = 0;
- speex_move(st->winBuf, in+2*st->frameSize-st->windowSize, (st->windowSize-st->frameSize)*sizeof(spx_word16_t));
-
- if (SUBMODE(innovation_quant) == noise_codebook_quant || st->submodeID==0)
- st->bounded_pitch = 1;
- else
- st->bounded_pitch = 0;
-
- return 1;
-}
-
-void *nb_decoder_init(const SpeexMode *m)
-{
- DecState *st;
- const SpeexNBMode *mode;
- int i;
-
- mode=(const SpeexNBMode*)m->mode;
- st = (DecState *)speex_alloc(sizeof(DecState));
- if (!st)
- return NULL;
-#if defined(VAR_ARRAYS) || defined (USE_ALLOCA)
- st->stack = NULL;
-#else
- st->stack = (char*)speex_alloc_scratch(NB_DEC_STACK);
-#endif
-
- st->mode=m;
-
-
- st->encode_submode = 1;
-#ifdef EPIC_48K
- st->lbr_48k=mode->lbr48k;
-#endif
-
- st->first=1;
- /* Codec parameters, should eventually have several "modes"*/
- st->frameSize = mode->frameSize;
- st->nbSubframes=mode->frameSize/mode->subframeSize;
- st->subframeSize=mode->subframeSize;
- st->lpcSize = mode->lpcSize;
- st->min_pitch=mode->pitchStart;
- st->max_pitch=mode->pitchEnd;
-
- st->submodes=mode->submodes;
- st->submodeID=mode->defaultSubmode;
-
- st->lpc_enh_enabled=1;
-
- st->excBuf = (spx_word16_t*)speex_alloc((st->frameSize + 2*st->max_pitch + st->subframeSize + 12)*sizeof(spx_word16_t));
- st->exc = st->excBuf + 2*st->max_pitch + st->subframeSize + 6;
- for (i=0;i<st->frameSize + st->max_pitch + 1;i++)
- st->excBuf[i]=0;
-
- st->interp_qlpc = (spx_coef_t*)speex_alloc(st->lpcSize*sizeof(spx_coef_t));
- st->old_qlsp = (spx_lsp_t*)speex_alloc(st->lpcSize*sizeof(spx_lsp_t));
- st->mem_sp = (spx_mem_t*)speex_alloc(st->lpcSize*sizeof(spx_mem_t));
- st->pi_gain = (spx_word32_t*)speex_alloc((st->nbSubframes)*sizeof(spx_word32_t));
- st->last_pitch = 40;
- st->count_lost=0;
- st->pitch_gain_buf[0] = st->pitch_gain_buf[1] = st->pitch_gain_buf[2] = 0;
- st->pitch_gain_buf_idx = 0;
- st->seed = 1000;
-
- st->sampling_rate=8000;
- st->last_ol_gain = 0;
-
- st->user_callback.func = &speex_default_user_handler;
- st->user_callback.data = NULL;
- for (i=0;i<16;i++)
- st->speex_callbacks[i].func = NULL;
-
- st->voc_m1=st->voc_m2=st->voc_mean=0;
- st->voc_offset=0;
- st->dtx_enabled=0;
- st->isWideband = 0;
- st->highpass_enabled = 1;
-
-#ifdef ENABLE_VALGRIND
- VALGRIND_MAKE_READABLE(st, (st->stack-(char*)st));
-#endif
- return st;
-}
-
-void nb_decoder_destroy(void *state)
-{
- DecState *st;
- st=(DecState*)state;
-
-#if !(defined(VAR_ARRAYS) || defined (USE_ALLOCA))
- speex_free_scratch(st->stack);
-#endif
-
- speex_free (st->excBuf);
- speex_free (st->interp_qlpc);
- speex_free (st->old_qlsp);
- speex_free (st->mem_sp);
- speex_free (st->pi_gain);
-
- speex_free(state);
-}
-
-#define median3(a, b, c) ((a) < (b) ? ((b) < (c) ? (b) : ((a) < (c) ? (c) : (a))) : ((c) < (b) ? (b) : ((c) < (a) ? (c) : (a))))
-
-#ifdef FIXED_POINT
-const spx_word16_t attenuation[10] = {32767, 31483, 27923, 22861, 17278, 12055, 7764, 4616, 2533, 1283};
-#else
-const spx_word16_t attenuation[10] = {1., 0.961, 0.852, 0.698, 0.527, 0.368, 0.237, 0.141, 0.077, 0.039};
-
-#endif
-
-static void nb_decode_lost(DecState *st, spx_word16_t *out, char *stack)
-{
- int i;
- int pitch_val;
- spx_word16_t pitch_gain;
- spx_word16_t fact;
- spx_word16_t gain_med;
- spx_word16_t innov_gain;
- spx_word16_t noise_gain;
-
- if (st->count_lost<10)
- fact = attenuation[st->count_lost];
- else
- fact = 0;
-
- gain_med = median3(st->pitch_gain_buf[0], st->pitch_gain_buf[1], st->pitch_gain_buf[2]);
- if (gain_med < st->last_pitch_gain)
- st->last_pitch_gain = gain_med;
-
-#ifdef FIXED_POINT
- pitch_gain = st->last_pitch_gain;
- if (pitch_gain>54)
- pitch_gain = 54;
- pitch_gain = SHL16(pitch_gain, 9);
-#else
- pitch_gain = GAIN_SCALING_1*st->last_pitch_gain;
- if (pitch_gain>.85)
- pitch_gain=.85;
-#endif
- pitch_gain = MULT16_16_Q15(fact,pitch_gain) + VERY_SMALL;
- /* FIXME: This was rms of innovation (not exc) */
- innov_gain = compute_rms16(st->exc, st->frameSize);
- noise_gain = MULT16_16_Q15(innov_gain, MULT16_16_Q15(fact, SUB16(Q15ONE,MULT16_16_Q15(pitch_gain,pitch_gain))));
- /* Shift all buffers by one frame */
- speex_move(st->excBuf, st->excBuf+st->frameSize, (2*st->max_pitch + st->subframeSize + 12)*sizeof(spx_word16_t));
-
-
- pitch_val = st->last_pitch + SHR32((spx_int32_t)speex_rand(1+st->count_lost, &st->seed),SIG_SHIFT);
- if (pitch_val > st->max_pitch)
- pitch_val = st->max_pitch;
- if (pitch_val < st->min_pitch)
- pitch_val = st->min_pitch;
- for (i=0;i<st->frameSize;i++)
- {
- st->exc[i]= MULT16_16_Q15(pitch_gain, (st->exc[i-pitch_val]+VERY_SMALL)) +
- speex_rand(noise_gain, &st->seed);
- }
-
- for (i=0;i<st->frameSize;i++)
- out[i]=st->exc[i-st->subframeSize];
- bw_lpc(QCONST16(.98,15), st->interp_qlpc, st->interp_qlpc, st->lpcSize);
- iir_mem16(out, st->interp_qlpc, out, st->frameSize, st->lpcSize,
- st->mem_sp, stack);
- highpass(out, out, st->frameSize, HIGHPASS_NARROWBAND|HIGHPASS_OUTPUT, st->mem_hp);
-
- st->first = 0;
- st->count_lost++;
- st->pitch_gain_buf[st->pitch_gain_buf_idx++] = PSHR16(pitch_gain,9);
- if (st->pitch_gain_buf_idx > 2) /* rollover */
- st->pitch_gain_buf_idx = 0;
-}
-
-
-int nb_decode(void *state, SpeexBits *bits, void *vout)
-{
- DecState *st;
- int i, sub;
- int pitch;
- spx_word16_t pitch_gain[3];
- spx_word32_t ol_gain=0;
- int ol_pitch=0;
- spx_word16_t ol_pitch_coef=0;
- int best_pitch=40;
- spx_word16_t best_pitch_gain=0;
- int wideband;
- int m;
- char *stack;
- VARDECL(spx_sig_t *innov);
- VARDECL(spx_word32_t *exc32);
- VARDECL(spx_coef_t *ak);
- VARDECL(spx_lsp_t *qlsp);
- spx_word16_t pitch_average=0;
-#ifdef EPIC_48K
- int pitch_half[2] = {0, 0};
- int ol_pitch_id=0;
-#endif
- spx_word16_t *out = (spx_word16_t*)vout;
- VARDECL(spx_lsp_t *interp_qlsp);
-
- st=(DecState*)state;
- stack=st->stack;
-
- /* Check if we're in DTX mode*/
- if (!bits && st->dtx_enabled)
- {
- st->submodeID=0;
- } else
- {
- /* If bits is NULL, consider the packet to be lost (what could we do anyway) */
- if (!bits)
- {
- nb_decode_lost(st, out, stack);
- return 0;
- }
-
- if (st->encode_submode)
- {
-#ifdef EPIC_48K
- if (!st->lbr_48k) {
-#endif
-
- /* Search for next narrowband block (handle requests, skip wideband blocks) */
- do {
- if (speex_bits_remaining(bits)<5)
- return -1;
- wideband = speex_bits_unpack_unsigned(bits, 1);
- if (wideband) /* Skip wideband block (for compatibility) */
- {
- int submode;
- int advance;
- advance = submode = speex_bits_unpack_unsigned(bits, SB_SUBMODE_BITS);
- speex_mode_query(&speex_wb_mode, SPEEX_SUBMODE_BITS_PER_FRAME, &advance);
- if (advance < 0)
- {
- speex_notify("Invalid mode encountered. The stream is corrupted.");
- return -2;
- }
- advance -= (SB_SUBMODE_BITS+1);
- speex_bits_advance(bits, advance);
-
- if (speex_bits_remaining(bits)<5)
- return -1;
- wideband = speex_bits_unpack_unsigned(bits, 1);
- if (wideband)
- {
- advance = submode = speex_bits_unpack_unsigned(bits, SB_SUBMODE_BITS);
- speex_mode_query(&speex_wb_mode, SPEEX_SUBMODE_BITS_PER_FRAME, &advance);
- if (advance < 0)
- {
- speex_notify("Invalid mode encountered. The stream is corrupted.");
- return -2;
- }
- advance -= (SB_SUBMODE_BITS+1);
- speex_bits_advance(bits, advance);
- wideband = speex_bits_unpack_unsigned(bits, 1);
- if (wideband)
- {
- speex_notify("More than two wideband layers found. The stream is corrupted.");
- return -2;
- }
-
- }
- }
- if (speex_bits_remaining(bits)<4)
- return -1;
- /* FIXME: Check for overflow */
- m = speex_bits_unpack_unsigned(bits, 4);
- if (m==15) /* We found a terminator */
- {
- return -1;
- } else if (m==14) /* Speex in-band request */
- {
- int ret = speex_inband_handler(bits, st->speex_callbacks, state);
- if (ret)
- return ret;
- } else if (m==13) /* User in-band request */
- {
- int ret = st->user_callback.func(bits, state, st->user_callback.data);
- if (ret)
- return ret;
- } else if (m>8) /* Invalid mode */
- {
- speex_notify("Invalid mode encountered. The stream is corrupted.");
- return -2;
- }
-
- } while (m>8);
-
- /* Get the sub-mode that was used */
- st->submodeID = m;
-#ifdef EPIC_48K
- }
-#endif
- }
-
- }
-
- /* Shift all buffers by one frame */
- speex_move(st->excBuf, st->excBuf+st->frameSize, (2*st->max_pitch + st->subframeSize + 12)*sizeof(spx_word16_t));
-
- /* If null mode (no transmission), just set a couple things to zero*/
- if (st->submodes[st->submodeID] == NULL)
- {
- VARDECL(spx_coef_t *lpc);
- ALLOC(lpc, st->lpcSize, spx_coef_t);
- bw_lpc(QCONST16(0.93f,15), st->interp_qlpc, lpc, st->lpcSize);
- {
- float innov_gain=0;
- float pgain=GAIN_SCALING_1*st->last_pitch_gain;
- if (pgain>.6)
- pgain=.6;
- /* FIXME: This was innov, not exc */
- innov_gain = compute_rms16(st->exc, st->frameSize);
- for (i=0;i<st->frameSize;i++)
- st->exc[i]=speex_rand(innov_gain, &st->seed);
- }
-
-
- st->first=1;
-
- for (i=0;i<st->frameSize;i++)
- out[i] = st->exc[i];
- /* Final signal synthesis from excitation */
- iir_mem16(out, lpc, out, st->frameSize, st->lpcSize, st->mem_sp, stack);
-
- st->count_lost=0;
- return 0;
- }
-
- ALLOC(qlsp, st->lpcSize, spx_lsp_t);
-
- /* Unquantize LSPs */
- SUBMODE(lsp_unquant)(qlsp, st->lpcSize, bits);
-
- /*Damp memory if a frame was lost and the LSP changed too much*/
- if (st->count_lost)
- {
- spx_word16_t fact;
- spx_word32_t lsp_dist=0;
- for (i=0;i<st->lpcSize;i++)
- lsp_dist = ADD32(lsp_dist, EXTEND32(ABS(st->old_qlsp[i] - qlsp[i])));
-#ifdef FIXED_POINT
- fact = SHR16(19661,SHR32(lsp_dist,LSP_SHIFT+2));
-#else
- fact = .6*exp(-.2*lsp_dist);
-#endif
- for (i=0;i<st->lpcSize;i++)
- st->mem_sp[i] = MULT16_32_Q15(fact,st->mem_sp[i]);
- }
-
-
- /* Handle first frame and lost-packet case */
- if (st->first || st->count_lost)
- {
- for (i=0;i<st->lpcSize;i++)
- st->old_qlsp[i] = qlsp[i];
- }
-
-#ifdef EPIC_48K
- if (st->lbr_48k) {
- pitch_half[0] = st->min_pitch+speex_bits_unpack_unsigned(bits, 7);
- pitch_half[1] = pitch_half[0]+speex_bits_unpack_unsigned(bits, 2)-1;
-
- ol_pitch_id = speex_bits_unpack_unsigned(bits, 3);
- ol_pitch_coef=GAIN_SCALING*0.13514*ol_pitch_id;
-
- {
- int qe;
- qe = speex_bits_unpack_unsigned(bits, 4);
- ol_gain = SIG_SCALING*exp((qe+2)/2.1),SIG_SHIFT;
- }
-
- } else {
-#endif
-
- /* Get open-loop pitch estimation for low bit-rate pitch coding */
- if (SUBMODE(lbr_pitch)!=-1)
- {
- ol_pitch = st->min_pitch+speex_bits_unpack_unsigned(bits, 7);
- }
-
- if (SUBMODE(forced_pitch_gain))
- {
- int quant;
- quant = speex_bits_unpack_unsigned(bits, 4);
- ol_pitch_coef=GAIN_SCALING*0.066667*quant;
- }
-
- /* Get global excitation gain */
- {
- int qe;
- qe = speex_bits_unpack_unsigned(bits, 5);
-#ifdef FIXED_POINT
- /* FIXME: Perhaps we could slightly lower the gain here when the output is going to saturate? */
- ol_gain = MULT16_32_Q15(28406,ol_gain_table[qe]);
-#else
- ol_gain = SIG_SCALING*exp(qe/3.5);
-#endif
- }
-#ifdef EPIC_48K
- }
-#endif
-
- ALLOC(ak, st->lpcSize, spx_coef_t);
- ALLOC(innov, st->subframeSize, spx_sig_t);
- ALLOC(exc32, st->subframeSize, spx_word32_t);
-
- if (st->submodeID==1)
- {
- int extra;
- extra = speex_bits_unpack_unsigned(bits, 4);
-
- if (extra==15)
- st->dtx_enabled=1;
- else
- st->dtx_enabled=0;
- }
- if (st->submodeID>1)
- st->dtx_enabled=0;
-
- /*Loop on subframes */
- for (sub=0;sub<st->nbSubframes;sub++)
- {
- int offset;
- spx_word16_t *exc;
- spx_word16_t *sp;
- spx_word16_t *innov_save = NULL;
- spx_word16_t tmp;
-
-#ifdef EPIC_48K
- if (st->lbr_48k)
- {
- if (sub*2 < st->nbSubframes)
- ol_pitch = pitch_half[0];
- else
- ol_pitch = pitch_half[1];
- }
-#endif
-
- /* Offset relative to start of frame */
- offset = st->subframeSize*sub;
- /* Excitation */
- exc=st->exc+offset;
- /* Original signal */
- sp=out+offset;
- if (st->innov_save)
- innov_save = st->innov_save+offset;
-
-
- /* Reset excitation */
- for (i=0;i<st->subframeSize;i++)
- exc[i]=0;
-
- /*Adaptive codebook contribution*/
- if (SUBMODE(ltp_unquant))
- {
- int pit_min, pit_max;
- /* Handle pitch constraints if any */
- if (SUBMODE(lbr_pitch) != -1)
- {
- int margin;
- margin = SUBMODE(lbr_pitch);
- if (margin)
- {
-/* GT - need optimization?
- if (ol_pitch < st->min_pitch+margin-1)
- ol_pitch=st->min_pitch+margin-1;
- if (ol_pitch > st->max_pitch-margin)
- ol_pitch=st->max_pitch-margin;
- pit_min = ol_pitch-margin+1;
- pit_max = ol_pitch+margin;
-*/
- pit_min = ol_pitch-margin+1;
- if (pit_min < st->min_pitch)
- pit_min = st->min_pitch;
- pit_max = ol_pitch+margin;
- if (pit_max > st->max_pitch)
- pit_max = st->max_pitch;
- } else {
- pit_min = pit_max = ol_pitch;
- }
- } else {
- pit_min = st->min_pitch;
- pit_max = st->max_pitch;
- }
-
-
-#ifdef EPIC_48K
- if (st->lbr_48k)
- {
- SUBMODE(ltp_unquant)(exc, exc32, pit_min, pit_max, ol_pitch_coef, SUBMODE(ltp_params),
- st->subframeSize, &pitch, &pitch_gain[0], bits, stack,
- st->count_lost, offset, st->last_pitch_gain, ol_pitch_id);
- } else {
-#endif
-
- SUBMODE(ltp_unquant)(exc, exc32, pit_min, pit_max, ol_pitch_coef, SUBMODE(ltp_params),
- st->subframeSize, &pitch, &pitch_gain[0], bits, stack,
- st->count_lost, offset, st->last_pitch_gain, 0);
-
-#ifdef EPIC_48K
- }
-#endif
- /* Ensuring that things aren't blowing up as would happen if e.g. an encoder is
- crafting packets to make us produce NaNs and slow down the decoder (vague DoS threat).
- We can probably be even more aggressive and limit to 15000 or so. */
- sanitize_values32(exc32, NEG32(QCONST32(32000,SIG_SHIFT-1)), QCONST32(32000,SIG_SHIFT-1), st->subframeSize);
-
- tmp = gain_3tap_to_1tap(pitch_gain);
-
- pitch_average += tmp;
- if ((tmp>best_pitch_gain&&ABS(2*best_pitch-pitch)>=3&&ABS(3*best_pitch-pitch)>=4&&ABS(4*best_pitch-pitch)>=5)
- || (tmp>MULT16_16_Q15(QCONST16(.6,15),best_pitch_gain)&&(ABS(best_pitch-2*pitch)<3||ABS(best_pitch-3*pitch)<4||ABS(best_pitch-4*pitch)<5))
- || (MULT16_16_Q15(QCONST16(.67,15),tmp)>best_pitch_gain&&(ABS(2*best_pitch-pitch)<3||ABS(3*best_pitch-pitch)<4||ABS(4*best_pitch-pitch)<5)) )
- {
- best_pitch = pitch;
- if (tmp > best_pitch_gain)
- best_pitch_gain = tmp;
- }
- } else {
- speex_error("No pitch prediction, what's wrong");
- }
-
- /* Unquantize the innovation */
- {
- int q_energy;
- spx_word32_t ener;
-
- for (i=0;i<st->subframeSize;i++)
- innov[i]=0;
-
- /* Decode sub-frame gain correction */
- if (SUBMODE(have_subframe_gain)==3)
- {
- q_energy = speex_bits_unpack_unsigned(bits, 3);
- ener = MULT16_32_Q14(exc_gain_quant_scal3[q_energy],ol_gain);
- } else if (SUBMODE(have_subframe_gain)==1)
- {
- q_energy = speex_bits_unpack_unsigned(bits, 1);
- ener = MULT16_32_Q14(exc_gain_quant_scal1[q_energy],ol_gain);
- } else {
- ener = ol_gain;
- }
-
- if (SUBMODE(innovation_unquant))
- {
- /*Fixed codebook contribution*/
- SUBMODE(innovation_unquant)(innov, SUBMODE(innovation_params), st->subframeSize, bits, stack, &st->seed);
- /* De-normalize innovation and update excitation */
-#ifdef FIXED_POINT
- signal_mul(innov, innov, ener, st->subframeSize);
-#else
- signal_mul(innov, innov, ener, st->subframeSize);
-#endif
- /* Decode second codebook (only for some modes) */
- if (SUBMODE(double_codebook))
- {
- char *tmp_stack=stack;
- VARDECL(spx_sig_t *innov2);
- ALLOC(innov2, st->subframeSize, spx_sig_t);
- for (i=0;i<st->subframeSize;i++)
- innov2[i]=0;
- SUBMODE(innovation_unquant)(innov2, SUBMODE(innovation_params), st->subframeSize, bits, stack, &st->seed);
- signal_mul(innov2, innov2, MULT16_32_Q15(QCONST16(0.454545f,15),ener), st->subframeSize);
- for (i=0;i<st->subframeSize;i++)
- innov[i] = ADD32(innov[i], innov2[i]);
- stack = tmp_stack;
- }
- for (i=0;i<st->subframeSize;i++)
- exc[i]=EXTRACT16(SATURATE32(PSHR32(ADD32(SHL32(exc32[i],1),innov[i]),SIG_SHIFT),32767));
- /*print_vec(exc, 40, "innov");*/
- if (innov_save)
- {
- for (i=0;i<st->subframeSize;i++)
- innov_save[i] = EXTRACT16(PSHR32(innov[i], SIG_SHIFT));
- }
- } else {
- speex_error("No fixed codebook");
- }
-
- /*Vocoder mode*/
- if (st->submodeID==1)
- {
- float g=ol_pitch_coef*GAIN_SCALING_1;
-
-
- for (i=0;i<st->subframeSize;i++)
- exc[i]=0;
- while (st->voc_offset<st->subframeSize)
- {
- if (st->voc_offset>=0)
- exc[st->voc_offset]=sqrt(1.0*ol_pitch);
- st->voc_offset+=ol_pitch;
- }
- st->voc_offset -= st->subframeSize;
-
- g=.5+2*(g-.6);
- if (g<0)
- g=0;
- if (g>1)
- g=1;
- for (i=0;i<st->subframeSize;i++)
- {
- spx_word16_t exci=exc[i];
- /* FIXME: cleanup the innov[i]/SIG_SCALING */
- exc[i]=.8*g*exc[i]*PSHR32(ol_gain,SIG_SHIFT) + .6*g*st->voc_m1*PSHR32(ol_gain,SIG_SHIFT) + (1-.5*g)*PSHR32(innov[i],SIG_SHIFT) - .5*g*PSHR32(st->voc_m2,SIG_SHIFT);
- st->voc_m1 = exci;
- st->voc_m2=innov[i];
- st->voc_mean = .95*st->voc_mean + .05*exc[i];
- exc[i]-=st->voc_mean;
- }
- }
-
- }
- }
-
- ALLOC(interp_qlsp, st->lpcSize, spx_lsp_t);
-
- if (st->lpc_enh_enabled && SUBMODE(comb_gain)>0 && !st->count_lost)
- {
- multicomb(st->exc-st->subframeSize, out, st->interp_qlpc, st->lpcSize, 2*st->subframeSize, best_pitch, 40, SUBMODE(comb_gain), stack);
- multicomb(st->exc+st->subframeSize, out+2*st->subframeSize, st->interp_qlpc, st->lpcSize, 2*st->subframeSize, best_pitch, 40, SUBMODE(comb_gain), stack);
- } else {
- for (i=0;i<st->frameSize;i++)
- out[i]=st->exc[i-st->subframeSize];
- }
-
- /* If the last packet was lost, re-scale the excitation to obtain the same energy as encoded in ol_gain */
- if (st->count_lost)
- {
- spx_word16_t exc_ener;
- spx_word32_t gain32;
- spx_word16_t gain;
- exc_ener = compute_rms16 (st->exc, st->frameSize);
- gain32 = PDIV32(ol_gain, ADD16(exc_ener,1));
-#ifdef FIXED_POINT
- if (gain32 > 32767)
- gain32 = 32767;
- gain = EXTRACT16(gain32);
-#else
- if (gain32 > 2)
- gain32=2;
- gain = gain32;
-#endif
- for (i=0;i<st->frameSize;i++)
- {
- st->exc[i] = MULT16_16_Q14(gain, st->exc[i]);
- out[i]=st->exc[i-st->subframeSize];
- }
- }
-
- /*Loop on subframes */
- for (sub=0;sub<st->nbSubframes;sub++)
- {
- int offset;
- spx_word16_t *sp;
- spx_word16_t *exc;
- /* Offset relative to start of frame */
- offset = st->subframeSize*sub;
- /* Original signal */
- sp=out+offset;
- /* Excitation */
- exc=st->exc+offset;
-
- /* LSP interpolation (quantized and unquantized) */
- lsp_interpolate(st->old_qlsp, qlsp, interp_qlsp, st->lpcSize, sub, st->nbSubframes);
-
- /* Make sure the LSP's are stable */
- lsp_enforce_margin(interp_qlsp, st->lpcSize, LSP_MARGIN);
-
- /* Compute interpolated LPCs (unquantized) */
- lsp_to_lpc(interp_qlsp, ak, st->lpcSize, stack);
-
- /* Compute analysis filter at w=pi */
- {
- spx_word32_t pi_g=LPC_SCALING;
- for (i=0;i<st->lpcSize;i+=2)
- {
- /*pi_g += -st->interp_qlpc[i] + st->interp_qlpc[i+1];*/
- pi_g = ADD32(pi_g, SUB32(EXTEND32(ak[i+1]),EXTEND32(ak[i])));
- }
- st->pi_gain[sub] = pi_g;
- }
-
- iir_mem16(sp, st->interp_qlpc, sp, st->subframeSize, st->lpcSize,
- st->mem_sp, stack);
-
- for (i=0;i<st->lpcSize;i++)
- st->interp_qlpc[i] = ak[i];
-
- }
-
- if (st->highpass_enabled)
- highpass(out, out, st->frameSize, (st->isWideband?HIGHPASS_WIDEBAND:HIGHPASS_NARROWBAND)|HIGHPASS_OUTPUT, st->mem_hp);
- /*for (i=0;i<st->frameSize;i++)
- printf ("%d\n", (int)st->frame[i]);*/
-
- /* Store the LSPs for interpolation in the next frame */
- for (i=0;i<st->lpcSize;i++)
- st->old_qlsp[i] = qlsp[i];
-
- /* The next frame will not be the first (Duh!) */
- st->first = 0;
- st->count_lost=0;
- st->last_pitch = best_pitch;
-#ifdef FIXED_POINT
- st->last_pitch_gain = PSHR16(pitch_average,2);
-#else
- st->last_pitch_gain = .25*pitch_average;
-#endif
- st->pitch_gain_buf[st->pitch_gain_buf_idx++] = st->last_pitch_gain;
- if (st->pitch_gain_buf_idx > 2) /* rollover */
- st->pitch_gain_buf_idx = 0;
-
- st->last_ol_gain = ol_gain;
-
- return 0;
-}
-
-int nb_encoder_ctl(void *state, int request, void *ptr)
-{
- EncState *st;
- st=(EncState*)state;
- switch(request)
- {
- case SPEEX_GET_FRAME_SIZE:
- (*(spx_int32_t*)ptr) = st->frameSize;
- break;
- case SPEEX_SET_LOW_MODE:
- case SPEEX_SET_MODE:
- st->submodeSelect = st->submodeID = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_GET_LOW_MODE:
- case SPEEX_GET_MODE:
- (*(spx_int32_t*)ptr) = st->submodeID;
- break;
- case SPEEX_SET_VBR:
- st->vbr_enabled = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_GET_VBR:
- (*(spx_int32_t*)ptr) = st->vbr_enabled;
- break;
- case SPEEX_SET_VAD:
- st->vad_enabled = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_GET_VAD:
- (*(spx_int32_t*)ptr) = st->vad_enabled;
- break;
- case SPEEX_SET_DTX:
- st->dtx_enabled = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_GET_DTX:
- (*(spx_int32_t*)ptr) = st->dtx_enabled;
- break;
- case SPEEX_SET_ABR:
- st->abr_enabled = (*(spx_int32_t*)ptr);
- st->vbr_enabled = st->abr_enabled!=0;
- if (st->vbr_enabled)
- {
- spx_int32_t i=10;
- spx_int32_t rate, target;
- float vbr_qual;
- target = (*(spx_int32_t*)ptr);
- while (i>=0)
- {
- speex_encoder_ctl(st, SPEEX_SET_QUALITY, &i);
- speex_encoder_ctl(st, SPEEX_GET_BITRATE, &rate);
- if (rate <= target)
- break;
- i--;
- }
- vbr_qual=i;
- if (vbr_qual<0)
- vbr_qual=0;
- speex_encoder_ctl(st, SPEEX_SET_VBR_QUALITY, &vbr_qual);
- st->abr_count=0;
- st->abr_drift=0;
- st->abr_drift2=0;
- }
-
- break;
- case SPEEX_GET_ABR:
- (*(spx_int32_t*)ptr) = st->abr_enabled;
- break;
- case SPEEX_SET_VBR_QUALITY:
- st->vbr_quality = (*(float*)ptr);
- break;
- case SPEEX_GET_VBR_QUALITY:
- (*(float*)ptr) = st->vbr_quality;
- break;
- case SPEEX_SET_QUALITY:
- {
- int quality = (*(spx_int32_t*)ptr);
- if (quality < 0)
- quality = 0;
- if (quality > 10)
- quality = 10;
- st->submodeSelect = st->submodeID = ((const SpeexNBMode*)(st->mode->mode))->quality_map[quality];
- }
- break;
- case SPEEX_SET_COMPLEXITY:
- st->complexity = (*(spx_int32_t*)ptr);
- if (st->complexity<0)
- st->complexity=0;
- break;
- case SPEEX_GET_COMPLEXITY:
- (*(spx_int32_t*)ptr) = st->complexity;
- break;
- case SPEEX_SET_BITRATE:
- {
- spx_int32_t i=10;
- spx_int32_t rate, target;
- target = (*(spx_int32_t*)ptr);
- while (i>=0)
- {
- speex_encoder_ctl(st, SPEEX_SET_QUALITY, &i);
- speex_encoder_ctl(st, SPEEX_GET_BITRATE, &rate);
- if (rate <= target)
- break;
- i--;
- }
- }
- break;
- case SPEEX_GET_BITRATE:
- if (st->submodes[st->submodeID])
- (*(spx_int32_t*)ptr) = st->sampling_rate*SUBMODE(bits_per_frame)/st->frameSize;
- else
- (*(spx_int32_t*)ptr) = st->sampling_rate*(NB_SUBMODE_BITS+1)/st->frameSize;
- break;
- case SPEEX_SET_SAMPLING_RATE:
- st->sampling_rate = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_GET_SAMPLING_RATE:
- (*(spx_int32_t*)ptr)=st->sampling_rate;
- break;
- case SPEEX_RESET_STATE:
- {
- int i;
- st->bounded_pitch = 1;
- st->first = 1;
- for (i=0;i<st->lpcSize;i++)
- st->old_lsp[i]=(M_PI*((float)(i+1)))/(st->lpcSize+1);
- for (i=0;i<st->lpcSize;i++)
- st->mem_sw[i]=st->mem_sw_whole[i]=st->mem_sp[i]=st->mem_exc[i]=0;
- for (i=0;i<st->frameSize+st->max_pitch+1;i++)
- st->excBuf[i]=st->swBuf[i]=0;
- for (i=0;i<st->windowSize-st->frameSize;i++)
- st->winBuf[i]=0;
- }
- break;
- case SPEEX_SET_SUBMODE_ENCODING:
- st->encode_submode = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_GET_SUBMODE_ENCODING:
- (*(spx_int32_t*)ptr) = st->encode_submode;
- break;
- case SPEEX_GET_LOOKAHEAD:
- (*(spx_int32_t*)ptr)=(st->windowSize-st->frameSize);
- break;
- case SPEEX_SET_PLC_TUNING:
- st->plc_tuning = (*(spx_int32_t*)ptr);
- if (st->plc_tuning>100)
- st->plc_tuning=100;
- break;
- case SPEEX_GET_PLC_TUNING:
- (*(spx_int32_t*)ptr)=(st->plc_tuning);
- break;
- case SPEEX_SET_VBR_MAX_BITRATE:
- st->vbr_max = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_GET_VBR_MAX_BITRATE:
- (*(spx_int32_t*)ptr) = st->vbr_max;
- break;
- case SPEEX_SET_HIGHPASS:
- st->highpass_enabled = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_GET_HIGHPASS:
- (*(spx_int32_t*)ptr) = st->highpass_enabled;
- break;
-
- /* This is all internal stuff past this point */
- case SPEEX_GET_PI_GAIN:
- {
- int i;
- spx_word32_t *g = (spx_word32_t*)ptr;
- for (i=0;i<st->nbSubframes;i++)
- g[i]=st->pi_gain[i];
- }
- break;
- case SPEEX_GET_EXC:
- {
- int i;
- for (i=0;i<st->nbSubframes;i++)
- ((spx_word16_t*)ptr)[i] = compute_rms16(st->exc+i*st->subframeSize, st->subframeSize);
- }
- break;
- case SPEEX_GET_RELATIVE_QUALITY:
- (*(float*)ptr)=st->relative_quality;
- break;
- case SPEEX_SET_INNOVATION_SAVE:
- st->innov_rms_save = (spx_word16_t*)ptr;
- break;
- case SPEEX_SET_WIDEBAND:
- st->isWideband = *((spx_int32_t*)ptr);
- break;
- case SPEEX_GET_STACK:
- *((char**)ptr) = st->stack;
- break;
- default:
- speex_warning_int("Unknown nb_ctl request: ", request);
- return -1;
- }
- return 0;
-}
-
-int nb_decoder_ctl(void *state, int request, void *ptr)
-{
- DecState *st;
- st=(DecState*)state;
- switch(request)
- {
- case SPEEX_SET_LOW_MODE:
- case SPEEX_SET_MODE:
- st->submodeID = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_GET_LOW_MODE:
- case SPEEX_GET_MODE:
- (*(spx_int32_t*)ptr) = st->submodeID;
- break;
- case SPEEX_SET_ENH:
- st->lpc_enh_enabled = *((spx_int32_t*)ptr);
- break;
- case SPEEX_GET_ENH:
- *((spx_int32_t*)ptr) = st->lpc_enh_enabled;
- break;
- case SPEEX_GET_FRAME_SIZE:
- (*(spx_int32_t*)ptr) = st->frameSize;
- break;
- case SPEEX_GET_BITRATE:
- if (st->submodes[st->submodeID])
- (*(spx_int32_t*)ptr) = st->sampling_rate*SUBMODE(bits_per_frame)/st->frameSize;
- else
- (*(spx_int32_t*)ptr) = st->sampling_rate*(NB_SUBMODE_BITS+1)/st->frameSize;
- break;
- case SPEEX_SET_SAMPLING_RATE:
- st->sampling_rate = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_GET_SAMPLING_RATE:
- (*(spx_int32_t*)ptr)=st->sampling_rate;
- break;
- case SPEEX_SET_HANDLER:
- {
- SpeexCallback *c = (SpeexCallback*)ptr;
- st->speex_callbacks[c->callback_id].func=c->func;
- st->speex_callbacks[c->callback_id].data=c->data;
- st->speex_callbacks[c->callback_id].callback_id=c->callback_id;
- }
- break;
- case SPEEX_SET_USER_HANDLER:
- {
- SpeexCallback *c = (SpeexCallback*)ptr;
- st->user_callback.func=c->func;
- st->user_callback.data=c->data;
- st->user_callback.callback_id=c->callback_id;
- }
- break;
- case SPEEX_RESET_STATE:
- {
- int i;
- for (i=0;i<st->lpcSize;i++)
- st->mem_sp[i]=0;
- for (i=0;i<st->frameSize + st->max_pitch + 1;i++)
- st->excBuf[i]=0;
- }
- break;
- case SPEEX_SET_SUBMODE_ENCODING:
- st->encode_submode = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_GET_SUBMODE_ENCODING:
- (*(spx_int32_t*)ptr) = st->encode_submode;
- break;
- case SPEEX_GET_LOOKAHEAD:
- (*(spx_int32_t*)ptr)=st->subframeSize;
- break;
- case SPEEX_SET_HIGHPASS:
- st->highpass_enabled = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_GET_HIGHPASS:
- (*(spx_int32_t*)ptr) = st->highpass_enabled;
- break;
-
- case SPEEX_GET_PI_GAIN:
- {
- int i;
- spx_word32_t *g = (spx_word32_t*)ptr;
- for (i=0;i<st->nbSubframes;i++)
- g[i]=st->pi_gain[i];
- }
- break;
- case SPEEX_GET_EXC:
- {
- int i;
- for (i=0;i<st->nbSubframes;i++)
- ((spx_word16_t*)ptr)[i] = compute_rms16(st->exc+i*st->subframeSize, st->subframeSize);
- }
- break;
- case SPEEX_GET_DTX_STATUS:
- *((spx_int32_t*)ptr) = st->dtx_enabled;
- break;
- case SPEEX_SET_INNOVATION_SAVE:
- st->innov_save = (spx_word16_t*)ptr;
- break;
- case SPEEX_SET_WIDEBAND:
- st->isWideband = *((spx_int32_t*)ptr);
- break;
- case SPEEX_GET_STACK:
- *((char**)ptr) = st->stack;
- break;
- default:
- speex_warning_int("Unknown nb_ctl request: ", request);
- return -1;
- }
- return 0;
-}
diff --git a/3rdparty/speex/libspeex/nb_celp.h b/3rdparty/speex/libspeex/nb_celp.h
deleted file mode 100644
index 1ebf7175..00000000
--- a/3rdparty/speex/libspeex/nb_celp.h
+++ /dev/null
@@ -1,205 +0,0 @@
-/* Copyright (C) 2002-2006 Jean-Marc Valin */
-/**
- @file nb_celp.h
- @brief Narrowband CELP encoder/decoder
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifndef NB_CELP_H
-#define NB_CELP_H
-
-#include "modes.h"
-#include <speex/speex_bits.h>
-#include <speex/speex_callbacks.h>
-#include "vbr.h"
-#include "filters.h"
-
-#ifdef VORBIS_PSYCHO
-#include "vorbis_psy.h"
-#endif
-
-/**Structure representing the full state of the narrowband encoder*/
-typedef struct EncState {
- const SpeexMode *mode; /**< Mode corresponding to the state */
- int first; /**< Is this the first frame? */
- int frameSize; /**< Size of frames */
- int subframeSize; /**< Size of sub-frames */
- int nbSubframes; /**< Number of sub-frames */
- int windowSize; /**< Analysis (LPC) window length */
- int lpcSize; /**< LPC order */
- int min_pitch; /**< Minimum pitch value allowed */
- int max_pitch; /**< Maximum pitch value allowed */
-
- spx_word32_t cumul_gain; /**< Product of previously used pitch gains (Q10) */
- int bounded_pitch; /**< Next frame should not rely on previous frames for pitch */
- int ol_pitch; /**< Open-loop pitch */
- int ol_voiced; /**< Open-loop voiced/non-voiced decision */
- int *pitch;
-
-#ifdef EPIC_48K
- int lbr_48k;
-#endif
-
-#ifdef VORBIS_PSYCHO
- VorbisPsy *psy;
- float *psy_window;
- float *curve;
- float *old_curve;
-#endif
-
- spx_word16_t gamma1; /**< Perceptual filter: A(z/gamma1) */
- spx_word16_t gamma2; /**< Perceptual filter: A(z/gamma2) */
- float lag_factor; /**< Lag windowing Gaussian width */
- spx_word16_t lpc_floor; /**< Noise floor multiplier for A[0] in LPC analysis*/
- char *stack; /**< Pseudo-stack allocation for temporary memory */
- spx_word16_t *winBuf; /**< Input buffer (original signal) */
- spx_word16_t *excBuf; /**< Excitation buffer */
- spx_word16_t *exc; /**< Start of excitation frame */
- spx_word16_t *swBuf; /**< Weighted signal buffer */
- spx_word16_t *sw; /**< Start of weighted signal frame */
- const spx_word16_t *window; /**< Temporary (Hanning) window */
- spx_word16_t *lagWindow; /**< Window applied to auto-correlation */
- spx_lsp_t *old_lsp; /**< LSPs for previous frame */
- spx_lsp_t *old_qlsp; /**< Quantized LSPs for previous frame */
- spx_mem_t *mem_sp; /**< Filter memory for signal synthesis */
- spx_mem_t *mem_sw; /**< Filter memory for perceptually-weighted signal */
- spx_mem_t *mem_sw_whole; /**< Filter memory for perceptually-weighted signal (whole frame)*/
- spx_mem_t *mem_exc; /**< Filter memory for excitation (whole frame) */
- spx_mem_t *mem_exc2; /**< Filter memory for excitation (whole frame) */
- spx_mem_t mem_hp[2]; /**< High-pass filter memory */
- spx_word32_t *pi_gain; /**< Gain of LPC filter at theta=pi (fe/2) */
- spx_word16_t *innov_rms_save; /**< If non-NULL, innovation RMS is copied here */
-
- VBRState *vbr; /**< State of the VBR data */
- float vbr_quality; /**< Quality setting for VBR encoding */
- float relative_quality; /**< Relative quality that will be needed by VBR */
- spx_int32_t vbr_enabled; /**< 1 for enabling VBR, 0 otherwise */
- spx_int32_t vbr_max; /**< Max bit-rate allowed in VBR mode */
- int vad_enabled; /**< 1 for enabling VAD, 0 otherwise */
- int dtx_enabled; /**< 1 for enabling DTX, 0 otherwise */
- int dtx_count; /**< Number of consecutive DTX frames */
- spx_int32_t abr_enabled; /**< ABR setting (in bps), 0 if off */
- float abr_drift;
- float abr_drift2;
- float abr_count;
- int complexity; /**< Complexity setting (0-10 from least complex to most complex) */
- spx_int32_t sampling_rate;
- int plc_tuning;
- int encode_submode;
- const SpeexSubmode * const *submodes; /**< Sub-mode data */
- int submodeID; /**< Activated sub-mode */
- int submodeSelect; /**< Mode chosen by the user (may differ from submodeID if VAD is on) */
- int isWideband; /**< Is this used as part of the embedded wideband codec */
- int highpass_enabled; /**< Is the input filter enabled */
-} EncState;
-
-/**Structure representing the full state of the narrowband decoder*/
-typedef struct DecState {
- const SpeexMode *mode; /**< Mode corresponding to the state */
- int first; /**< Is this the first frame? */
- int count_lost; /**< Was the last frame lost? */
- int frameSize; /**< Size of frames */
- int subframeSize; /**< Size of sub-frames */
- int nbSubframes; /**< Number of sub-frames */
- int lpcSize; /**< LPC order */
- int min_pitch; /**< Minimum pitch value allowed */
- int max_pitch; /**< Maximum pitch value allowed */
- spx_int32_t sampling_rate;
-
-#ifdef EPIC_48K
- int lbr_48k;
-#endif
-
- spx_word16_t last_ol_gain; /**< Open-loop gain for previous frame */
-
- char *stack; /**< Pseudo-stack allocation for temporary memory */
- spx_word16_t *excBuf; /**< Excitation buffer */
- spx_word16_t *exc; /**< Start of excitation frame */
- spx_lsp_t *old_qlsp; /**< Quantized LSPs for previous frame */
- spx_coef_t *interp_qlpc; /**< Interpolated quantized LPCs */
- spx_mem_t *mem_sp; /**< Filter memory for synthesis signal */
- spx_mem_t mem_hp[2]; /**< High-pass filter memory */
- spx_word32_t *pi_gain; /**< Gain of LPC filter at theta=pi (fe/2) */
- spx_word16_t *innov_save; /** If non-NULL, innovation is copied here */
-
- /* This is used in packet loss concealment */
- int last_pitch; /**< Pitch of last correctly decoded frame */
- spx_word16_t last_pitch_gain; /**< Pitch gain of last correctly decoded frame */
- spx_word16_t pitch_gain_buf[3]; /**< Pitch gain of last decoded frames */
- int pitch_gain_buf_idx; /**< Tail of the buffer */
- spx_int32_t seed; /** Seed used for random number generation */
-
- int encode_submode;
- const SpeexSubmode * const *submodes; /**< Sub-mode data */
- int submodeID; /**< Activated sub-mode */
- int lpc_enh_enabled; /**< 1 when LPC enhancer is on, 0 otherwise */
- SpeexCallback speex_callbacks[SPEEX_MAX_CALLBACKS];
-
- SpeexCallback user_callback;
-
- /*Vocoder data*/
- spx_word16_t voc_m1;
- spx_word32_t voc_m2;
- float voc_mean;
- int voc_offset;
-
- int dtx_enabled;
- int isWideband; /**< Is this used as part of the embedded wideband codec */
- int highpass_enabled; /**< Is the input filter enabled */
-} DecState;
-
-/** Initializes encoder state*/
-void *nb_encoder_init(const SpeexMode *m);
-
-/** De-allocates encoder state resources*/
-void nb_encoder_destroy(void *state);
-
-/** Encodes one frame*/
-int nb_encode(void *state, void *in, SpeexBits *bits);
-
-
-/** Initializes decoder state*/
-void *nb_decoder_init(const SpeexMode *m);
-
-/** De-allocates decoder state resources*/
-void nb_decoder_destroy(void *state);
-
-/** Decodes one frame*/
-int nb_decode(void *state, SpeexBits *bits, void *out);
-
-/** ioctl-like function for controlling a narrowband encoder */
-int nb_encoder_ctl(void *state, int request, void *ptr);
-
-/** ioctl-like function for controlling a narrowband decoder */
-int nb_decoder_ctl(void *state, int request, void *ptr);
-
-
-#endif
diff --git a/3rdparty/speex/libspeex/preprocess.c b/3rdparty/speex/libspeex/preprocess.c
deleted file mode 100644
index b5caf4b9..00000000
--- a/3rdparty/speex/libspeex/preprocess.c
+++ /dev/null
@@ -1,1172 +0,0 @@
-/* Copyright (C) 2003 Epic Games (written by Jean-Marc Valin)
- Copyright (C) 2004-2006 Epic Games
-
- File: preprocess.c
- Preprocessor with denoising based on the algorithm by Ephraim and Malah
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-/*
- Recommended papers:
-
- Y. Ephraim and D. Malah, "Speech enhancement using minimum mean-square error
- short-time spectral amplitude estimator". IEEE Transactions on Acoustics,
- Speech and Signal Processing, vol. ASSP-32, no. 6, pp. 1109-1121, 1984.
-
- Y. Ephraim and D. Malah, "Speech enhancement using minimum mean-square error
- log-spectral amplitude estimator". IEEE Transactions on Acoustics, Speech and
- Signal Processing, vol. ASSP-33, no. 2, pp. 443-445, 1985.
-
- I. Cohen and B. Berdugo, "Speech enhancement for non-stationary noise environments".
- Signal Processing, vol. 81, no. 2, pp. 2403-2418, 2001.
-
- Stefan Gustafsson, Rainer Martin, Peter Jax, and Peter Vary. "A psychoacoustic
- approach to combined acoustic echo cancellation and noise reduction". IEEE
- Transactions on Speech and Audio Processing, 2002.
-
- J.-M. Valin, J. Rouat, and F. Michaud, "Microphone array post-filter for separation
- of simultaneous non-stationary sources". In Proceedings IEEE International
- Conference on Acoustics, Speech, and Signal Processing, 2004.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <math.h>
-#include "speex/speex_preprocess.h"
-#include "speex/speex_echo.h"
-#include "misc.h"
-#include "fftwrap.h"
-#include "filterbank.h"
-#include "math_approx.h"
-
-#ifndef M_PI
-#define M_PI 3.14159263
-#endif
-
-#define LOUDNESS_EXP 5.f
-#define AMP_SCALE .001f
-#define AMP_SCALE_1 1000.f
-
-#define NB_BANDS 24
-
-#define SPEECH_PROB_START_DEFAULT QCONST16(0.35f,15)
-#define SPEECH_PROB_CONTINUE_DEFAULT QCONST16(0.20f,15)
-#define NOISE_SUPPRESS_DEFAULT -15
-#define ECHO_SUPPRESS_DEFAULT -40
-#define ECHO_SUPPRESS_ACTIVE_DEFAULT -15
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-#define SQR(x) ((x)*(x))
-#define SQR16(x) (MULT16_16((x),(x)))
-#define SQR16_Q15(x) (MULT16_16_Q15((x),(x)))
-
-#ifdef FIXED_POINT
-static inline spx_word16_t DIV32_16_Q8(spx_word32_t a, spx_word32_t b)
-{
- if (SHR32(a,7) >= b)
- {
- return 32767;
- } else {
- if (b>=QCONST32(1,23))
- {
- a = SHR32(a,8);
- b = SHR32(b,8);
- }
- if (b>=QCONST32(1,19))
- {
- a = SHR32(a,4);
- b = SHR32(b,4);
- }
- if (b>=QCONST32(1,15))
- {
- a = SHR32(a,4);
- b = SHR32(b,4);
- }
- a = SHL32(a,8);
- return PDIV32_16(a,b);
- }
-
-}
-static inline spx_word16_t DIV32_16_Q15(spx_word32_t a, spx_word32_t b)
-{
- if (SHR32(a,15) >= b)
- {
- return 32767;
- } else {
- if (b>=QCONST32(1,23))
- {
- a = SHR32(a,8);
- b = SHR32(b,8);
- }
- if (b>=QCONST32(1,19))
- {
- a = SHR32(a,4);
- b = SHR32(b,4);
- }
- if (b>=QCONST32(1,15))
- {
- a = SHR32(a,4);
- b = SHR32(b,4);
- }
- a = SHL32(a,15)-a;
- return DIV32_16(a,b);
- }
-}
-#define SNR_SCALING 256.f
-#define SNR_SCALING_1 0.0039062f
-#define SNR_SHIFT 8
-
-#define FRAC_SCALING 32767.f
-#define FRAC_SCALING_1 3.0518e-05
-#define FRAC_SHIFT 1
-
-#define EXPIN_SCALING 2048.f
-#define EXPIN_SCALING_1 0.00048828f
-#define EXPIN_SHIFT 11
-#define EXPOUT_SCALING_1 1.5259e-05
-
-#define NOISE_SHIFT 7
-
-#else
-
-#define DIV32_16_Q8(a,b) ((a)/(b))
-#define DIV32_16_Q15(a,b) ((a)/(b))
-#define SNR_SCALING 1.f
-#define SNR_SCALING_1 1.f
-#define SNR_SHIFT 0
-#define FRAC_SCALING 1.f
-#define FRAC_SCALING_1 1.f
-#define FRAC_SHIFT 0
-#define NOISE_SHIFT 0
-
-#define EXPIN_SCALING 1.f
-#define EXPIN_SCALING_1 1.f
-#define EXPOUT_SCALING_1 1.f
-
-#endif
-
-/** Speex pre-processor state. */
-struct SpeexPreprocessState_ {
- /* Basic info */
- int frame_size; /**< Number of samples processed each time */
- int ps_size; /**< Number of points in the power spectrum */
- int sampling_rate; /**< Sampling rate of the input/output */
- int nbands;
- FilterBank *bank;
-
- /* Parameters */
- int denoise_enabled;
- int vad_enabled;
- int dereverb_enabled;
- spx_word16_t reverb_decay;
- spx_word16_t reverb_level;
- spx_word16_t speech_prob_start;
- spx_word16_t speech_prob_continue;
- int noise_suppress;
- int echo_suppress;
- int echo_suppress_active;
- SpeexEchoState *echo_state;
-
- /* DSP-related arrays */
- spx_word16_t *frame; /**< Processing frame (2*ps_size) */
- spx_word16_t *ft; /**< Processing frame in freq domain (2*ps_size) */
- spx_word32_t *ps; /**< Current power spectrum */
- spx_word16_t *gain2; /**< Adjusted gains */
- spx_word16_t *gain_floor; /**< Minimum gain allowed */
- spx_word16_t *window; /**< Analysis/Synthesis window */
- spx_word32_t *noise; /**< Noise estimate */
- spx_word32_t *reverb_estimate; /**< Estimate of reverb energy */
- spx_word32_t *old_ps; /**< Power spectrum for last frame */
- spx_word16_t *gain; /**< Ephraim Malah gain */
- spx_word16_t *prior; /**< A-priori SNR */
- spx_word16_t *post; /**< A-posteriori SNR */
-
- spx_word32_t *S; /**< Smoothed power spectrum */
- spx_word32_t *Smin; /**< See Cohen paper */
- spx_word32_t *Stmp; /**< See Cohen paper */
- int *update_prob; /**< Propability of speech presence for noise update */
-
- spx_word16_t *zeta; /**< Smoothed a priori SNR */
- spx_word32_t *echo_noise;
- spx_word32_t *residual_echo;
-
- /* Misc */
- spx_word16_t *inbuf; /**< Input buffer (overlapped analysis) */
- spx_word16_t *outbuf; /**< Output buffer (for overlap and add) */
-
- /* AGC stuff, only for floating point for now */
-#ifndef FIXED_POINT
- int agc_enabled;
- float agc_level;
- float loudness_accum;
- float *loudness_weight; /**< Perceptual loudness curve */
- float loudness; /**< Loudness estimate */
- float agc_gain; /**< Current AGC gain */
- int nb_loudness_adapt; /**< Number of frames used for loudness adaptation so far */
- float max_gain; /**< Maximum gain allowed */
- float max_increase_step; /**< Maximum increase in gain from one frame to another */
- float max_decrease_step; /**< Maximum decrease in gain from one frame to another */
- float prev_loudness; /**< Loudness of previous frame */
- float init_max; /**< Current gain limit during initialisation */
-#endif
- int nb_adapt; /**< Number of frames used for adaptation so far */
- int was_speech;
- int min_count; /**< Number of frames processed so far */
- void *fft_lookup; /**< Lookup table for the FFT */
-#ifdef FIXED_POINT
- int frame_shift;
-#endif
-};
-
-
-static void conj_window(spx_word16_t *w, int len)
-{
- int i;
- for (i=0;i<len;i++)
- {
- spx_word16_t tmp;
-#ifdef FIXED_POINT
- spx_word16_t x = DIV32_16(MULT16_16(32767,i),len);
-#else
- spx_word16_t x = DIV32_16(MULT16_16(QCONST16(4.f,13),i),len);
-#endif
- int inv=0;
- if (x<QCONST16(1.f,13))
- {
- } else if (x<QCONST16(2.f,13))
- {
- x=QCONST16(2.f,13)-x;
- inv=1;
- } else if (x<QCONST16(3.f,13))
- {
- x=x-QCONST16(2.f,13);
- inv=1;
- } else {
- x=QCONST16(2.f,13)-x+QCONST16(2.f,13); /* 4 - x */
- }
- x = MULT16_16_Q14(QCONST16(1.271903f,14), x);
- tmp = SQR16_Q15(QCONST16(.5f,15)-MULT16_16_P15(QCONST16(.5f,15),spx_cos_norm(QCONST32(x,2))));
- if (inv)
- tmp=SUB16(Q15_ONE,tmp);
- w[i]=spx_sqrt(SHL32(EXTEND32(tmp),15));
- }
-}
-
-
-#ifdef FIXED_POINT
-/* This function approximates the gain function
- y = gamma(1.25)^2 * M(-.25;1;-x) / sqrt(x)
- which multiplied by xi/(1+xi) is the optimal gain
- in the loudness domain ( sqrt[amplitude] )
- Input in Q11 format, output in Q15
-*/
-static inline spx_word32_t hypergeom_gain(spx_word32_t xx)
-{
- int ind;
- spx_word16_t frac;
- /* Q13 table */
- static const spx_word16_t table[21] = {
- 6730, 8357, 9868, 11267, 12563, 13770, 14898,
- 15959, 16961, 17911, 18816, 19682, 20512, 21311,
- 22082, 22827, 23549, 24250, 24931, 25594, 26241};
- ind = SHR32(xx,10);
- if (ind<0)
- return Q15_ONE;
- if (ind>19)
- return ADD32(EXTEND32(Q15_ONE),EXTEND32(DIV32_16(QCONST32(.1296,23), SHR32(xx,EXPIN_SHIFT-SNR_SHIFT))));
- frac = SHL32(xx-SHL32(ind,10),5);
- return SHL32(DIV32_16(PSHR32(MULT16_16(Q15_ONE-frac,table[ind]) + MULT16_16(frac,table[ind+1]),7),(spx_sqrt(SHL32(xx,15)+6711))),7);
-}
-
-static inline spx_word16_t qcurve(spx_word16_t x)
-{
- x = MAX16(x, 1);
- return DIV32_16(SHL32(EXTEND32(32767),9),ADD16(512,MULT16_16_Q15(QCONST16(.60f,15),DIV32_16(32767,x))));
-}
-
-/* Compute the gain floor based on different floors for the background noise and residual echo */
-static void compute_gain_floor(int noise_suppress, int effective_echo_suppress, spx_word32_t *noise, spx_word32_t *echo, spx_word16_t *gain_floor, int len)
-{
- int i;
-
- if (noise_suppress > effective_echo_suppress)
- {
- spx_word16_t noise_gain, gain_ratio;
- noise_gain = EXTRACT16(MIN32(Q15_ONE,SHR32(spx_exp(MULT16_16(QCONST16(0.11513,11),noise_suppress)),1)));
- gain_ratio = EXTRACT16(MIN32(Q15_ONE,SHR32(spx_exp(MULT16_16(QCONST16(.2302585f,11),effective_echo_suppress-noise_suppress)),1)));
-
- /* gain_floor = sqrt [ (noise*noise_floor + echo*echo_floor) / (noise+echo) ] */
- for (i=0;i<len;i++)
- gain_floor[i] = MULT16_16_Q15(noise_gain,
- spx_sqrt(SHL32(EXTEND32(DIV32_16_Q15(PSHR32(noise[i],NOISE_SHIFT) + MULT16_32_Q15(gain_ratio,echo[i]),
- (1+PSHR32(noise[i],NOISE_SHIFT) + echo[i]) )),15)));
- } else {
- spx_word16_t echo_gain, gain_ratio;
- echo_gain = EXTRACT16(MIN32(Q15_ONE,SHR32(spx_exp(MULT16_16(QCONST16(0.11513,11),effective_echo_suppress)),1)));
- gain_ratio = EXTRACT16(MIN32(Q15_ONE,SHR32(spx_exp(MULT16_16(QCONST16(.2302585f,11),noise_suppress-effective_echo_suppress)),1)));
-
- /* gain_floor = sqrt [ (noise*noise_floor + echo*echo_floor) / (noise+echo) ] */
- for (i=0;i<len;i++)
- gain_floor[i] = MULT16_16_Q15(echo_gain,
- spx_sqrt(SHL32(EXTEND32(DIV32_16_Q15(MULT16_32_Q15(gain_ratio,PSHR32(noise[i],NOISE_SHIFT)) + echo[i],
- (1+PSHR32(noise[i],NOISE_SHIFT) + echo[i]) )),15)));
- }
-}
-
-#else
-/* This function approximates the gain function
- y = gamma(1.25)^2 * M(-.25;1;-x) / sqrt(x)
- which multiplied by xi/(1+xi) is the optimal gain
- in the loudness domain ( sqrt[amplitude] )
-*/
-static inline spx_word32_t hypergeom_gain(spx_word32_t xx)
-{
- int ind;
- float integer, frac;
- float x;
- static const float table[21] = {
- 0.82157f, 1.02017f, 1.20461f, 1.37534f, 1.53363f, 1.68092f, 1.81865f,
- 1.94811f, 2.07038f, 2.18638f, 2.29688f, 2.40255f, 2.50391f, 2.60144f,
- 2.69551f, 2.78647f, 2.87458f, 2.96015f, 3.04333f, 3.12431f, 3.20326f};
- x = EXPIN_SCALING_1*xx;
- integer = floor(2*x);
- ind = (int)integer;
- if (ind<0)
- return FRAC_SCALING;
- if (ind>19)
- return FRAC_SCALING*(1+.1296/x);
- frac = 2*x-integer;
- return FRAC_SCALING*((1-frac)*table[ind] + frac*table[ind+1])/sqrt(x+.0001f);
-}
-
-static inline spx_word16_t qcurve(spx_word16_t x)
-{
- return 1.f/(1.f+.15f/(SNR_SCALING_1*x));
-}
-
-static void compute_gain_floor(int noise_suppress, int effective_echo_suppress, spx_word32_t *noise, spx_word32_t *echo, spx_word16_t *gain_floor, int len)
-{
- int i;
- float echo_floor;
- float noise_floor;
-
- noise_floor = exp(.2302585f*noise_suppress);
- echo_floor = exp(.2302585f*effective_echo_suppress);
-
- /* Compute the gain floor based on different floors for the background noise and residual echo */
- for (i=0;i<len;i++)
- gain_floor[i] = FRAC_SCALING*sqrt(noise_floor*PSHR32(noise[i],NOISE_SHIFT) + echo_floor*echo[i])/sqrt(1+PSHR32(noise[i],NOISE_SHIFT) + echo[i]);
-}
-
-#endif
-SpeexPreprocessState *speex_preprocess_state_init(int frame_size, int sampling_rate)
-{
- int i;
- int N, N3, N4, M;
-
- SpeexPreprocessState *st = (SpeexPreprocessState *)speex_alloc(sizeof(SpeexPreprocessState));
- st->frame_size = frame_size;
-
- /* Round ps_size down to the nearest power of two */
-#if 0
- i=1;
- st->ps_size = st->frame_size;
- while(1)
- {
- if (st->ps_size & ~i)
- {
- st->ps_size &= ~i;
- i<<=1;
- } else {
- break;
- }
- }
-
-
- if (st->ps_size < 3*st->frame_size/4)
- st->ps_size = st->ps_size * 3 / 2;
-#else
- st->ps_size = st->frame_size;
-#endif
-
- N = st->ps_size;
- N3 = 2*N - st->frame_size;
- N4 = st->frame_size - N3;
-
- st->sampling_rate = sampling_rate;
- st->denoise_enabled = 1;
- st->vad_enabled = 0;
- st->dereverb_enabled = 0;
- st->reverb_decay = 0;
- st->reverb_level = 0;
- st->noise_suppress = NOISE_SUPPRESS_DEFAULT;
- st->echo_suppress = ECHO_SUPPRESS_DEFAULT;
- st->echo_suppress_active = ECHO_SUPPRESS_ACTIVE_DEFAULT;
-
- st->speech_prob_start = SPEECH_PROB_START_DEFAULT;
- st->speech_prob_continue = SPEECH_PROB_CONTINUE_DEFAULT;
-
- st->echo_state = NULL;
-
- st->nbands = NB_BANDS;
- M = st->nbands;
- st->bank = filterbank_new(M, sampling_rate, N, 1);
-
- st->frame = (spx_word16_t*)speex_alloc(2*N*sizeof(spx_word16_t));
- st->window = (spx_word16_t*)speex_alloc(2*N*sizeof(spx_word16_t));
- st->ft = (spx_word16_t*)speex_alloc(2*N*sizeof(spx_word16_t));
-
- st->ps = (spx_word32_t*)speex_alloc((N+M)*sizeof(spx_word32_t));
- st->noise = (spx_word32_t*)speex_alloc((N+M)*sizeof(spx_word32_t));
- st->echo_noise = (spx_word32_t*)speex_alloc((N+M)*sizeof(spx_word32_t));
- st->residual_echo = (spx_word32_t*)speex_alloc((N+M)*sizeof(spx_word32_t));
- st->reverb_estimate = (spx_word32_t*)speex_alloc((N+M)*sizeof(spx_word32_t));
- st->old_ps = (spx_word32_t*)speex_alloc((N+M)*sizeof(spx_word32_t));
- st->prior = (spx_word16_t*)speex_alloc((N+M)*sizeof(spx_word16_t));
- st->post = (spx_word16_t*)speex_alloc((N+M)*sizeof(spx_word16_t));
- st->gain = (spx_word16_t*)speex_alloc((N+M)*sizeof(spx_word16_t));
- st->gain2 = (spx_word16_t*)speex_alloc((N+M)*sizeof(spx_word16_t));
- st->gain_floor = (spx_word16_t*)speex_alloc((N+M)*sizeof(spx_word16_t));
- st->zeta = (spx_word16_t*)speex_alloc((N+M)*sizeof(spx_word16_t));
-
- st->S = (spx_word32_t*)speex_alloc(N*sizeof(spx_word32_t));
- st->Smin = (spx_word32_t*)speex_alloc(N*sizeof(spx_word32_t));
- st->Stmp = (spx_word32_t*)speex_alloc(N*sizeof(spx_word32_t));
- st->update_prob = (int*)speex_alloc(N*sizeof(int));
-
- st->inbuf = (spx_word16_t*)speex_alloc(N3*sizeof(spx_word16_t));
- st->outbuf = (spx_word16_t*)speex_alloc(N3*sizeof(spx_word16_t));
-
- conj_window(st->window, 2*N3);
- for (i=2*N3;i<2*st->ps_size;i++)
- st->window[i]=Q15_ONE;
-
- if (N4>0)
- {
- for (i=N3-1;i>=0;i--)
- {
- st->window[i+N3+N4]=st->window[i+N3];
- st->window[i+N3]=1;
- }
- }
- for (i=0;i<N+M;i++)
- {
- st->noise[i]=QCONST32(1.f,NOISE_SHIFT);
- st->reverb_estimate[i]=0;
- st->old_ps[i]=1;
- st->gain[i]=Q15_ONE;
- st->post[i]=SHL16(1, SNR_SHIFT);
- st->prior[i]=SHL16(1, SNR_SHIFT);
- }
-
- for (i=0;i<N;i++)
- st->update_prob[i] = 1;
- for (i=0;i<N3;i++)
- {
- st->inbuf[i]=0;
- st->outbuf[i]=0;
- }
-#ifndef FIXED_POINT
- st->agc_enabled = 0;
- st->agc_level = 8000;
- st->loudness_weight = (float*)speex_alloc(N*sizeof(float));
- for (i=0;i<N;i++)
- {
- float ff=((float)i)*.5*sampling_rate/((float)N);
- /*st->loudness_weight[i] = .5f*(1.f/(1.f+ff/8000.f))+1.f*exp(-.5f*(ff-3800.f)*(ff-3800.f)/9e5f);*/
- st->loudness_weight[i] = .35f-.35f*ff/16000.f+.73f*exp(-.5f*(ff-3800)*(ff-3800)/9e5f);
- if (st->loudness_weight[i]<.01f)
- st->loudness_weight[i]=.01f;
- st->loudness_weight[i] *= st->loudness_weight[i];
- }
- /*st->loudness = pow(AMP_SCALE*st->agc_level,LOUDNESS_EXP);*/
- st->loudness = 1e-15;
- st->agc_gain = 1;
- st->nb_loudness_adapt = 0;
- st->max_gain = 30;
- st->max_increase_step = exp(0.11513f * 12.*st->frame_size / st->sampling_rate);
- st->max_decrease_step = exp(-0.11513f * 40.*st->frame_size / st->sampling_rate);
- st->prev_loudness = 1;
- st->init_max = 1;
-#endif
- st->was_speech = 0;
-
- st->fft_lookup = spx_fft_init(2*N);
-
- st->nb_adapt=0;
- st->min_count=0;
- return st;
-}
-
-void speex_preprocess_state_destroy(SpeexPreprocessState *st)
-{
- speex_free(st->frame);
- speex_free(st->ft);
- speex_free(st->ps);
- speex_free(st->gain2);
- speex_free(st->gain_floor);
- speex_free(st->window);
- speex_free(st->noise);
- speex_free(st->reverb_estimate);
- speex_free(st->old_ps);
- speex_free(st->gain);
- speex_free(st->prior);
- speex_free(st->post);
-#ifndef FIXED_POINT
- speex_free(st->loudness_weight);
-#endif
- speex_free(st->echo_noise);
- speex_free(st->residual_echo);
-
- speex_free(st->S);
- speex_free(st->Smin);
- speex_free(st->Stmp);
- speex_free(st->update_prob);
- speex_free(st->zeta);
-
- speex_free(st->inbuf);
- speex_free(st->outbuf);
-
- spx_fft_destroy(st->fft_lookup);
- filterbank_destroy(st->bank);
- speex_free(st);
-}
-
-/* FIXME: The AGC doesn't work yet with fixed-point*/
-#ifndef FIXED_POINT
-static void speex_compute_agc(SpeexPreprocessState *st, spx_word16_t Pframe, spx_word16_t *ft)
-{
- int i;
- int N = st->ps_size;
- float target_gain;
- float loudness=1.f;
- float rate;
-
- for (i=2;i<N;i++)
- {
- loudness += 2.f*N*st->ps[i]* st->loudness_weight[i];
- }
- loudness=sqrt(loudness);
- /*if (loudness < 2*pow(st->loudness, 1.0/LOUDNESS_EXP) &&
- loudness*2 > pow(st->loudness, 1.0/LOUDNESS_EXP))*/
- if (Pframe>.3f)
- {
- st->nb_loudness_adapt++;
- /*rate=2.0f*Pframe*Pframe/(1+st->nb_loudness_adapt);*/
- rate = .03*Pframe*Pframe;
- st->loudness = (1-rate)*st->loudness + (rate)*pow(AMP_SCALE*loudness, LOUDNESS_EXP);
- st->loudness_accum = (1-rate)*st->loudness_accum + rate;
- if (st->init_max < st->max_gain && st->nb_adapt > 20)
- st->init_max *= 1.f + .1f*Pframe*Pframe;
- }
- /*printf ("%f %f %f %f\n", Pframe, loudness, pow(st->loudness, 1.0f/LOUDNESS_EXP), st->loudness2);*/
-
- target_gain = AMP_SCALE*st->agc_level*pow(st->loudness/(1e-4+st->loudness_accum), -1.0f/LOUDNESS_EXP);
-
- if ((Pframe>.5 && st->nb_adapt > 20) || target_gain < st->agc_gain)
- {
- if (target_gain > st->max_increase_step*st->agc_gain)
- target_gain = st->max_increase_step*st->agc_gain;
- if (target_gain < st->max_decrease_step*st->agc_gain && loudness < 10*st->prev_loudness)
- target_gain = st->max_decrease_step*st->agc_gain;
- if (target_gain > st->max_gain)
- target_gain = st->max_gain;
- if (target_gain > st->init_max)
- target_gain = st->init_max;
-
- st->agc_gain = target_gain;
- }
- /*fprintf (stderr, "%f %f %f\n", loudness, (float)AMP_SCALE_1*pow(st->loudness, 1.0f/LOUDNESS_EXP), st->agc_gain);*/
-
- for (i=0;i<2*N;i++)
- ft[i] *= st->agc_gain;
- st->prev_loudness = loudness;
-}
-#endif
-
-static void preprocess_analysis(SpeexPreprocessState *st, spx_int16_t *x)
-{
- int i;
- int N = st->ps_size;
- int N3 = 2*N - st->frame_size;
- int N4 = st->frame_size - N3;
- spx_word32_t *ps=st->ps;
-
- /* 'Build' input frame */
- for (i=0;i<N3;i++)
- st->frame[i]=st->inbuf[i];
- for (i=0;i<st->frame_size;i++)
- st->frame[N3+i]=x[i];
-
- /* Update inbuf */
- for (i=0;i<N3;i++)
- st->inbuf[i]=x[N4+i];
-
- /* Windowing */
- for (i=0;i<2*N;i++)
- st->frame[i] = MULT16_16_Q15(st->frame[i], st->window[i]);
-
-#ifdef FIXED_POINT
- {
- spx_word16_t max_val=0;
- for (i=0;i<2*N;i++)
- max_val = MAX16(max_val, ABS16(st->frame[i]));
- st->frame_shift = 14-spx_ilog2(EXTEND32(max_val));
- for (i=0;i<2*N;i++)
- st->frame[i] = SHL16(st->frame[i], st->frame_shift);
- }
-#endif
-
- /* Perform FFT */
- spx_fft(st->fft_lookup, st->frame, st->ft);
-
- /* Power spectrum */
- ps[0]=MULT16_16(st->ft[0],st->ft[0]);
- for (i=1;i<N;i++)
- ps[i]=MULT16_16(st->ft[2*i-1],st->ft[2*i-1]) + MULT16_16(st->ft[2*i],st->ft[2*i]);
- for (i=0;i<N;i++)
- st->ps[i] = PSHR32(st->ps[i], 2*st->frame_shift);
-
- filterbank_compute_bank32(st->bank, ps, ps+N);
-}
-
-static void update_noise_prob(SpeexPreprocessState *st)
-{
- int i;
- int min_range;
- int N = st->ps_size;
-
- for (i=1;i<N-1;i++)
- st->S[i] = MULT16_32_Q15(QCONST16(.8f,15),st->S[i]) + MULT16_32_Q15(QCONST16(.05f,15),st->ps[i-1])
- + MULT16_32_Q15(QCONST16(.1f,15),st->ps[i]) + MULT16_32_Q15(QCONST16(.05f,15),st->ps[i+1]);
- st->S[0] = MULT16_32_Q15(QCONST16(.8f,15),st->S[0]) + MULT16_32_Q15(QCONST16(.2f,15),st->ps[0]);
- st->S[N-1] = MULT16_32_Q15(QCONST16(.8f,15),st->S[N-1]) + MULT16_32_Q15(QCONST16(.2f,15),st->ps[N-1]);
-
- if (st->nb_adapt==1)
- {
- for (i=0;i<N;i++)
- st->Smin[i] = st->Stmp[i] = 0;
- }
-
- if (st->nb_adapt < 100)
- min_range = 15;
- else if (st->nb_adapt < 1000)
- min_range = 50;
- else if (st->nb_adapt < 10000)
- min_range = 150;
- else
- min_range = 300;
- if (st->min_count > min_range)
- {
- st->min_count = 0;
- for (i=0;i<N;i++)
- {
- st->Smin[i] = MIN32(st->Stmp[i], st->S[i]);
- st->Stmp[i] = st->S[i];
- }
- } else {
- for (i=0;i<N;i++)
- {
- st->Smin[i] = MIN32(st->Smin[i], st->S[i]);
- st->Stmp[i] = MIN32(st->Stmp[i], st->S[i]);
- }
- }
- for (i=0;i<N;i++)
- {
- if (MULT16_32_Q15(QCONST16(.4f,15),st->S[i]) > ADD32(st->Smin[i],EXTEND32(20)))
- st->update_prob[i] = 1;
- else
- st->update_prob[i] = 0;
- /*fprintf (stderr, "%f ", st->S[i]/st->Smin[i]);*/
- /*fprintf (stderr, "%f ", st->update_prob[i]);*/
- }
-
-}
-
-#define NOISE_OVERCOMPENS 1.
-
-void speex_echo_get_residual(SpeexEchoState *st, spx_word32_t *Yout, int len);
-
-int speex_preprocess(SpeexPreprocessState *st, spx_int16_t *x, spx_int32_t *echo)
-{
- return speex_preprocess_run(st, x);
-}
-
-int speex_preprocess_run(SpeexPreprocessState *st, spx_int16_t *x)
-{
- int i;
- int M;
- int N = st->ps_size;
- int N3 = 2*N - st->frame_size;
- int N4 = st->frame_size - N3;
- spx_word32_t *ps=st->ps;
- spx_word32_t Zframe;
- spx_word16_t Pframe;
- spx_word16_t beta, beta_1;
- spx_word16_t effective_echo_suppress;
-
- st->nb_adapt++;
- st->min_count++;
-
- beta = MAX16(QCONST16(.03,15),DIV32_16(Q15_ONE,st->nb_adapt));
- beta_1 = Q15_ONE-beta;
- M = st->nbands;
- /* Deal with residual echo if provided */
- if (st->echo_state)
- {
- speex_echo_get_residual(st->echo_state, st->residual_echo, N);
-#ifndef FIXED_POINT
- /* If there are NaNs or ridiculous values, it'll show up in the DC and we just reset everything to zero */
- if (!(st->residual_echo[0] >=0 && st->residual_echo[0]<N*1e9f))
- {
- for (i=0;i<N;i++)
- st->residual_echo[i] = 0;
- }
-#endif
- for (i=0;i<N;i++)
- st->echo_noise[i] = MAX32(MULT16_32_Q15(QCONST16(.6f,15),st->echo_noise[i]), st->residual_echo[i]);
- filterbank_compute_bank32(st->bank, st->echo_noise, st->echo_noise+N);
- } else {
- for (i=0;i<N+M;i++)
- st->echo_noise[i] = 0;
- }
- preprocess_analysis(st, x);
-
- update_noise_prob(st);
-
- /* Noise estimation always updated for the 10 first frames */
- /*if (st->nb_adapt<10)
- {
- for (i=1;i<N-1;i++)
- st->update_prob[i] = 0;
- }
- */
-
- /* Update the noise estimate for the frequencies where it can be */
- for (i=0;i<N;i++)
- {
- if (!st->update_prob[i] || st->ps[i] < PSHR32(st->noise[i], NOISE_SHIFT))
- st->noise[i] = MAX32(EXTEND32(0),MULT16_32_Q15(beta_1,st->noise[i]) + MULT16_32_Q15(beta,SHL32(st->ps[i],NOISE_SHIFT)));
- }
- filterbank_compute_bank32(st->bank, st->noise, st->noise+N);
-
- /* Special case for first frame */
- if (st->nb_adapt==1)
- for (i=0;i<N+M;i++)
- st->old_ps[i] = ps[i];
-
- /* Compute a posteriori SNR */
- for (i=0;i<N+M;i++)
- {
- spx_word16_t gamma;
-
- /* Total noise estimate including residual echo and reverberation */
- spx_word32_t tot_noise = ADD32(ADD32(ADD32(EXTEND32(1), PSHR32(st->noise[i],NOISE_SHIFT)) , st->echo_noise[i]) , st->reverb_estimate[i]);
-
- /* A posteriori SNR = ps/noise - 1*/
- st->post[i] = SUB16(DIV32_16_Q8(ps[i],tot_noise), QCONST16(1.f,SNR_SHIFT));
- st->post[i]=MIN16(st->post[i], QCONST16(100.f,SNR_SHIFT));
-
- /* Computing update gamma = .1 + .9*(old/(old+noise))^2 */
- gamma = QCONST16(.1f,15)+MULT16_16_Q15(QCONST16(.89f,15),SQR16_Q15(DIV32_16_Q15(st->old_ps[i],ADD32(st->old_ps[i],tot_noise))));
-
- /* A priori SNR update = gamma*max(0,post) + (1-gamma)*old/noise */
- st->prior[i] = EXTRACT16(PSHR32(ADD32(MULT16_16(gamma,MAX16(0,st->post[i])), MULT16_16(Q15_ONE-gamma,DIV32_16_Q8(st->old_ps[i],tot_noise))), 15));
- st->prior[i]=MIN16(st->prior[i], QCONST16(100.f,SNR_SHIFT));
- }
-
- /*print_vec(st->post, N+M, "");*/
-
- /* Recursive average of the a priori SNR. A bit smoothed for the psd components */
- st->zeta[0] = PSHR32(ADD32(MULT16_16(QCONST16(.7f,15),st->zeta[0]), MULT16_16(QCONST16(.3f,15),st->prior[0])),15);
- for (i=1;i<N-1;i++)
- st->zeta[i] = PSHR32(ADD32(ADD32(ADD32(MULT16_16(QCONST16(.7f,15),st->zeta[i]), MULT16_16(QCONST16(.15f,15),st->prior[i])),
- MULT16_16(QCONST16(.075f,15),st->prior[i-1])), MULT16_16(QCONST16(.075f,15),st->prior[i+1])),15);
- for (i=N-1;i<N+M;i++)
- st->zeta[i] = PSHR32(ADD32(MULT16_16(QCONST16(.7f,15),st->zeta[i]), MULT16_16(QCONST16(.3f,15),st->prior[i])),15);
-
- /* Speech probability of presence for the entire frame is based on the average filterbank a priori SNR */
- Zframe = 0;
- for (i=N;i<N+M;i++)
- Zframe = ADD32(Zframe, EXTEND32(st->zeta[i]));
- Pframe = QCONST16(.1f,15)+MULT16_16_Q15(QCONST16(.899f,15),qcurve(DIV32_16(Zframe,st->nbands)));
-
- effective_echo_suppress = EXTRACT16(PSHR32(ADD32(MULT16_16(SUB16(Q15_ONE,Pframe), st->echo_suppress), MULT16_16(Pframe, st->echo_suppress_active)),15));
-
- compute_gain_floor(st->noise_suppress, effective_echo_suppress, st->noise+N, st->echo_noise+N, st->gain_floor+N, M);
-
- /* Compute Ephraim & Malah gain speech probability of presence for each critical band (Bark scale)
- Technically this is actually wrong because the EM gaim assumes a slightly different probability
- distribution */
- for (i=N;i<N+M;i++)
- {
- /* See EM and Cohen papers*/
- spx_word32_t theta;
- /* Gain from hypergeometric function */
- spx_word32_t MM;
- /* Weiner filter gain */
- spx_word16_t prior_ratio;
- /* a priority probability of speech presence based on Bark sub-band alone */
- spx_word16_t P1;
- /* Speech absence a priori probability (considering sub-band and frame) */
- spx_word16_t q;
-#ifdef FIXED_POINT
- spx_word16_t tmp;
-#endif
-
- prior_ratio = PDIV32_16(SHL32(EXTEND32(st->prior[i]), 15), ADD16(st->prior[i], SHL32(1,SNR_SHIFT)));
- theta = MULT16_32_P15(prior_ratio, QCONST32(1.f,EXPIN_SHIFT)+SHL32(EXTEND32(st->post[i]),EXPIN_SHIFT-SNR_SHIFT));
-
- MM = hypergeom_gain(theta);
- /* Gain with bound */
- st->gain[i] = EXTRACT16(MIN32(Q15_ONE, MULT16_32_Q15(prior_ratio, MM)));
- /* Save old Bark power spectrum */
- st->old_ps[i] = MULT16_32_P15(QCONST16(.2f,15),st->old_ps[i]) + MULT16_32_P15(MULT16_16_P15(QCONST16(.8f,15),SQR16_Q15(st->gain[i])),ps[i]);
-
- P1 = QCONST16(.199f,15)+MULT16_16_Q15(QCONST16(.8f,15),qcurve (st->zeta[i]));
- q = Q15_ONE-MULT16_16_Q15(Pframe,P1);
-#ifdef FIXED_POINT
- theta = MIN32(theta, EXTEND32(32767));
-/*Q8*/tmp = MULT16_16_Q15((SHL32(1,SNR_SHIFT)+st->prior[i]),EXTRACT16(MIN32(Q15ONE,SHR32(spx_exp(-EXTRACT16(theta)),1))));
- tmp = MIN16(QCONST16(3.,SNR_SHIFT), tmp); /* Prevent overflows in the next line*/
-/*Q8*/tmp = EXTRACT16(PSHR32(MULT16_16(PDIV32_16(SHL32(EXTEND32(q),8),(Q15_ONE-q)),tmp),8));
- st->gain2[i]=DIV32_16(SHL32(EXTEND32(32767),SNR_SHIFT), ADD16(256,tmp));
-#else
- st->gain2[i]=1/(1.f + (q/(1.f-q))*(1+st->prior[i])*exp(-theta));
-#endif
- }
- /* Convert the EM gains and speech prob to linear frequency */
- filterbank_compute_psd16(st->bank,st->gain2+N, st->gain2);
- filterbank_compute_psd16(st->bank,st->gain+N, st->gain);
-
- /* Use 1 for linear gain resolution (best) or 0 for Bark gain resolution (faster) */
- if (1)
- {
- filterbank_compute_psd16(st->bank,st->gain_floor+N, st->gain_floor);
-
- /* Compute gain according to the Ephraim-Malah algorithm -- linear frequency */
- for (i=0;i<N;i++)
- {
- spx_word32_t MM;
- spx_word32_t theta;
- spx_word16_t prior_ratio;
- spx_word16_t tmp;
- spx_word16_t p;
- spx_word16_t g;
-
- /* Wiener filter gain */
- prior_ratio = PDIV32_16(SHL32(EXTEND32(st->prior[i]), 15), ADD16(st->prior[i], SHL32(1,SNR_SHIFT)));
- theta = MULT16_32_P15(prior_ratio, QCONST32(1.f,EXPIN_SHIFT)+SHL32(EXTEND32(st->post[i]),EXPIN_SHIFT-SNR_SHIFT));
-
- /* Optimal estimator for loudness domain */
- MM = hypergeom_gain(theta);
- /* EM gain with bound */
- g = EXTRACT16(MIN32(Q15_ONE, MULT16_32_Q15(prior_ratio, MM)));
- /* Interpolated speech probability of presence */
- p = st->gain2[i];
-
- /* Constrain the gain to be close to the Bark scale gain */
- if (MULT16_16_Q15(QCONST16(.333f,15),g) > st->gain[i])
- g = MULT16_16(3,st->gain[i]);
- st->gain[i] = g;
-
- /* Save old power spectrum */
- st->old_ps[i] = MULT16_32_P15(QCONST16(.2f,15),st->old_ps[i]) + MULT16_32_P15(MULT16_16_P15(QCONST16(.8f,15),SQR16_Q15(st->gain[i])),ps[i]);
-
- /* Apply gain floor */
- if (st->gain[i] < st->gain_floor[i])
- st->gain[i] = st->gain_floor[i];
-
- /* Exponential decay model for reverberation (unused) */
- /*st->reverb_estimate[i] = st->reverb_decay*st->reverb_estimate[i] + st->reverb_decay*st->reverb_level*st->gain[i]*st->gain[i]*st->ps[i];*/
-
- /* Take into account speech probability of presence (loudness domain MMSE estimator) */
- /* gain2 = [p*sqrt(gain)+(1-p)*sqrt(gain _floor) ]^2 */
- tmp = MULT16_16_P15(p,spx_sqrt(SHL32(EXTEND32(st->gain[i]),15))) + MULT16_16_P15(SUB16(Q15_ONE,p),spx_sqrt(SHL32(EXTEND32(st->gain_floor[i]),15)));
- st->gain2[i]=SQR16_Q15(tmp);
-
- /* Use this if you want a log-domain MMSE estimator instead */
- /*st->gain2[i] = pow(st->gain[i], p) * pow(st->gain_floor[i],1.f-p);*/
- }
- } else {
- for (i=N;i<N+M;i++)
- {
- spx_word16_t tmp;
- spx_word16_t p = st->gain2[i];
- st->gain[i] = MAX16(st->gain[i], st->gain_floor[i]);
- tmp = MULT16_16_P15(p,spx_sqrt(SHL32(EXTEND32(st->gain[i]),15))) + MULT16_16_P15(SUB16(Q15_ONE,p),spx_sqrt(SHL32(EXTEND32(st->gain_floor[i]),15)));
- st->gain2[i]=SQR16_Q15(tmp);
- }
- filterbank_compute_psd16(st->bank,st->gain2+N, st->gain2);
- }
-
- /* If noise suppression is off, don't apply the gain (but then why call this in the first place!) */
- if (!st->denoise_enabled)
- {
- for (i=0;i<N+M;i++)
- st->gain2[i]=Q15_ONE;
- }
-
- /* Apply computed gain */
- for (i=1;i<N;i++)
- {
- st->ft[2*i-1] = MULT16_16_P15(st->gain2[i],st->ft[2*i-1]);
- st->ft[2*i] = MULT16_16_P15(st->gain2[i],st->ft[2*i]);
- }
- st->ft[0] = MULT16_16_P15(st->gain2[0],st->ft[0]);
- st->ft[2*N-1] = MULT16_16_P15(st->gain2[N-1],st->ft[2*N-1]);
-
- /*FIXME: This *will* not work for fixed-point */
-#ifndef FIXED_POINT
- if (st->agc_enabled)
- speex_compute_agc(st, Pframe, st->ft);
-#endif
-
- /* Inverse FFT with 1/N scaling */
- spx_ifft(st->fft_lookup, st->ft, st->frame);
- /* Scale back to original (lower) amplitude */
- for (i=0;i<2*N;i++)
- st->frame[i] = PSHR16(st->frame[i], st->frame_shift);
-
- /*FIXME: This *will* not work for fixed-point */
-#ifndef FIXED_POINT
- if (st->agc_enabled)
- {
- float max_sample=0;
- for (i=0;i<2*N;i++)
- if (fabs(st->frame[i])>max_sample)
- max_sample = fabs(st->frame[i]);
- if (max_sample>28000.f)
- {
- float damp = 28000.f/max_sample;
- for (i=0;i<2*N;i++)
- st->frame[i] *= damp;
- }
- }
-#endif
-
- /* Synthesis window (for WOLA) */
- for (i=0;i<2*N;i++)
- st->frame[i] = MULT16_16_Q15(st->frame[i], st->window[i]);
-
- /* Perform overlap and add */
- for (i=0;i<N3;i++)
- x[i] = st->outbuf[i] + st->frame[i];
- for (i=0;i<N4;i++)
- x[N3+i] = st->frame[N3+i];
-
- /* Update outbuf */
- for (i=0;i<N3;i++)
- st->outbuf[i] = st->frame[st->frame_size+i];
-
- /* FIXME: This VAD is a kludge */
- if (st->vad_enabled)
- {
- if (Pframe > st->speech_prob_start || (st->was_speech && Pframe > st->speech_prob_continue))
- {
- st->was_speech=1;
- return 1;
- } else
- {
- st->was_speech=0;
- return 0;
- }
- } else {
- return 1;
- }
-}
-
-void speex_preprocess_estimate_update(SpeexPreprocessState *st, spx_int16_t *x)
-{
- int i;
- int N = st->ps_size;
- int N3 = 2*N - st->frame_size;
- int M;
- spx_word32_t *ps=st->ps;
-
- M = st->nbands;
- st->min_count++;
-
- preprocess_analysis(st, x);
-
- update_noise_prob(st);
-
- for (i=1;i<N-1;i++)
- {
- if (!st->update_prob[i] || st->ps[i] < PSHR32(st->noise[i],NOISE_SHIFT))
- {
- st->noise[i] = MULT16_32_Q15(QCONST16(.95f,15),st->noise[i]) + MULT16_32_Q15(QCONST16(.05f,15),SHL32(st->ps[i],NOISE_SHIFT));
- }
- }
-
- for (i=0;i<N3;i++)
- st->outbuf[i] = MULT16_16_Q15(x[st->frame_size-N3+i],st->window[st->frame_size+i]);
-
- /* Save old power spectrum */
- for (i=0;i<N+M;i++)
- st->old_ps[i] = ps[i];
-
- for (i=0;i<N;i++)
- st->reverb_estimate[i] = MULT16_32_Q15(st->reverb_decay, st->reverb_estimate[i]);
-}
-
-
-int speex_preprocess_ctl(SpeexPreprocessState *state, int request, void *ptr)
-{
- int i;
- SpeexPreprocessState *st;
- st=(SpeexPreprocessState*)state;
- switch(request)
- {
- case SPEEX_PREPROCESS_SET_DENOISE:
- st->denoise_enabled = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_PREPROCESS_GET_DENOISE:
- (*(spx_int32_t*)ptr) = st->denoise_enabled;
- break;
-#ifndef FIXED_POINT
- case SPEEX_PREPROCESS_SET_AGC:
- st->agc_enabled = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_PREPROCESS_GET_AGC:
- (*(spx_int32_t*)ptr) = st->agc_enabled;
- break;
-
- case SPEEX_PREPROCESS_SET_AGC_LEVEL:
- st->agc_level = (*(float*)ptr);
- if (st->agc_level<1)
- st->agc_level=1;
- if (st->agc_level>32768)
- st->agc_level=32768;
- break;
- case SPEEX_PREPROCESS_GET_AGC_LEVEL:
- (*(float*)ptr) = st->agc_level;
- break;
- case SPEEX_PREPROCESS_SET_AGC_INCREMENT:
- st->max_increase_step = exp(0.11513f * (*(spx_int32_t*)ptr)*st->frame_size / st->sampling_rate);
- break;
- case SPEEX_PREPROCESS_GET_AGC_INCREMENT:
- (*(spx_int32_t*)ptr) = floor(.5+8.6858*log(st->max_increase_step)*st->sampling_rate/st->frame_size);
- break;
- case SPEEX_PREPROCESS_SET_AGC_DECREMENT:
- st->max_decrease_step = exp(0.11513f * (*(spx_int32_t*)ptr)*st->frame_size / st->sampling_rate);
- break;
- case SPEEX_PREPROCESS_GET_AGC_DECREMENT:
- (*(spx_int32_t*)ptr) = floor(.5+8.6858*log(st->max_decrease_step)*st->sampling_rate/st->frame_size);
- break;
- case SPEEX_PREPROCESS_SET_AGC_MAX_GAIN:
- st->max_gain = exp(0.11513f * (*(spx_int32_t*)ptr));
- break;
- case SPEEX_PREPROCESS_GET_AGC_MAX_GAIN:
- (*(spx_int32_t*)ptr) = floor(.5+8.6858*log(st->max_gain));
- break;
-#endif
- case SPEEX_PREPROCESS_SET_VAD:
- speex_warning("The VAD has been replaced by a hack pending a complete rewrite");
- st->vad_enabled = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_PREPROCESS_GET_VAD:
- (*(spx_int32_t*)ptr) = st->vad_enabled;
- break;
-
- case SPEEX_PREPROCESS_SET_DEREVERB:
- st->dereverb_enabled = (*(spx_int32_t*)ptr);
- for (i=0;i<st->ps_size;i++)
- st->reverb_estimate[i]=0;
- break;
- case SPEEX_PREPROCESS_GET_DEREVERB:
- (*(spx_int32_t*)ptr) = st->dereverb_enabled;
- break;
-
- case SPEEX_PREPROCESS_SET_DEREVERB_LEVEL:
- st->reverb_level = (*(float*)ptr);
- break;
- case SPEEX_PREPROCESS_GET_DEREVERB_LEVEL:
- (*(float*)ptr) = st->reverb_level;
- break;
-
- case SPEEX_PREPROCESS_SET_DEREVERB_DECAY:
- st->reverb_decay = (*(float*)ptr);
- break;
- case SPEEX_PREPROCESS_GET_DEREVERB_DECAY:
- (*(float*)ptr) = st->reverb_decay;
- break;
-
- case SPEEX_PREPROCESS_SET_PROB_START:
- *(spx_int32_t*)ptr = MIN32(Q15_ONE,MAX32(0, *(spx_int32_t*)ptr));
- st->speech_prob_start = DIV32_16(MULT16_16(32767,*(spx_int32_t*)ptr), 100);
- break;
- case SPEEX_PREPROCESS_GET_PROB_START:
- (*(spx_int32_t*)ptr) = MULT16_16_Q15(st->speech_prob_start, 100);
- break;
-
- case SPEEX_PREPROCESS_SET_PROB_CONTINUE:
- *(spx_int32_t*)ptr = MIN32(Q15_ONE,MAX32(0, *(spx_int32_t*)ptr));
- st->speech_prob_continue = DIV32_16(MULT16_16(32767,*(spx_int32_t*)ptr), 100);
- break;
- case SPEEX_PREPROCESS_GET_PROB_CONTINUE:
- (*(spx_int32_t*)ptr) = MULT16_16_Q15(st->speech_prob_continue, 100);
- break;
-
- case SPEEX_PREPROCESS_SET_NOISE_SUPPRESS:
- st->noise_suppress = -ABS(*(spx_int32_t*)ptr);
- break;
- case SPEEX_PREPROCESS_GET_NOISE_SUPPRESS:
- (*(spx_int32_t*)ptr) = st->noise_suppress;
- break;
- case SPEEX_PREPROCESS_SET_ECHO_SUPPRESS:
- st->echo_suppress = -ABS(*(spx_int32_t*)ptr);
- break;
- case SPEEX_PREPROCESS_GET_ECHO_SUPPRESS:
- (*(spx_int32_t*)ptr) = st->echo_suppress;
- break;
- case SPEEX_PREPROCESS_SET_ECHO_SUPPRESS_ACTIVE:
- st->echo_suppress_active = -ABS(*(spx_int32_t*)ptr);
- break;
- case SPEEX_PREPROCESS_GET_ECHO_SUPPRESS_ACTIVE:
- (*(spx_int32_t*)ptr) = st->echo_suppress_active;
- break;
- case SPEEX_PREPROCESS_SET_ECHO_STATE:
- st->echo_state = (SpeexEchoState*)ptr;
- break;
- case SPEEX_PREPROCESS_GET_ECHO_STATE:
- ptr = (void*)st->echo_state;
- break;
-
- default:
- speex_warning_int("Unknown speex_preprocess_ctl request: ", request);
- return -1;
- }
- return 0;
-}
diff --git a/3rdparty/speex/libspeex/pseudofloat.h b/3rdparty/speex/libspeex/pseudofloat.h
deleted file mode 100644
index a6c47628..00000000
--- a/3rdparty/speex/libspeex/pseudofloat.h
+++ /dev/null
@@ -1,378 +0,0 @@
-/* Copyright (C) 2005 Jean-Marc Valin */
-/**
- @file pseudofloat.h
- @brief Pseudo-floating point
- * This header file provides a lightweight floating point type for
- * use on fixed-point platforms when a large dynamic range is
- * required. The new type is not compatible with the 32-bit IEEE format,
- * it is not even remotely as accurate as 32-bit floats, and is not
- * even guaranteed to produce even remotely correct results for code
- * other than Speex. It makes all kinds of shortcuts that are acceptable
- * for Speex, but may not be acceptable for your application. You're
- * quite welcome to reuse this code and improve it, but don't assume
- * it works out of the box. Most likely, it doesn't.
- */
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef PSEUDOFLOAT_H
-#define PSEUDOFLOAT_H
-
-#include "misc.h"
-#include "math_approx.h"
-#include <math.h>
-
-#ifdef FIXED_POINT
-
-typedef struct {
- spx_int16_t m;
- spx_int16_t e;
-} spx_float_t;
-
-static const spx_float_t FLOAT_ZERO = {0,0};
-static const spx_float_t FLOAT_ONE = {16384,-14};
-static const spx_float_t FLOAT_HALF = {16384,-15};
-
-#define MIN(a,b) ((a)<(b)?(a):(b))
-static inline spx_float_t PSEUDOFLOAT(spx_int32_t x)
-{
- int e=0;
- int sign=0;
- if (x<0)
- {
- sign = 1;
- x = -x;
- }
- if (x==0)
- {
- spx_float_t r = {0,0};
- return r;
- }
- e = spx_ilog2(ABS32(x))-14;
- x = VSHR32(x, e);
- if (sign)
- {
- spx_float_t r;
- r.m = -x;
- r.e = e;
- return r;
- }
- else
- {
- spx_float_t r;
- r.m = x;
- r.e = e;
- return r;
- }
-}
-
-
-static inline spx_float_t FLOAT_ADD(spx_float_t a, spx_float_t b)
-{
- spx_float_t r;
- if (a.m==0)
- return b;
- else if (b.m==0)
- return a;
- if ((a).e > (b).e)
- {
- r.m = ((a).m>>1) + ((b).m>>MIN(15,(a).e-(b).e+1));
- r.e = (a).e+1;
- }
- else
- {
- r.m = ((b).m>>1) + ((a).m>>MIN(15,(b).e-(a).e+1));
- r.e = (b).e+1;
- }
- if (r.m>0)
- {
- if (r.m<16384)
- {
- r.m<<=1;
- r.e-=1;
- }
- } else {
- if (r.m>-16384)
- {
- r.m<<=1;
- r.e-=1;
- }
- }
- /*printf ("%f + %f = %f\n", REALFLOAT(a), REALFLOAT(b), REALFLOAT(r));*/
- return r;
-}
-
-static inline spx_float_t FLOAT_SUB(spx_float_t a, spx_float_t b)
-{
- spx_float_t r;
- if (a.m==0)
- return b;
- else if (b.m==0)
- return a;
- if ((a).e > (b).e)
- {
- r.m = ((a).m>>1) - ((b).m>>MIN(15,(a).e-(b).e+1));
- r.e = (a).e+1;
- }
- else
- {
- r.m = ((a).m>>MIN(15,(b).e-(a).e+1)) - ((b).m>>1);
- r.e = (b).e+1;
- }
- if (r.m>0)
- {
- if (r.m<16384)
- {
- r.m<<=1;
- r.e-=1;
- }
- } else {
- if (r.m>-16384)
- {
- r.m<<=1;
- r.e-=1;
- }
- }
- /*printf ("%f + %f = %f\n", REALFLOAT(a), REALFLOAT(b), REALFLOAT(r));*/
- return r;
-}
-
-static inline int FLOAT_LT(spx_float_t a, spx_float_t b)
-{
- if (a.m==0)
- return b.m>0;
- else if (b.m==0)
- return a.m<0;
- if ((a).e > (b).e)
- return ((a).m>>1) < ((b).m>>MIN(15,(a).e-(b).e+1));
- else
- return ((b).m>>1) > ((a).m>>MIN(15,(b).e-(a).e+1));
-
-}
-
-static inline int FLOAT_GT(spx_float_t a, spx_float_t b)
-{
- return FLOAT_LT(b,a);
-}
-
-static inline spx_float_t FLOAT_MULT(spx_float_t a, spx_float_t b)
-{
- spx_float_t r;
- r.m = (spx_int16_t)((spx_int32_t)(a).m*(b).m>>15);
- r.e = (a).e+(b).e+15;
- if (r.m>0)
- {
- if (r.m<16384)
- {
- r.m<<=1;
- r.e-=1;
- }
- } else {
- if (r.m>-16384)
- {
- r.m<<=1;
- r.e-=1;
- }
- }
- /*printf ("%f * %f = %f\n", REALFLOAT(a), REALFLOAT(b), REALFLOAT(r));*/
- return r;
-}
-
-static inline spx_float_t FLOAT_AMULT(spx_float_t a, spx_float_t b)
-{
- spx_float_t r;
- r.m = (spx_int16_t)((spx_int32_t)(a).m*(b).m>>15);
- r.e = (a).e+(b).e+15;
- return r;
-}
-
-
-static inline spx_float_t FLOAT_SHL(spx_float_t a, int b)
-{
- spx_float_t r;
- r.m = a.m;
- r.e = a.e+b;
- return r;
-}
-
-static inline spx_int16_t FLOAT_EXTRACT16(spx_float_t a)
-{
- if (a.e<0)
- return EXTRACT16((EXTEND32(a.m)+(EXTEND32(1)<<(-a.e-1)))>>-a.e);
- else
- return a.m<<a.e;
-}
-
-static inline spx_int32_t FLOAT_EXTRACT32(spx_float_t a)
-{
- if (a.e<0)
- return (EXTEND32(a.m)+(EXTEND32(1)<<(-a.e-1)))>>-a.e;
- else
- return EXTEND32(a.m)<<a.e;
-}
-
-static inline spx_int32_t FLOAT_MUL32(spx_float_t a, spx_word32_t b)
-{
- return VSHR32(MULT16_32_Q15(a.m, b),-a.e-15);
-}
-
-static inline spx_float_t FLOAT_MUL32U(spx_word32_t a, spx_word32_t b)
-{
- int e1, e2;
- spx_float_t r;
- if (a==0 || b==0)
- {
- return FLOAT_ZERO;
- }
- e1 = spx_ilog2(ABS32(a));
- a = VSHR32(a, e1-14);
- e2 = spx_ilog2(ABS32(b));
- b = VSHR32(b, e2-14);
- r.m = MULT16_16_Q15(a,b);
- r.e = e1+e2-13;
- return r;
-}
-
-/* Do NOT attempt to divide by a negative number */
-static inline spx_float_t FLOAT_DIV32_FLOAT(spx_word32_t a, spx_float_t b)
-{
- int e=0;
- spx_float_t r;
- if (a==0)
- {
- return FLOAT_ZERO;
- }
- e = spx_ilog2(ABS32(a))-spx_ilog2(b.m-1)-15;
- a = VSHR32(a, e);
- if (ABS32(a)>=SHL32(EXTEND32(b.m-1),15))
- {
- a >>= 1;
- e++;
- }
- r.m = DIV32_16(a,b.m);
- r.e = e-b.e;
- return r;
-}
-
-
-/* Do NOT attempt to divide by a negative number */
-static inline spx_float_t FLOAT_DIV32(spx_word32_t a, spx_word32_t b)
-{
- int e0=0,e=0;
- spx_float_t r;
- if (a==0)
- {
- return FLOAT_ZERO;
- }
- if (b>32767)
- {
- e0 = spx_ilog2(b)-14;
- b = VSHR32(b, e0);
- e0 = -e0;
- }
- e = spx_ilog2(ABS32(a))-spx_ilog2(b-1)-15;
- a = VSHR32(a, e);
- if (ABS32(a)>=SHL32(EXTEND32(b-1),15))
- {
- a >>= 1;
- e++;
- }
- e += e0;
- r.m = DIV32_16(a,b);
- r.e = e;
- return r;
-}
-
-/* Do NOT attempt to divide by a negative number */
-static inline spx_float_t FLOAT_DIVU(spx_float_t a, spx_float_t b)
-{
- int e=0;
- spx_int32_t num;
- spx_float_t r;
- if (b.m<=0)
- {
- speex_warning_int("Attempted to divide by", b.m);
- return FLOAT_ONE;
- }
- num = a.m;
- a.m = ABS16(a.m);
- while (a.m >= b.m)
- {
- e++;
- a.m >>= 1;
- }
- num = num << (15-e);
- r.m = DIV32_16(num,b.m);
- r.e = a.e-b.e-15+e;
- return r;
-}
-
-static inline spx_float_t FLOAT_SQRT(spx_float_t a)
-{
- spx_float_t r;
- spx_int32_t m;
- m = SHL32(EXTEND32(a.m), 14);
- r.e = a.e - 14;
- if (r.e & 1)
- {
- r.e -= 1;
- m <<= 1;
- }
- r.e >>= 1;
- r.m = spx_sqrt(m);
- return r;
-}
-
-#else
-
-#define spx_float_t float
-#define FLOAT_ZERO 0.f
-#define FLOAT_ONE 1.f
-#define FLOAT_HALF 0.5f
-#define PSEUDOFLOAT(x) (x)
-#define FLOAT_MULT(a,b) ((a)*(b))
-#define FLOAT_AMULT(a,b) ((a)*(b))
-#define FLOAT_MUL32(a,b) ((a)*(b))
-#define FLOAT_DIV32(a,b) ((a)/(b))
-#define FLOAT_EXTRACT16(a) (a)
-#define FLOAT_EXTRACT32(a) (a)
-#define FLOAT_ADD(a,b) ((a)+(b))
-#define FLOAT_SUB(a,b) ((a)-(b))
-#define REALFLOAT(x) (x)
-#define FLOAT_DIV32_FLOAT(a,b) ((a)/(b))
-#define FLOAT_MUL32U(a,b) ((a)*(b))
-#define FLOAT_SHL(a,b) (a)
-#define FLOAT_LT(a,b) ((a)<(b))
-#define FLOAT_GT(a,b) ((a)>(b))
-#define FLOAT_DIVU(a,b) ((a)/(b))
-#define FLOAT_SQRT(a) (spx_sqrt(a))
-
-#endif
-
-#endif
diff --git a/3rdparty/speex/libspeex/quant_lsp.c b/3rdparty/speex/libspeex/quant_lsp.c
deleted file mode 100644
index d907b98e..00000000
--- a/3rdparty/speex/libspeex/quant_lsp.c
+++ /dev/null
@@ -1,447 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: quant_lsp.c
- LSP vector quantization
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "quant_lsp.h"
-#include <math.h>
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-#include "misc.h"
-
-#ifdef BFIN_ASM
-#include "quant_lsp_bfin.h"
-#endif
-
-#ifdef FIXED_POINT
-
-#define LSP_LINEAR(i) (SHL16(i+1,11))
-#define LSP_LINEAR_HIGH(i) (ADD16(MULT16_16_16(i,2560),6144))
-#define LSP_DIV_256(x) (SHL16((spx_word16_t)x, 5))
-#define LSP_DIV_512(x) (SHL16((spx_word16_t)x, 4))
-#define LSP_DIV_1024(x) (SHL16((spx_word16_t)x, 3))
-#define LSP_PI 25736
-
-#else
-
-#define LSP_LINEAR(i) (.25*(i)+.25)
-#define LSP_LINEAR_HIGH(i) (.3125*(i)+.75)
-#define LSP_SCALE 256.
-#define LSP_DIV_256(x) (0.0039062*(x))
-#define LSP_DIV_512(x) (0.0019531*(x))
-#define LSP_DIV_1024(x) (0.00097656*(x))
-#define LSP_PI M_PI
-
-#endif
-
-static void compute_quant_weights(spx_lsp_t *qlsp, spx_word16_t *quant_weight, int order)
-{
- int i;
- spx_word16_t tmp1, tmp2;
- for (i=0;i<order;i++)
- {
- if (i==0)
- tmp1 = qlsp[i];
- else
- tmp1 = qlsp[i]-qlsp[i-1];
- if (i==order-1)
- tmp2 = LSP_PI-qlsp[i];
- else
- tmp2 = qlsp[i+1]-qlsp[i];
- if (tmp2<tmp1)
- tmp1 = tmp2;
-#ifdef FIXED_POINT
- quant_weight[i] = DIV32_16(81920,ADD16(300,tmp1));
-#else
- quant_weight[i] = 10/(.04+tmp1);
-#endif
- }
-
-}
-
-/* Note: x is modified*/
-#ifndef OVERRIDE_LSP_QUANT
-static int lsp_quant(spx_word16_t *x, const signed char *cdbk, int nbVec, int nbDim)
-{
- int i,j;
- spx_word32_t dist;
- spx_word16_t tmp;
- spx_word32_t best_dist=VERY_LARGE32;
- int best_id=0;
- const signed char *ptr=cdbk;
- for (i=0;i<nbVec;i++)
- {
- dist=0;
- for (j=0;j<nbDim;j++)
- {
- tmp=SUB16(x[j],SHL16((spx_word16_t)*ptr++,5));
- dist=MAC16_16(dist,tmp,tmp);
- }
- if (dist<best_dist)
- {
- best_dist=dist;
- best_id=i;
- }
- }
-
- for (j=0;j<nbDim;j++)
- x[j] = SUB16(x[j],SHL16((spx_word16_t)cdbk[best_id*nbDim+j],5));
-
- return best_id;
-}
-#endif
-
-/* Note: x is modified*/
-#ifndef OVERRIDE_LSP_WEIGHT_QUANT
-static int lsp_weight_quant(spx_word16_t *x, spx_word16_t *weight, const signed char *cdbk, int nbVec, int nbDim)
-{
- int i,j;
- spx_word32_t dist;
- spx_word16_t tmp;
- spx_word32_t best_dist=VERY_LARGE32;
- int best_id=0;
- const signed char *ptr=cdbk;
- for (i=0;i<nbVec;i++)
- {
- dist=0;
- for (j=0;j<nbDim;j++)
- {
- tmp=SUB16(x[j],SHL16((spx_word16_t)*ptr++,5));
- dist=MAC16_32_Q15(dist,weight[j],MULT16_16(tmp,tmp));
- }
- if (dist<best_dist)
- {
- best_dist=dist;
- best_id=i;
- }
- }
-
- for (j=0;j<nbDim;j++)
- x[j] = SUB16(x[j],SHL16((spx_word16_t)cdbk[best_id*nbDim+j],5));
- return best_id;
-}
-#endif
-
-void lsp_quant_nb(spx_lsp_t *lsp, spx_lsp_t *qlsp, int order, SpeexBits *bits)
-{
- int i;
- int id;
- spx_word16_t quant_weight[10];
-
- for (i=0;i<order;i++)
- qlsp[i]=lsp[i];
-
- compute_quant_weights(qlsp, quant_weight, order);
-
- for (i=0;i<order;i++)
- qlsp[i]=SUB16(qlsp[i],LSP_LINEAR(i));
-
-#ifndef FIXED_POINT
- for (i=0;i<order;i++)
- qlsp[i] = LSP_SCALE*qlsp[i];
-#endif
- id = lsp_quant(qlsp, cdbk_nb, NB_CDBK_SIZE, order);
- speex_bits_pack(bits, id, 6);
-
- for (i=0;i<order;i++)
- qlsp[i]*=2;
-
- id = lsp_weight_quant(qlsp, quant_weight, cdbk_nb_low1, NB_CDBK_SIZE_LOW1, 5);
- speex_bits_pack(bits, id, 6);
-
- for (i=0;i<5;i++)
- qlsp[i]*=2;
-
- id = lsp_weight_quant(qlsp, quant_weight, cdbk_nb_low2, NB_CDBK_SIZE_LOW2, 5);
- speex_bits_pack(bits, id, 6);
-
- id = lsp_weight_quant(qlsp+5, quant_weight+5, cdbk_nb_high1, NB_CDBK_SIZE_HIGH1, 5);
- speex_bits_pack(bits, id, 6);
-
- for (i=5;i<10;i++)
- qlsp[i]*=2;
-
- id = lsp_weight_quant(qlsp+5, quant_weight+5, cdbk_nb_high2, NB_CDBK_SIZE_HIGH2, 5);
- speex_bits_pack(bits, id, 6);
-
-#ifdef FIXED_POINT
- for (i=0;i<order;i++)
- qlsp[i]=PSHR16(qlsp[i],2);
-#else
- for (i=0;i<order;i++)
- qlsp[i]=qlsp[i] * .00097656;
-#endif
-
- for (i=0;i<order;i++)
- qlsp[i]=lsp[i]-qlsp[i];
-}
-
-void lsp_unquant_nb(spx_lsp_t *lsp, int order, SpeexBits *bits)
-{
- int i, id;
- for (i=0;i<order;i++)
- lsp[i]=LSP_LINEAR(i);
-
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<10;i++)
- lsp[i] = ADD32(lsp[i], LSP_DIV_256(cdbk_nb[id*10+i]));
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<5;i++)
- lsp[i] = ADD16(lsp[i], LSP_DIV_512(cdbk_nb_low1[id*5+i]));
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<5;i++)
- lsp[i] = ADD32(lsp[i], LSP_DIV_1024(cdbk_nb_low2[id*5+i]));
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<5;i++)
- lsp[i+5] = ADD32(lsp[i+5], LSP_DIV_512(cdbk_nb_high1[id*5+i]));
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<5;i++)
- lsp[i+5] = ADD32(lsp[i+5], LSP_DIV_1024(cdbk_nb_high2[id*5+i]));
-}
-
-
-void lsp_quant_lbr(spx_lsp_t *lsp, spx_lsp_t *qlsp, int order, SpeexBits *bits)
-{
- int i;
- int id;
- spx_word16_t quant_weight[10];
-
- for (i=0;i<order;i++)
- qlsp[i]=lsp[i];
-
- compute_quant_weights(qlsp, quant_weight, order);
-
- for (i=0;i<order;i++)
- qlsp[i]=SUB16(qlsp[i],LSP_LINEAR(i));
-#ifndef FIXED_POINT
- for (i=0;i<order;i++)
- qlsp[i]=qlsp[i]*LSP_SCALE;
-#endif
- id = lsp_quant(qlsp, cdbk_nb, NB_CDBK_SIZE, order);
- speex_bits_pack(bits, id, 6);
-
- for (i=0;i<order;i++)
- qlsp[i]*=2;
-
- id = lsp_weight_quant(qlsp, quant_weight, cdbk_nb_low1, NB_CDBK_SIZE_LOW1, 5);
- speex_bits_pack(bits, id, 6);
-
- id = lsp_weight_quant(qlsp+5, quant_weight+5, cdbk_nb_high1, NB_CDBK_SIZE_HIGH1, 5);
- speex_bits_pack(bits, id, 6);
-
-#ifdef FIXED_POINT
- for (i=0;i<order;i++)
- qlsp[i] = PSHR16(qlsp[i],1);
-#else
- for (i=0;i<order;i++)
- qlsp[i] = qlsp[i]*0.0019531;
-#endif
-
- for (i=0;i<order;i++)
- qlsp[i]=lsp[i]-qlsp[i];
-}
-
-void lsp_unquant_lbr(spx_lsp_t *lsp, int order, SpeexBits *bits)
-{
- int i, id;
- for (i=0;i<order;i++)
- lsp[i]=LSP_LINEAR(i);
-
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<10;i++)
- lsp[i] += LSP_DIV_256(cdbk_nb[id*10+i]);
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<5;i++)
- lsp[i] += LSP_DIV_512(cdbk_nb_low1[id*5+i]);
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<5;i++)
- lsp[i+5] += LSP_DIV_512(cdbk_nb_high1[id*5+i]);
-
-}
-
-
-#ifdef DISABLE_WIDEBAND
-void lsp_quant_high(spx_lsp_t *lsp, spx_lsp_t *qlsp, int order, SpeexBits *bits)
-{
- speex_error("Wideband and Ultra-wideband are disabled");
-}
-void lsp_unquant_high(spx_lsp_t *lsp, int order, SpeexBits *bits)
-{
- speex_error("Wideband and Ultra-wideband are disabled");
-}
-#else
-extern const signed char high_lsp_cdbk[];
-extern const signed char high_lsp_cdbk2[];
-
-
-void lsp_quant_high(spx_lsp_t *lsp, spx_lsp_t *qlsp, int order, SpeexBits *bits)
-{
- int i;
- int id;
- spx_word16_t quant_weight[10];
-
- for (i=0;i<order;i++)
- qlsp[i]=lsp[i];
-
- compute_quant_weights(qlsp, quant_weight, order);
-
- /* quant_weight[0] = 10/(qlsp[1]-qlsp[0]);
- quant_weight[order-1] = 10/(qlsp[order-1]-qlsp[order-2]);
- for (i=1;i<order-1;i++)
- {
- tmp1 = 10/(qlsp[i]-qlsp[i-1]);
- tmp2 = 10/(qlsp[i+1]-qlsp[i]);
- quant_weight[i] = tmp1 > tmp2 ? tmp1 : tmp2;
- }*/
-
- for (i=0;i<order;i++)
- qlsp[i]=SUB16(qlsp[i],LSP_LINEAR_HIGH(i));
-#ifndef FIXED_POINT
- for (i=0;i<order;i++)
- qlsp[i] = qlsp[i]*LSP_SCALE;
-#endif
- id = lsp_quant(qlsp, high_lsp_cdbk, 64, order);
- speex_bits_pack(bits, id, 6);
-
- for (i=0;i<order;i++)
- qlsp[i]*=2;
-
- id = lsp_weight_quant(qlsp, quant_weight, high_lsp_cdbk2, 64, order);
- speex_bits_pack(bits, id, 6);
-
-#ifdef FIXED_POINT
- for (i=0;i<order;i++)
- qlsp[i] = PSHR16(qlsp[i],1);
-#else
- for (i=0;i<order;i++)
- qlsp[i] = qlsp[i]*0.0019531;
-#endif
-
- for (i=0;i<order;i++)
- qlsp[i]=lsp[i]-qlsp[i];
-}
-
-void lsp_unquant_high(spx_lsp_t *lsp, int order, SpeexBits *bits)
-{
-
- int i, id;
- for (i=0;i<order;i++)
- lsp[i]=LSP_LINEAR_HIGH(i);
-
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<order;i++)
- lsp[i] += LSP_DIV_256(high_lsp_cdbk[id*order+i]);
-
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<order;i++)
- lsp[i] += LSP_DIV_512(high_lsp_cdbk2[id*order+i]);
-}
-
-#endif
-
-
-#ifdef EPIC_48K
-
-extern const signed char cdbk_lsp_vlbr[5120];
-extern const signed char cdbk_lsp2_vlbr[160];
-
-void lsp_quant_48k(spx_lsp_t *lsp, spx_lsp_t *qlsp, int order, SpeexBits *bits)
-{
- int i;
- int id;
- spx_word16_t quant_weight[10];
-
- for (i=0;i<order;i++)
- qlsp[i]=lsp[i];
-
- compute_quant_weights(qlsp, quant_weight, order);
-
- for (i=0;i<order;i++)
- qlsp[i]=SUB16(qlsp[i],LSP_SCALING*(.25*i+.3125));
-#ifndef FIXED_POINT
- for (i=0;i<order;i++)
- qlsp[i] = qlsp[i]*LSP_SCALE;
-#endif
-
- id = lsp_quant(qlsp, cdbk_lsp_vlbr, 512, order);
- speex_bits_pack(bits, id, 9);
-
- for (i=0;i<order;i++)
- qlsp[i]*=4;
-
- id = lsp_weight_quant(qlsp, quant_weight, cdbk_lsp2_vlbr, 16, 10);
- speex_bits_pack(bits, id, 4);
-
-#ifdef FIXED_POINT
- for (i=0;i<order;i++)
- qlsp[i]=PSHR16(qlsp[i],2);
-#else
- for (i=0;i<order;i++)
- qlsp[i]=qlsp[i]*0.00097655;
-#endif
-
- for (i=0;i<order;i++)
- qlsp[i]=lsp[i]-qlsp[i];
-}
-
-void lsp_unquant_48k(spx_lsp_t *lsp, int order, SpeexBits *bits)
-{
- int i, id;
- for (i=0;i<order;i++)
- lsp[i]=LSP_SCALING*(.25*i+.3125);
-
-
- id=speex_bits_unpack_unsigned(bits, 9);
- for (i=0;i<10;i++)
- lsp[i] += LSP_SCALING*0.0039062*cdbk_lsp_vlbr[id*10+i];
-
- id=speex_bits_unpack_unsigned(bits, 4);
- for (i=0;i<10;i++)
- lsp[i] += LSP_SCALING*0.00097655*cdbk_lsp2_vlbr[id*10+i];
-
-}
-
-#endif
diff --git a/3rdparty/speex/libspeex/quant_lsp.h b/3rdparty/speex/libspeex/quant_lsp.h
deleted file mode 100644
index c6d5bb36..00000000
--- a/3rdparty/speex/libspeex/quant_lsp.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin */
-/**
- @file quant_lsp.h
- @brief LSP vector quantization
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef QUANT_LSP_H
-#define QUANT_LSP_H
-
-#include <speex/speex_bits.h>
-#include "misc.h"
-
-#define MAX_LSP_SIZE 20
-
-#define NB_CDBK_SIZE 64
-#define NB_CDBK_SIZE_LOW1 64
-#define NB_CDBK_SIZE_LOW2 64
-#define NB_CDBK_SIZE_HIGH1 64
-#define NB_CDBK_SIZE_HIGH2 64
-
-/*Narrowband codebooks*/
-extern const signed char cdbk_nb[];
-extern const signed char cdbk_nb_low1[];
-extern const signed char cdbk_nb_low2[];
-extern const signed char cdbk_nb_high1[];
-extern const signed char cdbk_nb_high2[];
-
-/* Quantizes narrowband LSPs with 30 bits */
-void lsp_quant_nb(spx_lsp_t *lsp, spx_lsp_t *qlsp, int order, SpeexBits *bits);
-
-/* Decodes quantized narrowband LSPs */
-void lsp_unquant_nb(spx_lsp_t *lsp, int order, SpeexBits *bits);
-
-/* Quantizes low bit-rate narrowband LSPs with 18 bits */
-void lsp_quant_lbr(spx_lsp_t *lsp, spx_lsp_t *qlsp, int order, SpeexBits *bits);
-
-/* Decodes quantized low bit-rate narrowband LSPs */
-void lsp_unquant_lbr(spx_lsp_t *lsp, int order, SpeexBits *bits);
-
-/* Quantizes high-band LSPs with 12 bits */
-void lsp_quant_high(spx_lsp_t *lsp, spx_lsp_t *qlsp, int order, SpeexBits *bits);
-
-/* Decodes high-band LSPs */
-void lsp_unquant_high(spx_lsp_t *lsp, int order, SpeexBits *bits);
-
-#ifdef EPIC_48K
-/* Quantizes narrowband LSPs with 14 bits */
-void lsp_quant_48k(spx_lsp_t *lsp, spx_lsp_t *qlsp, int order, SpeexBits *bits);
-
-/* Decodes quantized narrowband LSPs (14 bits) */
-void lsp_unquant_48k(spx_lsp_t *lsp, int order, SpeexBits *bits);
-#endif
-
-
-#endif
diff --git a/3rdparty/speex/libspeex/quant_lsp_bfin.h b/3rdparty/speex/libspeex/quant_lsp_bfin.h
deleted file mode 100644
index c884078e..00000000
--- a/3rdparty/speex/libspeex/quant_lsp_bfin.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/* Copyright (C) 2006 David Rowe */
-/**
- @file quant_lsp_bfin.h
- @author David Rowe
- @brief Various compatibility routines for Speex (Blackfin version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#define OVERRIDE_LSP_QUANT
-#ifdef OVERRIDE_LSP_QUANT
-
-/*
- Note http://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html
- well tell you all the magic resgister constraints used below
- for gcc in-line asm.
-*/
-
-static int lsp_quant(
- spx_word16_t *x,
- const signed char *cdbk,
- int nbVec,
- int nbDim
-)
-{
- int j;
- spx_word32_t best_dist=1<<30;
- int best_id=0;
-
- __asm__ __volatile__
- (
-" %0 = 1 (X);\n\t" /* %0: best_dist */
-" %0 <<= 30;\n\t"
-" %1 = 0 (X);\n\t" /* %1: best_i */
-" P2 = %3\n\t" /* P2: ptr to cdbk */
-" R5 = 0;\n\t" /* R5: best cb entry */
-
-" R0 = %5;\n\t" /* set up circ addr */
-" R0 <<= 1;\n\t"
-" L0 = R0;\n\t"
-" I0 = %2;\n\t" /* %2: &x[0] */
-" B0 = %2;\n\t"
-
-" R2.L = W [I0++];\n\t"
-" LSETUP (lq1, lq2) LC0 = %4;\n\t"
-"lq1: R3 = 0;\n\t" /* R3: dist */
-" LSETUP (lq3, lq4) LC1 = %5;\n\t"
-"lq3: R1 = B [P2++] (X);\n\t"
-" R1 <<= 5;\n\t"
-" R0.L = R2.L - R1.L || R2.L = W [I0++];\n\t"
-" R0 = R0.L*R0.L;\n\t"
-"lq4: R3 = R3 + R0;\n\t"
-
-" cc =R3<%0;\n\t"
-" if cc %0=R3;\n\t"
-" if cc %1=R5;\n\t"
-"lq2: R5 += 1;\n\t"
-" L0 = 0;\n\t"
- : "=&d" (best_dist), "=&d" (best_id)
- : "a" (x), "b" (cdbk), "a" (nbVec), "a" (nbDim)
- : "I0", "P2", "R0", "R1", "R2", "R3", "R5", "L0", "B0", "A0"
- );
-
- for (j=0;j<nbDim;j++) {
- x[j] = SUB16(x[j],SHL16((spx_word16_t)cdbk[best_id*nbDim+j],5));
- }
- return best_id;
-}
-#endif
-
-#define OVERRIDE_LSP_WEIGHT_QUANT
-#ifdef OVERRIDE_LSP_WEIGHT_QUANT
-
-/*
- Note http://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html
- well tell you all the magic resgister constraints used below
- for gcc in-line asm.
-*/
-
-static int lsp_weight_quant(
- spx_word16_t *x,
- spx_word16_t *weight,
- const signed char *cdbk,
- int nbVec,
- int nbDim
-)
-{
- int j;
- spx_word32_t best_dist=1<<30;
- int best_id=0;
-
- __asm__ __volatile__
- (
-" %0 = 1 (X);\n\t" /* %0: best_dist */
-" %0 <<= 30;\n\t"
-" %1 = 0 (X);\n\t" /* %1: best_i */
-" P2 = %4\n\t" /* P2: ptr to cdbk */
-" R5 = 0;\n\t" /* R5: best cb entry */
-
-" R0 = %6;\n\t" /* set up circ addr */
-" R0 <<= 1;\n\t"
-" L0 = R0;\n\t"
-" L1 = R0;\n\t"
-" I0 = %2;\n\t" /* %2: &x[0] */
-" I1 = %3;\n\t" /* %3: &weight[0] */
-" B0 = %2;\n\t"
-" B1 = %3;\n\t"
-
-" LSETUP (lwq1, lwq2) LC0 = %5;\n\t"
-"lwq1: R3 = 0 (X);\n\t" /* R3: dist */
-" LSETUP (lwq3, lwq4) LC1 = %6;\n\t"
-"lwq3: R0.L = W [I0++] || R2.L = W [I1++];\n\t"
-" R1 = B [P2++] (X);\n\t"
-" R1 <<= 5;\n\t"
-" R0.L = R0.L - R1.L;\n\t"
-" R0 = R0.L*R0.L;\n\t"
-" A1 = R2.L*R0.L (M,IS);\n\t"
-" A1 = A1 >>> 16;\n\t"
-" R1 = (A1 += R2.L*R0.H) (IS);\n\t"
-"lwq4: R3 = R3 + R1;\n\t"
-
-" cc =R3<%0;\n\t"
-" if cc %0=R3;\n\t"
-" if cc %1=R5;\n\t"
-"lwq2: R5 += 1;\n\t"
-" L0 = 0;\n\t"
-" L1 = 0;\n\t"
- : "=&d" (best_dist), "=&d" (best_id)
- : "a" (x), "a" (weight), "b" (cdbk), "a" (nbVec), "a" (nbDim)
- : "I0", "I1", "P2", "R0", "R1", "R2", "R3", "R5", "A1",
- "L0", "L1", "B0", "B1"
- );
-
- for (j=0;j<nbDim;j++) {
- x[j] = SUB16(x[j],SHL16((spx_word16_t)cdbk[best_id*nbDim+j],5));
- }
- return best_id;
-}
-#endif
diff --git a/3rdparty/speex/libspeex/resample.c b/3rdparty/speex/libspeex/resample.c
deleted file mode 100644
index 45fac605..00000000
--- a/3rdparty/speex/libspeex/resample.c
+++ /dev/null
@@ -1,1014 +0,0 @@
-/* Copyright (C) 2007 Jean-Marc Valin
-
- File: resample.c
- Arbitrary resampling code
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- The design goals of this code are:
- - Very fast algorithm
- - SIMD-friendly algorithm
- - Low memory requirement
- - Good *perceptual* quality (and not best SNR)
-
- The code is working, but it's in a very early stage, so it may have
- artifacts, noise or subliminal messages from satan. Also, the API
- isn't stable and I can actually promise that I *will* change the API
- some time in the future.
-
-TODO list:
- - Variable calculation resolution depending on quality setting
- - Single vs double in float mode
- - 16-bit vs 32-bit (sinc only) in fixed-point mode
- - Make sure the filter update works even when changing params
- after only a few samples procesed
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#ifdef OUTSIDE_SPEEX
-#include <stdlib.h>
-void *speex_alloc (int size) {return calloc(size,1);}
-void *speex_realloc (void *ptr, int size) {return realloc(ptr, size);}
-void speex_free (void *ptr) {free(ptr);}
-#include "speex_resampler.h"
-#include "arch.h"
-#else /* OUTSIDE_SPEEX */
-
-#include "speex/speex_resampler.h"
-#include "misc.h"
-#endif /* OUTSIDE_SPEEX */
-
-#include <math.h>
-
-#ifndef M_PI
-#define M_PI 3.14159263
-#endif
-
-#ifdef FIXED_POINT
-#define WORD2INT(x) ((x) < -32767 ? -32768 : ((x) > 32766 ? 32767 : (x)))
-#else
-#define WORD2INT(x) ((x) < -32767.5f ? -32768 : ((x) > 32766.5f ? 32767 : floor(.5+(x))))
-#endif
-
-/*#define float double*/
-#define FILTER_SIZE 64
-#define OVERSAMPLE 8
-
-#define IMAX(a,b) ((a) > (b) ? (a) : (b))
-
-
-typedef int (*resampler_basic_func)(SpeexResamplerState *, spx_uint32_t , const spx_word16_t *, spx_uint32_t *, spx_word16_t *, spx_uint32_t *);
-
-struct SpeexResamplerState_ {
- spx_uint32_t in_rate;
- spx_uint32_t out_rate;
- spx_uint32_t num_rate;
- spx_uint32_t den_rate;
-
- int quality;
- spx_uint32_t nb_channels;
- spx_uint32_t filt_len;
- spx_uint32_t mem_alloc_size;
- int int_advance;
- int frac_advance;
- float cutoff;
- spx_uint32_t oversample;
- int initialised;
- int started;
-
- /* These are per-channel */
- spx_int32_t *last_sample;
- spx_uint32_t *samp_frac_num;
- spx_uint32_t *magic_samples;
-
- spx_word16_t *mem;
- spx_word16_t *sinc_table;
- spx_uint32_t sinc_table_length;
- resampler_basic_func resampler_ptr;
-
- int in_stride;
- int out_stride;
-} ;
-
-static double kaiser12_table[68] = {
- 0.99859849, 1.00000000, 0.99859849, 0.99440475, 0.98745105, 0.97779076,
- 0.96549770, 0.95066529, 0.93340547, 0.91384741, 0.89213598, 0.86843014,
- 0.84290116, 0.81573067, 0.78710866, 0.75723148, 0.72629970, 0.69451601,
- 0.66208321, 0.62920216, 0.59606986, 0.56287762, 0.52980938, 0.49704014,
- 0.46473455, 0.43304576, 0.40211431, 0.37206735, 0.34301800, 0.31506490,
- 0.28829195, 0.26276832, 0.23854851, 0.21567274, 0.19416736, 0.17404546,
- 0.15530766, 0.13794294, 0.12192957, 0.10723616, 0.09382272, 0.08164178,
- 0.07063950, 0.06075685, 0.05193064, 0.04409466, 0.03718069, 0.03111947,
- 0.02584161, 0.02127838, 0.01736250, 0.01402878, 0.01121463, 0.00886058,
- 0.00691064, 0.00531256, 0.00401805, 0.00298291, 0.00216702, 0.00153438,
- 0.00105297, 0.00069463, 0.00043489, 0.00025272, 0.00013031, 0.0000527734,
- 0.00001000, 0.00000000};
-/*
-static double kaiser12_table[36] = {
- 0.99440475, 1.00000000, 0.99440475, 0.97779076, 0.95066529, 0.91384741,
- 0.86843014, 0.81573067, 0.75723148, 0.69451601, 0.62920216, 0.56287762,
- 0.49704014, 0.43304576, 0.37206735, 0.31506490, 0.26276832, 0.21567274,
- 0.17404546, 0.13794294, 0.10723616, 0.08164178, 0.06075685, 0.04409466,
- 0.03111947, 0.02127838, 0.01402878, 0.00886058, 0.00531256, 0.00298291,
- 0.00153438, 0.00069463, 0.00025272, 0.0000527734, 0.00000500, 0.00000000};
-*/
-static double kaiser10_table[36] = {
- 0.99537781, 1.00000000, 0.99537781, 0.98162644, 0.95908712, 0.92831446,
- 0.89005583, 0.84522401, 0.79486424, 0.74011713, 0.68217934, 0.62226347,
- 0.56155915, 0.50119680, 0.44221549, 0.38553619, 0.33194107, 0.28205962,
- 0.23636152, 0.19515633, 0.15859932, 0.12670280, 0.09935205, 0.07632451,
- 0.05731132, 0.04193980, 0.02979584, 0.02044510, 0.01345224, 0.00839739,
- 0.00488951, 0.00257636, 0.00115101, 0.00035515, 0.00000000, 0.00000000};
-
-static double kaiser8_table[36] = {
- 0.99635258, 1.00000000, 0.99635258, 0.98548012, 0.96759014, 0.94302200,
- 0.91223751, 0.87580811, 0.83439927, 0.78875245, 0.73966538, 0.68797126,
- 0.63451750, 0.58014482, 0.52566725, 0.47185369, 0.41941150, 0.36897272,
- 0.32108304, 0.27619388, 0.23465776, 0.19672670, 0.16255380, 0.13219758,
- 0.10562887, 0.08273982, 0.06335451, 0.04724088, 0.03412321, 0.02369490,
- 0.01563093, 0.00959968, 0.00527363, 0.00233883, 0.00050000, 0.00000000};
-
-static double kaiser6_table[36] = {
- 0.99733006, 1.00000000, 0.99733006, 0.98935595, 0.97618418, 0.95799003,
- 0.93501423, 0.90755855, 0.87598009, 0.84068475, 0.80211977, 0.76076565,
- 0.71712752, 0.67172623, 0.62508937, 0.57774224, 0.53019925, 0.48295561,
- 0.43647969, 0.39120616, 0.34752997, 0.30580127, 0.26632152, 0.22934058,
- 0.19505503, 0.16360756, 0.13508755, 0.10953262, 0.08693120, 0.06722600,
- 0.05031820, 0.03607231, 0.02432151, 0.01487334, 0.00752000, 0.00000000};
-
-struct FuncDef {
- double *table;
- int oversample;
-};
-
-static struct FuncDef _KAISER12 = {kaiser12_table, 64};
-#define KAISER12 (&_KAISER12)
-/*static struct FuncDef _KAISER12 = {kaiser12_table, 32};
-#define KAISER12 (&_KAISER12)*/
-static struct FuncDef _KAISER10 = {kaiser10_table, 32};
-#define KAISER10 (&_KAISER10)
-static struct FuncDef _KAISER8 = {kaiser8_table, 32};
-#define KAISER8 (&_KAISER8)
-static struct FuncDef _KAISER6 = {kaiser6_table, 32};
-#define KAISER6 (&_KAISER6)
-
-struct QualityMapping {
- int base_length;
- int oversample;
- float downsample_bandwidth;
- float upsample_bandwidth;
- struct FuncDef *window_func;
-};
-
-
-/* This table maps conversion quality to internal parameters. There are two
- reasons that explain why the up-sampling bandwidth is larger than the
- down-sampling bandwidth:
- 1) When up-sampling, we can assume that the spectrum is already attenuated
- close to the Nyquist rate (from an A/D or a previous resampling filter)
- 2) Any aliasing that occurs very close to the Nyquist rate will be masked
- by the sinusoids/noise just below the Nyquist rate (guaranteed only for
- up-sampling).
-*/
-static const struct QualityMapping quality_map[11] = {
- { 8, 4, 0.830f, 0.860f, KAISER6 }, /* Q0 */
- { 16, 4, 0.850f, 0.880f, KAISER6 }, /* Q1 */
- { 32, 4, 0.882f, 0.910f, KAISER6 }, /* Q2 */ /* 82.3% cutoff ( ~60 dB stop) 6 */
- { 48, 8, 0.895f, 0.917f, KAISER8 }, /* Q3 */ /* 84.9% cutoff ( ~80 dB stop) 8 */
- { 64, 8, 0.921f, 0.940f, KAISER8 }, /* Q4 */ /* 88.7% cutoff ( ~80 dB stop) 8 */
- { 80, 8, 0.922f, 0.940f, KAISER10}, /* Q5 */ /* 89.1% cutoff (~100 dB stop) 10 */
- { 96, 8, 0.940f, 0.945f, KAISER10}, /* Q6 */ /* 91.5% cutoff (~100 dB stop) 10 */
- {128, 16, 0.950f, 0.950f, KAISER10}, /* Q7 */ /* 93.1% cutoff (~100 dB stop) 10 */
- {160, 16, 0.960f, 0.960f, KAISER10}, /* Q8 */ /* 94.5% cutoff (~100 dB stop) 10 */
- {192, 16, 0.968f, 0.968f, KAISER12}, /* Q9 */ /* 95.5% cutoff (~100 dB stop) 10 */
- {256, 16, 0.975f, 0.975f, KAISER12}, /* Q10 */ /* 96.6% cutoff (~100 dB stop) 10 */
-};
-/*8,24,40,56,80,104,128,160,200,256,320*/
-static double compute_func(float x, struct FuncDef *func)
-{
- float y, frac;
- double interp[4];
- int ind;
- y = x*func->oversample;
- ind = (int)floor(y);
- frac = (y-ind);
- /* CSE with handle the repeated powers */
- interp[3] = -0.1666666667*frac + 0.1666666667*(frac*frac*frac);
- interp[2] = frac + 0.5*(frac*frac) - 0.5*(frac*frac*frac);
- /*interp[2] = 1.f - 0.5f*frac - frac*frac + 0.5f*frac*frac*frac;*/
- interp[0] = -0.3333333333*frac + 0.5*(frac*frac) - 0.1666666667*(frac*frac*frac);
- /* Just to make sure we don't have rounding problems */
- interp[1] = 1.f-interp[3]-interp[2]-interp[0];
-
- /*sum = frac*accum[1] + (1-frac)*accum[2];*/
- return interp[0]*func->table[ind] + interp[1]*func->table[ind+1] + interp[2]*func->table[ind+2] + interp[3]*func->table[ind+3];
-}
-
-#if 0
-#include <stdio.h>
-int main(int argc, char **argv)
-{
- int i;
- for (i=0;i<256;i++)
- {
- printf ("%f\n", compute_func(i/256., KAISER12));
- }
- return 0;
-}
-#endif
-
-#ifdef FIXED_POINT
-/* The slow way of computing a sinc for the table. Should improve that some day */
-static spx_word16_t sinc(float cutoff, float x, int N, struct FuncDef *window_func)
-{
- /*fprintf (stderr, "%f ", x);*/
- float xx = x * cutoff;
- if (fabs(x)<1e-6f)
- return WORD2INT(32768.*cutoff);
- else if (fabs(x) > .5f*N)
- return 0;
- /*FIXME: Can it really be any slower than this? */
- return WORD2INT(32768.*cutoff*sin(M_PI*xx)/(M_PI*xx) * compute_func(fabs(2.*x/N), window_func));
-}
-#else
-/* The slow way of computing a sinc for the table. Should improve that some day */
-static spx_word16_t sinc(float cutoff, float x, int N, struct FuncDef *window_func)
-{
- /*fprintf (stderr, "%f ", x);*/
- float xx = x * cutoff;
- if (fabs(x)<1e-6)
- return cutoff;
- else if (fabs(x) > .5*N)
- return 0;
- /*FIXME: Can it really be any slower than this? */
- return cutoff*sin(M_PI*xx)/(M_PI*xx) * compute_func(fabs(2.*x/N), window_func);
-}
-#endif
-
-#ifdef FIXED_POINT
-static void cubic_coef(spx_word16_t x, spx_word16_t interp[4])
-{
- /* Compute interpolation coefficients. I'm not sure whether this corresponds to cubic interpolation
- but I know it's MMSE-optimal on a sinc */
- spx_word16_t x2, x3;
- x2 = MULT16_16_P15(x, x);
- x3 = MULT16_16_P15(x, x2);
- interp[0] = PSHR32(MULT16_16(QCONST16(-0.16667f, 15),x) + MULT16_16(QCONST16(0.16667f, 15),x3),15);
- interp[1] = EXTRACT16(EXTEND32(x) + SHR32(SUB32(EXTEND32(x2),EXTEND32(x3)),1));
- interp[3] = PSHR32(MULT16_16(QCONST16(-0.33333f, 15),x) + MULT16_16(QCONST16(.5f,15),x2) - MULT16_16(QCONST16(0.16667f, 15),x3),15);
- /* Just to make sure we don't have rounding problems */
- interp[2] = Q15_ONE-interp[0]-interp[1]-interp[3];
- if (interp[2]<32767)
- interp[2]+=1;
-}
-#else
-static void cubic_coef(spx_word16_t frac, spx_word16_t interp[4])
-{
- /* Compute interpolation coefficients. I'm not sure whether this corresponds to cubic interpolation
- but I know it's MMSE-optimal on a sinc */
- interp[0] = -0.16667f*frac + 0.16667f*frac*frac*frac;
- interp[1] = frac + 0.5f*frac*frac - 0.5f*frac*frac*frac;
- /*interp[2] = 1.f - 0.5f*frac - frac*frac + 0.5f*frac*frac*frac;*/
- interp[3] = -0.33333f*frac + 0.5f*frac*frac - 0.16667f*frac*frac*frac;
- /* Just to make sure we don't have rounding problems */
- interp[2] = 1.-interp[0]-interp[1]-interp[3];
-}
-#endif
-
-static int resampler_basic_direct_single(SpeexResamplerState *st, spx_uint32_t channel_index, const spx_word16_t *in, spx_uint32_t *in_len, spx_word16_t *out, spx_uint32_t *out_len)
-{
- int N = st->filt_len;
- int out_sample = 0;
- spx_word16_t *mem;
- int last_sample = st->last_sample[channel_index];
- spx_uint32_t samp_frac_num = st->samp_frac_num[channel_index];
- mem = st->mem + channel_index * st->mem_alloc_size;
- while (!(last_sample >= (spx_int32_t)*in_len || out_sample >= (spx_int32_t)*out_len))
- {
- int j;
- spx_word32_t sum=0;
-
- /* We already have all the filter coefficients pre-computed in the table */
- const spx_word16_t *ptr;
- /* Do the memory part */
- for (j=0;last_sample-N+1+j < 0;j++)
- {
- sum += MULT16_16(mem[last_sample+j],st->sinc_table[samp_frac_num*st->filt_len+j]);
- }
-
- /* Do the new part */
- ptr = in+st->in_stride*(last_sample-N+1+j);
- for (;j<N;j++)
- {
- sum += MULT16_16(*ptr,st->sinc_table[samp_frac_num*st->filt_len+j]);
- ptr += st->in_stride;
- }
-
- *out = PSHR32(sum,15);
- out += st->out_stride;
- out_sample++;
- last_sample += st->int_advance;
- samp_frac_num += st->frac_advance;
- if (samp_frac_num >= st->den_rate)
- {
- samp_frac_num -= st->den_rate;
- last_sample++;
- }
- }
- st->last_sample[channel_index] = last_sample;
- st->samp_frac_num[channel_index] = samp_frac_num;
- return out_sample;
-}
-
-#ifdef FIXED_POINT
-#else
-/* This is the same as the previous function, except with a double-precision accumulator */
-static int resampler_basic_direct_double(SpeexResamplerState *st, spx_uint32_t channel_index, const spx_word16_t *in, spx_uint32_t *in_len, spx_word16_t *out, spx_uint32_t *out_len)
-{
- int N = st->filt_len;
- int out_sample = 0;
- spx_word16_t *mem;
- int last_sample = st->last_sample[channel_index];
- spx_uint32_t samp_frac_num = st->samp_frac_num[channel_index];
- mem = st->mem + channel_index * st->mem_alloc_size;
- while (!(last_sample >= (spx_int32_t)*in_len || out_sample >= (spx_int32_t)*out_len))
- {
- int j;
- double sum=0;
-
- /* We already have all the filter coefficients pre-computed in the table */
- const spx_word16_t *ptr;
- /* Do the memory part */
- for (j=0;last_sample-N+1+j < 0;j++)
- {
- sum += MULT16_16(mem[last_sample+j],(double)st->sinc_table[samp_frac_num*st->filt_len+j]);
- }
-
- /* Do the new part */
- ptr = in+st->in_stride*(last_sample-N+1+j);
- for (;j<N;j++)
- {
- sum += MULT16_16(*ptr,(double)st->sinc_table[samp_frac_num*st->filt_len+j]);
- ptr += st->in_stride;
- }
-
- *out = sum;
- out += st->out_stride;
- out_sample++;
- last_sample += st->int_advance;
- samp_frac_num += st->frac_advance;
- if (samp_frac_num >= st->den_rate)
- {
- samp_frac_num -= st->den_rate;
- last_sample++;
- }
- }
- st->last_sample[channel_index] = last_sample;
- st->samp_frac_num[channel_index] = samp_frac_num;
- return out_sample;
-}
-#endif
-
-static int resampler_basic_interpolate_single(SpeexResamplerState *st, spx_uint32_t channel_index, const spx_word16_t *in, spx_uint32_t *in_len, spx_word16_t *out, spx_uint32_t *out_len)
-{
- int N = st->filt_len;
- int out_sample = 0;
- spx_word16_t *mem;
- int last_sample = st->last_sample[channel_index];
- spx_uint32_t samp_frac_num = st->samp_frac_num[channel_index];
- mem = st->mem + channel_index * st->mem_alloc_size;
- while (!(last_sample >= (spx_int32_t)*in_len || out_sample >= (spx_int32_t)*out_len))
- {
- int j;
- spx_word32_t sum=0;
-
- /* We need to interpolate the sinc filter */
- spx_word32_t accum[4] = {0.f,0.f, 0.f, 0.f};
- spx_word16_t interp[4];
- const spx_word16_t *ptr;
- int offset;
- spx_word16_t frac;
- offset = samp_frac_num*st->oversample/st->den_rate;
-#ifdef FIXED_POINT
- frac = PDIV32(SHL32((samp_frac_num*st->oversample) % st->den_rate,15),st->den_rate);
-#else
- frac = ((float)((samp_frac_num*st->oversample) % st->den_rate))/st->den_rate;
-#endif
- /* This code is written like this to make it easy to optimise with SIMD.
- For most DSPs, it would be best to split the loops in two because most DSPs
- have only two accumulators */
- for (j=0;last_sample-N+1+j < 0;j++)
- {
- spx_word16_t curr_mem = mem[last_sample+j];
- accum[0] += MULT16_16(curr_mem,st->sinc_table[4+(j+1)*st->oversample-offset-2]);
- accum[1] += MULT16_16(curr_mem,st->sinc_table[4+(j+1)*st->oversample-offset-1]);
- accum[2] += MULT16_16(curr_mem,st->sinc_table[4+(j+1)*st->oversample-offset]);
- accum[3] += MULT16_16(curr_mem,st->sinc_table[4+(j+1)*st->oversample-offset+1]);
- }
- ptr = in+st->in_stride*(last_sample-N+1+j);
- /* Do the new part */
- for (;j<N;j++)
- {
- spx_word16_t curr_in = *ptr;
- ptr += st->in_stride;
- accum[0] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset-2]);
- accum[1] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset-1]);
- accum[2] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset]);
- accum[3] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset+1]);
- }
- cubic_coef(frac, interp);
- sum = MULT16_32_Q15(interp[0],accum[0]) + MULT16_32_Q15(interp[1],accum[1]) + MULT16_32_Q15(interp[2],accum[2]) + MULT16_32_Q15(interp[3],accum[3]);
-
- *out = PSHR32(sum,15);
- out += st->out_stride;
- out_sample++;
- last_sample += st->int_advance;
- samp_frac_num += st->frac_advance;
- if (samp_frac_num >= st->den_rate)
- {
- samp_frac_num -= st->den_rate;
- last_sample++;
- }
- }
- st->last_sample[channel_index] = last_sample;
- st->samp_frac_num[channel_index] = samp_frac_num;
- return out_sample;
-}
-
-#ifdef FIXED_POINT
-#else
-/* This is the same as the previous function, except with a double-precision accumulator */
-static int resampler_basic_interpolate_double(SpeexResamplerState *st, spx_uint32_t channel_index, const spx_word16_t *in, spx_uint32_t *in_len, spx_word16_t *out, spx_uint32_t *out_len)
-{
- int N = st->filt_len;
- int out_sample = 0;
- spx_word16_t *mem;
- int last_sample = st->last_sample[channel_index];
- spx_uint32_t samp_frac_num = st->samp_frac_num[channel_index];
- mem = st->mem + channel_index * st->mem_alloc_size;
- while (!(last_sample >= (spx_int32_t)*in_len || out_sample >= (spx_int32_t)*out_len))
- {
- int j;
- spx_word32_t sum=0;
-
- /* We need to interpolate the sinc filter */
- double accum[4] = {0.f,0.f, 0.f, 0.f};
- float interp[4];
- const spx_word16_t *ptr;
- float alpha = ((float)samp_frac_num)/st->den_rate;
- int offset = samp_frac_num*st->oversample/st->den_rate;
- float frac = alpha*st->oversample - offset;
- /* This code is written like this to make it easy to optimise with SIMD.
- For most DSPs, it would be best to split the loops in two because most DSPs
- have only two accumulators */
- for (j=0;last_sample-N+1+j < 0;j++)
- {
- double curr_mem = mem[last_sample+j];
- accum[0] += MULT16_16(curr_mem,st->sinc_table[4+(j+1)*st->oversample-offset-2]);
- accum[1] += MULT16_16(curr_mem,st->sinc_table[4+(j+1)*st->oversample-offset-1]);
- accum[2] += MULT16_16(curr_mem,st->sinc_table[4+(j+1)*st->oversample-offset]);
- accum[3] += MULT16_16(curr_mem,st->sinc_table[4+(j+1)*st->oversample-offset+1]);
- }
- ptr = in+st->in_stride*(last_sample-N+1+j);
- /* Do the new part */
- for (;j<N;j++)
- {
- double curr_in = *ptr;
- ptr += st->in_stride;
- accum[0] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset-2]);
- accum[1] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset-1]);
- accum[2] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset]);
- accum[3] += MULT16_16(curr_in,st->sinc_table[4+(j+1)*st->oversample-offset+1]);
- }
- cubic_coef(frac, interp);
- sum = interp[0]*accum[0] + interp[1]*accum[1] + interp[2]*accum[2] + interp[3]*accum[3];
-
- *out = PSHR32(sum,15);
- out += st->out_stride;
- out_sample++;
- last_sample += st->int_advance;
- samp_frac_num += st->frac_advance;
- if (samp_frac_num >= st->den_rate)
- {
- samp_frac_num -= st->den_rate;
- last_sample++;
- }
- }
- st->last_sample[channel_index] = last_sample;
- st->samp_frac_num[channel_index] = samp_frac_num;
- return out_sample;
-}
-#endif
-
-static void update_filter(SpeexResamplerState *st)
-{
- spx_uint32_t old_length;
-
- old_length = st->filt_len;
- st->oversample = quality_map[st->quality].oversample;
- st->filt_len = quality_map[st->quality].base_length;
-
- if (st->num_rate > st->den_rate)
- {
- /* down-sampling */
- st->cutoff = quality_map[st->quality].downsample_bandwidth * st->den_rate / st->num_rate;
- /* FIXME: divide the numerator and denominator by a certain amount if they're too large */
- st->filt_len = st->filt_len*st->num_rate / st->den_rate;
- /* Round down to make sure we have a multiple of 4 */
- st->filt_len &= (~0x3);
- } else {
- /* up-sampling */
- st->cutoff = quality_map[st->quality].upsample_bandwidth;
- }
-
- /* Choose the resampling type that requires the least amount of memory */
- if (st->den_rate <= st->oversample)
- {
- spx_uint32_t i;
- if (!st->sinc_table)
- st->sinc_table = (spx_word16_t *)speex_alloc(st->filt_len*st->den_rate*sizeof(spx_word16_t));
- else if (st->sinc_table_length < st->filt_len*st->den_rate)
- {
- st->sinc_table = (spx_word16_t *)speex_realloc(st->sinc_table,st->filt_len*st->den_rate*sizeof(spx_word16_t));
- st->sinc_table_length = st->filt_len*st->den_rate;
- }
- for (i=0;i<st->den_rate;i++)
- {
- spx_uint32_t j;
- for (j=0;j<st->filt_len;j++)
- {
- st->sinc_table[i*st->filt_len+j] = sinc(st->cutoff,((j-st->filt_len/2+1)-((float)i)/st->den_rate), st->filt_len, quality_map[st->quality].window_func);
- }
- }
-#ifdef FIXED_POINT
- st->resampler_ptr = resampler_basic_direct_single;
-#else
- if (st->quality>8)
- st->resampler_ptr = resampler_basic_direct_double;
- else
- st->resampler_ptr = resampler_basic_direct_single;
-#endif
- /*fprintf (stderr, "resampler uses direct sinc table and normalised cutoff %f\n", cutoff);*/
- } else {
- spx_int32_t i;
- if (!st->sinc_table)
- st->sinc_table = (spx_word16_t *)speex_alloc((st->filt_len*st->oversample+8)*sizeof(spx_word16_t));
- else if (st->sinc_table_length < st->filt_len*st->oversample+8)
- {
- st->sinc_table = (spx_word16_t *)speex_realloc(st->sinc_table,(st->filt_len*st->oversample+8)*sizeof(spx_word16_t));
- st->sinc_table_length = st->filt_len*st->oversample+8;
- }
- for (i=-4;i<(spx_int32_t)(st->oversample*st->filt_len+4);i++)
- st->sinc_table[i+4] = sinc(st->cutoff,(i/(float)st->oversample - st->filt_len/2), st->filt_len, quality_map[st->quality].window_func);
-#ifdef FIXED_POINT
- st->resampler_ptr = resampler_basic_interpolate_single;
-#else
- if (st->quality>8)
- st->resampler_ptr = resampler_basic_interpolate_double;
- else
- st->resampler_ptr = resampler_basic_interpolate_single;
-#endif
- /*fprintf (stderr, "resampler uses interpolated sinc table and normalised cutoff %f\n", cutoff);*/
- }
- st->int_advance = st->num_rate/st->den_rate;
- st->frac_advance = st->num_rate%st->den_rate;
-
- if (!st->mem)
- {
- spx_uint32_t i;
- st->mem = (spx_word16_t*)speex_alloc(st->nb_channels*(st->filt_len-1) * sizeof(spx_word16_t));
- for (i=0;i<st->nb_channels*(st->filt_len-1);i++)
- st->mem[i] = 0;
- st->mem_alloc_size = st->filt_len-1;
- /*speex_warning("init filter");*/
- } else if (!st->started)
- {
- spx_uint32_t i;
- st->mem = (spx_word16_t*)speex_realloc(st->mem, st->nb_channels*(st->filt_len-1) * sizeof(spx_word16_t));
- for (i=0;i<st->nb_channels*(st->filt_len-1);i++)
- st->mem[i] = 0;
- st->mem_alloc_size = st->filt_len-1;
- /*speex_warning("reinit filter");*/
- } else if (st->filt_len > old_length)
- {
- spx_uint32_t i;
- /* Increase the filter length */
- /*speex_warning("increase filter size");*/
- int old_alloc_size = st->mem_alloc_size;
- if (st->filt_len-1 > st->mem_alloc_size)
- {
- st->mem = (spx_word16_t*)speex_realloc(st->mem, st->nb_channels*(st->filt_len-1) * sizeof(spx_word16_t));
- st->mem_alloc_size = st->filt_len-1;
- }
- for (i=0;i<st->nb_channels;i++)
- {
- spx_uint32_t j;
- /* Copy data going backward */
- for (j=0;j<old_length-1;j++)
- st->mem[i*st->mem_alloc_size+(st->filt_len-2-j)] = st->mem[i*old_alloc_size+(old_length-2-j)];
- /* Then put zeros for lack of anything better */
- for (;j<st->filt_len-1;j++)
- st->mem[i*st->mem_alloc_size+(st->filt_len-2-j)] = 0;
- /* Adjust last_sample */
- st->last_sample[i] += (st->filt_len - old_length)/2;
- }
- } else if (st->filt_len < old_length)
- {
- spx_uint32_t i;
- /* Reduce filter length, this a bit tricky */
- /*speex_warning("decrease filter size (unimplemented)");*/
- /* Adjust last_sample (which will likely end up negative) */
- /*st->last_sample += (st->filt_len - old_length)/2;*/
- for (i=0;i<st->nb_channels;i++)
- {
- spx_uint32_t j;
- st->magic_samples[i] = (old_length - st->filt_len)/2;
- /* Copy data going backward */
- for (j=0;j<st->filt_len-1+st->magic_samples[i];j++)
- st->mem[i*st->mem_alloc_size+j] = st->mem[i*st->mem_alloc_size+j+st->magic_samples[i]];
- }
- }
-
-}
-
-SpeexResamplerState *speex_resampler_init(spx_uint32_t nb_channels, spx_uint32_t in_rate, spx_uint32_t out_rate, int quality)
-{
- return speex_resampler_init_frac(nb_channels, in_rate, out_rate, in_rate, out_rate, quality);
-}
-
-SpeexResamplerState *speex_resampler_init_frac(spx_uint32_t nb_channels, spx_uint32_t ratio_num, spx_uint32_t ratio_den, spx_uint32_t in_rate, spx_uint32_t out_rate, int quality)
-{
- spx_uint32_t i;
- SpeexResamplerState *st = (SpeexResamplerState *)speex_alloc(sizeof(SpeexResamplerState));
- st->initialised = 0;
- st->started = 0;
- st->in_rate = 0;
- st->out_rate = 0;
- st->num_rate = 0;
- st->den_rate = 0;
- st->quality = -1;
- st->sinc_table_length = 0;
- st->mem_alloc_size = 0;
- st->filt_len = 0;
- st->mem = 0;
- st->resampler_ptr = 0;
-
- st->cutoff = 1.f;
- st->nb_channels = nb_channels;
- st->in_stride = 1;
- st->out_stride = 1;
-
- /* Per channel data */
- st->last_sample = (spx_int32_t*)speex_alloc(nb_channels*sizeof(int));
- st->magic_samples = (spx_uint32_t*)speex_alloc(nb_channels*sizeof(int));
- st->samp_frac_num = (spx_uint32_t*)speex_alloc(nb_channels*sizeof(int));
- for (i=0;i<nb_channels;i++)
- {
- st->last_sample[i] = 0;
- st->magic_samples[i] = 0;
- st->samp_frac_num[i] = 0;
- }
-
- speex_resampler_set_quality(st, quality);
- speex_resampler_set_rate_frac(st, ratio_num, ratio_den, in_rate, out_rate);
-
-
- update_filter(st);
-
- st->initialised = 1;
- return st;
-}
-
-void speex_resampler_destroy(SpeexResamplerState *st)
-{
- speex_free(st->mem);
- speex_free(st->sinc_table);
- speex_free(st->last_sample);
- speex_free(st->magic_samples);
- speex_free(st->samp_frac_num);
- speex_free(st);
-}
-
-
-
-static void speex_resampler_process_native(SpeexResamplerState *st, spx_uint32_t channel_index, const spx_word16_t *in, spx_uint32_t *in_len, spx_word16_t *out, spx_uint32_t *out_len)
-{
- int j=0;
- int N = st->filt_len;
- int out_sample = 0;
- spx_word16_t *mem;
- spx_uint32_t tmp_out_len = 0;
- mem = st->mem + channel_index * st->mem_alloc_size;
- st->started = 1;
-
- /* Handle the case where we have samples left from a reduction in filter length */
- if (st->magic_samples[channel_index])
- {
- spx_uint32_t tmp_in_len;
- spx_uint32_t tmp_magic;
- tmp_in_len = st->magic_samples[channel_index];
- tmp_out_len = *out_len;
- /* FIXME: Need to handle the case where the out array is too small */
- /* magic_samples needs to be set to zero to avoid infinite recursion */
- tmp_magic = st->magic_samples[channel_index];
- st->magic_samples[channel_index] = 0;
- speex_resampler_process_native(st, channel_index, mem+N-1, &tmp_in_len, out, &tmp_out_len);
- /*speex_warning_int("extra samples:", tmp_out_len);*/
- /* If we couldn't process all "magic" input samples, save the rest for next time */
- if (tmp_in_len < tmp_magic)
- {
- spx_uint32_t i;
- st->magic_samples[channel_index] = tmp_magic-tmp_in_len;
- for (i=0;i<st->magic_samples[channel_index];i++)
- mem[N-1+i]=mem[N-1+i+tmp_in_len];
- }
- out += tmp_out_len;
- }
-
- /* Call the right resampler through the function ptr */
- out_sample = st->resampler_ptr(st, channel_index, in, in_len, out, out_len);
-
- if (st->last_sample[channel_index] < (spx_int32_t)*in_len)
- *in_len = st->last_sample[channel_index];
- *out_len = out_sample+tmp_out_len;
- st->last_sample[channel_index] -= *in_len;
-
- for (j=0;j<N-1-(spx_int32_t)*in_len;j++)
- mem[j] = mem[j+*in_len];
- for (;j<N-1;j++)
- mem[j] = in[st->in_stride*(j+*in_len-N+1)];
-
-}
-
-#define FIXED_STACK_ALLOC 1024
-
-#ifdef FIXED_POINT
-void speex_resampler_process_float(SpeexResamplerState *st, spx_uint32_t channel_index, const float *in, spx_uint32_t *in_len, float *out, spx_uint32_t *out_len)
-{
- spx_uint32_t i;
- int istride_save, ostride_save;
-#ifdef VAR_ARRAYS
- spx_word16_t x[*in_len];
- spx_word16_t y[*out_len];
- /*VARDECL(spx_word16_t *x);
- VARDECL(spx_word16_t *y);
- ALLOC(x, *in_len, spx_word16_t);
- ALLOC(y, *out_len, spx_word16_t);*/
- istride_save = st->in_stride;
- ostride_save = st->out_stride;
- for (i=0;i<*in_len;i++)
- x[i] = WORD2INT(in[i*st->in_stride]);
- st->in_stride = st->out_stride = 1;
- speex_resampler_process_native(st, channel_index, x, in_len, y, out_len);
- st->in_stride = istride_save;
- st->out_stride = ostride_save;
- for (i=0;i<*out_len;i++)
- out[i*st->out_stride] = y[i];
-#else
- spx_word16_t x[FIXED_STACK_ALLOC];
- spx_word16_t y[FIXED_STACK_ALLOC];
- spx_uint32_t ilen=*in_len, olen=*out_len;
- istride_save = st->in_stride;
- ostride_save = st->out_stride;
- while (ilen && olen)
- {
- spx_uint32_t ichunk, ochunk;
- ichunk = ilen;
- ochunk = olen;
- if (ichunk>FIXED_STACK_ALLOC)
- ichunk=FIXED_STACK_ALLOC;
- if (ochunk>FIXED_STACK_ALLOC)
- ochunk=FIXED_STACK_ALLOC;
- for (i=0;i<ichunk;i++)
- x[i] = WORD2INT(in[i*st->in_stride]);
- st->in_stride = st->out_stride = 1;
- speex_resampler_process_native(st, channel_index, x, &ichunk, y, &ochunk);
- st->in_stride = istride_save;
- st->out_stride = ostride_save;
- for (i=0;i<ochunk;i++)
- out[i*st->out_stride] = y[i];
- out += ochunk;
- in += ichunk;
- ilen -= ichunk;
- olen -= ochunk;
- }
- *in_len -= ilen;
- *out_len -= olen;
-#endif
-}
-void speex_resampler_process_int(SpeexResamplerState *st, spx_uint32_t channel_index, const spx_int16_t *in, spx_uint32_t *in_len, spx_int16_t *out, spx_uint32_t *out_len)
-{
- speex_resampler_process_native(st, channel_index, in, in_len, out, out_len);
-}
-#else
-void speex_resampler_process_float(SpeexResamplerState *st, spx_uint32_t channel_index, const float *in, spx_uint32_t *in_len, float *out, spx_uint32_t *out_len)
-{
- speex_resampler_process_native(st, channel_index, in, in_len, out, out_len);
-}
-void speex_resampler_process_int(SpeexResamplerState *st, spx_uint32_t channel_index, const spx_int16_t *in, spx_uint32_t *in_len, spx_int16_t *out, spx_uint32_t *out_len)
-{
- spx_uint32_t i;
- int istride_save, ostride_save;
-#ifdef VAR_ARRAYS
- spx_word16_t x[*in_len];
- spx_word16_t y[*out_len];
- /*VARDECL(spx_word16_t *x);
- VARDECL(spx_word16_t *y);
- ALLOC(x, *in_len, spx_word16_t);
- ALLOC(y, *out_len, spx_word16_t);*/
- istride_save = st->in_stride;
- ostride_save = st->out_stride;
- for (i=0;i<*in_len;i++)
- x[i] = in[i*st->in_stride];
- st->in_stride = st->out_stride = 1;
- speex_resampler_process_native(st, channel_index, x, in_len, y, out_len);
- st->in_stride = istride_save;
- st->out_stride = ostride_save;
- for (i=0;i<*out_len;i++)
- out[i*st->out_stride] = WORD2INT(y[i]);
-#else
- spx_word16_t x[FIXED_STACK_ALLOC];
- spx_word16_t y[FIXED_STACK_ALLOC];
- spx_uint32_t ilen=*in_len, olen=*out_len;
- istride_save = st->in_stride;
- ostride_save = st->out_stride;
- while (ilen && olen)
- {
- spx_uint32_t ichunk, ochunk;
- ichunk = ilen;
- ochunk = olen;
- if (ichunk>FIXED_STACK_ALLOC)
- ichunk=FIXED_STACK_ALLOC;
- if (ochunk>FIXED_STACK_ALLOC)
- ochunk=FIXED_STACK_ALLOC;
- for (i=0;i<ichunk;i++)
- x[i] = in[i*st->in_stride];
- st->in_stride = st->out_stride = 1;
- speex_resampler_process_native(st, channel_index, x, &ichunk, y, &ochunk);
- st->in_stride = istride_save;
- st->out_stride = ostride_save;
- for (i=0;i<ochunk;i++)
- out[i*st->out_stride] = WORD2INT(y[i]);
- out += ochunk;
- in += ichunk;
- ilen -= ichunk;
- olen -= ochunk;
- }
- *in_len -= ilen;
- *out_len -= olen;
-#endif
-}
-#endif
-
-void speex_resampler_process_interleaved_float(SpeexResamplerState *st, const float *in, spx_uint32_t *in_len, float *out, spx_uint32_t *out_len)
-{
- spx_uint32_t i;
- int istride_save, ostride_save;
- istride_save = st->in_stride;
- ostride_save = st->out_stride;
- st->in_stride = st->out_stride = st->nb_channels;
- for (i=0;i<st->nb_channels;i++)
- {
- speex_resampler_process_float(st, i, in+i, in_len, out+i, out_len);
- }
- st->in_stride = istride_save;
- st->out_stride = ostride_save;
-}
-
-void speex_resampler_process_interleaved_int(SpeexResamplerState *st, const spx_int16_t *in, spx_uint32_t *in_len, spx_int16_t *out, spx_uint32_t *out_len)
-{
- spx_uint32_t i;
- int istride_save, ostride_save;
- istride_save = st->in_stride;
- ostride_save = st->out_stride;
- st->in_stride = st->out_stride = st->nb_channels;
- for (i=0;i<st->nb_channels;i++)
- {
- speex_resampler_process_int(st, i, in+i, in_len, out+i, out_len);
- }
- st->in_stride = istride_save;
- st->out_stride = ostride_save;
-}
-
-void speex_resampler_set_rate(SpeexResamplerState *st, spx_uint32_t in_rate, spx_uint32_t out_rate)
-{
- speex_resampler_set_rate_frac(st, in_rate, out_rate, in_rate, out_rate);
-}
-
-void speex_resampler_get_rate(SpeexResamplerState *st, spx_uint32_t *in_rate, spx_uint32_t *out_rate)
-{
- *in_rate = st->in_rate;
- *out_rate = st->out_rate;
-}
-
-void speex_resampler_set_rate_frac(SpeexResamplerState *st, spx_uint32_t ratio_num, spx_uint32_t ratio_den, spx_uint32_t in_rate, spx_uint32_t out_rate)
-{
- int fact;
- if (st->in_rate == in_rate && st->out_rate == out_rate && st->num_rate == ratio_num && st->den_rate == ratio_den)
- return;
-
- st->in_rate = in_rate;
- st->out_rate = out_rate;
- st->num_rate = ratio_num;
- st->den_rate = ratio_den;
- /* FIXME: This is terribly inefficient, but who cares (at least for now)? */
- for (fact=2;fact<=sqrt(IMAX(in_rate, out_rate));fact++)
- {
- while ((st->num_rate % fact == 0) && (st->den_rate % fact == 0))
- {
- st->num_rate /= fact;
- st->den_rate /= fact;
- }
- }
-
- if (st->initialised)
- update_filter(st);
-}
-
-void speex_resampler_get_ratio(SpeexResamplerState *st, spx_uint32_t *ratio_num, spx_uint32_t *ratio_den)
-{
- *ratio_num = st->num_rate;
- *ratio_den = st->den_rate;
-}
-
-void speex_resampler_set_quality(SpeexResamplerState *st, int quality)
-{
- if (quality < 0)
- quality = 0;
- if (quality > 10)
- quality = 10;
- if (st->quality == quality)
- return;
- st->quality = quality;
- if (st->initialised)
- update_filter(st);
-}
-
-void speex_resampler_get_quality(SpeexResamplerState *st, int *quality)
-{
- *quality = st->quality;
-}
-
-void speex_resampler_set_input_stride(SpeexResamplerState *st, spx_uint32_t stride)
-{
- st->in_stride = stride;
-}
-
-void speex_resampler_get_input_stride(SpeexResamplerState *st, spx_uint32_t *stride)
-{
- *stride = st->in_stride;
-}
-
-void speex_resampler_set_output_stride(SpeexResamplerState *st, spx_uint32_t stride)
-{
- st->out_stride = stride;
-}
-
-void speex_resampler_get_output_stride(SpeexResamplerState *st, spx_uint32_t *stride)
-{
- *stride = st->out_stride;
-}
-
-void speex_resampler_skip_zeros(SpeexResamplerState *st)
-{
- spx_uint32_t i;
- for (i=0;i<st->nb_channels;i++)
- st->last_sample[i] = st->filt_len/2;
-}
-
-void speex_resampler_reset_mem(SpeexResamplerState *st)
-{
- spx_uint32_t i;
- for (i=0;i<st->nb_channels*(st->filt_len-1);i++)
- st->mem[i] = 0;
-}
-
diff --git a/3rdparty/speex/libspeex/sb_celp.c b/3rdparty/speex/libspeex/sb_celp.c
deleted file mode 100644
index 50b9824d..00000000
--- a/3rdparty/speex/libspeex/sb_celp.c
+++ /dev/null
@@ -1,1480 +0,0 @@
-/* Copyright (C) 2002-2006 Jean-Marc Valin
- File: sb_celp.c
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <math.h>
-#include "sb_celp.h"
-#include "stdlib.h"
-#include "filters.h"
-#include "lpc.h"
-#include "lsp.h"
-#include "stack_alloc.h"
-#include "cb_search.h"
-#include "quant_lsp.h"
-#include "vq.h"
-#include "ltp.h"
-#include "misc.h"
-#include "math_approx.h"
-
-/* Default size for the encoder and decoder stack (can be changed at compile time).
- This does not apply when using variable-size arrays or alloca. */
-#ifndef SB_ENC_STACK
-#define SB_ENC_STACK (10000*sizeof(spx_sig_t))
-#endif
-
-#ifndef SB_DEC_STACK
-#define SB_DEC_STACK (6000*sizeof(spx_sig_t))
-#endif
-
-
-#ifdef DISABLE_WIDEBAND
-void *sb_encoder_init(const SpeexMode *m)
-{
- speex_error("Wideband and Ultra-wideband are disabled");
- return NULL;
-}
-void sb_encoder_destroy(void *state)
-{
- speex_error("Wideband and Ultra-wideband are disabled");
-}
-int sb_encode(void *state, void *vin, SpeexBits *bits)
-{
- speex_error("Wideband and Ultra-wideband are disabled");
- return -2;
-}
-void *sb_decoder_init(const SpeexMode *m)
-{
- speex_error("Wideband and Ultra-wideband are disabled");
- return NULL;
-}
-void sb_decoder_destroy(void *state)
-{
- speex_error("Wideband and Ultra-wideband are disabled");
-}
-int sb_decode(void *state, SpeexBits *bits, void *vout)
-{
- speex_error("Wideband and Ultra-wideband are disabled");
- return -2;
-}
-int sb_encoder_ctl(void *state, int request, void *ptr)
-{
- speex_error("Wideband and Ultra-wideband are disabled");
- return -2;
-}
-int sb_decoder_ctl(void *state, int request, void *ptr)
-{
- speex_error("Wideband and Ultra-wideband are disabled");
- return -2;
-}
-#else
-
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846 /* pi */
-#endif
-
-#define sqr(x) ((x)*(x))
-
-#define SUBMODE(x) st->submodes[st->submodeID]->x
-
-#ifdef FIXED_POINT
-static const spx_word16_t gc_quant_bound[16] = {125, 164, 215, 282, 370, 484, 635, 832, 1090, 1428, 1871, 2452, 3213, 4210, 5516, 7228};
-static const spx_word16_t fold_quant_bound[32] = {
- 39, 44, 50, 57, 64, 73, 83, 94,
- 106, 120, 136, 154, 175, 198, 225, 255,
- 288, 327, 370, 420, 476, 539, 611, 692,
- 784, 889, 1007, 1141, 1293, 1465, 1660, 1881};
-#define LSP_MARGIN 410
-#define LSP_DELTA1 6553
-#define LSP_DELTA2 1638
-
-#else
-
-static const spx_word16_t gc_quant_bound[16] = {
- 0.97979, 1.28384, 1.68223, 2.20426, 2.88829, 3.78458, 4.95900, 6.49787,
- 8.51428, 11.15642, 14.61846, 19.15484, 25.09895, 32.88761, 43.09325, 56.46588};
-static const spx_word16_t fold_quant_bound[32] = {
- 0.30498, 0.34559, 0.39161, 0.44375, 0.50283, 0.56979, 0.64565, 0.73162,
- 0.82903, 0.93942, 1.06450, 1.20624, 1.36685, 1.54884, 1.75506, 1.98875,
- 2.25355, 2.55360, 2.89361, 3.27889, 3.71547, 4.21018, 4.77076, 5.40598,
- 6.12577, 6.94141, 7.86565, 8.91295, 10.09969, 11.44445, 12.96826, 14.69497};
-
-#define LSP_MARGIN .05
-#define LSP_DELTA1 .2
-#define LSP_DELTA2 .05
-
-#endif
-
-#define QMF_ORDER 64
-
-#ifdef FIXED_POINT
-static const spx_word16_t h0[64] = {2, -7, -7, 18, 15, -39, -25, 75, 35, -130, -41, 212, 38, -327, -17, 483, -32, -689, 124, 956, -283, -1307, 543, 1780, -973, -2467, 1733, 3633, -3339, -6409, 9059, 30153, 30153, 9059, -6409, -3339, 3633, 1733, -2467, -973, 1780, 543, -1307, -283, 956, 124, -689, -32, 483, -17, -327, 38, 212, -41, -130, 35, 75, -25, -39, 15, 18, -7, -7, 2};
-
-#else
-static const float h0[64] = {
- 3.596189e-05f, -0.0001123515f,
- -0.0001104587f, 0.0002790277f,
- 0.0002298438f, -0.0005953563f,
- -0.0003823631f, 0.00113826f,
- 0.0005308539f, -0.001986177f,
- -0.0006243724f, 0.003235877f,
- 0.0005743159f, -0.004989147f,
- -0.0002584767f, 0.007367171f,
- -0.0004857935f, -0.01050689f,
- 0.001894714f, 0.01459396f,
- -0.004313674f, -0.01994365f,
- 0.00828756f, 0.02716055f,
- -0.01485397f, -0.03764973f,
- 0.026447f, 0.05543245f,
- -0.05095487f, -0.09779096f,
- 0.1382363f, 0.4600981f,
- 0.4600981f, 0.1382363f,
- -0.09779096f, -0.05095487f,
- 0.05543245f, 0.026447f,
- -0.03764973f, -0.01485397f,
- 0.02716055f, 0.00828756f,
- -0.01994365f, -0.004313674f,
- 0.01459396f, 0.001894714f,
- -0.01050689f, -0.0004857935f,
- 0.007367171f, -0.0002584767f,
- -0.004989147f, 0.0005743159f,
- 0.003235877f, -0.0006243724f,
- -0.001986177f, 0.0005308539f,
- 0.00113826f, -0.0003823631f,
- -0.0005953563f, 0.0002298438f,
- 0.0002790277f, -0.0001104587f,
- -0.0001123515f, 3.596189e-05f
-};
-
-#endif
-
-extern const spx_word16_t lpc_window[];
-
-
-void *sb_encoder_init(const SpeexMode *m)
-{
- int i;
- spx_int32_t tmp;
- SBEncState *st;
- const SpeexSBMode *mode;
-
- st = (SBEncState*)speex_alloc(sizeof(SBEncState));
- if (!st)
- return NULL;
- st->mode = m;
- mode = (const SpeexSBMode*)m->mode;
-
-
- st->st_low = speex_encoder_init(mode->nb_mode);
-#if defined(VAR_ARRAYS) || defined (USE_ALLOCA)
- st->stack = NULL;
-#else
- /*st->stack = (char*)speex_alloc_scratch(SB_ENC_STACK);*/
- speex_encoder_ctl(st->st_low, SPEEX_GET_STACK, &st->stack);
-#endif
-
- st->full_frame_size = 2*mode->frameSize;
- st->frame_size = mode->frameSize;
- st->subframeSize = mode->subframeSize;
- st->nbSubframes = mode->frameSize/mode->subframeSize;
- st->windowSize = st->frame_size+st->subframeSize;
- st->lpcSize=mode->lpcSize;
- st->bufSize=mode->bufSize;
-
- st->encode_submode = 1;
- st->submodes=mode->submodes;
- st->submodeSelect = st->submodeID=mode->defaultSubmode;
-
- tmp=9;
- speex_encoder_ctl(st->st_low, SPEEX_SET_QUALITY, &tmp);
- tmp=1;
- speex_encoder_ctl(st->st_low, SPEEX_SET_WIDEBAND, &tmp);
-
- st->lag_factor = mode->lag_factor;
- st->lpc_floor = mode->lpc_floor;
- st->gamma1=mode->gamma1;
- st->gamma2=mode->gamma2;
- st->first=1;
-
- st->high=(spx_word16_t*)speex_alloc((st->windowSize-st->frame_size)*sizeof(spx_word16_t));
-
- st->h0_mem=(spx_word16_t*)speex_alloc((QMF_ORDER)*sizeof(spx_word16_t));
- st->h1_mem=(spx_word16_t*)speex_alloc((QMF_ORDER)*sizeof(spx_word16_t));
-
- st->window= lpc_window;
-
- st->lagWindow = (spx_word16_t*)speex_alloc((st->lpcSize+1)*sizeof(spx_word16_t));
- for (i=0;i<st->lpcSize+1;i++)
- st->lagWindow[i]=16384*exp(-.5*sqr(2*M_PI*st->lag_factor*i));
-
- st->old_lsp = (spx_lsp_t*)speex_alloc(st->lpcSize*sizeof(spx_lsp_t));
- st->old_qlsp = (spx_lsp_t*)speex_alloc(st->lpcSize*sizeof(spx_lsp_t));
- st->interp_qlpc = (spx_coef_t*)speex_alloc(st->lpcSize*sizeof(spx_coef_t));
- st->pi_gain = (spx_word32_t*)speex_alloc((st->nbSubframes)*sizeof(spx_word32_t));
- st->exc_rms = (spx_word16_t*)speex_alloc((st->nbSubframes)*sizeof(spx_word16_t));
- st->innov_rms_save = NULL;
-
- st->mem_sp = (spx_mem_t*)speex_alloc((st->lpcSize)*sizeof(spx_mem_t));
- st->mem_sp2 = (spx_mem_t*)speex_alloc((st->lpcSize)*sizeof(spx_mem_t));
- st->mem_sw = (spx_mem_t*)speex_alloc((st->lpcSize)*sizeof(spx_mem_t));
-
- for (i=0;i<st->lpcSize;i++)
- {
- st->old_lsp[i]=LSP_SCALING*(M_PI*((float)(i+1)))/(st->lpcSize+1);
- }
-
- st->vbr_quality = 8;
- st->vbr_enabled = 0;
- st->vbr_max = 0;
- st->vbr_max_high = 20000; /* We just need a big value here */
- st->vad_enabled = 0;
- st->abr_enabled = 0;
- st->relative_quality=0;
-
- st->complexity=2;
- speex_encoder_ctl(st->st_low, SPEEX_GET_SAMPLING_RATE, &st->sampling_rate);
- st->sampling_rate*=2;
-#ifdef ENABLE_VALGRIND
- VALGRIND_MAKE_READABLE(st, (st->stack-(char*)st));
-#endif
- return st;
-}
-
-void sb_encoder_destroy(void *state)
-{
- SBEncState *st=(SBEncState*)state;
-
- speex_encoder_destroy(st->st_low);
-#if !(defined(VAR_ARRAYS) || defined (USE_ALLOCA))
- /*speex_free_scratch(st->stack);*/
-#endif
-
- speex_free(st->high);
-
- speex_free(st->h0_mem);
- speex_free(st->h1_mem);
-
- speex_free(st->lagWindow);
-
- speex_free(st->old_lsp);
- speex_free(st->old_qlsp);
- speex_free(st->interp_qlpc);
- speex_free(st->pi_gain);
- speex_free(st->exc_rms);
-
- speex_free(st->mem_sp);
- speex_free(st->mem_sp2);
- speex_free(st->mem_sw);
-
-
- speex_free(st);
-}
-
-
-int sb_encode(void *state, void *vin, SpeexBits *bits)
-{
- SBEncState *st;
- int i, roots, sub;
- char *stack;
- VARDECL(spx_mem_t *mem);
- VARDECL(spx_sig_t *innov);
- VARDECL(spx_word16_t *target);
- VARDECL(spx_word16_t *syn_resp);
- VARDECL(spx_word32_t *low_pi_gain);
- spx_word16_t *low;
- spx_word16_t *high;
- VARDECL(spx_word16_t *low_exc_rms);
- VARDECL(spx_word16_t *low_innov_rms);
- const SpeexSBMode *mode;
- spx_int32_t dtx;
- spx_word16_t *in = (spx_word16_t*)vin;
- spx_word16_t e_low=0, e_high=0;
- VARDECL(spx_coef_t *lpc);
- VARDECL(spx_coef_t *interp_lpc);
- VARDECL(spx_coef_t *bw_lpc1);
- VARDECL(spx_coef_t *bw_lpc2);
- VARDECL(spx_lsp_t *lsp);
- VARDECL(spx_lsp_t *qlsp);
- VARDECL(spx_lsp_t *interp_lsp);
- VARDECL(spx_lsp_t *interp_qlsp);
-
- st = (SBEncState*)state;
- stack=st->stack;
- mode = (const SpeexSBMode*)(st->mode->mode);
- low = in;
- high = in+st->frame_size;
-
- /* High-band buffering / sync with low band */
- /* Compute the two sub-bands by filtering with QMF h0*/
- qmf_decomp(in, h0, low, high, st->full_frame_size, QMF_ORDER, st->h0_mem, stack);
-
- if (st->vbr_enabled || st->vad_enabled)
- {
- /* Need to compute things here before the signal is trashed by the encoder */
- /*FIXME: Are the two signals (low, high) in sync? */
- e_low = compute_rms16(low, st->frame_size);
- e_high = compute_rms16(high, st->frame_size);
- }
- ALLOC(low_innov_rms, st->nbSubframes, spx_word16_t);
- speex_encoder_ctl(st->st_low, SPEEX_SET_INNOVATION_SAVE, low_innov_rms);
- /* Encode the narrowband part*/
- speex_encode_native(st->st_low, low, bits);
-
- high = high - (st->windowSize-st->frame_size);
- for (i=0;i<st->windowSize-st->frame_size;i++)
- high[i] = st->high[i];
- for (i=0;i<st->windowSize-st->frame_size;i++)
- st->high[i] = high[i+st->frame_size];
-
-
- ALLOC(low_pi_gain, st->nbSubframes, spx_word32_t);
- ALLOC(low_exc_rms, st->nbSubframes, spx_word16_t);
- speex_encoder_ctl(st->st_low, SPEEX_GET_PI_GAIN, low_pi_gain);
- speex_encoder_ctl(st->st_low, SPEEX_GET_EXC, low_exc_rms);
-
- speex_encoder_ctl(st->st_low, SPEEX_GET_LOW_MODE, &dtx);
-
- if (dtx==0)
- dtx=1;
- else
- dtx=0;
-
- ALLOC(lpc, st->lpcSize, spx_coef_t);
- ALLOC(interp_lpc, st->lpcSize, spx_coef_t);
- ALLOC(bw_lpc1, st->lpcSize, spx_coef_t);
- ALLOC(bw_lpc2, st->lpcSize, spx_coef_t);
-
- ALLOC(lsp, st->lpcSize, spx_lsp_t);
- ALLOC(qlsp, st->lpcSize, spx_lsp_t);
- ALLOC(interp_lsp, st->lpcSize, spx_lsp_t);
- ALLOC(interp_qlsp, st->lpcSize, spx_lsp_t);
-
- {
- VARDECL(spx_word16_t *autocorr);
- VARDECL(spx_word16_t *w_sig);
- ALLOC(autocorr, st->lpcSize+1, spx_word16_t);
- ALLOC(w_sig, st->windowSize, spx_word16_t);
- /* Window for analysis */
- /* FIXME: This is a kludge */
- if (st->subframeSize==80)
- {
- for (i=0;i<st->windowSize;i++)
- w_sig[i] = EXTRACT16(SHR32(MULT16_16(high[i],st->window[i>>1]),SIG_SHIFT));
- } else {
- for (i=0;i<st->windowSize;i++)
- w_sig[i] = EXTRACT16(SHR32(MULT16_16(high[i],st->window[i]),SIG_SHIFT));
- }
- /* Compute auto-correlation */
- _spx_autocorr(w_sig, autocorr, st->lpcSize+1, st->windowSize);
- autocorr[0] = ADD16(autocorr[0],MULT16_16_Q15(autocorr[0],st->lpc_floor)); /* Noise floor in auto-correlation domain */
-
- /* Lag windowing: equivalent to filtering in the power-spectrum domain */
- for (i=0;i<st->lpcSize+1;i++)
- autocorr[i] = MULT16_16_Q14(autocorr[i],st->lagWindow[i]);
-
- /* Levinson-Durbin */
- _spx_lpc(lpc, autocorr, st->lpcSize);
- }
-
- /* LPC to LSPs (x-domain) transform */
- roots=lpc_to_lsp (lpc, st->lpcSize, lsp, 10, LSP_DELTA1, stack);
- if (roots!=st->lpcSize)
- {
- roots = lpc_to_lsp (lpc, st->lpcSize, lsp, 10, LSP_DELTA2, stack);
- if (roots!=st->lpcSize) {
- /*If we can't find all LSP's, do some damage control and use a flat filter*/
- for (i=0;i<st->lpcSize;i++)
- {
- lsp[i]=st->old_lsp[i];
- }
- }
- }
-
- /* VBR code */
- if ((st->vbr_enabled || st->vad_enabled) && !dtx)
- {
- float ratio;
- if (st->abr_enabled)
- {
- float qual_change=0;
- if (st->abr_drift2 * st->abr_drift > 0)
- {
- /* Only adapt if long-term and short-term drift are the same sign */
- qual_change = -.00001*st->abr_drift/(1+st->abr_count);
- if (qual_change>.1)
- qual_change=.1;
- if (qual_change<-.1)
- qual_change=-.1;
- }
- st->vbr_quality += qual_change;
- if (st->vbr_quality>10)
- st->vbr_quality=10;
- if (st->vbr_quality<0)
- st->vbr_quality=0;
- }
-
-
- ratio = 2*log((1.f+e_high)/(1.f+e_low));
-
- speex_encoder_ctl(st->st_low, SPEEX_GET_RELATIVE_QUALITY, &st->relative_quality);
- if (ratio<-4)
- ratio=-4;
- if (ratio>2)
- ratio=2;
- /*if (ratio>-2)*/
- if (st->vbr_enabled)
- {
- spx_int32_t modeid;
- modeid = mode->nb_modes-1;
- st->relative_quality+=1.0*(ratio+2);
- if (st->relative_quality<-1)
- st->relative_quality=-1;
- while (modeid)
- {
- int v1;
- float thresh;
- v1=(int)floor(st->vbr_quality);
- if (v1==10)
- thresh = mode->vbr_thresh[modeid][v1];
- else
- thresh = (st->vbr_quality-v1) * mode->vbr_thresh[modeid][v1+1] +
- (1+v1-st->vbr_quality) * mode->vbr_thresh[modeid][v1];
- if (st->relative_quality >= thresh && st->sampling_rate*st->submodes[modeid]->bits_per_frame/st->full_frame_size <= st->vbr_max_high)
- break;
- modeid--;
- }
- speex_encoder_ctl(state, SPEEX_SET_HIGH_MODE, &modeid);
- if (st->abr_enabled)
- {
- spx_int32_t bitrate;
- speex_encoder_ctl(state, SPEEX_GET_BITRATE, &bitrate);
- st->abr_drift+=(bitrate-st->abr_enabled);
- st->abr_drift2 = .95*st->abr_drift2 + .05*(bitrate-st->abr_enabled);
- st->abr_count += 1.0;
- }
-
- } else {
- /* VAD only */
- int modeid;
- if (st->relative_quality<2.0)
- modeid=1;
- else
- modeid=st->submodeSelect;
- /*speex_encoder_ctl(state, SPEEX_SET_MODE, &mode);*/
- st->submodeID=modeid;
-
- }
- /*fprintf (stderr, "%f %f\n", ratio, low_qual);*/
- }
-
- if (st->encode_submode)
- {
- speex_bits_pack(bits, 1, 1);
- if (dtx)
- speex_bits_pack(bits, 0, SB_SUBMODE_BITS);
- else
- speex_bits_pack(bits, st->submodeID, SB_SUBMODE_BITS);
- }
-
- /* If null mode (no transmission), just set a couple things to zero*/
- if (dtx || st->submodes[st->submodeID] == NULL)
- {
- for (i=0;i<st->frame_size;i++)
- high[i]=VERY_SMALL;
-
- for (i=0;i<st->lpcSize;i++)
- st->mem_sw[i]=0;
- st->first=1;
-
- /* Final signal synthesis from excitation */
- iir_mem16(high, st->interp_qlpc, high, st->frame_size, st->lpcSize, st->mem_sp, stack);
-
- if (dtx)
- return 0;
- else
- return 1;
- }
-
-
- /* LSP quantization */
- SUBMODE(lsp_quant)(lsp, qlsp, st->lpcSize, bits);
-
- if (st->first)
- {
- for (i=0;i<st->lpcSize;i++)
- st->old_lsp[i] = lsp[i];
- for (i=0;i<st->lpcSize;i++)
- st->old_qlsp[i] = qlsp[i];
- }
-
- ALLOC(mem, st->lpcSize, spx_mem_t);
- ALLOC(syn_resp, st->subframeSize, spx_word16_t);
- ALLOC(innov, st->subframeSize, spx_sig_t);
- ALLOC(target, st->subframeSize, spx_word16_t);
-
- for (sub=0;sub<st->nbSubframes;sub++)
- {
- VARDECL(spx_word16_t *exc);
- VARDECL(spx_word16_t *res);
- VARDECL(spx_word16_t *sw);
- spx_word16_t *sp;
- spx_word16_t filter_ratio; /*Q7*/
- int offset;
- spx_word32_t rl, rh; /*Q13*/
- spx_word16_t eh=0;
-
- offset = st->subframeSize*sub;
- sp=high+offset;
- ALLOC(exc, st->subframeSize, spx_word16_t);
- ALLOC(res, st->subframeSize, spx_word16_t);
- ALLOC(sw, st->subframeSize, spx_word16_t);
-
- /* LSP interpolation (quantized and unquantized) */
- lsp_interpolate(st->old_lsp, lsp, interp_lsp, st->lpcSize, sub, st->nbSubframes);
- lsp_interpolate(st->old_qlsp, qlsp, interp_qlsp, st->lpcSize, sub, st->nbSubframes);
-
- lsp_enforce_margin(interp_lsp, st->lpcSize, LSP_MARGIN);
- lsp_enforce_margin(interp_qlsp, st->lpcSize, LSP_MARGIN);
-
- lsp_to_lpc(interp_lsp, interp_lpc, st->lpcSize,stack);
- lsp_to_lpc(interp_qlsp, st->interp_qlpc, st->lpcSize, stack);
-
- bw_lpc(st->gamma1, interp_lpc, bw_lpc1, st->lpcSize);
- bw_lpc(st->gamma2, interp_lpc, bw_lpc2, st->lpcSize);
-
- /* Compute mid-band (4000 Hz for wideband) response of low-band and high-band
- filters */
- st->pi_gain[sub]=LPC_SCALING;
- rh = LPC_SCALING;
- for (i=0;i<st->lpcSize;i+=2)
- {
- rh += st->interp_qlpc[i+1] - st->interp_qlpc[i];
- st->pi_gain[sub] += st->interp_qlpc[i] + st->interp_qlpc[i+1];
- }
-
- rl = low_pi_gain[sub];
-#ifdef FIXED_POINT
- filter_ratio=EXTRACT16(SATURATE(PDIV32(SHL32(ADD32(rl,82),7),ADD32(82,rh)),32767));
-#else
- filter_ratio=(rl+.01)/(rh+.01);
-#endif
-
- /* Compute "real excitation" */
- fir_mem16(sp, st->interp_qlpc, exc, st->subframeSize, st->lpcSize, st->mem_sp2, stack);
- /* Compute energy of low-band and high-band excitation */
-
- eh = compute_rms16(exc, st->subframeSize);
-
- if (!SUBMODE(innovation_quant)) {/* 1 for spectral folding excitation, 0 for stochastic */
- spx_word32_t g; /*Q7*/
- spx_word16_t el; /*Q0*/
- el = low_innov_rms[sub];
-
- /* Gain to use if we want to use the low-band excitation for high-band */
- g=PDIV32(MULT16_16(filter_ratio,eh),EXTEND32(ADD16(1,el)));
-
-#if 0
- {
- char *tmp_stack=stack;
- float *tmp_sig;
- float g2;
- ALLOC(tmp_sig, st->subframeSize, spx_sig_t);
- for (i=0;i<st->lpcSize;i++)
- mem[i]=st->mem_sp[i];
- iir_mem2(st->low_innov+offset, st->interp_qlpc, tmp_sig, st->subframeSize, st->lpcSize, mem);
- g2 = compute_rms(sp, st->subframeSize)/(.01+compute_rms(tmp_sig, st->subframeSize));
- /*fprintf (stderr, "gains: %f %f\n", g, g2);*/
- g = g2;
- stack = tmp_stack;
- }
-#endif
-
- /*print_vec(&g, 1, "gain factor");*/
- /* Gain quantization */
- {
- int quant = scal_quant(g, fold_quant_bound, 32);
- /*speex_warning_int("tata", quant);*/
- if (quant<0)
- quant=0;
- if (quant>31)
- quant=31;
- speex_bits_pack(bits, quant, 5);
- }
- if (st->innov_rms_save)
- {
- st->innov_rms_save[sub] = eh;
- }
- st->exc_rms[sub] = eh;
- } else {
- spx_word16_t gc; /*Q7*/
- spx_word32_t scale; /*Q14*/
- spx_word16_t el; /*Q0*/
- el = low_exc_rms[sub]; /*Q0*/
-
- gc = PDIV32_16(MULT16_16(filter_ratio,1+eh),1+el);
-
- /* This is a kludge that cleans up a historical bug */
- if (st->subframeSize==80)
- gc = MULT16_16_P15(QCONST16(0.70711f,15),gc);
- /*printf ("%f %f %f %f\n", el, eh, filter_ratio, gc);*/
- {
- int qgc = scal_quant(gc, gc_quant_bound, 16);
- speex_bits_pack(bits, qgc, 4);
- gc = MULT16_16_Q15(QCONST16(0.87360,15),gc_quant_bound[qgc]);
- }
- if (st->subframeSize==80)
- gc = MULT16_16_P14(QCONST16(1.4142f,14), gc);
-
- scale = SHL32(MULT16_16(PDIV32_16(SHL32(EXTEND32(gc),SIG_SHIFT-6),filter_ratio),(1+el)),6);
-
- compute_impulse_response(st->interp_qlpc, bw_lpc1, bw_lpc2, syn_resp, st->subframeSize, st->lpcSize, stack);
-
-
- /* Reset excitation */
- for (i=0;i<st->subframeSize;i++)
- res[i]=VERY_SMALL;
-
- /* Compute zero response (ringing) of A(z/g1) / ( A(z/g2) * Aq(z) ) */
- for (i=0;i<st->lpcSize;i++)
- mem[i]=st->mem_sp[i];
- iir_mem16(res, st->interp_qlpc, res, st->subframeSize, st->lpcSize, mem, stack);
-
- for (i=0;i<st->lpcSize;i++)
- mem[i]=st->mem_sw[i];
- filter_mem16(res, bw_lpc1, bw_lpc2, res, st->subframeSize, st->lpcSize, mem, stack);
-
- /* Compute weighted signal */
- for (i=0;i<st->lpcSize;i++)
- mem[i]=st->mem_sw[i];
- filter_mem16(sp, bw_lpc1, bw_lpc2, sw, st->subframeSize, st->lpcSize, mem, stack);
-
- /* Compute target signal */
- for (i=0;i<st->subframeSize;i++)
- target[i]=SUB16(sw[i],res[i]);
-
- signal_div(target, target, scale, st->subframeSize);
-
- /* Reset excitation */
- for (i=0;i<st->subframeSize;i++)
- innov[i]=0;
-
- /*print_vec(target, st->subframeSize, "\ntarget");*/
- SUBMODE(innovation_quant)(target, st->interp_qlpc, bw_lpc1, bw_lpc2,
- SUBMODE(innovation_params), st->lpcSize, st->subframeSize,
- innov, syn_resp, bits, stack, st->complexity, SUBMODE(double_codebook));
- /*print_vec(target, st->subframeSize, "after");*/
-
- signal_mul(innov, innov, scale, st->subframeSize);
-
- if (SUBMODE(double_codebook)) {
- char *tmp_stack=stack;
- VARDECL(spx_sig_t *innov2);
- ALLOC(innov2, st->subframeSize, spx_sig_t);
- for (i=0;i<st->subframeSize;i++)
- innov2[i]=0;
- for (i=0;i<st->subframeSize;i++)
- target[i]=MULT16_16_P13(QCONST16(2.5f,13), target[i]);
-
- SUBMODE(innovation_quant)(target, st->interp_qlpc, bw_lpc1, bw_lpc2,
- SUBMODE(innovation_params), st->lpcSize, st->subframeSize,
- innov2, syn_resp, bits, stack, st->complexity, 0);
- signal_mul(innov2, innov2, MULT16_32_P15(QCONST16(0.4f,15),scale), st->subframeSize);
-
- for (i=0;i<st->subframeSize;i++)
- innov[i] = ADD32(innov[i],innov2[i]);
- stack = tmp_stack;
- }
- for (i=0;i<st->subframeSize;i++)
- exc[i] = PSHR32(innov[i],SIG_SHIFT);
-
- if (st->innov_rms_save)
- {
- st->innov_rms_save[sub] = MULT16_16_Q15(QCONST16(.70711f, 15), compute_rms(innov, st->subframeSize));
- }
- st->exc_rms[sub] = compute_rms16(exc, st->subframeSize);
-
-
- }
-
-
- /*Keep the previous memory*/
- for (i=0;i<st->lpcSize;i++)
- mem[i]=st->mem_sp[i];
- /* Final signal synthesis from excitation */
- iir_mem16(exc, st->interp_qlpc, sp, st->subframeSize, st->lpcSize, st->mem_sp, stack);
-
- /* Compute weighted signal again, from synthesized speech (not sure it's the right thing) */
- filter_mem16(sp, bw_lpc1, bw_lpc2, sw, st->subframeSize, st->lpcSize, st->mem_sw, stack);
- }
-
- for (i=0;i<st->lpcSize;i++)
- st->old_lsp[i] = lsp[i];
- for (i=0;i<st->lpcSize;i++)
- st->old_qlsp[i] = qlsp[i];
-
- st->first=0;
-
- return 1;
-}
-
-
-
-
-
-void *sb_decoder_init(const SpeexMode *m)
-{
- spx_int32_t tmp;
- SBDecState *st;
- const SpeexSBMode *mode;
- st = (SBDecState*)speex_alloc(sizeof(SBDecState));
- if (!st)
- return NULL;
- st->mode = m;
- mode=(const SpeexSBMode*)m->mode;
- st->encode_submode = 1;
-
- st->st_low = speex_decoder_init(mode->nb_mode);
-#if defined(VAR_ARRAYS) || defined (USE_ALLOCA)
- st->stack = NULL;
-#else
- /*st->stack = (char*)speex_alloc_scratch(SB_DEC_STACK);*/
- speex_decoder_ctl(st->st_low, SPEEX_GET_STACK, &st->stack);
-#endif
-
- st->full_frame_size = 2*mode->frameSize;
- st->frame_size = mode->frameSize;
- st->subframeSize = mode->subframeSize;
- st->nbSubframes = mode->frameSize/mode->subframeSize;
- st->lpcSize=mode->lpcSize;
- speex_decoder_ctl(st->st_low, SPEEX_GET_SAMPLING_RATE, &st->sampling_rate);
- st->sampling_rate*=2;
- tmp=1;
- speex_decoder_ctl(st->st_low, SPEEX_SET_WIDEBAND, &tmp);
-
- st->submodes=mode->submodes;
- st->submodeID=mode->defaultSubmode;
-
- st->first=1;
-
- st->g0_mem = (spx_word32_t*)speex_alloc((QMF_ORDER)*sizeof(spx_word32_t));
- st->g1_mem = (spx_word32_t*)speex_alloc((QMF_ORDER)*sizeof(spx_word32_t));
-
- st->excBuf = (spx_word16_t*)speex_alloc((st->subframeSize)*sizeof(spx_word16_t));
-
- st->old_qlsp = (spx_lsp_t*)speex_alloc((st->lpcSize)*sizeof(spx_lsp_t));
- st->interp_qlpc = (spx_coef_t*)speex_alloc(st->lpcSize*sizeof(spx_coef_t));
-
- st->pi_gain = (spx_word32_t*)speex_alloc((st->nbSubframes)*sizeof(spx_word32_t));
- st->exc_rms = (spx_word16_t*)speex_alloc((st->nbSubframes)*sizeof(spx_word16_t));
- st->mem_sp = (spx_mem_t*)speex_alloc((2*st->lpcSize)*sizeof(spx_mem_t));
-
- st->innov_save = NULL;
-
-
- st->lpc_enh_enabled=0;
- st->seed = 1000;
-
-#ifdef ENABLE_VALGRIND
- VALGRIND_MAKE_READABLE(st, (st->stack-(char*)st));
-#endif
- return st;
-}
-
-void sb_decoder_destroy(void *state)
-{
- SBDecState *st;
- st = (SBDecState*)state;
- speex_decoder_destroy(st->st_low);
-#if !(defined(VAR_ARRAYS) || defined (USE_ALLOCA))
- /*speex_free_scratch(st->stack);*/
-#endif
-
- speex_free(st->g0_mem);
- speex_free(st->g1_mem);
- speex_free(st->excBuf);
- speex_free(st->old_qlsp);
- speex_free(st->interp_qlpc);
- speex_free(st->pi_gain);
- speex_free(st->exc_rms);
- speex_free(st->mem_sp);
-
- speex_free(state);
-}
-
-static void sb_decode_lost(SBDecState *st, spx_word16_t *out, int dtx, char *stack)
-{
- int i;
- int saved_modeid=0;
-
- if (dtx)
- {
- saved_modeid=st->submodeID;
- st->submodeID=1;
- } else {
- bw_lpc(QCONST16(0.99f,15), st->interp_qlpc, st->interp_qlpc, st->lpcSize);
- }
-
- st->first=1;
-
-
- /* Final signal synthesis from excitation */
- if (!dtx)
- {
- st->last_ener = MULT16_16_Q15(QCONST16(.9f,15),st->last_ener);
- }
- for (i=0;i<st->frame_size;i++)
- out[i+st->frame_size] = speex_rand(st->last_ener, &st->seed);
-
- iir_mem16(out+st->frame_size, st->interp_qlpc, out+st->frame_size, st->frame_size, st->lpcSize,
- st->mem_sp, stack);
-
-
- /* Reconstruct the original */
- qmf_synth(out, out+st->frame_size, h0, out, st->full_frame_size, QMF_ORDER, st->g0_mem, st->g1_mem, stack);
- if (dtx)
- {
- st->submodeID=saved_modeid;
- }
-
- return;
-}
-
-int sb_decode(void *state, SpeexBits *bits, void *vout)
-{
- int i, sub;
- SBDecState *st;
- int wideband;
- int ret;
- char *stack;
- VARDECL(spx_word32_t *low_pi_gain);
- VARDECL(spx_word16_t *low_exc_rms);
- VARDECL(spx_coef_t *ak);
- VARDECL(spx_lsp_t *qlsp);
- VARDECL(spx_lsp_t *interp_qlsp);
- spx_int32_t dtx;
- const SpeexSBMode *mode;
- spx_word16_t *out = (spx_word16_t*)vout;
- spx_word16_t *low_innov_alias;
- spx_word32_t exc_ener_sum = 0;
-
- st = (SBDecState*)state;
- stack=st->stack;
- mode = (const SpeexSBMode*)(st->mode->mode);
-
- low_innov_alias = out+st->frame_size;
- speex_decoder_ctl(st->st_low, SPEEX_SET_INNOVATION_SAVE, low_innov_alias);
- /* Decode the low-band */
- ret = speex_decode_native(st->st_low, bits, out);
-
- speex_decoder_ctl(st->st_low, SPEEX_GET_DTX_STATUS, &dtx);
-
- /* If error decoding the narrowband part, propagate error */
- if (ret!=0)
- {
- return ret;
- }
-
- if (!bits)
- {
- sb_decode_lost(st, out, dtx, stack);
- return 0;
- }
-
- if (st->encode_submode)
- {
-
- /*Check "wideband bit"*/
- if (speex_bits_remaining(bits)>0)
- wideband = speex_bits_peek(bits);
- else
- wideband = 0;
- if (wideband)
- {
- /*Regular wideband frame, read the submode*/
- wideband = speex_bits_unpack_unsigned(bits, 1);
- st->submodeID = speex_bits_unpack_unsigned(bits, SB_SUBMODE_BITS);
- } else
- {
- /*Was a narrowband frame, set "null submode"*/
- st->submodeID = 0;
- }
- if (st->submodeID != 0 && st->submodes[st->submodeID] == NULL)
- {
- speex_notify("Invalid mode encountered. The stream is corrupted.");
- return -2;
- }
- }
-
- /* If null mode (no transmission), just set a couple things to zero*/
- if (st->submodes[st->submodeID] == NULL)
- {
- if (dtx)
- {
- sb_decode_lost(st, out, 1, stack);
- return 0;
- }
-
- for (i=0;i<st->frame_size;i++)
- out[st->frame_size+i]=VERY_SMALL;
-
- st->first=1;
-
- /* Final signal synthesis from excitation */
- iir_mem16(out+st->frame_size, st->interp_qlpc, out+st->frame_size, st->frame_size, st->lpcSize, st->mem_sp, stack);
-
- qmf_synth(out, out+st->frame_size, h0, out, st->full_frame_size, QMF_ORDER, st->g0_mem, st->g1_mem, stack);
-
- return 0;
-
- }
-
- ALLOC(low_pi_gain, st->nbSubframes, spx_word32_t);
- ALLOC(low_exc_rms, st->nbSubframes, spx_word16_t);
- speex_decoder_ctl(st->st_low, SPEEX_GET_PI_GAIN, low_pi_gain);
- speex_decoder_ctl(st->st_low, SPEEX_GET_EXC, low_exc_rms);
-
- ALLOC(qlsp, st->lpcSize, spx_lsp_t);
- ALLOC(interp_qlsp, st->lpcSize, spx_lsp_t);
- SUBMODE(lsp_unquant)(qlsp, st->lpcSize, bits);
-
- if (st->first)
- {
- for (i=0;i<st->lpcSize;i++)
- st->old_qlsp[i] = qlsp[i];
- }
-
- ALLOC(ak, st->lpcSize, spx_coef_t);
-
- for (sub=0;sub<st->nbSubframes;sub++)
- {
- VARDECL(spx_word32_t *exc);
- spx_word16_t *innov_save=NULL;
- spx_word16_t *sp;
- spx_word16_t filter_ratio;
- spx_word16_t el=0;
- int offset;
- spx_word32_t rl=0,rh=0;
-
- offset = st->subframeSize*sub;
- sp=out+st->frame_size+offset;
- ALLOC(exc, st->subframeSize, spx_word32_t);
- /* Pointer for saving innovation */
- if (st->innov_save)
- {
- innov_save = st->innov_save+2*offset;
- for (i=0;i<2*st->subframeSize;i++)
- innov_save[i]=0;
- }
-
- /* LSP interpolation */
- lsp_interpolate(st->old_qlsp, qlsp, interp_qlsp, st->lpcSize, sub, st->nbSubframes);
-
- lsp_enforce_margin(interp_qlsp, st->lpcSize, LSP_MARGIN);
-
- /* LSP to LPC */
- lsp_to_lpc(interp_qlsp, ak, st->lpcSize, stack);
-
- /* Calculate reponse ratio between the low and high filter in the middle
- of the band (4000 Hz) */
-
- st->pi_gain[sub]=LPC_SCALING;
- rh = LPC_SCALING;
- for (i=0;i<st->lpcSize;i+=2)
- {
- rh += ak[i+1] - ak[i];
- st->pi_gain[sub] += ak[i] + ak[i+1];
- }
-
- rl = low_pi_gain[sub];
-#ifdef FIXED_POINT
- filter_ratio=EXTRACT16(SATURATE(PDIV32(SHL32(ADD32(rl,82),7),ADD32(82,rh)),32767));
-#else
- filter_ratio=(rl+.01)/(rh+.01);
-#endif
-
- for (i=0;i<st->subframeSize;i++)
- exc[i]=0;
- if (!SUBMODE(innovation_unquant))
- {
- spx_word32_t g;
- int quant;
-
- quant = speex_bits_unpack_unsigned(bits, 5);
- g= spx_exp(MULT16_16(QCONST16(.125f,11),(quant-10)));
-
- g = PDIV32(g, filter_ratio);
-
- for (i=0;i<st->subframeSize;i+=2)
- {
- exc[i]=SHL32(MULT16_32_P15(MULT16_16_Q15(mode->folding_gain,low_innov_alias[offset+i]),SHL32(g,6)),SIG_SHIFT);
- exc[i+1]=NEG32(SHL32(MULT16_32_P15(MULT16_16_Q15(mode->folding_gain,low_innov_alias[offset+i+1]),SHL32(g,6)),SIG_SHIFT));
- }
-
- } else {
- spx_word16_t gc;
- spx_word32_t scale;
- int qgc = speex_bits_unpack_unsigned(bits, 4);
-
- el = low_exc_rms[sub];
- gc = MULT16_16_Q15(QCONST16(0.87360,15),gc_quant_bound[qgc]);
-
- if (st->subframeSize==80)
- gc = MULT16_16_P14(QCONST16(1.4142f,14),gc);
-
- scale = SHL32(PDIV32(SHL32(MULT16_16(gc, el),3), filter_ratio),SIG_SHIFT-3);
- SUBMODE(innovation_unquant)(exc, SUBMODE(innovation_params), st->subframeSize,
- bits, stack, &st->seed);
-
- signal_mul(exc,exc,scale,st->subframeSize);
-
- if (SUBMODE(double_codebook)) {
- char *tmp_stack=stack;
- VARDECL(spx_sig_t *innov2);
- ALLOC(innov2, st->subframeSize, spx_sig_t);
- for (i=0;i<st->subframeSize;i++)
- innov2[i]=0;
- SUBMODE(innovation_unquant)(innov2, SUBMODE(innovation_params), st->subframeSize,
- bits, stack, &st->seed);
- signal_mul(innov2, innov2, MULT16_32_P15(QCONST16(0.4f,15),scale), st->subframeSize);
- for (i=0;i<st->subframeSize;i++)
- exc[i] = ADD32(exc[i],innov2[i]);
- stack = tmp_stack;
- }
-
- }
-
- if (st->innov_save)
- {
- for (i=0;i<st->subframeSize;i++)
- innov_save[2*i]=EXTRACT16(PSHR32(exc[i],SIG_SHIFT));
- }
-
- for (i=0;i<st->subframeSize;i++)
- sp[i]=st->excBuf[i];
- iir_mem16(sp, st->interp_qlpc, sp, st->subframeSize, st->lpcSize,
- st->mem_sp, stack);
- for (i=0;i<st->subframeSize;i++)
- st->excBuf[i]=EXTRACT16(PSHR32(exc[i],SIG_SHIFT));
- for (i=0;i<st->lpcSize;i++)
- st->interp_qlpc[i] = ak[i];
- st->exc_rms[sub] = compute_rms16(st->excBuf, st->subframeSize);
- exc_ener_sum = ADD32(exc_ener_sum, DIV32(MULT16_16(st->exc_rms[sub],st->exc_rms[sub]), st->nbSubframes));
- }
- st->last_ener = spx_sqrt(exc_ener_sum);
-
- qmf_synth(out, out+st->frame_size, h0, out, st->full_frame_size, QMF_ORDER, st->g0_mem, st->g1_mem, stack);
- for (i=0;i<st->lpcSize;i++)
- st->old_qlsp[i] = qlsp[i];
-
- st->first=0;
-
- return 0;
-}
-
-
-int sb_encoder_ctl(void *state, int request, void *ptr)
-{
- SBEncState *st;
- st=(SBEncState*)state;
- switch(request)
- {
- case SPEEX_GET_FRAME_SIZE:
- (*(spx_int32_t*)ptr) = st->full_frame_size;
- break;
- case SPEEX_SET_HIGH_MODE:
- st->submodeSelect = st->submodeID = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_SET_LOW_MODE:
- speex_encoder_ctl(st->st_low, SPEEX_SET_LOW_MODE, ptr);
- break;
- case SPEEX_SET_DTX:
- speex_encoder_ctl(st->st_low, SPEEX_SET_DTX, ptr);
- break;
- case SPEEX_GET_DTX:
- speex_encoder_ctl(st->st_low, SPEEX_GET_DTX, ptr);
- break;
- case SPEEX_GET_LOW_MODE:
- speex_encoder_ctl(st->st_low, SPEEX_GET_LOW_MODE, ptr);
- break;
- case SPEEX_SET_MODE:
- speex_encoder_ctl(st, SPEEX_SET_QUALITY, ptr);
- break;
- case SPEEX_SET_VBR:
- st->vbr_enabled = (*(spx_int32_t*)ptr);
- speex_encoder_ctl(st->st_low, SPEEX_SET_VBR, ptr);
- break;
- case SPEEX_GET_VBR:
- (*(spx_int32_t*)ptr) = st->vbr_enabled;
- break;
- case SPEEX_SET_VAD:
- st->vad_enabled = (*(spx_int32_t*)ptr);
- speex_encoder_ctl(st->st_low, SPEEX_SET_VAD, ptr);
- break;
- case SPEEX_GET_VAD:
- (*(spx_int32_t*)ptr) = st->vad_enabled;
- break;
- case SPEEX_SET_VBR_QUALITY:
- {
- spx_int32_t q;
- float qual = (*(float*)ptr)+.6;
- st->vbr_quality = (*(float*)ptr);
- if (qual>10)
- qual=10;
- q=(int)floor(.5+*(float*)ptr);
- if (q>10)
- q=10;
- speex_encoder_ctl(st->st_low, SPEEX_SET_VBR_QUALITY, &qual);
- speex_encoder_ctl(state, SPEEX_SET_QUALITY, &q);
- break;
- }
- case SPEEX_GET_VBR_QUALITY:
- (*(float*)ptr) = st->vbr_quality;
- break;
- case SPEEX_SET_ABR:
- st->abr_enabled = (*(spx_int32_t*)ptr);
- st->vbr_enabled = st->abr_enabled!=0;
- speex_encoder_ctl(st->st_low, SPEEX_SET_VBR, &st->vbr_enabled);
- if (st->vbr_enabled)
- {
- spx_int32_t i=10, rate, target;
- float vbr_qual;
- target = (*(spx_int32_t*)ptr);
- while (i>=0)
- {
- speex_encoder_ctl(st, SPEEX_SET_QUALITY, &i);
- speex_encoder_ctl(st, SPEEX_GET_BITRATE, &rate);
- if (rate <= target)
- break;
- i--;
- }
- vbr_qual=i;
- if (vbr_qual<0)
- vbr_qual=0;
- speex_encoder_ctl(st, SPEEX_SET_VBR_QUALITY, &vbr_qual);
- st->abr_count=0;
- st->abr_drift=0;
- st->abr_drift2=0;
- }
-
- break;
- case SPEEX_GET_ABR:
- (*(spx_int32_t*)ptr) = st->abr_enabled;
- break;
- case SPEEX_SET_QUALITY:
- {
- spx_int32_t nb_qual;
- int quality = (*(spx_int32_t*)ptr);
- if (quality < 0)
- quality = 0;
- if (quality > 10)
- quality = 10;
- st->submodeSelect = st->submodeID = ((const SpeexSBMode*)(st->mode->mode))->quality_map[quality];
- nb_qual = ((const SpeexSBMode*)(st->mode->mode))->low_quality_map[quality];
- speex_encoder_ctl(st->st_low, SPEEX_SET_MODE, &nb_qual);
- }
- break;
- case SPEEX_SET_COMPLEXITY:
- speex_encoder_ctl(st->st_low, SPEEX_SET_COMPLEXITY, ptr);
- st->complexity = (*(spx_int32_t*)ptr);
- if (st->complexity<1)
- st->complexity=1;
- break;
- case SPEEX_GET_COMPLEXITY:
- (*(spx_int32_t*)ptr) = st->complexity;
- break;
- case SPEEX_SET_BITRATE:
- {
- spx_int32_t i=10;
- spx_int32_t rate, target;
- target = (*(spx_int32_t*)ptr);
- while (i>=0)
- {
- speex_encoder_ctl(st, SPEEX_SET_QUALITY, &i);
- speex_encoder_ctl(st, SPEEX_GET_BITRATE, &rate);
- if (rate <= target)
- break;
- i--;
- }
- }
- break;
- case SPEEX_GET_BITRATE:
- speex_encoder_ctl(st->st_low, request, ptr);
- /*fprintf (stderr, "before: %d\n", (*(int*)ptr));*/
- if (st->submodes[st->submodeID])
- (*(spx_int32_t*)ptr) += st->sampling_rate*SUBMODE(bits_per_frame)/st->full_frame_size;
- else
- (*(spx_int32_t*)ptr) += st->sampling_rate*(SB_SUBMODE_BITS+1)/st->full_frame_size;
- /*fprintf (stderr, "after: %d\n", (*(int*)ptr));*/
- break;
- case SPEEX_SET_SAMPLING_RATE:
- {
- spx_int32_t tmp=(*(spx_int32_t*)ptr);
- st->sampling_rate = tmp;
- tmp>>=1;
- speex_encoder_ctl(st->st_low, SPEEX_SET_SAMPLING_RATE, &tmp);
- }
- break;
- case SPEEX_GET_SAMPLING_RATE:
- (*(spx_int32_t*)ptr)=st->sampling_rate;
- break;
- case SPEEX_RESET_STATE:
- {
- int i;
- st->first = 1;
- for (i=0;i<st->lpcSize;i++)
- st->old_lsp[i]=(M_PI*((float)(i+1)))/(st->lpcSize+1);
- for (i=0;i<st->lpcSize;i++)
- st->mem_sw[i]=st->mem_sp[i]=st->mem_sp2[i]=0;
- for (i=0;i<QMF_ORDER;i++)
- st->h0_mem[i]=st->h1_mem[i]=0;
- }
- break;
- case SPEEX_SET_SUBMODE_ENCODING:
- st->encode_submode = (*(spx_int32_t*)ptr);
- speex_encoder_ctl(st->st_low, SPEEX_SET_SUBMODE_ENCODING, ptr);
- break;
- case SPEEX_GET_SUBMODE_ENCODING:
- (*(spx_int32_t*)ptr) = st->encode_submode;
- break;
- case SPEEX_GET_LOOKAHEAD:
- speex_encoder_ctl(st->st_low, SPEEX_GET_LOOKAHEAD, ptr);
- (*(spx_int32_t*)ptr) = 2*(*(spx_int32_t*)ptr) + QMF_ORDER - 1;
- break;
- case SPEEX_SET_PLC_TUNING:
- speex_encoder_ctl(st->st_low, SPEEX_SET_PLC_TUNING, ptr);
- break;
- case SPEEX_GET_PLC_TUNING:
- speex_encoder_ctl(st->st_low, SPEEX_GET_PLC_TUNING, ptr);
- break;
- case SPEEX_SET_VBR_MAX_BITRATE:
- {
- st->vbr_max = (*(spx_int32_t*)ptr);
- if (SPEEX_SET_VBR_MAX_BITRATE<1)
- {
- speex_encoder_ctl(st->st_low, SPEEX_SET_VBR_MAX_BITRATE, &st->vbr_max);
- st->vbr_max_high = 17600;
- } else {
- spx_int32_t low_rate;
- if (st->vbr_max >= 42200)
- {
- st->vbr_max_high = 17600;
- } else if (st->vbr_max >= 27800)
- {
- st->vbr_max_high = 9600;
- } else if (st->vbr_max > 20600)
- {
- st->vbr_max_high = 5600;
- } else {
- st->vbr_max_high = 1800;
- }
- if (st->subframeSize==80)
- st->vbr_max_high = 1800;
- low_rate = st->vbr_max - st->vbr_max_high;
- speex_encoder_ctl(st->st_low, SPEEX_SET_VBR_MAX_BITRATE, &low_rate);
- }
- }
- break;
- case SPEEX_GET_VBR_MAX_BITRATE:
- (*(spx_int32_t*)ptr) = st->vbr_max;
- break;
- case SPEEX_SET_HIGHPASS:
- speex_encoder_ctl(st->st_low, SPEEX_SET_HIGHPASS, ptr);
- break;
- case SPEEX_GET_HIGHPASS:
- speex_encoder_ctl(st->st_low, SPEEX_GET_HIGHPASS, ptr);
- break;
-
-
- /* This is all internal stuff past this point */
- case SPEEX_GET_PI_GAIN:
- {
- int i;
- spx_word32_t *g = (spx_word32_t*)ptr;
- for (i=0;i<st->nbSubframes;i++)
- g[i]=st->pi_gain[i];
- }
- break;
- case SPEEX_GET_EXC:
- {
- int i;
- for (i=0;i<st->nbSubframes;i++)
- ((spx_word16_t*)ptr)[i] = st->exc_rms[i];
- }
- break;
- case SPEEX_GET_RELATIVE_QUALITY:
- (*(float*)ptr)=st->relative_quality;
- break;
- case SPEEX_SET_INNOVATION_SAVE:
- st->innov_rms_save = (spx_word16_t*)ptr;
- break;
- case SPEEX_SET_WIDEBAND:
- speex_encoder_ctl(st->st_low, SPEEX_SET_WIDEBAND, ptr);
- break;
- case SPEEX_GET_STACK:
- *((char**)ptr) = st->stack;
- break;
- default:
- speex_warning_int("Unknown nb_ctl request: ", request);
- return -1;
- }
- return 0;
-}
-
-int sb_decoder_ctl(void *state, int request, void *ptr)
-{
- SBDecState *st;
- st=(SBDecState*)state;
- switch(request)
- {
- case SPEEX_SET_HIGH_MODE:
- st->submodeID = (*(spx_int32_t*)ptr);
- break;
- case SPEEX_SET_LOW_MODE:
- speex_decoder_ctl(st->st_low, SPEEX_SET_LOW_MODE, ptr);
- break;
- case SPEEX_GET_LOW_MODE:
- speex_decoder_ctl(st->st_low, SPEEX_GET_LOW_MODE, ptr);
- break;
- case SPEEX_GET_FRAME_SIZE:
- (*(spx_int32_t*)ptr) = st->full_frame_size;
- break;
- case SPEEX_SET_ENH:
- speex_decoder_ctl(st->st_low, request, ptr);
- st->lpc_enh_enabled = *((spx_int32_t*)ptr);
- break;
- case SPEEX_GET_ENH:
- *((spx_int32_t*)ptr) = st->lpc_enh_enabled;
- break;
- case SPEEX_SET_MODE:
- case SPEEX_SET_QUALITY:
- {
- spx_int32_t nb_qual;
- int quality = (*(spx_int32_t*)ptr);
- if (quality < 0)
- quality = 0;
- if (quality > 10)
- quality = 10;
- st->submodeID = ((const SpeexSBMode*)(st->mode->mode))->quality_map[quality];
- nb_qual = ((const SpeexSBMode*)(st->mode->mode))->low_quality_map[quality];
- speex_decoder_ctl(st->st_low, SPEEX_SET_MODE, &nb_qual);
- }
- break;
- case SPEEX_GET_BITRATE:
- speex_decoder_ctl(st->st_low, request, ptr);
- if (st->submodes[st->submodeID])
- (*(spx_int32_t*)ptr) += st->sampling_rate*SUBMODE(bits_per_frame)/st->full_frame_size;
- else
- (*(spx_int32_t*)ptr) += st->sampling_rate*(SB_SUBMODE_BITS+1)/st->full_frame_size;
- break;
- case SPEEX_SET_SAMPLING_RATE:
- {
- spx_int32_t tmp=(*(spx_int32_t*)ptr);
- st->sampling_rate = tmp;
- tmp>>=1;
- speex_decoder_ctl(st->st_low, SPEEX_SET_SAMPLING_RATE, &tmp);
- }
- break;
- case SPEEX_GET_SAMPLING_RATE:
- (*(spx_int32_t*)ptr)=st->sampling_rate;
- break;
- case SPEEX_SET_HANDLER:
- speex_decoder_ctl(st->st_low, SPEEX_SET_HANDLER, ptr);
- break;
- case SPEEX_SET_USER_HANDLER:
- speex_decoder_ctl(st->st_low, SPEEX_SET_USER_HANDLER, ptr);
- break;
- case SPEEX_RESET_STATE:
- {
- int i;
- for (i=0;i<2*st->lpcSize;i++)
- st->mem_sp[i]=0;
- for (i=0;i<QMF_ORDER;i++)
- st->g0_mem[i]=st->g1_mem[i]=0;
- st->last_ener=0;
- }
- break;
- case SPEEX_SET_SUBMODE_ENCODING:
- st->encode_submode = (*(spx_int32_t*)ptr);
- speex_decoder_ctl(st->st_low, SPEEX_SET_SUBMODE_ENCODING, ptr);
- break;
- case SPEEX_GET_SUBMODE_ENCODING:
- (*(spx_int32_t*)ptr) = st->encode_submode;
- break;
- case SPEEX_GET_LOOKAHEAD:
- speex_decoder_ctl(st->st_low, SPEEX_GET_LOOKAHEAD, ptr);
- (*(spx_int32_t*)ptr) = 2*(*(spx_int32_t*)ptr);
- break;
- case SPEEX_SET_HIGHPASS:
- speex_decoder_ctl(st->st_low, SPEEX_SET_HIGHPASS, ptr);
- break;
- case SPEEX_GET_HIGHPASS:
- speex_decoder_ctl(st->st_low, SPEEX_GET_HIGHPASS, ptr);
- break;
-
- case SPEEX_GET_PI_GAIN:
- {
- int i;
- spx_word32_t *g = (spx_word32_t*)ptr;
- for (i=0;i<st->nbSubframes;i++)
- g[i]=st->pi_gain[i];
- }
- break;
- case SPEEX_GET_EXC:
- {
- int i;
- for (i=0;i<st->nbSubframes;i++)
- ((spx_word16_t*)ptr)[i] = st->exc_rms[i];
- }
- break;
- case SPEEX_GET_DTX_STATUS:
- speex_decoder_ctl(st->st_low, SPEEX_GET_DTX_STATUS, ptr);
- break;
- case SPEEX_SET_INNOVATION_SAVE:
- st->innov_save = (spx_word16_t*)ptr;
- break;
- case SPEEX_SET_WIDEBAND:
- speex_decoder_ctl(st->st_low, SPEEX_SET_WIDEBAND, ptr);
- break;
- case SPEEX_GET_STACK:
- *((char**)ptr) = st->stack;
- break;
- default:
- speex_warning_int("Unknown nb_ctl request: ", request);
- return -1;
- }
- return 0;
-}
-
-#endif
-
diff --git a/3rdparty/speex/libspeex/sb_celp.h b/3rdparty/speex/libspeex/sb_celp.h
deleted file mode 100644
index a0dc3afe..00000000
--- a/3rdparty/speex/libspeex/sb_celp.h
+++ /dev/null
@@ -1,155 +0,0 @@
-/* Copyright (C) 2002-2006 Jean-Marc Valin */
-/**
- @file sb_celp.h
- @brief Sub-band CELP mode used for wideband encoding
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifndef SB_CELP_H
-#define SB_CELP_H
-
-#include "modes.h"
-#include <speex/speex_bits.h>
-#include "nb_celp.h"
-
-/**Structure representing the full state of the sub-band encoder*/
-typedef struct SBEncState {
- const SpeexMode *mode; /**< Pointer to the mode (containing for vtable info) */
- void *st_low; /**< State of the low-band (narrowband) encoder */
- int full_frame_size; /**< Length of full-band frames*/
- int frame_size; /**< Length of high-band frames*/
- int subframeSize; /**< Length of high-band sub-frames*/
- int nbSubframes; /**< Number of high-band sub-frames*/
- int windowSize; /**< Length of high-band LPC window*/
- int lpcSize; /**< Order of high-band LPC analysis */
- int bufSize; /**< Buffer size */
- int first; /**< First frame? */
- float lag_factor; /**< Lag-windowing control parameter */
- spx_word16_t lpc_floor; /**< Controls LPC analysis noise floor */
- spx_word16_t gamma1; /**< Perceptual weighting coef 1 */
- spx_word16_t gamma2; /**< Perceptual weighting coef 2 */
-
- char *stack; /**< Temporary allocation stack */
- spx_word16_t *high; /**< High-band signal (buffer) */
- spx_word16_t *h0_mem, *h1_mem;
-
- const spx_word16_t *window; /**< LPC analysis window */
- spx_word16_t *lagWindow; /**< Auto-correlation window */
- spx_lsp_t *old_lsp; /**< LSPs of previous frame */
- spx_lsp_t *old_qlsp; /**< Quantized LSPs of previous frame */
- spx_coef_t *interp_qlpc; /**< Interpolated quantized LPCs for current sub-frame */
-
- spx_mem_t *mem_sp; /**< Synthesis signal memory */
- spx_mem_t *mem_sp2;
- spx_mem_t *mem_sw; /**< Perceptual signal memory */
- spx_word32_t *pi_gain;
- spx_word16_t *exc_rms;
- spx_word16_t *innov_rms_save; /**< If non-NULL, innovation is copied here */
-
- float vbr_quality; /**< Quality setting for VBR encoding */
- int vbr_enabled; /**< 1 for enabling VBR, 0 otherwise */
- spx_int32_t vbr_max; /**< Max bit-rate allowed in VBR mode (total) */
- spx_int32_t vbr_max_high; /**< Max bit-rate allowed in VBR mode for the high-band */
- spx_int32_t abr_enabled; /**< ABR setting (in bps), 0 if off */
- float abr_drift;
- float abr_drift2;
- float abr_count;
- int vad_enabled; /**< 1 for enabling VAD, 0 otherwise */
- float relative_quality;
-
- int encode_submode;
- const SpeexSubmode * const *submodes;
- int submodeID;
- int submodeSelect;
- int complexity;
- spx_int32_t sampling_rate;
-
-} SBEncState;
-
-
-/**Structure representing the full state of the sub-band decoder*/
-typedef struct SBDecState {
- const SpeexMode *mode; /**< Pointer to the mode (containing for vtable info) */
- void *st_low; /**< State of the low-band (narrowband) encoder */
- int full_frame_size;
- int frame_size;
- int subframeSize;
- int nbSubframes;
- int lpcSize;
- int first;
- spx_int32_t sampling_rate;
- int lpc_enh_enabled;
-
- char *stack;
- spx_word32_t *g0_mem, *g1_mem;
-
- spx_word16_t *excBuf;
- spx_lsp_t *old_qlsp;
- spx_coef_t *interp_qlpc;
-
- spx_mem_t *mem_sp;
- spx_word32_t *pi_gain;
- spx_word16_t *exc_rms;
- spx_word16_t *innov_save; /** If non-NULL, innovation is copied here */
-
- spx_word16_t last_ener;
- spx_int32_t seed;
-
- int encode_submode;
- const SpeexSubmode * const *submodes;
- int submodeID;
-} SBDecState;
-
-
-/**Initializes encoder state*/
-void *sb_encoder_init(const SpeexMode *m);
-
-/**De-allocates encoder state resources*/
-void sb_encoder_destroy(void *state);
-
-/**Encodes one frame*/
-int sb_encode(void *state, void *in, SpeexBits *bits);
-
-
-/**Initializes decoder state*/
-void *sb_decoder_init(const SpeexMode *m);
-
-/**De-allocates decoder state resources*/
-void sb_decoder_destroy(void *state);
-
-/**Decodes one frame*/
-int sb_decode(void *state, SpeexBits *bits, void *out);
-
-int sb_encoder_ctl(void *state, int request, void *ptr);
-
-int sb_decoder_ctl(void *state, int request, void *ptr);
-
-#endif
diff --git a/3rdparty/speex/libspeex/smallft.c b/3rdparty/speex/libspeex/smallft.c
deleted file mode 100644
index 269549db..00000000
--- a/3rdparty/speex/libspeex/smallft.c
+++ /dev/null
@@ -1,1260 +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.19 2003/10/08 05:12:37 jm 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
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#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 spx_drft_forward(struct drft_lookup *l,float *data){
- if(l->n==1)return;
- drftf1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache);
-}
-
-void spx_drft_backward(struct drft_lookup *l,float *data){
- if (l->n==1)return;
- drftb1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache);
-}
-
-void spx_drft_init(struct drft_lookup *l,int n)
-{
- l->n=n;
- l->trigcache=(float*)speex_alloc(3*n*sizeof(*l->trigcache));
- l->splitcache=(int*)speex_alloc(32*sizeof(*l->splitcache));
- fdrffti(n, l->trigcache, l->splitcache);
-}
-
-void spx_drft_clear(struct drft_lookup *l)
-{
- if(l)
- {
- if(l->trigcache)
- speex_free(l->trigcache);
- if(l->splitcache)
- speex_free(l->splitcache);
- }
-}
diff --git a/3rdparty/speex/libspeex/smallft.h b/3rdparty/speex/libspeex/smallft.h
deleted file mode 100644
index 446e2f65..00000000
--- a/3rdparty/speex/libspeex/smallft.h
+++ /dev/null
@@ -1,46 +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.3 2003/09/16 18:35:45 jm Exp $
-
- ********************************************************************/
-/**
- @file smallft.h
- @brief Discrete Rotational Fourier Transform (DRFT)
-*/
-
-#ifndef _V_SMFT_H_
-#define _V_SMFT_H_
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Discrete Rotational Fourier Transform lookup */
-struct drft_lookup{
- int n;
- float *trigcache;
- int *splitcache;
-};
-
-extern void spx_drft_forward(struct drft_lookup *l,float *data);
-extern void spx_drft_backward(struct drft_lookup *l,float *data);
-extern void spx_drft_init(struct drft_lookup *l,int n);
-extern void spx_drft_clear(struct drft_lookup *l);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/3rdparty/speex/libspeex/speex.c b/3rdparty/speex/libspeex/speex.c
deleted file mode 100644
index 846e0218..00000000
--- a/3rdparty/speex/libspeex/speex.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: speex.c
-
- Basic Speex functions
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "modes.h"
-#include <math.h>
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-#define MAX_IN_SAMPLES 640
-
-
-
-void *speex_encoder_init(const SpeexMode *mode)
-{
- return mode->enc_init(mode);
-}
-
-void *speex_decoder_init(const SpeexMode *mode)
-{
- return mode->dec_init(mode);
-}
-
-void speex_encoder_destroy(void *state)
-{
- (*((SpeexMode**)state))->enc_destroy(state);
-}
-
-void speex_decoder_destroy(void *state)
-{
- (*((SpeexMode**)state))->dec_destroy(state);
-}
-
-
-
-int speex_encode_native(void *state, spx_word16_t *in, SpeexBits *bits)
-{
- return (*((SpeexMode**)state))->enc(state, in, bits);
-}
-
-int speex_decode_native(void *state, SpeexBits *bits, spx_word16_t *out)
-{
- return (*((SpeexMode**)state))->dec(state, bits, out);
-}
-
-
-
-#ifdef FIXED_POINT
-
-int speex_encode(void *state, float *in, SpeexBits *bits)
-{
- int i;
- spx_int32_t N;
- spx_int16_t short_in[MAX_IN_SAMPLES];
- speex_encoder_ctl(state, SPEEX_GET_FRAME_SIZE, &N);
- for (i=0;i<N;i++)
- {
- if (in[i]>32767.f)
- short_in[i] = 32767;
- else if (in[i]<-32768.f)
- short_in[i] = -32768;
- else
- short_in[i] = (spx_int16_t)floor(.5+in[i]);
- }
- return (*((SpeexMode**)state))->enc(state, short_in, bits);
-}
-
-int speex_encode_int(void *state, spx_int16_t *in, SpeexBits *bits)
-{
- SpeexMode *mode;
- mode = *(SpeexMode**)state;
- return (mode)->enc(state, in, bits);
-}
-
-int speex_decode(void *state, SpeexBits *bits, float *out)
-{
- int i, ret;
- spx_int32_t N;
- spx_int16_t short_out[MAX_IN_SAMPLES];
- speex_decoder_ctl(state, SPEEX_GET_FRAME_SIZE, &N);
- ret = (*((SpeexMode**)state))->dec(state, bits, short_out);
- for (i=0;i<N;i++)
- out[i] = short_out[i];
- return ret;
-}
-
-int speex_decode_int(void *state, SpeexBits *bits, spx_int16_t *out)
-{
- SpeexMode *mode = *(SpeexMode**)state;
- return (mode)->dec(state, bits, out);
-}
-
-#else
-
-int speex_encode(void *state, float *in, SpeexBits *bits)
-{
- return (*((SpeexMode**)state))->enc(state, in, bits);
-}
-
-int speex_encode_int(void *state, spx_int16_t *in, SpeexBits *bits)
-{
- int i;
- spx_int32_t N;
- float float_in[MAX_IN_SAMPLES];
- speex_encoder_ctl(state, SPEEX_GET_FRAME_SIZE, &N);
- for (i=0;i<N;i++)
- float_in[i] = in[i];
- return (*((SpeexMode**)state))->enc(state, float_in, bits);
-}
-
-int speex_decode(void *state, SpeexBits *bits, float *out)
-{
- return (*((SpeexMode**)state))->dec(state, bits, out);
-}
-
-int speex_decode_int(void *state, SpeexBits *bits, spx_int16_t *out)
-{
- int i;
- spx_int32_t N;
- float float_out[MAX_IN_SAMPLES];
- int ret;
- speex_decoder_ctl(state, SPEEX_GET_FRAME_SIZE, &N);
- ret = (*((SpeexMode**)state))->dec(state, bits, float_out);
- for (i=0;i<N;i++)
- {
- if (float_out[i]>32767.f)
- out[i] = 32767;
- else if (float_out[i]<-32768.f)
- out[i] = -32768;
- else
- out[i] = (spx_int16_t)floor(.5+float_out[i]);
- }
- return ret;
-}
-#endif
-
-
-
-int speex_encoder_ctl(void *state, int request, void *ptr)
-{
- return (*((SpeexMode**)state))->enc_ctl(state, request, ptr);
-}
-
-int speex_decoder_ctl(void *state, int request, void *ptr)
-{
- return (*((SpeexMode**)state))->dec_ctl(state, request, ptr);
-}
-
-
-
-int nb_mode_query(const void *mode, int request, void *ptr)
-{
- const SpeexNBMode *m = (const SpeexNBMode*)mode;
-
- switch (request)
- {
- case SPEEX_MODE_FRAME_SIZE:
- *((int*)ptr)=m->frameSize;
- break;
- case SPEEX_SUBMODE_BITS_PER_FRAME:
- if (*((int*)ptr)==0)
- *((int*)ptr) = NB_SUBMODE_BITS+1;
- else if (m->submodes[*((int*)ptr)]==NULL)
- *((int*)ptr) = -1;
- else
- *((int*)ptr) = m->submodes[*((int*)ptr)]->bits_per_frame;
- break;
- default:
- speex_warning_int("Unknown nb_mode_query request: ", request);
- return -1;
- }
- return 0;
-}
-
-int wb_mode_query(const void *mode, int request, void *ptr)
-{
- const SpeexSBMode *m = (const SpeexSBMode*)mode;
-
- switch (request)
- {
- case SPEEX_MODE_FRAME_SIZE:
- *((int*)ptr)=2*m->frameSize;
- break;
- case SPEEX_SUBMODE_BITS_PER_FRAME:
- if (*((int*)ptr)==0)
- *((int*)ptr) = SB_SUBMODE_BITS+1;
- else if (m->submodes[*((int*)ptr)]==NULL)
- *((int*)ptr) = -1;
- else
- *((int*)ptr) = m->submodes[*((int*)ptr)]->bits_per_frame;
- break;
- default:
- speex_warning_int("Unknown wb_mode_query request: ", request);
- return -1;
- }
- return 0;
-}
-
-
-int speex_lib_ctl(int request, void *ptr)
-{
- switch (request)
- {
- case SPEEX_LIB_GET_MAJOR_VERSION:
- *((int*)ptr) = SPEEX_MAJOR_VERSION;
- break;
- case SPEEX_LIB_GET_MINOR_VERSION:
- *((int*)ptr) = SPEEX_MINOR_VERSION;
- break;
- case SPEEX_LIB_GET_MICRO_VERSION:
- *((int*)ptr) = SPEEX_MICRO_VERSION;
- break;
- case SPEEX_LIB_GET_EXTRA_VERSION:
- *((const char**)ptr) = SPEEX_EXTRA_VERSION;
- break;
- case SPEEX_LIB_GET_VERSION_STRING:
- *((const char**)ptr) = SPEEX_VERSION;
- break;
- /*case SPEEX_LIB_SET_ALLOC_FUNC:
- break;
- case SPEEX_LIB_GET_ALLOC_FUNC:
- break;
- case SPEEX_LIB_SET_FREE_FUNC:
- break;
- case SPEEX_LIB_GET_FREE_FUNC:
- break;*/
- default:
- speex_warning_int("Unknown wb_mode_query request: ", request);
- return -1;
- }
- return 0;
-}
diff --git a/3rdparty/speex/libspeex/speex_callbacks.c b/3rdparty/speex/libspeex/speex_callbacks.c
deleted file mode 100644
index 682322e6..00000000
--- a/3rdparty/speex/libspeex/speex_callbacks.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File speex_callbacks.c
- Callback handling and in-band signalling
-
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <speex/speex_callbacks.h>
-#include "misc.h"
-
-int speex_inband_handler(SpeexBits *bits, SpeexCallback *callback_list, void *state)
-{
- int id;
- SpeexCallback *callback;
- /*speex_bits_advance(bits, 5);*/
- id=speex_bits_unpack_unsigned(bits, 4);
- callback = callback_list+id;
-
- if (callback->func)
- {
- return callback->func(bits, state, callback->data);
- } else
- /*If callback is not registered, skip the right number of bits*/
- {
- int adv;
- if (id<2)
- adv = 1;
- else if (id<8)
- adv = 4;
- else if (id<10)
- adv = 8;
- else if (id<12)
- adv = 16;
- else if (id<14)
- adv = 32;
- else
- adv = 64;
- speex_bits_advance(bits, adv);
- }
- return 0;
-}
-
-int speex_std_mode_request_handler(SpeexBits *bits, void *state, void *data)
-{
- spx_int32_t m;
- m = speex_bits_unpack_unsigned(bits, 4);
- speex_encoder_ctl(data, SPEEX_SET_MODE, &m);
- return 0;
-}
-
-int speex_std_low_mode_request_handler(SpeexBits *bits, void *state, void *data)
-{
- spx_int32_t m;
- m = speex_bits_unpack_unsigned(bits, 4);
- speex_encoder_ctl(data, SPEEX_SET_LOW_MODE, &m);
- return 0;
-}
-
-int speex_std_high_mode_request_handler(SpeexBits *bits, void *state, void *data)
-{
- spx_int32_t m;
- m = speex_bits_unpack_unsigned(bits, 4);
- speex_encoder_ctl(data, SPEEX_SET_HIGH_MODE, &m);
- return 0;
-}
-
-int speex_std_vbr_request_handler(SpeexBits *bits, void *state, void *data)
-{
- spx_int32_t vbr;
- vbr = speex_bits_unpack_unsigned(bits, 1);
- speex_encoder_ctl(data, SPEEX_SET_VBR, &vbr);
- return 0;
-}
-
-int speex_std_enh_request_handler(SpeexBits *bits, void *state, void *data)
-{
- spx_int32_t enh;
- enh = speex_bits_unpack_unsigned(bits, 1);
- speex_decoder_ctl(data, SPEEX_SET_ENH, &enh);
- return 0;
-}
-
-int speex_std_vbr_quality_request_handler(SpeexBits *bits, void *state, void *data)
-{
- float qual;
- qual = speex_bits_unpack_unsigned(bits, 4);
- speex_encoder_ctl(data, SPEEX_SET_VBR_QUALITY, &qual);
- return 0;
-}
-
-
-int speex_std_char_handler(SpeexBits *bits, void *state, void *data)
-{
- unsigned char ch;
- ch = speex_bits_unpack_unsigned(bits, 8);
- _speex_putc(ch, data);
- /*printf("speex_std_char_handler ch=%x\n", ch);*/
- return 0;
-}
-
-
-
-/* Default handler for user callbacks: skip it */
-int speex_default_user_handler(SpeexBits *bits, void *state, void *data)
-{
- int req_size = speex_bits_unpack_unsigned(bits, 4);
- speex_bits_advance(bits, 5+8*req_size);
- return 0;
-}
diff --git a/3rdparty/speex/libspeex/speex_header.c b/3rdparty/speex/libspeex/speex_header.c
deleted file mode 100644
index 8e10851e..00000000
--- a/3rdparty/speex/libspeex/speex_header.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: speex_header.c
- Describes the Speex header
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "misc.h"
-#include <speex/speex_header.h>
-#include <speex/speex.h>
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-#define ENDIAN_SWITCH(x) {x=le_int(x);}
-
-
-/*
-typedef struct SpeexHeader {
- char speex_string[8];
- char speex_version[SPEEX_HEADER_VERSION_LENGTH];
- int speex_version_id;
- int header_size;
- int rate;
- int mode;
- int mode_bitstream_version;
- int nb_channels;
- int bitrate;
- int frame_size;
- int vbr;
- int frames_per_packet;
- int extra_headers;
- int reserved1;
- int reserved2;
-} SpeexHeader;
-*/
-
-void speex_init_header(SpeexHeader *header, int rate, int nb_channels, const SpeexMode *m)
-{
- int i;
- const char *h="Speex ";
- /*
- strncpy(header->speex_string, "Speex ", 8);
- strncpy(header->speex_version, SPEEX_VERSION, SPEEX_HEADER_VERSION_LENGTH-1);
- header->speex_version[SPEEX_HEADER_VERSION_LENGTH-1]=0;
- */
- for (i=0;i<8;i++)
- header->speex_string[i]=h[i];
- for (i=0;i<SPEEX_HEADER_VERSION_LENGTH-1 && SPEEX_VERSION[i];i++)
- header->speex_version[i]=SPEEX_VERSION[i];
- for (;i<SPEEX_HEADER_VERSION_LENGTH;i++)
- header->speex_version[i]=0;
-
- header->speex_version_id = 1;
- header->header_size = sizeof(SpeexHeader);
-
- header->rate = rate;
- header->mode = m->modeID;
- header->mode_bitstream_version = m->bitstream_version;
- if (m->modeID<0)
- speex_warning("This mode is meant to be used alone");
- header->nb_channels = nb_channels;
- header->bitrate = -1;
- speex_mode_query(m, SPEEX_MODE_FRAME_SIZE, &header->frame_size);
- header->vbr = 0;
-
- header->frames_per_packet = 0;
- header->extra_headers = 0;
- header->reserved1 = 0;
- header->reserved2 = 0;
-}
-
-char *speex_header_to_packet(SpeexHeader *header, int *size)
-{
- SpeexHeader *le_header;
- le_header = (SpeexHeader*)speex_alloc(sizeof(SpeexHeader));
-
- speex_move(le_header, header, sizeof(SpeexHeader));
-
- /*Make sure everything is now little-endian*/
- ENDIAN_SWITCH(le_header->speex_version_id);
- ENDIAN_SWITCH(le_header->header_size);
- ENDIAN_SWITCH(le_header->rate);
- ENDIAN_SWITCH(le_header->mode);
- ENDIAN_SWITCH(le_header->mode_bitstream_version);
- ENDIAN_SWITCH(le_header->nb_channels);
- ENDIAN_SWITCH(le_header->bitrate);
- ENDIAN_SWITCH(le_header->frame_size);
- ENDIAN_SWITCH(le_header->vbr);
- ENDIAN_SWITCH(le_header->frames_per_packet);
- ENDIAN_SWITCH(le_header->extra_headers);
-
- *size = sizeof(SpeexHeader);
- return (char *)le_header;
-}
-
-SpeexHeader *speex_packet_to_header(char *packet, int size)
-{
- int i;
- SpeexHeader *le_header;
- const char *h = "Speex ";
- for (i=0;i<8;i++)
- if (packet[i]!=h[i])
- {
- speex_notify("This doesn't look like a Speex file");
- return NULL;
- }
-
- /*FIXME: Do we allow larger headers?*/
- if (size < (int)sizeof(SpeexHeader))
- {
- speex_notify("Speex header too small");
- return NULL;
- }
-
- le_header = (SpeexHeader*)speex_alloc(sizeof(SpeexHeader));
-
- speex_move(le_header, packet, sizeof(SpeexHeader));
-
- /*Make sure everything is converted correctly from little-endian*/
- ENDIAN_SWITCH(le_header->speex_version_id);
- ENDIAN_SWITCH(le_header->header_size);
- ENDIAN_SWITCH(le_header->rate);
- ENDIAN_SWITCH(le_header->mode);
- ENDIAN_SWITCH(le_header->mode_bitstream_version);
- ENDIAN_SWITCH(le_header->nb_channels);
- ENDIAN_SWITCH(le_header->bitrate);
- ENDIAN_SWITCH(le_header->frame_size);
- ENDIAN_SWITCH(le_header->vbr);
- ENDIAN_SWITCH(le_header->frames_per_packet);
- ENDIAN_SWITCH(le_header->extra_headers);
-
- return le_header;
-
-}
diff --git a/3rdparty/speex/libspeex/stack_alloc.h b/3rdparty/speex/libspeex/stack_alloc.h
deleted file mode 100644
index cb048fa5..00000000
--- a/3rdparty/speex/libspeex/stack_alloc.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin */
-/**
- @file stack_alloc.h
- @brief Temporary memory allocation on stack
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef STACK_ALLOC_H
-#define STACK_ALLOC_H
-
-#ifdef USE_ALLOCA
-#ifdef WIN32
-#include <malloc.h>
-#else
-#include <alloca.h>
-#endif
-#endif
-
-/**
- * @def ALIGN(stack, size)
- *
- * Aligns the stack to a 'size' boundary
- *
- * @param stack Stack
- * @param size New size boundary
- */
-
-/**
- * @def PUSH(stack, size, type)
- *
- * Allocates 'size' elements of type 'type' on the stack
- *
- * @param stack Stack
- * @param size Number of elements
- * @param type Type of element
- */
-
-/**
- * @def PUSHS(stack, type)
- *
- * Allocates a struct stack
- *
- * @param stack Stack
- * @param type Struct type
- */
-
-/**
- * @def VARDECL(var)
- *
- * Declare variable on stack
- *
- * @param var Variable to declare
- */
-
-/**
- * @def ALLOC(var, size, type)
- *
- * Allocate 'size' elements of 'type' on stack
- *
- * @param var Name of variable to allocate
- * @param size Number of elements
- * @param type Type of element
- */
-
-#ifdef ENABLE_VALGRIND
-
-#include <valgrind/memcheck.h>
-
-#define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1))
-
-#define PUSH(stack, size, type) (VALGRIND_MAKE_NOACCESS(stack, 1000),ALIGN((stack),sizeof(type)),VALGRIND_MAKE_WRITABLE(stack, ((size)*sizeof(type))),(stack)+=((size)*sizeof(type)),(type*)((stack)-((size)*sizeof(type))))
-
-#define PUSHS(stack, type) (VALGRIND_MAKE_NOACCESS(stack, 1000),ALIGN((stack),sizeof(long)),VALGRIND_MAKE_WRITABLE(stack, (sizeof(type))),(stack)+=(sizeof(type)),(type*)((stack)-(sizeof(type))))
-
-#else
-
-#define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1))
-
-#define PUSH(stack, size, type) (ALIGN((stack),sizeof(type)),(stack)+=((size)*sizeof(type)),(type*)((stack)-((size)*sizeof(type))))
-
-#define PUSHS(stack, type) (ALIGN((stack),sizeof(long)),(stack)+=(sizeof(type)),(type*)((stack)-(sizeof(type))))
-
-#endif
-
-#if defined(VAR_ARRAYS)
-#define VARDECL(var)
-#define ALLOC(var, size, type) type var[size]
-#elif defined(USE_ALLOCA)
-#define VARDECL(var) var
-#define ALLOC(var, size, type) var = alloca(sizeof(type)*(size))
-#else
-#define VARDECL(var) var
-#define ALLOC(var, size, type) var = PUSH(stack, size, type)
-#endif
-
-
-#endif
diff --git a/3rdparty/speex/libspeex/stereo.c b/3rdparty/speex/libspeex/stereo.c
deleted file mode 100644
index f18387e5..00000000
--- a/3rdparty/speex/libspeex/stereo.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: stereo.c
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <speex/speex_stereo.h>
-#include <speex/speex_callbacks.h>
-#include "vq.h"
-#include <math.h>
-
-/*float e_ratio_quant[4] = {1, 1.26, 1.587, 2};*/
-static const float e_ratio_quant[4] = {.25f, .315f, .397f, .5f};
-
-void speex_encode_stereo(float *data, int frame_size, SpeexBits *bits)
-{
- int i, tmp;
- float e_left=0, e_right=0, e_tot=0;
- float balance, e_ratio;
- for (i=0;i<frame_size;i++)
- {
- e_left += ((float)data[2*i])*data[2*i];
- e_right += ((float)data[2*i+1])*data[2*i+1];
- data[i] = .5*(((float)data[2*i])+data[2*i+1]);
- e_tot += ((float)data[i])*data[i];
- }
- balance=(e_left+1)/(e_right+1);
- e_ratio = e_tot/(1+e_left+e_right);
-
- /*Quantization*/
- speex_bits_pack(bits, 14, 5);
- speex_bits_pack(bits, SPEEX_INBAND_STEREO, 4);
-
- balance=4*log(balance);
-
- /*Pack sign*/
- if (balance>0)
- speex_bits_pack(bits, 0, 1);
- else
- speex_bits_pack(bits, 1, 1);
- balance=floor(.5+fabs(balance));
- if (balance>30)
- balance=31;
-
- speex_bits_pack(bits, (int)balance, 5);
-
- /*Quantize energy ratio*/
- tmp=vq_index(&e_ratio, e_ratio_quant, 1, 4);
- speex_bits_pack(bits, tmp, 2);
-}
-
-void speex_encode_stereo_int(spx_int16_t *data, int frame_size, SpeexBits *bits)
-{
- int i, tmp;
- float e_left=0, e_right=0, e_tot=0;
- float balance, e_ratio;
- for (i=0;i<frame_size;i++)
- {
- e_left += ((float)data[2*i])*data[2*i];
- e_right += ((float)data[2*i+1])*data[2*i+1];
- data[i] = .5*(((float)data[2*i])+data[2*i+1]);
- e_tot += ((float)data[i])*data[i];
- }
- balance=(e_left+1)/(e_right+1);
- e_ratio = e_tot/(1+e_left+e_right);
-
- /*Quantization*/
- speex_bits_pack(bits, 14, 5);
- speex_bits_pack(bits, SPEEX_INBAND_STEREO, 4);
-
- balance=4*log(balance);
-
- /*Pack sign*/
- if (balance>0)
- speex_bits_pack(bits, 0, 1);
- else
- speex_bits_pack(bits, 1, 1);
- balance=floor(.5+fabs(balance));
- if (balance>30)
- balance=31;
-
- speex_bits_pack(bits, (int)balance, 5);
-
- /*Quantize energy ratio*/
- tmp=vq_index(&e_ratio, e_ratio_quant, 1, 4);
- speex_bits_pack(bits, tmp, 2);
-}
-
-void speex_decode_stereo(float *data, int frame_size, SpeexStereoState *stereo)
-{
- float balance, e_ratio;
- int i;
- float e_tot=0, e_left, e_right, e_sum;
-
- balance=stereo->balance;
- e_ratio=stereo->e_ratio;
- for (i=frame_size-1;i>=0;i--)
- {
- e_tot += ((float)data[i])*data[i];
- }
- e_sum=e_tot/e_ratio;
- e_left = e_sum*balance / (1+balance);
- e_right = e_sum-e_left;
-
- e_left = sqrt(e_left/(e_tot+.01));
- e_right = sqrt(e_right/(e_tot+.01));
-
- for (i=frame_size-1;i>=0;i--)
- {
- float ftmp=data[i];
- stereo->smooth_left = .98*stereo->smooth_left + .02*e_left;
- stereo->smooth_right = .98*stereo->smooth_right + .02*e_right;
- data[2*i] = stereo->smooth_left*ftmp;
- data[2*i+1] = stereo->smooth_right*ftmp;
- }
-}
-
-void speex_decode_stereo_int(spx_int16_t *data, int frame_size, SpeexStereoState *stereo)
-{
- float balance, e_ratio;
- int i;
- float e_tot=0, e_left, e_right, e_sum;
-
- balance=stereo->balance;
- e_ratio=stereo->e_ratio;
- for (i=frame_size-1;i>=0;i--)
- {
- e_tot += ((float)data[i])*data[i];
- }
- e_sum=e_tot/e_ratio;
- e_left = e_sum*balance / (1+balance);
- e_right = e_sum-e_left;
-
- e_left = sqrt(e_left/(e_tot+.01));
- e_right = sqrt(e_right/(e_tot+.01));
-
- for (i=frame_size-1;i>=0;i--)
- {
- float ftmp=data[i];
- stereo->smooth_left = .98*stereo->smooth_left + .02*e_left;
- stereo->smooth_right = .98*stereo->smooth_right + .02*e_right;
- data[2*i] = stereo->smooth_left*ftmp;
- data[2*i+1] = stereo->smooth_right*ftmp;
- }
-}
-
-int speex_std_stereo_request_handler(SpeexBits *bits, void *state, void *data)
-{
- SpeexStereoState *stereo;
- float sign=1;
- int tmp;
-
- stereo = (SpeexStereoState*)data;
- if (speex_bits_unpack_unsigned(bits, 1))
- sign=-1;
- tmp = speex_bits_unpack_unsigned(bits, 5);
- stereo->balance = exp(sign*.25*tmp);
-
- tmp = speex_bits_unpack_unsigned(bits, 2);
- stereo->e_ratio = e_ratio_quant[tmp];
-
- return 0;
-}
diff --git a/3rdparty/speex/libspeex/testdenoise.c b/3rdparty/speex/libspeex/testdenoise.c
deleted file mode 100644
index 42644cb0..00000000
--- a/3rdparty/speex/libspeex/testdenoise.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <speex/speex_preprocess.h>
-#include <stdio.h>
-
-#define NN 160
-
-int main()
-{
- short in[NN];
- int i;
- SpeexPreprocessState *st;
- int count=0;
- float f;
-
- st = speex_preprocess_state_init(NN, 8000);
- i=1;
- speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DENOISE, &i);
- i=0;
- speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC, &i);
- f=8000;
- speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC_LEVEL, &f);
- i=0;
- speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB, &i);
- f=.0;
- speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB_DECAY, &f);
- f=.0;
- speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB_LEVEL, &f);
- while (1)
- {
- int vad;
- fread(in, sizeof(short), NN, stdin);
- if (feof(stdin))
- break;
- vad = speex_preprocess_run(st, in);
- /*fprintf (stderr, "%d\n", vad);*/
- fwrite(in, sizeof(short), NN, stdout);
- count++;
- }
- speex_preprocess_state_destroy(st);
- return 0;
-}
diff --git a/3rdparty/speex/libspeex/testecho.c b/3rdparty/speex/libspeex/testecho.c
deleted file mode 100644
index 7c32c8f6..00000000
--- a/3rdparty/speex/libspeex/testecho.c
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include "speex/speex_echo.h"
-#include "speex/speex_preprocess.h"
-
-
-#define NN 128
-#define TAIL 1024
-
-int main(int argc, char **argv)
-{
- int echo_fd, ref_fd, e_fd;
- short echo_buf[NN], ref_buf[NN], e_buf[NN];
- SpeexEchoState *st;
- SpeexPreprocessState *den;
-
- if (argc != 4)
- {
- fprintf (stderr, "testecho mic_signal.sw speaker_signal.sw output.sw\n");
- exit(1);
- }
- echo_fd = open (argv[2], O_RDONLY);
- ref_fd = open (argv[1], O_RDONLY);
- e_fd = open (argv[3], O_WRONLY | O_CREAT | O_TRUNC, 0644);
-
- st = speex_echo_state_init(NN, TAIL);
- den = speex_preprocess_state_init(NN, 8000);
- int tmp = 8000;
- speex_echo_ctl(st, SPEEX_ECHO_SET_SAMPLING_RATE, &tmp);
- speex_preprocess_ctl(den, SPEEX_PREPROCESS_SET_ECHO_STATE, st);
-
- while (read(ref_fd, ref_buf, NN*2))
- {
- read(echo_fd, echo_buf, NN*2);
- speex_echo_cancellation(st, ref_buf, echo_buf, e_buf);
- speex_preprocess_run(den, e_buf);
- write(e_fd, e_buf, NN*2);
- }
- speex_echo_state_destroy(st);
- speex_preprocess_state_destroy(den);
- close(e_fd);
- close(echo_fd);
- close(ref_fd);
- return 0;
-}
diff --git a/3rdparty/speex/libspeex/testenc.c b/3rdparty/speex/libspeex/testenc.c
deleted file mode 100644
index eabd02cc..00000000
--- a/3rdparty/speex/libspeex/testenc.c
+++ /dev/null
@@ -1,142 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <speex/speex.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <speex/speex_callbacks.h>
-
-#ifdef FIXED_DEBUG
-extern long long spx_mips;
-#endif
-
-#define FRAME_SIZE 160
-#include <math.h>
-int main(int argc, char **argv)
-{
- char *inFile, *outFile, *bitsFile;
- FILE *fin, *fout, *fbits=NULL;
- short in_short[FRAME_SIZE];
- short out_short[FRAME_SIZE];
- float sigpow,errpow,snr, seg_snr=0;
- int snr_frames = 0;
- char cbits[200];
- int nbBits;
- int i;
- void *st;
- void *dec;
- SpeexBits bits;
- spx_int32_t tmp;
- int bitCount=0;
- spx_int32_t skip_group_delay;
- SpeexCallback callback;
-
- sigpow = 0;
- errpow = 0;
-
- st = speex_encoder_init(&speex_nb_mode);
- dec = speex_decoder_init(&speex_nb_mode);
-
- /* BEGIN: You probably don't need the following in a real application */
- callback.callback_id = SPEEX_INBAND_CHAR;
- callback.func = speex_std_char_handler;
- callback.data = stderr;
- speex_decoder_ctl(dec, SPEEX_SET_HANDLER, &callback);
-
- callback.callback_id = SPEEX_INBAND_MODE_REQUEST;
- callback.func = speex_std_mode_request_handler;
- callback.data = st;
- speex_decoder_ctl(dec, SPEEX_SET_HANDLER, &callback);
- /* END of unnecessary stuff */
-
- tmp=1;
- speex_decoder_ctl(dec, SPEEX_SET_ENH, &tmp);
- tmp=0;
- speex_encoder_ctl(st, SPEEX_SET_VBR, &tmp);
- tmp=8;
- speex_encoder_ctl(st, SPEEX_SET_QUALITY, &tmp);
- tmp=1;
- speex_encoder_ctl(st, SPEEX_SET_COMPLEXITY, &tmp);
-
- /* Turn this off if you want to measure SNR (on by default) */
- tmp=1;
- speex_encoder_ctl(st, SPEEX_SET_HIGHPASS, &tmp);
- speex_decoder_ctl(dec, SPEEX_SET_HIGHPASS, &tmp);
-
- speex_encoder_ctl(st, SPEEX_GET_LOOKAHEAD, &skip_group_delay);
- speex_decoder_ctl(dec, SPEEX_GET_LOOKAHEAD, &tmp);
- skip_group_delay += tmp;
-
- if (argc != 4 && argc != 3)
- {
- fprintf (stderr, "Usage: encode [in file] [out file] [bits file]\nargc = %d", argc);
- exit(1);
- }
- inFile = argv[1];
- fin = fopen(inFile, "r");
- outFile = argv[2];
- fout = fopen(outFile, "w+");
- if (argc==4)
- {
- bitsFile = argv[3];
- fbits = fopen(bitsFile, "w");
- }
- speex_bits_init(&bits);
- while (!feof(fin))
- {
- fread(in_short, sizeof(short), FRAME_SIZE, fin);
- if (feof(fin))
- break;
- speex_bits_reset(&bits);
-
- speex_encode_int(st, in_short, &bits);
- nbBits = speex_bits_write(&bits, cbits, 200);
- bitCount+=bits.nbBits;
-
- if (argc==4)
- fwrite(cbits, 1, nbBits, fbits);
- speex_bits_rewind(&bits);
-
- speex_decode_int(dec, &bits, out_short);
- speex_bits_reset(&bits);
-
- fwrite(&out_short[skip_group_delay], sizeof(short), FRAME_SIZE-skip_group_delay, fout);
- skip_group_delay = 0;
- }
- fprintf (stderr, "Total encoded size: %d bits\n", bitCount);
- speex_encoder_destroy(st);
- speex_decoder_destroy(dec);
- speex_bits_destroy(&bits);
-
- /* This code just computes SNR, so you don't need it either */
- rewind(fin);
- rewind(fout);
-
- while ( FRAME_SIZE == fread(in_short, sizeof(short), FRAME_SIZE, fin)
- &&
- FRAME_SIZE == fread(out_short, sizeof(short), FRAME_SIZE,fout) )
- {
- float s=0, e=0;
- for (i=0;i<FRAME_SIZE;++i) {
- s += (float)in_short[i] * in_short[i];
- e += ((float)in_short[i]-out_short[i]) * ((float)in_short[i]-out_short[i]);
- }
- seg_snr += 10*log10((s+160)/(e+160));
- sigpow += s;
- errpow += e;
- snr_frames++;
- }
- fclose(fin);
- fclose(fout);
-
- snr = 10 * log10( sigpow / errpow );
- seg_snr /= snr_frames;
- fprintf(stderr,"SNR = %f\nsegmental SNR = %f\n",snr, seg_snr);
-
-#ifdef FIXED_DEBUG
- printf ("Total: %f MIPS\n", (float)(1e-6*50*spx_mips/snr_frames));
-#endif
-
- return 0;
-}
diff --git a/3rdparty/speex/libspeex/testenc_uwb.c b/3rdparty/speex/libspeex/testenc_uwb.c
deleted file mode 100644
index e9bf18a6..00000000
--- a/3rdparty/speex/libspeex/testenc_uwb.c
+++ /dev/null
@@ -1,137 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <speex/speex.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <speex/speex_callbacks.h>
-
-#ifdef FIXED_DEBUG
-extern long long spx_mips;
-#endif
-
-#define FRAME_SIZE 640
-#include <math.h>
-int main(int argc, char **argv)
-{
- char *inFile, *outFile, *bitsFile;
- FILE *fin, *fout, *fbits=NULL;
- short in_short[FRAME_SIZE];
- short out_short[FRAME_SIZE];
- float in_float[FRAME_SIZE];
- float sigpow,errpow,snr, seg_snr=0;
- int snr_frames = 0;
- char cbits[200];
- int nbBits;
- int i;
- void *st;
- void *dec;
- SpeexBits bits;
- spx_int32_t tmp;
- int bitCount=0;
- spx_int32_t skip_group_delay;
- SpeexCallback callback;
-
- sigpow = 0;
- errpow = 0;
-
- st = speex_encoder_init(&speex_uwb_mode);
- dec = speex_decoder_init(&speex_uwb_mode);
-
- callback.callback_id = SPEEX_INBAND_CHAR;
- callback.func = speex_std_char_handler;
- callback.data = stderr;
- speex_decoder_ctl(dec, SPEEX_SET_HANDLER, &callback);
-
- callback.callback_id = SPEEX_INBAND_MODE_REQUEST;
- callback.func = speex_std_mode_request_handler;
- callback.data = st;
- speex_decoder_ctl(dec, SPEEX_SET_HANDLER, &callback);
-
- tmp=0;
- speex_decoder_ctl(dec, SPEEX_SET_ENH, &tmp);
- tmp=0;
- speex_encoder_ctl(st, SPEEX_SET_VBR, &tmp);
- tmp=7;
- speex_encoder_ctl(st, SPEEX_SET_QUALITY, &tmp);
- tmp=1;
- speex_encoder_ctl(st, SPEEX_SET_COMPLEXITY, &tmp);
-
- speex_encoder_ctl(st, SPEEX_GET_LOOKAHEAD, &skip_group_delay);
- speex_decoder_ctl(dec, SPEEX_GET_LOOKAHEAD, &tmp);
- skip_group_delay += tmp;
-
-
- if (argc != 4 && argc != 3)
- {
- fprintf (stderr, "Usage: encode [in file] [out file] [bits file]\nargc = %d", argc);
- exit(1);
- }
- inFile = argv[1];
- fin = fopen(inFile, "r");
- outFile = argv[2];
- fout = fopen(outFile, "w+");
- if (argc==4)
- {
- bitsFile = argv[3];
- fbits = fopen(bitsFile, "w");
- }
- speex_bits_init(&bits);
- while (!feof(fin))
- {
- fread(in_short, sizeof(short), FRAME_SIZE, fin);
- if (feof(fin))
- break;
- for (i=0;i<FRAME_SIZE;i++)
- in_float[i]=in_short[i];
- speex_bits_reset(&bits);
-
- speex_encode_int(st, in_short, &bits);
- nbBits = speex_bits_write(&bits, cbits, 200);
- bitCount+=bits.nbBits;
-
- if (argc==4)
- fwrite(cbits, 1, nbBits, fbits);
- speex_bits_rewind(&bits);
-
- speex_decode_int(dec, &bits, out_short);
- speex_bits_reset(&bits);
-
- fwrite(&out_short[skip_group_delay], sizeof(short), FRAME_SIZE-skip_group_delay, fout);
- skip_group_delay = 0;
- }
- fprintf (stderr, "Total encoded size: %d bits\n", bitCount);
- speex_encoder_destroy(st);
- speex_decoder_destroy(dec);
-
- rewind(fin);
- rewind(fout);
-
- while ( FRAME_SIZE == fread(in_short, sizeof(short), FRAME_SIZE, fin)
- &&
- FRAME_SIZE == fread(out_short, sizeof(short), FRAME_SIZE,fout) )
- {
- float s=0, e=0;
- for (i=0;i<FRAME_SIZE;++i) {
- s += (float)in_short[i] * in_short[i];
- e += ((float)in_short[i]-out_short[i]) * ((float)in_short[i]-out_short[i]);
- }
- seg_snr += 10*log10((s+1)/(e+1));
- sigpow += s;
- errpow += e;
- snr_frames++;
- }
- fclose(fin);
- fclose(fout);
-
- snr = 10 * log10( sigpow / errpow );
- seg_snr /= snr_frames;
- fprintf(stderr,"SNR = %f\nsegmental SNR = %f\n",snr, seg_snr);
-
-#ifdef FIXED_DEBUG
- printf ("Total: %f MIPS\n", (float)(1e-6*50*spx_mips/snr_frames));
-#endif
-
- return 1;
-}
diff --git a/3rdparty/speex/libspeex/testenc_wb.c b/3rdparty/speex/libspeex/testenc_wb.c
deleted file mode 100644
index 8e515cb1..00000000
--- a/3rdparty/speex/libspeex/testenc_wb.c
+++ /dev/null
@@ -1,143 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <speex/speex.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <speex/speex_callbacks.h>
-
-#ifdef FIXED_DEBUG
-extern long long spx_mips;
-#endif
-
-#define FRAME_SIZE 320
-#include <math.h>
-int main(int argc, char **argv)
-{
- char *inFile, *outFile, *bitsFile;
- FILE *fin, *fout, *fbits=NULL;
- short in_short[FRAME_SIZE];
- short out_short[FRAME_SIZE];
- float in_float[FRAME_SIZE];
- float sigpow,errpow,snr, seg_snr=0;
- int snr_frames = 0;
- char cbits[200];
- int nbBits;
- int i;
- void *st;
- void *dec;
- SpeexBits bits;
- spx_int32_t tmp;
- int bitCount=0;
- spx_int32_t skip_group_delay;
- SpeexCallback callback;
-
- sigpow = 0;
- errpow = 0;
-
- st = speex_encoder_init(&speex_wb_mode);
- dec = speex_decoder_init(&speex_wb_mode);
-
- callback.callback_id = SPEEX_INBAND_CHAR;
- callback.func = speex_std_char_handler;
- callback.data = stderr;
- speex_decoder_ctl(dec, SPEEX_SET_HANDLER, &callback);
-
- callback.callback_id = SPEEX_INBAND_MODE_REQUEST;
- callback.func = speex_std_mode_request_handler;
- callback.data = st;
- speex_decoder_ctl(dec, SPEEX_SET_HANDLER, &callback);
-
- tmp=1;
- speex_decoder_ctl(dec, SPEEX_SET_ENH, &tmp);
- tmp=0;
- speex_encoder_ctl(st, SPEEX_SET_VBR, &tmp);
- tmp=8;
- speex_encoder_ctl(st, SPEEX_SET_QUALITY, &tmp);
- tmp=3;
- speex_encoder_ctl(st, SPEEX_SET_COMPLEXITY, &tmp);
- /*tmp=3;
- speex_encoder_ctl(st, SPEEX_SET_HIGH_MODE, &tmp);
- tmp=6;
- speex_encoder_ctl(st, SPEEX_SET_LOW_MODE, &tmp);
-*/
-
- speex_encoder_ctl(st, SPEEX_GET_LOOKAHEAD, &skip_group_delay);
- speex_decoder_ctl(dec, SPEEX_GET_LOOKAHEAD, &tmp);
- skip_group_delay += tmp;
-
-
- if (argc != 4 && argc != 3)
- {
- fprintf (stderr, "Usage: encode [in file] [out file] [bits file]\nargc = %d", argc);
- exit(1);
- }
- inFile = argv[1];
- fin = fopen(inFile, "r");
- outFile = argv[2];
- fout = fopen(outFile, "w+");
- if (argc==4)
- {
- bitsFile = argv[3];
- fbits = fopen(bitsFile, "w");
- }
- speex_bits_init(&bits);
- while (!feof(fin))
- {
- fread(in_short, sizeof(short), FRAME_SIZE, fin);
- if (feof(fin))
- break;
- for (i=0;i<FRAME_SIZE;i++)
- in_float[i]=in_short[i];
- speex_bits_reset(&bits);
-
- speex_encode_int(st, in_short, &bits);
- nbBits = speex_bits_write(&bits, cbits, 200);
- bitCount+=bits.nbBits;
-
- if (argc==4)
- fwrite(cbits, 1, nbBits, fbits);
- speex_bits_rewind(&bits);
-
- speex_decode_int(dec, &bits, out_short);
- speex_bits_reset(&bits);
-
- fwrite(&out_short[skip_group_delay], sizeof(short), FRAME_SIZE-skip_group_delay, fout);
- skip_group_delay = 0;
- }
- fprintf (stderr, "Total encoded size: %d bits\n", bitCount);
- speex_encoder_destroy(st);
- speex_decoder_destroy(dec);
- speex_bits_destroy(&bits);
-
- rewind(fin);
- rewind(fout);
-
- while ( FRAME_SIZE == fread(in_short, sizeof(short), FRAME_SIZE, fin)
- &&
- FRAME_SIZE == fread(out_short, sizeof(short), FRAME_SIZE,fout) )
- {
- float s=0, e=0;
- for (i=0;i<FRAME_SIZE;++i) {
- s += (float)in_short[i] * in_short[i];
- e += ((float)in_short[i]-out_short[i]) * ((float)in_short[i]-out_short[i]);
- }
- seg_snr += 10*log10((s+160)/(e+160));
- sigpow += s;
- errpow += e;
- snr_frames++;
- }
- fclose(fin);
- fclose(fout);
-
- snr = 10 * log10( sigpow / errpow );
- seg_snr /= snr_frames;
- fprintf(stderr,"SNR = %f\nsegmental SNR = %f\n",snr, seg_snr);
-
-#ifdef FIXED_DEBUG
- printf ("Total: %f MIPS\n", (float)(1e-6*50*spx_mips/snr_frames));
-#endif
-
- return 1;
-}
diff --git a/3rdparty/speex/libspeex/testresample.c b/3rdparty/speex/libspeex/testresample.c
deleted file mode 100644
index 5e024795..00000000
--- a/3rdparty/speex/libspeex/testresample.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/* Copyright (C) 2007 Jean-Marc Valin
-
- File: testresample.c
- Testing the resampling code
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdio.h>
-#include "speex/speex_resampler.h"
-#include <math.h>
-#include <stdlib.h>
-
-#define NN 256
-
-int main(int argc, char **argv)
-{
- int i;
- short *in;
- short *out;
- float *fin, *fout;
- int count = 0;
- SpeexResamplerState *st = speex_resampler_init(1, 8000, 12000, 10);
- speex_resampler_set_rate(st, 8000, 15999);
- speex_resampler_skip_zeros(st);
-
- in = malloc(NN*sizeof(short));
- out = malloc(2*NN*sizeof(short));
- fin = malloc(NN*sizeof(float));
- fout = malloc(2*NN*sizeof(float));
- while (1)
- {
- int in_len;
- int out_len;
- fread(in, sizeof(short), NN, stdin);
- if (feof(stdin))
- break;
- for (i=0;i<NN;i++)
- fin[i]=in[i];
- in_len = NN;
- out_len = 2*NN;
- /*if (count==2)
- speex_resampler_set_quality(st, 10);*/
- speex_resampler_process_float(st, 0, fin, &in_len, fout, &out_len);
- for (i=0;i<out_len;i++)
- out[i]=floor(.5+fout[i]);
- /*speex_warning_int("writing", out_len);*/
- fwrite(out, sizeof(short), out_len, stdout);
- count++;
- }
- speex_resampler_destroy(st);
- free(in);
- free(out);
- free(fin);
- free(fout);
- return 0;
-}
-
diff --git a/3rdparty/speex/libspeex/vbr.c b/3rdparty/speex/libspeex/vbr.c
deleted file mode 100644
index d24ec0f0..00000000
--- a/3rdparty/speex/libspeex/vbr.c
+++ /dev/null
@@ -1,272 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: vbr.c
-
- VBR-related routines
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "vbr.h"
-#include <math.h>
-
-
-#define sqr(x) ((x)*(x))
-
-#define MIN_ENERGY 6000
-#define NOISE_POW .3
-
-
-const float vbr_nb_thresh[9][11]={
- {-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f}, /* CNG */
- { 3.5f, 2.5f, 2.0f, 1.2f, 0.5f, 0.0f, -0.5f, -0.7f, -0.8f, -0.9f, -1.0f}, /* 2 kbps */
- {10.0f, 6.5f, 5.2f, 4.5f, 3.9f, 3.5f, 3.0f, 2.5f, 2.3f, 1.8f, 1.0f}, /* 6 kbps */
- {11.0f, 8.8f, 7.5f, 6.5f, 5.0f, 3.9f, 3.9f, 3.9f, 3.5f, 3.0f, 1.0f}, /* 8 kbps */
- {11.0f, 11.0f, 9.9f, 9.0f, 8.0f, 7.0f, 6.5f, 6.0f, 5.0f, 4.0f, 2.0f}, /* 11 kbps */
- {11.0f, 11.0f, 11.0f, 11.0f, 9.5f, 9.0f, 8.0f, 7.0f, 6.5f, 5.0f, 3.0f}, /* 15 kbps */
- {11.0f, 11.0f, 11.0f, 11.0f, 11.0f, 11.0f, 9.5f, 8.5f, 8.0f, 6.5f, 4.0f}, /* 18 kbps */
- {11.0f, 11.0f, 11.0f, 11.0f, 11.0f, 11.0f, 11.0f, 11.0f, 9.8f, 7.5f, 5.5f}, /* 24 kbps */
- { 8.0f, 5.0f, 3.7f, 3.0f, 2.5f, 2.0f, 1.8f, 1.5f, 1.0f, 0.0f, 0.0f} /* 4 kbps */
-};
-
-
-const float vbr_hb_thresh[5][11]={
- {-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f}, /* silence */
- {-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f}, /* 2 kbps */
- {11.0f, 11.0f, 9.5f, 8.5f, 7.5f, 6.0f, 5.0f, 3.9f, 3.0f, 2.0f, 1.0f}, /* 6 kbps */
- {11.0f, 11.0f, 11.0f, 11.0f, 11.0f, 9.5f, 8.7f, 7.8f, 7.0f, 6.5f, 4.0f}, /* 10 kbps */
- {11.0f, 11.0f, 11.0f, 11.0f, 11.0f, 11.0f, 11.0f, 11.0f, 9.8f, 7.5f, 5.5f} /* 18 kbps */
-};
-
-const float vbr_uhb_thresh[2][11]={
- {-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f}, /* silence */
- { 3.9f, 2.5f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -1.0f} /* 2 kbps */
-};
-
-void vbr_init(VBRState *vbr)
-{
- int i;
-
- vbr->average_energy=0;
- vbr->last_energy=1;
- vbr->accum_sum=0;
- vbr->energy_alpha=.1;
- vbr->soft_pitch=0;
- vbr->last_pitch_coef=0;
- vbr->last_quality=0;
-
- vbr->noise_accum = .05*pow(MIN_ENERGY, NOISE_POW);
- vbr->noise_accum_count=.05;
- vbr->noise_level=vbr->noise_accum/vbr->noise_accum_count;
- vbr->consec_noise=0;
-
-
- for (i=0;i<VBR_MEMORY_SIZE;i++)
- vbr->last_log_energy[i] = log(MIN_ENERGY);
-}
-
-
-/*
- This function should analyse the signal and decide how critical the
- coding error will be perceptually. The following factors should be
- taken into account:
-
- -Attacks (positive energy derivative) should be coded with more bits
-
- -Stationary voiced segments should receive more bits
-
- -Segments with (very) low absolute energy should receive less bits (maybe
- only shaped noise?)
-
- -DTX for near-zero energy?
-
- -Stationary fricative segments should have less bits
-
- -Temporal masking: when energy slope is decreasing, decrease the bit-rate
-
- -Decrease bit-rate for males (low pitch)?
-
- -(wideband only) less bits in the high-band when signal is very
- non-stationary (harder to notice high-frequency noise)???
-
-*/
-
-float vbr_analysis(VBRState *vbr, spx_word16_t *sig, int len, int pitch, float pitch_coef)
-{
- int i;
- float ener=0, ener1=0, ener2=0;
- float qual=7;
- int va;
- float log_energy;
- float non_st=0;
- float voicing;
- float pow_ener;
-
- for (i=0;i<len>>1;i++)
- ener1 += ((float)sig[i])*sig[i];
-
- for (i=len>>1;i<len;i++)
- ener2 += ((float)sig[i])*sig[i];
- ener=ener1+ener2;
-
- log_energy = log(ener+MIN_ENERGY);
- for (i=0;i<VBR_MEMORY_SIZE;i++)
- non_st += sqr(log_energy-vbr->last_log_energy[i]);
- non_st = non_st/(30*VBR_MEMORY_SIZE);
- if (non_st>1)
- non_st=1;
-
- voicing = 3*(pitch_coef-.4)*fabs(pitch_coef-.4);
- vbr->average_energy = (1-vbr->energy_alpha)*vbr->average_energy + vbr->energy_alpha*ener;
- vbr->noise_level=vbr->noise_accum/vbr->noise_accum_count;
- pow_ener = pow(ener,NOISE_POW);
- if (vbr->noise_accum_count<.06 && ener>MIN_ENERGY)
- vbr->noise_accum = .05*pow_ener;
-
- if ((voicing<.3 && non_st < .2 && pow_ener < 1.2*vbr->noise_level)
- || (voicing<.3 && non_st < .05 && pow_ener < 1.5*vbr->noise_level)
- || (voicing<.4 && non_st < .05 && pow_ener < 1.2*vbr->noise_level)
- || (voicing<0 && non_st < .05))
- {
- float tmp;
- va = 0;
- vbr->consec_noise++;
- if (pow_ener > 3*vbr->noise_level)
- tmp = 3*vbr->noise_level;
- else
- tmp = pow_ener;
- if (vbr->consec_noise>=4)
- {
- vbr->noise_accum = .95*vbr->noise_accum + .05*tmp;
- vbr->noise_accum_count = .95*vbr->noise_accum_count + .05;
- }
- } else {
- va = 1;
- vbr->consec_noise=0;
- }
-
- if (pow_ener < vbr->noise_level && ener>MIN_ENERGY)
- {
- vbr->noise_accum = .95*vbr->noise_accum + .05*pow_ener;
- vbr->noise_accum_count = .95*vbr->noise_accum_count + .05;
- }
-
- /* Checking for very low absolute energy */
- if (ener < 30000)
- {
- qual -= .7;
- if (ener < 10000)
- qual-=.7;
- if (ener < 3000)
- qual-=.7;
- } else {
- float short_diff, long_diff;
- short_diff = log((ener+1)/(1+vbr->last_energy));
- long_diff = log((ener+1)/(1+vbr->average_energy));
- /*fprintf (stderr, "%f %f\n", short_diff, long_diff);*/
-
- if (long_diff<-5)
- long_diff=-5;
- if (long_diff>2)
- long_diff=2;
-
- if (long_diff>0)
- qual += .6*long_diff;
- if (long_diff<0)
- qual += .5*long_diff;
- if (short_diff>0)
- {
- if (short_diff>5)
- short_diff=5;
- qual += .5*short_diff;
- }
- /* Checking for energy increases */
- if (ener2 > 1.6*ener1)
- qual += .5;
- }
- vbr->last_energy = ener;
- vbr->soft_pitch = .6*vbr->soft_pitch + .4*pitch_coef;
- qual += 2.2*((pitch_coef-.4) + (vbr->soft_pitch-.4));
-
- if (qual < vbr->last_quality)
- qual = .5*qual + .5*vbr->last_quality;
- if (qual<4)
- qual=4;
- if (qual>10)
- qual=10;
-
- /*
- if (vbr->consec_noise>=2)
- qual-=1.3;
- if (vbr->consec_noise>=5)
- qual-=1.3;
- if (vbr->consec_noise>=12)
- qual-=1.3;
- */
- if (vbr->consec_noise>=3)
- qual=4;
-
- if (vbr->consec_noise)
- qual -= 1.0 * (log(3.0 + vbr->consec_noise)-log(3));
- if (qual<0)
- qual=0;
-
- if (ener<60000)
- {
- if (vbr->consec_noise>2)
- qual-=0.5*(log(3.0 + vbr->consec_noise)-log(3));
- if (ener<10000&&vbr->consec_noise>2)
- qual-=0.5*(log(3.0 + vbr->consec_noise)-log(3));
- if (qual<0)
- qual=0;
- qual += .3*log(.0001+ener/60000.0);
- }
- if (qual<-1)
- qual=-1;
-
- /*printf ("%f %f %f %f %d\n", qual, voicing, non_st, pow_ener/(.01+vbr->noise_level), va);*/
-
- vbr->last_pitch_coef = pitch_coef;
- vbr->last_quality = qual;
-
- for (i=VBR_MEMORY_SIZE-1;i>0;i--)
- vbr->last_log_energy[i] = vbr->last_log_energy[i-1];
- vbr->last_log_energy[0] = log_energy;
-
- /*printf ("VBR: %f %f %f %d %f\n", (float)(log_energy-log(vbr->average_energy+MIN_ENERGY)), non_st, voicing, va, vbr->noise_level);*/
-
- return qual;
-}
-
-void vbr_destroy(VBRState *vbr)
-{
-}
diff --git a/3rdparty/speex/libspeex/vbr.h b/3rdparty/speex/libspeex/vbr.h
deleted file mode 100644
index 34e1d4c3..00000000
--- a/3rdparty/speex/libspeex/vbr.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin */
-/**
- @file vbr.h
- @brief Variable Bit-Rate (VBR) related routines
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-
-#ifndef VBR_H
-#define VBR_H
-
-#include "misc.h"
-
-#define VBR_MEMORY_SIZE 5
-
-extern const float vbr_nb_thresh[9][11];
-extern const float vbr_hb_thresh[5][11];
-extern const float vbr_uhb_thresh[2][11];
-
-/** VBR state. */
-typedef struct VBRState {
- float energy_alpha;
- float average_energy;
- float last_energy;
- float last_log_energy[VBR_MEMORY_SIZE];
- float accum_sum;
- float last_pitch_coef;
- float soft_pitch;
- float last_quality;
- float noise_level;
- float noise_accum;
- float noise_accum_count;
- int consec_noise;
-} VBRState;
-
-void vbr_init(VBRState *vbr);
-
-float vbr_analysis(VBRState *vbr, spx_word16_t *sig, int len, int pitch, float pitch_coef);
-
-void vbr_destroy(VBRState *vbr);
-
-#endif
diff --git a/3rdparty/speex/libspeex/vorbis_psy.c b/3rdparty/speex/libspeex/vorbis_psy.c
deleted file mode 100644
index 6aac56f2..00000000
--- a/3rdparty/speex/libspeex/vorbis_psy.c
+++ /dev/null
@@ -1,508 +0,0 @@
-/* Copyright (C) 2005 Jean-Marc Valin, CSIRO, Christopher Montgomery
- File: vorbis_psy.c
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#ifdef VORBIS_PSYCHO
-
-#include "misc.h"
-#include "smallft.h"
-#include "lpc.h"
-#include "vorbis_psy.h"
-
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-
-/* psychoacoustic setup ********************************************/
-
-static VorbisPsyInfo example_tuning = {
-
- .5,.5,
- 3,3,25,
-
- /*63 125 250 500 1k 2k 4k 8k 16k*/
- // vorbis mode 4 style
- //{-32,-32,-32,-32,-28,-24,-22,-20,-20, -20, -20, -8, -6, -6, -6, -6, -6},
- { -4, -6, -6, -6, -6, -6, -6, -6, -8, -8,-10,-10, -8, -6, -4, -4, -2},
-
- {
- 0, 1, 2, 3, 4, 5, 5, 5, /* 7dB */
- 6, 6, 6, 5, 4, 4, 4, 4, /* 15dB */
- 4, 4, 5, 5, 5, 6, 6, 6, /* 23dB */
- 7, 7, 7, 8, 8, 8, 9, 10, /* 31dB */
- 11,12,13,14,15,16,17, 18, /* 39dB */
- }
-
-};
-
-
-
-/* there was no great place to put this.... */
-#include <stdio.h>
-static void _analysis_output(char *base,int i,float *v,int n,int bark,int dB){
- int j;
- FILE *of;
- char buffer[80];
-
- sprintf(buffer,"%s_%d.m",base,i);
- of=fopen(buffer,"w");
-
- if(!of)perror("failed to open data dump file");
-
- for(j=0;j<n;j++){
- if(bark){
- float b=toBARK((4000.f*j/n)+.25);
- fprintf(of,"%f ",b);
- }else
- fprintf(of,"%f ",(double)j);
-
- if(dB){
- float val;
- if(v[j]==0.)
- val=-140.;
- else
- val=todB(v[j]);
- fprintf(of,"%f\n",val);
- }else{
- fprintf(of,"%f\n",v[j]);
- }
- }
- fclose(of);
-}
-
-static void bark_noise_hybridmp(int n,const long *b,
- const float *f,
- float *noise,
- const float offset,
- const int fixed){
-
- float *N=alloca(n*sizeof(*N));
- float *X=alloca(n*sizeof(*N));
- float *XX=alloca(n*sizeof(*N));
- float *Y=alloca(n*sizeof(*N));
- float *XY=alloca(n*sizeof(*N));
-
- float tN, tX, tXX, tY, tXY;
- int i;
-
- int lo, hi;
- float R, A, B, D;
- float w, x, y;
-
- tN = tX = tXX = tY = tXY = 0.f;
-
- y = f[0] + offset;
- if (y < 1.f) y = 1.f;
-
- w = y * y * .5;
-
- tN += w;
- tX += w;
- tY += w * y;
-
- N[0] = tN;
- X[0] = tX;
- XX[0] = tXX;
- Y[0] = tY;
- XY[0] = tXY;
-
- for (i = 1, x = 1.f; i < n; i++, x += 1.f) {
-
- y = f[i] + offset;
- if (y < 1.f) y = 1.f;
-
- w = y * y;
-
- tN += w;
- tX += w * x;
- tXX += w * x * x;
- tY += w * y;
- tXY += w * x * y;
-
- N[i] = tN;
- X[i] = tX;
- XX[i] = tXX;
- Y[i] = tY;
- XY[i] = tXY;
- }
-
- for (i = 0, x = 0.f;; i++, x += 1.f) {
-
- lo = b[i] >> 16;
- if( lo>=0 ) break;
- hi = b[i] & 0xffff;
-
- tN = N[hi] + N[-lo];
- tX = X[hi] - X[-lo];
- tXX = XX[hi] + XX[-lo];
- tY = Y[hi] + Y[-lo];
- tXY = XY[hi] - XY[-lo];
-
- A = tY * tXX - tX * tXY;
- B = tN * tXY - tX * tY;
- D = tN * tXX - tX * tX;
- R = (A + x * B) / D;
- if (R < 0.f)
- R = 0.f;
-
- noise[i] = R - offset;
- }
-
- for ( ;; i++, x += 1.f) {
-
- lo = b[i] >> 16;
- hi = b[i] & 0xffff;
- if(hi>=n)break;
-
- tN = N[hi] - N[lo];
- tX = X[hi] - X[lo];
- tXX = XX[hi] - XX[lo];
- tY = Y[hi] - Y[lo];
- tXY = XY[hi] - XY[lo];
-
- A = tY * tXX - tX * tXY;
- B = tN * tXY - tX * tY;
- D = tN * tXX - tX * tX;
- R = (A + x * B) / D;
- if (R < 0.f) R = 0.f;
-
- noise[i] = R - offset;
- }
- for ( ; i < n; i++, x += 1.f) {
-
- R = (A + x * B) / D;
- if (R < 0.f) R = 0.f;
-
- noise[i] = R - offset;
- }
-
- if (fixed <= 0) return;
-
- for (i = 0, x = 0.f;; i++, x += 1.f) {
- hi = i + fixed / 2;
- lo = hi - fixed;
- if(lo>=0)break;
-
- tN = N[hi] + N[-lo];
- tX = X[hi] - X[-lo];
- tXX = XX[hi] + XX[-lo];
- tY = Y[hi] + Y[-lo];
- tXY = XY[hi] - XY[-lo];
-
-
- A = tY * tXX - tX * tXY;
- B = tN * tXY - tX * tY;
- D = tN * tXX - tX * tX;
- R = (A + x * B) / D;
-
- if (R - offset < noise[i]) noise[i] = R - offset;
- }
- for ( ;; i++, x += 1.f) {
-
- hi = i + fixed / 2;
- lo = hi - fixed;
- if(hi>=n)break;
-
- tN = N[hi] - N[lo];
- tX = X[hi] - X[lo];
- tXX = XX[hi] - XX[lo];
- tY = Y[hi] - Y[lo];
- tXY = XY[hi] - XY[lo];
-
- A = tY * tXX - tX * tXY;
- B = tN * tXY - tX * tY;
- D = tN * tXX - tX * tX;
- R = (A + x * B) / D;
-
- if (R - offset < noise[i]) noise[i] = R - offset;
- }
- for ( ; i < n; i++, x += 1.f) {
- R = (A + x * B) / D;
- if (R - offset < noise[i]) noise[i] = R - offset;
- }
-}
-
-static void _vp_noisemask(VorbisPsy *p,
- float *logfreq,
- float *logmask){
-
- int i,n=p->n/2;
- float *work=alloca(n*sizeof(*work));
-
- bark_noise_hybridmp(n,p->bark,logfreq,logmask,
- 140.,-1);
-
- for(i=0;i<n;i++)work[i]=logfreq[i]-logmask[i];
-
- bark_noise_hybridmp(n,p->bark,work,logmask,0.,
- p->vi->noisewindowfixed);
-
- for(i=0;i<n;i++)work[i]=logfreq[i]-work[i];
-
- {
- static int seq=0;
-
- float work2[n];
- for(i=0;i<n;i++){
- work2[i]=logmask[i]+work[i];
- }
-
- //_analysis_output("logfreq",seq,logfreq,n,0,0);
- //_analysis_output("median",seq,work,n,0,0);
- //_analysis_output("envelope",seq,work2,n,0,0);
- seq++;
- }
-
- for(i=0;i<n;i++){
- int dB=logmask[i]+.5;
- if(dB>=NOISE_COMPAND_LEVELS)dB=NOISE_COMPAND_LEVELS-1;
- if(dB<0)dB=0;
- logmask[i]= work[i]+p->vi->noisecompand[dB]+p->noiseoffset[i];
- }
-
-}
-
-VorbisPsy *vorbis_psy_init(int rate, int n)
-{
- long i,j,lo=-99,hi=1;
- VorbisPsy *p = speex_alloc(sizeof(VorbisPsy));
- memset(p,0,sizeof(*p));
-
- p->n = n;
- spx_drft_init(&p->lookup, n);
- p->bark = speex_alloc(n*sizeof(*p->bark));
- p->rate=rate;
- p->vi = &example_tuning;
-
- /* BH4 window */
- p->window = speex_alloc(sizeof(*p->window)*n);
- float a0 = .35875f;
- float a1 = .48829f;
- float a2 = .14128f;
- float a3 = .01168f;
- for(i=0;i<n;i++)
- p->window[i] = //a0 - a1*cos(2.*M_PI/n*(i+.5)) + a2*cos(4.*M_PI/n*(i+.5)) - a3*cos(6.*M_PI/n*(i+.5));
- sin((i+.5)/n * M_PI)*sin((i+.5)/n * M_PI);
- /* bark scale lookups */
- for(i=0;i<n;i++){
- float bark=toBARK(rate/(2*n)*i);
-
- for(;lo+p->vi->noisewindowlomin<i &&
- toBARK(rate/(2*n)*lo)<(bark-p->vi->noisewindowlo);lo++);
-
- for(;hi<=n && (hi<i+p->vi->noisewindowhimin ||
- toBARK(rate/(2*n)*hi)<(bark+p->vi->noisewindowhi));hi++);
-
- p->bark[i]=((lo-1)<<16)+(hi-1);
-
- }
-
- /* set up rolling noise median */
- p->noiseoffset=speex_alloc(n*sizeof(*p->noiseoffset));
-
- for(i=0;i<n;i++){
- float halfoc=toOC((i+.5)*rate/(2.*n))*2.;
- int inthalfoc;
- float del;
-
- if(halfoc<0)halfoc=0;
- if(halfoc>=P_BANDS-1)halfoc=P_BANDS-1;
- inthalfoc=(int)halfoc;
- del=halfoc-inthalfoc;
-
- p->noiseoffset[i]=
- p->vi->noiseoff[inthalfoc]*(1.-del) +
- p->vi->noiseoff[inthalfoc+1]*del;
-
- }
-#if 0
- _analysis_output_always("noiseoff0",ls,p->noiseoffset,n,1,0,0);
-#endif
-
- return p;
-}
-
-void vorbis_psy_destroy(VorbisPsy *p)
-{
- if(p){
- spx_drft_clear(&p->lookup);
- if(p->bark)
- speex_free(p->bark);
- if(p->noiseoffset)
- speex_free(p->noiseoffset);
- if(p->window)
- speex_free(p->window);
- memset(p,0,sizeof(*p));
- speex_free(p);
- }
-}
-
-void compute_curve(VorbisPsy *psy, float *audio, float *curve)
-{
- int i;
- float work[psy->n];
-
- float scale=4.f/psy->n;
- float scale_dB;
-
- scale_dB=todB(scale);
-
- /* window the PCM data; use a BH4 window, not vorbis */
- for(i=0;i<psy->n;i++)
- work[i]=audio[i] * psy->window[i];
-
- {
- static int seq=0;
-
- //_analysis_output("win",seq,work,psy->n,0,0);
-
- seq++;
- }
-
- /* FFT yields more accurate tonal estimation (not phase sensitive) */
- spx_drft_forward(&psy->lookup,work);
-
- /* magnitudes */
- work[0]=scale_dB+todB(work[0]);
- for(i=1;i<psy->n-1;i+=2){
- float temp = work[i]*work[i] + work[i+1]*work[i+1];
- work[(i+1)>>1] = scale_dB+.5f * todB(temp);
- }
-
- /* derive a noise curve */
- _vp_noisemask(psy,work,curve);
-#define SIDEL 12
- for (i=0;i<SIDEL;i++)
- {
- curve[i]=curve[SIDEL];
- }
-#define SIDEH 12
- for (i=0;i<SIDEH;i++)
- {
- curve[(psy->n>>1)-i-1]=curve[(psy->n>>1)-SIDEH];
- }
- for(i=0;i<((psy->n)>>1);i++)
- curve[i] = fromdB(1.2*curve[i]+.2*i);
- //curve[i] = fromdB(0.8*curve[i]+.35*i);
- //curve[i] = fromdB(0.9*curve[i])*pow(1.0*i+45,1.3);
-}
-
-/* Transform a masking curve (power spectrum) into a pole-zero filter */
-void curve_to_lpc(VorbisPsy *psy, float *curve, float *awk1, float *awk2, int ord)
-{
- int i;
- float ac[psy->n];
- float tmp;
- int len = psy->n >> 1;
- for (i=0;i<2*len;i++)
- ac[i] = 0;
- for (i=1;i<len;i++)
- ac[2*i-1] = curve[i];
- ac[0] = curve[0];
- ac[2*len-1] = curve[len-1];
-
- spx_drft_backward(&psy->lookup, ac);
- _spx_lpc(awk1, ac, ord);
- tmp = 1.;
- for (i=0;i<ord;i++)
- {
- tmp *= .99;
- awk1[i] *= tmp;
- }
-#if 0
- for (i=0;i<ord;i++)
- awk2[i] = 0;
-#else
- /* Use the second (awk2) filter to correct the first one */
- for (i=0;i<2*len;i++)
- ac[i] = 0;
- for (i=0;i<ord;i++)
- ac[i+1] = awk1[i];
- ac[0] = 1;
- spx_drft_forward(&psy->lookup, ac);
- /* Compute (power) response of awk1 (all zero) */
- ac[0] *= ac[0];
- for (i=1;i<len;i++)
- ac[i] = ac[2*i-1]*ac[2*i-1] + ac[2*i]*ac[2*i];
- ac[len] = ac[2*len-1]*ac[2*len-1];
- /* Compute correction required */
- for (i=0;i<len;i++)
- curve[i] = 1. / (1e-6f+curve[i]*ac[i]);
-
- for (i=0;i<2*len;i++)
- ac[i] = 0;
- for (i=1;i<len;i++)
- ac[2*i-1] = curve[i];
- ac[0] = curve[0];
- ac[2*len-1] = curve[len-1];
-
- spx_drft_backward(&psy->lookup, ac);
- _spx_lpc(awk2, ac, ord);
- tmp = 1;
- for (i=0;i<ord;i++)
- {
- tmp *= .99;
- awk2[i] *= tmp;
- }
-#endif
-}
-
-#if 0
-#include <stdio.h>
-#include <math.h>
-
-#define ORDER 10
-#define CURVE_SIZE 24
-
-int main()
-{
- int i;
- float curve[CURVE_SIZE];
- float awk1[ORDER], awk2[ORDER];
- for (i=0;i<CURVE_SIZE;i++)
- scanf("%f ", &curve[i]);
- for (i=0;i<CURVE_SIZE;i++)
- curve[i] = pow(10.f, .1*curve[i]);
- curve_to_lpc(curve, CURVE_SIZE, awk1, awk2, ORDER);
- for (i=0;i<ORDER;i++)
- printf("%f ", awk1[i]);
- printf ("\n");
- for (i=0;i<ORDER;i++)
- printf("%f ", awk2[i]);
- printf ("\n");
- return 0;
-}
-#endif
-
-#endif
diff --git a/3rdparty/speex/libspeex/vorbis_psy.h b/3rdparty/speex/libspeex/vorbis_psy.h
deleted file mode 100644
index fbdb7c55..00000000
--- a/3rdparty/speex/libspeex/vorbis_psy.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Copyright (C) 2005 Jean-Marc Valin, CSIRO, Christopher Montgomery
- File: vorbis_psy.h
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef VORBIS_PSY_H
-#define VORBIS_PSY_H
-
-#ifdef VORBIS_PSYCHO
-
-#include "smallft.h"
-#define P_BANDS 17 /* 62Hz to 16kHz */
-#define NOISE_COMPAND_LEVELS 40
-
-
-#define todB(x) ((x)==0?-400.f:log((x)*(x))*4.34294480f)
-#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)
-
-/* 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))
-
-
-typedef struct {
-
- float noisewindowlo;
- float noisewindowhi;
- int noisewindowlomin;
- int noisewindowhimin;
- int noisewindowfixed;
- float noiseoff[P_BANDS];
- float noisecompand[NOISE_COMPAND_LEVELS];
-
-} VorbisPsyInfo;
-
-
-
-typedef struct {
- int n;
- int rate;
- struct drft_lookup lookup;
- VorbisPsyInfo *vi;
-
- float *window;
- float *noiseoffset;
- long *bark;
-
-} VorbisPsy;
-
-
-VorbisPsy *vorbis_psy_init(int rate, int size);
-void vorbis_psy_destroy(VorbisPsy *psy);
-void compute_curve(VorbisPsy *psy, float *audio, float *curve);
-void curve_to_lpc(VorbisPsy *psy, float *curve, float *awk1, float *awk2, int ord);
-
-#endif
-#endif
diff --git a/3rdparty/speex/libspeex/vq.c b/3rdparty/speex/libspeex/vq.c
deleted file mode 100644
index d40133f3..00000000
--- a/3rdparty/speex/libspeex/vq.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: vq.c
- Vector quantization
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "vq.h"
-#include "stack_alloc.h"
-#include "misc.h"
-
-#ifdef _USE_SSE
-#include <xmmintrin.h>
-#include "vq_sse.h"
-#elif defined(SHORTCUTS) && (defined(ARM4_ASM) || defined(ARM5E_ASM))
-#include "vq_arm4.h"
-#elif defined(BFIN_ASM)
-#include "vq_bfin.h"
-#endif
-
-
-int scal_quant(spx_word16_t in, const spx_word16_t *boundary, int entries)
-{
- int i=0;
- while (i<entries-1 && in>boundary[0])
- {
- boundary++;
- i++;
- }
- return i;
-}
-
-int scal_quant32(spx_word32_t in, const spx_word32_t *boundary, int entries)
-{
- int i=0;
- while (i<entries-1 && in>boundary[0])
- {
- boundary++;
- i++;
- }
- return i;
-}
-
-/*Finds the index of the entry in a codebook that best matches the input*/
-int vq_index(float *in, const float *codebook, int len, int entries)
-{
- int i,j;
- float min_dist=0;
- int best_index=0;
- for (i=0;i<entries;i++)
- {
- float dist=0;
- for (j=0;j<len;j++)
- {
- float tmp = in[j]-*codebook++;
- dist += tmp*tmp;
- }
- if (i==0 || dist<min_dist)
- {
- min_dist=dist;
- best_index=i;
- }
- }
- return best_index;
-}
-
-
-#ifndef OVERRIDE_VQ_NBEST
-/*Finds the indices of the n-best entries in a codebook*/
-void vq_nbest(spx_word16_t *in, const spx_word16_t *codebook, int len, int entries, spx_word32_t *E, int N, int *nbest, spx_word32_t *best_dist, char *stack)
-{
- int i,j,k,used;
- used = 0;
- for (i=0;i<entries;i++)
- {
- spx_word32_t dist=0;
- for (j=0;j<len;j++)
- dist = MAC16_16(dist,in[j],*codebook++);
-#ifdef FIXED_POINT
- dist=SUB32(SHR32(E[i],1),dist);
-#else
- dist=.5f*E[i]-dist;
-#endif
- if (i<N || dist<best_dist[N-1])
- {
- for (k=N-1; (k >= 1) && (k > used || dist < best_dist[k-1]); k--)
- {
- best_dist[k]=best_dist[k-1];
- nbest[k] = nbest[k-1];
- }
- best_dist[k]=dist;
- nbest[k]=i;
- used++;
- }
- }
-}
-#endif
-
-
-
-
-#ifndef OVERRIDE_VQ_NBEST_SIGN
-/*Finds the indices of the n-best entries in a codebook with sign*/
-void vq_nbest_sign(spx_word16_t *in, const spx_word16_t *codebook, int len, int entries, spx_word32_t *E, int N, int *nbest, spx_word32_t *best_dist, char *stack)
-{
- int i,j,k, sign, used;
- used=0;
- for (i=0;i<entries;i++)
- {
- spx_word32_t dist=0;
- for (j=0;j<len;j++)
- dist = MAC16_16(dist,in[j],*codebook++);
- if (dist>0)
- {
- sign=0;
- dist=-dist;
- } else
- {
- sign=1;
- }
-#ifdef FIXED_POINT
- dist = ADD32(dist,SHR32(E[i],1));
-#else
- dist = ADD32(dist,.5f*E[i]);
-#endif
- if (i<N || dist<best_dist[N-1])
- {
- for (k=N-1; (k >= 1) && (k > used || dist < best_dist[k-1]); k--)
- {
- best_dist[k]=best_dist[k-1];
- nbest[k] = nbest[k-1];
- }
- best_dist[k]=dist;
- nbest[k]=i;
- used++;
- if (sign)
- nbest[k]+=entries;
- }
- }
-}
-#endif
diff --git a/3rdparty/speex/libspeex/vq.h b/3rdparty/speex/libspeex/vq.h
deleted file mode 100644
index 7ca81975..00000000
--- a/3rdparty/speex/libspeex/vq.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin */
-/**
- @file vq.h
- @brief Vector quantization
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef VQ_H
-#define VQ_H
-
-#include "misc.h"
-
-int scal_quant(spx_word16_t in, const spx_word16_t *boundary, int entries);
-int scal_quant32(spx_word32_t in, const spx_word32_t *boundary, int entries);
-
-int vq_index(float *in, const float *codebook, int len, int entries);
-#ifdef _USE_SSE
-#include <xmmintrin.h>
-void vq_nbest(spx_word16_t *in, const __m128 *codebook, int len, int entries, __m128 *E, int N, int *nbest, spx_word32_t *best_dist, char *stack);
-
-void vq_nbest_sign(spx_word16_t *in, const __m128 *codebook, int len, int entries, __m128 *E, int N, int *nbest, spx_word32_t *best_dist, char *stack);
-#else
-void vq_nbest(spx_word16_t *in, const spx_word16_t *codebook, int len, int entries, spx_word32_t *E, int N, int *nbest, spx_word32_t *best_dist, char *stack);
-
-void vq_nbest_sign(spx_word16_t *in, const spx_word16_t *codebook, int len, int entries, spx_word32_t *E, int N, int *nbest, spx_word32_t *best_dist, char *stack);
-#endif
-
-#endif
diff --git a/3rdparty/speex/libspeex/vq_arm4.h b/3rdparty/speex/libspeex/vq_arm4.h
deleted file mode 100644
index 585b8613..00000000
--- a/3rdparty/speex/libspeex/vq_arm4.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* Copyright (C) 2004 Jean-Marc Valin */
-/**
- @file vq_arm4.h
- @brief ARM4-optimized vq routine
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#define OVERRIDE_VQ_NBEST
-void vq_nbest(spx_word16_t *in, const spx_word16_t *codebook, int len, int entries, spx_word32_t *E, int N, int *nbest, spx_word32_t *best_dist, char *stack)
-{
- int i,j;
- for (i=0;i<entries;i+=4)
- {
-#if 1
- spx_word32_t dist1, dist2, dist3, dist4;
- int dead1, dead2, dead3, dead4, dead5, dead6, dead7, dead8;
- __asm__ __volatile__ (
- "mov %0, #0 \n\t"
- "mov %1, #0 \n\t"
- "mov %2, #0 \n\t"
- "mov %3, #0 \n\t"
- "mov %10, %4 \n\t"
- "add %4, %4, %4\n\t"
- ".vqloop%=:\n\t"
- "ldrsh %7, [%5], #2 \n\t"
- "ldrsh %8, [%6] \n\t"
- "mov %9, %6 \n\t"
- "mla %0, %7, %8, %0 \n\t"
- "ldrsh %8, [%9, %4]! \n\t"
- "mla %1, %7, %8, %1 \n\t"
- "ldrsh %8, [%9, %4]!\n\t"
- "mla %2, %7, %8, %2 \n\t"
- "ldrsh %8, [%9, %4]! \n\t"
- "mla %3, %7, %8, %3 \n\t"
- "subs %10, %10, #1 \n\t"
- "add %6, %6, #2 \n\t"
- "bne .vqloop%="
- : "=r" (dist1), "=r" (dist2), "=r" (dist3), "=r" (dist4),
- "=r" (dead1), "=r" (dead2), "=r" (codebook), "=r" (dead4),
- "=r" (dead5), "=r" (dead6), "=r" (dead7)
- : "4" (len), "5" (in), "6" (codebook)
- : "cc");
-#else
-dist1=dist2=dist3=dist4=0;
- /* spx_word32_t dist1=0;
- spx_word32_t dist2=0;
- spx_word32_t dist3=0;
- spx_word32_t dist4=0;*/
- for (j=0;j<2;j++)
- {
- const spx_word16_t *code = codebook;
- dist1 = MAC16_16(dist1,in[j],*code);
- code += len;
- dist2 = MAC16_16(dist2,in[j],*code);
- code += len;
- dist3 = MAC16_16(dist3,in[j],*code);
- code += len;
- dist4 = MAC16_16(dist4,in[j],*code);
- codebook++;
- }
-#endif
- dist1=SUB32(SHR(*E++,1),dist1);
- if (dist1<*best_dist || i==0)
- {
- *best_dist=dist1;
- *nbest=i;
- }
- dist2=SUB32(SHR(*E++,1),dist2);
- if (dist2<*best_dist)
- {
- *best_dist=dist2;
- *nbest=i+1;
- }
- dist3=SUB32(SHR(*E++,1),dist3);
- if (dist3<*best_dist)
- {
- *best_dist=dist3;
- *nbest=i+2;
- }
- dist4=SUB32(SHR(*E++,1),dist4);
- if (dist4<*best_dist)
- {
- *best_dist=dist4;
- *nbest=i+3;
- }
- codebook += 3*len;
- }
-}
diff --git a/3rdparty/speex/libspeex/vq_bfin.h b/3rdparty/speex/libspeex/vq_bfin.h
deleted file mode 100644
index 2cc9ea5f..00000000
--- a/3rdparty/speex/libspeex/vq_bfin.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Copyright (C) 2005 Analog Devices */
-/**
- @file vq_bfin.h
- @author Jean-Marc Valin
- @brief Blackfin-optimized vq routine
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#define OVERRIDE_VQ_NBEST
-void vq_nbest(spx_word16_t *in, const spx_word16_t *codebook, int len, int entries, spx_word32_t *E, int N, int *nbest, spx_word32_t *best_dist, char *stack)
-{
- if (N==1)
- {
- best_dist[0] = 2147483647;
- {
- spx_word32_t dist;
- __asm__ __volatile__
- (
- "LC0 = %8;\n\t"
- "R2 = 0;\n\t"
- "I0 = %6;\n\t"
- "B0 = %6;\n\t"
- "L0 = %9;\n\t"
- "LOOP entries_loop%= LC0;\n\t"
- "LOOP_BEGIN entries_loop%=;\n\t"
- "%0 = [%4++];\n\t"
- "%0 >>= 1;\n\t"
- "A0 = %0;\n\t"
- "R0.L = W[%1++%7] || R1.L = W[I0++];\n\t"
- "LOOP vq_loop%= LC1 = %5;\n\t"
- "LOOP_BEGIN vq_loop%=;\n\t"
- "%0 = (A0 -= R0.L*R1.L) (IS) || R0.L = W[%1++%7] || R1.L = W[I0++];\n\t"
- "LOOP_END vq_loop%=;\n\t"
- "%0 = (A0 -= R0.L*R1.L) (IS);\n\t"
- "cc = %0 < %2;\n\t"
- "if cc %2 = %0;\n\t"
- "if cc %3 = R2;\n\t"
- "R2 += 1;\n\t"
- "LOOP_END entries_loop%=;\n\t"
- : "=&D" (dist), "=&a" (codebook), "=&d" (best_dist[0]), "=&d" (nbest[0]), "=&a" (E)
- : "a" (len-1), "a" (in), "a" (2), "d" (entries), "d" (len<<1), "1" (codebook), "4" (E), "2" (best_dist[0]), "3" (nbest[0])
- : "R0", "R1", "R2", "I0", "L0", "B0", "A0", "cc", "memory"
- );
- }
- } else {
- int i,k,used;
- used = 0;
- for (i=0;i<entries;i++)
- {
- spx_word32_t dist;
- __asm__
- (
- "%0 >>= 1;\n\t"
- "A0 = %0;\n\t"
- "I0 = %3;\n\t"
- "L0 = 0;\n\t"
- "R0.L = W[%1++%4] || R1.L = W[I0++];\n\t"
- "LOOP vq_loop%= LC0 = %2;\n\t"
- "LOOP_BEGIN vq_loop%=;\n\t"
- "%0 = (A0 -= R0.L*R1.L) (IS) || R0.L = W[%1++%4] || R1.L = W[I0++];\n\t"
- "LOOP_END vq_loop%=;\n\t"
- "%0 = (A0 -= R0.L*R1.L) (IS);\n\t"
- : "=D" (dist), "=a" (codebook)
- : "a" (len-1), "a" (in), "a" (2), "1" (codebook), "0" (E[i])
- : "R0", "R1", "I0", "L0", "A0"
- );
- if (i<N || dist<best_dist[N-1])
- {
- for (k=N-1; (k >= 1) && (k > used || dist < best_dist[k-1]); k--)
- {
- best_dist[k]=best_dist[k-1];
- nbest[k] = nbest[k-1];
- }
- best_dist[k]=dist;
- nbest[k]=i;
- used++;
- }
- }
- }
-}
diff --git a/3rdparty/speex/libspeex/vq_sse.h b/3rdparty/speex/libspeex/vq_sse.h
deleted file mode 100644
index 00a42ce3..00000000
--- a/3rdparty/speex/libspeex/vq_sse.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Copyright (C) 2004 Jean-Marc Valin */
-/**
- @file vq_sse.h
- @brief SSE-optimized vq routine
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#define OVERRIDE_VQ_NBEST
-void vq_nbest(spx_word16_t *_in, const __m128 *codebook, int len, int entries, __m128 *E, int N, int *nbest, spx_word32_t *best_dist, char *stack)
-{
- int i,j,k,used;
- VARDECL(float *dist);
- VARDECL(__m128 *in);
- __m128 half;
- used = 0;
- ALLOC(dist, entries, float);
- half = _mm_set_ps1(.5f);
- ALLOC(in, len, __m128);
- for (i=0;i<len;i++)
- in[i] = _mm_set_ps1(_in[i]);
- for (i=0;i<entries>>2;i++)
- {
- __m128 d = _mm_mul_ps(E[i], half);
- for (j=0;j<len;j++)
- d = _mm_sub_ps(d, _mm_mul_ps(in[j], *codebook++));
- _mm_storeu_ps(dist+4*i, d);
- }
- for (i=0;i<entries;i++)
- {
- if (i<N || dist[i]<best_dist[N-1])
- {
- for (k=N-1; (k >= 1) && (k > used || dist[i] < best_dist[k-1]); k--)
- {
- best_dist[k]=best_dist[k-1];
- nbest[k] = nbest[k-1];
- }
- best_dist[k]=dist[i];
- nbest[k]=i;
- used++;
- }
- }
-}
-
-
-
-
-#define OVERRIDE_VQ_NBEST_SIGN
-void vq_nbest_sign(spx_word16_t *_in, const __m128 *codebook, int len, int entries, __m128 *E, int N, int *nbest, spx_word32_t *best_dist, char *stack)
-{
- int i,j,k,used;
- VARDECL(float *dist);
- VARDECL(__m128 *in);
- __m128 half;
- used = 0;
- ALLOC(dist, entries, float);
- half = _mm_set_ps1(.5f);
- ALLOC(in, len, __m128);
- for (i=0;i<len;i++)
- in[i] = _mm_set_ps1(_in[i]);
- for (i=0;i<entries>>2;i++)
- {
- __m128 d = _mm_setzero_ps();
- for (j=0;j<len;j++)
- d = _mm_add_ps(d, _mm_mul_ps(in[j], *codebook++));
- _mm_storeu_ps(dist+4*i, d);
- }
- for (i=0;i<entries;i++)
- {
- int sign;
- if (dist[i]>0)
- {
- sign=0;
- dist[i]=-dist[i];
- } else
- {
- sign=1;
- }
- dist[i] += .5f*((float*)E)[i];
- if (i<N || dist[i]<best_dist[N-1])
- {
- for (k=N-1; (k >= 1) && (k > used || dist[i] < best_dist[k-1]); k--)
- {
- best_dist[k]=best_dist[k-1];
- nbest[k] = nbest[k-1];
- }
- best_dist[k]=dist[i];
- nbest[k]=i;
- used++;
- if (sign)
- nbest[k]+=entries;
- }
- }
-}
diff --git a/3rdparty/speex/libspeex/window.c b/3rdparty/speex/libspeex/window.c
deleted file mode 100644
index 65b19175..00000000
--- a/3rdparty/speex/libspeex/window.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/* Copyright (C) 2006 Jean-Marc Valin
- File: window.c
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "misc.h"
-
-#ifdef FIXED_POINT
-const spx_word16_t lpc_window[200] = {
-1310, 1313, 1321, 1333, 1352, 1375, 1403, 1436,
-1475, 1518, 1567, 1621, 1679, 1743, 1811, 1884,
-1962, 2044, 2132, 2224, 2320, 2421, 2526, 2636,
-2750, 2868, 2990, 3116, 3246, 3380, 3518, 3659,
-3804, 3952, 4104, 4259, 4417, 4578, 4742, 4909,
-5079, 5251, 5425, 5602, 5781, 5963, 6146, 6331,
-6518, 6706, 6896, 7087, 7280, 7473, 7668, 7863,
-8059, 8256, 8452, 8650, 8847, 9044, 9241, 9438,
-9635, 9831, 10026, 10220, 10414, 10606, 10797, 10987,
-11176, 11363, 11548, 11731, 11912, 12091, 12268, 12443,
-12615, 12785, 12952, 13116, 13277, 13435, 13590, 13742,
-13890, 14035, 14176, 14314, 14448, 14578, 14704, 14826,
-14944, 15058, 15168, 15273, 15374, 15470, 15562, 15649,
-15732, 15810, 15883, 15951, 16015, 16073, 16127, 16175,
-16219, 16257, 16291, 16319, 16342, 16360, 16373, 16381,
-16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384,
-16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384,
-16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384,
-16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384,
-16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384,
-16384, 16384, 16384, 16384, 16384, 16384, 16384, 16384,
-16384, 16384, 16384, 16361, 16294, 16183, 16028, 15830,
-15588, 15304, 14979, 14613, 14207, 13763, 13282, 12766,
-12215, 11631, 11016, 10373, 9702, 9007, 8289, 7551,
-6797, 6028, 5251, 4470, 3695, 2943, 2248, 1696
-};
-#else
-const spx_word16_t lpc_window[200] = {
- 0.080000f, 0.080158f, 0.080630f, 0.081418f, 0.082520f, 0.083935f, 0.085663f, 0.087703f,
- 0.090052f, 0.092710f, 0.095674f, 0.098943f, 0.102514f, 0.106385f, 0.110553f, 0.115015f,
- 0.119769f, 0.124811f, 0.130137f, 0.135744f, 0.141628f, 0.147786f, 0.154212f, 0.160902f,
- 0.167852f, 0.175057f, 0.182513f, 0.190213f, 0.198153f, 0.206328f, 0.214731f, 0.223357f,
- 0.232200f, 0.241254f, 0.250513f, 0.259970f, 0.269619f, 0.279453f, 0.289466f, 0.299651f,
- 0.310000f, 0.320507f, 0.331164f, 0.341965f, 0.352901f, 0.363966f, 0.375151f, 0.386449f,
- 0.397852f, 0.409353f, 0.420943f, 0.432615f, 0.444361f, 0.456172f, 0.468040f, 0.479958f,
- 0.491917f, 0.503909f, 0.515925f, 0.527959f, 0.540000f, 0.552041f, 0.564075f, 0.576091f,
- 0.588083f, 0.600042f, 0.611960f, 0.623828f, 0.635639f, 0.647385f, 0.659057f, 0.670647f,
- 0.682148f, 0.693551f, 0.704849f, 0.716034f, 0.727099f, 0.738035f, 0.748836f, 0.759493f,
- 0.770000f, 0.780349f, 0.790534f, 0.800547f, 0.810381f, 0.820030f, 0.829487f, 0.838746f,
- 0.847800f, 0.856643f, 0.865269f, 0.873672f, 0.881847f, 0.889787f, 0.897487f, 0.904943f,
- 0.912148f, 0.919098f, 0.925788f, 0.932214f, 0.938372f, 0.944256f, 0.949863f, 0.955189f,
- 0.960231f, 0.964985f, 0.969447f, 0.973615f, 0.977486f, 0.981057f, 0.984326f, 0.987290f,
- 0.989948f, 0.992297f, 0.994337f, 0.996065f, 0.997480f, 0.998582f, 0.999370f, 0.999842f,
- 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f,
- 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f,
- 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f,
- 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f,
- 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f,
- 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f, 1.000000f,
- 1.000000f, 1.000000f, 1.000000f, 0.998640f, 0.994566f, 0.987787f, 0.978324f, 0.966203f,
- 0.951458f, 0.934131f, 0.914270f, 0.891931f, 0.867179f, 0.840084f, 0.810723f, 0.779182f,
- 0.745551f, 0.709930f, 0.672424f, 0.633148f, 0.592223f, 0.549781f, 0.505964f, 0.460932f,
- 0.414863f, 0.367968f, 0.320511f, 0.272858f, 0.225569f, 0.179655f, 0.137254f, 0.103524f
-};
-#endif
diff --git a/3rdparty/speex/macosx/English.lproj/InfoPlist.strings b/3rdparty/speex/macosx/English.lproj/InfoPlist.strings
deleted file mode 100644
index 166513d3..00000000
--- a/3rdparty/speex/macosx/English.lproj/InfoPlist.strings
+++ /dev/null
Binary files differ
diff --git a/3rdparty/speex/macosx/Info.plist b/3rdparty/speex/macosx/Info.plist
deleted file mode 100644
index 1d1c47c8..00000000
--- a/3rdparty/speex/macosx/Info.plist
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>Speex</string>
- <key>CFBundleGetInfoString</key>
- <string>Speex framework 1.1.12svn, Copyright © 2002-2006 Xiph.Org Foundation</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>org.xiph.speex</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>FMWK</string>
- <key>CFBundleShortVersionString</key>
- <string>1.1.12svn</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1.1.12d1</string>
- <key>NSHumanReadableCopyright</key>
- <string>Speex framework 1.1.12svn, Copyright © 2002-2006 Xiph.Org Foundation</string>
- <key>CSResourcesFileMapped</key>
- <true/>
-</dict>
-</plist>
diff --git a/3rdparty/speex/macosx/Speex.xcodeproj/project.pbxproj b/3rdparty/speex/macosx/Speex.xcodeproj/project.pbxproj
deleted file mode 100644
index ec111a65..00000000
--- a/3rdparty/speex/macosx/Speex.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,753 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 42;
- objects = {
-
-/* Begin PBXBuildFile section */
- 73814AFF0907FB8200C478FC /* speex_echo.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF30907FB8200C478FC /* speex_echo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B000907FB8200C478FC /* speex_header.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF40907FB8200C478FC /* speex_header.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B010907FB8200C478FC /* speex_jitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF50907FB8200C478FC /* speex_jitter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B020907FB8200C478FC /* speex_preprocess.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF60907FB8200C478FC /* speex_preprocess.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B030907FB8200C478FC /* speex_stereo.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF70907FB8200C478FC /* speex_stereo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B040907FB8200C478FC /* speex_types.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF80907FB8200C478FC /* speex_types.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B060907FBAB00C478FC /* speex_callbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF10907FB8200C478FC /* speex_callbacks.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B070907FBAD00C478FC /* speex_bits.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF00907FB8200C478FC /* speex_bits.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B080907FBAE00C478FC /* speex.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AEF0907FB8200C478FC /* speex.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B5A0907FC9900C478FC /* bits.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B0D0907FC9900C478FC /* bits.c */; };
- 73814B5E0907FC9900C478FC /* cb_search.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B110907FC9900C478FC /* cb_search.c */; };
- 73814B600907FC9900C478FC /* exc_5_64_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B130907FC9900C478FC /* exc_5_64_table.c */; };
- 73814B610907FC9900C478FC /* exc_5_256_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B140907FC9900C478FC /* exc_5_256_table.c */; };
- 73814B620907FC9900C478FC /* exc_8_128_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B150907FC9900C478FC /* exc_8_128_table.c */; };
- 73814B630907FC9900C478FC /* exc_10_16_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B160907FC9900C478FC /* exc_10_16_table.c */; };
- 73814B640907FC9900C478FC /* exc_10_32_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B170907FC9900C478FC /* exc_10_32_table.c */; };
- 73814B650907FC9900C478FC /* exc_20_32_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B180907FC9900C478FC /* exc_20_32_table.c */; };
- 73814B690907FC9900C478FC /* filters.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B1C0907FC9900C478FC /* filters.c */; };
- 73814B700907FC9900C478FC /* gain_table_lbr.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B230907FC9900C478FC /* gain_table_lbr.c */; };
- 73814B710907FC9900C478FC /* gain_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B240907FC9900C478FC /* gain_table.c */; };
- 73814B720907FC9900C478FC /* hexc_10_32_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B250907FC9900C478FC /* hexc_10_32_table.c */; };
- 73814B730907FC9900C478FC /* hexc_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B260907FC9900C478FC /* hexc_table.c */; };
- 73814B740907FC9900C478FC /* high_lsp_tables.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B270907FC9900C478FC /* high_lsp_tables.c */; };
- 73814B750907FC9900C478FC /* jitter.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B280907FC9900C478FC /* jitter.c */; };
- 73814B760907FC9900C478FC /* lbr_48k_tables.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B290907FC9900C478FC /* lbr_48k_tables.c */; };
- 73814B780907FC9900C478FC /* lpc.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B2B0907FC9900C478FC /* lpc.c */; };
- 73814B7A0907FC9900C478FC /* lsp_tables_nb.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B2D0907FC9900C478FC /* lsp_tables_nb.c */; };
- 73814B7B0907FC9900C478FC /* lsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B2E0907FC9900C478FC /* lsp.c */; };
- 73814B800907FC9900C478FC /* ltp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B330907FC9900C478FC /* ltp.c */; };
- 73814B840907FC9900C478FC /* math_approx.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B370907FC9900C478FC /* math_approx.c */; };
- 73814B880907FC9900C478FC /* misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B3B0907FC9900C478FC /* misc.c */; };
- 73814B8A0907FC9900C478FC /* modes.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B3D0907FC9900C478FC /* modes.c */; };
- 73814B8C0907FC9900C478FC /* nb_celp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B3F0907FC9900C478FC /* nb_celp.c */; };
- 73814B8E0907FC9900C478FC /* preprocess.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B410907FC9900C478FC /* preprocess.c */; };
- 73814B8F0907FC9900C478FC /* quant_lsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B420907FC9900C478FC /* quant_lsp.c */; };
- 73814B910907FC9900C478FC /* sb_celp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B440907FC9900C478FC /* sb_celp.c */; };
- 73814B930907FC9900C478FC /* smallft.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B460907FC9900C478FC /* smallft.c */; };
- 73814B950907FC9900C478FC /* speex_callbacks.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B480907FC9900C478FC /* speex_callbacks.c */; };
- 73814B960907FC9900C478FC /* speex_header.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B490907FC9900C478FC /* speex_header.c */; };
- 73814B970907FC9900C478FC /* speex.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B4A0907FC9900C478FC /* speex.c */; };
- 73814B990907FC9900C478FC /* stereo.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B4C0907FC9900C478FC /* stereo.c */; };
- 73814B9F0907FC9900C478FC /* vbr.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B520907FC9900C478FC /* vbr.c */; };
- 73814BA40907FC9900C478FC /* vq.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B570907FC9900C478FC /* vq.c */; };
- 738837440B1934D0005C7A69 /* mdf.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B390907FC9900C478FC /* mdf.c */; };
- 738837540B193581005C7A69 /* _kiss_fft_guts.h in Headers */ = {isa = PBXBuildFile; fileRef = 738837460B193581005C7A69 /* _kiss_fft_guts.h */; };
- 738837550B193581005C7A69 /* fftwrap.c in Sources */ = {isa = PBXBuildFile; fileRef = 738837470B193581005C7A69 /* fftwrap.c */; };
- 738837560B193581005C7A69 /* fftwrap.h in Headers */ = {isa = PBXBuildFile; fileRef = 738837480B193581005C7A69 /* fftwrap.h */; };
- 738837570B193581005C7A69 /* filterbank.c in Sources */ = {isa = PBXBuildFile; fileRef = 738837490B193581005C7A69 /* filterbank.c */; };
- 738837580B193581005C7A69 /* filterbank.h in Headers */ = {isa = PBXBuildFile; fileRef = 7388374A0B193581005C7A69 /* filterbank.h */; };
- 738837590B193581005C7A69 /* kiss_fft.c in Sources */ = {isa = PBXBuildFile; fileRef = 7388374B0B193581005C7A69 /* kiss_fft.c */; };
- 7388375A0B193581005C7A69 /* kiss_fft.h in Headers */ = {isa = PBXBuildFile; fileRef = 7388374C0B193581005C7A69 /* kiss_fft.h */; };
- 7388375B0B193581005C7A69 /* kiss_fftr.c in Sources */ = {isa = PBXBuildFile; fileRef = 7388374D0B193581005C7A69 /* kiss_fftr.c */; };
- 7388375C0B193581005C7A69 /* kiss_fftr.h in Headers */ = {isa = PBXBuildFile; fileRef = 7388374E0B193581005C7A69 /* kiss_fftr.h */; };
- 7388375D0B193581005C7A69 /* lsp_bfin.h in Headers */ = {isa = PBXBuildFile; fileRef = 7388374F0B193581005C7A69 /* lsp_bfin.h */; };
- 7388375E0B193581005C7A69 /* pseudofloat.h in Headers */ = {isa = PBXBuildFile; fileRef = 738837500B193581005C7A69 /* pseudofloat.h */; };
- 7388375F0B193581005C7A69 /* quant_lsp_bfin.h in Headers */ = {isa = PBXBuildFile; fileRef = 738837510B193581005C7A69 /* quant_lsp_bfin.h */; };
- 738837600B193581005C7A69 /* vorbis_psy.c in Sources */ = {isa = PBXBuildFile; fileRef = 738837520B193581005C7A69 /* vorbis_psy.c */; };
- 738837610B193581005C7A69 /* vorbis_psy.h in Headers */ = {isa = PBXBuildFile; fileRef = 738837530B193581005C7A69 /* vorbis_psy.h */; };
- 7388377B0B193784005C7A69 /* bits.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B0D0907FC9900C478FC /* bits.c */; };
- 7388377C0B193785005C7A69 /* cb_search.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B110907FC9900C478FC /* cb_search.c */; };
- 7388377D0B193788005C7A69 /* exc_10_16_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B160907FC9900C478FC /* exc_10_16_table.c */; };
- 7388377E0B193789005C7A69 /* exc_10_32_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B170907FC9900C478FC /* exc_10_32_table.c */; };
- 7388377F0B19378A005C7A69 /* exc_20_32_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B180907FC9900C478FC /* exc_20_32_table.c */; };
- 738837800B19378A005C7A69 /* exc_5_256_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B140907FC9900C478FC /* exc_5_256_table.c */; };
- 738837810B19378C005C7A69 /* exc_5_64_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B130907FC9900C478FC /* exc_5_64_table.c */; };
- 738837820B19378E005C7A69 /* exc_8_128_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B150907FC9900C478FC /* exc_8_128_table.c */; };
- 738837830B193791005C7A69 /* fftwrap.c in Sources */ = {isa = PBXBuildFile; fileRef = 738837470B193581005C7A69 /* fftwrap.c */; };
- 738837840B193792005C7A69 /* filterbank.c in Sources */ = {isa = PBXBuildFile; fileRef = 738837490B193581005C7A69 /* filterbank.c */; };
- 738837850B193793005C7A69 /* filters.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B1C0907FC9900C478FC /* filters.c */; };
- 738837860B193795005C7A69 /* gain_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B240907FC9900C478FC /* gain_table.c */; };
- 738837870B193796005C7A69 /* gain_table_lbr.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B230907FC9900C478FC /* gain_table_lbr.c */; };
- 738837880B193799005C7A69 /* hexc_10_32_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B250907FC9900C478FC /* hexc_10_32_table.c */; };
- 738837890B19379B005C7A69 /* hexc_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B260907FC9900C478FC /* hexc_table.c */; };
- 7388378A0B19379E005C7A69 /* high_lsp_tables.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B270907FC9900C478FC /* high_lsp_tables.c */; };
- 7388378B0B1937A0005C7A69 /* jitter.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B280907FC9900C478FC /* jitter.c */; };
- 7388378C0B1937A4005C7A69 /* kiss_fft.c in Sources */ = {isa = PBXBuildFile; fileRef = 7388374B0B193581005C7A69 /* kiss_fft.c */; };
- 7388378D0B1937A9005C7A69 /* kiss_fftr.c in Sources */ = {isa = PBXBuildFile; fileRef = 7388374D0B193581005C7A69 /* kiss_fftr.c */; };
- 7388378E0B1937AE005C7A69 /* lbr_48k_tables.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B290907FC9900C478FC /* lbr_48k_tables.c */; };
- 7388378F0B1937B0005C7A69 /* lpc.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B2B0907FC9900C478FC /* lpc.c */; };
- 738837900B1937B0005C7A69 /* lsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B2E0907FC9900C478FC /* lsp.c */; };
- 738837910B1937B5005C7A69 /* lsp_tables_nb.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B2D0907FC9900C478FC /* lsp_tables_nb.c */; };
- 738837920B1937B7005C7A69 /* ltp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B330907FC9900C478FC /* ltp.c */; };
- 738837930B1937B9005C7A69 /* math_approx.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B370907FC9900C478FC /* math_approx.c */; };
- 738837940B1937BB005C7A69 /* mdf.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B390907FC9900C478FC /* mdf.c */; };
- 738837950B1937BD005C7A69 /* misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B3B0907FC9900C478FC /* misc.c */; };
- 738837960B1937BE005C7A69 /* modes.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B3D0907FC9900C478FC /* modes.c */; };
- 738837970B1937C0005C7A69 /* nb_celp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B3F0907FC9900C478FC /* nb_celp.c */; };
- 738837980B1937C2005C7A69 /* preprocess.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B410907FC9900C478FC /* preprocess.c */; };
- 738837990B1937C4005C7A69 /* quant_lsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B420907FC9900C478FC /* quant_lsp.c */; };
- 7388379A0B1937C6005C7A69 /* sb_celp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B440907FC9900C478FC /* sb_celp.c */; };
- 7388379B0B1937C9005C7A69 /* smallft.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B460907FC9900C478FC /* smallft.c */; };
- 7388379C0B1937CB005C7A69 /* speex.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B4A0907FC9900C478FC /* speex.c */; };
- 7388379D0B1937CE005C7A69 /* speex_callbacks.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B480907FC9900C478FC /* speex_callbacks.c */; };
- 7388379E0B1937D0005C7A69 /* speex_header.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B490907FC9900C478FC /* speex_header.c */; };
- 7388379F0B1937D1005C7A69 /* stereo.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B4C0907FC9900C478FC /* stereo.c */; };
- 738837A00B1937DA005C7A69 /* vbr.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B520907FC9900C478FC /* vbr.c */; };
- 738837A10B1937DD005C7A69 /* vorbis_psy.c in Sources */ = {isa = PBXBuildFile; fileRef = 738837520B193581005C7A69 /* vorbis_psy.c */; };
- 738837A20B1937DF005C7A69 /* vq.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B570907FC9900C478FC /* vq.c */; };
- 738837A30B1937E1005C7A69 /* window.c in Sources */ = {isa = PBXBuildFile; fileRef = BFF73DCF0A78AA170078A4A8 /* window.c */; };
- 8D07F2C00486CC7A007CD1D0 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; };
- BFF73DD00A78AA170078A4A8 /* window.c in Sources */ = {isa = PBXBuildFile; fileRef = BFF73DCF0A78AA170078A4A8 /* window.c */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
- 089C1667FE841158C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
- 32BAE0B70371A74B00C91783 /* Speex_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Speex_Prefix.pch; sourceTree = "<group>"; };
- 73814AEF0907FB8200C478FC /* speex.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex.h; sourceTree = "<group>"; };
- 73814AF00907FB8200C478FC /* speex_bits.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_bits.h; sourceTree = "<group>"; };
- 73814AF10907FB8200C478FC /* speex_callbacks.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_callbacks.h; sourceTree = "<group>"; };
- 73814AF30907FB8200C478FC /* speex_echo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_echo.h; sourceTree = "<group>"; };
- 73814AF40907FB8200C478FC /* speex_header.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_header.h; sourceTree = "<group>"; };
- 73814AF50907FB8200C478FC /* speex_jitter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_jitter.h; sourceTree = "<group>"; };
- 73814AF60907FB8200C478FC /* speex_preprocess.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_preprocess.h; sourceTree = "<group>"; };
- 73814AF70907FB8200C478FC /* speex_stereo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_stereo.h; sourceTree = "<group>"; };
- 73814AF80907FB8200C478FC /* speex_types.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_types.h; sourceTree = "<group>"; };
- 73814B0C0907FC9900C478FC /* arch.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = arch.h; path = ../libspeex/arch.h; sourceTree = SOURCE_ROOT; };
- 73814B0D0907FC9900C478FC /* bits.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = bits.c; path = ../libspeex/bits.c; sourceTree = SOURCE_ROOT; };
- 73814B0E0907FC9900C478FC /* cb_search_arm4.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cb_search_arm4.h; path = ../libspeex/cb_search_arm4.h; sourceTree = SOURCE_ROOT; };
- 73814B0F0907FC9900C478FC /* cb_search_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cb_search_bfin.h; path = ../libspeex/cb_search_bfin.h; sourceTree = SOURCE_ROOT; };
- 73814B100907FC9900C478FC /* cb_search_sse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cb_search_sse.h; path = ../libspeex/cb_search_sse.h; sourceTree = SOURCE_ROOT; };
- 73814B110907FC9900C478FC /* cb_search.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = cb_search.c; path = ../libspeex/cb_search.c; sourceTree = SOURCE_ROOT; };
- 73814B120907FC9900C478FC /* cb_search.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cb_search.h; path = ../libspeex/cb_search.h; sourceTree = SOURCE_ROOT; };
- 73814B130907FC9900C478FC /* exc_5_64_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = exc_5_64_table.c; path = ../libspeex/exc_5_64_table.c; sourceTree = SOURCE_ROOT; };
- 73814B140907FC9900C478FC /* exc_5_256_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = exc_5_256_table.c; path = ../libspeex/exc_5_256_table.c; sourceTree = SOURCE_ROOT; };
- 73814B150907FC9900C478FC /* exc_8_128_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = exc_8_128_table.c; path = ../libspeex/exc_8_128_table.c; sourceTree = SOURCE_ROOT; };
- 73814B160907FC9900C478FC /* exc_10_16_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = exc_10_16_table.c; path = ../libspeex/exc_10_16_table.c; sourceTree = SOURCE_ROOT; };
- 73814B170907FC9900C478FC /* exc_10_32_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = exc_10_32_table.c; path = ../libspeex/exc_10_32_table.c; sourceTree = SOURCE_ROOT; };
- 73814B180907FC9900C478FC /* exc_20_32_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = exc_20_32_table.c; path = ../libspeex/exc_20_32_table.c; sourceTree = SOURCE_ROOT; };
- 73814B190907FC9900C478FC /* filters_arm4.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = filters_arm4.h; path = ../libspeex/filters_arm4.h; sourceTree = SOURCE_ROOT; };
- 73814B1A0907FC9900C478FC /* filters_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = filters_bfin.h; path = ../libspeex/filters_bfin.h; sourceTree = SOURCE_ROOT; };
- 73814B1B0907FC9900C478FC /* filters_sse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = filters_sse.h; path = ../libspeex/filters_sse.h; sourceTree = SOURCE_ROOT; };
- 73814B1C0907FC9900C478FC /* filters.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = filters.c; path = ../libspeex/filters.c; sourceTree = SOURCE_ROOT; };
- 73814B1D0907FC9900C478FC /* filters.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = filters.h; path = ../libspeex/filters.h; sourceTree = SOURCE_ROOT; };
- 73814B1E0907FC9900C478FC /* fixed_arm4.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fixed_arm4.h; path = ../libspeex/fixed_arm4.h; sourceTree = SOURCE_ROOT; };
- 73814B1F0907FC9900C478FC /* fixed_arm5e.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fixed_arm5e.h; path = ../libspeex/fixed_arm5e.h; sourceTree = SOURCE_ROOT; };
- 73814B200907FC9900C478FC /* fixed_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fixed_bfin.h; path = ../libspeex/fixed_bfin.h; sourceTree = SOURCE_ROOT; };
- 73814B210907FC9900C478FC /* fixed_debug.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fixed_debug.h; path = ../libspeex/fixed_debug.h; sourceTree = SOURCE_ROOT; };
- 73814B220907FC9900C478FC /* fixed_generic.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fixed_generic.h; path = ../libspeex/fixed_generic.h; sourceTree = SOURCE_ROOT; };
- 73814B230907FC9900C478FC /* gain_table_lbr.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = gain_table_lbr.c; path = ../libspeex/gain_table_lbr.c; sourceTree = SOURCE_ROOT; };
- 73814B240907FC9900C478FC /* gain_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = gain_table.c; path = ../libspeex/gain_table.c; sourceTree = SOURCE_ROOT; };
- 73814B250907FC9900C478FC /* hexc_10_32_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = hexc_10_32_table.c; path = ../libspeex/hexc_10_32_table.c; sourceTree = SOURCE_ROOT; };
- 73814B260907FC9900C478FC /* hexc_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = hexc_table.c; path = ../libspeex/hexc_table.c; sourceTree = SOURCE_ROOT; };
- 73814B270907FC9900C478FC /* high_lsp_tables.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = high_lsp_tables.c; path = ../libspeex/high_lsp_tables.c; sourceTree = SOURCE_ROOT; };
- 73814B280907FC9900C478FC /* jitter.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jitter.c; path = ../libspeex/jitter.c; sourceTree = SOURCE_ROOT; };
- 73814B290907FC9900C478FC /* lbr_48k_tables.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lbr_48k_tables.c; path = ../libspeex/lbr_48k_tables.c; sourceTree = SOURCE_ROOT; };
- 73814B2A0907FC9900C478FC /* lpc_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = lpc_bfin.h; path = ../libspeex/lpc_bfin.h; sourceTree = SOURCE_ROOT; };
- 73814B2B0907FC9900C478FC /* lpc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lpc.c; path = ../libspeex/lpc.c; sourceTree = SOURCE_ROOT; };
- 73814B2C0907FC9900C478FC /* lpc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = lpc.h; path = ../libspeex/lpc.h; sourceTree = SOURCE_ROOT; };
- 73814B2D0907FC9900C478FC /* lsp_tables_nb.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lsp_tables_nb.c; path = ../libspeex/lsp_tables_nb.c; sourceTree = SOURCE_ROOT; };
- 73814B2E0907FC9900C478FC /* lsp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lsp.c; path = ../libspeex/lsp.c; sourceTree = SOURCE_ROOT; };
- 73814B2F0907FC9900C478FC /* lsp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = lsp.h; path = ../libspeex/lsp.h; sourceTree = SOURCE_ROOT; };
- 73814B300907FC9900C478FC /* ltp_arm4.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ltp_arm4.h; path = ../libspeex/ltp_arm4.h; sourceTree = SOURCE_ROOT; };
- 73814B310907FC9900C478FC /* ltp_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ltp_bfin.h; path = ../libspeex/ltp_bfin.h; sourceTree = SOURCE_ROOT; };
- 73814B320907FC9900C478FC /* ltp_sse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ltp_sse.h; path = ../libspeex/ltp_sse.h; sourceTree = SOURCE_ROOT; };
- 73814B330907FC9900C478FC /* ltp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = ltp.c; path = ../libspeex/ltp.c; sourceTree = SOURCE_ROOT; };
- 73814B340907FC9900C478FC /* ltp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ltp.h; path = ../libspeex/ltp.h; sourceTree = SOURCE_ROOT; };
- 73814B370907FC9900C478FC /* math_approx.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = math_approx.c; path = ../libspeex/math_approx.c; sourceTree = SOURCE_ROOT; };
- 73814B380907FC9900C478FC /* math_approx.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = math_approx.h; path = ../libspeex/math_approx.h; sourceTree = SOURCE_ROOT; };
- 73814B390907FC9900C478FC /* mdf.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = mdf.c; path = ../libspeex/mdf.c; sourceTree = SOURCE_ROOT; };
- 73814B3A0907FC9900C478FC /* misc_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = misc_bfin.h; path = ../libspeex/misc_bfin.h; sourceTree = SOURCE_ROOT; };
- 73814B3B0907FC9900C478FC /* misc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = misc.c; path = ../libspeex/misc.c; sourceTree = SOURCE_ROOT; };
- 73814B3C0907FC9900C478FC /* misc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = misc.h; path = ../libspeex/misc.h; sourceTree = SOURCE_ROOT; };
- 73814B3D0907FC9900C478FC /* modes.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = modes.c; path = ../libspeex/modes.c; sourceTree = SOURCE_ROOT; };
- 73814B3E0907FC9900C478FC /* modes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = modes.h; path = ../libspeex/modes.h; sourceTree = SOURCE_ROOT; };
- 73814B3F0907FC9900C478FC /* nb_celp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = nb_celp.c; path = ../libspeex/nb_celp.c; sourceTree = SOURCE_ROOT; };
- 73814B400907FC9900C478FC /* nb_celp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = nb_celp.h; path = ../libspeex/nb_celp.h; sourceTree = SOURCE_ROOT; };
- 73814B410907FC9900C478FC /* preprocess.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = preprocess.c; path = ../libspeex/preprocess.c; sourceTree = SOURCE_ROOT; };
- 73814B420907FC9900C478FC /* quant_lsp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = quant_lsp.c; path = ../libspeex/quant_lsp.c; sourceTree = SOURCE_ROOT; };
- 73814B430907FC9900C478FC /* quant_lsp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = quant_lsp.h; path = ../libspeex/quant_lsp.h; sourceTree = SOURCE_ROOT; };
- 73814B440907FC9900C478FC /* sb_celp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sb_celp.c; path = ../libspeex/sb_celp.c; sourceTree = SOURCE_ROOT; };
- 73814B450907FC9900C478FC /* sb_celp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sb_celp.h; path = ../libspeex/sb_celp.h; sourceTree = SOURCE_ROOT; };
- 73814B460907FC9900C478FC /* smallft.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = smallft.c; path = ../libspeex/smallft.c; sourceTree = SOURCE_ROOT; };
- 73814B470907FC9900C478FC /* smallft.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = smallft.h; path = ../libspeex/smallft.h; sourceTree = SOURCE_ROOT; };
- 73814B480907FC9900C478FC /* speex_callbacks.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = speex_callbacks.c; path = ../libspeex/speex_callbacks.c; sourceTree = SOURCE_ROOT; };
- 73814B490907FC9900C478FC /* speex_header.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = speex_header.c; path = ../libspeex/speex_header.c; sourceTree = SOURCE_ROOT; };
- 73814B4A0907FC9900C478FC /* speex.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = speex.c; path = ../libspeex/speex.c; sourceTree = SOURCE_ROOT; };
- 73814B4B0907FC9900C478FC /* stack_alloc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = stack_alloc.h; path = ../libspeex/stack_alloc.h; sourceTree = SOURCE_ROOT; };
- 73814B4C0907FC9900C478FC /* stereo.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = stereo.c; path = ../libspeex/stereo.c; sourceTree = SOURCE_ROOT; };
- 73814B4D0907FC9900C478FC /* testdenoise.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = testdenoise.c; path = ../libspeex/testdenoise.c; sourceTree = SOURCE_ROOT; };
- 73814B4E0907FC9900C478FC /* testecho.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = testecho.c; path = ../libspeex/testecho.c; sourceTree = SOURCE_ROOT; };
- 73814B4F0907FC9900C478FC /* testenc_uwb.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = testenc_uwb.c; path = ../libspeex/testenc_uwb.c; sourceTree = SOURCE_ROOT; };
- 73814B500907FC9900C478FC /* testenc_wb.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = testenc_wb.c; path = ../libspeex/testenc_wb.c; sourceTree = SOURCE_ROOT; };
- 73814B510907FC9900C478FC /* testenc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = testenc.c; path = ../libspeex/testenc.c; sourceTree = SOURCE_ROOT; };
- 73814B520907FC9900C478FC /* vbr.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = vbr.c; path = ../libspeex/vbr.c; sourceTree = SOURCE_ROOT; };
- 73814B530907FC9900C478FC /* vbr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vbr.h; path = ../libspeex/vbr.h; sourceTree = SOURCE_ROOT; };
- 73814B540907FC9900C478FC /* vq_arm4.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vq_arm4.h; path = ../libspeex/vq_arm4.h; sourceTree = SOURCE_ROOT; };
- 73814B550907FC9900C478FC /* vq_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vq_bfin.h; path = ../libspeex/vq_bfin.h; sourceTree = SOURCE_ROOT; };
- 73814B560907FC9900C478FC /* vq_sse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vq_sse.h; path = ../libspeex/vq_sse.h; sourceTree = SOURCE_ROOT; };
- 73814B570907FC9900C478FC /* vq.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = vq.c; path = ../libspeex/vq.c; sourceTree = SOURCE_ROOT; };
- 73814B580907FC9900C478FC /* vq.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vq.h; path = ../libspeex/vq.h; sourceTree = SOURCE_ROOT; };
- 738837460B193581005C7A69 /* _kiss_fft_guts.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = _kiss_fft_guts.h; path = ../libspeex/_kiss_fft_guts.h; sourceTree = SOURCE_ROOT; };
- 738837470B193581005C7A69 /* fftwrap.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fftwrap.c; path = ../libspeex/fftwrap.c; sourceTree = SOURCE_ROOT; };
- 738837480B193581005C7A69 /* fftwrap.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fftwrap.h; path = ../libspeex/fftwrap.h; sourceTree = SOURCE_ROOT; };
- 738837490B193581005C7A69 /* filterbank.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = filterbank.c; path = ../libspeex/filterbank.c; sourceTree = SOURCE_ROOT; };
- 7388374A0B193581005C7A69 /* filterbank.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = filterbank.h; path = ../libspeex/filterbank.h; sourceTree = SOURCE_ROOT; };
- 7388374B0B193581005C7A69 /* kiss_fft.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = kiss_fft.c; path = ../libspeex/kiss_fft.c; sourceTree = SOURCE_ROOT; };
- 7388374C0B193581005C7A69 /* kiss_fft.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = kiss_fft.h; path = ../libspeex/kiss_fft.h; sourceTree = SOURCE_ROOT; };
- 7388374D0B193581005C7A69 /* kiss_fftr.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = kiss_fftr.c; path = ../libspeex/kiss_fftr.c; sourceTree = SOURCE_ROOT; };
- 7388374E0B193581005C7A69 /* kiss_fftr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = kiss_fftr.h; path = ../libspeex/kiss_fftr.h; sourceTree = SOURCE_ROOT; };
- 7388374F0B193581005C7A69 /* lsp_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = lsp_bfin.h; path = ../libspeex/lsp_bfin.h; sourceTree = SOURCE_ROOT; };
- 738837500B193581005C7A69 /* pseudofloat.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pseudofloat.h; path = ../libspeex/pseudofloat.h; sourceTree = SOURCE_ROOT; };
- 738837510B193581005C7A69 /* quant_lsp_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = quant_lsp_bfin.h; path = ../libspeex/quant_lsp_bfin.h; sourceTree = SOURCE_ROOT; };
- 738837520B193581005C7A69 /* vorbis_psy.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = vorbis_psy.c; path = ../libspeex/vorbis_psy.c; sourceTree = SOURCE_ROOT; };
- 738837530B193581005C7A69 /* vorbis_psy.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vorbis_psy.h; path = ../libspeex/vorbis_psy.h; sourceTree = SOURCE_ROOT; };
- 738837770B193667005C7A69 /* libspeex.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libspeex.a; sourceTree = BUILT_PRODUCTS_DIR; };
- 8D07F2C70486CC7A007CD1D0 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
- 8D07F2C80486CC7A007CD1D0 /* Speex.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Speex.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- BFF73DCF0A78AA170078A4A8 /* window.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = window.c; path = ../libspeex/window.c; sourceTree = SOURCE_ROOT; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 738837750B193667005C7A69 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 8D07F2C30486CC7A007CD1D0 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 034768DDFF38A45A11DB9C8B /* Products */ = {
- isa = PBXGroup;
- children = (
- 8D07F2C80486CC7A007CD1D0 /* Speex.framework */,
- 738837770B193667005C7A69 /* libspeex.a */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 0867D691FE84028FC02AAC07 /* Speex */ = {
- isa = PBXGroup;
- children = (
- 08FB77ACFE841707C02AAC07 /* Source */,
- 73814AEB0907FB6400C478FC /* Headers */,
- 089C1665FE841158C02AAC07 /* Resources */,
- 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */,
- 034768DDFF38A45A11DB9C8B /* Products */,
- );
- name = Speex;
- sourceTree = "<group>";
- };
- 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = {
- isa = PBXGroup;
- children = (
- );
- name = "External Frameworks and Libraries";
- sourceTree = "<group>";
- };
- 089C1665FE841158C02AAC07 /* Resources */ = {
- isa = PBXGroup;
- children = (
- 8D07F2C70486CC7A007CD1D0 /* Info.plist */,
- 089C1666FE841158C02AAC07 /* InfoPlist.strings */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- 08FB77ACFE841707C02AAC07 /* Source */ = {
- isa = PBXGroup;
- children = (
- 738837460B193581005C7A69 /* _kiss_fft_guts.h */,
- 738837470B193581005C7A69 /* fftwrap.c */,
- 738837480B193581005C7A69 /* fftwrap.h */,
- 738837490B193581005C7A69 /* filterbank.c */,
- 7388374A0B193581005C7A69 /* filterbank.h */,
- 7388374B0B193581005C7A69 /* kiss_fft.c */,
- 7388374C0B193581005C7A69 /* kiss_fft.h */,
- 7388374D0B193581005C7A69 /* kiss_fftr.c */,
- 7388374E0B193581005C7A69 /* kiss_fftr.h */,
- 7388374F0B193581005C7A69 /* lsp_bfin.h */,
- 738837500B193581005C7A69 /* pseudofloat.h */,
- 738837510B193581005C7A69 /* quant_lsp_bfin.h */,
- 738837520B193581005C7A69 /* vorbis_psy.c */,
- 738837530B193581005C7A69 /* vorbis_psy.h */,
- 73814B0C0907FC9900C478FC /* arch.h */,
- 73814B0D0907FC9900C478FC /* bits.c */,
- 73814B0E0907FC9900C478FC /* cb_search_arm4.h */,
- 73814B0F0907FC9900C478FC /* cb_search_bfin.h */,
- 73814B100907FC9900C478FC /* cb_search_sse.h */,
- BFF73DCF0A78AA170078A4A8 /* window.c */,
- 73814B110907FC9900C478FC /* cb_search.c */,
- 73814B120907FC9900C478FC /* cb_search.h */,
- 73814B130907FC9900C478FC /* exc_5_64_table.c */,
- 73814B140907FC9900C478FC /* exc_5_256_table.c */,
- 73814B150907FC9900C478FC /* exc_8_128_table.c */,
- 73814B160907FC9900C478FC /* exc_10_16_table.c */,
- 73814B170907FC9900C478FC /* exc_10_32_table.c */,
- 73814B180907FC9900C478FC /* exc_20_32_table.c */,
- 73814B190907FC9900C478FC /* filters_arm4.h */,
- 73814B1A0907FC9900C478FC /* filters_bfin.h */,
- 73814B1B0907FC9900C478FC /* filters_sse.h */,
- 73814B1C0907FC9900C478FC /* filters.c */,
- 73814B1D0907FC9900C478FC /* filters.h */,
- 73814B1E0907FC9900C478FC /* fixed_arm4.h */,
- 73814B1F0907FC9900C478FC /* fixed_arm5e.h */,
- 73814B200907FC9900C478FC /* fixed_bfin.h */,
- 73814B210907FC9900C478FC /* fixed_debug.h */,
- 73814B220907FC9900C478FC /* fixed_generic.h */,
- 73814B230907FC9900C478FC /* gain_table_lbr.c */,
- 73814B240907FC9900C478FC /* gain_table.c */,
- 73814B250907FC9900C478FC /* hexc_10_32_table.c */,
- 73814B260907FC9900C478FC /* hexc_table.c */,
- 73814B270907FC9900C478FC /* high_lsp_tables.c */,
- 73814B280907FC9900C478FC /* jitter.c */,
- 73814B290907FC9900C478FC /* lbr_48k_tables.c */,
- 73814B2A0907FC9900C478FC /* lpc_bfin.h */,
- 73814B2B0907FC9900C478FC /* lpc.c */,
- 73814B2C0907FC9900C478FC /* lpc.h */,
- 73814B2D0907FC9900C478FC /* lsp_tables_nb.c */,
- 73814B2E0907FC9900C478FC /* lsp.c */,
- 73814B2F0907FC9900C478FC /* lsp.h */,
- 73814B300907FC9900C478FC /* ltp_arm4.h */,
- 73814B310907FC9900C478FC /* ltp_bfin.h */,
- 73814B320907FC9900C478FC /* ltp_sse.h */,
- 73814B330907FC9900C478FC /* ltp.c */,
- 73814B340907FC9900C478FC /* ltp.h */,
- 73814B370907FC9900C478FC /* math_approx.c */,
- 73814B380907FC9900C478FC /* math_approx.h */,
- 73814B390907FC9900C478FC /* mdf.c */,
- 73814B3A0907FC9900C478FC /* misc_bfin.h */,
- 73814B3B0907FC9900C478FC /* misc.c */,
- 73814B3C0907FC9900C478FC /* misc.h */,
- 73814B3D0907FC9900C478FC /* modes.c */,
- 73814B3E0907FC9900C478FC /* modes.h */,
- 73814B3F0907FC9900C478FC /* nb_celp.c */,
- 73814B400907FC9900C478FC /* nb_celp.h */,
- 73814B410907FC9900C478FC /* preprocess.c */,
- 73814B420907FC9900C478FC /* quant_lsp.c */,
- 73814B430907FC9900C478FC /* quant_lsp.h */,
- 73814B440907FC9900C478FC /* sb_celp.c */,
- 73814B450907FC9900C478FC /* sb_celp.h */,
- 73814B460907FC9900C478FC /* smallft.c */,
- 73814B470907FC9900C478FC /* smallft.h */,
- 73814B480907FC9900C478FC /* speex_callbacks.c */,
- 73814B490907FC9900C478FC /* speex_header.c */,
- 73814B4A0907FC9900C478FC /* speex.c */,
- 73814B4B0907FC9900C478FC /* stack_alloc.h */,
- 73814B4C0907FC9900C478FC /* stereo.c */,
- 73814B4D0907FC9900C478FC /* testdenoise.c */,
- 73814B4E0907FC9900C478FC /* testecho.c */,
- 73814B4F0907FC9900C478FC /* testenc_uwb.c */,
- 73814B500907FC9900C478FC /* testenc_wb.c */,
- 73814B510907FC9900C478FC /* testenc.c */,
- 73814B520907FC9900C478FC /* vbr.c */,
- 73814B530907FC9900C478FC /* vbr.h */,
- 73814B540907FC9900C478FC /* vq_arm4.h */,
- 73814B550907FC9900C478FC /* vq_bfin.h */,
- 73814B560907FC9900C478FC /* vq_sse.h */,
- 73814B570907FC9900C478FC /* vq.c */,
- 73814B580907FC9900C478FC /* vq.h */,
- 32BAE0B70371A74B00C91783 /* Speex_Prefix.pch */,
- );
- name = Source;
- sourceTree = "<group>";
- };
- 73814AEB0907FB6400C478FC /* Headers */ = {
- isa = PBXGroup;
- children = (
- 73814AEC0907FB8200C478FC /* speex */,
- );
- name = Headers;
- sourceTree = "<group>";
- };
- 73814AEC0907FB8200C478FC /* speex */ = {
- isa = PBXGroup;
- children = (
- 73814AEF0907FB8200C478FC /* speex.h */,
- 73814AF00907FB8200C478FC /* speex_bits.h */,
- 73814AF10907FB8200C478FC /* speex_callbacks.h */,
- 73814AF30907FB8200C478FC /* speex_echo.h */,
- 73814AF40907FB8200C478FC /* speex_header.h */,
- 73814AF50907FB8200C478FC /* speex_jitter.h */,
- 73814AF60907FB8200C478FC /* speex_preprocess.h */,
- 73814AF70907FB8200C478FC /* speex_stereo.h */,
- 73814AF80907FB8200C478FC /* speex_types.h */,
- );
- name = speex;
- path = ../include/speex;
- sourceTree = SOURCE_ROOT;
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- 738837730B193667005C7A69 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 8D07F2BD0486CC7A007CD1D0 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 73814AFF0907FB8200C478FC /* speex_echo.h in Headers */,
- 73814B000907FB8200C478FC /* speex_header.h in Headers */,
- 73814B010907FB8200C478FC /* speex_jitter.h in Headers */,
- 73814B020907FB8200C478FC /* speex_preprocess.h in Headers */,
- 73814B030907FB8200C478FC /* speex_stereo.h in Headers */,
- 73814B040907FB8200C478FC /* speex_types.h in Headers */,
- 73814B060907FBAB00C478FC /* speex_callbacks.h in Headers */,
- 73814B070907FBAD00C478FC /* speex_bits.h in Headers */,
- 73814B080907FBAE00C478FC /* speex.h in Headers */,
- 738837540B193581005C7A69 /* _kiss_fft_guts.h in Headers */,
- 738837560B193581005C7A69 /* fftwrap.h in Headers */,
- 738837580B193581005C7A69 /* filterbank.h in Headers */,
- 7388375A0B193581005C7A69 /* kiss_fft.h in Headers */,
- 7388375C0B193581005C7A69 /* kiss_fftr.h in Headers */,
- 7388375D0B193581005C7A69 /* lsp_bfin.h in Headers */,
- 7388375E0B193581005C7A69 /* pseudofloat.h in Headers */,
- 7388375F0B193581005C7A69 /* quant_lsp_bfin.h in Headers */,
- 738837610B193581005C7A69 /* vorbis_psy.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
- 738837760B193667005C7A69 /* libspeex (static) */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 738837780B193687005C7A69 /* Build configuration list for PBXNativeTarget "libspeex (static)" */;
- buildPhases = (
- 738837730B193667005C7A69 /* Headers */,
- 738837740B193667005C7A69 /* Sources */,
- 738837750B193667005C7A69 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = "libspeex (static)";
- productName = speex;
- productReference = 738837770B193667005C7A69 /* libspeex.a */;
- productType = "com.apple.product-type.library.static";
- };
- 8D07F2BC0486CC7A007CD1D0 /* Speex */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 73814ADF0907FB1E00C478FC /* Build configuration list for PBXNativeTarget "Speex" */;
- buildPhases = (
- 8D07F2BD0486CC7A007CD1D0 /* Headers */,
- 8D07F2BF0486CC7A007CD1D0 /* Resources */,
- 8D07F2C10486CC7A007CD1D0 /* Sources */,
- 8D07F2C30486CC7A007CD1D0 /* Frameworks */,
- 8D07F2C50486CC7A007CD1D0 /* Rez */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = Speex;
- productInstallPath = "$(HOME)/Library/Frameworks";
- productName = Speex;
- productReference = 8D07F2C80486CC7A007CD1D0 /* Speex.framework */;
- productType = "com.apple.product-type.framework";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 0867D690FE84028FC02AAC07 /* Project object */ = {
- isa = PBXProject;
- buildConfigurationList = 73814AE30907FB1E00C478FC /* Build configuration list for PBXProject "Speex" */;
- hasScannedForEncodings = 1;
- mainGroup = 0867D691FE84028FC02AAC07 /* Speex */;
- productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */;
- projectDirPath = "";
- targets = (
- 8D07F2BC0486CC7A007CD1D0 /* Speex */,
- 738837760B193667005C7A69 /* libspeex (static) */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 8D07F2BF0486CC7A007CD1D0 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 8D07F2C00486CC7A007CD1D0 /* InfoPlist.strings in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXRezBuildPhase section */
- 8D07F2C50486CC7A007CD1D0 /* Rez */ = {
- isa = PBXRezBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXRezBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 738837740B193667005C7A69 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 7388377B0B193784005C7A69 /* bits.c in Sources */,
- 7388377C0B193785005C7A69 /* cb_search.c in Sources */,
- 7388377D0B193788005C7A69 /* exc_10_16_table.c in Sources */,
- 7388377E0B193789005C7A69 /* exc_10_32_table.c in Sources */,
- 7388377F0B19378A005C7A69 /* exc_20_32_table.c in Sources */,
- 738837800B19378A005C7A69 /* exc_5_256_table.c in Sources */,
- 738837810B19378C005C7A69 /* exc_5_64_table.c in Sources */,
- 738837820B19378E005C7A69 /* exc_8_128_table.c in Sources */,
- 738837830B193791005C7A69 /* fftwrap.c in Sources */,
- 738837840B193792005C7A69 /* filterbank.c in Sources */,
- 738837850B193793005C7A69 /* filters.c in Sources */,
- 738837860B193795005C7A69 /* gain_table.c in Sources */,
- 738837870B193796005C7A69 /* gain_table_lbr.c in Sources */,
- 738837880B193799005C7A69 /* hexc_10_32_table.c in Sources */,
- 738837890B19379B005C7A69 /* hexc_table.c in Sources */,
- 7388378A0B19379E005C7A69 /* high_lsp_tables.c in Sources */,
- 7388378B0B1937A0005C7A69 /* jitter.c in Sources */,
- 7388378C0B1937A4005C7A69 /* kiss_fft.c in Sources */,
- 7388378D0B1937A9005C7A69 /* kiss_fftr.c in Sources */,
- 7388378E0B1937AE005C7A69 /* lbr_48k_tables.c in Sources */,
- 7388378F0B1937B0005C7A69 /* lpc.c in Sources */,
- 738837900B1937B0005C7A69 /* lsp.c in Sources */,
- 738837910B1937B5005C7A69 /* lsp_tables_nb.c in Sources */,
- 738837920B1937B7005C7A69 /* ltp.c in Sources */,
- 738837930B1937B9005C7A69 /* math_approx.c in Sources */,
- 738837940B1937BB005C7A69 /* mdf.c in Sources */,
- 738837950B1937BD005C7A69 /* misc.c in Sources */,
- 738837960B1937BE005C7A69 /* modes.c in Sources */,
- 738837970B1937C0005C7A69 /* nb_celp.c in Sources */,
- 738837980B1937C2005C7A69 /* preprocess.c in Sources */,
- 738837990B1937C4005C7A69 /* quant_lsp.c in Sources */,
- 7388379A0B1937C6005C7A69 /* sb_celp.c in Sources */,
- 7388379B0B1937C9005C7A69 /* smallft.c in Sources */,
- 7388379C0B1937CB005C7A69 /* speex.c in Sources */,
- 7388379D0B1937CE005C7A69 /* speex_callbacks.c in Sources */,
- 7388379E0B1937D0005C7A69 /* speex_header.c in Sources */,
- 7388379F0B1937D1005C7A69 /* stereo.c in Sources */,
- 738837A00B1937DA005C7A69 /* vbr.c in Sources */,
- 738837A10B1937DD005C7A69 /* vorbis_psy.c in Sources */,
- 738837A20B1937DF005C7A69 /* vq.c in Sources */,
- 738837A30B1937E1005C7A69 /* window.c in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 8D07F2C10486CC7A007CD1D0 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 73814B5A0907FC9900C478FC /* bits.c in Sources */,
- 73814B5E0907FC9900C478FC /* cb_search.c in Sources */,
- 73814B600907FC9900C478FC /* exc_5_64_table.c in Sources */,
- 73814B610907FC9900C478FC /* exc_5_256_table.c in Sources */,
- 73814B620907FC9900C478FC /* exc_8_128_table.c in Sources */,
- 73814B630907FC9900C478FC /* exc_10_16_table.c in Sources */,
- 73814B640907FC9900C478FC /* exc_10_32_table.c in Sources */,
- 73814B650907FC9900C478FC /* exc_20_32_table.c in Sources */,
- 73814B690907FC9900C478FC /* filters.c in Sources */,
- 73814B700907FC9900C478FC /* gain_table_lbr.c in Sources */,
- 73814B710907FC9900C478FC /* gain_table.c in Sources */,
- 73814B720907FC9900C478FC /* hexc_10_32_table.c in Sources */,
- 73814B730907FC9900C478FC /* hexc_table.c in Sources */,
- 73814B740907FC9900C478FC /* high_lsp_tables.c in Sources */,
- 73814B750907FC9900C478FC /* jitter.c in Sources */,
- 73814B760907FC9900C478FC /* lbr_48k_tables.c in Sources */,
- 73814B780907FC9900C478FC /* lpc.c in Sources */,
- 73814B7A0907FC9900C478FC /* lsp_tables_nb.c in Sources */,
- 73814B7B0907FC9900C478FC /* lsp.c in Sources */,
- 73814B800907FC9900C478FC /* ltp.c in Sources */,
- 73814B840907FC9900C478FC /* math_approx.c in Sources */,
- 73814B880907FC9900C478FC /* misc.c in Sources */,
- 73814B8A0907FC9900C478FC /* modes.c in Sources */,
- 73814B8C0907FC9900C478FC /* nb_celp.c in Sources */,
- 73814B8E0907FC9900C478FC /* preprocess.c in Sources */,
- 73814B8F0907FC9900C478FC /* quant_lsp.c in Sources */,
- 73814B910907FC9900C478FC /* sb_celp.c in Sources */,
- 73814B930907FC9900C478FC /* smallft.c in Sources */,
- 73814B950907FC9900C478FC /* speex_callbacks.c in Sources */,
- 73814B960907FC9900C478FC /* speex_header.c in Sources */,
- 73814B970907FC9900C478FC /* speex.c in Sources */,
- 73814B990907FC9900C478FC /* stereo.c in Sources */,
- 73814B9F0907FC9900C478FC /* vbr.c in Sources */,
- 73814BA40907FC9900C478FC /* vq.c in Sources */,
- BFF73DD00A78AA170078A4A8 /* window.c in Sources */,
- 738837440B1934D0005C7A69 /* mdf.c in Sources */,
- 738837550B193581005C7A69 /* fftwrap.c in Sources */,
- 738837570B193581005C7A69 /* filterbank.c in Sources */,
- 738837590B193581005C7A69 /* kiss_fft.c in Sources */,
- 7388375B0B193581005C7A69 /* kiss_fftr.c in Sources */,
- 738837600B193581005C7A69 /* vorbis_psy.c in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
- 089C1666FE841158C02AAC07 /* InfoPlist.strings */ = {
- isa = PBXVariantGroup;
- children = (
- 089C1667FE841158C02AAC07 /* English */,
- );
- name = InfoPlist.strings;
- sourceTree = "<group>";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- 73814AE00907FB1E00C478FC /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- FRAMEWORK_VERSION = A;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = Speex_Prefix.pch;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = /Library/Frameworks;
- LIBRARY_STYLE = DYNAMIC;
- MACH_O_TYPE = mh_dylib;
- PRODUCT_NAME = Speex;
- WRAPPER_EXTENSION = framework;
- ZERO_LINK = YES;
- };
- name = Debug;
- };
- 73814AE10907FB1E00C478FC /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- FRAMEWORK_VERSION = A;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = Speex_Prefix.pch;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = /Library/Frameworks;
- LIBRARY_STYLE = DYNAMIC;
- MACH_O_TYPE = mh_dylib;
- PRODUCT_NAME = Speex;
- WRAPPER_EXTENSION = framework;
- ZERO_LINK = NO;
- };
- name = Release;
- };
- 73814AE40907FB1E00C478FC /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__;
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Debug;
- };
- 73814AE50907FB1E00C478FC /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = (
- ppc,
- i386,
- );
- GCC_OPTIMIZATION_LEVEL = 3;
- GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__;
- OTHER_CFLAGS = (
- "$(OTHER_CFLAGS)",
- "-falign-loops=16",
- );
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Release;
- };
- 738837790B193687005C7A69 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- INSTALL_PATH = /usr/local/lib;
- PREBINDING = NO;
- PRODUCT_NAME = speex;
- ZERO_LINK = YES;
- };
- name = Debug;
- };
- 7388377A0B193687005C7A69 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- INSTALL_PATH = /usr/local/lib;
- PREBINDING = NO;
- PRODUCT_NAME = speex;
- ZERO_LINK = NO;
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 73814ADF0907FB1E00C478FC /* Build configuration list for PBXNativeTarget "Speex" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 73814AE00907FB1E00C478FC /* Debug */,
- 73814AE10907FB1E00C478FC /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 73814AE30907FB1E00C478FC /* Build configuration list for PBXProject "Speex" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 73814AE40907FB1E00C478FC /* Debug */,
- 73814AE50907FB1E00C478FC /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 738837780B193687005C7A69 /* Build configuration list for PBXNativeTarget "libspeex (static)" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 738837790B193687005C7A69 /* Debug */,
- 7388377A0B193687005C7A69 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 0867D690FE84028FC02AAC07 /* Project object */;
-}
diff --git a/3rdparty/speex/macosx/Speex_Prefix.pch b/3rdparty/speex/macosx/Speex_Prefix.pch
deleted file mode 100644
index 13abf5e4..00000000
--- a/3rdparty/speex/macosx/Speex_Prefix.pch
+++ /dev/null
@@ -1,5 +0,0 @@
-//
-// Prefix header for all source files of the 'Speex' target in the 'Speex' project.
-//
-
-#include <Carbon/Carbon.h>
diff --git a/3rdparty/speex/macosx/Speex_UB.xcodeproj/project.pbxproj b/3rdparty/speex/macosx/Speex_UB.xcodeproj/project.pbxproj
deleted file mode 100644
index 14af0356..00000000
--- a/3rdparty/speex/macosx/Speex_UB.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,604 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 42;
- objects = {
-
-/* Begin PBXBuildFile section */
- 73814AFF0907FB8200C478FC /* speex_echo.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF30907FB8200C478FC /* speex_echo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B000907FB8200C478FC /* speex_header.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF40907FB8200C478FC /* speex_header.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B010907FB8200C478FC /* speex_jitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF50907FB8200C478FC /* speex_jitter.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B020907FB8200C478FC /* speex_preprocess.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF60907FB8200C478FC /* speex_preprocess.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B030907FB8200C478FC /* speex_stereo.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF70907FB8200C478FC /* speex_stereo.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B040907FB8200C478FC /* speex_types.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF80907FB8200C478FC /* speex_types.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B060907FBAB00C478FC /* speex_callbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF10907FB8200C478FC /* speex_callbacks.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B070907FBAD00C478FC /* speex_bits.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AF00907FB8200C478FC /* speex_bits.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B080907FBAE00C478FC /* speex.h in Headers */ = {isa = PBXBuildFile; fileRef = 73814AEF0907FB8200C478FC /* speex.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 73814B5A0907FC9900C478FC /* bits.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B0D0907FC9900C478FC /* bits.c */; };
- 73814B5E0907FC9900C478FC /* cb_search.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B110907FC9900C478FC /* cb_search.c */; };
- 73814B600907FC9900C478FC /* exc_5_64_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B130907FC9900C478FC /* exc_5_64_table.c */; };
- 73814B610907FC9900C478FC /* exc_5_256_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B140907FC9900C478FC /* exc_5_256_table.c */; };
- 73814B620907FC9900C478FC /* exc_8_128_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B150907FC9900C478FC /* exc_8_128_table.c */; };
- 73814B630907FC9900C478FC /* exc_10_16_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B160907FC9900C478FC /* exc_10_16_table.c */; };
- 73814B640907FC9900C478FC /* exc_10_32_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B170907FC9900C478FC /* exc_10_32_table.c */; };
- 73814B650907FC9900C478FC /* exc_20_32_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B180907FC9900C478FC /* exc_20_32_table.c */; };
- 73814B690907FC9900C478FC /* filters.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B1C0907FC9900C478FC /* filters.c */; };
- 73814B700907FC9900C478FC /* gain_table_lbr.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B230907FC9900C478FC /* gain_table_lbr.c */; };
- 73814B710907FC9900C478FC /* gain_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B240907FC9900C478FC /* gain_table.c */; };
- 73814B720907FC9900C478FC /* hexc_10_32_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B250907FC9900C478FC /* hexc_10_32_table.c */; };
- 73814B730907FC9900C478FC /* hexc_table.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B260907FC9900C478FC /* hexc_table.c */; };
- 73814B740907FC9900C478FC /* high_lsp_tables.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B270907FC9900C478FC /* high_lsp_tables.c */; };
- 73814B750907FC9900C478FC /* jitter.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B280907FC9900C478FC /* jitter.c */; };
- 73814B760907FC9900C478FC /* lbr_48k_tables.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B290907FC9900C478FC /* lbr_48k_tables.c */; };
- 73814B780907FC9900C478FC /* lpc.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B2B0907FC9900C478FC /* lpc.c */; };
- 73814B7A0907FC9900C478FC /* lsp_tables_nb.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B2D0907FC9900C478FC /* lsp_tables_nb.c */; };
- 73814B7B0907FC9900C478FC /* lsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B2E0907FC9900C478FC /* lsp.c */; };
- 73814B800907FC9900C478FC /* ltp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B330907FC9900C478FC /* ltp.c */; };
- 73814B840907FC9900C478FC /* math_approx.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B370907FC9900C478FC /* math_approx.c */; };
- 73814B880907FC9900C478FC /* misc.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B3B0907FC9900C478FC /* misc.c */; };
- 73814B8A0907FC9900C478FC /* modes.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B3D0907FC9900C478FC /* modes.c */; };
- 73814B8C0907FC9900C478FC /* nb_celp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B3F0907FC9900C478FC /* nb_celp.c */; };
- 73814B8E0907FC9900C478FC /* preprocess.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B410907FC9900C478FC /* preprocess.c */; };
- 73814B8F0907FC9900C478FC /* quant_lsp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B420907FC9900C478FC /* quant_lsp.c */; };
- 73814B910907FC9900C478FC /* sb_celp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B440907FC9900C478FC /* sb_celp.c */; };
- 73814B930907FC9900C478FC /* smallft.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B460907FC9900C478FC /* smallft.c */; };
- 73814B950907FC9900C478FC /* speex_callbacks.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B480907FC9900C478FC /* speex_callbacks.c */; };
- 73814B960907FC9900C478FC /* speex_header.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B490907FC9900C478FC /* speex_header.c */; };
- 73814B970907FC9900C478FC /* speex.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B4A0907FC9900C478FC /* speex.c */; };
- 73814B990907FC9900C478FC /* stereo.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B4C0907FC9900C478FC /* stereo.c */; };
- 73814B9F0907FC9900C478FC /* vbr.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B520907FC9900C478FC /* vbr.c */; };
- 73814BA40907FC9900C478FC /* vq.c in Sources */ = {isa = PBXBuildFile; fileRef = 73814B570907FC9900C478FC /* vq.c */; };
- 8D07F2C00486CC7A007CD1D0 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXBuildStyle section */
- 4F0BB7EC011F40E904CA0E50 /* Development */ = {
- isa = PBXBuildStyle;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- ZERO_LINK = YES;
- };
- name = Development;
- };
- 4F0BB7ED011F40E904CA0E50 /* Deployment */ = {
- isa = PBXBuildStyle;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- ZERO_LINK = NO;
- };
- name = Deployment;
- };
-/* End PBXBuildStyle section */
-
-/* Begin PBXFileReference section */
- 089C1667FE841158C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
- 32BAE0B70371A74B00C91783 /* Speex_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Speex_Prefix.pch; sourceTree = "<group>"; };
- 73814AEF0907FB8200C478FC /* speex.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex.h; sourceTree = "<group>"; };
- 73814AF00907FB8200C478FC /* speex_bits.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_bits.h; sourceTree = "<group>"; };
- 73814AF10907FB8200C478FC /* speex_callbacks.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_callbacks.h; sourceTree = "<group>"; };
- 73814AF30907FB8200C478FC /* speex_echo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_echo.h; sourceTree = "<group>"; };
- 73814AF40907FB8200C478FC /* speex_header.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_header.h; sourceTree = "<group>"; };
- 73814AF50907FB8200C478FC /* speex_jitter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_jitter.h; sourceTree = "<group>"; };
- 73814AF60907FB8200C478FC /* speex_preprocess.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_preprocess.h; sourceTree = "<group>"; };
- 73814AF70907FB8200C478FC /* speex_stereo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_stereo.h; sourceTree = "<group>"; };
- 73814AF80907FB8200C478FC /* speex_types.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = speex_types.h; sourceTree = "<group>"; };
- 73814B0C0907FC9900C478FC /* arch.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = arch.h; path = ../libspeex/arch.h; sourceTree = SOURCE_ROOT; };
- 73814B0D0907FC9900C478FC /* bits.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = bits.c; path = ../libspeex/bits.c; sourceTree = SOURCE_ROOT; };
- 73814B0E0907FC9900C478FC /* cb_search_arm4.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cb_search_arm4.h; path = ../libspeex/cb_search_arm4.h; sourceTree = SOURCE_ROOT; };
- 73814B0F0907FC9900C478FC /* cb_search_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cb_search_bfin.h; path = ../libspeex/cb_search_bfin.h; sourceTree = SOURCE_ROOT; };
- 73814B100907FC9900C478FC /* cb_search_sse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cb_search_sse.h; path = ../libspeex/cb_search_sse.h; sourceTree = SOURCE_ROOT; };
- 73814B110907FC9900C478FC /* cb_search.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = cb_search.c; path = ../libspeex/cb_search.c; sourceTree = SOURCE_ROOT; };
- 73814B120907FC9900C478FC /* cb_search.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cb_search.h; path = ../libspeex/cb_search.h; sourceTree = SOURCE_ROOT; };
- 73814B130907FC9900C478FC /* exc_5_64_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = exc_5_64_table.c; path = ../libspeex/exc_5_64_table.c; sourceTree = SOURCE_ROOT; };
- 73814B140907FC9900C478FC /* exc_5_256_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = exc_5_256_table.c; path = ../libspeex/exc_5_256_table.c; sourceTree = SOURCE_ROOT; };
- 73814B150907FC9900C478FC /* exc_8_128_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = exc_8_128_table.c; path = ../libspeex/exc_8_128_table.c; sourceTree = SOURCE_ROOT; };
- 73814B160907FC9900C478FC /* exc_10_16_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = exc_10_16_table.c; path = ../libspeex/exc_10_16_table.c; sourceTree = SOURCE_ROOT; };
- 73814B170907FC9900C478FC /* exc_10_32_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = exc_10_32_table.c; path = ../libspeex/exc_10_32_table.c; sourceTree = SOURCE_ROOT; };
- 73814B180907FC9900C478FC /* exc_20_32_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = exc_20_32_table.c; path = ../libspeex/exc_20_32_table.c; sourceTree = SOURCE_ROOT; };
- 73814B190907FC9900C478FC /* filters_arm4.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = filters_arm4.h; path = ../libspeex/filters_arm4.h; sourceTree = SOURCE_ROOT; };
- 73814B1A0907FC9900C478FC /* filters_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = filters_bfin.h; path = ../libspeex/filters_bfin.h; sourceTree = SOURCE_ROOT; };
- 73814B1B0907FC9900C478FC /* filters_sse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = filters_sse.h; path = ../libspeex/filters_sse.h; sourceTree = SOURCE_ROOT; };
- 73814B1C0907FC9900C478FC /* filters.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = filters.c; path = ../libspeex/filters.c; sourceTree = SOURCE_ROOT; };
- 73814B1D0907FC9900C478FC /* filters.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = filters.h; path = ../libspeex/filters.h; sourceTree = SOURCE_ROOT; };
- 73814B1E0907FC9900C478FC /* fixed_arm4.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fixed_arm4.h; path = ../libspeex/fixed_arm4.h; sourceTree = SOURCE_ROOT; };
- 73814B1F0907FC9900C478FC /* fixed_arm5e.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fixed_arm5e.h; path = ../libspeex/fixed_arm5e.h; sourceTree = SOURCE_ROOT; };
- 73814B200907FC9900C478FC /* fixed_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fixed_bfin.h; path = ../libspeex/fixed_bfin.h; sourceTree = SOURCE_ROOT; };
- 73814B210907FC9900C478FC /* fixed_debug.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fixed_debug.h; path = ../libspeex/fixed_debug.h; sourceTree = SOURCE_ROOT; };
- 73814B220907FC9900C478FC /* fixed_generic.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fixed_generic.h; path = ../libspeex/fixed_generic.h; sourceTree = SOURCE_ROOT; };
- 73814B230907FC9900C478FC /* gain_table_lbr.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = gain_table_lbr.c; path = ../libspeex/gain_table_lbr.c; sourceTree = SOURCE_ROOT; };
- 73814B240907FC9900C478FC /* gain_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = gain_table.c; path = ../libspeex/gain_table.c; sourceTree = SOURCE_ROOT; };
- 73814B250907FC9900C478FC /* hexc_10_32_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = hexc_10_32_table.c; path = ../libspeex/hexc_10_32_table.c; sourceTree = SOURCE_ROOT; };
- 73814B260907FC9900C478FC /* hexc_table.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = hexc_table.c; path = ../libspeex/hexc_table.c; sourceTree = SOURCE_ROOT; };
- 73814B270907FC9900C478FC /* high_lsp_tables.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = high_lsp_tables.c; path = ../libspeex/high_lsp_tables.c; sourceTree = SOURCE_ROOT; };
- 73814B280907FC9900C478FC /* jitter.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = jitter.c; path = ../libspeex/jitter.c; sourceTree = SOURCE_ROOT; };
- 73814B290907FC9900C478FC /* lbr_48k_tables.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lbr_48k_tables.c; path = ../libspeex/lbr_48k_tables.c; sourceTree = SOURCE_ROOT; };
- 73814B2A0907FC9900C478FC /* lpc_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = lpc_bfin.h; path = ../libspeex/lpc_bfin.h; sourceTree = SOURCE_ROOT; };
- 73814B2B0907FC9900C478FC /* lpc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lpc.c; path = ../libspeex/lpc.c; sourceTree = SOURCE_ROOT; };
- 73814B2C0907FC9900C478FC /* lpc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = lpc.h; path = ../libspeex/lpc.h; sourceTree = SOURCE_ROOT; };
- 73814B2D0907FC9900C478FC /* lsp_tables_nb.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lsp_tables_nb.c; path = ../libspeex/lsp_tables_nb.c; sourceTree = SOURCE_ROOT; };
- 73814B2E0907FC9900C478FC /* lsp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lsp.c; path = ../libspeex/lsp.c; sourceTree = SOURCE_ROOT; };
- 73814B2F0907FC9900C478FC /* lsp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = lsp.h; path = ../libspeex/lsp.h; sourceTree = SOURCE_ROOT; };
- 73814B300907FC9900C478FC /* ltp_arm4.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ltp_arm4.h; path = ../libspeex/ltp_arm4.h; sourceTree = SOURCE_ROOT; };
- 73814B310907FC9900C478FC /* ltp_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ltp_bfin.h; path = ../libspeex/ltp_bfin.h; sourceTree = SOURCE_ROOT; };
- 73814B320907FC9900C478FC /* ltp_sse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ltp_sse.h; path = ../libspeex/ltp_sse.h; sourceTree = SOURCE_ROOT; };
- 73814B330907FC9900C478FC /* ltp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = ltp.c; path = ../libspeex/ltp.c; sourceTree = SOURCE_ROOT; };
- 73814B340907FC9900C478FC /* ltp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ltp.h; path = ../libspeex/ltp.h; sourceTree = SOURCE_ROOT; };
- 73814B370907FC9900C478FC /* math_approx.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = math_approx.c; path = ../libspeex/math_approx.c; sourceTree = SOURCE_ROOT; };
- 73814B380907FC9900C478FC /* math_approx.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = math_approx.h; path = ../libspeex/math_approx.h; sourceTree = SOURCE_ROOT; };
- 73814B390907FC9900C478FC /* mdf.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = mdf.c; path = ../libspeex/mdf.c; sourceTree = SOURCE_ROOT; };
- 73814B3A0907FC9900C478FC /* misc_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = misc_bfin.h; path = ../libspeex/misc_bfin.h; sourceTree = SOURCE_ROOT; };
- 73814B3B0907FC9900C478FC /* misc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = misc.c; path = ../libspeex/misc.c; sourceTree = SOURCE_ROOT; };
- 73814B3C0907FC9900C478FC /* misc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = misc.h; path = ../libspeex/misc.h; sourceTree = SOURCE_ROOT; };
- 73814B3D0907FC9900C478FC /* modes.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = modes.c; path = ../libspeex/modes.c; sourceTree = SOURCE_ROOT; };
- 73814B3E0907FC9900C478FC /* modes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = modes.h; path = ../libspeex/modes.h; sourceTree = SOURCE_ROOT; };
- 73814B3F0907FC9900C478FC /* nb_celp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = nb_celp.c; path = ../libspeex/nb_celp.c; sourceTree = SOURCE_ROOT; };
- 73814B400907FC9900C478FC /* nb_celp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = nb_celp.h; path = ../libspeex/nb_celp.h; sourceTree = SOURCE_ROOT; };
- 73814B410907FC9900C478FC /* preprocess.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = preprocess.c; path = ../libspeex/preprocess.c; sourceTree = SOURCE_ROOT; };
- 73814B420907FC9900C478FC /* quant_lsp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = quant_lsp.c; path = ../libspeex/quant_lsp.c; sourceTree = SOURCE_ROOT; };
- 73814B430907FC9900C478FC /* quant_lsp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = quant_lsp.h; path = ../libspeex/quant_lsp.h; sourceTree = SOURCE_ROOT; };
- 73814B440907FC9900C478FC /* sb_celp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sb_celp.c; path = ../libspeex/sb_celp.c; sourceTree = SOURCE_ROOT; };
- 73814B450907FC9900C478FC /* sb_celp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sb_celp.h; path = ../libspeex/sb_celp.h; sourceTree = SOURCE_ROOT; };
- 73814B460907FC9900C478FC /* smallft.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = smallft.c; path = ../libspeex/smallft.c; sourceTree = SOURCE_ROOT; };
- 73814B470907FC9900C478FC /* smallft.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = smallft.h; path = ../libspeex/smallft.h; sourceTree = SOURCE_ROOT; };
- 73814B480907FC9900C478FC /* speex_callbacks.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = speex_callbacks.c; path = ../libspeex/speex_callbacks.c; sourceTree = SOURCE_ROOT; };
- 73814B490907FC9900C478FC /* speex_header.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = speex_header.c; path = ../libspeex/speex_header.c; sourceTree = SOURCE_ROOT; };
- 73814B4A0907FC9900C478FC /* speex.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = speex.c; path = ../libspeex/speex.c; sourceTree = SOURCE_ROOT; };
- 73814B4B0907FC9900C478FC /* stack_alloc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = stack_alloc.h; path = ../libspeex/stack_alloc.h; sourceTree = SOURCE_ROOT; };
- 73814B4C0907FC9900C478FC /* stereo.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = stereo.c; path = ../libspeex/stereo.c; sourceTree = SOURCE_ROOT; };
- 73814B4D0907FC9900C478FC /* testdenoise.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = testdenoise.c; path = ../libspeex/testdenoise.c; sourceTree = SOURCE_ROOT; };
- 73814B4E0907FC9900C478FC /* testecho.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = testecho.c; path = ../libspeex/testecho.c; sourceTree = SOURCE_ROOT; };
- 73814B4F0907FC9900C478FC /* testenc_uwb.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = testenc_uwb.c; path = ../libspeex/testenc_uwb.c; sourceTree = SOURCE_ROOT; };
- 73814B500907FC9900C478FC /* testenc_wb.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = testenc_wb.c; path = ../libspeex/testenc_wb.c; sourceTree = SOURCE_ROOT; };
- 73814B510907FC9900C478FC /* testenc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = testenc.c; path = ../libspeex/testenc.c; sourceTree = SOURCE_ROOT; };
- 73814B520907FC9900C478FC /* vbr.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = vbr.c; path = ../libspeex/vbr.c; sourceTree = SOURCE_ROOT; };
- 73814B530907FC9900C478FC /* vbr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vbr.h; path = ../libspeex/vbr.h; sourceTree = SOURCE_ROOT; };
- 73814B540907FC9900C478FC /* vq_arm4.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vq_arm4.h; path = ../libspeex/vq_arm4.h; sourceTree = SOURCE_ROOT; };
- 73814B550907FC9900C478FC /* vq_bfin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vq_bfin.h; path = ../libspeex/vq_bfin.h; sourceTree = SOURCE_ROOT; };
- 73814B560907FC9900C478FC /* vq_sse.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vq_sse.h; path = ../libspeex/vq_sse.h; sourceTree = SOURCE_ROOT; };
- 73814B570907FC9900C478FC /* vq.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = vq.c; path = ../libspeex/vq.c; sourceTree = SOURCE_ROOT; };
- 73814B580907FC9900C478FC /* vq.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vq.h; path = ../libspeex/vq.h; sourceTree = SOURCE_ROOT; };
- 8D07F2C70486CC7A007CD1D0 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
- 8D07F2C80486CC7A007CD1D0 /* Speex.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Speex.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 8D07F2C30486CC7A007CD1D0 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 034768DDFF38A45A11DB9C8B /* Products */ = {
- isa = PBXGroup;
- children = (
- 8D07F2C80486CC7A007CD1D0 /* Speex.framework */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 0867D691FE84028FC02AAC07 /* Speex */ = {
- isa = PBXGroup;
- children = (
- 08FB77ACFE841707C02AAC07 /* Source */,
- 73814AEB0907FB6400C478FC /* Headers */,
- 089C1665FE841158C02AAC07 /* Resources */,
- 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */,
- 034768DDFF38A45A11DB9C8B /* Products */,
- );
- name = Speex;
- sourceTree = "<group>";
- };
- 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = {
- isa = PBXGroup;
- children = (
- );
- name = "External Frameworks and Libraries";
- sourceTree = "<group>";
- };
- 089C1665FE841158C02AAC07 /* Resources */ = {
- isa = PBXGroup;
- children = (
- 8D07F2C70486CC7A007CD1D0 /* Info.plist */,
- 089C1666FE841158C02AAC07 /* InfoPlist.strings */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- 08FB77ACFE841707C02AAC07 /* Source */ = {
- isa = PBXGroup;
- children = (
- 73814B0C0907FC9900C478FC /* arch.h */,
- 73814B0D0907FC9900C478FC /* bits.c */,
- 73814B0E0907FC9900C478FC /* cb_search_arm4.h */,
- 73814B0F0907FC9900C478FC /* cb_search_bfin.h */,
- 73814B100907FC9900C478FC /* cb_search_sse.h */,
- 73814B110907FC9900C478FC /* cb_search.c */,
- 73814B120907FC9900C478FC /* cb_search.h */,
- 73814B130907FC9900C478FC /* exc_5_64_table.c */,
- 73814B140907FC9900C478FC /* exc_5_256_table.c */,
- 73814B150907FC9900C478FC /* exc_8_128_table.c */,
- 73814B160907FC9900C478FC /* exc_10_16_table.c */,
- 73814B170907FC9900C478FC /* exc_10_32_table.c */,
- 73814B180907FC9900C478FC /* exc_20_32_table.c */,
- 73814B190907FC9900C478FC /* filters_arm4.h */,
- 73814B1A0907FC9900C478FC /* filters_bfin.h */,
- 73814B1B0907FC9900C478FC /* filters_sse.h */,
- 73814B1C0907FC9900C478FC /* filters.c */,
- 73814B1D0907FC9900C478FC /* filters.h */,
- 73814B1E0907FC9900C478FC /* fixed_arm4.h */,
- 73814B1F0907FC9900C478FC /* fixed_arm5e.h */,
- 73814B200907FC9900C478FC /* fixed_bfin.h */,
- 73814B210907FC9900C478FC /* fixed_debug.h */,
- 73814B220907FC9900C478FC /* fixed_generic.h */,
- 73814B230907FC9900C478FC /* gain_table_lbr.c */,
- 73814B240907FC9900C478FC /* gain_table.c */,
- 73814B250907FC9900C478FC /* hexc_10_32_table.c */,
- 73814B260907FC9900C478FC /* hexc_table.c */,
- 73814B270907FC9900C478FC /* high_lsp_tables.c */,
- 73814B280907FC9900C478FC /* jitter.c */,
- 73814B290907FC9900C478FC /* lbr_48k_tables.c */,
- 73814B2A0907FC9900C478FC /* lpc_bfin.h */,
- 73814B2B0907FC9900C478FC /* lpc.c */,
- 73814B2C0907FC9900C478FC /* lpc.h */,
- 73814B2D0907FC9900C478FC /* lsp_tables_nb.c */,
- 73814B2E0907FC9900C478FC /* lsp.c */,
- 73814B2F0907FC9900C478FC /* lsp.h */,
- 73814B300907FC9900C478FC /* ltp_arm4.h */,
- 73814B310907FC9900C478FC /* ltp_bfin.h */,
- 73814B320907FC9900C478FC /* ltp_sse.h */,
- 73814B330907FC9900C478FC /* ltp.c */,
- 73814B340907FC9900C478FC /* ltp.h */,
- 73814B370907FC9900C478FC /* math_approx.c */,
- 73814B380907FC9900C478FC /* math_approx.h */,
- 73814B390907FC9900C478FC /* mdf.c */,
- 73814B3A0907FC9900C478FC /* misc_bfin.h */,
- 73814B3B0907FC9900C478FC /* misc.c */,
- 73814B3C0907FC9900C478FC /* misc.h */,
- 73814B3D0907FC9900C478FC /* modes.c */,
- 73814B3E0907FC9900C478FC /* modes.h */,
- 73814B3F0907FC9900C478FC /* nb_celp.c */,
- 73814B400907FC9900C478FC /* nb_celp.h */,
- 73814B410907FC9900C478FC /* preprocess.c */,
- 73814B420907FC9900C478FC /* quant_lsp.c */,
- 73814B430907FC9900C478FC /* quant_lsp.h */,
- 73814B440907FC9900C478FC /* sb_celp.c */,
- 73814B450907FC9900C478FC /* sb_celp.h */,
- 73814B460907FC9900C478FC /* smallft.c */,
- 73814B470907FC9900C478FC /* smallft.h */,
- 73814B480907FC9900C478FC /* speex_callbacks.c */,
- 73814B490907FC9900C478FC /* speex_header.c */,
- 73814B4A0907FC9900C478FC /* speex.c */,
- 73814B4B0907FC9900C478FC /* stack_alloc.h */,
- 73814B4C0907FC9900C478FC /* stereo.c */,
- 73814B4D0907FC9900C478FC /* testdenoise.c */,
- 73814B4E0907FC9900C478FC /* testecho.c */,
- 73814B4F0907FC9900C478FC /* testenc_uwb.c */,
- 73814B500907FC9900C478FC /* testenc_wb.c */,
- 73814B510907FC9900C478FC /* testenc.c */,
- 73814B520907FC9900C478FC /* vbr.c */,
- 73814B530907FC9900C478FC /* vbr.h */,
- 73814B540907FC9900C478FC /* vq_arm4.h */,
- 73814B550907FC9900C478FC /* vq_bfin.h */,
- 73814B560907FC9900C478FC /* vq_sse.h */,
- 73814B570907FC9900C478FC /* vq.c */,
- 73814B580907FC9900C478FC /* vq.h */,
- 32BAE0B70371A74B00C91783 /* Speex_Prefix.pch */,
- );
- name = Source;
- sourceTree = "<group>";
- };
- 73814AEB0907FB6400C478FC /* Headers */ = {
- isa = PBXGroup;
- children = (
- 73814AEC0907FB8200C478FC /* speex */,
- );
- name = Headers;
- sourceTree = "<group>";
- };
- 73814AEC0907FB8200C478FC /* speex */ = {
- isa = PBXGroup;
- children = (
- 73814AEF0907FB8200C478FC /* speex.h */,
- 73814AF00907FB8200C478FC /* speex_bits.h */,
- 73814AF10907FB8200C478FC /* speex_callbacks.h */,
- 73814AF30907FB8200C478FC /* speex_echo.h */,
- 73814AF40907FB8200C478FC /* speex_header.h */,
- 73814AF50907FB8200C478FC /* speex_jitter.h */,
- 73814AF60907FB8200C478FC /* speex_preprocess.h */,
- 73814AF70907FB8200C478FC /* speex_stereo.h */,
- 73814AF80907FB8200C478FC /* speex_types.h */,
- );
- name = speex;
- path = ../include/speex;
- sourceTree = SOURCE_ROOT;
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- 8D07F2BD0486CC7A007CD1D0 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 73814AFF0907FB8200C478FC /* speex_echo.h in Headers */,
- 73814B000907FB8200C478FC /* speex_header.h in Headers */,
- 73814B010907FB8200C478FC /* speex_jitter.h in Headers */,
- 73814B020907FB8200C478FC /* speex_preprocess.h in Headers */,
- 73814B030907FB8200C478FC /* speex_stereo.h in Headers */,
- 73814B040907FB8200C478FC /* speex_types.h in Headers */,
- 73814B060907FBAB00C478FC /* speex_callbacks.h in Headers */,
- 73814B070907FBAD00C478FC /* speex_bits.h in Headers */,
- 73814B080907FBAE00C478FC /* speex.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
- 8D07F2BC0486CC7A007CD1D0 /* Speex */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 73814ADF0907FB1E00C478FC /* Build configuration list for PBXNativeTarget "Speex" */;
- buildPhases = (
- 8D07F2BD0486CC7A007CD1D0 /* Headers */,
- 8D07F2BF0486CC7A007CD1D0 /* Resources */,
- 8D07F2C10486CC7A007CD1D0 /* Sources */,
- 8D07F2C30486CC7A007CD1D0 /* Frameworks */,
- 8D07F2C50486CC7A007CD1D0 /* Rez */,
- );
- buildRules = (
- );
- buildSettings = {
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- FRAMEWORK_VERSION = A;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = Speex_Prefix.pch;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = "$(HOME)/Library/Frameworks";
- LIBRARY_STYLE = DYNAMIC;
- PRODUCT_NAME = Speex;
- WRAPPER_EXTENSION = framework;
- };
- dependencies = (
- );
- name = Speex;
- productInstallPath = "$(HOME)/Library/Frameworks";
- productName = Speex;
- productReference = 8D07F2C80486CC7A007CD1D0 /* Speex.framework */;
- productType = "com.apple.product-type.framework";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 0867D690FE84028FC02AAC07 /* Project object */ = {
- isa = PBXProject;
- buildConfigurationList = 73814AE30907FB1E00C478FC /* Build configuration list for PBXProject "Speex_UB" */;
- buildSettings = {
- };
- buildStyles = (
- 4F0BB7EC011F40E904CA0E50 /* Development */,
- 4F0BB7ED011F40E904CA0E50 /* Deployment */,
- );
- hasScannedForEncodings = 1;
- mainGroup = 0867D691FE84028FC02AAC07 /* Speex */;
- productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */;
- projectDirPath = "";
- targets = (
- 8D07F2BC0486CC7A007CD1D0 /* Speex */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 8D07F2BF0486CC7A007CD1D0 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 8D07F2C00486CC7A007CD1D0 /* InfoPlist.strings in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXRezBuildPhase section */
- 8D07F2C50486CC7A007CD1D0 /* Rez */ = {
- isa = PBXRezBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXRezBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 8D07F2C10486CC7A007CD1D0 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 73814B5A0907FC9900C478FC /* bits.c in Sources */,
- 73814B5E0907FC9900C478FC /* cb_search.c in Sources */,
- 73814B600907FC9900C478FC /* exc_5_64_table.c in Sources */,
- 73814B610907FC9900C478FC /* exc_5_256_table.c in Sources */,
- 73814B620907FC9900C478FC /* exc_8_128_table.c in Sources */,
- 73814B630907FC9900C478FC /* exc_10_16_table.c in Sources */,
- 73814B640907FC9900C478FC /* exc_10_32_table.c in Sources */,
- 73814B650907FC9900C478FC /* exc_20_32_table.c in Sources */,
- 73814B690907FC9900C478FC /* filters.c in Sources */,
- 73814B700907FC9900C478FC /* gain_table_lbr.c in Sources */,
- 73814B710907FC9900C478FC /* gain_table.c in Sources */,
- 73814B720907FC9900C478FC /* hexc_10_32_table.c in Sources */,
- 73814B730907FC9900C478FC /* hexc_table.c in Sources */,
- 73814B740907FC9900C478FC /* high_lsp_tables.c in Sources */,
- 73814B750907FC9900C478FC /* jitter.c in Sources */,
- 73814B760907FC9900C478FC /* lbr_48k_tables.c in Sources */,
- 73814B780907FC9900C478FC /* lpc.c in Sources */,
- 73814B7A0907FC9900C478FC /* lsp_tables_nb.c in Sources */,
- 73814B7B0907FC9900C478FC /* lsp.c in Sources */,
- 73814B800907FC9900C478FC /* ltp.c in Sources */,
- 73814B840907FC9900C478FC /* math_approx.c in Sources */,
- 73814B880907FC9900C478FC /* misc.c in Sources */,
- 73814B8A0907FC9900C478FC /* modes.c in Sources */,
- 73814B8C0907FC9900C478FC /* nb_celp.c in Sources */,
- 73814B8E0907FC9900C478FC /* preprocess.c in Sources */,
- 73814B8F0907FC9900C478FC /* quant_lsp.c in Sources */,
- 73814B910907FC9900C478FC /* sb_celp.c in Sources */,
- 73814B930907FC9900C478FC /* smallft.c in Sources */,
- 73814B950907FC9900C478FC /* speex_callbacks.c in Sources */,
- 73814B960907FC9900C478FC /* speex_header.c in Sources */,
- 73814B970907FC9900C478FC /* speex.c in Sources */,
- 73814B990907FC9900C478FC /* stereo.c in Sources */,
- 73814B9F0907FC9900C478FC /* vbr.c in Sources */,
- 73814BA40907FC9900C478FC /* vq.c in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
- 089C1666FE841158C02AAC07 /* InfoPlist.strings */ = {
- isa = PBXVariantGroup;
- children = (
- 089C1667FE841158C02AAC07 /* English */,
- );
- name = InfoPlist.strings;
- sourceTree = "<group>";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- 73814AE00907FB1E00C478FC /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- FRAMEWORK_VERSION = A;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = Speex_Prefix.pch;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = /Library/Frameworks;
- LIBRARY_STYLE = DYNAMIC;
- MACH_O_TYPE = mh_dylib;
- PRODUCT_NAME = Speex;
- WRAPPER_EXTENSION = framework;
- ZERO_LINK = YES;
- };
- name = Development;
- };
- 73814AE10907FB1E00C478FC /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- FRAMEWORK_VERSION = A;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = Speex_Prefix.pch;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = /Library/Frameworks;
- LIBRARY_STYLE = DYNAMIC;
- MACH_O_TYPE = mh_dylib;
- PRODUCT_NAME = Speex;
- WRAPPER_EXTENSION = framework;
- ZERO_LINK = NO;
- };
- name = Deployment;
- };
- 73814AE20907FB1E00C478FC /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 1;
- FRAMEWORK_VERSION = A;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = Speex_Prefix.pch;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = /Library/Frameworks;
- LIBRARY_STYLE = DYNAMIC;
- MACH_O_TYPE = mh_dylib;
- PRODUCT_NAME = Speex;
- WRAPPER_EXTENSION = framework;
- };
- name = Default;
- };
- 73814AE40907FB1E00C478FC /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = (
- ppc,
- i386,
- );
- GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__;
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Development;
- };
- 73814AE50907FB1E00C478FC /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = (
- ppc,
- i386,
- );
- GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__;
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Deployment;
- };
- 73814AE60907FB1E00C478FC /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = (
- ppc,
- i386,
- );
- GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__;
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Default;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 73814ADF0907FB1E00C478FC /* Build configuration list for PBXNativeTarget "Speex" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 73814AE00907FB1E00C478FC /* Development */,
- 73814AE10907FB1E00C478FC /* Deployment */,
- 73814AE20907FB1E00C478FC /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
- 73814AE30907FB1E00C478FC /* Build configuration list for PBXProject "Speex_UB" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 73814AE40907FB1E00C478FC /* Development */,
- 73814AE50907FB1E00C478FC /* Deployment */,
- 73814AE60907FB1E00C478FC /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 0867D690FE84028FC02AAC07 /* Project object */;
-}
diff --git a/3rdparty/speex/speex.m4 b/3rdparty/speex/speex.m4
deleted file mode 100644
index be144e1f..00000000
--- a/3rdparty/speex/speex.m4
+++ /dev/null
@@ -1,104 +0,0 @@
-# Configure paths for libspeex
-# Jean-Marc Valin <jean-marc.valin@usherbrooke.ca>
-# Shamelessly stolen from:
-# Jack Moffitt <jack@icecast.org> 10-21-2000
-# Shamelessly stolen from Owen Taylor and Manish Singh
-
-dnl XIPH_PATH_SPEEX([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-dnl Test for libspeex, and define SPEEX_CFLAGS and SPEEX_LIBS
-dnl
-AC_DEFUN([XIPH_PATH_SPEEX],
-[dnl
-dnl Get the cflags and libraries
-dnl
-AC_ARG_WITH(speex,[ --with-speex=PFX Prefix where libspeex is installed (optional)], speex_prefix="$withval", speex_prefix="")
-AC_ARG_WITH(speex-libraries,[ --with-speex-libraries=DIR Directory where libspeex library is installed (optional)], speex_libraries="$withval", speex_libraries="")
-AC_ARG_WITH(speex-includes,[ --with-speex-includes=DIR Directory where libspeex header files are installed (optional)], speex_includes="$withval", speex_includes="")
-AC_ARG_ENABLE(speextest, [ --disable-speextest Do not try to compile and run a test Speex program],, enable_speextest=yes)
-
- if test "x$speex_libraries" != "x" ; then
- SPEEX_LIBS="-L$speex_libraries"
- elif test "x$speex_prefix" != "x" ; then
- SPEEX_LIBS="-L$speex_prefix/lib"
- elif test "x$prefix" != "xNONE" ; then
- SPEEX_LIBS="-L$prefix/lib"
- fi
-
- SPEEX_LIBS="$SPEEX_LIBS -lspeex"
-
- if test "x$speex_includes" != "x" ; then
- SPEEX_CFLAGS="-I$speex_includes"
- elif test "x$speex_prefix" != "x" ; then
- SPEEX_CFLAGS="-I$speex_prefix/include"
- elif test "x$prefix" != "xNONE"; then
- SPEEX_CFLAGS="-I$prefix/include"
- fi
-
- AC_MSG_CHECKING(for Speex)
- no_speex=""
-
-
- if test "x$enable_speextest" = "xyes" ; then
- ac_save_CFLAGS="$CFLAGS"
- ac_save_LIBS="$LIBS"
- CFLAGS="$CFLAGS $SPEEX_CFLAGS"
- LIBS="$LIBS $SPEEX_LIBS"
-dnl
-dnl Now check if the installed Speex is sufficiently new.
-dnl
- rm -f conf.speextest
- AC_TRY_RUN([
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <speex/speex.h>
-
-int main ()
-{
- system("touch conf.speextest");
- return 0;
-}
-
-],, no_speex=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
-
- if test "x$no_speex" = "x" ; then
- AC_MSG_RESULT(yes)
- ifelse([$1], , :, [$1])
- else
- AC_MSG_RESULT(no)
- if test -f conf.speextest ; then
- :
- else
- echo "*** Could not run Speex test program, checking why..."
- CFLAGS="$CFLAGS $SPEEX_CFLAGS"
- LIBS="$LIBS $SPEEX_LIBS"
- AC_TRY_LINK([
-#include <stdio.h>
-#include <speex/speex.h>
-], [ return 0; ],
- [ echo "*** The test program compiled, but did not run. This usually means"
- echo "*** that the run-time linker is not finding Speex or finding the wrong"
- echo "*** version of Speex. If it is not finding Speex, you'll need to set your"
- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
- echo "*** to the installed location Also, make sure you have run ldconfig if that"
- echo "*** is required on your system"
- echo "***"
- echo "*** If you have an old version installed, it is best to remove it, although"
- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
- [ echo "*** The test program failed to compile or link. See the file config.log for the"
- echo "*** exact error that occured. This usually means Speex was incorrectly installed"
- echo "*** or that you have moved Speex since it was installed." ])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
- SPEEX_CFLAGS=""
- SPEEX_LIBS=""
- ifelse([$2], , :, [$2])
- fi
- AC_SUBST(SPEEX_CFLAGS)
- AC_SUBST(SPEEX_LIBS)
- rm -f conf.speextest
-])
diff --git a/3rdparty/speex/speex.pc.in b/3rdparty/speex/speex.pc.in
deleted file mode 100644
index 6ffe0237..00000000
--- a/3rdparty/speex/speex.pc.in
+++ /dev/null
@@ -1,14 +0,0 @@
-# libspeex pkg-config source file
-
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: speex
-Description: Speex is an audio codec tuned for speech
-Version: @SPEEX_VERSION@
-Requires:
-Conflicts:
-Libs: -L${libdir} -lspeex -lm
-Cflags: -I${includedir}
diff --git a/3rdparty/speex/speexclient/README b/3rdparty/speex/speexclient/README
deleted file mode 100644
index 69140d32..00000000
--- a/3rdparty/speex/speexclient/README
+++ /dev/null
@@ -1,18 +0,0 @@
-This is a VERY SIMPLE Speex VoIP client. It is not a complete VoIP application,
-isn't compatible with anything else (including probably future versions of
-itself) and does not support any form of standard protocols. It is intended
-only as a way to show how to use Speex in a VoIP application.
-
-To use it:
-
-On Alices machine:
-% speexclient plughw:0,0 bob.somewhere.net alice_port bob_port
-
-On Bob's machine:
-% speexclient plughw:0,0 alice.somewhere.net bob_port alice_port
-
-where bob_port is the UDP port on which bob receives and alice_port is the
-UDP port on which alice receives. In most cases, the two ports can be the same.
-
-Note that the clients do not even know whether they are connected or not. All
-they do is send/receive the audio to/from a specific port.
diff --git a/3rdparty/speex/speexclient/alsa_device.c b/3rdparty/speex/speexclient/alsa_device.c
deleted file mode 100644
index a3a4abba..00000000
--- a/3rdparty/speex/speexclient/alsa_device.c
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- Copyright (C) 2004-2006 Jean-Marc Valin
- Copyright (C) 2006 Commonwealth Scientific and Industrial Research
- Organisation (CSIRO) Australia
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include "alsa_device.h"
-#include <stdlib.h>
-#include <alsa/asoundlib.h>
-
-struct AlsaDevice_ {
- char *device_name;
- int channels;
- int period;
- snd_pcm_t *capture_handle;
- snd_pcm_t *playback_handle;
- int readN, writeN;
- struct pollfd *read_fd, *write_fd;
-};
-
-AlsaDevice *alsa_device_open(char *device_name, unsigned int rate, int channels, int period)
-{
- int dir;
- int err;
- snd_pcm_hw_params_t *hw_params;
- snd_pcm_sw_params_t *sw_params;
- snd_pcm_uframes_t period_size = period;
- snd_pcm_uframes_t buffer_size = 2*period;
- static snd_output_t *jcd_out;
- AlsaDevice *dev = malloc(sizeof(*dev));
- if (!dev)
- return NULL;
- dev->device_name = malloc(1+strlen(device_name));
- if (!dev->device_name)
- {
- free(dev);
- return NULL;
- }
- strcpy(dev->device_name, device_name);
- dev->channels = channels;
- dev->period = period;
- err = snd_output_stdio_attach(&jcd_out, stdout, 0);
-
- if ((err = snd_pcm_open (&dev->capture_handle, dev->device_name, SND_PCM_STREAM_CAPTURE, 0)) < 0) {
- fprintf (stderr, "cannot open audio device %s (%s)\n",
- dev->device_name,
- snd_strerror (err));
- assert(0);
- }
-
- if ((err = snd_pcm_hw_params_malloc (&hw_params)) < 0) {
- fprintf (stderr, "cannot allocate hardware parameter structure (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- if ((err = snd_pcm_hw_params_any (dev->capture_handle, hw_params)) < 0) {
- fprintf (stderr, "cannot initialize hardware parameter structure (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- if ((err = snd_pcm_hw_params_set_access (dev->capture_handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
- fprintf (stderr, "cannot set access type (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- if ((err = snd_pcm_hw_params_set_format (dev->capture_handle, hw_params, SND_PCM_FORMAT_S16_LE)) < 0) {
- fprintf (stderr, "cannot set sample format (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- if ((err = snd_pcm_hw_params_set_rate_near (dev->capture_handle, hw_params, &rate, 0)) < 0) {
- fprintf (stderr, "cannot set sample rate (%s)\n",
- snd_strerror (err));
- assert(0);
- }
- /*fprintf (stderr, "rate = %d\n", rate);*/
-
- if ((err = snd_pcm_hw_params_set_channels (dev->capture_handle, hw_params, channels)) < 0) {
- fprintf (stderr, "cannot set channel count (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- period_size = period;
- dir = 0;
- if ((err = snd_pcm_hw_params_set_period_size_near (dev->capture_handle, hw_params, &period_size, &dir)) < 0) {
- fprintf (stderr, "cannot set period size (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- if ((err = snd_pcm_hw_params_set_periods (dev->capture_handle, hw_params, 2, 0)) < 0) {
- fprintf (stderr, "cannot set number of periods (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- buffer_size = period_size * 2;
- dir=0;
- if ((err = snd_pcm_hw_params_set_buffer_size_near (dev->capture_handle, hw_params, &buffer_size)) < 0) {
- fprintf (stderr, "cannot set buffer time (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- if ((err = snd_pcm_hw_params (dev->capture_handle, hw_params)) < 0) {
- fprintf (stderr, "cannot set capture parameters (%s)\n",
- snd_strerror (err));
- assert(0);
- }
- /*snd_pcm_dump_setup(dev->capture_handle, jcd_out);*/
- snd_pcm_hw_params_free (hw_params);
-
- if ((err = snd_pcm_sw_params_malloc (&sw_params)) < 0) {
- fprintf (stderr, "cannot allocate software parameters structure (%s)\n",
- snd_strerror (err));
- assert(0);
- }
- if ((err = snd_pcm_sw_params_current (dev->capture_handle, sw_params)) < 0) {
- fprintf (stderr, "cannot initialize software parameters structure (%s)\n",
- snd_strerror (err));
- assert(0);
- }
- if ((err = snd_pcm_sw_params_set_avail_min (dev->capture_handle, sw_params, period)) < 0) {
- fprintf (stderr, "cannot set minimum available count (%s)\n",
- snd_strerror (err));
- assert(0);
- }
- if ((err = snd_pcm_sw_params (dev->capture_handle, sw_params)) < 0) {
- fprintf (stderr, "cannot set software parameters (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
-
- if ((err = snd_pcm_open (&dev->playback_handle, dev->device_name, SND_PCM_STREAM_PLAYBACK, 0)) < 0) {
- fprintf (stderr, "cannot open audio device %s (%s)\n",
- dev->device_name,
- snd_strerror (err));
- assert(0);
- }
-
- if ((err = snd_pcm_hw_params_malloc (&hw_params)) < 0) {
- fprintf (stderr, "cannot allocate hardware parameter structure (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- if ((err = snd_pcm_hw_params_any (dev->playback_handle, hw_params)) < 0) {
- fprintf (stderr, "cannot initialize hardware parameter structure (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- if ((err = snd_pcm_hw_params_set_access (dev->playback_handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
- fprintf (stderr, "cannot set access type (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- if ((err = snd_pcm_hw_params_set_format (dev->playback_handle, hw_params, SND_PCM_FORMAT_S16_LE)) < 0) {
- fprintf (stderr, "cannot set sample format (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- if ((err = snd_pcm_hw_params_set_rate_near (dev->playback_handle, hw_params, &rate, 0)) < 0) {
- fprintf (stderr, "cannot set sample rate (%s)\n",
- snd_strerror (err));
- assert(0);
- }
- /*fprintf (stderr, "rate = %d\n", rate);*/
-
- if ((err = snd_pcm_hw_params_set_channels (dev->playback_handle, hw_params, channels)) < 0) {
- fprintf (stderr, "cannot set channel count (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- period_size = period;
- dir = 0;
- if ((err = snd_pcm_hw_params_set_period_size_near (dev->playback_handle, hw_params, &period_size, &dir)) < 0) {
- fprintf (stderr, "cannot set period size (%s)\n",
- snd_strerror (err));
- assert(0);
- }
- if ((err = snd_pcm_hw_params_set_periods (dev->playback_handle, hw_params, 2, 0)) < 0) {
- fprintf (stderr, "cannot set number of periods (%s)\n",
- snd_strerror (err));
- assert(0);
- }
- buffer_size = period_size * 2;
- dir=0;
- if ((err = snd_pcm_hw_params_set_buffer_size_near (dev->playback_handle, hw_params, &buffer_size)) < 0) {
- fprintf (stderr, "cannot set buffer time (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
-
- if ((err = snd_pcm_hw_params (dev->playback_handle, hw_params)) < 0) {
- fprintf (stderr, "cannot set playback parameters (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- /*snd_pcm_dump_setup(dev->playback_handle, jcd_out);*/
- snd_pcm_hw_params_free (hw_params);
-
-
- if ((err = snd_pcm_sw_params_malloc (&sw_params)) < 0) {
- fprintf (stderr, "cannot allocate software parameters structure (%s)\n",
- snd_strerror (err));
- assert(0);
- }
- if ((err = snd_pcm_sw_params_current (dev->playback_handle, sw_params)) < 0) {
- fprintf (stderr, "cannot initialize software parameters structure (%s)\n",
- snd_strerror (err));
- assert(0);
- }
- if ((err = snd_pcm_sw_params_set_avail_min (dev->playback_handle, sw_params, period)) < 0) {
- fprintf (stderr, "cannot set minimum available count (%s)\n",
- snd_strerror (err));
- assert(0);
- }
- if ((err = snd_pcm_sw_params_set_start_threshold (dev->playback_handle, sw_params, period)) < 0) {
- fprintf (stderr, "cannot set start mode (%s)\n",
- snd_strerror (err));
- assert(0);
- }
- if ((err = snd_pcm_sw_params (dev->playback_handle, sw_params)) < 0) {
- fprintf (stderr, "cannot set software parameters (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
-
- snd_pcm_link(dev->capture_handle, dev->playback_handle);
- if ((err = snd_pcm_prepare (dev->capture_handle)) < 0) {
- fprintf (stderr, "cannot prepare audio interface for use (%s)\n",
- snd_strerror (err));
- assert(0);
- }
- if ((err = snd_pcm_prepare (dev->playback_handle)) < 0) {
- fprintf (stderr, "cannot prepare audio interface for use (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- dev->readN = snd_pcm_poll_descriptors_count(dev->capture_handle);
- dev->writeN = snd_pcm_poll_descriptors_count(dev->playback_handle);
-
- dev->read_fd = malloc(dev->readN*sizeof(*dev->read_fd));
- /*printf ("descriptors: %d %d\n", dev->readN, dev->writeN);*/
- if (snd_pcm_poll_descriptors(dev->capture_handle, dev->read_fd, dev->readN) != dev->readN)
- {
- fprintf (stderr, "cannot obtain capture file descriptors (%s)\n",
- snd_strerror (err));
- assert(0);
- }
-
- dev->write_fd = malloc(dev->writeN*sizeof(*dev->read_fd));
- if (snd_pcm_poll_descriptors(dev->playback_handle, dev->write_fd, dev->writeN) != dev->writeN)
- {
- fprintf (stderr, "cannot obtain playback file descriptors (%s)\n",
- snd_strerror (err));
- assert(0);
- }
- return dev;
-}
-
-void alsa_device_close(AlsaDevice *dev)
-{
- snd_pcm_close(dev->capture_handle);
- snd_pcm_close(dev->playback_handle);
- free(dev->device_name);
- free(dev);
-}
-
-int alsa_device_read(AlsaDevice *dev, short *pcm, int len)
-{
- int err;
- /*fprintf (stderr, "-");*/
- if ((err = snd_pcm_readi (dev->capture_handle, pcm, len)) != len)
- {
- if (err<0)
- {
- //fprintf(stderr, "error %d, EPIPE = %d\n", err, EPIPE);
- if (err == -EPIPE)
- {
- fprintf (stderr, "An overrun has occured, reseting capture\n");
- } else
- {
- fprintf (stderr, "read from audio interface failed (%s)\n",
- snd_strerror (err));
- }
- if ((err = snd_pcm_prepare (dev->capture_handle)) < 0)
- {
- fprintf (stderr, "cannot prepare audio interface for use (%s)\n",
- snd_strerror (err));
- }
- if ((err = snd_pcm_start (dev->capture_handle)) < 0)
- {
- fprintf (stderr, "cannot prepare audio interface for use (%s)\n",
- snd_strerror (err));
- }
- /*alsa_device_read(dev,pcm,len);*/
- } else {
- fprintf (stderr, "Couldn't read as many samples as I wanted (%d instead of %d)\n", err, len);
- }
- return 1;
- }
- return 0;
-}
-
-int alsa_device_write(AlsaDevice *dev, const short *pcm, int len)
-{
- int err;
- /*fprintf (stderr, "+");*/
- if ((err = snd_pcm_writei (dev->playback_handle, pcm, len)) != len)
- {
- if (err<0)
- {
- if (err == -EPIPE)
- {
- fprintf (stderr, "An underrun has occured, reseting playback, len=%d\n", len);
- } else
- {
- fprintf (stderr, "write to audio interface failed (%s)\n",
- snd_strerror (err));
- }
- if ((err = snd_pcm_prepare (dev->playback_handle)) < 0)
- {
- fprintf (stderr, "cannot prepare audio interface for use (%s)\n",
- snd_strerror (err));
- }
- } else {
- fprintf (stderr, "Couldn't write as many samples as I wanted (%d instead of %d)\n", err, len);
- }
- /*alsa_device_write(dev,pcm,len);*/
- return 1;
- }
- return 0;
-}
-
-int alsa_device_capture_ready(AlsaDevice *dev, struct pollfd *pfds, unsigned int nfds)
-{
- unsigned short revents=0;
- int err;
- if ((err = snd_pcm_poll_descriptors_revents(dev->capture_handle, pfds, dev->readN, &revents)) < 0)
- {
- //cerr << "error in snd_pcm_poll_descriptors_revents for capture: " << snd_strerror (err) << endl;
- //FIXME: This is a kludge
- fprintf (stderr, "error in alsa_device_capture_ready: %s\n", snd_strerror (err));
- return pfds[0].revents & POLLIN;
- }
- //cerr << (revents & POLLERR) << endl;
- return revents & POLLIN;
-}
-
-int alsa_device_playback_ready(AlsaDevice *dev, struct pollfd *pfds, unsigned int nfds)
-{
- unsigned short revents=0;
- int err;
- if ((err = snd_pcm_poll_descriptors_revents(dev->playback_handle, pfds+dev->readN, dev->writeN, &revents)) < 0)
- {
- //cerr << "error in snd_pcm_poll_descriptors_revents for playback: " << snd_strerror (err) << endl;
- //FIXME: This is a kludge
- fprintf (stderr, "error in alsa_device_playback_ready: %s\n", snd_strerror (err));
- return pfds[1].revents & POLLOUT;
- }
- //cerr << (revents & POLLERR) << endl;
- return revents & POLLOUT;
-}
-
-void alsa_device_start(AlsaDevice *dev)
-{
- int i;
- short pcm[dev->period*dev->channels];
- for (i=0;i<dev->period*dev->channels;i++)
- pcm[i] = 0;
- alsa_device_write(dev, pcm, dev->period);
- alsa_device_write(dev, pcm, dev->period);
- snd_pcm_start(dev->capture_handle);
- snd_pcm_start(dev->playback_handle);
-}
-
-int alsa_device_nfds(AlsaDevice *dev)
-{
- return dev->writeN+dev->readN;
-}
-
-void alsa_device_getfds(AlsaDevice *dev, struct pollfd *pfds, unsigned int nfds)
-{
- int i;
- assert (nfds >= dev->writeN+dev->readN);
- for (i=0;i<dev->readN;i++)
- pfds[i] = dev->read_fd[i];
- for (i=0;i<dev->writeN;i++)
- pfds[i+dev->readN] = dev->write_fd[i];
-}
diff --git a/3rdparty/speex/speexclient/alsa_device.h b/3rdparty/speex/speexclient/alsa_device.h
deleted file mode 100644
index a5b3787a..00000000
--- a/3rdparty/speex/speexclient/alsa_device.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- Copyright (C) 2004-2006 Jean-Marc Valin
- Copyright (C) 2006 Commonwealth Scientific and Industrial Research
- Organisation (CSIRO) Australia
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-
-*/
-
-#ifndef ALSA_DEVICE_H
-#define ALSA_DEVICE_H
-
-#include <sys/poll.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct AlsaDevice_;
-
-typedef struct AlsaDevice_ AlsaDevice;
-
-AlsaDevice *alsa_device_open(char *device_name, unsigned int rate, int channels, int period);
-
-void alsa_device_close(AlsaDevice *dev);
-
-int alsa_device_read(AlsaDevice *dev, short *pcm, int len);
-
-int alsa_device_write(AlsaDevice *dev, const short *pcm, int len);
-
-int alsa_device_capture_ready(AlsaDevice *dev, struct pollfd *pfds, unsigned int nfds);
-
-int alsa_device_playback_ready(AlsaDevice *dev, struct pollfd *pfds, unsigned int nfds);
-
-void alsa_device_start(AlsaDevice *dev);
-
-int alsa_device_nfds(AlsaDevice *dev);
-
-void alsa_device_getfds(AlsaDevice *dev, struct pollfd *pfds, unsigned int nfds);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/3rdparty/speex/speexclient/compile.sh b/3rdparty/speex/speexclient/compile.sh
deleted file mode 100755
index 54e16fc5..00000000
--- a/3rdparty/speex/speexclient/compile.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-echo gcc -Wall speexclient.c alsa_device.c -o speexclient -lspeex -lasound -lm
-gcc -Wall speexclient.c alsa_device.c -o speexclient -lspeex -lasound -lm
diff --git a/3rdparty/speex/speexclient/speexclient.c b/3rdparty/speex/speexclient/speexclient.c
deleted file mode 100644
index 60d5764b..00000000
--- a/3rdparty/speex/speexclient/speexclient.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/***************************************************************************
- Copyright (C) 2004-2006 by Jean-Marc Valin
- Copyright (C) 2006 Commonwealth Scientific and Industrial Research
- Organisation (CSIRO) Australia
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-****************************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <stdio.h>
-#include <unistd.h> /* close() */
-#include <string.h> /* memset() */
-
-#include "alsa_device.h"
-#include <speex/speex.h>
-#include <speex/speex_jitter.h>
-#include <speex/speex_preprocess.h>
-#include <speex/speex_echo.h>
-
-#include <sched.h>
-
-#define MAX_MSG 1500
-
-#define SAMPLING_RATE 16000
-#define FRAME_SIZE 320
-
-int main(int argc, char *argv[])
-{
-
- int sd, rc, n;
- int i;
- struct sockaddr_in cliAddr, remoteAddr;
- char msg[MAX_MSG];
- struct hostent *h;
- int local_port, remote_port;
- int nfds;
- struct pollfd *pfds;
- SpeexPreprocessState *preprocess;
- AlsaDevice *audio_dev;
- int tmp;
-
- if (argc != 5)
- {
- fprintf(stderr, "wrong options\n");
- exit(1);
- }
-
- h = gethostbyname(argv[2]);
- if(h==NULL) {
- fprintf(stderr, "%s: unknown host '%s' \n", argv[0], argv[1]);
- exit(1);
- }
-
- local_port = atoi(argv[3]);
- remote_port = atoi(argv[4]);
-
- printf("%s: sending data to '%s' (IP : %s) \n", argv[0], h->h_name,
- inet_ntoa(*(struct in_addr *)h->h_addr_list[0]));
-
- {
- remoteAddr.sin_family = h->h_addrtype;
- memcpy((char *) &remoteAddr.sin_addr.s_addr,
- h->h_addr_list[0], h->h_length);
- remoteAddr.sin_port = htons(remote_port);
- }
- /* socket creation */
- sd=socket(AF_INET, SOCK_DGRAM, 0);
- if(sd<0) {
- printf("%s: cannot open socket \n",argv[0]);
- exit(1);
- }
-
- /* bind any port */
- cliAddr.sin_family = AF_INET;
- cliAddr.sin_addr.s_addr = htonl(INADDR_ANY);
- cliAddr.sin_port = htons(local_port);
-
- rc = bind(sd, (struct sockaddr *) &cliAddr, sizeof(cliAddr));
- if(rc<0) {
- printf("%s: cannot bind port\n", argv[0]);
- exit(1);
- }
-
- /* Setup audio device */
- audio_dev = alsa_device_open(argv[1], SAMPLING_RATE, 1, FRAME_SIZE);
-
- /* Setup the encoder and decoder in wideband */
- void *enc_state, *dec_state;
- enc_state = speex_encoder_init(&speex_wb_mode);
- tmp = 8;
- speex_encoder_ctl(enc_state, SPEEX_SET_QUALITY, &tmp);
- tmp = 2;
- speex_encoder_ctl(enc_state, SPEEX_SET_COMPLEXITY, &tmp);
- dec_state = speex_decoder_init(&speex_wb_mode);
- tmp = 1;
- speex_decoder_ctl(dec_state, SPEEX_SET_ENH, &tmp);
- SpeexBits enc_bits, dec_bits;
- speex_bits_init(&enc_bits);
- speex_bits_init(&dec_bits);
-
-
- struct sched_param param;
- /*param.sched_priority = 40; */
- param.sched_priority = sched_get_priority_min(SCHED_FIFO);
- if (sched_setscheduler(0,SCHED_FIFO,&param))
- perror("sched_setscheduler");
-
- int send_timestamp = 0;
- int recv_started=0;
-
- /* Setup all file descriptors for poll()ing */
- nfds = alsa_device_nfds(audio_dev);
- pfds = malloc(sizeof(*pfds)*(nfds+1));
- alsa_device_getfds(audio_dev, pfds, nfds);
- pfds[nfds].fd = sd;
- pfds[nfds].events = POLLIN;
-
- /* Setup jitter buffer using decoder */
- SpeexJitter jitter;
- speex_jitter_init(&jitter, dec_state, SAMPLING_RATE);
-
- /* Echo canceller with 200 ms tail length */
- SpeexEchoState *echo_state = speex_echo_state_init(FRAME_SIZE, 10*FRAME_SIZE);
- tmp = SAMPLING_RATE;
- speex_echo_ctl(echo_state, SPEEX_ECHO_SET_SAMPLING_RATE, &tmp);
-
- /* Setup preprocessor and associate with echo canceller for residual echo suppression */
- preprocess = speex_preprocess_state_init(FRAME_SIZE, SAMPLING_RATE);
- speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_SET_ECHO_STATE, echo_state);
-
- alsa_device_start(audio_dev);
-
- /* Infinite loop on capture, playback and receiving packets */
- while (1)
- {
- /* Wait for either 1) capture 2) playback 3) socket data */
- poll(pfds, nfds+1, -1);
- /* Received packets */
- if (pfds[nfds].revents & POLLIN)
- {
- /*fprintf (stderr, "x");*/
- n = recv(sd, msg, MAX_MSG, 0);
- int recv_timestamp = ((int*)msg)[1];
- int payload = ((int*)msg)[0];
-
- if ((payload & 0x80000000) == 0)
- {
- /* Put content of the packet into the jitter buffer, except for the pseudo-header */
- speex_jitter_put(&jitter, msg+8, n-8, recv_timestamp);
- recv_started = 1;
- }
-
- }
- /* Ready to play a frame (playback) */
- if (alsa_device_playback_ready(audio_dev, pfds, nfds))
- {
- short pcm[FRAME_SIZE];
- if (recv_started)
- {
- /* Get audio from the jitter buffer */
- speex_jitter_get(&jitter, pcm, NULL);
- } else {
- for (i=0;i<FRAME_SIZE;i++)
- pcm[i] = 0;
- }
- /* Playback the audio and reset the echo canceller if we got an underrun */
- if (alsa_device_write(audio_dev, pcm, FRAME_SIZE))
- speex_echo_state_reset(echo_state);
- /* Put frame into playback buffer */
- speex_echo_playback(echo_state, pcm);
- }
- /* Audio available from the soundcard (capture) */
- if (alsa_device_capture_ready(audio_dev, pfds, nfds))
- {
- short pcm[FRAME_SIZE], pcm2[FRAME_SIZE];
- char outpacket[MAX_MSG];
- /* Get audio from the soundcard */
- alsa_device_read(audio_dev, pcm, FRAME_SIZE);
-
- /* Perform echo cancellation */
- speex_echo_capture(echo_state, pcm, pcm2);
- for (i=0;i<FRAME_SIZE;i++)
- pcm[i] = pcm2[i];
-
- speex_bits_reset(&enc_bits);
-
- /* Apply noise/echo suppression */
- speex_preprocess_run(preprocess, pcm);
-
- /* Encode */
- speex_encode_int(enc_state, pcm, &enc_bits);
- int packetSize = speex_bits_write(&enc_bits, outpacket+8, MAX_MSG);
-
- /* Pseudo header: four null bytes and a 32-bit timestamp */
- ((int*)outpacket)[0] = htonl(0);
- ((int*)outpacket)[1] = send_timestamp;
- send_timestamp += FRAME_SIZE;
- rc = sendto(sd, outpacket, packetSize+8, 0,
- (struct sockaddr *) &remoteAddr,
- sizeof(remoteAddr));
-
- if(rc<0) {
- printf("cannot send audio data\n");
- close(sd);
- exit(1);
- }
- }
-
-
- }
-
-
- return 0;
-}
diff --git a/3rdparty/speex/src/.cvsignore b/3rdparty/speex/src/.cvsignore
deleted file mode 100644
index e9955884..00000000
--- a/3rdparty/speex/src/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-.deps
-Makefile
-Makefile.in
diff --git a/3rdparty/speex/src/Makefile.am b/3rdparty/speex/src/Makefile.am
deleted file mode 100644
index 1ef61b2c..00000000
--- a/3rdparty/speex/src/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# $Id: Makefile.am,v 1.11 2004/02/18 06:59:40 jm Exp $
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_builddir) @OGG_CFLAGS@
-
-mandir = $(prefix)/share/man
-man_MANS = speexenc.1 speexdec.1
-
-EXTRA_DIST = $(man_MANS) getopt_win.h getopt.c getopt1.c wave_out.c wave_out.h skeleton.h
-
-include_HEADERS =
-noinst_HEADERS = wav_io.h
-
-bin_PROGRAMS = speexenc speexdec
-
-speexenc_SOURCES = speexenc.c wav_io.c skeleton.c
-speexenc_LDADD = $(top_builddir)/libspeex/libspeex.la \
- $(OGG_LIBS)
-
-speexdec_SOURCES = speexdec.c wav_io.c
-speexdec_LDADD = $(top_builddir)/libspeex/libspeex.la \
- $(OGG_LIBS)
diff --git a/3rdparty/speex/src/getopt.c b/3rdparty/speex/src/getopt.c
deleted file mode 100644
index dad25b65..00000000
--- a/3rdparty/speex/src/getopt.c
+++ /dev/null
@@ -1,1047 +0,0 @@
-/* Getopt for GNU.
- NOTE: getopt is now part of the C library, so if you don't know what
- "Keep this file name-space clean" means, talk to drepper@gnu.org
- before changing it!
-
- Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
- Free Software Foundation, Inc.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
- Ditto for AIX 3.2 and <stdlib.h>. */
-#ifndef _NO_PROTO
-# define _NO_PROTO
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#if !defined __STDC__ || !__STDC__
-/* This is a separate conditional since some stdc systems
- reject `defined (const)'. */
-# ifndef const
-# define const
-# endif
-#endif
-
-#include <stdio.h>
-
-/* Comment out all this code if we are using the GNU C Library, and are not
- actually compiling the library itself. This code is part of the GNU C
- Library, but also included in many other GNU distributions. Compiling
- and linking in this code is a waste when using the GNU C library
- (especially if it is a shared library). Rather than having every GNU
- program understand `configure --with-gnu-libc' and omit the object files,
- it is simpler to just do this in the source for each such file. */
-
-#define GETOPT_INTERFACE_VERSION 2
-#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
-# include <gnu-versions.h>
-# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
-# define ELIDE_CODE
-# endif
-#endif
-
-#ifndef ELIDE_CODE
-
-
-/* This needs to come after some library #include
- to get __GNU_LIBRARY__ defined. */
-#ifdef __GNU_LIBRARY__
-/* Don't include stdlib.h for non-GNU C libraries because some of them
- contain conflicting prototypes for getopt. */
-# include <stdlib.h>
-# include <unistd.h>
-#endif /* GNU C library. */
-
-#ifdef VMS
-# include <unixlib.h>
-# if HAVE_STRING_H - 0
-# include <string.h>
-# endif
-#endif
-
-#ifndef _
-/* This is for other GNU distributions with internationalized messages.
- When compiling libc, the _ macro is predefined. */
-# ifdef HAVE_LIBINTL_H
-# include <libintl.h>
-# define _(msgid) gettext (msgid)
-# else
-# define _(msgid) (msgid)
-# endif
-#endif
-
-/* This version of `getopt' appears to the caller like standard Unix `getopt'
- but it behaves differently for the user, since it allows the user
- to intersperse the options with the other arguments.
-
- As `getopt' works, it permutes the elements of ARGV so that,
- when it is done, all the options precede everything else. Thus
- all application programs are extended to handle flexible argument order.
-
- Setting the environment variable POSIXLY_CORRECT disables permutation.
- Then the behavior is completely standard.
-
- GNU application programs can use a third alternative mode in which
- they can distinguish the relative order of options and other arguments. */
-
-#include "getopt_win.h"
-
-/* For communication from `getopt' to the caller.
- When `getopt' finds an option that takes an argument,
- the argument value is returned here.
- Also, when `ordering' is RETURN_IN_ORDER,
- each non-option ARGV-element is returned here. */
-
-char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
- This is used for communication to and from the caller
- and for communication between successive calls to `getopt'.
-
- On entry to `getopt', zero means this is the first call; initialize.
-
- When `getopt' returns -1, this is the index of the first of the
- non-option elements that the caller should itself scan.
-
- Otherwise, `optind' communicates from one call to the next
- how much of ARGV has been scanned so far. */
-
-/* 1003.2 says this must be 1 before any call. */
-int optind = 1;
-
-/* Formerly, initialization of getopt depended on optind==0, which
- causes problems with re-calling getopt as programs generally don't
- know that. */
-
-int __getopt_initialized;
-
-/* The next char to be scanned in the option-element
- in which the last option character we returned was found.
- This allows us to pick up the scan where we left off.
-
- If this is zero, or a null string, it means resume the scan
- by advancing to the next ARGV-element. */
-
-static char *nextchar;
-
-/* Callers store zero here to inhibit the error message
- for unrecognized options. */
-
-int opterr = 1;
-
-/* Set to an option character which was unrecognized.
- This must be initialized on some systems to avoid linking in the
- system's own getopt implementation. */
-
-int optopt = '?';
-
-/* Describe how to deal with options that follow non-option ARGV-elements.
-
- If the caller did not specify anything,
- the default is REQUIRE_ORDER if the environment variable
- POSIXLY_CORRECT is defined, PERMUTE otherwise.
-
- REQUIRE_ORDER means don't recognize them as options;
- stop option processing when the first non-option is seen.
- This is what Unix does.
- This mode of operation is selected by either setting the environment
- variable POSIXLY_CORRECT, or using `+' as the first character
- of the list of option characters.
-
- PERMUTE is the default. We permute the contents of ARGV as we scan,
- so that eventually all the non-options are at the end. This allows options
- to be given in any order, even with programs that were not written to
- expect this.
-
- RETURN_IN_ORDER is an option available to programs that were written
- to expect options and other ARGV-elements in any order and that care about
- the ordering of the two. We describe each non-option ARGV-element
- as if it were the argument of an option with character code 1.
- Using `-' as the first character of the list of option characters
- selects this mode of operation.
-
- The special argument `--' forces an end of option-scanning regardless
- of the value of `ordering'. In the case of RETURN_IN_ORDER, only
- `--' can cause `getopt' to return -1 with `optind' != ARGC. */
-
-static enum
-{
- REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
-} ordering;
-
-/* Value of POSIXLY_CORRECT environment variable. */
-static char *posixly_correct;
-
-#ifdef __GNU_LIBRARY__
-/* We want to avoid inclusion of string.h with non-GNU libraries
- because there are many ways it can cause trouble.
- On some systems, it contains special magic macros that don't work
- in GCC. */
-# include <string.h>
-# define my_index strchr
-#else
-
-#include <string.h>
-
-/* Avoid depending on library functions or files
- whose names are inconsistent. */
-
-#ifndef getenv
-extern char *getenv ();
-#endif
-
-static char *
-my_index (str, chr)
- const char *str;
- int chr;
-{
- while (*str)
- {
- if (*str == chr)
- return (char *) str;
- str++;
- }
- return 0;
-}
-
-/* If using GCC, we can safely declare strlen this way.
- If not using GCC, it is ok not to declare it. */
-#ifdef __GNUC__
-/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
- That was relevant to code that was here before. */
-# if (!defined __STDC__ || !__STDC__) && !defined strlen
-/* gcc with -traditional declares the built-in strlen to return int,
- and has done so at least since version 2.4.5. -- rms. */
-extern int strlen (const char *);
-# endif /* not __STDC__ */
-#endif /* __GNUC__ */
-
-#endif /* not __GNU_LIBRARY__ */
-
-/* Handle permutation of arguments. */
-
-/* Describe the part of ARGV that contains non-options that have
- been skipped. `first_nonopt' is the index in ARGV of the first of them;
- `last_nonopt' is the index after the last of them. */
-
-static int first_nonopt;
-static int last_nonopt;
-
-#ifdef _LIBC
-/* Bash 2.0 gives us an environment variable containing flags
- indicating ARGV elements that should not be considered arguments. */
-
-/* Defined in getopt_init.c */
-extern char *__getopt_nonoption_flags;
-
-static int nonoption_flags_max_len;
-static int nonoption_flags_len;
-
-static int original_argc;
-static char *const *original_argv;
-
-/* Make sure the environment variable bash 2.0 puts in the environment
- is valid for the getopt call we must make sure that the ARGV passed
- to getopt is that one passed to the process. */
-static void
-__attribute__ ((unused))
-store_args_and_env (int argc, char *const *argv)
-{
- /* XXX This is no good solution. We should rather copy the args so
- that we can compare them later. But we must not use malloc(3). */
- original_argc = argc;
- original_argv = argv;
-}
-# ifdef text_set_element
-text_set_element (__libc_subinit, store_args_and_env);
-# endif /* text_set_element */
-
-# define SWAP_FLAGS(ch1, ch2) \
- if (nonoption_flags_len > 0) \
- { \
- char __tmp = __getopt_nonoption_flags[ch1]; \
- __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \
- __getopt_nonoption_flags[ch2] = __tmp; \
- }
-#else /* !_LIBC */
-# define SWAP_FLAGS(ch1, ch2)
-#endif /* _LIBC */
-
-/* Exchange two adjacent subsequences of ARGV.
- One subsequence is elements [first_nonopt,last_nonopt)
- which contains all the non-options that have been skipped so far.
- The other is elements [last_nonopt,optind), which contains all
- the options processed since those non-options were skipped.
-
- `first_nonopt' and `last_nonopt' are relocated so that they describe
- the new indices of the non-options in ARGV after they are moved. */
-
-#if defined __STDC__ && __STDC__
-static void exchange (char **);
-#endif
-
-static void
-exchange (argv)
- char **argv;
-{
- int bottom = first_nonopt;
- int middle = last_nonopt;
- int top = optind;
- char *tem;
-
- /* Exchange the shorter segment with the far end of the longer segment.
- That puts the shorter segment into the right place.
- It leaves the longer segment in the right place overall,
- but it consists of two parts that need to be swapped next. */
-
-#ifdef _LIBC
- /* First make sure the handling of the `__getopt_nonoption_flags'
- string can work normally. Our top argument must be in the range
- of the string. */
- if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
- {
- /* We must extend the array. The user plays games with us and
- presents new arguments. */
- char *new_str = malloc (top + 1);
- if (new_str == NULL)
- nonoption_flags_len = nonoption_flags_max_len = 0;
- else
- {
- memset (__mempcpy (new_str, __getopt_nonoption_flags,
- nonoption_flags_max_len),
- '\0', top + 1 - nonoption_flags_max_len);
- nonoption_flags_max_len = top + 1;
- __getopt_nonoption_flags = new_str;
- }
- }
-#endif
-
- while (top > middle && middle > bottom)
- {
- if (top - middle > middle - bottom)
- {
- /* Bottom segment is the short one. */
- int len = middle - bottom;
- register int i;
-
- /* Swap it with the top part of the top segment. */
- for (i = 0; i < len; i++)
- {
- tem = argv[bottom + i];
- argv[bottom + i] = argv[top - (middle - bottom) + i];
- argv[top - (middle - bottom) + i] = tem;
- SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
- }
- /* Exclude the moved bottom segment from further swapping. */
- top -= len;
- }
- else
- {
- /* Top segment is the short one. */
- int len = top - middle;
- register int i;
-
- /* Swap it with the bottom part of the bottom segment. */
- for (i = 0; i < len; i++)
- {
- tem = argv[bottom + i];
- argv[bottom + i] = argv[middle + i];
- argv[middle + i] = tem;
- SWAP_FLAGS (bottom + i, middle + i);
- }
- /* Exclude the moved top segment from further swapping. */
- bottom += len;
- }
- }
-
- /* Update records for the slots the non-options now occupy. */
-
- first_nonopt += (optind - last_nonopt);
- last_nonopt = optind;
-}
-
-/* Initialize the internal data when the first call is made. */
-
-#if defined __STDC__ && __STDC__
-static const char *_getopt_initialize (int, char *const *, const char *);
-#endif
-static const char *
-_getopt_initialize (argc, argv, optstring)
- int argc;
- char *const *argv;
- const char *optstring;
-{
- /* Start processing options with ARGV-element 1 (since ARGV-element 0
- is the program name); the sequence of previously skipped
- non-option ARGV-elements is empty. */
-
- first_nonopt = last_nonopt = optind;
-
- nextchar = NULL;
-
- posixly_correct = getenv ("POSIXLY_CORRECT");
-
- /* Determine how to handle the ordering of options and nonoptions. */
-
- if (optstring[0] == '-')
- {
- ordering = RETURN_IN_ORDER;
- ++optstring;
- }
- else if (optstring[0] == '+')
- {
- ordering = REQUIRE_ORDER;
- ++optstring;
- }
- else if (posixly_correct != NULL)
- ordering = REQUIRE_ORDER;
- else
- ordering = PERMUTE;
-
-#ifdef _LIBC
- if (posixly_correct == NULL
- && argc == original_argc && argv == original_argv)
- {
- if (nonoption_flags_max_len == 0)
- {
- if (__getopt_nonoption_flags == NULL
- || __getopt_nonoption_flags[0] == '\0')
- nonoption_flags_max_len = -1;
- else
- {
- const char *orig_str = __getopt_nonoption_flags;
- int len = nonoption_flags_max_len = strlen (orig_str);
- if (nonoption_flags_max_len < argc)
- nonoption_flags_max_len = argc;
- __getopt_nonoption_flags =
- (char *) malloc (nonoption_flags_max_len);
- if (__getopt_nonoption_flags == NULL)
- nonoption_flags_max_len = -1;
- else
- memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
- '\0', nonoption_flags_max_len - len);
- }
- }
- nonoption_flags_len = nonoption_flags_max_len;
- }
- else
- nonoption_flags_len = 0;
-#endif
-
- return optstring;
-}
-
-/* Scan elements of ARGV (whose length is ARGC) for option characters
- given in OPTSTRING.
-
- If an element of ARGV starts with '-', and is not exactly "-" or "--",
- then it is an option element. The characters of this element
- (aside from the initial '-') are option characters. If `getopt'
- is called repeatedly, it returns successively each of the option characters
- from each of the option elements.
-
- If `getopt' finds another option character, it returns that character,
- updating `optind' and `nextchar' so that the next call to `getopt' can
- resume the scan with the following option character or ARGV-element.
-
- If there are no more option characters, `getopt' returns -1.
- Then `optind' is the index in ARGV of the first ARGV-element
- that is not an option. (The ARGV-elements have been permuted
- so that those that are not options now come last.)
-
- OPTSTRING is a string containing the legitimate option characters.
- If an option character is seen that is not listed in OPTSTRING,
- return '?' after printing an error message. If you set `opterr' to
- zero, the error message is suppressed but we still return '?'.
-
- If a char in OPTSTRING is followed by a colon, that means it wants an arg,
- so the following text in the same ARGV-element, or the text of the following
- ARGV-element, is returned in `optarg'. Two colons mean an option that
- wants an optional arg; if there is text in the current ARGV-element,
- it is returned in `optarg', otherwise `optarg' is set to zero.
-
- If OPTSTRING starts with `-' or `+', it requests different methods of
- handling the non-option ARGV-elements.
- See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
-
- Long-named options begin with `--' instead of `-'.
- Their names may be abbreviated as long as the abbreviation is unique
- or is an exact match for some defined option. If they have an
- argument, it follows the option name in the same ARGV-element, separated
- from the option name by a `=', or else the in next ARGV-element.
- When `getopt' finds a long-named option, it returns 0 if that option's
- `flag' field is nonzero, the value of the option's `val' field
- if the `flag' field is zero.
-
- The elements of ARGV aren't really const, because we permute them.
- But we pretend they're const in the prototype to be compatible
- with other systems.
-
- LONGOPTS is a vector of `struct option' terminated by an
- element containing a name which is zero.
-
- LONGIND returns the index in LONGOPT of the long-named option found.
- It is only valid when a long-named option has been found by the most
- recent call.
-
- If LONG_ONLY is nonzero, '-' as well as '--' can introduce
- long-named options. */
-
-int
-_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
- int argc;
- char *const *argv;
- const char *optstring;
- const struct option *longopts;
- int *longind;
- int long_only;
-{
- optarg = NULL;
-
- if (optind == 0 || !__getopt_initialized)
- {
- if (optind == 0)
- optind = 1; /* Don't scan ARGV[0], the program name. */
- optstring = _getopt_initialize (argc, argv, optstring);
- __getopt_initialized = 1;
- }
-
- /* Test whether ARGV[optind] points to a non-option argument.
- Either it does not have option syntax, or there is an environment flag
- from the shell indicating it is not an option. The later information
- is only used when the used in the GNU libc. */
-#ifdef _LIBC
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
- || (optind < nonoption_flags_len \
- && __getopt_nonoption_flags[optind] == '1'))
-#else
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
-#endif
-
- if (nextchar == NULL || *nextchar == '\0')
- {
- /* Advance to the next ARGV-element. */
-
- /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
- moved back by the user (who may also have changed the arguments). */
- if (last_nonopt > optind)
- last_nonopt = optind;
- if (first_nonopt > optind)
- first_nonopt = optind;
-
- if (ordering == PERMUTE)
- {
- /* If we have just processed some options following some non-options,
- exchange them so that the options come first. */
-
- if (first_nonopt != last_nonopt && last_nonopt != optind)
- exchange ((char **) argv);
- else if (last_nonopt != optind)
- first_nonopt = optind;
-
- /* Skip any additional non-options
- and extend the range of non-options previously skipped. */
-
- while (optind < argc && NONOPTION_P)
- optind++;
- last_nonopt = optind;
- }
-
- /* The special ARGV-element `--' means premature end of options.
- Skip it like a null option,
- then exchange with previous non-options as if it were an option,
- then skip everything else like a non-option. */
-
- if (optind != argc && !strcmp (argv[optind], "--"))
- {
- optind++;
-
- if (first_nonopt != last_nonopt && last_nonopt != optind)
- exchange ((char **) argv);
- else if (first_nonopt == last_nonopt)
- first_nonopt = optind;
- last_nonopt = argc;
-
- optind = argc;
- }
-
- /* If we have done all the ARGV-elements, stop the scan
- and back over any non-options that we skipped and permuted. */
-
- if (optind == argc)
- {
- /* Set the next-arg-index to point at the non-options
- that we previously skipped, so the caller will digest them. */
- if (first_nonopt != last_nonopt)
- optind = first_nonopt;
- return -1;
- }
-
- /* If we have come to a non-option and did not permute it,
- either stop the scan or describe it to the caller and pass it by. */
-
- if (NONOPTION_P)
- {
- if (ordering == REQUIRE_ORDER)
- return -1;
- optarg = argv[optind++];
- return 1;
- }
-
- /* We have found another option-ARGV-element.
- Skip the initial punctuation. */
-
- nextchar = (argv[optind] + 1
- + (longopts != NULL && argv[optind][1] == '-'));
- }
-
- /* Decode the current option-ARGV-element. */
-
- /* Check whether the ARGV-element is a long option.
-
- If long_only and the ARGV-element has the form "-f", where f is
- a valid short option, don't consider it an abbreviated form of
- a long option that starts with f. Otherwise there would be no
- way to give the -f short option.
-
- On the other hand, if there's a long option "fubar" and
- the ARGV-element is "-fu", do consider that an abbreviation of
- the long option, just like "--fu", and not "-f" with arg "u".
-
- This distinction seems to be the most useful approach. */
-
- if (longopts != NULL
- && (argv[optind][1] == '-'
- || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
- {
- char *nameend;
- const struct option *p;
- const struct option *pfound = NULL;
- int exact = 0;
- int ambig = 0;
- int indfound = -1;
- int option_index;
-
- for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
- /* Do nothing. */ ;
-
- /* Test all long options for either exact match
- or abbreviated matches. */
- for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp (p->name, nextchar, nameend - nextchar))
- {
- if ((unsigned int) (nameend - nextchar)
- == (unsigned int) strlen (p->name))
- {
- /* Exact match found. */
- pfound = p;
- indfound = option_index;
- exact = 1;
- break;
- }
- else if (pfound == NULL)
- {
- /* First nonexact match found. */
- pfound = p;
- indfound = option_index;
- }
- else
- /* Second or later nonexact match found. */
- ambig = 1;
- }
-
- if (ambig && !exact)
- {
- if (opterr)
- fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
- argv[0], argv[optind]);
- nextchar += strlen (nextchar);
- optind++;
- optopt = 0;
- return '?';
- }
-
- if (pfound != NULL)
- {
- option_index = indfound;
- optind++;
- if (*nameend)
- {
- /* Don't test has_arg with >, because some C compilers don't
- allow it to be used on enums. */
- if (pfound->has_arg)
- optarg = nameend + 1;
- else
- {
- if (opterr)
- {
- if (argv[optind - 1][1] == '-')
- /* --option */
- fprintf (stderr,
- _("%s: option `--%s' doesn't allow an argument\n"),
- argv[0], pfound->name);
- else
- /* +option or -option */
- fprintf (stderr,
- _("%s: option `%c%s' doesn't allow an argument\n"),
- argv[0], argv[optind - 1][0], pfound->name);
- }
-
- nextchar += strlen (nextchar);
-
- optopt = pfound->val;
- return '?';
- }
- }
- else if (pfound->has_arg == 1)
- {
- if (optind < argc)
- optarg = argv[optind++];
- else
- {
- if (opterr)
- fprintf (stderr,
- _("%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]);
- nextchar += strlen (nextchar);
- optopt = pfound->val;
- return optstring[0] == ':' ? ':' : '?';
- }
- }
- nextchar += strlen (nextchar);
- if (longind != NULL)
- *longind = option_index;
- if (pfound->flag)
- {
- *(pfound->flag) = pfound->val;
- return 0;
- }
- return pfound->val;
- }
-
- /* Can't find it as a long option. If this is not getopt_long_only,
- or the option starts with '--' or is not a valid short
- option, then it's an error.
- Otherwise interpret it as a short option. */
- if (!long_only || argv[optind][1] == '-'
- || my_index (optstring, *nextchar) == NULL)
- {
- if (opterr)
- {
- if (argv[optind][1] == '-')
- /* --option */
- fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
- argv[0], nextchar);
- else
- /* +option or -option */
- fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
- argv[0], argv[optind][0], nextchar);
- }
- nextchar = (char *) "";
- optind++;
- optopt = 0;
- return '?';
- }
- }
-
- /* Look at and handle the next short option-character. */
-
- {
- char c = *nextchar++;
- char *temp = my_index (optstring, c);
-
- /* Increment `optind' when we start to process its last character. */
- if (*nextchar == '\0')
- ++optind;
-
- if (temp == NULL || c == ':')
- {
- if (opterr)
- {
- if (posixly_correct)
- /* 1003.2 specifies the format of this message. */
- fprintf (stderr, _("%s: illegal option -- %c\n"),
- argv[0], c);
- else
- fprintf (stderr, _("%s: invalid option -- %c\n"),
- argv[0], c);
- }
- optopt = c;
- return '?';
- }
- /* Convenience. Treat POSIX -W foo same as long option --foo */
- if (temp[0] == 'W' && temp[1] == ';')
- {
- char *nameend;
- const struct option *p;
- const struct option *pfound = NULL;
- int exact = 0;
- int ambig = 0;
- int indfound = 0;
- int option_index;
-
- /* This is an option that requires an argument. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- /* If we end this ARGV-element by taking the rest as an arg,
- we must advance to the next element now. */
- optind++;
- }
- else if (optind == argc)
- {
- if (opterr)
- {
- /* 1003.2 specifies the format of this message. */
- fprintf (stderr, _("%s: option requires an argument -- %c\n"),
- argv[0], c);
- }
- optopt = c;
- if (optstring[0] == ':')
- c = ':';
- else
- c = '?';
- return c;
- }
- else
- /* We already incremented `optind' once;
- increment it again when taking next ARGV-elt as argument. */
- optarg = argv[optind++];
-
- /* optarg is now the argument, see if it's in the
- table of longopts. */
-
- for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
- /* Do nothing. */ ;
-
- /* Test all long options for either exact match
- or abbreviated matches. */
- for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp (p->name, nextchar, nameend - nextchar))
- {
- if ((unsigned int) (nameend - nextchar) == strlen (p->name))
- {
- /* Exact match found. */
- pfound = p;
- indfound = option_index;
- exact = 1;
- break;
- }
- else if (pfound == NULL)
- {
- /* First nonexact match found. */
- pfound = p;
- indfound = option_index;
- }
- else
- /* Second or later nonexact match found. */
- ambig = 1;
- }
- if (ambig && !exact)
- {
- if (opterr)
- fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
- argv[0], argv[optind]);
- nextchar += strlen (nextchar);
- optind++;
- return '?';
- }
- if (pfound != NULL)
- {
- option_index = indfound;
- if (*nameend)
- {
- /* Don't test has_arg with >, because some C compilers don't
- allow it to be used on enums. */
- if (pfound->has_arg)
- optarg = nameend + 1;
- else
- {
- if (opterr)
- fprintf (stderr, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
- argv[0], pfound->name);
-
- nextchar += strlen (nextchar);
- return '?';
- }
- }
- else if (pfound->has_arg == 1)
- {
- if (optind < argc)
- optarg = argv[optind++];
- else
- {
- if (opterr)
- fprintf (stderr,
- _("%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]);
- nextchar += strlen (nextchar);
- return optstring[0] == ':' ? ':' : '?';
- }
- }
- nextchar += strlen (nextchar);
- if (longind != NULL)
- *longind = option_index;
- if (pfound->flag)
- {
- *(pfound->flag) = pfound->val;
- return 0;
- }
- return pfound->val;
- }
- nextchar = NULL;
- return 'W'; /* Let the application handle it. */
- }
- if (temp[1] == ':')
- {
- if (temp[2] == ':')
- {
- /* This is an option that accepts an argument optionally. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- optind++;
- }
- else
- optarg = NULL;
- nextchar = NULL;
- }
- else
- {
- /* This is an option that requires an argument. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- /* If we end this ARGV-element by taking the rest as an arg,
- we must advance to the next element now. */
- optind++;
- }
- else if (optind == argc)
- {
- if (opterr)
- {
- /* 1003.2 specifies the format of this message. */
- fprintf (stderr,
- _("%s: option requires an argument -- %c\n"),
- argv[0], c);
- }
- optopt = c;
- if (optstring[0] == ':')
- c = ':';
- else
- c = '?';
- }
- else
- /* We already incremented `optind' once;
- increment it again when taking next ARGV-elt as argument. */
- optarg = argv[optind++];
- nextchar = NULL;
- }
- }
- return c;
- }
-}
-
-int
-getopt (argc, argv, optstring)
- int argc;
- char *const *argv;
- const char *optstring;
-{
- return _getopt_internal (argc, argv, optstring,
- (const struct option *) 0,
- (int *) 0,
- 0);
-}
-
-#endif /* Not ELIDE_CODE. */
-
-#ifdef TEST
-
-/* Compile with -DTEST to make an executable for use in testing
- the above definition of `getopt'. */
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- int c;
- int digit_optind = 0;
-
- while (1)
- {
- int this_option_optind = optind ? optind : 1;
-
- c = getopt (argc, argv, "abc:d:0123456789");
- if (c == -1)
- break;
-
- switch (c)
- {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (digit_optind != 0 && digit_optind != this_option_optind)
- printf ("digits occur in two different argv-elements.\n");
- digit_optind = this_option_optind;
- printf ("option %c\n", c);
- break;
-
- case 'a':
- printf ("option a\n");
- break;
-
- case 'b':
- printf ("option b\n");
- break;
-
- case 'c':
- printf ("option c with value `%s'\n", optarg);
- break;
-
- case '?':
- break;
-
- default:
- printf ("?? getopt returned character code 0%o ??\n", c);
- }
- }
-
- if (optind < argc)
- {
- printf ("non-option ARGV-elements: ");
- while (optind < argc)
- printf ("%s ", argv[optind++]);
- printf ("\n");
- }
-
- exit (0);
-}
-
-#endif /* TEST */
diff --git a/3rdparty/speex/src/getopt1.c b/3rdparty/speex/src/getopt1.c
deleted file mode 100644
index dee63255..00000000
--- a/3rdparty/speex/src/getopt1.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/* getopt_long and getopt_long_only entry points for GNU getopt.
- Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
- Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "getopt_win.h"
-
-#if !defined __STDC__ || !__STDC__
-/* This is a separate conditional since some stdc systems
- reject `defined (const)'. */
-#ifndef const
-#define const
-#endif
-#endif
-
-#include <stdio.h>
-
-/* Comment out all this code if we are using the GNU C Library, and are not
- actually compiling the library itself. This code is part of the GNU C
- Library, but also included in many other GNU distributions. Compiling
- and linking in this code is a waste when using the GNU C library
- (especially if it is a shared library). Rather than having every GNU
- program understand `configure --with-gnu-libc' and omit the object files,
- it is simpler to just do this in the source for each such file. */
-
-#define GETOPT_INTERFACE_VERSION 2
-#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
-#include <gnu-versions.h>
-#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
-#define ELIDE_CODE
-#endif
-#endif
-
-#ifndef ELIDE_CODE
-
-
-/* This needs to come after some library #include
- to get __GNU_LIBRARY__ defined. */
-#ifdef __GNU_LIBRARY__
-#include <stdlib.h>
-#endif
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-int
-getopt_long (argc, argv, options, long_options, opt_index)
- int argc;
- char *const *argv;
- const char *options;
- const struct option *long_options;
- int *opt_index;
-{
- return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
-}
-
-/* Like getopt_long, but '-' as well as '--' can indicate a long option.
- If an option that starts with '-' (not '--') doesn't match a long option,
- but does match a short option, it is parsed as a short option
- instead. */
-
-int
-getopt_long_only (argc, argv, options, long_options, opt_index)
- int argc;
- char *const *argv;
- const char *options;
- const struct option *long_options;
- int *opt_index;
-{
- return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
-}
-
-
-#endif /* Not ELIDE_CODE. */
-
-#ifdef TEST
-
-#include <stdio.h>
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- int c;
- int digit_optind = 0;
-
- while (1)
- {
- int this_option_optind = optind ? optind : 1;
- int option_index = 0;
- static struct option long_options[] =
- {
- {"add", 1, 0, 0},
- {"append", 0, 0, 0},
- {"delete", 1, 0, 0},
- {"verbose", 0, 0, 0},
- {"create", 0, 0, 0},
- {"file", 1, 0, 0},
- {0, 0, 0, 0}
- };
-
- c = getopt_long (argc, argv, "abc:d:0123456789",
- long_options, &option_index);
- if (c == -1)
- break;
-
- switch (c)
- {
- case 0:
- printf ("option %s", long_options[option_index].name);
- if (optarg)
- printf (" with arg %s", optarg);
- printf ("\n");
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (digit_optind != 0 && digit_optind != this_option_optind)
- printf ("digits occur in two different argv-elements.\n");
- digit_optind = this_option_optind;
- printf ("option %c\n", c);
- break;
-
- case 'a':
- printf ("option a\n");
- break;
-
- case 'b':
- printf ("option b\n");
- break;
-
- case 'c':
- printf ("option c with value `%s'\n", optarg);
- break;
-
- case 'd':
- printf ("option d with value `%s'\n", optarg);
- break;
-
- case '?':
- break;
-
- default:
- printf ("?? getopt returned character code 0%o ??\n", c);
- }
- }
-
- if (optind < argc)
- {
- printf ("non-option ARGV-elements: ");
- while (optind < argc)
- printf ("%s ", argv[optind++]);
- printf ("\n");
- }
-
- exit (0);
-}
-
-#endif /* TEST */
diff --git a/3rdparty/speex/src/getopt_win.h b/3rdparty/speex/src/getopt_win.h
deleted file mode 100644
index b0147e9d..00000000
--- a/3rdparty/speex/src/getopt_win.h
+++ /dev/null
@@ -1,169 +0,0 @@
-/* Declarations for getopt.
- Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#ifndef _GETOPT_H
-
-#ifndef __need_getopt
-# define _GETOPT_H 1
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* For communication from `getopt' to the caller.
- When `getopt' finds an option that takes an argument,
- the argument value is returned here.
- Also, when `ordering' is RETURN_IN_ORDER,
- each non-option ARGV-element is returned here. */
-
-extern char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
- This is used for communication to and from the caller
- and for communication between successive calls to `getopt'.
-
- On entry to `getopt', zero means this is the first call; initialize.
-
- When `getopt' returns -1, this is the index of the first of the
- non-option elements that the caller should itself scan.
-
- Otherwise, `optind' communicates from one call to the next
- how much of ARGV has been scanned so far. */
-
-extern int optind;
-
-/* Callers store zero here to inhibit the error message `getopt' prints
- for unrecognized options. */
-
-extern int opterr;
-
-/* Set to an option character which was unrecognized. */
-
-extern int optopt;
-
-#ifndef __need_getopt
-/* Describe the long-named options requested by the application.
- The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
- of `struct option' terminated by an element containing a name which is
- zero.
-
- The field `has_arg' is:
- no_argument (or 0) if the option does not take an argument,
- required_argument (or 1) if the option requires an argument,
- optional_argument (or 2) if the option takes an optional argument.
-
- If the field `flag' is not NULL, it points to a variable that is set
- to the value given in the field `val' when the option is found, but
- left unchanged if the option is not found.
-
- To have a long-named option do something other than set an `int' to
- a compiled-in constant, such as set a value from `optarg', set the
- option's `flag' field to zero and its `val' field to a nonzero
- value (the equivalent single-letter option character, if there is
- one). For long options that have a zero `flag' field, `getopt'
- returns the contents of the `val' field. */
-
-struct option
-{
-# if defined __STDC__ && __STDC__
- const char *name;
-# else
- char *name;
-# endif
- /* has_arg can't be an enum because some compilers complain about
- type mismatches in all the code that assumes it is an int. */
- int has_arg;
- int *flag;
- int val;
-};
-
-/* Names for the values of the `has_arg' field of `struct option'. */
-
-# define no_argument 0
-# define required_argument 1
-# define optional_argument 2
-#endif /* need getopt */
-
-
-/* Get definitions and prototypes for functions to process the
- arguments in ARGV (ARGC of them, minus the program name) for
- options given in OPTS.
-
- Return the option character from OPTS just read. Return -1 when
- there are no more options. For unrecognized options, or options
- missing arguments, `optopt' is set to the option letter, and '?' is
- returned.
-
- The OPTS string is a list of characters which are recognized option
- letters, optionally followed by colons, specifying that that letter
- takes an argument, to be placed in `optarg'.
-
- If a letter in OPTS is followed by two colons, its argument is
- optional. This behavior is specific to the GNU `getopt'.
-
- The argument `--' causes premature termination of argument
- scanning, explicitly telling `getopt' that there are no more
- options.
-
- If OPTS begins with `--', then non-option arguments are treated as
- arguments to the option '\0'. This behavior is specific to the GNU
- `getopt'. */
-
-#if defined __STDC__ && __STDC__
-# ifdef __GNU_LIBRARY__
-/* Many other libraries have conflicting prototypes for getopt, with
- differences in the consts, in stdlib.h. To avoid compilation
- errors, only prototype getopt for the GNU C library. */
-extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
-# else /* not __GNU_LIBRARY__ */
-extern int getopt ();
-# endif /* __GNU_LIBRARY__ */
-
-# ifndef __need_getopt
-extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts,
- const struct option *__longopts, int *__longind);
-extern int getopt_long_only (int __argc, char *const *__argv,
- const char *__shortopts,
- const struct option *__longopts, int *__longind);
-
-/* Internal only. Users should not call this directly. */
-extern int _getopt_internal (int __argc, char *const *__argv,
- const char *__shortopts,
- const struct option *__longopts, int *__longind,
- int __long_only);
-# endif
-#else /* not __STDC__ */
-extern int getopt ();
-# ifndef __need_getopt
-extern int getopt_long ();
-extern int getopt_long_only ();
-
-extern int _getopt_internal ();
-# endif
-#endif /* __STDC__ */
-
-#ifdef __cplusplus
-}
-#endif
-
-/* Make sure we later can get all the definitions and declarations. */
-#undef __need_getopt
-
-#endif /* getopt.h */
diff --git a/3rdparty/speex/src/skeleton.c b/3rdparty/speex/src/skeleton.c
deleted file mode 100644
index 22159d53..00000000
--- a/3rdparty/speex/src/skeleton.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * skeleton.c
- * author: Tahseen Mohammad
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-#include <ogg/ogg.h>
-
-#include "skeleton.h"
-
-/* write an ogg_page to a file pointer */
-int write_ogg_page_to_file(ogg_page *og, FILE *out) {
- int written;
-
- written = fwrite(og->header,1, og->header_len, out);
- written += fwrite(og->body,1, og->body_len, out);
-
- return written;
-}
-
-int add_message_header_field(fisbone_packet *fp,
- char *header_key,
- char *header_value) {
-
- /* size of both key and value + ': ' + CRLF */
- int this_message_size = strlen(header_key) + strlen(header_value) + 4;
- if (fp->message_header_fields == NULL) {
- fp->message_header_fields = _ogg_calloc(this_message_size, sizeof(char));
- } else {
- int new_size = (fp->current_header_size + this_message_size) * sizeof(char);
- fp->message_header_fields = _ogg_realloc(fp->message_header_fields, new_size);
- }
- snprintf(fp->message_header_fields + fp->current_header_size,
- this_message_size+1,
- "%s: %s\r\n",
- header_key,
- header_value);
- fp->current_header_size += this_message_size;
-
- return 0;
-}
-
-/* create a ogg_packet from a fishead_packet structure */
-ogg_packet ogg_from_fishead(fishead_packet *fp) {
-
- ogg_packet op;
-
- memset(&op, 0, sizeof(op));
- op.packet = _ogg_calloc(FISHEAD_SIZE, sizeof(unsigned char));
- memset(op.packet, 0, FISHEAD_SIZE);
-
- memcpy (op.packet, FISHEAD_IDENTIFIER, 8); /* identifier */
- *((ogg_uint16_t*)(op.packet+8)) = SKELETON_VERSION_MAJOR; /* version major */
- *((ogg_uint16_t*)(op.packet+10)) = SKELETON_VERSION_MINOR; /* version minor */
- *((ogg_int64_t*)(op.packet+12)) = (ogg_int64_t)fp->ptime_n; /* presentationtime numerator */
- *((ogg_int64_t*)(op.packet+20)) = (ogg_int64_t)fp->ptime_d; /* presentationtime denominator */
- *((ogg_int64_t*)(op.packet+28)) = (ogg_int64_t)fp->btime_n; /* basetime numerator */
- *((ogg_int64_t*)(op.packet+36)) = (ogg_int64_t)fp->btime_d; /* basetime denominator */
- /* TODO: UTC time, set to zero for now */
-
- op.b_o_s = 1; /* its the first packet of the stream */
- op.e_o_s = 0; /* its not the last packet of the stream */
- op.bytes = FISHEAD_SIZE; /* length of the packet in bytes */
-
- return op;
-}
-
-/* create a ogg_packet from a fisbone_packet structure.
- * call this method after the fisbone_packet is filled and all message header fields are added
- * by calling add_message_header_field method.
- */
-ogg_packet ogg_from_fisbone(fisbone_packet *fp) {
-
- ogg_packet op;
- int packet_size = FISBONE_SIZE + fp->current_header_size;
-
- memset (&op, 0, sizeof (op));
- op.packet = _ogg_calloc (packet_size, sizeof(unsigned char));
- memset (op.packet, 0, packet_size);
- memcpy (op.packet, FISBONE_IDENTIFIER, 8); /* identifier */
- *((ogg_uint32_t*)(op.packet+8)) = FISBONE_MESSAGE_HEADER_OFFSET; /* offset of the message header fields */
- *((ogg_uint32_t*)(op.packet+12)) = fp->serial_no; /* serialno of the respective stream */
- *((ogg_uint32_t*)(op.packet+16)) = fp->nr_header_packet; /* number of header packets */
- *((ogg_int64_t*)(op.packet+20)) = fp->granule_rate_n; /* granulrate numerator */
- *((ogg_int64_t*)(op.packet+28)) = fp->granule_rate_d; /* granulrate denominator */
- *((ogg_int64_t*)(op.packet+36)) = fp->start_granule; /* start granule */
- *((ogg_uint32_t*)(op.packet+44)) = fp->preroll; /* preroll, for theora its 0 */
- *(op.packet+48) = fp->granule_shift; /* granule shift */
- memcpy((op.packet+FISBONE_SIZE), fp->message_header_fields, fp->current_header_size);
-
- op.b_o_s = 0;
- op.e_o_s = 0;
- op.bytes = packet_size; /* size of the packet in bytes */
-
- return op;
-}
-
-/* fills up a fishead_packet from a fishead ogg_packet of a skeleton bistream */
-fishead_packet fishead_from_ogg(ogg_packet *op) {
-
- fishead_packet fp;
-
- if (memcmp(op->packet, FISHEAD_IDENTIFIER, 8))
- ; /* invalid packet what do we do? */
-
- fp.version_major = *((ogg_uint16_t*)(op->packet+8)); /* version major */
- fp.version_minor = *((ogg_uint16_t*)(op->packet+10)); /* version minor */
- fp.ptime_n = *((ogg_int64_t*)(op->packet+12)); /* presentationtime numerator */
- fp.ptime_d = *((ogg_int64_t*)(op->packet+20)); /* presentationtime denominator */
- fp.btime_n = *((ogg_int64_t*)(op->packet+28)); /* basetime numerator */
- fp.btime_d = *((ogg_int64_t*)(op->packet+36)); /* basetime denominator */
- memcpy(fp.UTC, op->packet+44, 20);
-
- return fp;
-}
-
-/* fills up a fisbone_packet from a fisbone ogg_packet of a skeleton bitstream */
-fisbone_packet fisbone_from_ogg(ogg_packet *op) {
-
- fisbone_packet fp;
-
- if (memcmp(op->packet, FISBONE_IDENTIFIER, 8))
- ; /* invalid value, what do we do? */
- fp.serial_no = *((ogg_uint32_t*)(op->packet+12)); /* serialno of the stream represented by this fisbone packet */
- fp.nr_header_packet = *((ogg_uint32_t*)(op->packet+16)); /* number of header packets */
- fp.granule_rate_n = *((ogg_int64_t*)(op->packet+20)); /* granulrate numerator */
- fp.granule_rate_d = *((ogg_int64_t*)(op->packet+28)); /* granulrate denominator */
- fp.start_granule = *((ogg_int64_t*)(op->packet+36)); /* start granule */
- fp.preroll = *((ogg_uint32_t*)(op->packet+44)); /* preroll, for theora its 0 */
- fp.granule_shift = *(op->packet+48); /* granule shift */
- fp.current_header_size = op->bytes - FISBONE_SIZE;
- fp.message_header_fields = _ogg_calloc(fp.current_header_size+1, sizeof(char));
- memcpy(fp.message_header_fields, op->packet+FISBONE_SIZE, fp.current_header_size);
-
- return fp;
-}
-
-int add_fishead_to_stream(ogg_stream_state *os, fishead_packet *fp) {
-
- ogg_packet op;
-
- op = ogg_from_fishead(fp);
- ogg_stream_packetin(os, &op);
- _ogg_free(op.packet);
-
- return 0;
-}
-
-int add_fisbone_to_stream(ogg_stream_state *os, fisbone_packet *fp) {
-
- ogg_packet op;
-
- op = ogg_from_fisbone(fp);
- ogg_stream_packetin(os, &op);
- _ogg_free(op.packet);
-
- return 0;
-}
-
-int add_eos_packet_to_stream(ogg_stream_state *os) {
-
- ogg_packet op;
-
- memset (&op, 0, sizeof(op));
- op.e_o_s = 1;
- ogg_stream_packetin(os, &op);
-
- return 0;
-}
-
-int flush_ogg_stream_to_file(ogg_stream_state *os, FILE *out) {
-
- ogg_page og;
- int result;
-
- while((result = ogg_stream_flush(os, &og)))
- {
- if(!result) break;
- result = write_ogg_page_to_file(&og, out);
- if(result != og.header_len + og.body_len)
- return 1;
- }
-
- return 0;
-}
diff --git a/3rdparty/speex/src/skeleton.h b/3rdparty/speex/src/skeleton.h
deleted file mode 100644
index f07d7a3e..00000000
--- a/3rdparty/speex/src/skeleton.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * skeleton.h
- * author: Tahseen Mohammad
- */
-
-#ifndef _SKELETON_H
-#define _SKELETON_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef WIN32
-#define snprintf _snprintf
-#endif
-
-#include <ogg/ogg.h>
-
-#define SKELETON_VERSION_MAJOR 3
-#define SKELETON_VERSION_MINOR 0
-#define FISHEAD_IDENTIFIER "fishead\0"
-#define FISBONE_IDENTIFIER "fisbone\0"
-#define FISHEAD_SIZE 64
-#define FISBONE_SIZE 52
-#define FISBONE_MESSAGE_HEADER_OFFSET 44
-
-/* fishead_packet holds a fishead header packet. */
-typedef struct {
- ogg_uint16_t version_major; /* skeleton version major */
- ogg_uint16_t version_minor; /* skeleton version minor */
- /* Start time of the presentation
- * For a new stream presentationtime & basetime is same. */
- ogg_int64_t ptime_n; /* presentation time numerator */
- ogg_int64_t ptime_d; /* presentation time denominator */
- ogg_int64_t btime_n; /* basetime numerator */
- ogg_int64_t btime_d; /* basetime denominator */
- /* will holds the time of origin of the stream, a 20 bit field. */
- unsigned char UTC[20];
-} fishead_packet;
-
-/* fisbone_packet holds a fisbone header packet. */
-typedef struct {
- ogg_uint32_t serial_no; /* serial no of the corresponding stream */
- ogg_uint32_t nr_header_packet; /* number of header packets */
- /* granule rate is the temporal resolution of the logical bitstream */
- ogg_int64_t granule_rate_n; /* granule rate numerator */
- ogg_int64_t granule_rate_d; /* granule rate denominator */
- ogg_int64_t start_granule; /* start granule value */
- ogg_uint32_t preroll; /* preroll */
- unsigned char granule_shift; /* 1 byte value holding the granule shift */
- char *message_header_fields; /* holds all the message header fields */
- /* current total size of the message header fields, for realloc purpose, initially zero */
- ogg_uint32_t current_header_size;
-} fisbone_packet;
-
-extern int write_ogg_page_to_file(ogg_page *og, FILE *out);
-extern int add_message_header_field(fisbone_packet *fp, char *header_key, char *header_value);
-/* remember to deallocate the returned ogg_packet properly */
-extern ogg_packet ogg_from_fishead(fishead_packet *fp);
-extern ogg_packet ogg_from_fisbone(fisbone_packet *fp);
-extern fishead_packet fishead_from_ogg(ogg_packet *op);
-extern fisbone_packet fisbone_from_ogg(ogg_packet *op);
-extern int add_fishead_to_stream(ogg_stream_state *os, fishead_packet *fp);
-extern int add_fisbone_to_stream(ogg_stream_state *os, fisbone_packet *fp);
-extern int add_eos_packet_to_stream(ogg_stream_state *os);
-extern int flush_ogg_stream_to_file(ogg_stream_state *os, FILE *out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SKELETON_H */
-
-
-
-
-
-
diff --git a/3rdparty/speex/src/speexdec.1 b/3rdparty/speex/src/speexdec.1
deleted file mode 100644
index 7cfd723f..00000000
--- a/3rdparty/speex/src/speexdec.1
+++ /dev/null
@@ -1,78 +0,0 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29.
-.TH SPEEXDEC "1" "September 2003" "speexdec version 1.1" "User Commands"
-.SH NAME
-speexdec \- manual page for speexdec version 1.1
-.SH SYNOPSIS
-.B speexdec
-[\fIoptions\fR] \fIinput_file.spx \fR[\fIoutput_file\fR]
-.SH DESCRIPTION
-Decodes a Speex file and produce a WAV file or raw file
-.SS "input_file can be:"
-.TP
-filename.spx
-regular Speex file
-.TP
--
-stdin
-.SS "output_file can be:"
-.TP
-filename.wav
-Wav file
-.TP
-filename.*
-Raw PCM file (any extension other that .wav)
-.TP
--
-stdout
-.TP
-(nothing)
-Will be played to soundcard
-.SH OPTIONS
-.TP
-\fB\-\-enh\fR
-Enable perceptual enhancement (default)
-.TP
-\fB\-\-no\-enh\fR
-Disable perceptual enhancement
-.TP
-\fB\-\-force\-nb\fR
-Force decoding in narrowband
-.TP
-\fB\-\-force\-wb\fR
-Force decoding in wideband
-.TP
-\fB\-\-force\-uwb\fR
-Force decoding in ultra-wideband
-.TP
-\fB\-\-mono\fR
-Force decoding in mono
-.TP
-\fB\-\-stereo\fR
-Force decoding in stereo
-.TP
-\fB\-\-rate\fR n
-Force decoding at sampling rate n Hz
-.TP
-\fB\-\-packet\-loss\fR n
-Simulate n % random packet loss
-.TP
-\fB\-V\fR
-Verbose mode (show bit-rate)
-.TP
-\fB\-h\fR, \fB\-\-help\fR
-This help
-.TP
-\fB\-v\fR, \fB\-\-version\fR
-Version information
-.TP
-\fB\-\-pf\fR
-Deprecated, use \fB\-\-enh\fR instead
-.TP
-\fB\-\-no\-pf\fR
-Deprecated, use \fB\-\-no\-enh\fR instead
-.PP
-More information is available from the Speex site: http://www.speex.org
-.PP
-Please report bugs to the mailing list `speex-dev@xiph.org'.
-.SH COPYRIGHT
-Copyright \(co 2002 Jean-Marc Valin
diff --git a/3rdparty/speex/src/speexdec.c b/3rdparty/speex/src/speexdec.c
deleted file mode 100644
index 94a63c11..00000000
--- a/3rdparty/speex/src/speexdec.c
+++ /dev/null
@@ -1,796 +0,0 @@
-/* Copyright (C) 2002-2006 Jean-Marc Valin
- File: speexdec.c
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdio.h>
-#if !defined WIN32 && !defined _WIN32
-#include <unistd.h>
-#include <getopt.h>
-#endif
-#ifndef HAVE_GETOPT_LONG
-#include "getopt_win.h"
-#endif
-#include <stdlib.h>
-#include <string.h>
-
-#include <speex/speex.h>
-#include <ogg/ogg.h>
-
-#if defined WIN32 || defined _WIN32
-#include <windows.h>
-#include "getopt_win.h"
-#include "wave_out.h"
-/* We need the following two to set stdout to binary */
-#include <io.h>
-#include <fcntl.h>
-#endif
-#include <math.h>
-
-#ifdef __MINGW32__
-#include "wave_out.c"
-#endif
-
-#ifdef HAVE_SYS_SOUNDCARD_H
-#include <sys/soundcard.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-
-#elif defined HAVE_SYS_AUDIOIO_H
-#include <sys/types.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <sys/audioio.h>
-#ifndef AUDIO_ENCODING_SLINEAR
-#define AUDIO_ENCODING_SLINEAR AUDIO_ENCODING_LINEAR /* Solaris */
-#endif
-
-#endif
-
-#include <string.h>
-#include "wav_io.h"
-#include <speex/speex_header.h>
-#include <speex/speex_stereo.h>
-#include <speex/speex_callbacks.h>
-#include "wav_io.h"
-
-#define MAX_FRAME_SIZE 2000
-
-#define readint(buf, base) (((buf[base+3]<<24)&0xff000000)| \
- ((buf[base+2]<<16)&0xff0000)| \
- ((buf[base+1]<<8)&0xff00)| \
- (buf[base]&0xff))
-
-static void print_comments(char *comments, int length)
-{
- char *c=comments;
- int len, i, nb_fields;
- char *end;
-
- if (length<8)
- {
- fprintf (stderr, "Invalid/corrupted comments\n");
- return;
- }
- end = c+length;
- len=readint(c, 0);
- c+=4;
- if (c+len>end)
- {
- fprintf (stderr, "Invalid/corrupted comments\n");
- return;
- }
- fwrite(c, 1, len, stderr);
- c+=len;
- fprintf (stderr, "\n");
- if (c+4>end)
- {
- fprintf (stderr, "Invalid/corrupted comments\n");
- return;
- }
- nb_fields=readint(c, 0);
- c+=4;
- for (i=0;i<nb_fields;i++)
- {
- if (c+4>end)
- {
- fprintf (stderr, "Invalid/corrupted comments\n");
- return;
- }
- len=readint(c, 0);
- c+=4;
- if (c+len>end)
- {
- fprintf (stderr, "Invalid/corrupted comments\n");
- return;
- }
- fwrite(c, 1, len, stderr);
- c+=len;
- fprintf (stderr, "\n");
- }
-}
-
-FILE *out_file_open(char *outFile, int rate, int *channels)
-{
- FILE *fout=NULL;
- /*Open output file*/
- if (strlen(outFile)==0)
- {
-#if defined HAVE_SYS_SOUNDCARD_H
- int audio_fd, format, stereo;
- audio_fd=open("/dev/dsp", O_WRONLY);
- if (audio_fd<0)
- {
- perror("Cannot open /dev/dsp");
- exit(1);
- }
-
- format=AFMT_S16_NE;
- if (ioctl(audio_fd, SNDCTL_DSP_SETFMT, &format)==-1)
- {
- perror("SNDCTL_DSP_SETFMT");
- close(audio_fd);
- exit(1);
- }
-
- stereo=0;
- if (*channels==2)
- stereo=1;
- if (ioctl(audio_fd, SNDCTL_DSP_STEREO, &stereo)==-1)
- {
- perror("SNDCTL_DSP_STEREO");
- close(audio_fd);
- exit(1);
- }
- if (stereo!=0)
- {
- if (*channels==1)
- fprintf (stderr, "Cannot set mono mode, will decode in stereo\n");
- *channels=2;
- }
-
- if (ioctl(audio_fd, SNDCTL_DSP_SPEED, &rate)==-1)
- {
- perror("SNDCTL_DSP_SPEED");
- close(audio_fd);
- exit(1);
- }
- fout = fdopen(audio_fd, "w");
-#elif defined HAVE_SYS_AUDIOIO_H
- audio_info_t info;
- int audio_fd;
-
- audio_fd = open("/dev/audio", O_WRONLY);
- if (audio_fd<0)
- {
- perror("Cannot open /dev/audio");
- exit(1);
- }
-
- AUDIO_INITINFO(&info);
-#ifdef AUMODE_PLAY /* NetBSD/OpenBSD */
- info.mode = AUMODE_PLAY;
-#endif
- info.play.encoding = AUDIO_ENCODING_SLINEAR;
- info.play.precision = 16;
- info.play.sample_rate = rate;
- info.play.channels = *channels;
-
- if (ioctl(audio_fd, AUDIO_SETINFO, &info) < 0)
- {
- perror ("AUDIO_SETINFO");
- exit(1);
- }
- fout = fdopen(audio_fd, "w");
-#elif defined WIN32 || defined _WIN32
- {
- unsigned int speex_channels = *channels;
- if (Set_WIN_Params (INVALID_FILEDESC, rate, SAMPLE_SIZE, speex_channels))
- {
- fprintf (stderr, "Can't access %s\n", "WAVE OUT");
- exit(1);
- }
- }
-#else
- fprintf (stderr, "No soundcard support\n");
- exit(1);
-#endif
- } else {
- if (strcmp(outFile,"-")==0)
- {
-#if defined WIN32 || defined _WIN32
- _setmode(_fileno(stdout), _O_BINARY);
-#endif
- fout=stdout;
- }
- else
- {
- fout = fopen(outFile, "wb");
- if (!fout)
- {
- perror(outFile);
- exit(1);
- }
- if (strcmp(outFile+strlen(outFile)-4,".wav")==0 || strcmp(outFile+strlen(outFile)-4,".WAV")==0)
- write_wav_header(fout, rate, *channels, 0, 0);
- }
- }
- return fout;
-}
-
-void usage()
-{
- printf ("Usage: speexdec [options] input_file.spx [output_file]\n");
- printf ("\n");
- printf ("Decodes a Speex file and produce a WAV file or raw file\n");
- printf ("\n");
- printf ("input_file can be:\n");
- printf (" filename.spx regular Speex file\n");
- printf (" - stdin\n");
- printf ("\n");
- printf ("output_file can be:\n");
- printf (" filename.wav Wav file\n");
- printf (" filename.* Raw PCM file (any extension other that .wav)\n");
- printf (" - stdout\n");
- printf (" (nothing) Will be played to soundcard\n");
- printf ("\n");
- printf ("Options:\n");
- printf (" --enh Enable perceptual enhancement (default)\n");
- printf (" --no-enh Disable perceptual enhancement\n");
- printf (" --force-nb Force decoding in narrowband\n");
- printf (" --force-wb Force decoding in wideband\n");
- printf (" --force-uwb Force decoding in ultra-wideband\n");
- printf (" --mono Force decoding in mono\n");
- printf (" --stereo Force decoding in stereo\n");
- printf (" --rate n Force decoding at sampling rate n Hz\n");
- printf (" --packet-loss n Simulate n %% random packet loss\n");
- printf (" -V Verbose mode (show bit-rate)\n");
- printf (" -h, --help This help\n");
- printf (" -v, --version Version information\n");
- printf (" --pf Deprecated, use --enh instead\n");
- printf (" --no-pf Deprecated, use --no-enh instead\n");
- printf ("\n");
- printf ("More information is available from the Speex site: http://www.speex.org\n");
- printf ("\n");
- printf ("Please report bugs to the mailing list `speex-dev@xiph.org'.\n");
-}
-
-void version()
-{
- printf ("speexdec (Speex decoder) version " SPEEX_VERSION " (compiled " __DATE__ ")\n");
- printf ("Copyright (C) 2002-2006 Jean-Marc Valin\n");
-}
-
-void version_short()
-{
- printf ("speexdec version " SPEEX_VERSION "\n");
- printf ("Copyright (C) 2002-2006 Jean-Marc Valin\n");
-}
-
-static void *process_header(ogg_packet *op, spx_int32_t enh_enabled, spx_int32_t *frame_size, int *granule_frame_size, spx_int32_t *rate, int *nframes, int forceMode, int *channels, SpeexStereoState *stereo, int *extra_headers, int quiet)
-{
- void *st;
- const SpeexMode *mode;
- SpeexHeader *header;
- int modeID;
- SpeexCallback callback;
-
- header = speex_packet_to_header((char*)op->packet, op->bytes);
- if (!header)
- {
- fprintf (stderr, "Cannot read header\n");
- return NULL;
- }
- if (header->mode >= SPEEX_NB_MODES || header->mode<0)
- {
- fprintf (stderr, "Mode number %d does not (yet/any longer) exist in this version\n",
- header->mode);
- return NULL;
- }
-
- modeID = header->mode;
- if (forceMode!=-1)
- modeID = forceMode;
-
- mode = speex_lib_get_mode (modeID);
-
- if (header->speex_version_id > 1)
- {
- fprintf (stderr, "This file was encoded with Speex bit-stream version %d, which I don't know how to decode\n", header->speex_version_id);
- return NULL;
- }
-
- if (mode->bitstream_version < header->mode_bitstream_version)
- {
- fprintf (stderr, "The file was encoded with a newer version of Speex. You need to upgrade in order to play it.\n");
- return NULL;
- }
- if (mode->bitstream_version > header->mode_bitstream_version)
- {
- fprintf (stderr, "The file was encoded with an older version of Speex. You would need to downgrade the version in order to play it.\n");
- return NULL;
- }
-
- st = speex_decoder_init(mode);
- if (!st)
- {
- fprintf (stderr, "Decoder initialization failed.\n");
- return NULL;
- }
- speex_decoder_ctl(st, SPEEX_SET_ENH, &enh_enabled);
- speex_decoder_ctl(st, SPEEX_GET_FRAME_SIZE, frame_size);
- *granule_frame_size = *frame_size;
-
- if (!(*channels==1))
- {
- callback.callback_id = SPEEX_INBAND_STEREO;
- callback.func = speex_std_stereo_request_handler;
- callback.data = stereo;
- speex_decoder_ctl(st, SPEEX_SET_HANDLER, &callback);
- }
- if (!*rate)
- *rate = header->rate;
- /* Adjust rate if --force-* options are used */
- if (forceMode!=-1)
- {
- if (header->mode < forceMode)
- {
- *rate <<= (forceMode - header->mode);
- *granule_frame_size >>= (forceMode - header->mode);
- }
- if (header->mode > forceMode)
- {
- *rate >>= (header->mode - forceMode);
- *granule_frame_size <<= (header->mode - forceMode);
- }
- }
-
-
- speex_decoder_ctl(st, SPEEX_SET_SAMPLING_RATE, rate);
-
- *nframes = header->frames_per_packet;
-
- if (*channels==-1)
- *channels = header->nb_channels;
-
- if (!quiet)
- {
- fprintf (stderr, "Decoding %d Hz audio using %s mode",
- *rate, mode->modeName);
-
- if (*channels==1)
- fprintf (stderr, " (mono");
- else
- fprintf (stderr, " (stereo");
-
- if (header->vbr)
- fprintf (stderr, ", VBR)\n");
- else
- fprintf(stderr, ")\n");
- /*fprintf (stderr, "Decoding %d Hz audio at %d bps using %s mode\n",
- *rate, mode->bitrate, mode->modeName);*/
- }
-
- *extra_headers = header->extra_headers;
-
- free(header);
- return st;
-}
-
-int main(int argc, char **argv)
-{
- int c;
- int option_index = 0;
- char *inFile, *outFile;
- FILE *fin, *fout=NULL;
- short out[MAX_FRAME_SIZE];
- short output[MAX_FRAME_SIZE];
- int frame_size=0, granule_frame_size=0;
- void *st=NULL;
- SpeexBits bits;
- int packet_count=0;
- int stream_init = 0;
- int quiet = 0;
- ogg_int64_t page_granule=0, last_granule=0;
- int skip_samples=0, page_nb_packets;
- struct option long_options[] =
- {
- {"help", no_argument, NULL, 0},
- {"quiet", no_argument, NULL, 0},
- {"version", no_argument, NULL, 0},
- {"version-short", no_argument, NULL, 0},
- {"enh", no_argument, NULL, 0},
- {"no-enh", no_argument, NULL, 0},
- {"pf", no_argument, NULL, 0},
- {"no-pf", no_argument, NULL, 0},
- {"force-nb", no_argument, NULL, 0},
- {"force-wb", no_argument, NULL, 0},
- {"force-uwb", no_argument, NULL, 0},
- {"rate", required_argument, NULL, 0},
- {"mono", no_argument, NULL, 0},
- {"stereo", no_argument, NULL, 0},
- {"packet-loss", required_argument, NULL, 0},
- {0, 0, 0, 0}
- };
- ogg_sync_state oy;
- ogg_page og;
- ogg_packet op;
- ogg_stream_state os;
- int enh_enabled;
- int nframes=2;
- int print_bitrate=0;
- int close_in=0;
- int eos=0;
- int forceMode=-1;
- int audio_size=0;
- float loss_percent=-1;
- SpeexStereoState stereo = SPEEX_STEREO_STATE_INIT;
- int channels=-1;
- int rate=0;
- int extra_headers=0;
- int wav_format=0;
- int lookahead;
- int speex_serialno = -1;
-
- enh_enabled = 1;
-
- /*Process options*/
- while(1)
- {
- c = getopt_long (argc, argv, "hvV",
- long_options, &option_index);
- if (c==-1)
- break;
-
- switch(c)
- {
- case 0:
- if (strcmp(long_options[option_index].name,"help")==0)
- {
- usage();
- exit(0);
- } else if (strcmp(long_options[option_index].name,"quiet")==0)
- {
- quiet = 1;
- } else if (strcmp(long_options[option_index].name,"version")==0)
- {
- version();
- exit(0);
- } else if (strcmp(long_options[option_index].name,"version-short")==0)
- {
- version_short();
- exit(0);
- } else if (strcmp(long_options[option_index].name,"enh")==0)
- {
- enh_enabled=1;
- } else if (strcmp(long_options[option_index].name,"no-enh")==0)
- {
- enh_enabled=0;
- } else if (strcmp(long_options[option_index].name,"pf")==0)
- {
- fprintf (stderr, "--pf is deprecated, use --enh instead\n");
- enh_enabled=1;
- } else if (strcmp(long_options[option_index].name,"no-pf")==0)
- {
- fprintf (stderr, "--no-pf is deprecated, use --no-enh instead\n");
- enh_enabled=0;
- } else if (strcmp(long_options[option_index].name,"force-nb")==0)
- {
- forceMode=0;
- } else if (strcmp(long_options[option_index].name,"force-wb")==0)
- {
- forceMode=1;
- } else if (strcmp(long_options[option_index].name,"force-uwb")==0)
- {
- forceMode=2;
- } else if (strcmp(long_options[option_index].name,"mono")==0)
- {
- channels=1;
- } else if (strcmp(long_options[option_index].name,"stereo")==0)
- {
- channels=2;
- } else if (strcmp(long_options[option_index].name,"rate")==0)
- {
- rate=atoi (optarg);
- } else if (strcmp(long_options[option_index].name,"packet-loss")==0)
- {
- loss_percent = atof(optarg);
- }
- break;
- case 'h':
- usage();
- exit(0);
- break;
- case 'v':
- version();
- exit(0);
- break;
- case 'V':
- print_bitrate=1;
- break;
- case '?':
- usage();
- exit(1);
- break;
- }
- }
- if (argc-optind!=2 && argc-optind!=1)
- {
- usage();
- exit(1);
- }
- inFile=argv[optind];
-
- if (argc-optind==2)
- outFile=argv[optind+1];
- else
- outFile = "";
- wav_format = strlen(outFile)>=4 && (
- strcmp(outFile+strlen(outFile)-4,".wav")==0
- || strcmp(outFile+strlen(outFile)-4,".WAV")==0);
- /*Open input file*/
- if (strcmp(inFile, "-")==0)
- {
-#if defined WIN32 || defined _WIN32
- _setmode(_fileno(stdin), _O_BINARY);
-#endif
- fin=stdin;
- }
- else
- {
- fin = fopen(inFile, "rb");
- if (!fin)
- {
- perror(inFile);
- exit(1);
- }
- close_in=1;
- }
-
-
- /*Init Ogg data struct*/
- ogg_sync_init(&oy);
-
- speex_bits_init(&bits);
- /*Main decoding loop*/
-
- while (1)
- {
- char *data;
- int i, j, nb_read;
- /*Get the ogg buffer for writing*/
- data = ogg_sync_buffer(&oy, 200);
- /*Read bitstream from input file*/
- nb_read = fread(data, sizeof(char), 200, fin);
- ogg_sync_wrote(&oy, nb_read);
-
- /*Loop for all complete pages we got (most likely only one)*/
- while (ogg_sync_pageout(&oy, &og)==1)
- {
- int packet_no;
- if (stream_init == 0) {
- ogg_stream_init(&os, ogg_page_serialno(&og));
- stream_init = 1;
- }
- if (ogg_page_serialno(&og) != os.serialno) {
- /* so all streams are read. */
- ogg_stream_reset_serialno(&os, ogg_page_serialno(&og));
- }
- /*Add page to the bitstream*/
- ogg_stream_pagein(&os, &og);
- page_granule = ogg_page_granulepos(&og);
- page_nb_packets = ogg_page_packets(&og);
- if (page_granule>0 && frame_size)
- {
- /* FIXME: shift the granule values if --force-* is specified */
- skip_samples = frame_size*(page_nb_packets*granule_frame_size*nframes - (page_granule-last_granule))/granule_frame_size;
- if (ogg_page_eos(&og))
- skip_samples = -skip_samples;
- /*else if (!ogg_page_bos(&og))
- skip_samples = 0;*/
- } else
- {
- skip_samples = 0;
- }
- /*printf ("page granulepos: %d %d %d\n", skip_samples, page_nb_packets, (int)page_granule);*/
- last_granule = page_granule;
- /*Extract all available packets*/
- packet_no=0;
- while (!eos && ogg_stream_packetout(&os, &op) == 1)
- {
- if (!memcmp(op.packet, "Speex", 5)) {
- speex_serialno = os.serialno;
- }
- if (speex_serialno == -1 || os.serialno != speex_serialno)
- break;
- /*If first packet, process as Speex header*/
- if (packet_count==0)
- {
- st = process_header(&op, enh_enabled, &frame_size, &granule_frame_size, &rate, &nframes, forceMode, &channels, &stereo, &extra_headers, quiet);
- if (!st)
- exit(1);
- speex_decoder_ctl(st, SPEEX_GET_LOOKAHEAD, &lookahead);
- if (!nframes)
- nframes=1;
- fout = out_file_open(outFile, rate, &channels);
-
- } else if (packet_count==1)
- {
- if (!quiet)
- print_comments((char*)op.packet, op.bytes);
- } else if (packet_count<=1+extra_headers)
- {
- /* Ignore extra headers */
- } else {
- int lost=0;
- packet_no++;
- if (loss_percent>0 && 100*((float)rand())/RAND_MAX<loss_percent)
- lost=1;
-
- /*End of stream condition*/
- if (op.e_o_s && os.serialno == speex_serialno) /* don't care for anything except speex eos */
- eos=1;
-
- /*Copy Ogg packet to Speex bitstream*/
- speex_bits_read_from(&bits, (char*)op.packet, op.bytes);
- for (j=0;j!=nframes;j++)
- {
- int ret;
- /*Decode frame*/
- if (!lost)
- ret = speex_decode_int(st, &bits, output);
- else
- ret = speex_decode_int(st, NULL, output);
-
- /*for (i=0;i<frame_size*channels;i++)
- printf ("%d\n", (int)output[i]);*/
-
- if (ret==-1)
- break;
- if (ret==-2)
- {
- fprintf (stderr, "Decoding error: corrupted stream?\n");
- break;
- }
- if (speex_bits_remaining(&bits)<0)
- {
- fprintf (stderr, "Decoding overflow: corrupted stream?\n");
- break;
- }
- if (channels==2)
- speex_decode_stereo_int(output, frame_size, &stereo);
-
- if (print_bitrate) {
- spx_int32_t tmp;
- char ch=13;
- speex_decoder_ctl(st, SPEEX_GET_BITRATE, &tmp);
- fputc (ch, stderr);
- fprintf (stderr, "Bitrate is use: %d bps ", tmp);
- }
- /*Convert to short and save to output file*/
- if (strlen(outFile)!=0)
- {
- for (i=0;i<frame_size*channels;i++)
- out[i]=le_short(output[i]);
- } else {
- for (i=0;i<frame_size*channels;i++)
- out[i]=output[i];
- }
- {
- int frame_offset = 0;
- int new_frame_size = frame_size;
- /*printf ("packet %d %d\n", packet_no, skip_samples);*/
- /*fprintf (stderr, "packet %d %d %d\n", packet_no, skip_samples, lookahead);*/
- if (packet_no == 1 && j==0 && skip_samples > 0)
- {
- /*printf ("chopping first packet\n");*/
- new_frame_size -= skip_samples+lookahead;
- frame_offset = skip_samples+lookahead;
- }
- if (packet_no == page_nb_packets && skip_samples < 0)
- {
- int packet_length = nframes*frame_size+skip_samples+lookahead;
- new_frame_size = packet_length - j*frame_size;
- if (new_frame_size<0)
- new_frame_size = 0;
- if (new_frame_size>frame_size)
- new_frame_size = frame_size;
- /*printf ("chopping end: %d %d %d\n", new_frame_size, packet_length, packet_no);*/
- }
- if (new_frame_size>0)
- {
-#if defined WIN32 || defined _WIN32
- if (strlen(outFile)==0)
- WIN_Play_Samples (out+frame_offset*channels, sizeof(short) * new_frame_size*channels);
- else
-#endif
- fwrite(out+frame_offset*channels, sizeof(short), new_frame_size*channels, fout);
-
- audio_size+=sizeof(short)*new_frame_size*channels;
- }
- }
- }
- }
- packet_count++;
- }
- }
- if (feof(fin))
- break;
-
- }
-
- if (fout && wav_format)
- {
- if (fseek(fout,4,SEEK_SET)==0)
- {
- int tmp;
- tmp = le_int(audio_size+36);
- fwrite(&tmp,4,1,fout);
- if (fseek(fout,32,SEEK_CUR)==0)
- {
- tmp = le_int(audio_size);
- fwrite(&tmp,4,1,fout);
- } else
- {
- fprintf (stderr, "First seek worked, second didn't\n");
- }
- } else {
- fprintf (stderr, "Cannot seek on wave file, size will be incorrect\n");
- }
- }
-
- if (st)
- speex_decoder_destroy(st);
- else
- {
- fprintf (stderr, "This doesn't look like a Speex file\n");
- }
- speex_bits_destroy(&bits);
- if (stream_init)
- ogg_stream_clear(&os);
- ogg_sync_clear(&oy);
-
-#if defined WIN32 || defined _WIN32
- if (strlen(outFile)==0)
- WIN_Audio_close ();
-#endif
-
- if (close_in)
- fclose(fin);
- if (fout != NULL)
- fclose(fout);
-
- return 0;
-}
diff --git a/3rdparty/speex/src/speexenc.1 b/3rdparty/speex/src/speexenc.1
deleted file mode 100644
index d7411615..00000000
--- a/3rdparty/speex/src/speexenc.1
+++ /dev/null
@@ -1,105 +0,0 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29.
-.TH SPEEXENC "1" "September 2003" "speexenc version 1.1" "User Commands"
-.SH NAME
-speexenc \- manual page for speexenc version 1.1
-.SH SYNOPSIS
-.B speexenc
-[\fIoptions\fR] \fIinput_file output_file\fR
-.SH DESCRIPTION
-Encodes input_file using Speex. It can read the WAV or raw files.
-.SS "input_file can be:"
-.TP
-filename.wav
-wav file
-.TP
-filename.*
-Raw PCM file (any extension other than .wav)
-.TP
--
-stdin
-.SS "output_file can be:"
-.TP
-filename.spx
-Speex file
-.TP
--
-stdout
-.SH OPTIONS
-.TP
-\fB\-n\fR, \fB\-\-narrowband\fR
-Narrowband (8 kHz) input file
-.TP
-\fB\-w\fR, \fB\-\-wideband\fR
-Wideband (16 kHz) input file
-.HP
-\fB\-u\fR, \fB\-\-ultra\-wideband\fR "Ultra-wideband" (32 kHz) input file
-.TP
-\fB\-\-quality\fR n
-Encoding quality (0-10), default 8
-.TP
-\fB\-\-bitrate\fR n
-Encoding bit-rate (use bit-rate n or lower)
-.TP
-\fB\-\-vbr\fR
-Enable variable bit-rate (VBR)
-.TP
-\fB\-\-abr\fR rate
-Enable average bit-rate (ABR) at rate bps
-.TP
-\fB\-\-vad\fR
-Enable voice activity detection (VAD)
-.TP
-\fB\-\-dtx\fR
-Enable file-based discontinuous transmission (DTX)
-.TP
-\fB\-\-comp\fR n
-Set encoding complexity (0-10), default 3
-.TP
-\fB\-\-nframes\fR n
-Number of frames per Ogg packet (1-10), default 1
-.TP
-\fB\-\-comment\fR
-Add the given string as an extra comment. This may be
-used multiple times
-.TP
-\fB\-\-author\fR
-Author of this track
-.TP
-\fB\-\-title\fR
-Title for this track
-.TP
-\fB\-h\fR, \fB\-\-help\fR
-This help
-.TP
-\fB\-v\fR, \fB\-\-version\fR
-Version information
-.TP
-\fB\-V\fR
-Verbose mode (show bit-rate)
-.SS "Raw input options:"
-.TP
-\fB\-\-rate\fR n
-Sampling rate for raw input
-.TP
-\fB\-\-stereo\fR
-Consider raw input as stereo
-.TP
-\fB\-\-le\fR
-Raw input is little-endian
-.TP
-\fB\-\-be\fR
-Raw input is big-endian
-.TP
-\fB\-\-8bit\fR
-Raw input is 8-bit unsigned
-.TP
-\fB\-\-16bit\fR
-Raw input is 16-bit signed
-.PP
-Default raw PCM input is 16-bit, little-endian, mono
-.PP
-More information is available from the Speex site: http://www.speex.org
-.PP
-Please report bugs to the mailing list `speex-dev@xiph.org'.
-.SH COPYRIGHT
-Copyright \(co 2002 Jean-Marc Valin
diff --git a/3rdparty/speex/src/speexenc.c b/3rdparty/speex/src/speexenc.c
deleted file mode 100644
index e251b9ba..00000000
--- a/3rdparty/speex/src/speexenc.c
+++ /dev/null
@@ -1,981 +0,0 @@
-/* Copyright (C) 2002-2006 Jean-Marc Valin
- File: speexenc.c
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdio.h>
-#if !defined WIN32 && !defined _WIN32
-#include <unistd.h>
-#include <getopt.h>
-#endif
-#ifndef HAVE_GETOPT_LONG
-#include "getopt_win.h"
-#endif
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-#include <speex/speex.h>
-#include <ogg/ogg.h>
-#include "wav_io.h"
-#include <speex/speex_header.h>
-#include <speex/speex_stereo.h>
-#include <speex/speex_preprocess.h>
-
-#if defined WIN32 || defined _WIN32
-#include "getopt_win.h"
-/* We need the following two to set stdout to binary */
-#include <io.h>
-#include <fcntl.h>
-#endif
-
-#include "skeleton.h"
-
-
-void comment_init(char **comments, int* length, char *vendor_string);
-void comment_add(char **comments, int* length, char *tag, char *val);
-
-
-/*Write an Ogg page to a file pointer*/
-int oe_write_page(ogg_page *page, FILE *fp)
-{
- int written;
- written = fwrite(page->header,1,page->header_len, fp);
- written += fwrite(page->body,1,page->body_len, fp);
-
- return written;
-}
-
-#define MAX_FRAME_SIZE 2000
-#define MAX_FRAME_BYTES 2000
-
-/* Convert input audio bits, endians and channels */
-static int read_samples(FILE *fin,int frame_size, int bits, int channels, int lsb, short * input, char *buff, spx_int32_t *size)
-{
- unsigned char in[MAX_FRAME_BYTES*2];
- int i;
- short *s;
- int nb_read;
-
- if (size && *size<=0)
- {
- return 0;
- }
- /*Read input audio*/
- if (size)
- *size -= bits/8*channels*frame_size;
- if (buff)
- {
- for (i=0;i<12;i++)
- in[i]=buff[i];
- nb_read = fread(in+12,1,bits/8*channels*frame_size-12, fin) + 12;
- if (size)
- *size += 12;
- } else {
- nb_read = fread(in,1,bits/8*channels* frame_size, fin);
- }
- nb_read /= bits/8*channels;
-
- /*fprintf (stderr, "%d\n", nb_read);*/
- if (nb_read==0)
- return 0;
-
- s=(short*)in;
- if(bits==8)
- {
- /* Convert 8->16 bits */
- for(i=frame_size*channels-1;i>=0;i--)
- {
- s[i]=(in[i]<<8)^0x8000;
- }
- } else
- {
- /* convert to our endian format */
- for(i=0;i<frame_size*channels;i++)
- {
- if(lsb)
- s[i]=le_short(s[i]);
- else
- s[i]=be_short(s[i]);
- }
- }
-
- /* FIXME: This is probably redundent now */
- /* copy to float input buffer */
- for (i=0;i<frame_size*channels;i++)
- {
- input[i]=(short)s[i];
- }
-
- for (i=nb_read*channels;i<frame_size*channels;i++)
- {
- input[i]=0;
- }
-
-
- return nb_read;
-}
-
-void add_fishead_packet (ogg_stream_state *os) {
-
- fishead_packet fp;
-
- memset(&fp, 0, sizeof(fp));
- fp.ptime_n = 0;
- fp.ptime_d = 1000;
- fp.btime_n = 0;
- fp.btime_d = 1000;
-
- add_fishead_to_stream(os, &fp);
-}
-
-/*
- * Adds the fishead packets in the skeleton output stream along with the e_o_s packet
- */
-void add_fisbone_packet (ogg_stream_state *os, spx_int32_t serialno, SpeexHeader *header) {
-
- fisbone_packet fp;
-
- memset(&fp, 0, sizeof(fp));
- fp.serial_no = serialno;
- fp.nr_header_packet = 2 + header->extra_headers;
- fp.granule_rate_n = header->rate;
- fp.granule_rate_d = 1;
- fp.start_granule = 0;
- fp.preroll = 3;
- fp.granule_shift = 0;
-
- add_message_header_field(&fp, "Content-Type", "audio/x-speex");
-
- add_fisbone_to_stream(os, &fp);
-}
-
-void version()
-{
- printf ("speexenc (Speex encoder) version " SPEEX_VERSION " (compiled " __DATE__ ")\n");
- printf ("Copyright (C) 2002-2006 Jean-Marc Valin\n");
-}
-
-void version_short()
-{
- printf ("speexenc version " SPEEX_VERSION "\n");
- printf ("Copyright (C) 2002-2006 Jean-Marc Valin\n");
-}
-
-void usage()
-{
- printf ("Usage: speexenc [options] input_file output_file\n");
- printf ("\n");
- printf ("Encodes input_file using Speex. It can read the WAV or raw files.\n");
- printf ("\n");
- printf ("input_file can be:\n");
- printf (" filename.wav wav file\n");
- printf (" filename.* Raw PCM file (any extension other than .wav)\n");
- printf (" - stdin\n");
- printf ("\n");
- printf ("output_file can be:\n");
- printf (" filename.spx Speex file\n");
- printf (" - stdout\n");
- printf ("\n");
- printf ("Options:\n");
- printf (" -n, --narrowband Narrowband (8 kHz) input file\n");
- printf (" -w, --wideband Wideband (16 kHz) input file\n");
- printf (" -u, --ultra-wideband \"Ultra-wideband\" (32 kHz) input file\n");
- printf (" --quality n Encoding quality (0-10), default 8\n");
- printf (" --bitrate n Encoding bit-rate (use bit-rate n or lower)\n");
- printf (" --vbr Enable variable bit-rate (VBR)\n");
- printf (" --vbr-max-bitrate Set max VBR bit-rate allowed\n");
- printf (" --abr rate Enable average bit-rate (ABR) at rate bps\n");
- printf (" --vad Enable voice activity detection (VAD)\n");
- printf (" --dtx Enable file-based discontinuous transmission (DTX)\n");
- printf (" --comp n Set encoding complexity (0-10), default 3\n");
- printf (" --nframes n Number of frames per Ogg packet (1-10), default 1\n");
- printf (" --denoise Denoise the input before encoding\n");
- printf (" --agc Apply adaptive gain control (AGC) before encoding\n");
- printf (" --skeleton Outputs ogg skeleton metadata (may cause incompatibilities)\n");
- printf (" --comment Add the given string as an extra comment. This may be\n");
- printf (" used multiple times\n");
- printf (" --author Author of this track\n");
- printf (" --title Title for this track\n");
- printf (" -h, --help This help\n");
- printf (" -v, --version Version information\n");
- printf (" -V Verbose mode (show bit-rate)\n");
- printf ("Raw input options:\n");
- printf (" --rate n Sampling rate for raw input\n");
- printf (" --stereo Consider raw input as stereo\n");
- printf (" --le Raw input is little-endian\n");
- printf (" --be Raw input is big-endian\n");
- printf (" --8bit Raw input is 8-bit unsigned\n");
- printf (" --16bit Raw input is 16-bit signed\n");
- printf ("Default raw PCM input is 16-bit, little-endian, mono\n");
- printf ("\n");
- printf ("More information is available from the Speex site: http://www.speex.org\n");
- printf ("\n");
- printf ("Please report bugs to the mailing list `speex-dev@xiph.org'.\n");
-}
-
-
-int main(int argc, char **argv)
-{
- int nb_samples, total_samples=0, nb_encoded;
- int c;
- int option_index = 0;
- char *inFile, *outFile;
- FILE *fin, *fout;
- short input[MAX_FRAME_SIZE];
- spx_int32_t frame_size;
- int quiet=0;
- spx_int32_t vbr_enabled=0;
- spx_int32_t vbr_max=0;
- int abr_enabled=0;
- spx_int32_t vad_enabled=0;
- spx_int32_t dtx_enabled=0;
- int nbBytes;
- const SpeexMode *mode=NULL;
- int modeID = -1;
- void *st;
- SpeexBits bits;
- char cbits[MAX_FRAME_BYTES];
- int with_skeleton = 0;
- struct option long_options[] =
- {
- {"wideband", no_argument, NULL, 0},
- {"ultra-wideband", no_argument, NULL, 0},
- {"narrowband", no_argument, NULL, 0},
- {"vbr", no_argument, NULL, 0},
- {"vbr-max-bitrate", required_argument, NULL, 0},
- {"abr", required_argument, NULL, 0},
- {"vad", no_argument, NULL, 0},
- {"dtx", no_argument, NULL, 0},
- {"quality", required_argument, NULL, 0},
- {"bitrate", required_argument, NULL, 0},
- {"nframes", required_argument, NULL, 0},
- {"comp", required_argument, NULL, 0},
- {"denoise", no_argument, NULL, 0},
- {"agc", no_argument, NULL, 0},
- {"skeleton",no_argument,NULL, 0},
- {"help", no_argument, NULL, 0},
- {"quiet", no_argument, NULL, 0},
- {"le", no_argument, NULL, 0},
- {"be", no_argument, NULL, 0},
- {"8bit", no_argument, NULL, 0},
- {"16bit", no_argument, NULL, 0},
- {"stereo", no_argument, NULL, 0},
- {"rate", required_argument, NULL, 0},
- {"version", no_argument, NULL, 0},
- {"version-short", no_argument, NULL, 0},
- {"comment", required_argument, NULL, 0},
- {"author", required_argument, NULL, 0},
- {"title", required_argument, NULL, 0},
- {0, 0, 0, 0}
- };
- int print_bitrate=0;
- spx_int32_t rate=0;
- spx_int32_t size;
- int chan=1;
- int fmt=16;
- spx_int32_t quality=-1;
- float vbr_quality=-1;
- int lsb=1;
- ogg_stream_state os;
- ogg_stream_state so; /* ogg stream for skeleton bitstream */
- ogg_page og;
- ogg_packet op;
- int bytes_written=0, ret, result;
- int id=-1;
- SpeexHeader header;
- int nframes=1;
- spx_int32_t complexity=3;
- char *vendor_string = "Encoded with Speex " SPEEX_VERSION;
- char *comments;
- int comments_length;
- int close_in=0, close_out=0;
- int eos=0;
- spx_int32_t bitrate=0;
- double cumul_bits=0, enc_frames=0;
- char first_bytes[12];
- int wave_input=0;
- spx_int32_t tmp;
- SpeexPreprocessState *preprocess = NULL;
- int denoise_enabled=0, agc_enabled=0;
- spx_int32_t lookahead = 0;
-
- comment_init(&comments, &comments_length, vendor_string);
-
- /*Process command-line options*/
- while(1)
- {
- c = getopt_long (argc, argv, "nwuhvV",
- long_options, &option_index);
- if (c==-1)
- break;
-
- switch(c)
- {
- case 0:
- if (strcmp(long_options[option_index].name,"narrowband")==0)
- {
- modeID = SPEEX_MODEID_NB;
- } else if (strcmp(long_options[option_index].name,"wideband")==0)
- {
- modeID = SPEEX_MODEID_WB;
- } else if (strcmp(long_options[option_index].name,"ultra-wideband")==0)
- {
- modeID = SPEEX_MODEID_UWB;
- } else if (strcmp(long_options[option_index].name,"vbr")==0)
- {
- vbr_enabled=1;
- } else if (strcmp(long_options[option_index].name,"vbr-max-bitrate")==0)
- {
- vbr_max=atoi(optarg);
- if (vbr_max<1)
- {
- fprintf (stderr, "Invalid VBR max bit-rate value: %d\n", vbr_max);
- exit(1);
- }
- } else if (strcmp(long_options[option_index].name,"abr")==0)
- {
- abr_enabled=atoi(optarg);
- if (!abr_enabled)
- {
- fprintf (stderr, "Invalid ABR value: %d\n", abr_enabled);
- exit(1);
- }
- } else if (strcmp(long_options[option_index].name,"vad")==0)
- {
- vad_enabled=1;
- } else if (strcmp(long_options[option_index].name,"dtx")==0)
- {
- dtx_enabled=1;
- } else if (strcmp(long_options[option_index].name,"quality")==0)
- {
- quality = atoi (optarg);
- vbr_quality=atof(optarg);
- } else if (strcmp(long_options[option_index].name,"bitrate")==0)
- {
- bitrate = atoi (optarg);
- } else if (strcmp(long_options[option_index].name,"nframes")==0)
- {
- nframes = atoi (optarg);
- if (nframes<1)
- nframes=1;
- if (nframes>10)
- nframes=10;
- } else if (strcmp(long_options[option_index].name,"comp")==0)
- {
- complexity = atoi (optarg);
- } else if (strcmp(long_options[option_index].name,"denoise")==0)
- {
- denoise_enabled=1;
- } else if (strcmp(long_options[option_index].name,"agc")==0)
- {
- agc_enabled=1;
- } else if (strcmp(long_options[option_index].name,"skeleton")==0)
- {
- with_skeleton=1;
- } else if (strcmp(long_options[option_index].name,"help")==0)
- {
- usage();
- exit(0);
- } else if (strcmp(long_options[option_index].name,"quiet")==0)
- {
- quiet = 1;
- } else if (strcmp(long_options[option_index].name,"version")==0)
- {
- version();
- exit(0);
- } else if (strcmp(long_options[option_index].name,"version-short")==0)
- {
- version_short();
- exit(0);
- } else if (strcmp(long_options[option_index].name,"le")==0)
- {
- lsb=1;
- } else if (strcmp(long_options[option_index].name,"be")==0)
- {
- lsb=0;
- } else if (strcmp(long_options[option_index].name,"8bit")==0)
- {
- fmt=8;
- } else if (strcmp(long_options[option_index].name,"16bit")==0)
- {
- fmt=16;
- } else if (strcmp(long_options[option_index].name,"stereo")==0)
- {
- chan=2;
- } else if (strcmp(long_options[option_index].name,"rate")==0)
- {
- rate=atoi (optarg);
- } else if (strcmp(long_options[option_index].name,"comment")==0)
- {
- if (!strchr(optarg, '='))
- {
- fprintf (stderr, "Invalid comment: %s\n", optarg);
- fprintf (stderr, "Comments must be of the form name=value\n");
- exit(1);
- }
- comment_add(&comments, &comments_length, NULL, optarg);
- } else if (strcmp(long_options[option_index].name,"author")==0)
- {
- comment_add(&comments, &comments_length, "author=", optarg);
- } else if (strcmp(long_options[option_index].name,"title")==0)
- {
- comment_add(&comments, &comments_length, "title=", optarg);
- }
-
- break;
- case 'n':
- modeID = SPEEX_MODEID_NB;
- break;
- case 'h':
- usage();
- exit(0);
- break;
- case 'v':
- version();
- exit(0);
- break;
- case 'V':
- print_bitrate=1;
- break;
- case 'w':
- modeID = SPEEX_MODEID_WB;
- break;
- case 'u':
- modeID = SPEEX_MODEID_UWB;
- break;
- case '?':
- usage();
- exit(1);
- break;
- }
- }
- if (argc-optind!=2)
- {
- usage();
- exit(1);
- }
- inFile=argv[optind];
- outFile=argv[optind+1];
-
- /*Initialize Ogg stream struct*/
- srand(time(NULL));
- if (ogg_stream_init(&os, rand())==-1)
- {
- fprintf(stderr,"Error: stream init failed\n");
- exit(1);
- }
- if (with_skeleton && ogg_stream_init(&so, rand())==-1)
- {
- fprintf(stderr,"Error: stream init failed\n");
- exit(1);
- }
-
- if (strcmp(inFile, "-")==0)
- {
-#if defined WIN32 || defined _WIN32
- _setmode(_fileno(stdin), _O_BINARY);
-#endif
- fin=stdin;
- }
- else
- {
- fin = fopen(inFile, "rb");
- if (!fin)
- {
- perror(inFile);
- exit(1);
- }
- close_in=1;
- }
-
- {
- fread(first_bytes, 1, 12, fin);
- if (strncmp(first_bytes,"RIFF",4)==0 && strncmp(first_bytes,"RIFF",4)==0)
- {
- if (read_wav_header(fin, &rate, &chan, &fmt, &size)==-1)
- exit(1);
- wave_input=1;
- lsb=1; /* CHECK: exists big-endian .wav ?? */
- }
- }
-
- if (modeID==-1 && !rate)
- {
- /* By default, use narrowband/8 kHz */
- modeID = SPEEX_MODEID_NB;
- rate=8000;
- } else if (modeID!=-1 && rate)
- {
- mode = speex_lib_get_mode (modeID);
- if (rate>48000)
- {
- fprintf (stderr, "Error: sampling rate too high: %d Hz, try down-sampling\n", rate);
- exit(1);
- } else if (rate>25000)
- {
- if (modeID != SPEEX_MODEID_UWB)
- {
- fprintf (stderr, "Warning: Trying to encode in %s at %d Hz. I'll do it but I suggest you try ultra-wideband instead\n", mode->modeName , rate);
- }
- } else if (rate>12500)
- {
- if (modeID != SPEEX_MODEID_WB)
- {
- fprintf (stderr, "Warning: Trying to encode in %s at %d Hz. I'll do it but I suggest you try wideband instead\n", mode->modeName , rate);
- }
- } else if (rate>=6000)
- {
- if (modeID != SPEEX_MODEID_NB)
- {
- fprintf (stderr, "Warning: Trying to encode in %s at %d Hz. I'll do it but I suggest you try narrowband instead\n", mode->modeName , rate);
- }
- } else {
- fprintf (stderr, "Error: sampling rate too low: %d Hz\n", rate);
- exit(1);
- }
- } else if (modeID==-1)
- {
- if (rate>48000)
- {
- fprintf (stderr, "Error: sampling rate too high: %d Hz, try down-sampling\n", rate);
- exit(1);
- } else if (rate>25000)
- {
- modeID = SPEEX_MODEID_UWB;
- } else if (rate>12500)
- {
- modeID = SPEEX_MODEID_WB;
- } else if (rate>=6000)
- {
- modeID = SPEEX_MODEID_NB;
- } else {
- fprintf (stderr, "Error: Sampling rate too low: %d Hz\n", rate);
- exit(1);
- }
- } else if (!rate)
- {
- if (modeID == SPEEX_MODEID_NB)
- rate=8000;
- else if (modeID == SPEEX_MODEID_WB)
- rate=16000;
- else if (modeID == SPEEX_MODEID_UWB)
- rate=32000;
- }
-
- if (!quiet)
- if (rate!=8000 && rate!=16000 && rate!=32000)
- fprintf (stderr, "Warning: Speex is only optimized for 8, 16 and 32 kHz. It will still work at %d Hz but your mileage may vary\n", rate);
-
- if (!mode)
- mode = speex_lib_get_mode (modeID);
-
- speex_init_header(&header, rate, 1, mode);
- header.frames_per_packet=nframes;
- header.vbr=vbr_enabled;
- header.nb_channels = chan;
-
- {
- char *st_string="mono";
- if (chan==2)
- st_string="stereo";
- if (!quiet)
- fprintf (stderr, "Encoding %d Hz audio using %s mode (%s)\n",
- header.rate, mode->modeName, st_string);
- }
- /*fprintf (stderr, "Encoding %d Hz audio at %d bps using %s mode\n",
- header.rate, mode->bitrate, mode->modeName);*/
-
- /*Initialize Speex encoder*/
- st = speex_encoder_init(mode);
-
- if (strcmp(outFile,"-")==0)
- {
-#if defined WIN32 || defined _WIN32
- _setmode(_fileno(stdout), _O_BINARY);
-#endif
- fout=stdout;
- }
- else
- {
- fout = fopen(outFile, "wb");
- if (!fout)
- {
- perror(outFile);
- exit(1);
- }
- close_out=1;
- }
-
- speex_encoder_ctl(st, SPEEX_GET_FRAME_SIZE, &frame_size);
- speex_encoder_ctl(st, SPEEX_SET_COMPLEXITY, &complexity);
- speex_encoder_ctl(st, SPEEX_SET_SAMPLING_RATE, &rate);
-
- if (quality >= 0)
- {
- if (vbr_enabled)
- {
- if (vbr_max>0)
- speex_encoder_ctl(st, SPEEX_SET_VBR_MAX_BITRATE, &vbr_max);
- speex_encoder_ctl(st, SPEEX_SET_VBR_QUALITY, &vbr_quality);
- }
- else
- speex_encoder_ctl(st, SPEEX_SET_QUALITY, &quality);
- }
- if (bitrate)
- {
- if (quality >= 0 && vbr_enabled)
- fprintf (stderr, "Warning: --bitrate option is overriding --quality\n");
- speex_encoder_ctl(st, SPEEX_SET_BITRATE, &bitrate);
- }
- if (vbr_enabled)
- {
- tmp=1;
- speex_encoder_ctl(st, SPEEX_SET_VBR, &tmp);
- } else if (vad_enabled)
- {
- tmp=1;
- speex_encoder_ctl(st, SPEEX_SET_VAD, &tmp);
- }
- if (dtx_enabled)
- speex_encoder_ctl(st, SPEEX_SET_DTX, &tmp);
- if (dtx_enabled && !(vbr_enabled || abr_enabled || vad_enabled))
- {
- fprintf (stderr, "Warning: --dtx is useless without --vad, --vbr or --abr\n");
- } else if ((vbr_enabled || abr_enabled) && (vad_enabled))
- {
- fprintf (stderr, "Warning: --vad is already implied by --vbr or --abr\n");
- }
- if (with_skeleton) {
- fprintf (stderr, "Warning: Enabling skeleton output may cause some decoders to fail.\n");
- }
-
- if (abr_enabled)
- {
- speex_encoder_ctl(st, SPEEX_SET_ABR, &abr_enabled);
- }
-
- speex_encoder_ctl(st, SPEEX_GET_LOOKAHEAD, &lookahead);
-
- if (denoise_enabled || agc_enabled)
- {
- preprocess = speex_preprocess_state_init(frame_size, rate);
- speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_SET_DENOISE, &denoise_enabled);
- speex_preprocess_ctl(preprocess, SPEEX_PREPROCESS_SET_AGC, &agc_enabled);
- lookahead += frame_size;
- }
-
- /* first packet should be the skeleton header. */
-
- if (with_skeleton) {
- add_fishead_packet(&so);
- if ((ret = flush_ogg_stream_to_file(&so, fout))) {
- fprintf (stderr,"Error: failed skeleton (fishead) header to output stream\n");
- exit(1);
- } else
- bytes_written += ret;
- }
-
- /*Write header*/
- {
- int packet_size;
- op.packet = (unsigned char *)speex_header_to_packet(&header, &packet_size);
- op.bytes = packet_size;
- op.b_o_s = 1;
- op.e_o_s = 0;
- op.granulepos = 0;
- op.packetno = 0;
- ogg_stream_packetin(&os, &op);
- free(op.packet);
-
- while((result = ogg_stream_flush(&os, &og)))
- {
- if(!result) break;
- ret = oe_write_page(&og, fout);
- if(ret != og.header_len + og.body_len)
- {
- fprintf (stderr,"Error: failed writing header to output stream\n");
- exit(1);
- }
- else
- bytes_written += ret;
- }
-
- op.packet = (unsigned char *)comments;
- op.bytes = comments_length;
- op.b_o_s = 0;
- op.e_o_s = 0;
- op.granulepos = 0;
- op.packetno = 1;
- ogg_stream_packetin(&os, &op);
- }
-
- /* fisbone packet should be write after all bos pages */
- if (with_skeleton) {
- add_fisbone_packet(&so, os.serialno, &header);
- if ((ret = flush_ogg_stream_to_file(&so, fout))) {
- fprintf (stderr,"Error: failed writing skeleton (fisbone )header to output stream\n");
- exit(1);
- } else
- bytes_written += ret;
- }
-
- /* writing the rest of the speex header packets */
- while((result = ogg_stream_flush(&os, &og)))
- {
- if(!result) break;
- ret = oe_write_page(&og, fout);
- if(ret != og.header_len + og.body_len)
- {
- fprintf (stderr,"Error: failed writing header to output stream\n");
- exit(1);
- }
- else
- bytes_written += ret;
- }
-
- free(comments);
-
- /* write the skeleton eos packet */
- if (with_skeleton) {
- add_eos_packet_to_stream(&so);
- if ((ret = flush_ogg_stream_to_file(&so, fout))) {
- fprintf (stderr,"Error: failed writing skeleton header to output stream\n");
- exit(1);
- } else
- bytes_written += ret;
- }
-
-
- speex_bits_init(&bits);
-
- if (!wave_input)
- {
- nb_samples = read_samples(fin,frame_size,fmt,chan,lsb,input, first_bytes, NULL);
- } else {
- nb_samples = read_samples(fin,frame_size,fmt,chan,lsb,input, NULL, &size);
- }
- if (nb_samples==0)
- eos=1;
- total_samples += nb_samples;
- nb_encoded = -lookahead;
- /*Main encoding loop (one frame per iteration)*/
- while (!eos || total_samples>nb_encoded)
- {
- id++;
- /*Encode current frame*/
- if (chan==2)
- speex_encode_stereo_int(input, frame_size, &bits);
-
- if (preprocess)
- speex_preprocess(preprocess, input, NULL);
-
- speex_encode_int(st, input, &bits);
-
- nb_encoded += frame_size;
- if (print_bitrate) {
- int tmp;
- char ch=13;
- speex_encoder_ctl(st, SPEEX_GET_BITRATE, &tmp);
- fputc (ch, stderr);
- cumul_bits += tmp;
- enc_frames += 1;
- if (!quiet)
- {
- if (vad_enabled || vbr_enabled || abr_enabled)
- fprintf (stderr, "Bitrate is use: %d bps (average %d bps) ", tmp, (int)(cumul_bits/enc_frames));
- else
- fprintf (stderr, "Bitrate is use: %d bps ", tmp);
- }
-
- }
-
- if (wave_input)
- {
- nb_samples = read_samples(fin,frame_size,fmt,chan,lsb,input, NULL, &size);
- } else {
- nb_samples = read_samples(fin,frame_size,fmt,chan,lsb,input, NULL, NULL);
- }
- if (nb_samples==0)
- {
- eos=1;
- }
- if (eos && total_samples<=nb_encoded)
- op.e_o_s = 1;
- else
- op.e_o_s = 0;
- total_samples += nb_samples;
-
- if ((id+1)%nframes!=0)
- continue;
- speex_bits_insert_terminator(&bits);
- nbBytes = speex_bits_write(&bits, cbits, MAX_FRAME_BYTES);
- speex_bits_reset(&bits);
- op.packet = (unsigned char *)cbits;
- op.bytes = nbBytes;
- op.b_o_s = 0;
- /*Is this redundent?*/
- if (eos && total_samples<=nb_encoded)
- op.e_o_s = 1;
- else
- op.e_o_s = 0;
- op.granulepos = (id+1)*frame_size-lookahead;
- if (op.granulepos>total_samples)
- op.granulepos = total_samples;
- /*printf ("granulepos: %d %d %d %d %d %d\n", (int)op.granulepos, id, nframes, lookahead, 5, 6);*/
- op.packetno = 2+id/nframes;
- ogg_stream_packetin(&os, &op);
-
- /*Write all new pages (most likely 0 or 1)*/
- while (ogg_stream_pageout(&os,&og))
- {
- ret = oe_write_page(&og, fout);
- if(ret != og.header_len + og.body_len)
- {
- fprintf (stderr,"Error: failed writing header to output stream\n");
- exit(1);
- }
- else
- bytes_written += ret;
- }
- }
- if ((id+1)%nframes!=0)
- {
- while ((id+1)%nframes!=0)
- {
- id++;
- speex_bits_pack(&bits, 15, 5);
- }
- nbBytes = speex_bits_write(&bits, cbits, MAX_FRAME_BYTES);
- op.packet = (unsigned char *)cbits;
- op.bytes = nbBytes;
- op.b_o_s = 0;
- op.e_o_s = 1;
- op.granulepos = (id+1)*frame_size-lookahead;
- if (op.granulepos>total_samples)
- op.granulepos = total_samples;
-
- op.packetno = 2+id/nframes;
- ogg_stream_packetin(&os, &op);
- }
- /*Flush all pages left to be written*/
- while (ogg_stream_flush(&os, &og))
- {
- ret = oe_write_page(&og, fout);
- if(ret != og.header_len + og.body_len)
- {
- fprintf (stderr,"Error: failed writing header to output stream\n");
- exit(1);
- }
- else
- bytes_written += ret;
- }
-
- speex_encoder_destroy(st);
- speex_bits_destroy(&bits);
- ogg_stream_clear(&os);
-
- if (close_in)
- fclose(fin);
- if (close_out)
- fclose(fout);
- return 0;
-}
-
-/*
- Comments will be stored in the Vorbis style.
- It is describled in the "Structure" section of
- http://www.xiph.org/ogg/vorbis/doc/v-comment.html
-
-The comment header is decoded as follows:
- 1) [vendor_length] = read an unsigned integer of 32 bits
- 2) [vendor_string] = read a UTF-8 vector as [vendor_length] octets
- 3) [user_comment_list_length] = read an unsigned integer of 32 bits
- 4) iterate [user_comment_list_length] times {
- 5) [length] = read an unsigned integer of 32 bits
- 6) this iteration's user comment = read a UTF-8 vector as [length] octets
- }
- 7) [framing_bit] = read a single bit as boolean
- 8) if ( [framing_bit] unset or end of packet ) then ERROR
- 9) done.
-
- If you have troubles, please write to ymnk@jcraft.com.
- */
-
-#define readint(buf, base) (((buf[base+3]<<24)&0xff000000)| \
- ((buf[base+2]<<16)&0xff0000)| \
- ((buf[base+1]<<8)&0xff00)| \
- (buf[base]&0xff))
-#define writeint(buf, base, val) do{ buf[base+3]=((val)>>24)&0xff; \
- buf[base+2]=((val)>>16)&0xff; \
- buf[base+1]=((val)>>8)&0xff; \
- buf[base]=(val)&0xff; \
- }while(0)
-
-void comment_init(char **comments, int* length, char *vendor_string)
-{
- int vendor_length=strlen(vendor_string);
- int user_comment_list_length=0;
- int len=4+vendor_length+4;
- char *p=(char*)malloc(len);
- if(p==NULL){
- }
- writeint(p, 0, vendor_length);
- memcpy(p+4, vendor_string, vendor_length);
- writeint(p, 4+vendor_length, user_comment_list_length);
- *length=len;
- *comments=p;
-}
-void comment_add(char **comments, int* length, char *tag, char *val)
-{
- char* p=*comments;
- int vendor_length=readint(p, 0);
- int user_comment_list_length=readint(p, 4+vendor_length);
- int tag_len=(tag?strlen(tag):0);
- int val_len=strlen(val);
- int len=(*length)+4+tag_len+val_len;
-
- p=(char*)realloc(p, len);
- if(p==NULL){
- }
-
- writeint(p, *length, tag_len+val_len); /* length of comment */
- if(tag) memcpy(p+*length+4, tag, tag_len); /* comment */
- memcpy(p+*length+4+tag_len, val, val_len); /* comment */
- writeint(p, 4+vendor_length, user_comment_list_length+1);
-
- *comments=p;
- *length=len;
-}
-#undef readint
-#undef writeint
diff --git a/3rdparty/speex/src/wav_io.c b/3rdparty/speex/src/wav_io.c
deleted file mode 100644
index a68a91a6..00000000
--- a/3rdparty/speex/src/wav_io.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: wav_io.c
- Routines to handle wav (RIFF) headers
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include "speex/speex_types.h"
-
-static spx_uint32_t le_int(spx_uint32_t i)
-{
- spx_uint32_t ret=i;
-#ifdef WORDS_BIGENDIAN
- ret = i>>24;
- ret += (i>>8)&0x0000ff00;
- ret += (i<<8)&0x00ff0000;
- ret += (i<<24);
-#endif
- return ret;
-}
-
-unsigned short be_short(unsigned short s)
-{
- unsigned short ret=s;
-#ifndef WORDS_BIGENDIAN
- ret = s>>8;
- ret += s<<8;
-#endif
- return ret;
-}
-
-unsigned short le_short(unsigned short s)
-{
- unsigned short ret=s;
-#ifdef WORDS_BIGENDIAN
- ret = s>>8;
- ret += s<<8;
-#endif
- return ret;
-}
-
-
-int read_wav_header(FILE *file, int *rate, int *channels, int *format, spx_int32_t *size)
-{
- char ch[5];
- spx_int32_t itmp;
- spx_int16_t stmp;
- spx_int32_t bpersec;
- spx_int16_t balign;
- int skip_bytes;
- int i;
-
- ch[4]=0;
-#if 0
- fread(ch, 1, 4, file);
- if (strcmp(ch, "RIFF")!=0)
- {
- fseek(file, 0, SEEK_SET);
- return 0;
- }
-
- fread(&itmp, 4, 1, file);
- *size = le_int(itmp-36);
-
- fread(ch, 1, 4, file);
- if (strcmp(ch, "WAVE")!=0)
- {
- fprintf (stderr, "RIFF file is not a WAVE file\n");
- return -1;
- }
-#endif
- fread(ch, 1, 4, file);
- while (strcmp(ch, "fmt ")!=0)
- {
- fread(&itmp, 4, 1, file);
- itmp = le_int(itmp);
- /*fprintf (stderr, "skip=%d\n", itmp);*/
- /*strange way of seeking, but it works even for pipes*/
- for (i=0;i<itmp;i++)
- fgetc(file);
- /*fseek(file, itmp, SEEK_CUR);*/
- fread(ch, 1, 4, file);
- if (feof(file))
- {
- fprintf (stderr, "Corrupted WAVE file: no \"fmt \"\n");
- return -1;
- }
- }
- /*if (strcmp(ch, "fmt ")!=0)
- {
- fprintf (stderr, "Corrupted WAVE file: no \"fmt \"\n");
- return -1;
- }*/
-
- fread(&itmp, 4, 1, file);
- itmp = le_int(itmp);
- skip_bytes=itmp-16;
- /*fprintf (stderr, "skip=%d\n", skip_bytes);*/
-
- fread(&stmp, 2, 1, file);
- stmp = le_short(stmp);
- if (stmp!=1)
- {
- fprintf (stderr, "Only PCM encoding is supported\n");
- return -1;
- }
-
- fread(&stmp, 2, 1, file);
- stmp = le_short(stmp);
- *channels = stmp;
-
- if (stmp>2)
- {
- fprintf (stderr, "Only mono and (intensity) stereo supported\n");
- return -1;
- }
-
- fread(&itmp, 4, 1, file);
- itmp = le_int(itmp);
- *rate = itmp;
- if (*rate != 8000 && *rate != 16000 && *rate != 11025 && *rate != 22050 && *rate != 32000 && *rate != 44100 && *rate != 48000)
- {
- fprintf (stderr, "Only 8 kHz (narrowband) and 16 kHz (wideband) supported (plus 11.025 kHz and 22.05 kHz, but your mileage may vary)\n");
- return -1;
- }
-
- fread(&itmp, 4, 1, file);
- bpersec = le_int(itmp);
-
- fread(&stmp, 2, 1, file);
- balign = le_short(stmp);
-
- fread(&stmp, 2, 1, file);
- stmp = le_short(stmp);
- if (stmp!=16 && stmp!=8)
- {
- fprintf (stderr, "Only 8/16-bit linear supported\n");
- return -1;
- }
- *format=stmp;
-
- if (bpersec!=*rate**channels*stmp/8)
- {
- fprintf (stderr, "Corrupted header: ByteRate mismatch\n");
- return -1;
- }
-
- if (balign!=*channels*stmp/8)
- {
- fprintf (stderr, "Corrupted header: BlockAlign mismatch\n");
- return -1;
- }
-
-
- /*strange way of seeking, but it works even for pipes*/
- if (skip_bytes>0)
- for (i=0;i<skip_bytes;i++)
- fgetc(file);
-
- /*fseek(file, skip_bytes, SEEK_CUR);*/
-
- fread(ch, 1, 4, file);
- while (strcmp(ch, "data")!=0)
- {
- fread(&itmp, 4, 1, file);
- itmp = le_int(itmp);
- /*strange way of seeking, but it works even for pipes*/
- for (i=0;i<itmp;i++)
- fgetc(file);
- /*fseek(file, itmp, SEEK_CUR);*/
- fread(ch, 1, 4, file);
- if (feof(file))
- {
- fprintf (stderr, "Corrupted WAVE file: no \"data\"\n");
- return -1;
- }
- }
-
- /*Ignore this for now*/
- fread(&itmp, 4, 1, file);
- itmp = le_int(itmp);
-
- *size=itmp;
-
- return 1;
-}
-
-
-
-void write_wav_header(FILE *file, int rate, int channels, int format, int size)
-{
- char ch[5];
- spx_int32_t itmp;
- spx_int16_t stmp;
-
- ch[4]=0;
-
- fprintf (file, "RIFF");
-
- itmp = 0x7fffffff;
- fwrite(&itmp, 4, 1, file);
-
- fprintf (file, "WAVEfmt ");
-
- itmp = le_int(16);
- fwrite(&itmp, 4, 1, file);
-
- stmp = le_short(1);
- fwrite(&stmp, 2, 1, file);
-
- stmp = le_short(channels);
- fwrite(&stmp, 2, 1, file);
-
- itmp = le_int(rate);
- fwrite(&itmp, 4, 1, file);
-
- itmp = le_int(rate*channels*2);
- fwrite(&itmp, 4, 1, file);
-
- stmp = le_short(2*channels);
- fwrite(&stmp, 2, 1, file);
-
- stmp = le_short(16);
- fwrite(&stmp, 2, 1, file);
-
- fprintf (file, "data");
-
- itmp = le_int(0x7fffffff);
- fwrite(&itmp, 4, 1, file);
-
-
-}
diff --git a/3rdparty/speex/src/wav_io.h b/3rdparty/speex/src/wav_io.h
deleted file mode 100644
index fa5fe7a3..00000000
--- a/3rdparty/speex/src/wav_io.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Copyright (C) 2002 Jean-Marc Valin
- File: wav_io.h
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef WAV_IO_H
-#define WAV_IO_H
-
-#include <stdio.h>
-#include "speex/speex_types.h"
-
-unsigned short be_short(unsigned short s);
-unsigned short le_short(unsigned short s);
-spx_uint32_t le_int(spx_uint32_t i);
-
-int read_wav_header(FILE *file, int *rate, int *channels, int *format, spx_int32_t *size);
-
-void write_wav_header(FILE *file, int rate, int channels, int format, int size);
-
-#endif
diff --git a/3rdparty/speex/src/wave_out.c b/3rdparty/speex/src/wave_out.c
deleted file mode 100644
index 57b57034..00000000
--- a/3rdparty/speex/src/wave_out.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/* Copyright (c) 2002, John Edwards
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-/* Set TABS = 4 */
-/********************************************************************
-
- function: To provide playback of 16 bit PCM wave data in Win32
- environments from decoded compressed files.
-
- ********************************************************************/
-
-#if defined WIN32 || defined _WIN32
-
-#include <string.h>
-#include <errno.h>
-#include "wave_out.h"
-
-#define MAXWAVESIZE 4294967040LU
-#define MAX_WAVEBLOCKS 32
-
-// This is modified for USE_WIN_AUDIO - ONLY 2002-02-27
-
-
-static CRITICAL_SECTION cs;
-static HWAVEOUT dev = NULL;
-static int ScheduledBlocks = 0;
-static int PlayedWaveHeadersCount = 0; // free index
-static WAVEHDR* PlayedWaveHeaders [MAX_WAVEBLOCKS];
-
-static int
-Box ( const char* msg )
-{
- MessageBox ( NULL, msg, " "VERSION_STRING": Error Message . . .", MB_OK | MB_ICONEXCLAMATION );
- return -1;
-}
-
-
-/*
- * This function registers already played WAVE chunks. Freeing is done by free_memory(),
- */
-
-static void CALLBACK
-wave_callback ( HWAVE hWave, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2 )
-{
- if ( uMsg == WOM_DONE ) {
- EnterCriticalSection ( &cs );
- PlayedWaveHeaders [PlayedWaveHeadersCount++] = (WAVEHDR*) dwParam1;
- LeaveCriticalSection ( &cs );
- }
-}
-
-
-static void
-free_memory ( void )
-{
- WAVEHDR* wh;
- HGLOBAL hg;
-
- EnterCriticalSection ( &cs );
- wh = PlayedWaveHeaders [--PlayedWaveHeadersCount];
- ScheduledBlocks--; // decrease the number of USED blocks
- LeaveCriticalSection ( &cs );
-
- waveOutUnprepareHeader ( dev, wh, sizeof (WAVEHDR) );
-
- hg = GlobalHandle ( wh -> lpData ); // Deallocate the buffer memory
- GlobalUnlock (hg);
- GlobalFree (hg);
-
- hg = GlobalHandle ( wh ); // Deallocate the header memory
- GlobalUnlock (hg);
- GlobalFree (hg);
-}
-
-
-Int
-Set_WIN_Params ( FILE_T dummyFile ,
- Ldouble SampleFreq,
- Uint BitsPerSample,
- Uint Channels )
-{
- WAVEFORMATEX outFormat;
- UINT deviceID = WAVE_MAPPER;
-
- (void) dummyFile;
-
- if ( waveOutGetNumDevs () == 0 )
- return Box ( "No audio device present." );
-
- outFormat.wFormatTag = WAVE_FORMAT_PCM;
- outFormat.wBitsPerSample = BitsPerSample;
- outFormat.nChannels = Channels;
- outFormat.nSamplesPerSec = (unsigned long)(SampleFreq + 0.5);
- outFormat.nBlockAlign = (outFormat.wBitsPerSample + 7) / 8 * outFormat.nChannels;
- outFormat.nAvgBytesPerSec = outFormat.nSamplesPerSec * outFormat.nBlockAlign;
-
- switch ( waveOutOpen ( &dev, deviceID, &outFormat, (DWORD)wave_callback, 0, CALLBACK_FUNCTION ) )
- {
- case MMSYSERR_ALLOCATED: return Box ( "Device is already open." );
- case MMSYSERR_BADDEVICEID: return Box ( "The specified device is out of range." );
- case MMSYSERR_NODRIVER: return Box ( "There is no audio driver in this system." );
- case MMSYSERR_NOMEM: return Box ( "Unable to allocate sound memory." );
- case WAVERR_BADFORMAT: return Box ( "This audio format is not supported." );
- case WAVERR_SYNC: return Box ( "The device is synchronous." );
- default: return Box ( "Unknown media error." );
- case MMSYSERR_NOERROR: break;
- }
-
- waveOutReset ( dev );
- InitializeCriticalSection ( &cs );
- SetPriorityClass ( GetCurrentProcess (), HIGH_PRIORITY_CLASS );
- return 0;
-}
-
-
-int
-WIN_Play_Samples ( const void* data, size_t len )
-{
- HGLOBAL hg;
- HGLOBAL hg2;
- LPWAVEHDR wh;
- void* allocptr;
-
- do {
- while ( PlayedWaveHeadersCount > 0 ) // free used blocks ...
- free_memory ();
-
- if ( ScheduledBlocks < sizeof(PlayedWaveHeaders)/sizeof(*PlayedWaveHeaders) ) // wait for a free block ...
- break;
- Sleep (26);
- } while (1);
-
- if ( (hg2 = GlobalAlloc ( GMEM_MOVEABLE, len )) == NULL ) // allocate some memory for a copy of the buffer
- return Box ( "GlobalAlloc failed." );
-
- allocptr = GlobalLock (hg2);
- CopyMemory ( allocptr, data, len ); // Here we can call any modification output functions we want....
-
- if ( (hg = GlobalAlloc (GMEM_MOVEABLE | GMEM_ZEROINIT, sizeof (WAVEHDR))) == NULL ) // now make a header and WRITE IT!
- return -1;
-
- wh = GlobalLock (hg);
- wh -> dwBufferLength = len;
- wh -> lpData = allocptr;
-
- if ( waveOutPrepareHeader ( dev, wh, sizeof (WAVEHDR)) != MMSYSERR_NOERROR ) {
- GlobalUnlock (hg);
- GlobalFree (hg);
- return -1;
- }
-
- if ( waveOutWrite ( dev, wh, sizeof (WAVEHDR)) != MMSYSERR_NOERROR ) {
- GlobalUnlock (hg);
- GlobalFree (hg);
- return -1;
- }
-
- EnterCriticalSection ( &cs );
- ScheduledBlocks++;
- LeaveCriticalSection ( &cs );
-
- return len;
-}
-
-
-int
-WIN_Audio_close ( void )
-{
- if ( dev != NULL ) {
-
- while ( ScheduledBlocks > 0 ) {
- Sleep (ScheduledBlocks);
- while ( PlayedWaveHeadersCount > 0 ) // free used blocks ...
- free_memory ();
- }
-
- waveOutReset (dev); // reset the device
- waveOutClose (dev); // close the device
- dev = NULL;
- }
-
- DeleteCriticalSection ( &cs );
- ScheduledBlocks = 0;
- return 0;
-}
-
-#endif
-
-/* end of wave_out.c */
diff --git a/3rdparty/speex/src/wave_out.h b/3rdparty/speex/src/wave_out.h
deleted file mode 100644
index a4aa3c18..00000000
--- a/3rdparty/speex/src/wave_out.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Copyright (c) 2002, John Edwards
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-// WAVE_OUT.H - Necessary stuff for WIN_AUDIO
-
-#ifndef WAVE_OUT_H
-#define WAVE_OUT_H
-
-#include <stdio.h>
-#include <windows.h>
-#ifdef __MINGW32__
-#include <mmsystem.h>
-#endif
-
-#define VERSION_STRING "\n 0.7.0\n"
-
-#define Cdecl __cdecl
-#define __attribute__(x)
-#define sleep(__sec) Sleep ((__sec) * 1000)
-#define inline __inline
-#define restrict
-
-//// constants /////////////////////////////////////////////////////
-
-#define CD_SAMPLE_FREQ 44.1e3
-#define SAMPLE_SIZE 16
-#define SAMPLE_SIZE_STRING ""
-#define WINAUDIO_FD ((FILE_T)-128)
-#define FILE_T FILE*
-#define INVALID_FILEDESC NULL
-
-//// Simple types //////////////////////////////////////////////////
-
-typedef signed int Int; // at least -32767...+32767, fast type
-typedef unsigned int Uint; // at least 0...65535, fast type
-typedef long double Ldouble; // most exact floating point format
-
-//// procedures/functions //////////////////////////////////////////
-// wave_out.c
-Int Set_WIN_Params ( FILE_T dummyFile , Ldouble SampleFreq, Uint BitsPerSample, Uint Channels);
-int WIN_Play_Samples ( const void* buff, size_t len );
-int WIN_Audio_close ( void );
-
-#endif /* WAVE_OUT_H */
diff --git a/3rdparty/speex/symbian/Makefile.am b/3rdparty/speex/symbian/Makefile.am
deleted file mode 100644
index 6cdaf24b..00000000
--- a/3rdparty/speex/symbian/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-EXTRA_DIST = bld.inf config.h speex.mmp
diff --git a/3rdparty/speex/symbian/bld.inf b/3rdparty/speex/symbian/bld.inf
deleted file mode 100644
index f03a333d..00000000
--- a/3rdparty/speex/symbian/bld.inf
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- Copyright (C) 2003 Commonwealth Scientific and Industrial Research
- Organisation (CSIRO) Australia
-
- 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 CSIRO Australia 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 ORGANISATION 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.
-*/
-
-PRJ_EXPORTS
-
-..\include\speex\speex_bits.h \epoc32\include\speex\speex_bits.h
-..\include\speex\speex_callbacks.h \epoc32\include\speex\speex_callbacks.h
-..\include\speex\speex_config_types.h \epoc32\include\speex\speex_config_types.h
-..\include\speex\speex_echo.h \epoc32\include\speex\speex_echo.h
-..\include\speex\speex.h \epoc32\include\speex\speex.h
-..\include\speex\speex_header.h \epoc32\include\speex\speex_header.h
-..\include\speex\speex_jitter.h \epoc32\include\speex\speex_jitter.h
-..\include\speex\speex_preprocess.h \epoc32\include\speex\speex_preprocess.h
-..\include\speex\speex_stereo.h \epoc32\include\speex\speex_stereo.h
-..\include\speex\speex_types.h \epoc32\include\speex\speex_types.h
-
-
-PRJ_MMPFILES
-
-speex.mmp
diff --git a/3rdparty/speex/symbian/config.h b/3rdparty/speex/symbian/config.h
deleted file mode 100644
index beca08b7..00000000
--- a/3rdparty/speex/symbian/config.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- Copyright (C) 2003 Commonwealth Scientific and Industrial Research
- Organisation (CSIRO) Australia
-
- 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 CSIRO Australia 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 ORGANISATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef CONFIG_H
-#define CONFIG_H
-
-/* An inline macro is required for use of the inline keyword as not all C compilers support */
-/* inline. It is officially C99 and C++ only */
-
-#ifdef __WINS__
-
-#define inline __inline
-
-/* Disable some pointless/stupid warnings */
-
-#pragma warning(disable: 4100) /* unreferenced formal parameter */
-#pragma warning(disable: 4127) /* conditional expression is constant */
-#pragma warning(disable: 4305) /* truncation from '...' to '...' */
-#pragma warning(disable: 4244) /* conversion from '...' to '...', possible loss of data */
-#pragma warning(disable: 4701) /* local variable may be be used without having been initialized */
-
-#endif /* ! __WINS__ */
-
-/* Use only fixed point arithmetic */
-
-#define FIXED_POINT 1
-
-#endif /* ! CONFIG_H */
diff --git a/3rdparty/speex/symbian/speex.mmp b/3rdparty/speex/symbian/speex.mmp
deleted file mode 100644
index 67b096e1..00000000
--- a/3rdparty/speex/symbian/speex.mmp
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- Copyright (C) 2003 Commonwealth Scientific and Industrial Research
- Organisation (CSIRO) Australia
-
- 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 CSIRO Australia 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 ORGANISATION 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.
-*/
-
-TARGET speex.lib
-TARGETTYPE lib
-UID 0
-MACRO HAVE_CONFIG_H
-SOURCEPATH ..\libspeex
-SOURCE bits.c cb_search.c exc_5_64_table.c exc_5_256_table.c exc_8_128_table.c
-SOURCE exc_10_16_table.c exc_10_32_table.c exc_20_32_table.c fftwrap.c kiss_fft.c kiss_fftr.c filterbank.c filters.c gain_table.c
-SOURCE gain_table_lbr.c hexc_10_32_table.c hexc_table.c high_lsp_tables.c jitter.c
-SOURCE lbr_48k_tables.c lpc.c lsp.c lsp_tables_nb.c ltp.c math_approx.c mdf.c misc.c
-SOURCE modes.c nb_celp.c preprocess.c quant_lsp.c sb_celp.c smallft.c
-SOURCE speex.c speex_callbacks.c speex_header.c stereo.c vbr.c vq.c window.c
-USERINCLUDE . ..\include\speex
-SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\include
diff --git a/3rdparty/speex/ti/Makefile.am b/3rdparty/speex/ti/Makefile.am
deleted file mode 100644
index 0b3bc68b..00000000
--- a/3rdparty/speex/ti/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-SUBDIRS = speex_C54_test speex_C55_test speex_C64_test
-
-EXTRA_DIST = config.h testenc-TI-C5x.c user_misc.h testenc-TI-C64x.c
-
diff --git a/3rdparty/speex/ti/config.h b/3rdparty/speex/ti/config.h
deleted file mode 100644
index 1d6d65b0..00000000
--- a/3rdparty/speex/ti/config.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Copyright (C) 2005 Psi Systems, Inc.
- File: config.h
- Main Speex option include file for TI C64xx, C54xx and C55xx processors
- for use with TI Code Composer (TM) DSP development tools.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#define FIXED_POINT
-#define FRAME_SIZE 160
-#define DISABLE_WIDEBAND
-
-/* Allow for 2 20ms narrowband blocks per frame, plus a couple of bytes */
-#define MAX_CHARS_PER_FRAME (42/BYTES_PER_CHAR)
-
-/* for debug */
-#undef DECODE_ONLY
-
-/* EITHER Allocate from fixed array (C heap not used) */
-/* Enable VERBOSE_ALLOC to see how much is used */
-#define MANUAL_ALLOC
-#define USER_MISC
-#define VERBOSE_ALLOC
-/* OR Use CALLOC (heap size must be increased in linker command file) */
-//#undef MANUAL_ALLOC
-//#undef USER_MISC
-
-#if defined (CONFIG_TI_C54X) || defined (CONFIG_TI_C55X)
-//#define PRECISION16
-
-// These values determined by analysis for 8kbps narrowband
-#define SPEEXENC_PERSIST_STACK_SIZE 5000
-#define SPEEXENC_SCRATCH_STACK_SIZE 3000
-#define SPEEXDEC_PERSIST_STACK_SIZE 2500
-#define SPEEXDEC_SCRATCH_STACK_SIZE 1000
-#else /* C6X */
-#define NO_LONGLONG
-
-#define SPEEXENC_PERSIST_STACK_SIZE 10000
-#define SPEEXENC_SCRATCH_STACK_SIZE 6000
-#define SPEEXDEC_PERSIST_STACK_SIZE 5000
-#define SPEEXDEC_SCRATCH_STACK_SIZE 2000
-#endif
-#define SPEEX_PERSIST_STACK_SIZE (SPEEXENC_PERSIST_STACK_SIZE + SPEEXDEC_PERSIST_STACK_SIZE)
-#define SPEEX_SCRATCH_STACK_SIZE SPEEXENC_SCRATCH_STACK_SIZE
-#define NB_ENC_STACK SPEEXENC_SCRATCH_STACK_SIZE
-#define NB_DEC_STACK SPEEXDEC_SCRATCH_STACK_SIZE
-
diff --git a/3rdparty/speex/ti/speex_C54_test/Makefile.am b/3rdparty/speex/ti/speex_C54_test/Makefile.am
deleted file mode 100644
index f7b10bc4..00000000
--- a/3rdparty/speex/ti/speex_C54_test/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-EXTRA_DIST = speex_C54_test.cmd speex_C54_test.pjt
-
-
diff --git a/3rdparty/speex/ti/speex_C54_test/speex_C54_test.cmd b/3rdparty/speex/ti/speex_C54_test/speex_C54_test.cmd
deleted file mode 100644
index 4dd4c18e..00000000
--- a/3rdparty/speex/ti/speex_C54_test/speex_C54_test.cmd
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Copyright (C) 2005 Psi Systems, Inc.
- File: speex_C54_test.cmd
- Linker command file with memory allocation for TI TMS320VC5416 processor
- for use with TI Code Composer (TM) DSP development tools.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
--c
--stack 0x2000
--heap 0x1000 /* If private memory allocation is used for Speex */
-/*-heap 0x6000 /* If calloc is used for Speex */
--lrts_ext.lib
-
-MEMORY
-{
-/* PAGE 0: P_DARAM03: origin = 0x80, len = 0x7f00*/
- PAGE 0: P_DARAM03: origin = 0x5000, len = 0x2f80
- PAGE 0: VECT: origin = 0x7f80, len = 0x80
- PAGE 0: P_DARAM47: origin = 0x18000, len = 0x8000
- PAGE 0: SARAM03: origin = 0x28000, len = 0x8000
- PAGE 0: SARAM47: origin = 0x38000, len = 0x8000
-
- PAGE 1: USERREGS: origin = 0x60, len = 0x1a
- PAGE 1: BIOSREGS: origin = 0x7c, len = 0x4
- PAGE 1: CSLREGS: origin = 0x7a, len = 0x2
- D_DARAM03: origin = 0x80, len = 0x4f80
- D_DARAM47: origin = 0x8000, len = 0x8000
-}
-
-SECTIONS
-{
- .vectors: {} > VECT PAGE 0
- .bootmem: {rts_ext.lib (.text)} > P_DARAM03 PAGE 0
-/* .bootmem: {} > P_DARAM03 PAGE 0 */
- .text: {} > SARAM03 PAGE 0
- .cinit: {} > SARAM03 PAGE 0
- .switch: {} > SARAM03 PAGE 0
- .bss: {} > D_DARAM03 | D_DARAM47 PAGE 1
- .far: {} > D_DARAM03 | D_DARAM47 PAGE 1
- .const: {} > D_DARAM03 | D_DARAM47 PAGE 1
- .sysmem: {} > D_DARAM47 PAGE 1
- .cio: {} > D_DARAM03 | D_DARAM47 PAGE 1
- .stack: {} > D_DARAM03 | D_DARAM47 PAGE 1
- .myheap: {} > D_DARAM47 PAGE 1
-}
diff --git a/3rdparty/speex/ti/speex_C54_test/speex_C54_test.pjt b/3rdparty/speex/ti/speex_C54_test/speex_C54_test.pjt
deleted file mode 100644
index c7f646d4..00000000
--- a/3rdparty/speex/ti/speex_C54_test/speex_C54_test.pjt
+++ /dev/null
@@ -1,61 +0,0 @@
-; Code Composer Project File, Version 2.0 (do not modify or remove this line)
-
-[Project Settings]
-ProjectDir="C:\speex_11234\ti\speex_C54_test\"
-ProjectType=Executable
-CPUFamily=TMS320C54XX
-Tool="Compiler"
-Tool="CustomBuilder"
-Tool="DspBiosBuilder"
-Tool="Linker"
-Config="Debug"
-Config="Release"
-
-[Source Files]
-Source="..\..\libspeex\bits.c"
-Source="..\..\libspeex\cb_search.c"
-Source="..\..\libspeex\exc_10_16_table.c"
-Source="..\..\libspeex\exc_10_32_table.c"
-Source="..\..\libspeex\exc_20_32_table.c"
-Source="..\..\libspeex\exc_5_256_table.c"
-Source="..\..\libspeex\exc_5_64_table.c"
-Source="..\..\libspeex\exc_8_128_table.c"
-Source="..\..\libspeex\filters.c"
-Source="..\..\libspeex\gain_table.c"
-Source="..\..\libspeex\gain_table_lbr.c"
-Source="..\..\libspeex\lpc.c"
-Source="..\..\libspeex\lsp.c"
-Source="..\..\libspeex\lsp_tables_nb.c"
-Source="..\..\libspeex\ltp.c"
-Source="..\..\libspeex\math_approx.c"
-Source="..\..\libspeex\misc.c"
-Source="..\..\libspeex\modes.c"
-Source="..\..\libspeex\nb_celp.c"
-Source="..\..\libspeex\quant_lsp.c"
-Source="..\..\libspeex\sb_celp.c"
-Source="..\..\libspeex\speex.c"
-Source="..\..\libspeex\speex_callbacks.c"
-Source="..\..\libspeex\vbr.c"
-Source="..\..\libspeex\vq.c"
-Source="..\..\libspeex\window.c"
-Source="..\..\ti\testenc-TI-C5x.c"
-Source="speex_C54_test.cmd"
-
-["Compiler" Settings: "Debug"]
-Options=-g -q -o3 -fr"..\ti\speex_C54_test\Debug" -i"..\ti" -i"..\include" -d"_DEBUG" -d"CONFIG_TI_C54X" -d"HAVE_CONFIG_H" -d"NO_LONGLONG" -mf -ms
-
-["Compiler" Settings: "Release"]
-Options=-q -o2 -fr"..\ti\speex_C54_test\Release" -i"..\ti" -i"..\include" -d"CONFIG_TI_C54X" -d"HAVE_CONFIG_H" -d"NO_LONGLONG" -mf -ms
-
-["DspBiosBuilder" Settings: "Debug"]
-Options=-v54
-
-["DspBiosBuilder" Settings: "Release"]
-Options=-v54
-
-["Linker" Settings: "Debug"]
-Options=-q -c -heap4096 -m".\Debug\speex_C54_test.map" -o".\Debug\speex_C54_test.out" -stack4096 -w -x
-
-["Linker" Settings: "Release"]
-Options=-q -c -m".\Release\speex_C54_test.map" -o".\Release\speex_C54_test.out" -w -x
-
diff --git a/3rdparty/speex/ti/speex_C55_test/Makefile.am b/3rdparty/speex/ti/speex_C55_test/Makefile.am
deleted file mode 100644
index 6c89ed7c..00000000
--- a/3rdparty/speex/ti/speex_C55_test/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-EXTRA_DIST = speex_C55_test.cmd speex_C55_test.pjt
diff --git a/3rdparty/speex/ti/speex_C55_test/speex_C55_test.cmd b/3rdparty/speex/ti/speex_C55_test/speex_C55_test.cmd
deleted file mode 100644
index 36e79237..00000000
--- a/3rdparty/speex/ti/speex_C55_test/speex_C55_test.cmd
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Copyright (C) 2005 Psi Systems, Inc.
- File: speex_C55_test.cmd
- Linker command file with memory allocation for TI TMS320VC5509A processor
- for use with TI Code Composer (TM) DSP development tools.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
--c
--stack 0x1c00
--heap 0x1000 /* If private memory allocation is used for Speex */
-/*-heap 0x6000 / * If calloc is used for Speex */
--sysstack 0x200
--lrts55.lib
-
-MEMORY
-{
- DARAM: origin = 0x200, len = 0x7e00
- DARAM_B: origin = 0x8000, len = 0x8000
- VECT: origin = 0x100, len = 0x100
- SARAM_A: origin = 0x10000, len = 0x10000
- SARAM_B: origin = 0x20000, len = 0x20000
-}
-
-SECTIONS
-{
- .vectors: {} > VECT
- .bootmem: {} > DARAM
- .text: {} > SARAM_B
- .cinit: {} > SARAM_B
- .switch: {} > SARAM_B
- .bss: {} > DARAM
-/* .far: {} > DARAM*/
- .const: {} > DARAM
- .sysmem: {} > DARAM_B
- .cio: {} > DARAM
- .stack: {} > DARAM
- .sysstack: {} > DARAM
- .myheap: {} > SARAM_A
-}
diff --git a/3rdparty/speex/ti/speex_C55_test/speex_C55_test.pjt b/3rdparty/speex/ti/speex_C55_test/speex_C55_test.pjt
deleted file mode 100644
index b03504f0..00000000
--- a/3rdparty/speex/ti/speex_C55_test/speex_C55_test.pjt
+++ /dev/null
@@ -1,61 +0,0 @@
-; Code Composer Project File, Version 2.0 (do not modify or remove this line)
-
-[Project Settings]
-ProjectDir="C:\speex_11234\ti\speex_C55_test\"
-ProjectType=Executable
-CPUFamily=TMS320C55XX
-Tool="Compiler"
-Tool="CustomBuilder"
-Tool="DspBiosBuilder"
-Tool="Linker"
-Config="Debug"
-Config="Release"
-
-[Source Files]
-Source="..\..\libspeex\bits.c"
-Source="..\..\libspeex\cb_search.c"
-Source="..\..\libspeex\exc_10_16_table.c"
-Source="..\..\libspeex\exc_10_32_table.c"
-Source="..\..\libspeex\exc_20_32_table.c"
-Source="..\..\libspeex\exc_5_256_table.c"
-Source="..\..\libspeex\exc_5_64_table.c"
-Source="..\..\libspeex\exc_8_128_table.c"
-Source="..\..\libspeex\filters.c"
-Source="..\..\libspeex\gain_table.c"
-Source="..\..\libspeex\gain_table_lbr.c"
-Source="..\..\libspeex\lpc.c"
-Source="..\..\libspeex\lsp.c"
-Source="..\..\libspeex\lsp_tables_nb.c"
-Source="..\..\libspeex\ltp.c"
-Source="..\..\libspeex\math_approx.c"
-Source="..\..\libspeex\misc.c"
-Source="..\..\libspeex\modes.c"
-Source="..\..\libspeex\nb_celp.c"
-Source="..\..\libspeex\quant_lsp.c"
-Source="..\..\libspeex\sb_celp.c"
-Source="..\..\libspeex\speex.c"
-Source="..\..\libspeex\speex_callbacks.c"
-Source="..\..\libspeex\vbr.c"
-Source="..\..\libspeex\vq.c"
-Source="..\..\libspeex\window.c"
-Source="..\..\ti\testenc-TI-C5x.c"
-Source="speex_C55_test.cmd"
-
-["Compiler" Settings: "Debug"]
-Options=-g -q -o3 -fr"..\ti\speex_C55_test\Debug" -i"..\ti" -i"..\include" -d"_DEBUG" -d"CONFIG_TI_C55X" -d"HAVE_CONFIG_H" -mn
-
-["Compiler" Settings: "Release"]
-Options=-q -o2 -fr"..\ti\speex_C55_test\Release" -i"..\ti" -i"..\include" -d"CONFIG_TI_C55X" -d"HAVE_CONFIG_H" -mn
-
-["DspBiosBuilder" Settings: "Debug"]
-Options=-v55
-
-["DspBiosBuilder" Settings: "Release"]
-Options=-v55
-
-["Linker" Settings: "Debug"]
-Options=-q -c -m".\Debug\speex_C55_test.map" -o".\Debug\speex_C55_test.out" -w -x
-
-["Linker" Settings: "Release"]
-Options=-q -c -m".\Release\speex_C55_test.map" -o".\Release\speex_C55_test.out" -w -x
-
diff --git a/3rdparty/speex/ti/speex_C64_test/Makefile.am b/3rdparty/speex/ti/speex_C64_test/Makefile.am
deleted file mode 100644
index 14ea2baa..00000000
--- a/3rdparty/speex/ti/speex_C64_test/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-EXTRA_DIST = speex_C64_test.cmd speex_C64_test.pjt
diff --git a/3rdparty/speex/ti/speex_C64_test/speex_C64_test.cmd b/3rdparty/speex/ti/speex_C64_test/speex_C64_test.cmd
deleted file mode 100644
index 545e7b49..00000000
--- a/3rdparty/speex/ti/speex_C64_test/speex_C64_test.cmd
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Copyright (C) 2005 Psi Systems, Inc.
- File: speex_C64_test.cmd
- Linker command file with memory allocation for TI TMS320C6415 processor
- for use with TI Code Composer (TM) DSP development tools.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
--stack 0x10000
--heap 0x10000
-
-
-MEMORY
-{
- VECRAM : origin = 0x0, len = 0x200
- IPRAM : origin = 0x200, len = 0x40000
- IDRAM : origin = 0x80000, len = 0x70000
-}
-
-SECTIONS
-{
- .vectors > VECRAM
- .text > IPRAM
-
- .bss > IDRAM
- .cinit > IDRAM
- .const > IDRAM
- .far > IDRAM
- .stack > IDRAM
- .cio > IDRAM
- .sysmem > IDRAM
- .switch > IDRAM
- .myheap > IDRAM
-}
diff --git a/3rdparty/speex/ti/speex_C64_test/speex_C64_test.pjt b/3rdparty/speex/ti/speex_C64_test/speex_C64_test.pjt
deleted file mode 100644
index 899f6e33..00000000
--- a/3rdparty/speex/ti/speex_C64_test/speex_C64_test.pjt
+++ /dev/null
@@ -1,62 +0,0 @@
-; Code Composer Project File, Version 2.0 (do not modify or remove this line)
-
-[Project Settings]
-ProjectDir="C:\speex_11234\ti\speex_C64_test\"
-ProjectType=Executable
-CPUFamily=TMS320C64XX
-Tool="Compiler"
-Tool="CustomBuilder"
-Tool="DspBiosBuilder"
-Tool="Linker"
-Config="Debug"
-Config="Release"
-
-[Source Files]
-Source="..\..\..\CCStudio_v3.1\C6000\cgtools\lib\rts6400.lib"
-Source="..\..\libspeex\bits.c"
-Source="..\..\libspeex\cb_search.c"
-Source="..\..\libspeex\exc_10_16_table.c"
-Source="..\..\libspeex\exc_10_32_table.c"
-Source="..\..\libspeex\exc_20_32_table.c"
-Source="..\..\libspeex\exc_5_256_table.c"
-Source="..\..\libspeex\exc_5_64_table.c"
-Source="..\..\libspeex\exc_8_128_table.c"
-Source="..\..\libspeex\filters.c"
-Source="..\..\libspeex\gain_table.c"
-Source="..\..\libspeex\gain_table_lbr.c"
-Source="..\..\libspeex\lpc.c"
-Source="..\..\libspeex\lsp.c"
-Source="..\..\libspeex\lsp_tables_nb.c"
-Source="..\..\libspeex\ltp.c"
-Source="..\..\libspeex\math_approx.c"
-Source="..\..\libspeex\misc.c"
-Source="..\..\libspeex\modes.c"
-Source="..\..\libspeex\nb_celp.c"
-Source="..\..\libspeex\quant_lsp.c"
-Source="..\..\libspeex\sb_celp.c"
-Source="..\..\libspeex\speex.c"
-Source="..\..\libspeex\speex_callbacks.c"
-Source="..\..\libspeex\vbr.c"
-Source="..\..\libspeex\vq.c"
-Source="..\..\libspeex\window.c"
-Source="..\testenc-TI-C64x.c"
-Source="speex_C64_test.cmd"
-
-["Compiler" Settings: "Debug"]
-Options=-g -o3 -fr"$(Proj_dir)\Debug" -i"..\ti" -i"..\include" -d"_DEBUG" -d"CONFIG_TI_C6X" -d"HAVE_CONFIG_H" -mv6400
-
-["Compiler" Settings: "Release"]
-Options=-o3 -fr"$(Proj_dir)\Release" -i"..\ti" -i"..\include" -d"HAVE_CONFIG_H" -mv6400
-
-["DspBiosBuilder" Settings: "Debug"]
-Options=-v6x
-
-["DspBiosBuilder" Settings: "Release"]
-Options=-v6x
-
-["Linker" Settings: "Debug"]
-Options=-c -m".\Debug\speex_C64_test.map" -o".\Debug\speex_C64_test.out" -w -x
-
-["Linker" Settings: "Release"]
-Options=-c -m".\Release\speex_C64_test.map" -o".\Release\speex_C64_test.out" -w -x
-
diff --git a/3rdparty/speex/ti/testenc-TI-C5x.c b/3rdparty/speex/ti/testenc-TI-C5x.c
deleted file mode 100644
index fe8be68d..00000000
--- a/3rdparty/speex/ti/testenc-TI-C5x.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/* Copyright (C) 2005 Psi Systems, Inc.
- File: testenc-TI-C5x.c
- Encoder/Decoder Loop Main file for TI C54xx and C55xx processors
- for use with TI Code Composer (TM) DSP development tools.
- Modified from speexlib/testenc.c
-
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/* Modified from speexlib/testenc.c for Code Composer simulator */
-
-#include <speex/speex.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <speex/speex_callbacks.h>
-#include <..\libspeex\arch.h>
-
-#undef DECODE_ONLY
-#define CHECK_RESULT /* Compares original file with encoded/decoder file */
-#define TESTENC_BYTES_PER_FRAME 20 /* 8kbps */
-#define TESTENC_QUALITY 4 /* 8kbps */
-//#define TESTENC_BYTES_PER_FRAME 28 /* 11kbps */
-//#define TESTENC_QUALITY 5 /* 11 kbps */
-
-/* For narrowband, QUALITY maps to these bit rates (see modes.c, manual.pdf)
- * {1, 8, 2, 3, 3, 4, 4, 5, 5, 6, 7}
- * 0 -> 2150
- * 1 -> 3950
- * 2 -> 5950
- * 3 -> 8000
- * 4 -> 8000
- * 5 -> 11000
- * 6 -> 11000
- * 7 -> 15000
- * 8 -> 15000
- * 9 -> 18200
- *10 -> 26400 */
-
-#ifdef FIXED_DEBUG
-extern long long spx_mips;
-#endif
-#include <math.h>
-
-#ifdef MANUAL_ALLOC
-/* Take all Speex space from this private heap */
-/* This is useful for multichannel applications */
-#pragma DATA_SECTION(spxHeap, ".myheap");
-static char spxHeap[SPEEX_PERSIST_STACK_SIZE];
-
-#pragma DATA_SECTION(spxScratch, ".myheap");
-static char spxScratch[SPEEX_SCRATCH_STACK_SIZE];
-
-char *spxGlobalHeapPtr, *spxGlobalHeapEnd;
-char *spxGlobalScratchPtr, *spxGlobalScratchEnd;
-#endif
-
-void byte2word(short* pInBuf, short* pOutBuf, int nWords)
-{
- short *pIn, *pOut, sNext;
- int i;
-
- pIn = pInBuf;
- pOut = pOutBuf;
- for(i=0;i<nWords;i++)
- {
- sNext = *pIn++; // Get low byte
- *pOut++ = (sNext & 0x00ff) | (*pIn++ << 8); // insert high byte
- }
-}
-
-void word2byte(short* pInBuf, short* pOutBuf, int nWords)
-{
- short *pIn, *pOut;
- int i;
-
- pIn = pInBuf;
- pOut = pOutBuf;
- for(i=0;i<nWords;i++)
- {
- *pOut++ = *pIn & 0x00ff; // Get low byte
- *pOut++ = (short) ((unsigned short) *pIn++ >> 8);
- }
-}
-
-void main()
-{
- char *outFile, *bitsFile;
- FILE *fout, *fbits=NULL;
-#if !defined(DECODE_ONLY) || defined(CHECK_RESULT)
- char *inFile;
- FILE *fin;
- short in_short[FRAME_SIZE];
-#endif
- short out_short[FRAME_SIZE];
- short inout_byte[2*FRAME_SIZE];
-#ifndef DECODE_ONLY
- int nbChars;
-#endif
-#ifdef CHECK_RESULT
- float sigpow,errpow,snr, seg_snr=0;
- int snr_frames = 0;
- int i;
-#endif
- char cbits[TESTENC_BYTES_PER_FRAME/2 + 2]; /* temp store for encoded data */
- void *st;
- void *dec;
- SpeexBits bits;
- spx_int32_t tmp;
- unsigned long bitCount=0;
- spx_int32_t skip_group_delay;
- SpeexCallback callback;
-
- /* C54xx defaults to max wait states, even for parts like C5416 with
- larger internal memory. Need to force the wait state register to zero */
-
-#ifdef CONFIG_TI_C54X
- asm(" STM #0,SWWSR");
-#endif
-
-#ifdef CHECK_RESULT
- sigpow = 0;
- errpow = 0;
-#endif
-
-#ifdef MANUAL_ALLOC
- spxGlobalHeapPtr = spxHeap;
- spxGlobalHeapEnd = spxHeap + sizeof(spxHeap);
-
- spxGlobalScratchPtr = spxScratch;
- spxGlobalScratchEnd = spxScratch + sizeof(spxScratch);
-#endif
- st = speex_encoder_init(&speex_nb_mode);
-#ifdef MANUAL_ALLOC
- spxGlobalScratchPtr = spxScratch; /* Reuse scratch for decoder */
-#endif
- dec = speex_decoder_init(&speex_nb_mode);
-
- callback.callback_id = SPEEX_INBAND_CHAR;
- callback.func = speex_std_char_handler;
- callback.data = stderr;
- speex_decoder_ctl(dec, SPEEX_SET_HANDLER, &callback);
-
- callback.callback_id = SPEEX_INBAND_MODE_REQUEST;
- callback.func = speex_std_mode_request_handler;
- callback.data = st;
- speex_decoder_ctl(dec, SPEEX_SET_HANDLER, &callback);
-
- tmp=0;
- speex_decoder_ctl(dec, SPEEX_SET_ENH, &tmp);
- tmp=0;
- speex_encoder_ctl(st, SPEEX_SET_VBR, &tmp);
- tmp=TESTENC_QUALITY;
- speex_encoder_ctl(st, SPEEX_SET_QUALITY, &tmp);
- tmp=1; /* Lowest */
- speex_encoder_ctl(st, SPEEX_SET_COMPLEXITY, &tmp);
-
- speex_encoder_ctl(st, SPEEX_GET_LOOKAHEAD, &skip_group_delay);
- speex_decoder_ctl(dec, SPEEX_GET_LOOKAHEAD, &tmp);
- skip_group_delay += tmp;
- fprintf (stderr, "decoder lookahead = %d\n", skip_group_delay);
-
-#ifdef DECODE_ONLY
- bitsFile = "c:\\speextrunktest\\samples\\malebitsin.dat";
- fbits = fopen(bitsFile, "rb");
-#else
- bitsFile = "c:\\speextrunktest\\samples\\malebits5x.dat";
- fbits = fopen(bitsFile, "wb");
-#endif
-#if !defined(DECODE_ONLY) || defined(CHECK_RESULT)
- inFile = "c:\\speextrunktest\\samples\\male.snd";
- fin = fopen(inFile, "rb");
-#endif
- outFile = "c:\\speextrunktest\\samples\\maleout5x.snd";
- fout = fopen(outFile, "wb+");
-
- speex_bits_init(&bits);
-#ifndef DECODE_ONLY
- while (!feof(fin))
- {
- fread(inout_byte, 2, FRAME_SIZE, fin);
- byte2word(inout_byte, in_short, FRAME_SIZE); /* C5x has 16-bit char */
-
- if (feof(fin))
- break;
- speex_bits_reset(&bits);
-
- speex_encode_int(st, in_short, &bits);
- nbChars = speex_bits_write(&bits, cbits,
- sizeof(cbits)*BYTES_PER_CHAR) /BYTES_PER_CHAR;
- bitCount+=bits.nbBits;
-
- word2byte((short *) cbits, inout_byte, nbChars);
- fwrite(inout_byte, 2, nbChars, fbits);
- speex_bits_rewind(&bits);
-
-#else /* DECODE_ONLY */
- while (!feof(fbits))
- {
- fread(inout_byte, 1, TESTENC_BYTES_PER_FRAME, fbits);
-
- if (feof(fbits))
- break;
-
- byte2word(inout_byte, (short *)cbits, TESTENC_BYTES_PER_FRAME/2);
- speex_bits_read_from(&bits, cbits, TESTENC_BYTES_PER_FRAME);
- bitCount+=160;
-#endif
- speex_decode_int(dec, &bits, out_short);
- speex_bits_reset(&bits);
-
- word2byte(&out_short[skip_group_delay], inout_byte, FRAME_SIZE-skip_group_delay);
- fwrite(inout_byte, 2, FRAME_SIZE-skip_group_delay, fout);
- skip_group_delay = 0;
-#if 1
- fprintf (stderr, "Bits so far: %lu \n", bitCount);
-#endif
- }
- fprintf (stderr, "Total encoded size: %lu bits\n", bitCount);
- speex_encoder_destroy(st);
- speex_decoder_destroy(dec);
-
-#ifdef CHECK_RESULT
- rewind(fin);
- rewind(fout);
-
- while ( FRAME_SIZE == fread(inout_byte, 2, FRAME_SIZE, fin))
- {
- float s=0, e=0;
-
- byte2word(inout_byte, in_short, FRAME_SIZE);
- fread(inout_byte, 2, FRAME_SIZE, fout);
- byte2word(inout_byte, out_short, FRAME_SIZE);
-
- for (i=0;i<FRAME_SIZE;++i) {
- s += (float)in_short[i] * in_short[i];
- e += ((float)in_short[i]-out_short[i]) * ((float)in_short[i]-out_short[i]);
- }
- seg_snr += 10*log10((s+160)/(e+160));
- sigpow += s;
- errpow += e;
- snr_frames++;
- }
-
- snr = 10 * log10( sigpow / errpow );
- seg_snr /= snr_frames;
- fprintf(stderr,"SNR = %f\nsegmental SNR = %f\n",snr, seg_snr);
-
-#ifdef FIXED_DEBUG
- printf ("Total: %f MIPS\n", (float)(1e-6*50*spx_mips/snr_frames));
-#endif
-#endif /* CHECK_RESULT */
-#if !defined(DECODE_ONLY) || defined(CHECK_RESULT)
- fclose(fin);
-#endif
- fclose(fout);
- fclose(fbits);
-}
diff --git a/3rdparty/speex/ti/testenc-TI-C64x.c b/3rdparty/speex/ti/testenc-TI-C64x.c
deleted file mode 100644
index b30be28d..00000000
--- a/3rdparty/speex/ti/testenc-TI-C64x.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/* Copyright (C) 2005 Psi Systems, Inc.
- Author: Jean-Marc Valin
- File: testenc-TI-C64x.c
- Encoder/Decoder Loop Main file for TI TMS320C64xx processor
- for use with TI Code Composer (TM) DSP development tools.
- Modified from speexlib/testenc.c
-
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <speex/speex.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <speex/speex_callbacks.h>
-
-#undef DECODE_ONLY
-#define CHECK_RESULT /* Compares original file with encoded/decoder file */
-#define TESTENC_BYTES_PER_FRAME 20 /* 8kbps */
-#define TESTENC_QUALITY 4 /* 8kbps */
-//#define TESTENC_BYTES_PER_FRAME 28 /* 11kbps */
-//#define TESTENC_QUALITY 5 /* 11 kbps */
-
-/* For narrowband, QUALITY maps to these bit rates (see modes.c, manual.pdf)
- * {1, 8, 2, 3, 3, 4, 4, 5, 5, 6, 7}
- * 0 -> 2150
- * 1 -> 3950
- * 2 -> 5950
- * 3 -> 8000
- * 4 -> 8000
- * 5 -> 11000
- * 6 -> 11000
- * 7 -> 15000
- * 8 -> 15000
- * 9 -> 18200
- *10 -> 26400 */
-
-#ifdef FIXED_DEBUG
-extern long long spx_mips;
-#endif
-
-#ifdef MANUAL_ALLOC
-/* Take all Speex space from this private heap */
-/* This is useful for multichannel applications */
-#pragma DATA_SECTION(spxHeap, ".myheap");
-static char spxHeap[SPEEX_PERSIST_STACK_SIZE];
-
-#pragma DATA_SECTION(spxScratch, ".myheap");
-static char spxScratch[SPEEX_SCRATCH_STACK_SIZE];
-
-char *spxGlobalHeapPtr, *spxGlobalHeapEnd;
-char *spxGlobalScratchPtr, *spxGlobalScratchEnd;
-#endif /* MANUAL_ALLOC */
-
-#include <math.h>
-void main()
-{
- char *outFile, *bitsFile;
- FILE *fout, *fbits=NULL;
-#if !defined(DECODE_ONLY) || defined(CHECK_RESULT)
- char *inFile;
- FILE *fin;
- short in_short[FRAME_SIZE];
-#endif
- short out_short[FRAME_SIZE];
-#ifndef DECODE_ONLY
- int nbBits;
-#endif
-#ifdef CHECK_RESULT
- float sigpow,errpow,snr, seg_snr=0;
- int snr_frames = 0;
- int i;
-#endif
- char cbits[200];
- void *st;
- void *dec;
- SpeexBits bits;
- spx_int32_t tmp;
- unsigned long bitCount=0;
- spx_int32_t skip_group_delay;
- SpeexCallback callback;
-
-#ifdef CHECK_RESULT
- sigpow = 0;
- errpow = 0;
-#endif
-
-#ifdef MANUAL_ALLOC
- spxGlobalHeapPtr = spxHeap;
- spxGlobalHeapEnd = spxHeap + sizeof(spxHeap);
-
- spxGlobalScratchPtr = spxScratch;
- spxGlobalScratchEnd = spxScratch + sizeof(spxScratch);
-#endif
- st = speex_encoder_init(&speex_nb_mode);
-#ifdef MANUAL_ALLOC
- spxGlobalScratchPtr = spxScratch; /* Reuse scratch for decoder */
-#endif
- dec = speex_decoder_init(&speex_nb_mode);
-
- callback.callback_id = SPEEX_INBAND_CHAR;
- callback.func = speex_std_char_handler;
- callback.data = stderr;
- speex_decoder_ctl(dec, SPEEX_SET_HANDLER, &callback);
-
- callback.callback_id = SPEEX_INBAND_MODE_REQUEST;
- callback.func = speex_std_mode_request_handler;
- callback.data = st;
- speex_decoder_ctl(dec, SPEEX_SET_HANDLER, &callback);
-
- tmp=0;
- speex_decoder_ctl(dec, SPEEX_SET_ENH, &tmp);
- tmp=0;
- speex_encoder_ctl(st, SPEEX_SET_VBR, &tmp);
- tmp=TESTENC_QUALITY;
- speex_encoder_ctl(st, SPEEX_SET_QUALITY, &tmp);
- tmp=1; /* Lowest */
- speex_encoder_ctl(st, SPEEX_SET_COMPLEXITY, &tmp);
-
- speex_encoder_ctl(st, SPEEX_GET_LOOKAHEAD, &skip_group_delay);
- speex_decoder_ctl(dec, SPEEX_GET_LOOKAHEAD, &tmp);
- skip_group_delay += tmp;
- fprintf (stderr, "decoder lookahead = %d\n", skip_group_delay);
-
-#ifdef DECODE_ONLY
- bitsFile = "c:\\speextrunktest\\samples\\malebitsin.dat";
- fbits = fopen(bitsFile, "rb");
-#else
- bitsFile = "c:\\speextrunktest\\samples\\malebits6x.dat";
- fbits = fopen(bitsFile, "wb");
-#endif
-#if !defined(DECODE_ONLY) || defined(CHECK_RESULT)
- inFile = "c:\\speextrunktest\\samples\\male.snd";
- fin = fopen(inFile, "rb");
-#endif
- outFile = "c:\\speextrunktest\\samples\\maleout6x.snd";
- fout = fopen(outFile, "wb+");
-
- speex_bits_init(&bits);
-#ifndef DECODE_ONLY
- while (!feof(fin))
- {
- fread(in_short, sizeof(short), FRAME_SIZE, fin);
- if (feof(fin))
- break;
- speex_bits_reset(&bits);
-
- speex_encode_int(st, in_short, &bits);
- nbBits = speex_bits_write(&bits, cbits, 200);
- bitCount+=bits.nbBits;
-
- fwrite(cbits, 1, nbBits, fbits);
- speex_bits_rewind(&bits);
-
-#else /* DECODE_ONLY */
- while (!feof(fbits))
- {
- fread(cbits, 1, TESTENC_BYTES_PER_FRAME, fbits);
-
- if (feof(fbits))
- break;
-
- speex_bits_read_from(&bits, cbits, TESTENC_BYTES_PER_FRAME);
-// bitCount+=160; /* only correct for 8kbps, but just for the printf */
- bitCount+=bits.nbBits;
-#endif
-
- speex_decode_int(dec, &bits, out_short);
- speex_bits_reset(&bits);
-
- fwrite(&out_short[skip_group_delay], sizeof(short), FRAME_SIZE-skip_group_delay, fout);
- skip_group_delay = 0;
-#if 1
- fprintf (stderr, "Bits so far: %lu \n", bitCount);
-#endif
- }
- fprintf (stderr, "Total encoded size: %lu bits\n", bitCount);
- speex_encoder_destroy(st);
- speex_decoder_destroy(dec);
-
-#ifdef CHECK_RESULT
- rewind(fin);
- rewind(fout);
-
- while ( FRAME_SIZE == fread(in_short, sizeof(short), FRAME_SIZE, fin)
- &&
- FRAME_SIZE == fread(out_short, sizeof(short), FRAME_SIZE,fout) )
- {
- float s=0, e=0;
- for (i=0;i<FRAME_SIZE;++i) {
- s += (float)in_short[i] * in_short[i];
- e += ((float)in_short[i]-out_short[i]) * ((float)in_short[i]-out_short[i]);
- }
- seg_snr += 10*log10((s+160)/(e+160));
- sigpow += s;
- errpow += e;
- snr_frames++;
- }
-
- snr = 10 * log10( sigpow / errpow );
- seg_snr /= snr_frames;
- fprintf(stderr,"SNR = %f\nsegmental SNR = %f\n",snr, seg_snr);
-
-#ifdef FIXED_DEBUG
- printf ("Total: %f MIPS\n", (float)(1e-6*50*spx_mips/snr_frames));
-#endif
-#endif /* CHECK_RESULT */
-#if !defined(DECODE_ONLY) || defined(CHECK_RESULT)
- fclose(fin);
-#endif
- fclose(fout);
- fclose(fbits);
-}
diff --git a/3rdparty/speex/ti/user_misc.h b/3rdparty/speex/ti/user_misc.h
deleted file mode 100644
index 17964946..00000000
--- a/3rdparty/speex/ti/user_misc.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/* Copyright (C) 2005 Psi Systems, Inc.
- Author: Jean-Marc Valin
- File: user_misc.h
- Memory Allocation overrides to allow user control rather than C alloc/free.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef MANUAL_ALLOC
-
-/* To avoid changing the Speex call model, this file relies on four static variables
- The user main creates two linear buffers, and initializes spxGlobalHeap/ScratchPtr
- to point to the start of the two buffers, and initializes spxGlobalHeap/ScratchEnd
- to point to the first address following the last byte of the two buffers.
-
- This mechanism allows, for example, data caching for multichannel applications,
- where the Speex state is swapped from a large slow memory to a small fast memory
- each time the codec runs.
-
- Persistent data is allocated in spxGlobalHeap (instead of calloc), while scratch
- data is allocated in spxGlobalScratch.
-*/
-
-extern char *spxGlobalHeapPtr, *spxGlobalHeapEnd;
-extern char *spxGlobalScratchPtr, *spxGlobalScratchEnd;
-
-/* Make sure that all structures are aligned to largest type */
-#define BLOCK_MASK (sizeof(long double)-1)
-
-#define OVERRIDE_SPEEX_ALLOC
-void *speex_alloc (int size)
-{
- void *ptr;
-
- ptr = (void *) (((int)spxGlobalHeapPtr + BLOCK_MASK) & ~BLOCK_MASK); //Start on 8 boundary
-
- spxGlobalHeapPtr = (char *)((int)ptr + size); // Update pointer to next free location
-
- if (spxGlobalHeapPtr > spxGlobalHeapEnd )
- {
-#ifdef VERBOSE_ALLOC
- fprintf (stderr, "insufficient space for persistent alloc request %d bytes\n", size);
-#endif
- return 0;
- }
-
-#ifdef VERBOSE_ALLOC
- fprintf (stderr, "Persist Allocated %d chars at %x, %d remaining\n", size, ptr, ((int)spxGlobalHeapEnd - (int)spxGlobalHeapPtr));
-#endif
- memset(ptr, 0, size);
- return ptr;
-}
-
-#define OVERRIDE_SPEEX_ALLOC_SCRATCH
-void *speex_alloc_scratch (int size)
-{
- void *ptr;
-
- ptr = (void *) (((int)spxGlobalScratchPtr + BLOCK_MASK) & ~BLOCK_MASK); //Start on 8 boundary
-
- spxGlobalScratchPtr = (char *)((int)ptr + size); // Update pointer to next free location
-
- if (spxGlobalScratchPtr > spxGlobalScratchEnd )
- {
-#ifdef VERBOSE_ALLOC
- fprintf (stderr, "insufficient space for scratch alloc request %d bytes\n", size);
-#endif
- return 0;
- }
-
-#ifdef VERBOSE_ALLOC
- fprintf (stderr, "Scratch Allocated %d chars at %x, %d remaining\n", size, ptr, ((int)spxGlobalScratchEnd - (int)spxGlobalScratchPtr));
-#endif
- memset(ptr, 0, size);
- return ptr;
-}
-
-#define OVERRIDE_SPEEX_REALLOC
-void *speex_realloc (void *ptr, int size)
-{
-#ifdef VERBOSE_ALLOC
- speex_warning("realloc attempted, not allowed");
-#endif
- return 0;
-}
-
-#define OVERRIDE_SPEEX_FREE
-void speex_free (void *ptr)
-{
-#ifdef VERBOSE_ALLOC
- speex_warning("at speex_free");
-#endif
-}
-#define OVERRIDE_SPEEX_FREE_SCRATCH
-void speex_free_scratch (void *ptr)
-{
-#ifdef VERBOSE_ALLOC
- speex_warning("at speex_free_scratch");
-#endif
-}
-
-#endif /* !MANUAL_ALLOC */
diff --git a/3rdparty/speex/tmv/_kiss_fft_guts_tm.h b/3rdparty/speex/tmv/_kiss_fft_guts_tm.h
deleted file mode 100644
index 9cf28647..00000000
--- a/3rdparty/speex/tmv/_kiss_fft_guts_tm.h
+++ /dev/null
@@ -1,188 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file _kiss_fft_guts_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef _KISS_FFT_GUTS_TM_
-#define _KISS_FFT_GUTS_TM_
-
-#ifdef TM_ASM
-
-#include <ops/custom_defs.h>
-
-#ifdef FIXED_POINT
-
-#undef sround
-#define sround(x) sex16(((x) + (1<<(FRACBITS-1)) ) >> FRACBITS)
-
-#undef MIN
-#undef MAX
-#define MIN(a,b) imin(a,b)
-#define MAX(a,b) imax(a,b)
-
-#define TM_MUL(res,a,b) \
- { register int a0, a1, b0, b1; \
- \
- a0 = sex16((a)); \
- a1 = asri(16,(a)); \
- b0 = sex16((b)); \
- b1 = asri(16,(b)); \
- (res)= pack16lsb( \
- sround(ifir16((a),funshift2((b),(b)))), \
- sround(a0*b0-a1*b1)); \
- } \
-
-#define TM_ADD(res,a,b) \
- { (res)=dspidualadd((a),(b)); \
- } \
-
-#define TM_SUB(res,a,b) \
- { (res)=dspidualsub((a),(b)); \
- } \
-
-#define TM_SHR(res,a,shift) \
- { (res)=dualasr((a),(shift)); \
- } \
-
-#define TM_DIV(res,c,frac) \
- { register int c1, c0; \
- \
- c1 = asri(16,(c)); \
- c0 = sex16((c)); \
- (res) = pack16lsb(sround(c1 * (32767/(frac))), sround(c0 * (32767/(frac))));\
- } \
-
-#define TM_NEGMSB(res, a) \
- { (res) = pack16lsb((ineg(asri(16,(a)))), (a)); \
- } \
-
-#else
-
-#undef MIN
-#undef MAX
-#define MIN(a,b) fmin(a,b)
-#define MAX(a,b) fmax(a,b)
-
-#endif
-#endif
-
-#undef CHECKBUF
-#define CHECKBUF(buf,nbuf,n) \
- { \
- if ( nbuf < (size_t)(n) ) { \
- speex_free(buf); \
- buf = (kiss_fft_cpx*)KISS_FFT_MALLOC(sizeof(kiss_fft_cpx)*(n)); \
- nbuf = (size_t)(n); \
- } \
- } \
-
-#undef C_ADD
-#define C_ADD( res, a,b) \
- { \
- CHECK_OVERFLOW_OP((a).r,+,(b).r) \
- CHECK_OVERFLOW_OP((a).i,+,(b).i) \
- (res).r=(a).r+(b).r; (res).i=(a).i+(b).i; \
- } \
-
-
-#undef C_SUB
-#define C_SUB( res, a,b) \
- { \
- CHECK_OVERFLOW_OP((a).r,-,(b).r) \
- CHECK_OVERFLOW_OP((a).i,-,(b).i) \
- (res).r=(a).r-(b).r; (res).i=(a).i-(b).i; \
- } \
-
-#undef C_ADDTO
-#define C_ADDTO( res , a) \
- { \
- CHECK_OVERFLOW_OP((res).r,+,(a).r) \
- CHECK_OVERFLOW_OP((res).i,+,(a).i) \
- (res).r += (a).r; (res).i += (a).i; \
- } \
-
-#undef C_SUBFROM
-#define C_SUBFROM( res, a) \
- { \
- CHECK_OVERFLOW_OP((res).r,-,(a).r) \
- CHECK_OVERFLOW_OP((res).i,-,(a).i) \
- (res).r -= (a).r; (res).i -= (a).i; \
- } \
-
-#undef kf_cexp
-#define kf_cexp(x,phase) \
- { (x)->r = KISS_FFT_COS(phase); \
- (x)->i = KISS_FFT_SIN(phase); } \
-
-#undef kf_cexp2
-#define kf_cexp2(x,phase) \
- { (x)->r = spx_cos_norm((phase)); \
- (x)->i = spx_cos_norm((phase)-32768); } \
-
-
-#ifdef FIXED_POINT
-
-#undef C_MUL
-#define C_MUL(m,a,b) \
- { (m).r = sround( smul((a).r,(b).r) - smul((a).i,(b).i) ); \
- (m).i = sround( smul((a).r,(b).i) + smul((a).i,(b).r) ); } \
-
-#undef C_FIXDIV
-#define C_FIXDIV(c,div) \
- { DIVSCALAR( (c).r , div); \
- DIVSCALAR( (c).i , div); } \
-
-#undef C_MULBYSCALAR
-#define C_MULBYSCALAR( c, s ) \
- { (c).r = sround( smul( (c).r , s ) ) ; \
- (c).i = sround( smul( (c).i , s ) ) ; } \
-
-#else
-
-#undef C_MUL
-#define C_MUL(m,a,b) \
- { (m).r = (a).r*(b).r - (a).i*(b).i; \
- (m).i = (a).r*(b).i + (a).i*(b).r; } \
-
-
-#undef C_MULBYSCALAR
-#define C_MULBYSCALAR( c, s ) \
- { (c).r *= (s); \
- (c).i *= (s); } \
-
-
-
-#endif
-
-#endif
-
diff --git a/3rdparty/speex/tmv/cb_search_tm.h b/3rdparty/speex/tmv/cb_search_tm.h
deleted file mode 100644
index 05ec7111..00000000
--- a/3rdparty/speex/tmv/cb_search_tm.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file cb_search_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <ops/custom_defs.h>
-#include "profile_tm.h"
-
-#ifdef FIXED_POINT
-
-#define OVERRIDE_COMPUTE_WEIGHTED_CODEBOOK
-static void compute_weighted_codebook(
- const signed char * restrict shape_cb,
- const Int16 * restrict r,
- Int16 * restrict resp,
- Int16 * restrict resp2,
- Int32 * restrict E,
- int shape_cb_size, int subvect_size, char *stack)
-{
- register int i, j;
- register int quadsize;
-
- TMDEBUG_ALIGNMEM(r);
- TMDEBUG_ALIGNMEM(resp);
- TMDEBUG_ALIGNMEM(resp2);
-
- COMPUTEWEIGHTEDCODEBOOK_START();
-
- quadsize = subvect_size << 2;
-
- for ( i=0 ; i<shape_cb_size ; i+=4 )
- { register int e0, e1, e2, e3;
-
- e0 = e1 = e2 = e3 = 0;
- for( j=0 ; j<subvect_size ; ++j )
- {
- register int k, rr;
- register int resj0, resj1, resj2, resj3;
-
- resj0 = resj1 = resj2 = resj3 = 0;
-
- for ( k=0 ; k<=j ; ++k )
- { rr = r[j-k];
-
- resj0 += shape_cb[k] * rr;
- resj1 += shape_cb[k+subvect_size] * rr;
- resj2 += shape_cb[k+2*subvect_size] * rr;
- resj3 += shape_cb[k+3*subvect_size] * rr;
- }
-
- resj0 >>= 13;
- resj1 >>= 13;
- resj2 >>= 13;
- resj3 >>= 13;
-
- e0 += resj0 * resj0;
- e1 += resj1 * resj1;
- e2 += resj2 * resj2;
- e3 += resj3 * resj3;
-
- resp[j] = resj0;
- resp[j+subvect_size] = resj1;
- resp[j+2*subvect_size] = resj2;
- resp[j+3*subvect_size] = resj3;
- }
-
- E[i] = e0;
- E[i+1] = e1;
- E[i+2] = e2;
- E[i+3] = e3;
-
- resp += quadsize;
- shape_cb += quadsize;
- }
-
-#ifndef REMARK_ON
- (void)resp2;
- (void)stack;
-#endif
-
- COMPUTEWEIGHTEDCODEBOOK_STOP();
-}
-
-#define OVERRIDE_TARGET_UPDATE
-static inline void target_update(Int16 * restrict t, Int16 g, Int16 * restrict r, int len)
-{
- register int n;
- register int gr1, gr2, t1, t2, r1, r2;
- register int quadsize;
-
- TARGETUPDATE_START();
-
- quadsize = len & 0xFFFFFFFC;
-
- for ( n=0; n<quadsize ; n+=4 )
- { gr1 = pack16lsb(PSHR32((g * r[n]),13) , PSHR32((g * r[n+1]),13));
- gr2 = pack16lsb(PSHR32((g * r[n+2]),13), PSHR32((g * r[n+3]),13));
-
- t1 = pack16lsb(t[n], t[n+1]);
- t2 = pack16lsb(t[n+2],t[n+3]);
-
- r1 = dspidualsub(t1, gr1);
- r2 = dspidualsub(t2, gr2);
-
- t[n] = asri(16,r1);
- t[n+1] = sex16(r1);
- t[n+2] = asri(16,r2);
- t[n+3] = sex16(r2);
- }
-
- for ( n=quadsize ; n<len ; ++n )
- { t[n] = SUB16(t[n],PSHR32(MULT16_16(g,r[n]),13));
- }
-
- TARGETUPDATE_STOP();
-}
-
-#endif
-
diff --git a/3rdparty/speex/tmv/config.h b/3rdparty/speex/tmv/config.h
deleted file mode 100644
index ed1e68e0..00000000
--- a/3rdparty/speex/tmv/config.h
+++ /dev/null
@@ -1,98 +0,0 @@
-#ifndef _CONFIG_H_
-#define _CONFIG_H_
-
-#define USE_COMPACT_KISS_FFT
-//#define USE_KISS_FFT
-
-#ifdef WIN32
-
-//#define FIXED_POINT
-
-#define inline __inline
-#define restrict
-
-#elif defined (__TCS__)
-
-#define FIXED_POINT
-#define PREPROCESS_MDF_FLOAT
-#define TM_ASM
-
-#define TM_DEBUGMEM_ALIGNNMENT 1
-
-#define TM_PROFILE 1
-#define TM_PROFILE_FIRMEM16 0
-#define TM_PROFILE_IIRMEM16 0
-#define TM_PROFILE_FILTERMEM16 0
-#define TM_PROFILE_VQNBEST 0
-#define TM_PROFILE_VQNBESTSIGN 0
-#define TM_PROFILE_COMPUTEQUANTWEIGHTS 0
-#define TM_PROFILE_LSPQUANT 0
-#define TM_PROFILE_LSPWEIGHTQUANT 0
-#define TM_PROFILE_LSPENFORCEMARGIN 0
-#define TM_PROFILE_LSPTOLPC 0
-#define TM_PROFILE_INNERPROD 0
-#define TM_PROFILE_PITCHXCORR 0
-#define TM_PROFILE_LSP_INTERPOLATE 0
-#define TM_PROFILE_CHEBPOLYEVA 0
-#define TM_PROFILE_COMPUTEWEIGHTEDCODEBOOK 0
-#define TM_PROFILE_TARGETUPDATE 0
-#define TM_PROFILE_SPXAUTOCORR 0
-#define TM_PROFILE_COMPUTEPITCHERROR 0
-#define TM_PROFILE_COMPUTERMS16 0
-#define TM_PROFILE_NORMALIZE16 0
-#define TM_PROFILE_BWLPC 0
-#define TM_PROFILE_HIGHPASS 0
-#define TM_PROFILE_SIGNALMUL 0
-#define TM_PROFILE_SIGNALDIV 0
-#define TM_PROFILE_COMPUTEIMPULSERESPONSE 0
-#define TM_PROFILE_PITCHGAINSEARCH3TAPVQ 0
-#define TM_PROFILE_OPENLOOPNBESTPITCH 0
-#define TM_PROFILE_PREPROCESSANALYSIS 0
-#define TM_PROFILE_UPDATENOISEPROB 0
-#define TM_PROFILE_COMPUTEGAINFLOOR 0
-#define TM_PROFILE_FILTERDCNOTCH16 0
-#define TM_PROFILE_MDFINNERPROD 0
-#define TM_PROFILE_SPECTRALMULACCUM 0
-#define TM_PROFILE_WEIGHTEDSPECTRALMULCONJ 0
-#define TM_PROFILE_MDFADJUSTPROP 0
-#define TM_PROFILE_SPEEXECHOGETRESIDUAL 0
-#define TM_PROFILE_MAXIMIZERANGE 0
-#define TM_PROFILE_RENORMRANGE 0
-#define TM_PROFILE_POWERSPECTRUM 0
-#define TM_PROFILE_QMFSYNTH 0
-#define TM_PROFILE_QMFDECOMP 0
-#define TM_PROFILE_FILTERBANKCOMPUTEBANK32 0
-#define TM_PROFILE_FILTERBANKCOMPUTEPSD16 0
-
-#define TM_UNROLL 1
-#define TM_UNROLL_FILTER 1
-#define TM_UNROLL_IIR 1
-#define TM_UNROLL_FIR 1
-#define TM_UNROLL_HIGHPASS 1
-#define TM_UNROLL_SIGNALMUL 1
-#define TM_UNROLL_SIGNALDIV 1
-#define TM_UNROLL_VQNBEST 1
-#define TM_UNROLL_VQSIGNNBEST 1
-#define TM_UNROLL__SPXAUTOCORR 1
-#define TM_UNROLL_COMPUTERMS16 1
-#define TM_UNROLL_COMPUTEIMPULSERESPONSE 1
-#define TM_UNROLL_QMFSYNTH 1
-#define TM_UNROLL_PITCHGAINSEARCH3TAPVQ 1
-#define TM_UNROLL_OPENLOOPNBESTPITCH 1
-#define TM_UNROLL_FILTERBANKCOMPUTEBANK32 1
-#define TM_UNROLL_FILTERBANKCOMPUTEPSD16 1
-#define TM_UNROLL_SPEEXPREPROCESSRUN 1
-#define TM_UNROLL_PREPROCESSANALYSIS 1
-#define TM_UNROLL_UPDATENOISEPROB 1
-#define TM_UNROLL_COMPUTEGAINFLOOR 1
-#define TM_UNROLL_SPEEXECHOGETRESIDUAL 1
-#define TM_UNROLL_SPEEXECHOCANCELLATION 1
-#define TM_UNROLL_FILTERDCNOTCH16 1
-#define TM_UNROLL_MDFINNERPRODUCT 1
-#define TM_UNROLL_SPECTRALMULACCUM 1
-#define TM_UNROLL_MDFADJUSTPROP 1
-
-#endif
-
-#endif
-
diff --git a/3rdparty/speex/tmv/fftwrap_tm.h b/3rdparty/speex/tmv/fftwrap_tm.h
deleted file mode 100644
index a063865b..00000000
--- a/3rdparty/speex/tmv/fftwrap_tm.h
+++ /dev/null
@@ -1,233 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file fftwrap_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#include <ops/custom_defs.h>
-#include "profile_tm.h"
-
-#ifdef FIXED_POINT
-
-#define OVERRIDE_MAXIMIZE_RANGE
-static int maximize_range(Int16 *in, Int16 *out, int bound, int len)
-{
- register int max_val=0;
- register int shift=0;
- register int i, j;
-
- TMDEBUG_ALIGNMEM(in);
- TMDEBUG_ALIGNMEM(out);
-
- MAXIMIZERANGE_START();
-
- len >>= 1;
-
- for ( i=0 ; i<len ; i+=4 )
- {
- register int x10, x32, x54, x76;
-
- x10 = ld32x(in,i);
- x32 = ld32x(in,i+1);
- x54 = ld32x(in,i+2);
- x76 = ld32x(in,i+3);
-
- x10 = dspidualabs(x10);
- x32 = dspidualabs(x32);
- x54 = dspidualabs(x54);
- x76 = dspidualabs(x76);
-
- x10 = imax(sex16(x10), asri(16,x10));
- x32 = imax(sex16(x32), asri(16,x32));
- x54 = imax(sex16(x54), asri(16,x54));
- x76 = imax(sex16(x76), asri(16,x76));
-
- max_val = imax(max_val,x10);
- max_val = imax(max_val,x32);
- max_val = imax(max_val,x54);
- max_val = imax(max_val,x76);
- }
-
- while ( max_val <= (bound>>1) && max_val != 0 )
- { max_val <<= 1;
- shift++;
- }
-
- if ( shift != 0 )
- {
- for ( i=0,j=0 ; i<len ; i+=4,j+=16 )
- {
- register int x10, x32, x54, x76;
-
- x10 = ld32x(in,i);
- x32 = ld32x(in,i+1);
- x54 = ld32x(in,i+2);
- x76 = ld32x(in,i+3);
-
- x10 = dualasl(x10, shift);
- x32 = dualasl(x32, shift);
- x54 = dualasl(x54, shift);
- x76 = dualasl(x76, shift);
-
- st32d(j,out,x10);
- st32d(j+4,out,x32);
- st32d(j+8,out,x54);
- st32d(j+12,out,x76);
- }
- }
-
- MAXIMIZERANGE_STOP();
-
- return shift;
-}
-
-#define OVERRIDE_RENORM_RANGE
-static void renorm_range(Int16 *in, Int16 *out, int shift, int len)
-{
- register int i, j, s, l;
-
- TMDEBUG_ALIGNMEM(in);
- TMDEBUG_ALIGNMEM(out);
-
- RENORMRANGE_START();
-
- s = (1<<((shift))>>1);
- s = pack16lsb(s,s);
-
- len >>= 1;
- l = len & (int)0xFFFFFFFE;
-
- for ( i=0,j=0 ; i<l; i+=2,j+=8 )
- {
- register int x10, x32;
-
- x10 = ld32x(in,i);
- x32 = ld32x(in,i+1);
-
- x10 = dspidualadd(x10, s);
- x32 = dspidualadd(x32, s);
-
- x10 = dualasr(x10, shift);
- x32 = dualasr(x32, shift);
-
- st32d(j,out,x10);
- st32d(j+4,out,x32);
- }
-
- if ( len & (int)0x01 )
- {
- register int x10;
-
- x10 = ld32x(in,i);
- x10 = dspidualadd(x10, s);
- x10 = dualasr(x10, shift);
- st32d(j,out,x10);
- }
-
- RENORMRANGE_STOP();
-}
-
-#endif
-
-#ifdef USE_COMPACT_KISS_FFT
-#ifdef FIXED_POINT
-
-#define OVERRIDE_POWER_SPECTRUM
-void power_spectrum(const spx_word16_t *X, spx_word32_t *ps, int N)
-{
- register int x10, x32, x54, x76, *x;
- register int i;
-
- x = (int*)(X-1);
-
- TMDEBUG_ALIGNMEM(x);
-
- POWERSPECTRUM_START();
-
- x76 = 0;
- ps[0] = MULT16_16(X[0],X[0]);
- N >>= 1;
-
- for( i=1 ; i<N ; i+=4 )
- {
- x10 = ld32x(x, i);
- x32 = ld32x(x, i+1);
- x54 = ld32x(x, i+2);
- x76 = ld32x(x, i+3);
-
- ps[i] = ifir16(x10,x10);
- ps[i+1] = ifir16(x32,x32);
- ps[i+2] = ifir16(x54,x54);
- ps[i+3] = ifir16(x76,x76);
- }
-
- x76 = sex16(x76);
- ps[N] = x76 * x76;
-
- POWERSPECTRUM_STOP();
-}
-
-#else
-
-#define OVERRIDE_POWER_SPECTRUM
-void power_spectrum(const float * restrict X, float * restrict ps, int N)
-{
- register int i, j;
- register float xx;
-
- POWERSPECTRUM_START();
-
- xx = X[0];
-
- ps[0]=MULT16_16(xx,xx);
-
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
- for (i=1,j=1;i<N-1;i+=2,j++)
- { register float xi, xii;
-
- xi = X[i];
- xii = X[i+1];
-
- ps[j] = MULT16_16(xi,xi) + MULT16_16(xii,xii);
- }
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-
- xx = X[i];
- ps[j]=MULT16_16(xx,xx);
-
- POWERSPECTRUM_STOP();
-}
-
-#endif
-#endif
-
diff --git a/3rdparty/speex/tmv/filterbank_tm.h b/3rdparty/speex/tmv/filterbank_tm.h
deleted file mode 100644
index e3cdac90..00000000
--- a/3rdparty/speex/tmv/filterbank_tm.h
+++ /dev/null
@@ -1,289 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file filterbank_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#include <ops/custom_defs.h>
-#include "profile_tm.h"
-
-#ifdef FIXED_POINT
-
-#define OVERRIDE_FILTERBANK_COMPUTE_BANK32
-void filterbank_compute_bank32(FilterBank * restrict bank, spx_word32_t * restrict ps, spx_word32_t * restrict mel)
-{
- register int i, j, k, banks, len, zero, s;
- register int * restrict left;
- register int * restrict right;
- register int * restrict bleft;
- register int * restrict bright;
-
- left = (int*)bank->filter_left;
- right = (int*)bank->filter_right;
- bleft = (int*)bank->bank_left;
- bright = (int*)bank->bank_right;
-
- TMDEBUG_ALIGNMEM(ps);
- TMDEBUG_ALIGNMEM(mel);
- TMDEBUG_ALIGNMEM(left);
- TMDEBUG_ALIGNMEM(right);
- TMDEBUG_ALIGNMEM(bleft);
- TMDEBUG_ALIGNMEM(bright);
-
- FILTERBANKCOMPUTEBANK32_START();
-
- banks = bank->nb_banks << 2;
- zero = 0;
- len = bank->len;
- s = (1<<((15))>>1);
-
-#if (TM_UNROLL && TM_UNROLL_FILTERBANKCOMPUTEBANK32)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<banks ; i+=4 )
- { st32d(i, mel, zero);
- }
-#if (TM_UNROLL && TM_UNROLL_FILTERBANKCOMPUTEBANK32)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
-#if (TM_UNROLL && TM_UNROLL_FILTERBANKCOMPUTEBANK32)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0,j=1,k=0 ; i<len ; i+=2,j+=2,++k )
- { register int ps1, ps0, _mel, ps0_msb, ps0_lsb, ps1_msb, ps1_lsb;
- register int left10, right10, left1, left0, right1, right0;
- register int il1, ir1, il0, ir0;
-
- ps0 = ld32x(ps,i);
- il0 = ld32x(bleft,i);
- _mel = ld32x(mel,il0);
- left10 = ld32x(left,k);
- ir0 = ld32x(bright,i);
- right10 = ld32x(right,k);
-
- ps0_msb = ps0 >> 15;
- ps0_lsb = ps0 & 0x00007fff;
- left0 = sex16(left10);
- right0 = sex16(right10);
-
- _mel += left0 * ps0_msb + ((left0 * ps0_lsb + s ) >> 15);
- mel[il0]= _mel;
- _mel = ld32x(mel,ir0);
- _mel += right0 * ps0_msb + ((right0 * ps0_lsb + s ) >> 15);
- mel[ir0]= _mel;
-
- ps1 = ld32x(ps,j);
- il1 = ld32x(bleft,j);
- _mel = ld32x(mel,il1);
- ir1 = ld32x(bright,j);
-
- left1 = asri(16,left10);
- right1 = asri(16,right10);
- ps1_msb = ps1 >> 15;
- ps1_lsb = ps1 & 0x00007fff;
-
- _mel += left1 * ps1_msb + ((left1 * ps1_lsb + s ) >> 15);
- mel[il1]= _mel;
- _mel = ld32x(mel,ir1);
- _mel += right1 * ps1_msb + ((right1 * ps1_lsb + s ) >> 15);
- mel[ir1]= _mel;
- }
-#if (TM_UNROLL && TM_UNROLL_FILTERBANKCOMPUTEBANK32)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- FILTERBANKCOMPUTEBANK32_STOP();
-}
-
-#define OVERRIDE_FILTERBANK_COMPUTE_PSD16
-void filterbank_compute_psd16(FilterBank * restrict bank, spx_word16_t * restrict mel, spx_word16_t * restrict ps)
-{
- register int i, j, k, len, s;
- register int * restrict left;
- register int * restrict right;
- register int * restrict bleft;
- register int * restrict bright;
-
- left = (int*)bank->filter_left;
- right = (int*)bank->filter_right;
- bleft = (int*)bank->bank_left;
- bright = (int*)bank->bank_right;
-
- TMDEBUG_ALIGNMEM(ps);
- TMDEBUG_ALIGNMEM(mel);
- TMDEBUG_ALIGNMEM(left);
- TMDEBUG_ALIGNMEM(right);
- TMDEBUG_ALIGNMEM(bleft);
- TMDEBUG_ALIGNMEM(bright);
-
- FILTERBANKCOMPUTEPSD16_START();
-
- len = bank->len;
- s = (1<<((15))>>1);
-
-#if (TM_UNROLL && TM_UNROLL_FILTERBANKCOMPUTEPSD16)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0,j=0,k=0 ; i<len ; i+=2,j+=4,++k )
- {
- register int mell0, melr0, mel1, mel0, mell1, melr1;
- register int il1, ir1, il0, ir0;
- register int left10, right10, lr1, lr0;
- register int acc0, acc1, ps10;
-
- acc0 = acc1 = s;
-
- il0 = ld32x(bleft, i);
- ir0 = ld32x(bright,i);
- mell0 = mel[il0];
- melr0 = mel[ir0];
- left10 = ld32x(left, k);
- right10 = ld32x(right, k);
- mel0 = pack16lsb(mell0, melr0);
- lr0 = pack16lsb(left10, right10);
-
- acc0 += ifir16(mel0, lr0);
- acc0 >>= 15;
-
- il1 = ld32x(bleft, i+1);
- ir1 = ld32x(bright,i+1);
- mell1 = mel[il1];
- melr1 = mel[ir1];
- mel1 = pack16lsb(mell1, melr1);
- lr1 = pack16msb(left10, right10);
-
- acc1 += ifir16(mel1, lr1);
- acc1 >>= 15;
-
- ps10 = pack16lsb(acc1, acc0);
-
- st32d(j, ps, ps10);
- }
-#if (TM_UNROLL && TM_UNROLL_FILTERBANKCOMPUTEPSD16)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- FILTERBANKCOMPUTEPSD16_STOP();
-}
-
-#else
-
-#define OVERRIDE_FILTERBANK_COMPUTE_BANK32
-void filterbank_compute_bank32(FilterBank * restrict bank, float * restrict ps, float * restrict mel)
-{
- register int i, banks, len;
- register int * restrict bleft, * restrict bright;
- register float * restrict left, * restrict right;
-
- banks = bank->nb_banks;
- len = bank->len;
- bleft = bank->bank_left;
- bright= bank->bank_right;
- left = bank->filter_left;
- right = bank->filter_right;
-
- FILTERBANKCOMPUTEBANK32_START();
-
- memset(mel, 0, banks * sizeof(float));
-
-#if (TM_UNROLL && TM_UNROLL_FILTERBANKCOMPUTEBANK32)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<len ; ++i)
- {
- register int id1, id2;
- register float psi;
-
- id1 = bleft[i];
- id2 = bright[i];
- psi = ps[i];
-
- mel[id1] += left[i] * psi;
- mel[id2] += right[i] * psi;
- }
-#if (TM_UNROLL && TM_UNROLL_FILTERBANKCOMPUTEBANK32)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- FILTERBANKCOMPUTEBANK32_STOP();
-}
-
-#define OVERRIDE_FILTERBANK_COMPUTE_PSD16
-void filterbank_compute_psd16(FilterBank * restrict bank, float * restrict mel, float * restrict ps)
-{
- register int i, len;
- register int * restrict bleft, * restrict bright;
- register float * restrict left, * restrict right;
-
- len = bank->len;
- bleft = bank->bank_left;
- bright= bank->bank_right;
- left = bank->filter_left;
- right = bank->filter_right;
-
- FILTERBANKCOMPUTEPSD16_START();
-
-#if (TM_UNROLL && TM_UNROLL_FILTERBANKCOMPUTEPSD16)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<len ; ++i )
- {
- register float acc;
- register int id1, id2;
-
- id1 = bleft[i];
- id2 = bright[i];
-
- acc = mel[id1] * left[i];
- acc += mel[id2] * right[i];
-
- ps[i] = acc;
- }
-#if (TM_UNROLL && TM_UNROLL_FILTERBANKCOMPUTEPSD16)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- FILTERBANKCOMPUTEPSD16_STOP();
-}
-
-
-#endif
diff --git a/3rdparty/speex/tmv/filters_tm.h b/3rdparty/speex/tmv/filters_tm.h
deleted file mode 100644
index c8a80694..00000000
--- a/3rdparty/speex/tmv/filters_tm.h
+++ /dev/null
@@ -1,1521 +0,0 @@
-#include <ops/custom_defs.h>
-#include "profile_tm.h"
-
-#ifdef FIXED_POINT
-
-#define iadd(a,b) ((a) + (b))
-
-#define OVERRIDE_BW_LPC
-void bw_lpc(Int16 gamma, const Int16 *lpc_in, Int16 *lpc_out, int order)
-{
- register int tmp, g, i;
-
- TMDEBUG_ALIGNMEM(lpc_in);
- TMDEBUG_ALIGNMEM(lpc_out);
-
- BWLPC_START();
-
- tmp = g = gamma;
- for ( i=0 ; i<4 ; i+=2,lpc_out+=4 )
- { register int in10, y1, y0, y10;
- register int in32, y3, y2, y32;
-
- in10 = ld32x(lpc_in,i);
- y0 = ((tmp * sex16(in10)) + 16384) >> 15;
- tmp = ((tmp * g) + 16384) >> 15;
- y1 = ((tmp * asri(16,in10)) + 16384) >> 15;
- tmp = ((tmp * g) + 16384) >> 15;
- y10 = pack16lsb(y1,y0);
- st32(lpc_out,y10);
-
- in32 = ld32x(lpc_in,i+1);
- y2 = ((tmp * sex16(in32)) + 16384) >> 15;
- tmp = ((tmp * g) + 16384) >> 15;
- y3 = ((tmp * asri(16,in32)) + 16384) >> 15;
- tmp = ((tmp * g) + 16384) >> 15;
- y32 = pack16lsb(y3,y2);
- st32d(4,lpc_out,y32);
- }
-
- if ( order == 10 )
- { register int in10, y1, y0, y10;
-
- in10 = ld32x(lpc_in,i);
- y0 = ((tmp * sex16(in10)) + 16384) >> 15;
- tmp = ((tmp * g) + 16384) >> 15;
- y1 = ((tmp * asri(16,in10)) + 16384) >> 15;
- tmp = ((tmp * g) + 16384) >> 15;
- y10 = pack16lsb(y1,y0);
- st32(lpc_out,y10);
- }
-
- BWLPC_STOP();
-}
-
-
-#define OVERRIDE_HIGHPASS
-void highpass(const Int16 *x, Int16 *y, int len, int filtID, Int32 *mem)
-{
- const Int16 Pcoef[5][3] = {{16384, -31313, 14991}, {16384, -31569, 15249}, {16384, -31677, 15328}, {16384, -32313, 15947}, {16384, -22446, 6537}};
- const Int16 Zcoef[5][3] = {{15672, -31344, 15672}, {15802, -31601, 15802}, {15847, -31694, 15847}, {16162, -32322, 16162}, {14418, -28836, 14418}};
- register int i;
- register int den1, den2, num0, num1, num2, den11, den22, mem0, mem1;
-
- TMDEBUG_ALIGNMEM(mem);
-
- HIGHPASS_START();
-
- filtID = imin(4, filtID);
-
- den1 = -Pcoef[filtID][1];
- den2 = -Pcoef[filtID][2];
- num0 = Zcoef[filtID][0];
- num1 = Zcoef[filtID][1];
- num2 = Zcoef[filtID][2];
- den11 = den1 << 1;
- den22 = den2 << 1;
- mem0 = mem[0];
- mem1 = mem[1];
-
-#if (TM_UNROLL && TM_UNROLL_HIGHPASS)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<len ; ++i )
- {
- register int yi;
- register int vout, xi, vout_i, vout_d;
-
- xi = x[i];
-
- vout = num0 * xi + mem0;
- vout_i = vout >> 15;
- vout_d = vout & 0x7FFF;
- yi = iclipi(PSHR32(vout,14),32767);
- mem0 = (mem1 + num1 * xi) + (den11 * vout_i) + (((den1 * vout_d) >> 15) << 1);
- mem1 = (num2 * xi) + (den22 * vout_i) + (((den2 * vout_d) >> 15) << 1);
-
- y[i] = yi;
- }
-#if (TM_UNROLL && TM_UNROLL_HIGHPASS)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- mem[0] = mem0;
- mem[1] = mem1;
-
- HIGHPASS_STOP();
-}
-
-
-#define OVERRIDE_SIGNALMUL
-void signal_mul(const Int32 *x, Int32 *y, Int32 scale, int len)
-{
- register int i, scale_i, scale_d;
-
- SIGNALMUL_START();
-
- scale_i = scale >> 14;
- scale_d = scale & 0x3FFF;
-
-#if (TM_UNROLL && TM_UNROLL_SIGNALMUL)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<len ; ++i)
- {
- register int xi;
-
- xi = x[i] >> 7;
-
- y[i] = ((xi * scale_i + ((xi * scale_d) >> 14)) << 7);
-
- }
-#if (TM_UNROLL && TM_UNROLL_SIGNALMUL)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- SIGNALMUL_STOP();
-}
-
-#define OVERRIDE_SIGNALDIV
-void signal_div(const Int16 *x, Int16 *y, Int32 scale, int len)
-{
- register int i;
-
- SIGNALDIV_START();
-
- if (scale > SHL32(EXTEND32(SIG_SCALING), 8))
- {
- register int scale_1;
- scale = PSHR32(scale, SIG_SHIFT);
- scale_1 = DIV32_16(SHL32(EXTEND32(SIG_SCALING),7),scale);
-#if (TM_UNROLL && TM_UNROLL_SIGNALDIV)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<len ; ++i)
- {
- y[i] = MULT16_16_P15(scale_1, x[i]);
- }
-#if (TM_UNROLL && TM_UNROLL_SIGNALDIV)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- } else if (scale > SHR32(EXTEND32(SIG_SCALING), 2)) {
-
- register int scale_1;
- scale = PSHR32(scale, SIG_SHIFT-5);
- scale_1 = DIV32_16(SHL32(EXTEND32(SIG_SCALING),3),scale);
-#if (TM_UNROLL && TM_UNROLL_SIGNALDIV)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for (i=0;i<len;i++)
- {
- y[i] = PSHR32(MULT16_16(scale_1, SHL16(x[i],2)),8);
- }
-#if (TM_UNROLL && TM_UNROLL_SIGNALDIV)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- } else {
-
- register int scale_1;
- scale = PSHR32(scale, SIG_SHIFT-7);
- scale = imax(5,scale);
- scale_1 = DIV32_16(SHL32(EXTEND32(SIG_SCALING),3),scale);
-
-#if (TM_UNROLL && TM_UNROLL_SIGNALDIV)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for (i=0;i<len;i++)
- {
- y[i] = PSHR32(MULT16_16(scale_1, SHL16(x[i],2)),6);
- }
-#if (TM_UNROLL && TM_UNROLL_SIGNALDIV)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- }
-
- SIGNALMUL_STOP();
-}
-
-
-#define OVERRIDE_COMPUTE_RMS
-Int16 compute_rms(const Int32 *x, int len)
-{
- register int i;
- register int sum=0;
- register int max_val=1;
- register int sig_shift;
-
- TMDEBUG_ALIGNMEM(x);
-
- for ( i=0 ; i<len ; i+=4 )
- {
- register int tmp0, tmp1, tmp2, tmp3;
-
- tmp0 = ld32x(x,i);
- tmp1 = ld32x(x,i+1);
-
- tmp0 = iabs(tmp0);
- tmp1 = iabs(tmp1);
-
- tmp2 = ld32x(x,i+2);
- tmp3 = ld32x(x,i+3);
-
- tmp2 = iabs(tmp2);
- tmp3 = iabs(tmp3);
-
- tmp0 = imax(tmp0, tmp1);
- max_val = imax(max_val, tmp0);
- tmp2 = imax(tmp2, tmp3);
- max_val = imax(max_val, tmp2);
- }
-
- sig_shift = 0;
- while ( max_val>16383 )
- { sig_shift++;
- max_val >>= 1;
- }
-
-
- for ( i=0 ; i<len ; i+=4 )
- {
- register int acc0, acc1, acc2;
-
- acc0 = pack16lsb(ld32x(x,i) >> sig_shift, ld32x(x,i+1) >> sig_shift);
- acc1 = pack16lsb(ld32x(x,i+2) >> sig_shift, ld32x(x,i+3) >> sig_shift);
- acc2 = ifir16(acc0,acc0) + ifir16(acc1, acc1);
- sum += acc2 >> 6;
- }
-
- return EXTRACT16(PSHR32(SHL32(EXTEND32(spx_sqrt(DIV32(sum,len))),(sig_shift+3)),SIG_SHIFT));
-}
-
-#define OVERRIDE_COMPUTE_RMS16
-Int16 compute_rms16(const Int16 *x, int len)
-{
- register int max_val, i;
-
- COMPUTERMS16_START();
-
- max_val = 10;
-
-#if 0
-
- {
- register int len2 = len >> 1;
-#if (TM_UNROLL && TM_UNROLL_COMPUTERMS16)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<len2 ; i+=2 )
- {
- register int x10, x32;
-
- x10 = ld32x(x,i);
- x32 = ld32x(x,i+1);
-
- x10 = dspidualabs(x10);
- x32 = dspidualabs(x32);
-
- x10 = imax(sex16(x10), asri(16,x10));
- x32 = imax(sex16(x32), asri(16,x32));
-
- max_val = imax(max_val,x10);
- max_val = imax(max_val,x32);
- }
-#if (TM_UNROLL && TM_UNROLL_COMPUTERMS16)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- if (max_val>16383)
- {
- register int sum = 0;
-#if (TM_UNROLL && TM_UNROLL_COMPUTERMS16)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<len_2; i+=2 )
- {
- register int x10, x32;
- register int acc0, acc1;
-
- x10 = ld32x(x,i);
- x32 = ld32x(x,i+1);
-
- x10 = dualasr(x10,1);
- x32 = dualasr(x32,1);
-
- acc0 = ifir16(x10,x10);
- acc1 = ifir16(x32,x32);
- sum += (acc0 + acc1) >> 6;
- }
-#if (TM_UNROLL && TM_UNROLL_COMPUTERMS16)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- COMPUTERMS16_STOP();
- return spx_sqrt(sum/len) << 4;
- } else
- {
- register int sig_shift;
- register int sum=0;
-
- sig_shift = mux(max_val < 8192, 1, 0);
- sig_shift = mux(max_val < 4096, 2, sig_shift);
- sig_shift = mux(max_val < 2048, 3, sig_shift);
-
-#if (TM_UNROLL && TM_UNROLL_COMPUTERMS16)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<len_2 ; i+=2 )
- {
- register int x10, x32;
- register int acc0, acc1;
-
- x10 = ld32x(x,i);
- x32 = ld32x(x,i+1);
-
- x10 = dualasl(x10,sig_shift);
- x32 = dualasl(x32,sig_shift);
-
- acc0 = ifir16(x10,x10);
- acc1 = ifir16(x32,x32);
- sum += (acc0 + acc1) >> 6;
- }
-#if (TM_UNROLL && TM_UNROLL_COMPUTERMS16)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- COMPUTERMS16_STOP();
- return spx_sqrt(sum/len) << (3 - sig_shift);
- }
- }
-
-#else
- {
-#if (TM_UNROLL && TM_UNROLL_COMPUTERMS16)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<len ; ++i )
- {
- register int xi;
-
- xi = x[i];
- xi = iabs(xi);
- max_val = imax(xi,max_val);
- }
-#if (TM_UNROLL && TM_UNROLL_COMPUTERMS16)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- if (max_val>16383)
- {
- register int sum = 0;
-#if (TM_UNROLL && TM_UNROLL_COMPUTERMS16)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<len ; i+=4 )
- {
- register int x10, x32;
- register int acc0, acc1;
-
- x10 = pack16lsb(x[i+1],x[i]);
- x32 = pack16lsb(x[i+3],x[i+2]);
-
- x10 = dualasr(x10,1);
- x32 = dualasr(x32,1);
-
- acc0 = ifir16(x10,x10);
- acc1 = ifir16(x32,x32);
- sum += (acc0 + acc1) >> 6;
- }
-#if (TM_UNROLL && TM_UNROLL_COMPUTERMS16)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- COMPUTERMS16_STOP();
- return spx_sqrt(sum/len) << 4;
- } else {
- register int sig_shift;
- register int sum=0;
-
- sig_shift = mux(max_val < 8192, 1, 0);
- sig_shift = mux(max_val < 4096, 2, sig_shift);
- sig_shift = mux(max_val < 2048, 3, sig_shift);
-
-#if (TM_UNROLL && TM_UNROLL_COMPUTERMS16)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<len ; i+=4 )
- {
- register int x10, x32;
- register int acc0, acc1;
-
- x10 = pack16lsb(x[i+1],x[i]);
- x32 = pack16lsb(x[i+3],x[i+2]);
-
- x10 = dualasl(x10,sig_shift);
- x32 = dualasl(x32,sig_shift);
-
- acc0 = ifir16(x10,x10);
- acc1 = ifir16(x32,x32);
- sum += (acc0 + acc1) >> 6;
- }
-#if (TM_UNROLL && TM_UNROLL_COMPUTERMS16)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- COMPUTERMS16_STOP();
- return spx_sqrt(sum/len) << (3 - sig_shift);
- }
- }
-#endif
-}
-
-int normalize16_9(const Int32* restrict x, Int16 * restrict y, Int32 max_scale)
-{
- register int x0, x1, x2, x3, x4, x5, x6, x7, x8;
- register int max_val, m0, m1, m2, m3, m4;
- register int sig_shift;
- register int y10, y32, y54, y76;
-
- TMDEBUG_ALIGNMEM(x);
-
- x0 = ld32(x);
- x1 = ld32x(x,1); x2 = ld32x(x,2); x3 = ld32x(x,3); x4 = ld32x(x,4);
- x5 = ld32x(x,5); x6 = ld32x(x,6); x7 = ld32x(x,7); x8 = ld32x(x,8);
-
- m0 = imax(iabs(x0), iabs(x1));
- m1 = imax(iabs(x2), iabs(x3));
- m2 = imax(iabs(x4), iabs(x5));
- m3 = imax(iabs(x6), iabs(x7));
- m4 = imax(m0, iabs(x8));
- m1 = imax(m1, m2);
- m3 = imax(m3, m4);
- max_val = imax(1,imax(m1,m3));
-
- sig_shift=0;
- while (max_val>max_scale)
- { sig_shift++;
- max_val >>= 1;
- }
-
- if ( sig_shift != 0 )
- {
- y10 = pack16lsb(x1 >> sig_shift, x0 >> sig_shift);
- y32 = pack16lsb(x3 >> sig_shift, x2 >> sig_shift);
- y54 = pack16lsb(x5 >> sig_shift, x4 >> sig_shift);
- y76 = pack16lsb(x7 >> sig_shift, x6 >> sig_shift);
-
- y[8] = x8 >> sig_shift;
- st32(y,y10);
- st32d(4,y,y32);
- st32d(8,y,y54);
- st32d(12,y,y76);
- }
- return sig_shift;
-}
-
-int normalize16_mod8(const Int32 * restrict x, Int16 * restrict y, Int32 max_scale,int len)
-{
- register int i, max_val, sig_shift;
-
- TMDEBUG_ALIGNMEM(x);
-
- max_val = 1;
-
- for ( i=0 ; i<len ; i+=4 )
- {
- register int tmp0, tmp1, tmp2, tmp3;
-
- tmp0 = ld32x(x,i);
- tmp1 = ld32x(x,i+1);
-
- tmp0 = iabs(tmp0);
- tmp1 = iabs(tmp1);
-
- tmp2 = ld32x(x,i+2);
- tmp3 = ld32x(x,i+3);
-
- tmp2 = iabs(tmp2);
- tmp3 = iabs(tmp3);
-
- tmp0 = imax(tmp0, tmp1);
- max_val = imax(max_val, tmp0);
- tmp2 = imax(tmp2, tmp3);
- max_val = imax(max_val, tmp2);
- }
-
- sig_shift=0;
- while (max_val>max_scale)
- { sig_shift++;
- max_val >>= 1;
- }
-
- if ( sig_shift != 0 )
- {
- for ( i=0 ; i<len ; i+=8, y+=8 )
- {
- register int x0, x1, x2, x3, x4, x5, x6, x7;
- register int y10, y32, y54, y76;
-
- x0 = ld32x(x,i); x1 = ld32x(x,i+1); x2 = ld32x(x,i+2); x3 = ld32x(x,i+3);
- x4 = ld32x(x,i+4); x5 = ld32x(x,i+5); x6 = ld32x(x,i+6); x7 = ld32x(x,i+7);
-
- y10 = pack16lsb(x1 >> sig_shift, x0 >> sig_shift);
- y32 = pack16lsb(x3 >> sig_shift, x2 >> sig_shift);
- y54 = pack16lsb(x5 >> sig_shift, x4 >> sig_shift);
- y76 = pack16lsb(x7 >> sig_shift, x6 >> sig_shift);
-
- st32(y,y10);
- st32d(4,y,y32);
- st32d(8,y,y54);
- st32d(12,y,y76);
- }
- }
- return sig_shift;
-}
-
-
-#define OVERRIDE_NORMALIZE16
-int normalize16(const Int32 *x, Int16 *y, Int32 max_scale, int len)
-{
- TMDEBUG_ALIGNMEM(x);
- TMDEBUG_ALIGNMEM(y);
-
- NORMALIZE16_START();
-
- if ( len == 9 )
- { NORMALIZE16_STOP();
- return normalize16_9(x,y,max_scale);
- } else
- { NORMALIZE16_STOP();
- return normalize16_mod8(x,y,max_scale,len);
- }
-}
-
-
-void filter_mem16_10(const Int16 *x, const Int16 *num, const Int16 *den, Int16 *y, int N, Int32 *mem)
-{
- register int i;
- register int c9, c8, c7, c6, c5;
- register int c4, c3, c2, c1, c0;
- register int input;
- register int output_0, output_1, output_2, output_3, output_4;
- register int output_5, output_6, output_7, output_8, output_9;
- register Int16 xi, yi;
-
- c9 = pack16lsb(-den[9],num[9]);
- c8 = pack16lsb(-den[8],num[8]);
- c7 = pack16lsb(-den[7],num[7]);
- c6 = pack16lsb(-den[6],num[6]);
- c5 = pack16lsb(-den[5],num[5]);
- c4 = pack16lsb(-den[4],num[4]);
- c3 = pack16lsb(-den[3],num[3]);
- c2 = pack16lsb(-den[2],num[2]);
- c1 = pack16lsb(-den[1],num[1]);
- c0 = pack16lsb(-den[0],num[0]);
-
- output_0 = mem[0];
- output_1 = mem[1];
- output_2 = mem[2];
- output_3 = mem[3];
- output_4 = mem[4];
- output_5 = mem[5];
- output_6 = mem[6];
- output_7 = mem[7];
- output_8 = mem[8];
- output_9 = mem[9];
-
-#if (TM_UNROLL && TM_UNROLL_FILTER)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
-
- for ( i=0 ; i<N ; i++ )
- {
- xi = (int)(x[i]);
- yi = iclipi(iadd(xi,PSHR32(output_0,LPC_SHIFT)),32767);
-
- input = pack16lsb(yi,xi);
- output_0= iadd(ifir16(c0,input),output_1);
- output_1= iadd(ifir16(c1,input),output_2);
- output_2= iadd(ifir16(c2,input),output_3);
- output_3= iadd(ifir16(c3,input),output_4);
- output_4= iadd(ifir16(c4,input),output_5);
- output_5= iadd(ifir16(c5,input),output_6);
- output_6= iadd(ifir16(c6,input),output_7);
- output_7= iadd(ifir16(c7,input),output_8);
- output_8= iadd(ifir16(c8,input),output_9);
- output_9= ifir16(c9,input);
-
- y[i] = yi;
- }
-
-#if (TM_UNROLL && TM_UNROLL_FILTER)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- mem[0] = output_0;
- mem[1] = output_1;
- mem[2] = output_2;
- mem[3] = output_3;
- mem[4] = output_4;
- mem[5] = output_5;
- mem[6] = output_6;
- mem[7] = output_7;
- mem[8] = output_8;
- mem[9] = output_9;
-}
-
-void filter_mem16_8(const Int16 *x, const Int16 *num, const Int16 *den, Int16 *y, int N, Int32 *mem)
-{
- register int i;
- register int c7, c6, c5, c4, c3, c2, c1, c0;
- register int output_0, output_1, output_2, output_3, output_4, output_5, output_6, output_7;
- register int input;
- register Int16 xi, yi;
-
- c7 = pack16lsb(-den[7],num[7]);
- c6 = pack16lsb(-den[6],num[6]);
- c5 = pack16lsb(-den[5],num[5]);
- c4 = pack16lsb(-den[4],num[4]);
- c3 = pack16lsb(-den[3],num[3]);
- c2 = pack16lsb(-den[2],num[2]);
- c1 = pack16lsb(-den[1],num[1]);
- c0 = pack16lsb(-den[0],num[0]);
-
- output_0 = mem[0];
- output_1 = mem[1];
- output_2 = mem[2];
- output_3 = mem[3];
- output_4 = mem[4];
- output_5 = mem[5];
- output_6 = mem[6];
- output_7 = mem[7];
-
-#if (TM_UNROLL && TM_UNROLL_FILTER)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
-
- for ( i=0 ; i<N ; i++ )
- {
- xi = x[i];
- yi = iclipi(iadd((int)(xi),PSHR32(output_0,LPC_SHIFT)),32767);
-
- input = pack16lsb(yi,xi);
- output_0= iadd(ifir16(c0,input),output_1);
- output_1= iadd(ifir16(c1,input),output_2);
- output_2= iadd(ifir16(c2,input),output_3);
- output_3= iadd(ifir16(c3,input),output_4);
- output_4= iadd(ifir16(c4,input),output_5);
- output_5= iadd(ifir16(c5,input),output_6);
- output_6= iadd(ifir16(c6,input),output_7);
- output_7= ifir16(c7,input);
-
- y[i] = yi;
- }
-
-#if (TM_UNROLL && TM_UNROLL_FILTER)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
-
- mem[0] = output_0;
- mem[1] = output_1;
- mem[2] = output_2;
- mem[3] = output_3;
- mem[4] = output_4;
- mem[5] = output_5;
- mem[6] = output_6;
- mem[7] = output_7;
-}
-
-#define OVERRIDE_FILTER_MEM16
-void filter_mem16(const Int16 *x, const Int16 *num, const Int16 *den, Int16 *y, int N, int ord, Int32 *mem, char *stack)
-{
- TMDEBUG_ALIGNMEM(x);
- TMDEBUG_ALIGNMEM(y);
- TMDEBUG_ALIGNMEM(num);
- TMDEBUG_ALIGNMEM(den);
-
- FILTERMEM16_START();
-
- if(ord==10)
- filter_mem16_10(x, num, den, y, N, mem);
- else if (ord==8)
- filter_mem16_8(x, num, den, y, N, mem);
-
-#ifndef REMARK_ON
- (void)stack;
-#endif
-
- FILTERMEM16_STOP();
-}
-
-void iir_mem16_8(const Int16 *x, const Int16 *den, Int16 *y, int N, Int32 *mem)
-{
- register int i;
- register int c67, c45, c23, c01;
- register int r1, r2, r3;
- register int y10, y32, y54, y76, yi;
-
- c67 = pack16lsb(-den[6],-den[7]);
- c45 = pack16lsb(-den[4],-den[5]);
- c23 = pack16lsb(-den[2],-den[3]);
- c01 = pack16lsb(-den[0],-den[1]);
-
- y10 = mem[0];
- y32 = mem[1];
- y54 = mem[2];
- y76 = mem[3];
-
-#if (TM_UNROLL && TM_UNROLL_IIR)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
-
- for ( i=0 ; i < N ; ++i )
- {
- r2 = iadd(ifir16(y10,c67),ifir16(y32,c45));
- r3 = iadd(ifir16(y54,c23),ifir16(y76,c01));
- r1 = iadd(r2,r3);
-
- y10 = funshift2(y32, y10);
- y32 = funshift2(y54, y32);
- y54 = funshift2(y76, y54);
-
- yi = iclipi(iadd((int)(x[i]),PSHR32(r1,LPC_SHIFT)),32767);
- y[i]= yi;
- y76 = funshift2(yi, y76);
- }
-
-#if (TM_UNROLL && TM_UNROLL_IIR)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- mem[0] = y10;
- mem[1] = y32;
- mem[2] = y54;
- mem[3] = y76;
-
-}
-
-void iir_mem16_10(const Int16 *x, const Int16 *den, Int16 *y, int N, Int32 *mem)
-{
- register int i;
- register int c89, c67, c45, c23, c01;
- register int r1, r2, r3, r4, r5;
- register int y10, y32, y54, y76, y98, yi;
-
- c89 = pack16lsb(-den[8],-den[9]);
- c67 = pack16lsb(-den[6],-den[7]);
- c45 = pack16lsb(-den[4],-den[5]);
- c23 = pack16lsb(-den[2],-den[3]);
- c01 = pack16lsb(-den[0],-den[1]);
-
- y10 = mem[0];
- y32 = mem[1];
- y54 = mem[2];
- y76 = mem[3];
- y98 = mem[4];
-
-#if (TM_UNROLL && TM_UNROLL_IIR)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
-
- for ( i=0 ; i < N ; ++i )
- {
- r2 = iadd(ifir16(y10,c89),ifir16(y32,c67));
- r3 = iadd(ifir16(y54,c45),ifir16(y76,c23));
- r4 = ifir16(y98,c01);
- r5 = iadd(r2,r3);
- r1 = iadd(r4,r5);
-
- y10 = funshift2(y32, y10);
- y32 = funshift2(y54, y32);
- y54 = funshift2(y76, y54);
- y76 = funshift2(y98, y76);
-
- yi = iclipi(iadd((int)(x[i]),PSHR32(r1,LPC_SHIFT)),32767);
- y[i]= yi;
- y98 = funshift2(yi, y98);
- }
-
-#if (TM_UNROLL && TM_UNROLL_IIR)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- mem[0] = y10;
- mem[1] = y32;
- mem[2] = y54;
- mem[3] = y76;
- mem[4] = y98;
-}
-
-#define OVERRIDE_IIR_MEM16
-void iir_mem16(const Int16 *x, const Int16 *den, Int16 *y, int N, int ord, Int32 *mem, char *stack)
-{
- TMDEBUG_ALIGNMEM(den);
-
- IIRMEM16_START();
-
- if(ord==10)
- iir_mem16_10(x, den, y, N, mem);
- else if (ord==8)
- iir_mem16_8(x, den, y, N, mem);
-
-#ifndef REMARK_ON
- (void)stack;
-#endif
-
- IIRMEM16_STOP();
-}
-
-void fir_mem16_8(const Int16 *x, const Int16 *num, Int16 *y, int N, Int32 *mem)
-{
- register int i, N_2;
- register int c67, c45, c23, c01;
- register int b0, b1, b2, b3;
- register int r1, r2, r3;
- register int x10, x32, x54, x76, xi;
- register Int16 *a;
-
- N_2 = N >> 1;
-
- c67 = ld32x(num,3);
- c45 = ld32x(num,2);
- c23 = ld32x(num,1);
- c01 = ld32x(num,0);
-
- c67 = funshift2(c67,c67);
- c45 = funshift2(c45,c45);
- c23 = funshift2(c23,c23);
- c01 = funshift2(c01,c01);
-
- b3 = x76 = ld32x(x,N_2-1);
- b2 = x54 = ld32x(x,N_2-2);
- b1 = x32 = ld32x(x,N_2-3);
- b0 = x10 = ld32x(x,N_2-4);
-
-#if (TM_UNROLL && TM_UNROLL_FILTER > 0)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
-
- for ( i=N-1 ; i >= 8 ; --i )
- {
- xi = asri(16,x76);
- x76 = funshift2(x76, x54);
- x54 = funshift2(x54, x32);
- x32 = funshift2(x32, x10);
- x10 = pack16lsb(x10, (int)x[i-8]);
-
- r2 = iadd(ifir16(x10,c67),ifir16(x32,c45));
- r3 = iadd(ifir16(x54,c23),ifir16(x76,c01));
- r1 = iadd(r2,r3);
-
- y[i] = iclipi(iadd(xi,PSHR32(r1,LPC_SHIFT)),32767);
- }
- for ( i=7, a=(Int16*)mem ; i>=0 ; --i )
- {
- xi = asri(16,x76);
- x76 = funshift2(x76, x54);
- x54 = funshift2(x54, x32);
- x32 = funshift2(x32, x10);
- x10 = pack16lsb(x10, (int)a[i]);
-
- r2 = iadd(ifir16(x10,c67),ifir16(x32,c45));
- r3 = iadd(ifir16(x54,c23),ifir16(x76,c01));
- r1 = iadd(r2,r3);
-
- y[i] = iclipi(iadd(xi,PSHR32(r1,LPC_SHIFT)),32767);
- }
-
-#if (TM_UNROLL && TM_UNROLL_FILTER > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- mem[0] = b0;
- mem[1] = b1;
- mem[2] = b2;
- mem[3] = b3;
-}
-
-void fir_mem16_10(const Int16 *x, const Int16 *num, Int16 *y, int N, Int32 *mem)
-{
- register int N_2, i;
- register int c89, c67, c45, c23, c01;
- register int b0, b1, b2, b3, b4;
- register int r1, r2, r3, r4, r5;
- register int x10, x32, x54, x76, x98, xi;
- register Int16 *a;
-
- N_2 = N >> 1;
-
- c89 = ld32x(num,4);
- c67 = ld32x(num,3);
- c45 = ld32x(num,2);
- c23 = ld32x(num,1);
- c01 = ld32x(num,0);
-
- c89 = funshift2(c89,c89);
- c67 = funshift2(c67,c67);
- c45 = funshift2(c45,c45);
- c23 = funshift2(c23,c23);
- c01 = funshift2(c01,c01);
-
- b4 = x98 = ld32x(x,N_2-1);
- b3 = x76 = ld32x(x,N_2-2);
- b2 = x54 = ld32x(x,N_2-3);
- b1 = x32 = ld32x(x,N_2-4);
- b0 = x10 = ld32x(x,N_2-5);
-
-#if (TM_UNROLL && TM_UNROLL_FIR > 0)
-#pragma TCS_unroll=5
-#pragma TCS_unrollexact=1
-#endif
-
- for ( i=N-1 ; i >= 10 ; --i )
- {
- xi = asri(16,x98);
- x98 = funshift2(x98, x76);
- x76 = funshift2(x76, x54);
- x54 = funshift2(x54, x32);
- x32 = funshift2(x32, x10);
- x10 = pack16lsb(x10, (int)(x[i-10]));
-
- r2 = iadd(ifir16(x10,c89),ifir16(x32,c67));
- r3 = iadd(ifir16(x54,c45),ifir16(x76,c23));
- r4 = ifir16(x98,c01);
- r5 = iadd(r2,r3);
- r1 = iadd(r4,r5);
-
- y[i] = iclipi(iadd(xi,PSHR32(r1,LPC_SHIFT)),32767);
- }
-
- for ( i=9,a =(Int16*)mem ; i>=0 ; --i )
- {
- xi = asri(16,x98);
- x98 = funshift2(x98, x76);
- x76 = funshift2(x76, x54);
- x54 = funshift2(x54, x32);
- x32 = funshift2(x32, x10);
- x10 = pack16lsb(x10, (int)(a[i]));
-
- r2 = iadd(ifir16(x10,c89),ifir16(x32,c67));
- r3 = iadd(ifir16(x54,c45),ifir16(x76,c23));
- r4 = ifir16(x98,c01);
- r5 = iadd(r2,r3);
- r1 = iadd(r4,r5);
-
- y[i] = iclipi(iadd(xi,PSHR32(r1,LPC_SHIFT)),32767);
- }
-
-#if (TM_UNROLL && TM_UNROLL_FIR > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- mem[0] = b0;
- mem[1] = b1;
- mem[2] = b2;
- mem[3] = b3;
- mem[4] = b4;
-
-
-}
-
-#define OVERRIDE_FIR_MEM16
-void fir_mem16(const spx_word16_t *x, const Int16 *num, spx_word16_t *y, int N, int ord, Int32 *mem, char *stack)
-{
- TMDEBUG_ALIGNMEM(x);
- TMDEBUG_ALIGNMEM(y);
- TMDEBUG_ALIGNMEM(num);
-
- FIRMEM16_START();
-
- if(ord==10)
- fir_mem16_10(x, num, y, N, mem);
- else if (ord==8)
- fir_mem16_8(x, num, y, N, mem);
-
-#ifndef REMARK_ON
- (void)stack;
-#endif
-
- FIRMEM16_STOP();
-}
-
-
-
-#define OVERRIDE_SYN_PERCEP_ZERO16
-void syn_percep_zero16(const Int16 *xx, const Int16 *ak, const Int16 *awk1, const Int16 *awk2, Int16 *y, int N, int ord, char *stack)
-{
- register int i,j;
- VARDECL(Int32 *mem);
- ALLOC(mem, ord, Int32);
-
- TMDEBUG_ALIGNMEM(mem);
-
- for ( i=0,j=0 ; i<ord ; ++i,j+=4 )
- st32d(j,mem,0);
- iir_mem16(xx, ak, y, N, ord, mem, stack);
- for ( i=0,j=0 ; i<ord ; ++i,j+=4 )
- st32d(j,mem,0);
- filter_mem16(y, awk1, awk2, y, N, ord, mem, stack);
-}
-
-
-#define OVERRIDE_RESIDUE_PERCEP_ZER016
-void residue_percep_zero16(const Int16 *xx, const Int16 *ak, const Int16 *awk1, const Int16 *awk2, Int16 *y, int N, int ord, char *stack)
-{
- register int i,j;
- VARDECL(Int32 *mem);
- ALLOC(mem, ord, Int32);
-
- TMDEBUG_ALIGNMEM(mem);
-
- for ( i=0,j=0 ; i<ord ; ++i,j+=4 )
- st32d(j,mem,0);
- filter_mem16(xx, ak, awk1, y, N, ord, mem, stack);
- for ( i=0,j=0 ; i<ord ; ++i,j+=4 )
- st32d(j,mem,0);
- fir_mem16(y, awk2, y, N, ord, mem, stack);
-}
-
-
-
-void compute_impulse_response_10(const Int16 *ak, const Int16 *awk1, const Int16 *awk2, Int16 *y, int N)
-{
- register int awk_01, awk_23, awk_45, awk_67, awk_89;
- register int y10, y32, y54, y76, y98, yi;
- register int i, acc0, acc1, N_2;
-
- N_2 = N << 1;
-
- awk_01 = ld32(awk1);
- awk_23 = ld32x(awk1,1);
- awk_45 = ld32x(awk1,2);
- awk_67 = ld32x(awk1,3);
- awk_89 = ld32x(awk1,4);
-
- y10 = funshift2(awk_01, LPC_SCALING << 16);
- st32d(0, y, y10);
- y32 = funshift2(awk_23, awk_01);
- st32d(4, y, y32);
- y54 = funshift2(awk_45, awk_23);
- st32d(8, y, y54);
- y76 = funshift2(awk_67, awk_45);
- st32d(12, y, y76);
- y98 = funshift2(awk_89, awk_67);
- st32d(16, y, y98);
- y10 = funshift2(0, awk_89);
- st32d(20, y, y10);
-#if (TM_UNROLL && TM_UNROLL_COMPUTEIMPULSERESPONSE > 0)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=24 ; i<N_2 ; i+=4 )
- { st32d(i, y, 0);
- }
-#if (TM_UNROLL && TM_UNROLL_COMPUTEIMPULSERESPONSE > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- y10 = y32 = y54 = y76 = y98 = 0;
- awk_01 = ld32(awk2);
- awk_23 = ld32x(awk2,1);
- awk_45 = ld32x(awk2,2);
- awk_67 = ld32x(awk2,3);
- awk_89 = ld32x(awk2,4);
-
- awk_01 = funshift2(awk_01, awk_01);
- awk_23 = funshift2(awk_23, awk_23);
- awk_45 = funshift2(awk_45, awk_45);
- awk_67 = funshift2(awk_67, awk_67);
- awk_89 = funshift2(awk_89, awk_89);
-
-#if (TM_UNROLL && TM_UNROLL_COMPUTEIMPULSERESPONSE > 0)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<N ; ++i )
- {
- yi = y[i];
-
- acc0 = ifir16(y10, awk_89) + ifir16(y32, awk_67);
- acc1 = ifir16(y54, awk_45) + ifir16(y76, awk_23);
- yi += PSHR32(acc0 + acc1 + ifir16(y98, awk_01),LPC_SHIFT);
- y[i] = yi;
-
- y10 = funshift2(y32, y10);
- y32 = funshift2(y54, y32);
- y54 = funshift2(y76, y54);
- y76 = funshift2(y98, y76);
- y98 = funshift2(ineg(yi), y98);
- }
-#if (TM_UNROLL && TM_UNROLL_COMPUTEIMPULSERESPONSE > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- y10 = y32 = y54 = y76 = y98 = 0;
- awk_01 = ld32(ak);
- awk_23 = ld32x(ak,1);
- awk_45 = ld32x(ak,2);
- awk_67 = ld32x(ak,3);
- awk_89 = ld32x(ak,4);
- awk_01 = funshift2(awk_01, awk_01);
- awk_23 = funshift2(awk_23, awk_23);
- awk_45 = funshift2(awk_45, awk_45);
- awk_67 = funshift2(awk_67, awk_67);
- awk_89 = funshift2(awk_89, awk_89);
-
-#if (TM_UNROLL && TM_UNROLL_COMPUTEIMPULSERESPONSE > 0)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<N ; ++i )
- {
- yi = y[i];
-
- acc0 = ifir16(y10, awk_89) + ifir16(y32, awk_67);
- acc1 = ifir16(y54, awk_45) + ifir16(y76, awk_23);
- yi = PSHR32(SHL32(yi,LPC_SHIFT+1) + acc0 + acc1 + ifir16(y98, awk_01),LPC_SHIFT);
- y[i] = yi;
-
- y10 = funshift2(y32, y10);
- y32 = funshift2(y54, y32);
- y54 = funshift2(y76, y54);
- y76 = funshift2(y98, y76);
- y98 = funshift2(ineg(yi), y98);
- }
-#if (TM_UNROLL && TM_UNROLL_COMPUTEIMPULSERESPONSE > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-}
-
-void compute_impulse_response_8(const Int16 *ak, const Int16 *awk1, const Int16 *awk2, Int16 *y, int N)
-{
- register int awk_01, awk_23, awk_45, awk_67;
- register int y10, y32, y54, y76, yi;
- register int i, acc0, acc1, N_2;
-
- N_2 = N << 1;
-
- awk_01 = ld32(awk1);
- awk_23 = ld32x(awk1,1);
- awk_45 = ld32x(awk1,2);
- awk_67 = ld32x(awk1,3);
-
- y10 = funshift2(awk_01, LPC_SCALING << 16);
- st32d(0, y, y10);
- y32 = funshift2(awk_23, awk_01);
- st32d(4, y, y32);
- y54 = funshift2(awk_45, awk_23);
- st32d(8, y, y54);
- y76 = funshift2(awk_67, awk_45);
- st32d(12, y, y76);
- y10 = funshift2(0, awk_67);
- st32d(16, y, y10);
- st32d(20, y, 0);
-
-#if (TM_UNROLL && TM_UNROLL_COMPUTEIMPULSERESPONSE > 0)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=24 ; i<N_2 ; i+=4 )
- { st32d(i, y, 0);
- }
-#if (TM_UNROLL && TM_UNROLL_COMPUTEIMPULSERESPONSE > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- y10 = y32 = y54 = y76 = 0;
- awk_01 = ld32(awk2);
- awk_23 = ld32x(awk2,1);
- awk_45 = ld32x(awk2,2);
- awk_67 = ld32x(awk2,3);
-
- awk_01 = funshift2(awk_01, awk_01);
- awk_23 = funshift2(awk_23, awk_23);
- awk_45 = funshift2(awk_45, awk_45);
- awk_67 = funshift2(awk_67, awk_67);
-#if (TM_UNROLL && TM_UNROLL_COMPUTEIMPULSERESPONSE > 0)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<N ; ++i )
- {
- yi = y[i];
-
- acc0 = ifir16(y10, awk_67) + ifir16(y32, awk_45);
- acc1 = ifir16(y54, awk_23) + ifir16(y76, awk_01);
- yi += PSHR32(acc0 + acc1,LPC_SHIFT);
- y[i] = yi;
-
- y10 = funshift2(y32, y10);
- y32 = funshift2(y54, y32);
- y54 = funshift2(y76, y54);
- y76 = funshift2(ineg(yi), y76);
- }
-#if (TM_UNROLL && TM_UNROLL_COMPUTEIMPULSERESPONSE > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- y10 = y32 = y54 = y76 = 0;
- awk_01 = ld32(ak);
- awk_23 = ld32x(ak,1);
- awk_45 = ld32x(ak,2);
- awk_67 = ld32x(ak,3);
- awk_01 = funshift2(awk_01, awk_01);
- awk_23 = funshift2(awk_23, awk_23);
- awk_45 = funshift2(awk_45, awk_45);
- awk_67 = funshift2(awk_67, awk_67);
-#if (TM_UNROLL && TM_UNROLL_COMPUTEIMPULSERESPONSE > 0)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<N ; ++i )
- {
- yi = y[i];
-
- acc0 = ifir16(y10, awk_67) + ifir16(y32, awk_45);
- acc1 = ifir16(y54, awk_23) + ifir16(y76, awk_01);
- yi = PSHR32(SHL32(yi,LPC_SHIFT+1) + acc0 + acc1,LPC_SHIFT);
- y[i] = yi;
-
- y10 = funshift2(y32, y10);
- y32 = funshift2(y54, y32);
- y54 = funshift2(y76, y54);
- y76 = funshift2(ineg(yi), y76);
- }
-#if (TM_UNROLL && TM_UNROLL_COMPUTEIMPULSERESPONSE > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-}
-
-
-#define OVERRIDE_COMPUTE_IMPULSE_RESPONSE
-void compute_impulse_response(const Int16 *ak, const Int16 *awk1, const Int16 *awk2, Int16 *y, int N, int ord, char *stack)
-{
- TMDEBUG_ALIGNMEM(ak);
- TMDEBUG_ALIGNMEM(awk1);
- TMDEBUG_ALIGNMEM(awk2);
- TMDEBUG_ALIGNMEM(y);
-
- COMPUTEIMPULSERESPONSE_START();
- if ( ord == 10 )
- compute_impulse_response_10(ak,awk1,awk2,y,N);
- else
- compute_impulse_response_8(ak,awk1,awk2,y,N);
-
- (void)stack;
-
- COMPUTEIMPULSERESPONSE_STOP();
-}
-
-
-#define OVERRIDE_QMFSYNTH
-void qmf_synth(const Int16 *x1, const Int16 *x2, const Int16 *a, Int16 *y, int N, int M, Int32 *mem1, Int32 *mem2, char *stack)
- /* assumptions:
- all odd x[i] are zero -- well, actually they are left out of the array now
- N and M are multiples of 4 */
-{
- register int i, j;
- register int M2, N2;
- VARDECL(int *x12);
- M2 = M>>1;
- N2 = N>>1;
- ALLOC(x12, M2+N2, int);
-
-
- TMDEBUG_ALIGNMEM(a);
- TMDEBUG_ALIGNMEM(x12);
- TMDEBUG_ALIGNMEM(mem1);
- TMDEBUG_ALIGNMEM(mem2);
-
- QMFSYNTH_START();
-
-#if (TM_UNROLL && TM_UNROLL_QMFSYNTH > 0)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<N2 ; ++i )
- { register int index = N2-1-i;
- x12[i] = pack16lsb(x1[index],x2[index]);
- }
-
- for ( j= 0; j<M2 ; ++j)
- { register int index = (j << 1) + 1;
- x12[N2+j] = pack16lsb(mem1[index],mem2[index]);
- }
-#if (TM_UNROLL && TM_UNROLL_QMFSYNTH > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- for (i = 0; i < N2; i += 2)
- {
- register int y0, y1, y2, y3;
- register int x12_0;
-
- y0 = y1 = y2 = y3 = 0;
- x12_0 = x12[N2-2-i];
-
- for (j = 0; j < M2; j += 2)
- {
- register int x12_1;
- register int a10, a11, a0_0;
- register int _a10, _a11, _a0_0;
-
- a10 = ld32x(a,j);
- a11 = pack16msb(a10,a10);
- a0_0= pack16lsb(a10,ineg(sex16(a10)));
- x12_1 = x12[N2-1+j-i];
-
- y0 += ifir16(a0_0,x12_1);
- y1 += ifir16(a11, x12_1);
- y2 += ifir16(a0_0,x12_0);
- y3 += ifir16(a11 ,x12_0);
-
-
- _a10 = ld32x(a,j+1);
- _a11 = pack16msb(_a10,_a10);
- _a0_0 = pack16lsb(_a10,ineg(sex16(_a10)));
- x12_0 = x12[N2+j-i];
-
- y0 += ifir16(_a0_0,x12_0);
- y1 += ifir16(_a11, x12_0);
- y2 += ifir16(_a0_0,x12_1);
- y3 += ifir16(_a11 ,x12_1);
-
- }
- y[2*i] = EXTRACT16(SATURATE32(PSHR32(y0,15),32767));
- y[2*i+1] = EXTRACT16(SATURATE32(PSHR32(y1,15),32767));
- y[2*i+2] = EXTRACT16(SATURATE32(PSHR32(y2,15),32767));
- y[2*i+3] = EXTRACT16(SATURATE32(PSHR32(y3,15),32767));
- }
-
-#if (TM_UNROLL && TM_UNROLL_QMFSYNTH > 0)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for (i = 0; i < M2; ++i)
- { mem1[2*i+1] = asri(16,x12[i]);
- mem2[2*i+1] = sex16(x12[i]);
- }
-#if (TM_UNROLL && TM_UNROLL_QMFSYNTH > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- QMFSYNTH_STOP();
-}
-
-
-#define OVERRIDE_QMFDECOMP
-void qmf_decomp(const Int16 *xx, const Int16 *aa, Int16 *y1, Int16 *y2, int N, int M, Int16 *mem, char *stack)
-{
- VARDECL(int *_a);
- VARDECL(int *_x);
- register int i, j, k, MM, M2, N2;
- register int _xx10, _mm10;
- register int *_x2;
-
- M2=M>>1;
- N2=N>>1;
- MM=(M-2)<<1;
-
- ALLOC(_a, M2, int);
- ALLOC(_x, N2+M2, int);
- _x2 = _x + M2 - 1;
-
- TMDEBUG_ALIGNMEM(xx);
- TMDEBUG_ALIGNMEM(aa);
- TMDEBUG_ALIGNMEM(y1);
- TMDEBUG_ALIGNMEM(y2);
- TMDEBUG_ALIGNMEM(mem);
- TMDEBUG_ALIGNMEM(_a);
- TMDEBUG_ALIGNMEM(_x);
-
- QMFDECOMP_START();
-
- _xx10 = ld32(xx);
- _xx10 = dualasr(_xx10,1);
- _mm10 = ld32(mem);
- _x2[0] = pack16lsb(_xx10,_mm10);
-
-#if (TM_UNROLL && TM_UNROLL_QMFSYNTH > 0)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<M2 ; ++i )
- { register int a10;
-
- a10 = ld32x(aa,i);
- a10 = funshift2(a10, a10);
- _a[M2-i-1] = a10;
- }
-
- for ( j=1 ; j<N2 ; ++j )
- { register int _xx32;
-
- _xx32 = ld32x(xx,j);
- _xx32 = dualasr(_xx32,1);
- _x2[j] = funshift2(_xx32, _xx10);
- _xx10 = _xx32;
- }
-
- for ( k=1 ; k<M2; ++k )
- { register int _mm32;
-
- _mm32 = ld32x(mem,k);
- _mm10 = funshift2(_mm10,_mm10);
- _x2[-k] = pack16lsb(_mm10,_mm32);
- _mm10 = _mm32;
- }
-
-
- for ( i=N2-1,j=0 ; j<MM ; --i,j+=4 )
- { register int _xx;
-
- _xx = ld32x(xx,i);
- _xx = dualasr(_xx,1);
- _xx = funshift2(_xx,_xx);
- st32d(j, mem, _xx);
- }
-#if (TM_UNROLL && TM_UNROLL_QMFSYNTH > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- mem[M-2] = xx[N-M+1] >> 1;
-
-
- M2 >>= 1;
- for ( i=0 ; i<N2 ; ++i )
- { register int y1k, y2k;
-
- y1k = y2k = 0;
-
- for ( j=0 ; j<M2 ; j+=2 )
- { register int _aa, _acc0, _acc1;
- register int __xx10, __mm10, __acc0, __acc1, __aa;
- register int _tmp0, _tmp1, _tmp2, _tmp3;
-
- _xx10 = ld32x(_x, i+j);
- _mm10 = ld32x(_x2,i-j);
- _aa = ld32x(_a, j);
- _mm10 = funshift2(_mm10,_mm10);
- _acc0 = dspidualadd(_xx10, _mm10);
- _acc1 = dspidualsub(_xx10, _mm10);
-
- __xx10 = ld32x(_x, i+j+1);
- __mm10 = ld32x(_x2,i-j-1);
- __aa = ld32x(_a, j+1);
- __mm10 = funshift2(__mm10,__mm10);
- __acc0 = dspidualadd(__xx10, __mm10);
- __acc1 = dspidualsub(__xx10, __mm10);
-
- y1k += ifir16(_aa, _acc0);
- y1k += ifir16(__aa, __acc0);
-
- _tmp0 = pack16lsb(_aa,__aa);
- _tmp1 = pack16msb(_aa,__aa);
- _tmp2 = pack16lsb(_acc1, __acc1);
- _tmp3 = pack16msb(_acc1, __acc1);
-
- y2k -= ifir16(_tmp0, _tmp2);
- y2k += ifir16(_tmp1, _tmp3);
-
- }
-
- y1[i] = iclipi(PSHR32(y1k,15),32767);
- y2[i] = iclipi(PSHR32(y2k,15),32767);
- }
-
- QMFDECOMP_STOP();
-}
-
-#endif
-
diff --git a/3rdparty/speex/tmv/fixed_tm.h b/3rdparty/speex/tmv/fixed_tm.h
deleted file mode 100644
index a70a4202..00000000
--- a/3rdparty/speex/tmv/fixed_tm.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file fixed_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#ifndef FIXED_TM_H
-#define FIXED_TM_H
-
-#include <ops/custom_defs.h>
-
-
-#undef SATURATE
-#undef SATURATE16
-#undef SATURATE32
-#define SATURATE(x,a) iclipi(x,a)
-#define SATURATE16(x,a) iclipi(x,a)
-#define SATURATE32(x,a) iclipi(x,a)
-
-#undef EXTEND32
-#define EXTEND32(x) sex16(x)
-
-#undef NEG16
-#undef NEG32
-#define NEG16(x) ineg((int)(x))
-#define NEG32(x) ineg(x)
-
-#undef ABS
-#undef ABS16
-#undef ABS32
-#define ABS(x) iabs(x)
-#define ABS32(x) iabs(x)
-#define ABS16(x) iabs((int)(x))
-
-#undef MIN16
-#undef MIN32
-#define MIN16(a,b) imin((int)(a),(int)(b))
-#define MIN32(a,b) imin(a,b)
-
-#undef MAX16
-#undef MAX32
-#define MAX16(a,b) imax((int)(a),(int)(b))
-#define MAX32(a,b) imax(a,b)
-
-#undef ADD16
-#undef SUB16
-#undef ADD32
-#undef SUB32
-#undef MULT16_16
-#undef MULT16_16_16
-
-#define ADD16(a,b) ((int)(a) + (int)(b))
-#define SUB16(a,b) ((int)(a) - (int)(b))
-#define ADD32(a,b) ((int)(a) + (int)(b))
-#define SUB32(a,b) ((int)(a) - (int)(b))
-#define MULT16_16_16(a,b) ((int)(a) * (int)(b))
-#define MULT16_16(a,b) ((int)(a) * (int)(b))
-
-#if TM_DEBUGMEM_ALIGNNMENT
-#include <stdio.h>
-#define TMDEBUG_ALIGNMEM(x) \
- { if( ((int)(x) & (int)(0x00000003)) != 0 ) \
- { printf("memory not align. file: %s, line: %d\n", __FILE__, __LINE__); \
- } \
- }
-
-#else
-#define TMDEBUG_ALIGNMEM(x)
-#endif
-
-#endif
-
diff --git a/3rdparty/speex/tmv/kiss_fft_tm.h b/3rdparty/speex/tmv/kiss_fft_tm.h
deleted file mode 100644
index 6f8b985c..00000000
--- a/3rdparty/speex/tmv/kiss_fft_tm.h
+++ /dev/null
@@ -1,599 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file kiss_fft_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include "_kiss_fft_guts_tm.h"
-
-#ifdef TM_ASM
-
-#include "profile_tm.h"
-
-#ifdef FIXED_POINT
-
-#define OVERRIDE_KFBFLY2
-static void kf_bfly2(
- kiss_fft_cpx *Fout,
- const int fstride,
- const kiss_fft_cfg st,
- int m
- )
-{
- register int * restrict Fout2;
- register int * restrict tw1 = (int*)st->twiddles;
- register int i, j;
- register int _inv = !st->inverse;
-
- Fout2 = (int*)Fout + m;
-
- for ( i=0,j=0 ; i<m ; ++i,j+=4,tw1+=fstride )
- { register int tw_10, ff_10, f2_10;
-
- ff_10 = ld32x(Fout, i);
- f2_10 = ld32x(Fout2, i);
- tw_10 = ld32(tw1);
-
- if ( _inv )
- { TM_SHR(f2_10, f2_10, 1);
- TM_SHR(ff_10, ff_10, 1);
- }
-
- TM_MUL(tw_10, tw_10, f2_10);
- TM_SUB(f2_10, ff_10, tw_10);
- TM_ADD(ff_10, ff_10, tw_10);
-
- st32d(j, Fout2, f2_10);
- st32d(j, Fout, ff_10);
- }
-}
-
-#define OVERRIDE_KFBFLY4
-static void kf_bfly4(
- kiss_fft_cpx *Fout,
- const int fstride,
- const kiss_fft_cfg st,
- const int m
- )
-{
- register int * restrict tw1;
- register int * restrict tw2;
- register int * restrict tw3;
- register int * restrict Fout1;
- register int * restrict Fout2;
- register int * restrict Fout3;
- register int i, j;
- register int fstride2, fstride3;
- register int _inv = !st->inverse;
-
- tw3 = tw2 = tw1 = (int*)st->twiddles;
- fstride2 = fstride << 1;
- fstride3 = fstride * 3;
-
- Fout1 = (int*)Fout + m;
- Fout2 = (int*)Fout + (m << 1);
- Fout3 = (int*)Fout + (m * 3);
-
-
- for ( i=0,j=0 ; i<m ; ++i,j+=4,tw1+=fstride,tw2+=fstride2,tw3+=fstride3 )
- { register int sc0, sc1, sc2, sc3, sc4, sc5;
- register int ff0;
-
- sc0 = ld32x(Fout1,i);
- sc3 = ld32(tw1);
- sc1 = ld32x(Fout2, i);
- sc4 = ld32(tw2);
- sc2 = ld32x(Fout3, i);
- sc5 = ld32(tw3);
- ff0 = ld32x(Fout,i);
-
- if ( _inv )
- {
- TM_ADD(sc0, sc0, 0x00020002);
- TM_ADD(sc1, sc1, 0x00020002);
- TM_ADD(sc2, sc2, 0x00020002);
- TM_ADD(ff0, ff0, 0x00020002);
- TM_SHR(sc0, sc0, 2);
- TM_SHR(sc1, sc1, 2);
- TM_SHR(sc2, sc2, 2);
- TM_SHR(ff0, ff0, 2);
- }
-
- TM_MUL(sc0, sc0, sc3);
- TM_MUL(sc1, sc1, sc4);
- TM_MUL(sc2, sc2, sc5);
- TM_SUB(sc5, ff0, sc1);
- TM_ADD(ff0, ff0, sc1);
- TM_ADD(sc3, sc0, sc2);
- TM_SUB(sc4, sc0, sc2);
- TM_SUB(sc1, ff0, sc3);
- TM_ADD(ff0, ff0, sc3);
-
- st32d(j, Fout2, sc1);
- st32d(j, Fout, ff0);
-
- sc5 = funshift2(sc5, sc5);
-
- if ( _inv )
- { TM_ADD(ff0, sc5, sc4);
- TM_SUB(sc1, sc5, sc4);
- } else
- { TM_ADD(sc1, sc5, sc4);
- TM_SUB(ff0, sc5, sc4);
- }
-
- sc0 = funshift2(sc1, ff0);
- sc2 = funshift2(ff0, sc1);
-
- st32d(j, Fout1, sc0);
- st32d(j, Fout3, sc2);
- }
-}
-
-
-#define OVERRIDE_KFBFLY3
-static void kf_bfly3(
- kiss_fft_cpx *Fout,
- const int fstride,
- const kiss_fft_cfg st,
- int m
- )
-{
- register int * restrict tw1;
- register int * restrict tw2;
- register int * restrict Fout1;
- register int * restrict Fout2;
- register int epi;
- register int i, j;
- register int fstride2;
- register int _inv = !st->inverse;
-
- tw1 = tw2 = (int*)st->twiddles;
- Fout1 = (int*)Fout + m;
- Fout2 = (int*)Fout + (m << 1);
- epi = tw1[fstride*m];
- epi = pack16lsb(epi,epi);
- fstride2 = fstride << 1;
-
- for ( i=0,j=0 ; i<m ; ++i,j+=4,tw1+=fstride,tw2+=fstride2 )
- { register int sc0, sc1, sc2, sc3, sc4, sc5;
- register int ff0;
-
- sc1 = ld32x(Fout1,i);
- sc2 = ld32x(Fout2,i);
- sc3 = ld32(tw1);
- sc4 = ld32(tw2);
- ff0 = ld32x(Fout,i);
-
- if ( _inv )
- {
- TM_DIV(sc1, sc1, 3);
- TM_DIV(sc2, sc2, 3);
- TM_DIV(ff0, ff0, 3);
- }
-
- TM_MUL(sc1, sc1, sc3);
- TM_MUL(sc2, sc2, sc4);
- TM_ADD(sc3, sc1, sc2);
- TM_SUB(sc0, sc1, sc2);
- TM_SHR(sc4, sc3, 1);
- TM_SUB(sc1, ff0, sc4);
-
- sc0 = dspidualmul(sc0, epi);
- sc0 = funshift2(sc0, sc0);
-
- TM_ADD(ff0, ff0, sc3);
- TM_ADD(sc4, sc1, sc0);
- TM_SUB(sc5, sc1, sc0);
-
- sc1 = funshift2(sc4, sc5);
- sc2 = funshift2(sc5, sc4);
- sc2 = funshift2(sc2, sc2);
-
- st32d(j, Fout1, sc1);
- st32d(j, Fout, ff0);
- st32d(j, Fout2, sc2);
- }
-}
-
-
-#define OVERRIDE_KFBFLY5
-static void kf_bfly5(
- kiss_fft_cpx *Fout,
- const int fstride,
- const kiss_fft_cfg st,
- int m
- )
-{
- register int * restrict tw1;
- register int * restrict tw2;
- register int * restrict tw3;
- register int * restrict tw4;
- register int * restrict Fout1;
- register int * restrict Fout2;
- register int * restrict Fout3;
- register int * restrict Fout4;
- register int fstride2, fstride3, fstride4;
- register int i, j;
- register int yab_msb, yab_lsb, yba_msb, yba_lsb;
- register int _inv = !st->inverse;
-
-
- Fout1=(int*)Fout+m;
- Fout2=(int*)Fout+(m<<1);
- Fout3=(int*)Fout+(3 *m);
- Fout4=(int*)Fout+(m<<2);
-
- tw1 = tw2 = tw3 = tw4 = (int*)st->twiddles;
-
- i = tw1[fstride*m];
- yab_lsb = tw1[fstride*(m<<1)];
- yab_msb = pack16msb(i, yab_lsb);
- yab_lsb = pack16lsb(i, yab_lsb);
- yba_msb = funshift2(-sex16(yab_msb), yab_msb);
- yba_lsb = funshift2(yab_lsb, yab_lsb);
-
- fstride2 = fstride << 1;
- fstride3 = fstride * 3;
- fstride4 = fstride << 2;
-
- for ( i=0,j=0 ; i<m ; ++i,j+=4,tw1+=fstride,tw2+=fstride2,tw3+=fstride3,tw4+=fstride4 )
- { register int sc0, sc1, sc2, sc3, sc4, sc5, sc6;
- register int sc7, sc8, sc9, sc10, sc11, sc12;
- register int ff0, sc78_msb, sc78_lsb, sc90_msb, sc90_lsb;
-
- sc0 = ld32x(Fout,i);
- sc1 = ld32x(Fout1,i);
- sc2 = ld32x(Fout2,i);
- sc3 = ld32x(Fout3,i);
- sc4 = ld32x(Fout4,i);
- sc5 = ld32(tw1);
- sc6 = ld32(tw2);
- sc7 = ld32(tw3);
- sc8 = ld32(tw4);
-
- if ( _inv )
- {
- TM_DIV(sc0, sc0, 5);
- TM_DIV(sc1, sc1, 5);
- TM_DIV(sc2, sc2, 5);
- TM_DIV(sc3, sc3, 5);
- TM_DIV(sc4, sc4, 5);
- }
-
- ff0 = sc0;
-
- TM_MUL(sc1, sc1, sc5);
- TM_MUL(sc2, sc2, sc6);
- TM_MUL(sc3, sc3, sc7);
- TM_MUL(sc4, sc4, sc8);
- TM_ADD(sc7, sc1, sc4);
- TM_SUB(sc10,sc1, sc4);
- TM_ADD(sc8, sc2, sc3);
- TM_SUB(sc9, sc2, sc3);
-
- TM_ADD(ff0, ff0, sc7);
- TM_ADD(ff0, ff0, sc8);
- st32d(j, Fout, ff0);
-
- sc78_msb = pack16msb(sc7,sc8);
- sc78_lsb = pack16lsb(sc7,sc8);
- sc90_msb = pack16msb(sc10,sc9);
- sc90_lsb = pack16lsb(sc10,sc9);
-
- sc5 = pack16lsb( sround(ifir16(sc78_msb,yab_lsb)), sround(ifir16(sc78_lsb,yab_lsb)));
- sc6 = pack16lsb(-sround(ifir16(sc90_lsb,yab_msb)), sround(ifir16(sc90_msb,yab_msb)));
-
- TM_ADD(sc5, sc5, sc0);
- TM_SUB(sc1, sc5, sc6);
- TM_ADD(sc4, sc5, sc6);
- st32d(j, Fout1, sc1);
- st32d(j, Fout4, sc4);
-
- sc11 = pack16lsb( sround(ifir16(sc78_msb,yba_lsb)), sround(ifir16(sc78_lsb,yba_lsb)));
- sc12 = pack16lsb(-sround(ifir16(sc90_lsb,yba_msb)), sround(ifir16(sc90_msb,yba_msb)));
-
- TM_ADD(sc11, sc11, sc0);
- TM_ADD(sc2, sc11, sc12);
- TM_SUB(sc3, sc11, sc12);
- st32d(j, Fout2, sc2);
- st32d(j, Fout3, sc3);
-
- }
-}
-
-
-#define OVERRIDE_KF_BFLY_GENERIC
-static void kf_bfly_generic(
- kiss_fft_cpx * restrict Fout,
- const size_t fstride,
- const kiss_fft_cfg st,
- int m,
- int p
- )
-{
- register int _inv = !st->inverse;
- register int i, j, k, l;
- register int * restrict twiddles = (int*)st->twiddles;
- register int Norig = st->nfft;
-
- CHECKBUF(scratchbuf,nscratchbuf,p);
-
- for ( i=0; i<m; ++i )
- { register int sc10;
-
- for ( j=0,k=i ; j<p ; ++j,k+=m )
- { register int f10;
-
- f10 = ld32x(Fout,k);
-
- if ( _inv )
- { TM_DIV(f10, f10, p);
- }
-
- st32d(j<<2, scratchbuf, f10);
- }
-
- for ( j=0,k=i,sc10=ld32(scratchbuf) ; j<p ; ++j,k+=m )
- {
- register int twidx = 0;
- register int f10;
-
- for ( l=1,f10 = sc10 ; l<p ; ++l )
- { register int tw, sc;
-
- twidx += fstride * k;
- if ( twidx>=Norig )
- { twidx -= Norig;
- }
-
- sc = ld32x(scratchbuf,l);
- tw = ld32x(twiddles,twidx);
-
- TM_MUL(sc, sc, tw);
- TM_ADD(f10, f10, sc);
- }
- st32d(k<<2, Fout, f10);
- }
- }
-}
-
-#else
-
-#define OVERRIDE_KFBFLY2
-static void kf_bfly2(
- kiss_fft_cpx * Fout,
- const size_t fstride,
- const kiss_fft_cfg st,
- int m
- )
-{
- register kiss_fft_cpx * restrict Fout2;
- register kiss_fft_cpx * restrict tw1 = st->twiddles;
-
- Fout2 = Fout + m;
-
- do
- {
- register kiss_fft_cpx _fout2, _fout, t;
-
- _fout2 = *Fout2;
- _fout = *Fout;
-
- C_MUL ( t, _fout2, *tw1);
- C_SUB (_fout2, _fout, t);
- C_ADD (_fout, _fout, t);
-
- *Fout2 = _fout2;
- *Fout = _fout;
-
- tw1 += fstride;
- ++Fout2;
- ++Fout;
-
- } while ( --m );
-}
-
-#define OVERRIDE_KFBFLY4
-static void kf_bfly4(
- kiss_fft_cpx * Fout,
- const int fstride,
- const kiss_fft_cfg st,
- int m
- )
-{
- register kiss_fft_cpx * restrict tw1,* restrict tw2,* restrict tw3;
- register kiss_fft_cpx * restrict Fout1, * restrict Fout2, * restrict Fout3;
- register int _inv = !st->inverse;
-
- tw3 = tw2 = tw1 = st->twiddles;
-
- Fout1 = Fout + m;
- Fout2 = Fout + (m << 1);
- Fout3 = Fout + (m * 3);
-
- do {
-
- register kiss_fft_cpx _fout;
- register kiss_fft_cpx sc0, sc1, sc2, sc3, sc4, sc5;
-
- _fout = *Fout;
-
- C_MUL( sc0,*Fout1, *tw1);
- C_MUL( sc1,*Fout2, *tw2);
- C_MUL( sc2,*Fout3, *tw3);
- C_SUB( sc5, _fout, sc1);
- C_ADD( _fout, _fout, sc1);
- C_ADD( sc3, sc0, sc2);
- C_SUB( sc4, sc0, sc2);
- C_SUB(*Fout2, _fout, sc3);
- C_ADD( *Fout, _fout, sc3);
-
- tw1 += fstride;
- tw2 += (fstride << 1);
- tw3 += (fstride * 3);
-
- if ( _inv )
- {
- Fout1->r = sc5.r + sc4.i;
- Fout1->i = sc5.i - sc4.r;
- Fout3->r = sc5.r - sc4.i;
- Fout3->i = sc5.i + sc4.r;
- }
- else
- { Fout1->r = sc5.r - sc4.i;
- Fout1->i = sc5.i + sc4.r;
- Fout3->r = sc5.r + sc4.i;
- Fout3->i = sc5.i - sc4.r;
- }
-
-
- ++Fout; ++Fout1; ++Fout2; ++Fout3;
-
- } while(--m);
-}
-
-#define OVERRIDE_KFBFLY3
-static void kf_bfly3(
- kiss_fft_cpx * Fout,
- const int fstride,
- const kiss_fft_cfg st,
- int m
- )
-{
- register kiss_fft_cpx * restrict Fout1, * restrict Fout2;
- register kiss_fft_cpx * restrict tw1,* restrict tw2;
- register float epi;
-
- tw1 = tw2 = st->twiddles;
- epi = st->twiddles[fstride*m].i;
- Fout1 = Fout + m;
- Fout2 = Fout + (m << 1);
-
- do {
-
- register kiss_fft_cpx _fout;
- register kiss_fft_cpx sc0, sc1, sc2, sc3;
-
- _fout = *Fout;
-
- C_MUL( sc1, *Fout1, *tw1);
- C_MUL( sc2, *Fout2, *tw2);
- C_ADD( sc3, sc1, sc2);
- C_SUB( sc0, sc1, sc2);
- tw1 += fstride;
- tw2 += (fstride << 1);
-
- sc1.r = _fout.r - HALF_OF(sc3.r);
- sc1.i = _fout.i - HALF_OF(sc3.i);
-
- C_MULBYSCALAR(sc0, epi);
- C_ADD(*Fout, _fout, sc3);
-
- Fout2->r = sc1.r + sc0.i;
- Fout2->i = sc1.i - sc0.r;
-
- Fout1->r = sc1.i - sc0.i;
- Fout1->i = sc1.r + sc0.r;
-
- ++Fout; ++Fout1; ++Fout2;
-
- } while(--m);
-}
-
-#define OVERRIDE_KFBFLY5
-static void kf_bfly5(
- kiss_fft_cpx * Fout,
- const size_t fstride,
- const kiss_fft_cfg st,
- int m
- )
-{
- register kiss_fft_cpx * restrict Fout1,* restrict Fout2,* restrict Fout3,* restrict Fout4;
- register int u;
- register kiss_fft_cpx *tw;
- register float yar, yai, ybr, ybi;
-
- Fout1=Fout+m;
- Fout2=Fout+(m<<1);
- Fout3=Fout+(m*3);
- Fout4=Fout+(m<<2);
-
- tw = st->twiddles;
- yar = tw[fstride*m].r;
- yai = tw[fstride*m].i;
- ybr = tw[fstride*2*m].r;
- ybi = tw[fstride*2*m].i;
-
- for ( u=0; u<m; ++u )
- {
- register kiss_fft_cpx sc0, sc1, sc2, sc3, sc4, sc5, sc6, sc7, sc8, sc9, sc10, sc11, sc12;
-
- sc0 = *Fout;
-
- C_MUL( sc1,*Fout1, tw[u*fstride]);
- C_MUL( sc2,*Fout2, tw[2*u*fstride]);
- C_MUL( sc3,*Fout3, tw[3*u*fstride]);
- C_MUL( sc4,*Fout4, tw[4*u*fstride]);
-
- C_ADD( sc7, sc1, sc4);
- C_SUB( sc10, sc1, sc4);
- C_ADD( sc8, sc2, sc3);
- C_SUB( sc9, sc2, sc3);
-
- Fout->r = sc0.r + sc7.r + sc8.r;
- Fout->i = sc0.i + sc7.i + sc8.i;
-
- sc5.r = sc0.r + S_MUL(sc7.r,yar) + S_MUL(sc8.r,ybr);
- sc5.i = sc0.i + S_MUL(sc7.i,yar) + S_MUL(sc8.i,ybr);
-
- sc6.r = S_MUL(sc10.i,yai) + S_MUL(sc9.i,ybi);
- sc6.i = -S_MUL(sc10.r,yai) - S_MUL(sc9.r,ybi);
-
- C_SUB(*Fout1,sc5,sc6);
- C_ADD(*Fout4,sc5,sc6);
-
- sc11.r = sc0.r + S_MUL(sc7.r,ybr) + S_MUL(sc8.r,yar);
- sc11.i = sc0.i + S_MUL(sc7.i,ybr) + S_MUL(sc8.i,yar);
- sc12.r = - S_MUL(sc10.i,ybi) + S_MUL(sc9.i,yai);
- sc12.i = S_MUL(sc10.r,ybi) - S_MUL(sc9.r,yai);
- C_ADD(*Fout2,sc11,sc12);
- C_SUB(*Fout3,sc11,sc12);
-
- ++Fout1; ++Fout2; ++Fout3; ++Fout4;
- }
-}
-
-
-#endif
-
-#endif
diff --git a/3rdparty/speex/tmv/kiss_fftr_tm.h b/3rdparty/speex/tmv/kiss_fftr_tm.h
deleted file mode 100644
index 8005b22b..00000000
--- a/3rdparty/speex/tmv/kiss_fftr_tm.h
+++ /dev/null
@@ -1,235 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file kiss_fftr_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#include "_kiss_fft_guts_tm.h"
-
-#ifdef TM_ASM
-
-#include "profile_tm.h"
-
-#ifdef FIXED_POINT
-
-#define TM_NDIV(res,c,frac) \
- { register int c1, c0; \
- \
- c1 = -asri(16,(c)); \
- c0 = sex16((c)); \
- (res) = pack16lsb(sround(c1 * (32767/(frac))), sround(c0 * (32767/(frac))));\
- }
-
-
-#define OVERRIDE_KISS_FFTR
-void kiss_fftr(kiss_fftr_cfg st,const kiss_fft_scalar * restrict timedata, kiss_fft_cpx * restrict freqdata)
-{
- register int ncfft, ncfft2, k;
- register int * restrict tmpbuf;
- register int * restrict twiddles;
-
- ncfft = st->substate->nfft;
- ncfft2 = ncfft >> 1;
- tmpbuf = (int*)st->tmpbuf;
- twiddles = (int*)st->super_twiddles;
-
- TMDEBUG_ALIGNMEM(timedata);
- TMDEBUG_ALIGNMEM(freqdata);
- TMDEBUG_ALIGNMEM(tmpbuf);
- TMDEBUG_ALIGNMEM(twiddles);
-
- kiss_fft(st->substate , (const kiss_fft_cpx*)timedata, st->tmpbuf);
-
- {
- register int tdcr, tdci;
- tdcr = sround(st->tmpbuf[0].r * (32767/2));
- tdci = sround(st->tmpbuf[0].i * (32767/2));
-
- freqdata[0].r = tdcr + tdci;
- freqdata[ncfft].r = tdcr - tdci;
- freqdata[ncfft].i = freqdata[0].i = 0;
- }
-
- for ( k=1 ; k <= ncfft2 ; ++k )
- {
- register int fpk, fpnk, i, tw, f1k, f2k;
- register int fq1, fq2;
-
- i = ncfft-k;
-
- fpk = ld32x(tmpbuf,k);
- tw = ld32x(twiddles,k);
- fpnk = ld32x(tmpbuf,i);
-
- TM_DIV(fpk, fpk, 2);
- TM_NDIV(fpnk,fpnk,2);
-
- TM_ADD( f1k, fpk , fpnk );
- TM_SUB( f2k, fpk , fpnk );
- TM_MUL( tw , f2k, tw );
- TM_ADD( fq1, f1k, tw );
- TM_SHR( fq1, fq1, 1 );
- TM_SUB( fq2, f1k, tw );
- TM_NEGMSB( fq2, fq2 );
- TM_SHR( fq2, fq2, 1 );
-
-
- st32d( k<<2, freqdata, fq1 );
- st32d( i<<2, freqdata, fq2 );
- }
-}
-
-#define OVERRIDE_KISS_FFTRI
-void kiss_fftri(kiss_fftr_cfg st,const kiss_fft_cpx * restrict freqdata,kiss_fft_scalar * restrict timedata)
-{
- register int k, ncfft, ncfft2;
- register int * restrict tmpbuf;
- register int * restrict twiddles;
-
- ncfft = st->substate->nfft;
- ncfft2 = ncfft >> 1;
- tmpbuf = (int*)st->tmpbuf;
- twiddles = (int*)st->super_twiddles;
-
- TMDEBUG_ALIGNMEM(freqdata);
- TMDEBUG_ALIGNMEM(timedata);
- TMDEBUG_ALIGNMEM(tmpbuf);
- TMDEBUG_ALIGNMEM(twiddles);
-
- {
- register int fqr, fqnr;
-
- fqr = freqdata[0].r;
- fqnr = freqdata[ncfft].r;
-
- st->tmpbuf[0].r = fqr + fqnr;
- st->tmpbuf[0].i = fqr - fqnr;
- }
-
- for ( k=1 ; k <= ncfft2 ; ++k )
- {
- register int fk, fnkc, i, tw, fek, fok, tmp;
- register int tbk, tbn;
-
- i = ncfft-k;
-
- fk = ld32x(freqdata,k);
- tw = ld32x(twiddles,k);
- fnkc = pack16lsb(-freqdata[i].i, freqdata[i].r);
-
- TM_ADD (fek, fk, fnkc);
- TM_SUB (tmp, fk, fnkc);
- TM_MUL (fok, tmp, tw );
- TM_ADD (tbk, fek, fok);
- TM_SUB (tbn, fek, fok);
- TM_NEGMSB(tbn, tbn);
-
- st32d(k<<2, tmpbuf, tbk);
- st32d(i<<2, tmpbuf, tbn);
- }
- kiss_fft (st->substate, st->tmpbuf, (kiss_fft_cpx *) timedata);
-}
-
-#else
-
-#define OVERRIDE_KISS_FFTR
-void kiss_fftr(kiss_fftr_cfg st,const kiss_fft_scalar * restrict timedata,kiss_fft_cpx * restrict freqdata)
-{
- register kiss_fft_cpx fpnk, fpk, f1k, f2k, twk;
- register int k, ncfft;
- register kiss_fft_cpx * restrict tmpbuf, * restrict tw;
- register float tdcr, tdci;
-
- ncfft = st->substate->nfft;
- tmpbuf= st->tmpbuf;
- tw = st->super_twiddles;
-
- kiss_fft( st->substate , (const kiss_fft_cpx*)timedata, tmpbuf );
-
- tdcr = tmpbuf[0].r;
- tdci = tmpbuf[0].i;
-
- freqdata[0].r = tdcr + tdci;
- freqdata[ncfft].r = tdcr - tdci;
- freqdata[ncfft].i = freqdata[0].i = 0;
-
- for ( k=1;k <= ncfft/2 ; ++k )
- {
- fpk = tmpbuf[k];
- fpnk.r = tmpbuf[ncfft-k].r;
- fpnk.i = -tmpbuf[ncfft-k].i;
-
- C_ADD( f1k, fpk , fpnk );
- C_SUB( f2k, fpk , fpnk );
- C_MUL( twk, f2k , tw[k]);
-
- freqdata[k].r = HALF_OF(f1k.r + twk.r);
- freqdata[k].i = HALF_OF(f1k.i + twk.i);
- freqdata[ncfft-k].r = HALF_OF(f1k.r - twk.r);
- freqdata[ncfft-k].i = HALF_OF(twk.i - f1k.i);
- }
-}
-
-#define OVERRIDE_KISS_FFTRI
-void kiss_fftri(kiss_fftr_cfg st,const kiss_fft_cpx * restrict freqdata,kiss_fft_scalar * restrict timedata)
-{
- register int k, ncfft;
- register kiss_fft_cpx * restrict tmpbuf, * restrict tw;
-
-
- ncfft = st->substate->nfft;
- tmpbuf= st->tmpbuf;
- tw = st->super_twiddles;
-
- tmpbuf[0].r = freqdata[0].r + freqdata[ncfft].r;
- tmpbuf[0].i = freqdata[0].r - freqdata[ncfft].r;
-
- for (k = 1; k <= ncfft / 2; ++k)
- {
- register kiss_fft_cpx fk, fnkc, fek, fok, tmp;
- fk = freqdata[k];
- fnkc.r = freqdata[ncfft - k].r;
- fnkc.i = -freqdata[ncfft - k].i;
-
- C_ADD (fek, fk, fnkc);
- C_SUB (tmp, fk, fnkc);
- C_MUL (fok,tmp,tw[k]);
- C_ADD (tmpbuf[k],fek, fok);
- C_SUB (tmp, fek, fok);
- tmpbuf[ncfft - k].r = tmp.r;
- tmpbuf[ncfft - k].i = -tmp.i;
- }
- kiss_fft (st->substate, st->tmpbuf, (kiss_fft_cpx *) timedata);
-}
-
-#endif
-#endif
-
diff --git a/3rdparty/speex/tmv/lpc_tm.h b/3rdparty/speex/tmv/lpc_tm.h
deleted file mode 100644
index 05b0988a..00000000
--- a/3rdparty/speex/tmv/lpc_tm.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file lpc_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <ops/custom_defs.h>
-#include "profile_tm.h"
-
-#ifdef FIXED_POINT
-
-#define OVERRIDE_SPEEX_AUTOCORR
-void _spx_autocorr(const Int16 *x, Int16 *ac, int lag, int n)
-{
- register int i, j;
- register int shift, ac_shift;
- register int n_2;
- register int ac0;
-
- TMDEBUG_ALIGNMEM(x);
- TMDEBUG_ALIGNMEM(ac);
-
- _SPX_AUTOCORR_START();
-
- n_2 = n >> 1;
- ac0 = n + 1;
-
-#if (TM_UNROLL && TM_UNROLL__SPXAUTOCORR)
-#pragma TCS_unroll=5
-#pragma TCS_unrollexact=1
-#endif
- for ( j=0 ; j<n_2 ; j+=4 )
- { register int x10, x32, x54, x76;
-
- x10 = ld32x(x,j);
- x32 = ld32x(x,j+1);
- x54 = ld32x(x,j+2);
- x76 = ld32x(x,j+3);
-
- ac0 += ifir16(x10, x10) >> 8;
- ac0 += ifir16(x32, x32) >> 8;
- ac0 += ifir16(x54, x54) >> 8;
- ac0 += ifir16(x76, x76) >> 8;
- }
-#if (TM_UNROLL && TM_UNROLL__SPXAUTOCORR)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- shift = 8;
- while (shift && ac0<0x40000000)
- { shift--;
- ac0 <<= 1;
- }
-
- ac_shift = 18;
- while (ac_shift && ac0<0x40000000)
- { ac_shift--;
- ac0 <<= 1;
- }
-
- if ( shift == 0 )
- {
- for ( i=0 ; i<lag ; ++i )
- {
- register int acc0, acc1, acc2;
- register int k, l, m;
- register int x10, x32, y10, y32;
-
- acc2 = acc1 = acc0 = 0;
-
- for ( j=i ; j<16 ; ++j )
- { acc0 += (x[j] * x[j-i]);
- }
-
- for ( k=16,l=8,m=16-i ; k<n ; k+=4,l+=2,m+=4 )
- {
- x10 = ld32x(x,l);
- y10 = pack16lsb(x[m+1],x[m]);
- x32 = ld32x(x,l+1);
- y32 = pack16lsb(x[m+3],x[m+2]);
-
- acc1 += ifir16(x10,y10);
- acc2 += ifir16(x32,y32);
- }
-
- ac[i] = (acc0 + acc1 + acc2) >> ac_shift;
- }
- } else
- {
- for ( i=0 ; i<lag ; ++i )
- {
- register int acc0, acc1, acc2;
- register int k, l, m;
- register int x10, x32, y10, y32;
-
- acc2 = acc1 = acc0 = 0;
-
- for ( j=i ; j<16 ; ++j )
- { acc0 += (x[j] * x[j-i]) >> shift;
- }
-
- for ( k=16,l=8,m=16-i ; k<n ; k+=4,l+=2,m+=4 )
- {
- x10 = ld32x(x,l);
- y10 = pack16lsb(x[m+1],x[m]);
- x32 = ld32x(x,l+1);
- y32 = pack16lsb(x[m+3],x[m+2]);
-
- acc1 += ifir16(x10,y10) >> shift;
- acc2 += ifir16(x32,y32) >> shift;
- }
-
- ac[i] = (acc0 + acc1 + acc2) >> ac_shift;
- }
- }
-
- _SPX_AUTOCORR_STOP();
-}
-
-#endif
diff --git a/3rdparty/speex/tmv/lsp_tm.h b/3rdparty/speex/tmv/lsp_tm.h
deleted file mode 100644
index 879d37e8..00000000
--- a/3rdparty/speex/tmv/lsp_tm.h
+++ /dev/null
@@ -1,310 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file lsp_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <ops/custom_defs.h>
-#include "profile_tm.h"
-
-
-#ifdef FIXED_POINT
-
-#define OVERRIDE_LSP_INTERPOLATE
-void lsp_interpolate(Int16 *old_lsp, Int16 *new_lsp, Int16 *interp_lsp, int len, int subframe, int nb_subframes)
-{
- register int tmp = DIV32_16(SHL32(EXTEND32(1 + subframe),14),nb_subframes);
- register int tmp2 = 16384-tmp;
- register int in_0, in_1, factor, out_1, out_2, olsp, nlsp, ilsp;
- register int i;
-
- TMDEBUG_ALIGNMEM(old_lsp);
- TMDEBUG_ALIGNMEM(new_lsp);
- TMDEBUG_ALIGNMEM(interp_lsp);
-
- LSPINTERPOLATE_START();
-
- factor = pack16lsb(tmp,tmp2);
-
- len >>= 1;
- for ( i=0 ; i<len ; ++i )
- {
- olsp = ld32x(old_lsp,i); // olsp[i+1],olsp[i]
- nlsp = ld32x(new_lsp,i); // nlsp[i+1],nlsp[i]
-
- in_0 = pack16lsb(nlsp,olsp);
- in_1 = pack16msb(nlsp,olsp);
-
- out_1 = 8192 + ifir16(in_0,factor);
- out_2 = 8192 + ifir16(in_1,factor);
-
- ilsp = pack16lsb(out_2 >> 14, out_1 >> 14);
- st32d(i << 2, interp_lsp, ilsp);
-
- }
-
- LSPINTERPOLATE_STOP();
-}
-
-
-#define OVERRIDE_CHEB_POLY_EVA
-static inline Int32 cheb_poly_eva(Int16 *coef, Int16 x, int m, char *stack)
-{
- register int c10, c32, c54;
- register int sum, b0, f0, f1, f2, f3;
- register int xx, f32, f10;
-
- CHEBPOLYEVA_START();
-
- xx = sex16(x);
- b0 = iclipi(xx,16383);
-
-#if 0
- c10 = ld32(coef);
- c32 = ld32x(coef,1);
- c54 = ld32x(coef,2);
-#else
- c10 = pack16lsb(coef[1],coef[0]);
- c32 = pack16lsb(coef[3],coef[2]);
- c54 = pack16lsb(coef[5],coef[4]);
-#endif
-
- f0 = ((xx * b0) >> 13) - 16384;
- f1 = ((xx * f0) >> 13) - b0;
- f2 = ((xx * f1) >> 13) - f0;
-
- if ( m == 4 )
- { sum = sex16(c54);
- f32 = pack16lsb(xx,f0);
- f10 = pack16lsb(f1,f2);
-
- } else
- { sum = asri(16,c54);
- sum += ((sex16(c54) * xx) + 8192) >> 14;
-
- f3 = ((xx * f2) >> 13) - f1;
- f32 = pack16lsb(f0,f1);
- f10 = pack16lsb(f2,f3);
- }
-
- sum += (ifir16(c32,f32) + 8192) >> 14;
- sum += (ifir16(c10,f10) + 8192) >> 14;
-
-#ifndef REMARK_ON
- (void)stack;
-#endif
-
- CHEBPOLYEVA_STOP();
- return sum;
-}
-
-
-#define OVERRIDE_LSP_ENFORCE_MARGIN
-void lsp_enforce_margin(Int16 *lsp, int len, Int16 margin)
-{
- register int i;
- register int m = margin;
- register int m2 = 25736-margin;
- register int lsp0, lsp1, lsp2;
-
- TMDEBUG_ALIGNMEM(lsp);
-
- LSPENFORCEMARGIN_START();
-
- lsp0 = ld32(lsp);
- lsp1 = asri(16,lsp0);
- lsp0 = sex16(lsp0);
- lsp2 = lsp[len-1];
-
- if ( lsp0 < m )
- { lsp0 = m;
- lsp[0] = m;
- }
-
- if ( lsp2 > m2 )
- { lsp2 = m2;
- lsp[len-1] = m2;
- }
-
- for ( i=1 ; i<len-1 ; ++i )
- {
- lsp0 += m;
- lsp2 = lsp[i+1];
- m2 = lsp2 - m;
-
- if ( lsp1 < lsp0 )
- { lsp1 = lsp0;
- lsp[i] = lsp0;
- }
-
- if ( lsp1 > m2 )
- { lsp1 = (lsp1 >> 1) + (m2 >> 1);
- lsp[i] = lsp1;
- }
-
- lsp0 = lsp1;
- lsp1 = lsp2;
- }
-
- LSPENFORCEMARGIN_STOP();
-}
-
-
-#define OVERRIDE_LSP_TO_LPC
-void lsp_to_lpc(Int16 *freq, Int16 *ak,int lpcrdr, char *stack)
-{
- VARDECL(Int16 *freqn);
- VARDECL(int **xp);
- VARDECL(int *xpmem);
- VARDECL(int **xq);
- VARDECL(int *xqmem);
-
- register int i, j, k;
- register int xout1,xout2,xin;
- register int m;
-
- LSPTOLPC_START();
-
- m = lpcrdr>>1;
-
- /*
-
- Reconstruct P(z) and Q(z) by cascading second order polynomials
- in form 1 - 2cos(w)z(-1) + z(-2), where w is the LSP frequency.
- In the time domain this is:
-
- y(n) = x(n) - 2cos(w)x(n-1) + x(n-2)
-
- This is what the ALLOCS below are trying to do:
-
- int xp[m+1][lpcrdr+1+2]; // P matrix in QIMP
- int xq[m+1][lpcrdr+1+2]; // Q matrix in QIMP
-
- These matrices store the output of each stage on each row. The
- final (m-th) row has the output of the final (m-th) cascaded
- 2nd order filter. The first row is the impulse input to the
- system (not written as it is known).
-
- The version below takes advantage of the fact that a lot of the
- outputs are zero or known, for example if we put an inpulse
- into the first section the "clock" it 10 times only the first 3
- outputs samples are non-zero (it's an FIR filter).
- */
-
- ALLOC(xp, (m+1), int*);
- ALLOC(xpmem, (m+1)*(lpcrdr+1+2), int);
-
- ALLOC(xq, (m+1), int*);
- ALLOC(xqmem, (m+1)*(lpcrdr+1+2), int);
-
- for ( i=0; i<=m; i++ )
- { xp[i] = xpmem + i*(lpcrdr+1+2);
- xq[i] = xqmem + i*(lpcrdr+1+2);
- }
-
- /* work out 2cos terms in Q14 */
-
- ALLOC(freqn, lpcrdr, Int16);
- for ( j=0,k=0 ; j<m ; ++j,k+=2 )
- { register int f;
-
- f = ld32x(freq,j);
-
- freqn[k] = ANGLE2X(sex16(f));
- freqn[k+1] = ANGLE2X(asri(16,f));
- }
-
- #define QIMP 21 /* scaling for impulse */
- xin = SHL32(EXTEND32(1), (QIMP-1)); /* 0.5 in QIMP format */
-
- /* first col and last non-zero values of each row are trivial */
-
- for(i=0;i<=m;i++)
- { xp[i][1] = 0;
- xp[i][2] = xin;
- xp[i][2+2*i] = xin;
- xq[i][1] = 0;
- xq[i][2] = xin;
- xq[i][2+2*i] = xin;
- }
-
- /* 2nd row (first output row) is trivial */
-
- xp[1][3] = -MULT16_32_Q14(freqn[0],xp[0][2]);
- xq[1][3] = -MULT16_32_Q14(freqn[1],xq[0][2]);
-
- xout1 = xout2 = 0;
-
- for( i=1 ; i<m ; ++i)
- { register int f, f0, f1, m0, m1;
-
- k = 2*(i+1)-1;
- f = ld32x(freqn,i);
- f0 = sex16(f);
- f1 = asri(16,f);
-
- for( j=1 ; j<k ; ++j)
- { register int _m0, _m1;
-
- _m0 = MULT16_32_Q14(f0,xp[i][j+1]);
- xp[i+1][j+2] = ADD32(SUB32(xp[i][j+2], _m0), xp[i][j]);
-
- _m1 = MULT16_32_Q14(f1,xq[i][j+1]);
- xq[i+1][j+2] = ADD32(SUB32(xq[i][j+2], _m1), xq[i][j]);
- }
-
-
- m0 = MULT16_32_Q14(f0,xp[i][j+1]);
- xp[i+1][j+2] = SUB32(xp[i][j], m0);
- m1 = MULT16_32_Q14(f1,xq[i][j+1]);
- xq[i+1][j+2] = SUB32(xq[i][j], m1);
- }
-
-
- for( i=0,j=3 ; i<lpcrdr ; ++j,++i )
- { register int _a0, _xp0, _xq0;
-
- _xp0 = xp[m][j];
- _xq0 = xq[m][j];
-
- _a0 = PSHR32(_xp0 + xout1 + _xq0 - xout2, QIMP-13);
- xout1 = _xp0;
- xout2 = _xq0;
-
- ak[i] = iclipi(_a0,32767);
- }
-
- LSPTOLPC_STOP();
-}
-
-
-#endif
diff --git a/3rdparty/speex/tmv/ltp_tm.h b/3rdparty/speex/tmv/ltp_tm.h
deleted file mode 100644
index 741a256c..00000000
--- a/3rdparty/speex/tmv/ltp_tm.h
+++ /dev/null
@@ -1,479 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file ltp_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#include <ops/custom_defs.h>
-#include "profile_tm.h"
-
-#ifdef FIXED_POINT
-
-#define OVERRIDE_INNER_PROD
-Int32 inner_prod(const Int16 * restrict x, const Int16 * restrict y, int len)
-{
- register int sum = 0;
-
- INNERPROD_START();
-
- if ( (int)x & 0x03 == 0 && (int)y & 0x03 == 0 )
- {
- register int i;
-
- len >>= 1;
- for ( i=0 ; i<len ; i+=4 )
- {
- register int x0, x1, y0, y1, x2, x3, y2, y3;
-
- x0 = ld32x(x,i);
- y0 = ld32x(x,i);
- x1 = ld32x(x,i+1);
- y1 = ld32x(y,i+1);
- sum += (ifir16(x0,y0) + ifir16(x1,y1)) >> 6;
-
- x2 = ld32x(x,i+2);
- y2 = ld32x(x,i+2);
- x3 = ld32x(x,i+3);
- y3 = ld32x(x,i+3);
- sum += (ifir16(x2,y2) + ifir16(x3,y3)) >> 6;
-
- }
- } else
- {
- len >>= 3;
- while( len-- )
- {
- register int x0, x1, x2, x3, y0, y1, y2, y3;
-
- x0 = pack16lsb(x[0],x[1]);
- y0 = pack16lsb(y[0],y[1]);
- x1 = pack16lsb(x[2],x[3]);
- y1 = pack16lsb(y[2],y[3]);
- sum += (ifir16(x0,y0) + ifir16(x1,y1)) >> 6;
-
- x2 = pack16lsb(x[4],x[5]);
- y2 = pack16lsb(y[4],y[5]);
- x3 = pack16lsb(x[6],x[7]);
- y3 = pack16lsb(y[6],y[7]);
- sum += (ifir16(x2,y2) + ifir16(x3,y3)) >> 6;
-
- x += 8;
- y += 8;
- }
- }
-
- INNERPROD_STOP();
- return sum;
-}
-
-#define OVERRIDE_PITCH_XCORR
-void pitch_xcorr(const Int16 *_x, const Int16 *_y, Int32 *corr, int len, int nb_pitch, char *stack)
-{
- register int sum_1, sum_2, sum_3, sum_4;
- register int y10, y32, y54, y76, y21, y43, y65;
- register int x10, x32;
- register int i, j, k, limit;
-
- TMDEBUG_ALIGNMEM(_x);
- TMDEBUG_ALIGNMEM(_y);
-
- PITCHXCORR_START();
-
- limit = nb_pitch >> 1;
- len >>= 1;
-
- for (i=0 ; i<limit ; i+=2 )
- {
- sum_1 = sum_2 = sum_3 = sum_4 = 0;
-
- y10 = ld32x(_y,i);
- y32 = ld32x(_y,i+1);
-
- for ( j=0 ; j<len ; j+=2 )
- {
- x10 = ld32x(_x,j);
- x32 = ld32x(_x,j+1);
- y54 = ld32x(_y,i+j+2);
- y76 = ld32x(_y,i+j+3);
-
- sum_1 += (ifir16(x10,y10) + ifir16(x32,y32)) >> 6;
- sum_3 += (ifir16(x10,y32) + ifir16(x32,y54)) >> 6;
-
- y21 = funshift2(y32,y10);
- y43 = funshift2(y54,y32);
- y65 = funshift2(y76,y54);
-
- sum_2 += (ifir16(x10,y21) + ifir16(x32,y43)) >> 6;
- sum_4 += (ifir16(x10,y43) + ifir16(x32,y65)) >> 6;
-
- y10 = y54;
- y32 = y76;
-
- }
-
- k = i << 1;
- corr[nb_pitch-1-k]=sum_1;
- corr[nb_pitch-2-k]=sum_2;
- corr[nb_pitch-3-k]=sum_3;
- corr[nb_pitch-4-k]=sum_4;
- }
-
-#ifndef REMARK_ON
- (void)stack;
-#endif
-
- PITCHXCORR_STOP();
-}
-
-#ifndef ttisim
-#define OVERRIDE_PITCH_GAIN_SEARCH_3TAP_VQ
-static int pitch_gain_search_3tap_vq
-(
- const signed char *gain_cdbk,
- int gain_cdbk_size,
- Int16 *C16,
- Int16 max_gain
-)
-{
- register int pp = 0x00400040, p=64;
- register int g10, g2, g20, g21, g02, g22, g01;
- register int cb0, cb1, cb2, cb5432;
- register int C10, C32, C54, C76, C98, C83, C2;
- register int acc0, acc1, acc2, acc3, sum, gsum, bsum=-VERY_LARGE32;
- register int i, best_cdbk=0;
- register Int16 tmp;
-
- TMDEBUG_ALIGNMEM(C16);
- TMDEBUG_ALIGNMEM(gain_cdbk+2);
-
- PITCHGAINSEARCH3TAPVQ_START();
-
- tmp = ild16(gain_cdbk);
- C98 = ld32x(C16,4);
- C32 = ld32x(C16,1);
- C10 = ld32(C16);
- C54 = ld32x(C16,2);
- C76 = ld32x(C16,3);
-
- cb0 = sex8(tmp);
- cb1 = sex8(tmp>>8);
- C83 = funshift2(C98,C32);
- C2 = sex16(C32);
- gain_cdbk += 2;
-
-
-#if (TM_UNROLL && TM_UNROLL_PITCHGAINSEARCH3TAPVQ > 0)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<gain_cdbk_size ; ++i )
- {
- cb5432 = ld32x(gain_cdbk,i);
- cb2 = sex8(cb5432);
- gsum = sex8(cb5432>>8);
- sum = 0;
-
- g10 = pack16lsb(cb1 + 32, cb0 + 32);
- g2 = cb2 + 32;
- g02 = pack16lsb(g10, g2);
- acc0 = dspidualmul(g10,pp);
- sum += ifir16(acc0,C10);
- sum += p * g2 * C2;
-
- g22 = pack16lsb(g02, g02);
- g01 = funshift2(g10, g10);
-
- acc1 = dspidualmul(g22, g01);
- sum -= ifir16(acc1, C54);
- acc2 = dspidualmul(g10, g10);
- sum -= ifir16(acc2, C76);
-
- g20 = pack16lsb(g2, g10);
- g21 = funshift2(g2, g10);
- acc3 = dspidualmul(g20, g21);
- sum -= ifir16(acc3, C83);
-
-
- if ( sum>bsum && gsum<=max_gain )
- { bsum = sum;
- best_cdbk=i;
- }
-
- cb0 = sex8(cb5432 >> 16);
- cb1 = asri(24,cb5432);
- }
-#if (TM_UNROLL && TM_UNROLL_PITCHGAINSEARCH3TAPVQ > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- PITCHGAINSEARCH3TAPVQ_STOP();
- return best_cdbk;
-}
-#endif
-
-#define OVERRIDE_COMPUTE_PITCH_ERROR
-#ifndef OVERRIDE_PITCH_GAIN_SEARCH_3TAP_VQ
-inline Int32 compute_pitch_error(Int16 *C, Int16 *g, Int16 pitch_control)
-{
- register int c10, c32, c54, c76, c98, c83;
- register int g10, g32, g02, g22, g01, g21, g20;
- register int pp, tmp0, tmp1, tmp2, tmp3;
- register int sum = 0;
-
-
- COMPUTEPITCHERROR_START();
-
- g10 = ld32(g);
- g32 = ld32x(g,1);
- pp = pack16lsb(pitch_control,pitch_control);
- c10 = ld32(C);
- c32 = ld32x(C,1);
- g02 = pack16lsb(g10,g32);
- g22 = pack16lsb(g32,g32);
- g01 = funshift2(g10,g10);
- tmp0 = dspidualmul(g10,pp);
- sum += ifir16(tmp0, c10);
- sum += pitch_control * sex16(g32) * sex16(c32);
- c54 = ld32x(C,2);
- c76 = ld32x(C,3);
- c98 = ld32x(C,4);
- tmp1 = dspidualmul(g22,g01);
- sum -= ifir16(tmp1, c54);
- tmp2 = dspidualmul(g10,g10);
- sum -= ifir16(tmp2,c76);
- c83 = funshift2(c98,c32);
- g20 = funshift2(g02,g02);
- g21 = funshift2(g02,g10);
- tmp3 = dspidualmul(g20,g21);
- sum -= ifir16(tmp3,c83);
-
- COMPUTEPITCHERROR_STOP();
- return sum;
-}
-#endif
-
-#define OVERRIDE_OPEN_LOOP_NBEST_PITCH
-void open_loop_nbest_pitch(Int16 *sw, int start, int end, int len, int *pitch, Int16 *gain, int N, char *stack)
-{
- VARDECL(int *best_score);
- VARDECL(int *best_ener);
- VARDECL(Int32 *corr);
- VARDECL(Int16 *corr16);
- VARDECL(Int16 *ener16);
- register int i, j, k, l, N4, N2;
- register int _sw10, _sw32, _s0, _s2, limit;
- register int *energy;
- register int cshift=0, eshift=0;
- register int scaledown = 0;
- register int e0, _energy0;
-
- ALLOC(corr16, end-start+1, Int16);
- ALLOC(ener16, end-start+1, Int16);
- ALLOC(corr, end-start+1, Int32);
- ALLOC(best_score, N, int);
- ALLOC(best_ener, N, int);
- energy = corr;
- N4 = N << 2;
- N2 = N >> 1;
-
- TMDEBUG_ALIGNMEM(sw);
- TMDEBUG_ALIGNMEM(pitch);
- TMDEBUG_ALIGNMEM(gain);
- TMDEBUG_ALIGNMEM(best_score);
- TMDEBUG_ALIGNMEM(best_ener);
- TMDEBUG_ALIGNMEM(corr16);
- TMDEBUG_ALIGNMEM(ener16);
-
- OPENLOOPNBESTPITCH_START();
-
- for ( i=0 ; i<N4 ; i+=4 )
- { st32d(i,best_score,-1);
- st32d(i,best_ener,0);
- st32d(i,pitch,start);
- }
-
- for ( j=asri(1,-end) ; j<N2 ; ++j )
- { register int _sw10;
-
- _sw10 = ld32x(sw,j);
- _sw10 = dspidualabs(_sw10);
-
- if ( _sw10 & 0xC000C000 )
- { scaledown = 1;
- break;
- }
- }
-
- if ( scaledown )
- {
- for ( j=asri(1,-end),k=asli(1,-end) ; j<N2 ; ++j,k+=4 )
- { register int _sw10;
-
- _sw10 = ld32x(sw,j);
- _sw10 = dualasr(_sw10,1);
- st32d(k, sw, _sw10);
- }
- }
-
- energy[0] = _energy0 = inner_prod(sw-start, sw-start, len);
- e0 = inner_prod(sw, sw, len);
-
- j=asri(1,-start-1); k=j+20;
- _sw10 = ld32x(sw,j);
- _sw32 = ld32x(sw,k);
- limit = end-1-start;
-
- for ( i=1,--j,--k ; i<limit ; i+=2,--j,--k )
- { register int _energy1, __sw10, __sw32, __s0, __s2;
-
- _s0 = sex16(_sw10);
- _s2 = sex16(_sw32);
- _energy1 = (_energy0 + ((_s0 * _s0) >> 6)) - ((_s2 * _s2) >> 6);
- _energy0 = imax(0,_energy1);
- energy[i] = _energy0;
- __sw10 = ld32x(sw,j);
- __sw32 = ld32x(sw,k);
- __s0 = asri(16,__sw10);
- __s2 = asri(16,__sw32);
- _energy1 = (_energy0 + ((__s0 * __s0) >> 6)) - ((__s2 * __s2) >> 6);
- _energy0 = imax(0,_energy1);
- energy[i+1] = _energy0;
- _sw10 = __sw10;
- _sw32 = __sw32;
- }
-
- _s0 = sex16(_sw10);
- _s2 = sex16(_sw32);
- _energy0 = imax(0,(_energy0 + ((_s0 * _s0) >> 6)) - ((_s2 * _s2) >> 6));
- energy[i] = _energy0;
-
-
- eshift = normalize16(energy, ener16, 32766, end-start+1);
- /* In fixed-point, this actually overrites the energy array (aliased to corr) */
- pitch_xcorr(sw, sw-end, corr, len, end-start+1, stack);
- /* Normalize to 180 so we can square it and it still fits in 16 bits */
- cshift = normalize16(corr, corr16, 180, end-start+1);
- /* If we scaled weighted input down, we need to scale it up again (OK, so we've just lost the LSB, who cares?) */
-
- if ( scaledown )
- {
- for ( j=asri(1,-end),k=asli(1,-end) ; j<N2 ; ++j,k+=4 )
- { register int _sw10;
-
- _sw10 = ld32x(sw,j);
- _sw10 = dualasl(_sw10,1);
- st32d(k, sw, _sw10);
- }
- }
-
- /* Search for the best pitch prediction gain */
- for ( i=start,l=0 ; i<end ; i+=2,++l )
- { register int _corr16, _c0, _c1;
- register int _ener16, _e0, _e1;
-
- _corr16 = ld32x(corr16,l);
- _corr16 = dspidualmul(_corr16,_corr16);
- _c0 = sex16(_corr16);
- _c1 = asri(16,_corr16);
-
- _ener16 = ld32x(ener16,l);
- _ener16 = dspidualadd(_ener16,0x00010001);
- _e0 = sex16(_ener16);
- _e1 = asri(16,_ener16);
-
- /* Instead of dividing the tmp by the energy, we multiply on the other side */
-
- if ( (_c0 * best_ener[N-1]) > (best_score[N-1] * _e0) )
- {
- best_score[N-1] = _c0;
- best_ener[N-1] = _e0;
- pitch[N-1] = i;
-
- for( j=0 ; j<N-1 ; ++j )
- { if ( (_c0 * best_ener[j]) > best_score[j] * _e0 )
- { for( k=N-1 ; k>j ; --k )
- {
- best_score[k]=best_score[k-1];
- best_ener[k]=best_ener[k-1];
- pitch[k]=pitch[k-1];
- }
-
- best_score[j]=_c0;
- best_ener[j]=_e0;
- pitch[j]=i;
- break;
- }
- }
- }
-
- if ( (_c1 * best_ener[N-1]) > (best_score[N-1] * _e1) )
- {
- best_score[N-1] = _c1;
- best_ener[N-1] = _e1;
- pitch[N-1] = i+1;
-
- for( j=0 ; j<N-1 ; ++j )
- { if ( (_c1 * best_ener[j]) > best_score[j] * _e1 )
- { for( k=N-1 ; k>j ; --k )
- {
- best_score[k]=best_score[k-1];
- best_ener[k]=best_ener[k-1];
- pitch[k]=pitch[k-1];
- }
-
- best_score[j]=_c1;
- best_ener[j]=_e1;
- pitch[j]=i+1;
- break;
- }
- }
- }
- }
-
- /* Compute open-loop gain if necessary */
- if (gain)
- {
- for (j=0;j<N;j++)
- {
- spx_word16_t g;
- i=pitch[j];
- g = DIV32(SHL32(EXTEND32(corr16[i-start]),cshift), 10+SHR32(MULT16_16(spx_sqrt(e0),spx_sqrt(SHL32(EXTEND32(ener16[i-start]),eshift))),6));
- gain[j] = imax(0,g);
- }
- }
-
- OPENLOOPNBESTPITCH_STOP();
-}
-
-
-#endif
-
diff --git a/3rdparty/speex/tmv/mdf_tm.h b/3rdparty/speex/tmv/mdf_tm.h
deleted file mode 100644
index 0a6128e9..00000000
--- a/3rdparty/speex/tmv/mdf_tm.h
+++ /dev/null
@@ -1,1192 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file mdf_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#include <ops/custom_defs.h>
-#include "profile_tm.h"
-
-// shifted power spectrum to fftwrap.c so that optimisation can be shared between mdf.c and preprocess.c
-#define OVERRIDE_POWER_SPECTRUM
-
-#ifdef FIXED_POINT
-
-#else
-
-#define OVERRIDE_FILTER_DC_NOTCH16
-void filter_dc_notch16(
- const spx_int16_t * restrict in,
- float radius,
- float * restrict out,
- int len,
- float * restrict mem
-)
-{
- register int i;
- register float den2, r1;
- register float mem0, mem1;
-
- FILTERDCNOTCH16_START();
-
- r1 = 1 - radius;
- den2 = (radius * radius) + (0.7 * r1 * r1);
- mem0 = mem[0];
- mem1 = mem[1];
-
-#if (TM_UNROLL && TM_UNROLL_FILTERDCNOTCH16)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<len ; ++i )
- {
- register float vin = in[i];
- register float vout = mem0 + vin;
- register float rvout = radius * vout;
-
- mem0 = mem1 + 2 * (-vin + rvout);
- mem1 = vin - (den2 * vout);
-
- out[i] = rvout;
- }
-#if (TM_UNROLL && TM_UNROLL_FILTERDCNOTCH16)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- mem[0] = mem0;
- mem[1] = mem1;
-
- FILTERDCNOTCH16_STOP();
-}
-
-#define OVERRIDE_MDF_INNER_PROD
-float mdf_inner_prod(
- const float * restrict x,
- const float * restrict y,
- int len
-)
-{
- register float sum = 0;
-
- MDFINNERPROD_START();
-
- len >>= 1;
-
-#if (TM_UNROLL && TM_UNROLL_MDFINNERPRODUCT)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- while(len--)
- {
- register float acc0, acc1;
-
- acc0 = (*x++) * (*y++);
- acc1 = (*x++) * (*y++);
-
- sum += acc0 + acc1;
- }
-#if (TM_UNROLL && TM_UNROLL_MDFINNERPRODUCT)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- MDFINNERPROD_STOP();
-
- return sum;
-}
-
-#define OVERRIDE_SPECTRAL_MUL_ACCUM
-void spectral_mul_accum(
- const float * restrict X,
- const float * restrict Y,
- float * restrict acc,
- int N, int M
-)
-{
- register int i, j;
- register float Xi, Yi, Xii, Yii;
- register int _N;
-
- SPECTRALMULACCUM_START();
-
- acc[0] = X[0] * Y[0];
- _N = N-1;
-
- for ( i=1 ; i<_N ; i+=2 )
- {
- Xi = X[i];
- Yi = Y[i];
- Xii = X[i+1];
- Yii = Y[i+1];
-
- acc[i] = (Xi * Yi - Xii * Yii);
- acc[i+1]= (Xii * Yi + Xi * Yii);
- }
-
- acc[_N] = X[_N] * Y[_N];
-
- for ( j=1,X+=N,Y+=N ; j<M ; j++ )
- {
- acc[0] += X[0] * Y[0];
-
- for ( i=1 ; i<N-1 ; i+=2 )
- {
- Xi = X[i];
- Yi = Y[i];
- Xii = X[i+1];
- Yii = Y[i+1];
-
- acc[i] += (Xi * Yi - Xii * Yii);
- acc[i+1]+= (Xii * Yi + Xi * Yii);
- }
-
- acc[_N] += X[_N] * Y[_N];
- X += N;
- Y += N;
- }
-
- SPECTRALMULACCUM_STOP();
-}
-
-#define OVERRIDE_WEIGHTED_SPECTRAL_MUL_CONJ
-void weighted_spectral_mul_conj(
- const float * restrict w,
- const float p,
- const float * restrict X,
- const float * restrict Y,
- float * restrict prod,
- int N
-)
-{
- register int i, j;
- register int _N;
-
- WEIGHTEDSPECTRALMULCONJ_START();
-
- prod[0] = p * w[0] * X[0] * Y[0];
- _N = N-1;
-
- for (i=1,j=1;i<_N;i+=2,j++)
- {
- register float W;
- register float Xi, Yi, Xii, Yii;
-
- Xi = X[i];
- Yi = Y[i];
- Xii = X[i+1];
- Yii = Y[i+1];
- W = p * w[j];
-
-
- prod[i] = W * (Xi * Yi + Xii * Yii);
- prod[i+1]= W * (Xi * Yii - Xii * Yi);
- }
-
- prod[_N] = p * w[j] * X[_N] * Y[_N];
-
- WEIGHTEDSPECTRALMULCONJ_STOP();
-}
-
-#define OVERRIDE_MDF_ADJUST_PROP
-void mdf_adjust_prop(
- const float * restrict W,
- int N,
- int M,
- float * restrict prop
-)
-{
- register int i, j;
- register float max_sum = 1;
- register float prop_sum = 1;
-
- MDFADJUSTPROP_START();
-
- for ( i=0 ; i<M ; ++i )
- {
- register float tmp = 1;
- register int k = i * N;
- register int l = k + N;
- register float propi;
-
-#if (TM_UNROLL && TM_UNROLL_MDFADJUSTPROP)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( j=k ; j<l ; ++j )
- {
- register float wi = W[j];
-
- tmp += wi * wi;
- }
-#if (TM_UNROLL && TM_UNROLL_MDFADJUSTPROP)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- propi = spx_sqrt(tmp);
- prop[i]= propi;
- max_sum= fmux(propi > max_sum, propi, max_sum);
- }
-
- for ( i=0 ; i<M ; ++i )
- {
- register float propi = prop[i];
-
- propi += .1f * max_sum;
- prop_sum += propi;
- prop[i] = propi;
- }
-
- prop_sum = 0.99f / prop_sum;
- for ( i=0 ; i<M ; ++i )
- { prop[i] = prop_sum * prop[i];
- }
-
- MDFADJUSTPROP_STOP();
-}
-
-
-#define OVERRIDE_SPEEX_ECHO_GET_RESIDUAL
-void speex_echo_get_residual(
- SpeexEchoState * restrict st,
- float * restrict residual_echo,
- int len
-)
-{
- register int i;
- register float leak2, leake;
- register int N;
- register float * restrict window;
- register float * restrict last_y;
- register float * restrict y;
-
- SPEEXECHOGETRESIDUAL_START();
-
- window = st->window;
- last_y = st->last_y;
- y = st->y;
- N = st->window_size;
-
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOGETRESIDUAL)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for (i=0;i<N;i++)
- { y[i] = window[i] * last_y[i];
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOGETRESIDUAL)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- spx_fft(st->fft_table, st->y, st->Y);
- power_spectrum(st->Y, residual_echo, N);
-
- leake = st->leak_estimate;
- leak2 = fmux(leake > .5, 1, 2 * leake);
- N = st->frame_size;
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOGETRESIDUAL)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<N ; ++i )
- { residual_echo[i] *= leak2;
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOGETRESIDUAL)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- residual_echo[N] *= leak2;
-
-#ifndef NO_REMARK
- (void)len;
-#endif
-
- SPEEXECHOGETRESIDUAL_STOP();
-}
-#endif
-
-
-void mdf_preemph(
- SpeexEchoState * restrict st,
- spx_word16_t * restrict x,
- const spx_int16_t * restrict far_end,
- int framesize
-)
-{
- register spx_word16_t preemph = st->preemph;
- register spx_word16_t memX = st->memX;
- register spx_word16_t memD = st->memD;
- register spx_word16_t * restrict input = st->input;
- register int i;
-#ifdef FIXED_POINT
- register int saturated = st->saturated;
-#endif
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<framesize ; ++i )
- {
- register spx_int16_t far_endi = far_end[i];
- register spx_word32_t tmp32;
- register spx_word16_t inputi = input[i];
-
- tmp32 = SUB32(EXTEND32(far_endi), EXTEND32(MULT16_16_P15(preemph,memX)));
-
-#ifdef FIXED_POINT
- saturated = mux(iabs(tmp32) > 32767, M+1, saturated);
- tmp32 = iclipi(tmp32,32767);
-#endif
-
- x[i] = EXTRACT16(tmp32);
- memX = far_endi;
- tmp32 = SUB32(EXTEND32(inputi), EXTEND32(MULT16_16_P15(preemph, memD)));
-
-#ifdef FIXED_POINT
- saturated = mux( ((tmp32 > 32767) && (saturated == 0)), 1,
- mux( ((tmp32 <-32767) && (saturated == 0)), 1, saturated ));
- tmp32 = iclipi(tmp32,32767);
-#endif
- memD = inputi;
- input[i] = tmp32;
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- st->memD = memD;
- st->memX = memX;
-
-#ifdef FIXED_POINT
- st->saturated = saturated;
-#endif
-}
-
-void mdf_sub(
- spx_word16_t * restrict dest,
- const spx_word16_t * restrict src1,
- const spx_word16_t * restrict src2,
- int framesize
-)
-{
- register int i;
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
-
-#ifdef FIXED_POINT
- for ( i=0,framesize<<=1 ; i<framesize ; i+=4 )
- { register int src1i, src2i, desti;
-
- src1i = ld32d(src1,i);
- src2i = ld32d(src2,i);
- desti = dspidualsub(src1i,src2i);
- st32d(i, dest, desti);
- }
-#else
- for ( i=0 ; i<framesize ; ++i )
- { dest[i] = src1[i] - src2[i];
- }
-#endif
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-}
-
-void mdf_sub_int(
- spx_word16_t * restrict dest,
- const spx_int16_t * restrict src1,
- const spx_int16_t * restrict src2,
- int framesize
-)
-{
- register int i, j;
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
-
-#ifdef FIXED_POINT
- for ( i=0,framesize<<=1 ; i<framesize ; i+=4 )
- { register int src1i, src2i, desti;
-
- src1i = ld32d(src1,i);
- src2i = ld32d(src2,i);
- desti = dspidualsub(src1i,src2i);
- st32d(i, dest, desti);
- }
-#else
- for ( i=0,j=0 ; i<framesize ; i+=2,++j )
- { register int src1i, src2i, desti;
-
-
- src1i = ld32d(src1,j);
- src2i = ld32d(src2,j);
- desti = dspidualsub(src1i,src2i);
-
- dest[i] = sex16(desti);
- dest[i+1] = asri(16,desti);
- }
-#endif
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-}
-
-void mdf_compute_weight_gradient(
- SpeexEchoState * restrict st,
- spx_word16_t * restrict X,
- int N,
- int M
-)
-{
- register int i, j;
- register spx_word32_t * restrict PHI = st->PHI;
-
- for (j=M-1;j>=0;j--)
- {
- register spx_word32_t * restrict W = &(st->W[j*N]);
-
- weighted_spectral_mul_conj(
- st->power_1,
- FLOAT_SHL(PSEUDOFLOAT(st->prop[j]),-15),
- &X[(j+1)*N],
- st->E,
- st->PHI,
- N);
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for (i=0;i<N;i++)
- { W[i] = ADD32(W[i],PHI[i]);
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- }
-}
-
-void mdf_update_weight(
- SpeexEchoState * restrict st,
- int N,
- int M,
- int framesize
-)
-{
- register int j;
- register int cancel_count = st->cancel_count;
- register spx_word16_t * restrict wtmp = st->wtmp;
-#ifdef FIXED_POINT
- register spx_word16_t * restrict wtmp2 = st->wtmp2;
- register int i;
-#endif
-
- for ( j=0 ; j<M ; j++ )
- {
- register spx_word32_t * restrict W = &(st->W[j*N]);
-
- if (j==0 || cancel_count%(M-1) == j-1)
- {
-#ifdef FIXED_POINT
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<N ; i++ )
- wtmp2[i] = EXTRACT16(PSHR32(W[i],NORMALIZE_SCALEDOWN+16));
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- spx_ifft(st->fft_table, wtmp2, wtmp);
- memset(wtmp, 0, framesize * sizeof(spx_word16_t));
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for (j=framesize; j<N ; ++j)
- { wtmp[j]=SHL16(wtmp[j],NORMALIZE_SCALEUP);
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- spx_fft(st->fft_table, wtmp, wtmp2);
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for (i=0;i<N;i++)
- { W[i] -= SHL32(EXTEND32(wtmp2[i]),16+NORMALIZE_SCALEDOWN-NORMALIZE_SCALEUP-1);
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
-#else
- spx_ifft(st->fft_table, W, wtmp);
- memset(&wtmp[framesize], 0, (N-framesize) * sizeof(spx_word16_t));
- spx_fft(st->fft_table, wtmp, W);
-#endif
- }
- }
-}
-
-#ifdef TWO_PATH
-// first four parameters is passed by registers
-// generate faster performance with 4 parameters functions
-spx_word32_t mdf_update_foreground(
- SpeexEchoState * restrict st,
- spx_word32_t Dbf,
- spx_word32_t Sff,
- spx_word32_t See
-)
-{
- register spx_word32_t Davg1 = st->Davg1;
- register spx_word32_t Davg2 = st->Davg2;
- register spx_word32_t Dvar1 = st->Dvar1;
- register spx_word32_t Dvar2 = st->Dvar2;
- register spx_word16_t * restrict input = st->input;
- register int framesize = st->frame_size;
- register spx_word16_t * restrict xx = st->x + framesize;
- register spx_word16_t * restrict y = st->y + framesize;
- register spx_word16_t * restrict ee = st->e + framesize;
- register int update_foreground;
- register int i;
- register int N = st->window_size;
- register int M = st->M;
-
-#ifdef FIXED_POINT
- register spx_word32_t sc0 = SUB32(Sff,See);
- register spx_float_t sc1 = FLOAT_MUL32U(Sff,Dbf);
-
- Davg1 = ADD32(MULT16_32_Q15(QCONST16(.6f,15),Davg1), MULT16_32_Q15(QCONST16(.4f,15),sc0));
- Davg2 = ADD32(MULT16_32_Q15(QCONST16(.85f,15),Davg2), MULT16_32_Q15(QCONST16(.15f,15),sc0));
- Dvar1 = FLOAT_ADD(
- FLOAT_MULT(VAR1_SMOOTH,Dvar1),
- FLOAT_MUL32U(MULT16_32_Q15(QCONST16(.4f,15),Sff),
- MULT16_32_Q15(QCONST16(.4f,15),Dbf)));
- Dvar2 = FLOAT_ADD(
- FLOAT_MULT(VAR2_SMOOTH,Dvar2),
- FLOAT_MUL32U(MULT16_32_Q15(QCONST16(.15f,15),Sff),
- MULT16_32_Q15(QCONST16(.15f,15),Dbf)));
-#else
- register spx_word32_t sc0 = Sff - See;
- register spx_word32_t sc1 = Sff * Dbf;
-
- Davg1 = .6*Davg1 + .4*sc0;
- Davg2 = .85*Davg2 + .15*sc0;
- Dvar1 = VAR1_SMOOTH*Dvar1 + .16*sc1;
- Dvar2 = VAR2_SMOOTH*Dvar2 + .0225*sc1;
-#endif
-
- update_foreground =
- mux( FLOAT_GT(FLOAT_MUL32U(sc0, VABS(sc0)), sc1), 1,
- mux( FLOAT_GT(FLOAT_MUL32U(Davg1, VABS(Davg1)), FLOAT_MULT(VAR1_UPDATE,(Dvar1))), 1,
- mux( FLOAT_GT(FLOAT_MUL32U(Davg2, VABS(Davg2)), FLOAT_MULT(VAR2_UPDATE,(Dvar2))), 1, 0)));
-
- if ( update_foreground )
- {
- register spx_word16_t * restrict windowf = st->window + framesize;
- register spx_word16_t * restrict window = st->window;
-
- st->Davg1 = st->Davg2 = 0;
- st->Dvar1 = st->Dvar2 = FLOAT_ZERO;
-
- memcpy(st->foreground, st->W, N*M*sizeof(spx_word32_t));
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<framesize ; ++i)
- { register spx_word16_t wi = window[i];
- register spx_word16_t wfi = windowf[i];
- register spx_word16_t ei = ee[i];
- register spx_word16_t yi = y[i];
-
- ee[i] = MULT16_16_Q15(wfi,ei) + MULT16_16_Q15(wi,yi);
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- } else
- {
- register int reset_background;
-
- reset_background =
- mux( FLOAT_GT(FLOAT_MUL32U(-(sc0),VABS(sc0)), FLOAT_MULT(VAR_BACKTRACK,sc1)), 1,
- mux( FLOAT_GT(FLOAT_MUL32U(-(Davg1), VABS(Davg1)), FLOAT_MULT(VAR_BACKTRACK,Dvar1)), 1,
- mux( FLOAT_GT(FLOAT_MUL32U(-(Davg2), VABS(Davg2)), FLOAT_MULT(VAR_BACKTRACK,Dvar2)), 1, 0)));
-
- if ( reset_background )
- {
- memcpy(st->W, st->foreground, N*M*sizeof(spx_word32_t));
- memcpy(y, ee, framesize * sizeof(spx_word16_t));
- mdf_sub(xx,input,y,framesize);
- See = Sff;
- st->Davg1 = st->Davg2 = 0;
- st->Dvar1 = st->Dvar2 = FLOAT_ZERO;
- } else
- {
- st->Davg1 = Davg1;
- st->Davg2 = Davg2;
- st->Dvar1 = Dvar1;
- st->Dvar2 = Dvar2;
- }
- }
-
- return See;
-}
-#endif
-
-void mdf_compute_error_signal(
- SpeexEchoState * restrict st,
- const spx_int16_t * restrict in,
- spx_int16_t * restrict out,
- int framesize
-)
-{
- register spx_word16_t preemph = st->preemph;
- register spx_word16_t memE = st->memE;
- register int saturated = st->saturated;
- register spx_word16_t * restrict e = st->e;
- register spx_word16_t * restrict ee = st->e + framesize;
- register spx_word16_t * restrict input = st->input;
- register spx_word16_t * restrict xx = st->x + framesize;
- register int i;
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<framesize ; ++i )
- {
- register spx_word32_t tmp_out;
- register spx_int16_t ini = in[i];
- register int flg;
-
-#ifdef FIXED_POINT
-
-#ifdef TWO_PATH
- tmp_out = SUB32(EXTEND32(input[i]), EXTEND32(ee[i]));
- tmp_out = iclipi(tmp_out,32767);
-#else
- tmp_out = SUB32(EXTEND32(input[i]), EXTEND32(y[i]));
- tmp_out = iclipi(tmp_out,32767);
-#endif
-
-#else
-#ifdef TWO_PATH
- tmp_out = SUB32(EXTEND32(input[i]), EXTEND32(ee[i]));
-#else
- tmp_out = SUB32(EXTEND32(input[i]), EXTEND32(y[i]));
-#endif
- tmp_out =
- fmux( tmp_out > 32767, 32767,
- fmux( tmp_out < -32768, -32768, tmp_out));
-#endif
-
- tmp_out = ADD32(tmp_out, EXTEND32(MULT16_16_P15(preemph,memE)));
- flg = iabs(ini) >= 32000;
- tmp_out = VMUX( flg, 0, tmp_out);
- saturated = mux( flg && (saturated == 0), 1, saturated);
-
- out[i] = (spx_int16_t)tmp_out;
- memE = tmp_out;
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- st->memE = memE;
- st->saturated = saturated;
- memset(e, 0, framesize * sizeof(spx_word16_t));
- memcpy(ee, xx, framesize * sizeof(spx_word16_t));
-}
-
-inline int mdf_check(
- SpeexEchoState * restrict st,
- spx_int16_t * out,
- spx_word32_t Syy,
- spx_word32_t Sxx,
- spx_word32_t See,
- spx_word32_t Sff,
- spx_word32_t Sdd
-)
-{
- register int N = st->window_size;
- register spx_word32_t N1e9 = N * 1e9;
- register int screwed_up = st->screwed_up;
- register int framesize = st->frame_size;
-
- if (!(Syy>=0 && Sxx>=0 && See >= 0)
-#ifndef FIXED_POINT
- || !(Sff < N1e9 && Syy < N1e9 && Sxx < N1e9 )
-#endif
- )
- {
- screwed_up += 50;
- memset(out, 0, framesize * sizeof(spx_int16_t));
-
- } else
- { screwed_up = mux( SHR32(Sff, 2) > ADD32(Sdd, SHR32(MULT16_16(N, 10000),6)), screwed_up+1, 0);
- }
-
- st->screwed_up = screwed_up;
-
- return screwed_up;
-}
-
-void mdf_smooth(
- spx_word32_t * restrict power,
- spx_word32_t * restrict Xf,
- int framesize,
- int M
-)
-{
- register spx_word16_t ss, ss_1, pf, xff;
- register int j;
-
-#ifdef FIXED_POINT
- ss=DIV32_16(11469,M);
- ss_1 = SUB16(32767,ss);
-#else
- ss=.35/M;
- ss_1 = 1-ss;
-#endif
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( j=0 ; j<framesize ; ++j )
- { register spx_word32_t pi = power[j];
- register spx_word32_t xfi = Xf[j];
-
- power[j] = MULT16_32_Q15(ss_1,pi) + 1 + MULT16_32_Q15(ss,xfi);
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- pf = power[framesize];
- xff = Xf[framesize];
- power[framesize] = MULT16_32_Q15(ss_1,pf) + 1 + MULT16_32_Q15(ss,xff);
-}
-
-void mdf_compute_filtered_spectra_crosscorrelations(
- SpeexEchoState * restrict st,
- spx_word32_t Syy,
- spx_word32_t See,
- int framesize
-)
-{
- register spx_float_t Pey = FLOAT_ONE;
- register spx_float_t Pyy = FLOAT_ONE;
- register spx_word16_t spec_average = st->spec_average;
- register spx_word32_t * restrict pRf = st->Rf;
- register spx_word32_t * restrict pYf = st->Yf;
- register spx_word32_t * restrict pEh = st->Eh;
- register spx_word32_t * restrict pYh = st->Yh;
- register spx_word16_t beta0 = st->beta0;
- register spx_word16_t beta_max = st->beta_max;
- register spx_float_t alpha, alpha_1;
- register spx_word32_t tmp32, tmpx;
- register spx_float_t sPey = st->Pey;
- register spx_float_t sPyy = st->Pyy;
- register spx_float_t tmp;
- register spx_word16_t leak_estimate;
- register int j;
- register spx_float_t Eh, Yh;
- register spx_word32_t _Ehj, _Rfj, _Yfj, _Yhj;
-
-#ifdef FIXED_POINT
- register spx_word16_t spec_average1 = SUB16(32767,spec_average);
-#else
- register spx_word16_t spec_average1 = 1 - spec_average;
-#endif
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for (j=framesize; j>0 ; --j)
- {
- _Ehj = pEh[j];
- _Rfj = pRf[j];
- _Yfj = pYf[j];
- _Yhj = pYh[j];
-
- Eh = PSEUDOFLOAT(_Rfj - _Ehj);
- Yh = PSEUDOFLOAT(_Yfj - _Yhj);
-
- Pey = FLOAT_ADD(Pey,FLOAT_MULT(Eh,Yh));
- Pyy = FLOAT_ADD(Pyy,FLOAT_MULT(Yh,Yh));
-
- pEh[j] = MAC16_32_Q15(MULT16_32_Q15(spec_average1, _Ehj), spec_average, _Rfj);
- pYh[j] = MAC16_32_Q15(MULT16_32_Q15(spec_average1, _Yhj), spec_average, _Yfj);
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- _Ehj = pEh[0];
- _Rfj = pRf[0];
- _Yfj = pYf[0];
- _Yhj = pYh[0];
-
- Eh = PSEUDOFLOAT(_Rfj - _Ehj);
- Yh = PSEUDOFLOAT(_Yfj - _Yhj);
-
- Pey = FLOAT_ADD(Pey,FLOAT_MULT(Eh,Yh));
- Pyy = FLOAT_ADD(Pyy,FLOAT_MULT(Yh,Yh));
-
- pEh[0] = MAC16_32_Q15(MULT16_32_Q15(spec_average1, _Ehj), spec_average, _Rfj);
- pYh[0] = MAC16_32_Q15(MULT16_32_Q15(spec_average1, _Yhj), spec_average, _Yfj);
-
- Pyy = FLOAT_SQRT(Pyy);
- Pey = FLOAT_DIVU(Pey,Pyy);
-
- tmp32 = MULT16_32_Q15(beta0,Syy);
- tmpx = MULT16_32_Q15(beta_max,See);
- tmp32 = VMUX(tmp32 > tmpx, tmpx, tmp32);
- alpha = FLOAT_DIV32(tmp32, See);
- alpha_1 = FLOAT_SUB(FLOAT_ONE, alpha);
-
- sPey = FLOAT_ADD(FLOAT_MULT(alpha_1,sPey) , FLOAT_MULT(alpha,Pey));
- sPyy = FLOAT_ADD(FLOAT_MULT(alpha_1,sPyy) , FLOAT_MULT(alpha,Pyy));
- tmp = FLOAT_MULT(MIN_LEAK,sPyy);
-
-#ifndef FIXED_POINT
- sPyy = VMUX(FLOAT_LT(sPyy, FLOAT_ONE), FLOAT_ONE, sPyy);
- sPey = VMUX(FLOAT_LT(sPey, tmp), tmp, sPey);
- sPey = VMUX(FLOAT_LT(sPey, sPyy), sPey, sPyy);
-#else
- sPyy = FLOAT_LT(sPyy, FLOAT_ONE) ? FLOAT_ONE : sPyy;
- sPey = FLOAT_LT(sPey, tmp) ? tmp : sPey;
- sPey = FLOAT_LT(sPey, sPyy) ? sPey : sPyy;
-#endif
-
- leak_estimate = FLOAT_EXTRACT16(FLOAT_SHL(FLOAT_DIVU(sPey, sPyy),14));
-
- leak_estimate = VMUX( leak_estimate > 16383, 32767, SHL16(leak_estimate,1));
- st->Pey = sPey;
- st->Pyy = sPyy;
- st->leak_estimate = leak_estimate;
-}
-
-inline spx_word16_t mdf_compute_RER(
- spx_word32_t See,
- spx_word32_t Syy,
- spx_word32_t Sey,
- spx_word32_t Sxx,
- spx_word16_t leake
-)
-{
- register spx_word16_t RER;
-
-#ifdef FIXED_POINT
- register spx_word32_t tmp32;
- register spx_word32_t tmp;
- spx_float_t bound = PSEUDOFLOAT(Sey);
-
- tmp32 = MULT16_32_Q15(leake,Syy);
- tmp32 = ADD32(SHR32(Sxx,13), ADD32(tmp32, SHL32(tmp32,1)));
-
- bound = FLOAT_DIVU(FLOAT_MULT(bound, bound), PSEUDOFLOAT(ADD32(1,Syy)));
- tmp = FLOAT_EXTRACT32(bound);
- tmp32 = imux( FLOAT_GT(bound, PSEUDOFLOAT(See)), See,
- imux( tmp32 < tmp, tmp, tmp32));
-
- tmp = SHR32(See,1);
- tmp32 = imux(tmp32 > tmp, tmp, tmp32);
- RER = FLOAT_EXTRACT16(FLOAT_SHL(FLOAT_DIV32(tmp32,See),15));
-#else
- register spx_word32_t r0;
-
- r0 = (Sey * Sey)/(1 + See * Syy);
-
- RER = (.0001*Sxx + 3.* MULT16_32_Q15(leake,Syy)) / See;
- RER = fmux( RER < r0, r0, RER);
- RER = fmux( RER > .5, .5, RER);
-#endif
-
- return RER;
-}
-
-void mdf_adapt(
- SpeexEchoState * restrict st,
- spx_word16_t RER,
- spx_word32_t Syy,
- spx_word32_t See,
- spx_word32_t Sxx
-)
-{
- register spx_float_t * restrict power_1 = st->power_1;
- register spx_word32_t * restrict power = st->power;
- register int adapted = st->adapted;
- register spx_word32_t sum_adapt = st->sum_adapt;
- register spx_word16_t leake = st->leak_estimate;
- register int framesize = st->frame_size;
- register int i;
- register int M = st->M;
-
- adapted = mux( !adapted && sum_adapt > QCONST32(M,15) &&
- MULT16_32_Q15(leake,Syy) > MULT16_32_Q15(QCONST16(.03f,15),Syy), 1, adapted);
-
- if ( adapted )
- { register spx_word32_t * restrict Yf = st->Yf;
- register spx_word32_t * restrict Rf = st->Rf;
- register spx_word32_t r, e, e2;
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<framesize ; ++i )
- {
- r = SHL32(Yf[i],3);
- r = MULT16_32_Q15(leake,r);
- e = SHL32(Rf[i],3)+1;
-
-#ifdef FIXED_POINT
- e2 = SHR32(e,1);
- r = mux( r > e2, e2, r);
-#else
- e2 = e * .5;
- r = fmux( r > e2, e2, r);
-#endif
-
- r = MULT16_32_Q15(QCONST16(.7,15),r) +
- MULT16_32_Q15(QCONST16(.3,15),(spx_word32_t)(MULT16_32_Q15(RER,e)));
-
- power_1[i] = FLOAT_SHL(FLOAT_DIV32_FLOAT(r,FLOAT_MUL32U(e,power[i]+10)),WEIGHT_SHIFT+16);
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- r = SHL32(Yf[framesize],3);
- r = MULT16_32_Q15(leake,r);
- e = SHL32(Rf[framesize],3)+1;
-
-#ifdef FIXED_POINT
- e2 = SHR32(e,1);
- r = mux( r > e2, e2, r);
-#else
- e2 = e * .5;
- r = fmux( r > e2, e2, r);
-#endif
-
- r = MULT16_32_Q15(QCONST16(.7,15),r) +
- MULT16_32_Q15(QCONST16(.3,15),(spx_word32_t)(MULT16_32_Q15(RER,e)));
-
- power_1[framesize] = FLOAT_SHL(FLOAT_DIV32_FLOAT(r,FLOAT_MUL32U(e,power[framesize]+10)),WEIGHT_SHIFT+16);
-
- } else
- {
- register spx_word16_t adapt_rate=0;
- register int N = st->window_size;
-
- if ( Sxx > SHR32(MULT16_16(N, 1000),6) )
- { register spx_word32_t tmp32, tmp32q;
-
- tmp32 = MULT16_32_Q15(QCONST16(.25f, 15), Sxx);
-#ifdef FIXED_POINT
- tmp32q = SHR32(See,2);
- tmp32 = mux(tmp32 > tmp32q, tmp32q, tmp32);
-#else
- tmp32q = 0.25 * See;
- tmp32 = fmux(tmp32 > tmp32q, tmp32q, tmp32);
-#endif
- adapt_rate = FLOAT_EXTRACT16(FLOAT_SHL(FLOAT_DIV32(tmp32, See),15));
- }
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for (i=0;i<framesize;i++)
- power_1[i] = FLOAT_SHL(FLOAT_DIV32(EXTEND32(adapt_rate),ADD32(power[i],10)),WEIGHT_SHIFT+1);
-#if (TM_UNROLL && TM_UNROLL_SPEEXECHOCANCELLATION)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- power_1[framesize] = FLOAT_SHL(FLOAT_DIV32(EXTEND32(adapt_rate),ADD32(power[framesize],10)),WEIGHT_SHIFT+1);
- sum_adapt = ADD32(sum_adapt,adapt_rate);
- }
-
- st->sum_adapt = sum_adapt;
- st->adapted = adapted;
-}
-
-#define OVERRIDE_ECHO_CANCELLATION
-void speex_echo_cancellation(
- SpeexEchoState * restrict st,
- const spx_int16_t * restrict in,
- const spx_int16_t * restrict far_end,
- spx_int16_t * restrict out
-)
-{
- register int framesize = st->frame_size;
- register spx_word16_t * restrict x = st->x;
- register spx_word16_t * restrict xx = st->x + framesize;
- register spx_word16_t * restrict yy = st->y + framesize;
- register spx_word16_t * restrict ee = st->e + framesize;
- register spx_word32_t Syy, See, Sxx, Sdd, Sff;
- register spx_word16_t RER;
- register spx_word32_t Sey;
- register int j;
- register int N,M;
-#ifdef TWO_PATH
- register spx_word32_t Dbf;
-#endif
-
- N = st->window_size;
- M = st->M;
- st->cancel_count++;
-
- filter_dc_notch16(in, st->notch_radius, st->input, framesize, st->notch_mem);
- mdf_preemph(st, xx, far_end, framesize);
-
- {
-
- register spx_word16_t * restrict X = st->X;
-
- for ( j=M-1 ; j>=0 ; j-- )
- { register spx_word16_t * restrict Xdes = &(X[(j+1)*N]);
- register spx_word16_t * restrict Xsrc = &(X[j*N]);
-
- memcpy(Xdes, Xsrc, N * sizeof(spx_word16_t));
- }
-
- spx_fft(st->fft_table, x, X);
- memcpy(st->last_y, st->x, N * sizeof(spx_word16_t));
- Sxx = mdf_inner_prod(xx, xx, framesize);
- memcpy(x, xx, framesize * sizeof(spx_word16_t));
-
-#ifdef TWO_PATH
- spectral_mul_accum(st->X, st->foreground, st->Y, N, M);
- spx_ifft(st->fft_table, st->Y, st->e);
- mdf_sub(xx, st->input, ee, framesize);
- Sff = mdf_inner_prod(xx, xx, framesize);
-#endif
-
- mdf_adjust_prop (st->W, N, M, st->prop);
-
- if (st->saturated == 0)
- { mdf_compute_weight_gradient(st, X, N, M);
- } else
- { st->saturated--;
- }
- }
-
- mdf_update_weight(st, N, M, framesize);
- spectral_mul_accum(st->X, st->W, st->Y, N, M);
- spx_ifft(st->fft_table, st->Y, st->y);
-
-#ifdef TWO_PATH
- mdf_sub(xx, ee, yy, framesize);
- Dbf = 10+mdf_inner_prod(xx, xx, framesize);
-#endif
-
- mdf_sub(xx, st->input, yy, framesize);
- See = mdf_inner_prod(xx, xx, framesize);
-
-#ifndef TWO_PATH
- Sff = See;
-#else
- See = mdf_update_foreground(st,Dbf,Sff,See);
-#endif
-
-
- mdf_compute_error_signal(st, in, out, framesize);
- Sey = mdf_inner_prod(ee, yy, framesize);
- Syy = mdf_inner_prod(yy, yy, framesize);
- Sdd = mdf_inner_prod(st->input, st->input, framesize);
-
- if ( mdf_check(st,out,Syy,Sxx,See,Sff,Sdd) >= 50 )
- { speex_warning("The echo canceller started acting funny and got slapped (reset). It swears it will behave now.");
- speex_echo_state_reset(st);
- return;
- }
-
- See = MAX32(See, SHR32(MULT16_16(N, 100),6));
- spx_fft(st->fft_table, st->e, st->E);
- memset(st->y, 0, framesize * sizeof(spx_word16_t));
- spx_fft(st->fft_table, st->y, st->Y);
- power_spectrum(st->E, st->Rf, N);
- power_spectrum(st->Y, st->Yf, N);
- power_spectrum(st->X, st->Xf, N);
-
- mdf_smooth(st->power,st->Xf,framesize, M);
- mdf_compute_filtered_spectra_crosscorrelations(st,Syy,See,framesize);
- RER = mdf_compute_RER(See,Syy,Sey,Sxx,st->leak_estimate);
- mdf_adapt(st, RER, Syy, See, Sxx);
-
- if ( st->adapted )
- { register spx_word16_t * restrict last_yy = st->last_y + framesize;
-
- memcpy(st->last_y, last_yy, framesize * sizeof(spx_word16_t));
- mdf_sub_int(last_yy, in, out, framesize);
-
- }
-}
-
-
-
diff --git a/3rdparty/speex/tmv/misc_tm.h b/3rdparty/speex/tmv/misc_tm.h
deleted file mode 100644
index 6dd12ed9..00000000
--- a/3rdparty/speex/tmv/misc_tm.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file misc_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#include <tmml.h>
-
-
-#if TM_PROFILE
-int __profile_begin;
-int __profile_end;
-#endif
-
-#define OVERRIDE_SPEEX_ALLOC
-void *speex_alloc (int size)
-{
- void *ptr;
-
- if ( tmmlMalloc(0, size, (pVoid*)&ptr, tmmlMallocCacheAligned | tmmlMallocCleared) != TM_OK )
- { return NULL;
- }
-
- return ptr;
-}
-
-
-#define OVERRIDE_SPEEX_ALLOC_SCRATCH
-void *speex_alloc_scratch (int size)
-{
- void *ptr;
-
- if ( tmmlMalloc(0, size, (pVoid*)&ptr, tmmlMallocCacheAligned | tmmlMallocCleared) != TM_OK )
- { return NULL;
- }
-
- return ptr;
-}
-
-
-#define OVERRIDE_SPEEX_REALLOC
-void *speex_realloc (void *ptr, int size)
-{
- if ( tmmlRealloc(0, size, (pVoid)ptr, (pVoid*)&ptr, tmmlMallocCacheAligned | tmmlMallocCleared) != TM_OK )
- { return NULL;
- }
-
- return ptr;
-}
-
-
-#define OVERRIDE_SPEEX_FREE
-void speex_free (void *ptr)
-{
- tmmlFree(ptr);
-}
-
-
-#define OVERRIDE_SPEEX_FREE_SCRATCH
-void speex_free_scratch (void *ptr)
-{
- tmmlFree(ptr);
-}
-
diff --git a/3rdparty/speex/tmv/preprocess_tm.h b/3rdparty/speex/tmv/preprocess_tm.h
deleted file mode 100644
index 16e02123..00000000
--- a/3rdparty/speex/tmv/preprocess_tm.h
+++ /dev/null
@@ -1,1135 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file preprocess_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#include <ops/custom_defs.h>
-#include "profile_tm.h"
-
-#ifdef FIXED_POINT
-#define OVERRIDE_PREPROCESS_ANALYSIS
-static void preprocess_analysis(SpeexPreprocessState * restrict st, spx_int16_t * restrict x)
-{
- register int i, j, framesize = st->frame_size;
- register int N = st->ps_size;
- register int N3 = 2*N - framesize;
- register int N4 = framesize - N3;
- register int * restrict ps = st->ps;
- register int * restrict frame;
- register int * restrict inbuf;
- register int * restrict ptr;
- register int max_val;
-
- frame = (int*)(st->frame);
- inbuf = (int*)(st->inbuf);
- ptr = (int*)(st->frame+N3);
-
- TMDEBUG_ALIGNMEM(x);
- TMDEBUG_ALIGNMEM(frame);
- TMDEBUG_ALIGNMEM(inbuf);
-
- PREPROCESSANAYLSIS_START();
-
- N3 >>= 1;
- framesize >>= 1;
- max_val = 0;
-
- for ( i=0,j=0 ; i<N3 ; i+=2,j+=8 )
- { register int r1, r2;
-
- r1 = ld32x(inbuf,i);
- r2 = ld32x(inbuf,i+1);
-
- st32d(j, frame, r1);
- st32d(j+4, frame, r2);
- }
-
- for ( i=0,j=0 ; i<framesize ; i+=2,j+=8 )
- { register int r1, r2;
-
- r1 = ld32x(x, i);
- r2 = ld32x(x, i+1);
-
- st32d(j, ptr, r1);
- st32d(j+4,ptr, r2);
- }
-
- for ( i=0,j=0,ptr=(int*)(x+N4) ; i<N3 ; i+=2,j+=8 )
- { register int r1, r2;
-
- r1 = ld32x(ptr, i);
- r2 = ld32x(ptr, i+1);
-
- st32d(j, inbuf, r1);
- st32d(j+4,inbuf, r2);
- }
-#if (TM_UNROLL && TM_UNROLL_PREPROCESSANALYSIS)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0,j=0,ptr=(int*)st->window ; i<N ; ++i,j+=4 )
- { register int f10, w10, r0, r1;
-
- f10 = ld32x(frame, i);
- w10 = ld32x(ptr, i);
-
- r0 = (sex16(f10) * sex16(w10)) >> 15;
- r1 = (asri(16,f10) * asri(16,w10)) >> 15;
-
- max_val = imax(iabs(sex16(r0)), max_val);
- max_val = imax(iabs(sex16(r1)), max_val);
-
- r0 = pack16lsb(r1, r0);
- st32d(j, frame, r0);
- }
-#if (TM_UNROLL && TM_UNROLL_PREPROCESSANALYSIS)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- max_val = 14 - spx_ilog2(max_val);
- st->frame_shift = max_val;
-
- if ( max_val != 0 )
- {
-#if (TM_UNROLL && TM_UNROLL_PREPROCESSANALYSIS)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0,j=0 ; i<N ; ++i,j+=4 )
- { register int f10;
-
- f10 = ld32x(frame, i);
- f10 = dualasl(f10, max_val);
- st32d(j, frame, f10);
-
- }
-#if (TM_UNROLL && TM_UNROLL_PREPROCESSANALYSIS)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- }
-
- spx_fft(st->fft_lookup, st->frame, st->ft);
- power_spectrum(st->ft, ps, N << 1);
-
-#if (TM_UNROLL && TM_UNROLL_PREPROCESSANALYSIS)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0,ptr=(int*)st->ps,max_val<<=1,j=((1<<((max_val))>>1)) ;i<N ; ++i )
- {
- ps[i] = (ps[i] + j) >> max_val;
- }
-#if (TM_UNROLL && TM_UNROLL_PREPROCESSANALYSIS)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- filterbank_compute_bank32(st->bank, ps, ps+N);
-
- PREPROCESSANAYLSIS_STOP();
-}
-
-#define _MULT16_32_Q15(a,b,c) ADD32(MULT16_16((a),(b)), SHR(MULT16_16((a),(c)),15))
-
-#define OVERRIDE_UPDATE_NOISE_PROB
-static void update_noise_prob(SpeexPreprocessState * restrict st)
-{
- register int i;
- register int min_range, nb_adapt;
- register int N = st->ps_size;
- register int * restrict Smin = (int*)st->Smin;
- register int * restrict Stmp = (int*)st->Stmp;
- register int * restrict S = (int*)st->S;
-
- UPDATENOISEPROB_START();
-
- {
- register int psi_lsb, psi_msb, ips_lsb, ips_msb, psii_lsb, psii_msb;
- register int psiii_lsb, psiii_msb;
- register int q8, q05, q2, q1;
- register int *ps = (int*)st->ps;
- register int si_lsb, si_msb, sii_lsb, sii_msb;
-
- q8 = QCONST16(.8f,15);
- q05 = QCONST16(.05f,15);
- q2 = QCONST16(.2f,15);
- q1 = QCONST16(.1f,15);
-
- ips_lsb = ps[0];
- psi_lsb = ps[1];
- si_lsb = S[0];
- ips_msb = ips_lsb >> 15;
- psi_msb = psi_lsb >> 15;
- si_msb = si_lsb >> 15;
-
- ips_lsb &= 0x00007fff;
- psi_lsb &= 0x00007fff;
- si_lsb &= 0x00007fff;
-
- S[0] = _MULT16_32_Q15(q8,si_msb,si_lsb) + _MULT16_32_Q15(q2,ips_msb,ips_lsb);
-
- for ( i=1 ; i<N-1 ; i+=2 )
- {
- psii_lsb = ps[i+1];
- si_lsb = S[i];
-
- psii_msb = psii_lsb >> 15;
- si_msb = si_lsb >> 15;
- si_lsb &= 0x00007fff;
- psii_lsb &= 0x00007fff;
-
- S[i]= _MULT16_32_Q15(q8,si_msb,si_lsb) +
- _MULT16_32_Q15(q05,ips_msb,ips_lsb) +
- _MULT16_32_Q15(q1,psi_msb,psi_lsb) +
- _MULT16_32_Q15(q05,psii_msb,psii_lsb);
-
- psiii_lsb = ps[i+2];
- sii_lsb = S[i+1];
-
- sii_msb = sii_lsb >> 15;
- psiii_msb= psiii_lsb >> 15;
- sii_lsb &= 0x00007fff;
- psiii_lsb&= 0x00007fff;
-
- S[i+1]= _MULT16_32_Q15(q8,sii_msb,sii_lsb) +
- _MULT16_32_Q15(q05,psi_msb,psi_lsb) +
- _MULT16_32_Q15(q1,psii_msb,psii_lsb) +
- _MULT16_32_Q15(q05,psiii_msb,psiii_lsb);
-
- ips_lsb = psii_lsb;
- ips_msb = psii_msb;
- psi_lsb = psiii_lsb;
- psi_msb = psiii_msb;
- }
-
- S[N-1] = MULT16_32_Q15(q8,S[N-1]) + MULT16_32_Q15(q2,ps[N-1]);
- }
-
- nb_adapt = st->nb_adapt;
-
- if ( nb_adapt==1 )
- { for ( i=0 ; i<N ; ++i )
- Smin[i] = Stmp[i] = 0;
-
- }
-
- min_range = mux(nb_adapt < 100, 15,
- mux(nb_adapt < 1000, 50,
- mux(nb_adapt < 10000, 150, 300)));
-
- if ( st->min_count > min_range )
- {
- st->min_count = 0;
-
-#if (TM_UNROLL && TM_UNROLL_UPDATENOISEPROB)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<N ; ++i )
- { register int si, stmpi;
-
- si = S[i];
- stmpi = Stmp[i];
-
- Smin[i] = imin(stmpi,si);
- Stmp[i] = si;
- }
-#if (TM_UNROLL && TM_UNROLL_UPDATENOISEPROB)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- } else
- {
-
-#if (TM_UNROLL && TM_UNROLL_UPDATENOISEPROB)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<N ; ++i )
- { register int si, stmpi, smini;
-
- si = S[i];
- stmpi = Stmp[i];
- smini = Smin[i];
-
- Smin[i] = imin(smini,si);
- Stmp[i] = imin(stmpi,si);
- }
-#if (TM_UNROLL && TM_UNROLL_UPDATENOISEPROB)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- }
-
-
- {
- register int q4;
- register int * restrict update_prob = (int*)st->update_prob;
-
- q4 = QCONST16(.4f,15);
-
-#if (TM_UNROLL && TM_UNROLL_UPDATENOISEPROB)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<N ; ++i )
- { register int si;
- register int smini;
-
- si = S[i];
- smini = Smin[i];
- update_prob[i] = mux(MULT16_32_Q15(q4,si) > ADD32(smini,20), 1, 0);
- }
-#if (TM_UNROLL && TM_UNROLL_UPDATENOISEPROB)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- }
-
- UPDATENOISEPROB_STOP();
-}
-
-#else
-
-#define OVERRIDE_PREPROCESS_ANALYSIS
-static void preprocess_analysis(SpeexPreprocessState * restrict st, spx_int16_t * restrict x)
-{
- register int i;
- register int framesize = st->frame_size;
- register int N = st->ps_size;
- register int N3 = 2*N - framesize;
- register int N4 = framesize - N3;
- register float * restrict ps = st->ps;
- register float * restrict frame = st->frame;
- register float * restrict inbuf = st->inbuf;
-
- PREPROCESSANAYLSIS_START();
-
-#if (TM_UNROLL && TM_UNROLL_PREPROCESSANALYSIS)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<N3 ; ++i )
- {
- frame[i] = inbuf[i];
- }
-#if (TM_UNROLL && TM_UNROLL_PREPROCESSANALYSIS)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
-#if (TM_UNROLL && TM_UNROLL_PREPROCESSANALYSIS)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<framesize ; ++i )
- { frame[N3+i] = x[i];
- }
-#if (TM_UNROLL && TM_UNROLL_PREPROCESSANALYSIS)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
-#if (TM_UNROLL && TM_UNROLL_PREPROCESSANALYSIS)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0,x+=N4 ; i<N3 ; ++i )
- { inbuf[i] = x[i];
- }
-#if (TM_UNROLL && TM_UNROLL_PREPROCESSANALYSIS)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- inbuf = st->window;
-
-#if (TM_UNROLL && TM_UNROLL_PREPROCESSANALYSIS)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<2*N ; ++i )
- {
- frame[i] = frame[i] * inbuf[i];
- }
-#if (TM_UNROLL && TM_UNROLL_PREPROCESSANALYSIS)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- spx_fft(st->fft_lookup, frame, st->ft);
- power_spectrum(st->ft, ps, N << 1);
- filterbank_compute_bank32(st->bank, ps, ps+N);
-
- PREPROCESSANAYLSIS_STOP();
-}
-
-
-#define OVERRIDE_UPDATE_NOISE_PROB
-static void update_noise_prob(SpeexPreprocessState * restrict st)
-{
-
- register float * restrict S = st->S;
- register float * restrict ps = st->ps;
- register int N = st->ps_size;
- register int min_range;
- register int i;
- register int nb_adapt;
- register float * restrict Smin = st->Smin;
- register float * restrict Stmp = st->Stmp;
-
- UPDATENOISEPROB_START();
-
- {
- register float ips, psi;
-
- ips = ps[0];
- psi = ps[1];
-
- S[0] = .8f * S[0] + .2f * ips;
-
- for ( i=1 ; i<N-1 ; i+=2 )
- {
- register float psii, psiii;
-
- psii = ps[i+1];
- psiii = ps[i+2];
- S[i] = .8f * S[i] + .05f * ips + .1f * psi + .05f * psii;
- S[i+1] = .8f * S[i+1] + .05f * psi + .1f * psii + .05f * psiii;
- ips = psii;
- psi = psiii;
- }
-
- S[N-1] = .8f * S[N-1] + .2f * ps[N-1];
- }
-
- nb_adapt = st->nb_adapt;
-
- if ( nb_adapt==1 )
- {
- for (i=0;i<N;i++)
- Smin[i] = st->Stmp[i] = 0;
- }
-
- min_range = mux(nb_adapt < 100, 15,
- mux(nb_adapt < 1000, 50,
- mux(nb_adapt < 10000, 150, 300)));
-
-
- if ( st->min_count > min_range )
- {
- st->min_count = 0;
-#if (TM_UNROLL && TM_UNROLL_UPDATENOISEPROB)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<N ; ++i )
- {
- register float stmpi, si;
-
- stmpi = Stmp[i];
- si = S[i];
-
- Smin[i] = fmin(stmpi,si);
- Stmp[i] = si;
- }
-#if (TM_UNROLL && TM_UNROLL_UPDATENOISEPROB)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- } else
- {
- register float * restrict Smin = st->Smin;
-
-#if (TM_UNROLL && TM_UNROLL_UPDATENOISEPROB)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<N ; ++i )
- {
- register float stmpi, si, smini;
-
- stmpi = Stmp[i];
- si = S[i];
- smini = Smin[i];
-
- Smin[i] = fmin(smini,si);
- Stmp[i] = fmin(stmpi,si);
- }
-#if (TM_UNROLL && TM_UNROLL_UPDATENOISEPROB)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- }
-
- {
- register int * restrict update_prob = (int*)st->update_prob;
-
-#if (TM_UNROLL && TM_UNROLL_UPDATENOISEPROB)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for (i=0;i<N;i++)
- { register float si;
- register float smini;
-
- si = S[i];
- smini = Smin[i];
- update_prob[i] = mux( (.4 * si) > (smini + 20.f), 1, 0);
-
- }
-#if (TM_UNROLL && TM_UNROLL_UPDATENOISEPROB)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- }
-
- UPDATENOISEPROB_STOP();
-}
-
-
-#define OVERRIDE_COMPUTE_GAIN_FLOOR
-static void compute_gain_floor(
- int noise_suppress,
- int effective_echo_suppress,
- float * restrict noise,
- float * restrict echo,
- float * gain_floor,
- int len
-)
-{
- register int i;
- register float echo_floor;
- register float noise_floor;
-
- COMPUTEGAINFLOOR_START();
-
- noise_floor = exp(.2302585f*noise_suppress);
- echo_floor = exp(.2302585f*effective_echo_suppress);
-
-#if (TM_UNROLL && TM_UNROLL_COMPUTEGAINFLOOR)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for (i=0;i<len;i++)
- { register float noisei, echoi;
-
- noisei = noise[i];
- echoi = echo[i];
-
- gain_floor[i] = FRAC_SCALING * sqrt(noise_floor * noisei + echo_floor * echoi) / sqrt(1+noisei+echoi);
-
- }
-#if (TM_UNROLL && TM_UNROLL_COMPUTEGAINFLOOR)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- COMPUTEGAINFLOOR_STOP();
-}
-
-#endif
-
-static inline spx_word32_t hypergeom_gain(spx_word32_t xx);
-static inline spx_word16_t qcurve(spx_word16_t x);
-static void compute_gain_floor(int noise_suppress, int effective_echo_suppress, spx_word32_t *noise, spx_word32_t *echo, spx_word16_t *gain_floor, int len);
-void speex_echo_get_residual(SpeexEchoState *st, spx_word32_t *Yout, int len);
-
-#ifndef FIXED_POINT
-static void speex_compute_agc(SpeexPreprocessState *st, spx_word16_t Pframe, spx_word16_t *ft);
-#endif
-
-void preprocess_residue_echo(
- SpeexPreprocessState * restrict st,
- int N,
- int NM
-)
-{
- if (st->echo_state)
- {
- register spx_word32_t * restrict r_echo = st->residual_echo;
- register spx_word32_t * restrict e_noise = st->echo_noise;
- register int i;
-
-#ifndef FIXED_POINT
- register spx_word32_t r;
-#endif
-
- speex_echo_get_residual(st->echo_state, r_echo, N);
-
-#ifndef FIXED_POINT
- r = r_echo[0];
- if (!(r >=0 && r < N*1e9f) )
- {
- memset(r_echo, 0, N * sizeof(spx_word32_t));
- }
-#endif
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for (i=0;i<N;i++)
- { register spx_word32_t eni = e_noise[i];
- e_noise[i] = MAX32(MULT16_32_Q15(QCONST16(.6f,15),eni), r_echo[i]);
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- filterbank_compute_bank32(st->bank, e_noise, e_noise+N);
-
- } else
- { memset(st->echo_noise, 0, (NM) * sizeof(spx_word32_t));
- }
-}
-
-void preprocess_update_noise(
- SpeexPreprocessState * restrict st,
- spx_word32_t * restrict ps,
- int N
-)
-{
- register spx_word16_t beta, beta_1;
- register int * restrict up = st->update_prob;
- register spx_word32_t * restrict noise = st->noise;
- register int i;
-
- beta = MAX16(QCONST16(.03,15),DIV32_16(Q15_ONE,st->nb_adapt));
- beta_1 = Q15_ONE-beta;
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for (i=0;i<N;i++)
- { register spx_word32_t ni = noise[i];
- register spx_word32_t psi = ps[i];
-
- if ( !up[i] || psi < PSHR32(ni, NOISE_SHIFT) )
- { noise[i] = MAX32(EXTEND32(0),MULT16_32_Q15(beta_1,ni) +
- MULT16_32_Q15(beta,SHL32(psi,NOISE_SHIFT)));
- }
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- filterbank_compute_bank32(st->bank, noise, noise+N);
-}
-
-void preprocess_compute_SNR(
- SpeexPreprocessState * restrict st,
- spx_word32_t * restrict ps,
- int NM
-)
-{
- register spx_word32_t * restrict noise = st->noise;
- register spx_word32_t * restrict echo = st->echo_noise;
- register spx_word32_t * restrict reverb = st->reverb_estimate;
- register spx_word16_t * restrict post = st->post;
- register spx_word32_t * restrict old_ps = st->old_ps;
- register spx_word16_t * restrict prior = st->prior;
- register int i;
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<NM ; i++)
- {
- register spx_word16_t gamma;
- register spx_word32_t tot_noise;
- register spx_word16_t posti;
- register spx_word32_t opsi;
- register spx_word16_t priori;
-
- tot_noise = ADD32(ADD32(ADD32(EXTEND32(1), PSHR32(noise[i],NOISE_SHIFT)), echo[i]) , reverb[i]);
-
- posti = SUB16(DIV32_16_Q8(ps[i],tot_noise), QCONST16(1.f,SNR_SHIFT));
- posti = MIN16(posti, QCONST16(100.f,SNR_SHIFT));
- post[i] = posti;
-
- opsi = old_ps[i];
-
- gamma = QCONST16(.1f,15)+MULT16_16_Q15(QCONST16(.89f,15),SQR16_Q15(DIV32_16_Q15(opsi,ADD32(opsi,tot_noise))));
-
- priori = EXTRACT16(PSHR32(ADD32(MULT16_16(gamma,MAX16(0,posti)), MULT16_16(Q15_ONE-gamma,DIV32_16_Q8(opsi,tot_noise))), 15));
- prior[i]=MIN16(priori, QCONST16(100.f,SNR_SHIFT));
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-}
-
-spx_word32_t preprocess_smooth_SNR(
- SpeexPreprocessState * restrict st,
- int N,
- int NM
-)
-{
- register spx_word16_t * restrict zeta = st->zeta;
- register spx_word16_t * restrict prior = st->prior;
- register spx_word32_t Zframe;
- register spx_word16_t iprior, priori;
- register int _N = N-1;
- register int i;
-
- iprior = prior[0];
- priori = prior[1];
- zeta[0] = PSHR32(ADD32(MULT16_16(QCONST16(.7f,15),zeta[0]), MULT16_16(QCONST16(.3f,15),iprior)),15);
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=1 ; i<_N ; i++)
- { register spx_word16_t zetai = zeta[i];
- register spx_word16_t priorii = prior[i+1];
-
- zeta[i] = PSHR32(ADD32(ADD32(ADD32(MULT16_16(QCONST16(.7f,15),zetai), MULT16_16(QCONST16(.15f,15),priori)),
- MULT16_16(QCONST16(.075f,15),iprior)), MULT16_16(QCONST16(.075f,15),priorii)),15);
-
- iprior = priori;
- priori = priorii;
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- for (i=_N; i<NM ; i++)
- { register spx_word16_t zetai = zeta[i];
-
- priori = prior[i];
- zeta[i] = PSHR32(ADD32(MULT16_16(QCONST16(.7f,15),zetai), MULT16_16(QCONST16(.3f,15),priori)),15);
- }
-
- Zframe = 0;
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=N ; i<NM ; i++ )
- { Zframe = ADD32(Zframe, EXTEND32(zeta[i]));
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- return Zframe;
-}
-
-void preprocess_compute_emgain(
- SpeexPreprocessState * restrict st,
- spx_word32_t * restrict ps,
- spx_word16_t Pframe,
- int NM
-)
-{
- register spx_word16_t * restrict zeta = st->zeta;
- register spx_word16_t * restrict prior = st->prior;
- register spx_word16_t * restrict gain = st->gain;
- register spx_word32_t * restrict old_ps = st->old_ps;
- register spx_word16_t * restrict post = st->post;
- register spx_word16_t * restrict gain2 = st->gain2;
- register int i;
- register int N=st->ps_size;
-
- for ( i=N ; i<NM ; ++i )
- {
- register spx_word32_t theta;
- register spx_word32_t MM;
- register spx_word16_t prior_ratio;
- register spx_word16_t P1;
- register spx_word16_t q;
-
-#ifdef FIXED_POINT
- register spx_word16_t tmp;
-#endif
- register spx_word16_t priori = prior[i];
-
- prior_ratio = PDIV32_16(SHL32(EXTEND32(priori), 15), ADD16(priori, SHL32(1,SNR_SHIFT)));
- theta = MULT16_32_P15(prior_ratio, QCONST32(1.f,EXPIN_SHIFT)+SHL32(EXTEND32(post[i]),EXPIN_SHIFT-SNR_SHIFT));
-
- MM = hypergeom_gain(theta);
- gain[i] = EXTRACT16(MIN32(Q15_ONE, MULT16_32_Q15(prior_ratio, MM)));
- old_ps[i] = MULT16_32_P15(QCONST16(.2f,15),old_ps[i]) + MULT16_32_P15(MULT16_16_P15(QCONST16(.8f,15),SQR16_Q15(gain[i])),ps[i]);
-
- P1 = QCONST16(.199f,15)+MULT16_16_Q15(QCONST16(.8f,15),qcurve (zeta[i]));
- q = Q15_ONE-MULT16_16_Q15(Pframe,P1);
-
-#ifdef FIXED_POINT
- theta = MIN32(theta, EXTEND32(32767));
- tmp = MULT16_16_Q15((SHL32(1,SNR_SHIFT)+priori),EXTRACT16(MIN32(Q15ONE,SHR32(spx_exp(-EXTRACT16(theta)),1))));
- tmp = MIN16(QCONST16(3.,SNR_SHIFT), tmp);
- tmp = EXTRACT16(PSHR32(MULT16_16(PDIV32_16(SHL32(EXTEND32(q),8),(Q15_ONE-q)),tmp),8));
- gain2[i]=DIV32_16(SHL32(EXTEND32(32767),SNR_SHIFT), ADD16(256,tmp));
-#else
- gain2[i]=1/(1.f + (q/(1.f-q))*(1+priori)*exp(-theta));
-#endif
- }
-
- filterbank_compute_psd16(st->bank,gain2+N, gain2);
- filterbank_compute_psd16(st->bank,gain+N, gain);
-}
-
-void preprocess_compute_linear_gain(
- SpeexPreprocessState * restrict st,
- spx_word32_t * restrict ps,
- int N
-)
-{
- register spx_word16_t * restrict gain_floor = st->gain_floor;
- register spx_word16_t * restrict prior = st->prior;
- register spx_word16_t * restrict gain = st->gain;
- register spx_word32_t * restrict old_ps = st->old_ps;
- register spx_word16_t * restrict post = st->post;
- register spx_word16_t * restrict gain2 = st->gain2;
- register int i;
-
- filterbank_compute_psd16(st->bank,gain_floor+N,gain_floor);
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for (i=0;i<N;i++)
- {
- register spx_word32_t MM;
- register spx_word32_t theta;
- register spx_word16_t prior_ratio;
- register spx_word16_t tmp;
- register spx_word16_t p;
- register spx_word16_t g;
- register spx_word16_t gfi = gain_floor[i];
-
- prior_ratio = PDIV32_16(SHL32(EXTEND32(st->prior[i]), 15), ADD16(prior[i], SHL32(1,SNR_SHIFT)));
- theta = MULT16_32_P15(prior_ratio, QCONST32(1.f,EXPIN_SHIFT)+SHL32(EXTEND32(post[i]),EXPIN_SHIFT-SNR_SHIFT));
- MM = hypergeom_gain(theta);
-
- g = EXTRACT16(MIN32(Q15_ONE, MULT16_32_Q15(prior_ratio, MM)));
- p = gain2[i];
-
- g = VMUX( MULT16_16_Q15(QCONST16(.333f,15),g) > gain[i], MULT16_16(3,gain[i]), g);
-
- old_ps[i]= MULT16_32_P15(QCONST16(.2f,15),old_ps[i]) +
- MULT16_32_P15(MULT16_16_P15(QCONST16(.8f,15),SQR16_Q15(g)),ps[i]);
-
- g = VMUX( g < gfi, gfi, g );
- gain[i] = g;
-
- tmp = MULT16_16_P15(p,spx_sqrt(SHL32(EXTEND32(g),15))) +
- MULT16_16_P15(SUB16(Q15_ONE,p),spx_sqrt(SHL32(EXTEND32(gfi),15)));
-
- gain2[i]=SQR16_Q15(tmp);
-
- /* Use this if you want a log-domain MMSE estimator instead */
- /* gain2[i] = pow(g, p) * pow(gfi,1.f-p);*/
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-}
-
-
-#if 0
-void preprocess_compute_bark_gain(
- SpeexPreprocessState * restrict st,
- int N,
- int NM
-)
-{
- register spx_word16_t * restrict gain_floor = st->gain_floor;
- register spx_word16_t * restrict gain = st->gain;
- register spx_word16_t * restrict gain2 = st->gain2;
- register int i;
-
- for (i=N;i<NM;i++)
- {
- register spx_word16_t tmp;
- register spx_word16_t p = gain2[i];
- register spx_word16_t gaini;
- register spx_word16_t gfi = gain_floor[i];
-
- gaini = MAX16(gain[i], gfi);
-
- gain[i] = gaini;
-
- tmp = MULT16_16_P15(p,spx_sqrt(SHL32(EXTEND32(gaini),15))) +
- MULT16_16_P15(SUB16(Q15_ONE,p),spx_sqrt(SHL32(EXTEND32(gfi),15)));
-
- gain2[i]=SQR16_Q15(tmp);
- }
-
- filterbank_compute_psd16(st->bank,gain2+N, gain2);
-}
-#endif
-
-void preprocess_apply_gain(
- SpeexPreprocessState * restrict st,
- int N
-)
-{
- register spx_word16_t * restrict ft = st->ft;
- register spx_word16_t * restrict gain2 = st->gain2;
- register int j, i;
-
- ft[0] = MULT16_16_P15(gain2[0],ft[0]);
-
- for (i=1,j=1; i<N ; i++,j+=2)
- {
- register spx_word16_t gain2i = gain2[i];
- register spx_word16_t ftj = ft[j];
- register spx_word16_t ftjj = ft[j+1];
-
- ft[j] = MULT16_16_P15(gain2i,ftj);
- ft[j+1] = MULT16_16_P15(gain2i,ftjj);
- }
-
- ft[(N<<1)-1] = MULT16_16_P15(gain2[N-1],ft[(N<<1)-1]);
-}
-
-#ifdef FIXED_POINT
-void preprocess_scale(
- SpeexPreprocessState * restrict st,
- int N
-)
-{
- register spx_word16_t * restrict frame = st->frame;
- register int shift = st->frame_shift;
- register int i;
- register int N2 = N << 1;
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<N2 ;i++)
- { register spx_word16_t framei = frame[i];
-
- frame[i] = PSHR16(framei,shift);
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-}
-
-#else
-
-void preprocess_apply_agc(
- SpeexPreprocessState * restrict st,
- int N
-)
-{
- register spx_word16_t max_sample=0;
- register spx_word16_t * restrict frame = st->frame;
- register int i;
- register int N2 = N << 1;
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for (i=0;i<N2;i++)
- { register spx_word16_t framei = VABS(frame[i]);
-
- max_sample = VMUX( framei > max_sample, framei, max_sample);
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- if ( max_sample > 28000.f )
- {
- float damp = 28000.f/max_sample;
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i< N2 ; i++ )
- { frame[i] *= damp;
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- }
-}
-#endif
-
-
-void preprocess_update(
- SpeexPreprocessState * restrict st,
- spx_int16_t * restrict x,
- int N
-)
-{
- register spx_word16_t * restrict frame = st->frame;
- register spx_word16_t * restrict window = st->window;
- register spx_word16_t * restrict outbuf = st->outbuf;
- register int framesize = st->frame_size;
- register int N2 = N << 1;
- register int N3 = N2 - framesize;
- register int N4 = (framesize) - N3;
- register int i;
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<N2 ; i++)
- { register spx_word16_t fi = frame[i];
- register spx_word16_t wi = window[i];
-
- frame[i] = MULT16_16_Q15(fi, wi);
- }
- for (i=0;i<N3;i++)
- { x[i] = outbuf[i] + frame[i];
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
- for ( i=0;i<N4;i++)
- { x[N3+i] = frame[N3+i];
- }
-
- memcpy(outbuf, frame+framesize, (N3) * sizeof(spx_word16_t));
-}
-
-#define OVERRIDE_SPEEX_PREPROCESS_RUN
-int speex_preprocess_run(SpeexPreprocessState * restrict st, spx_int16_t * restrict x)
-{
- register int i, N, M, NM;
- register spx_word32_t * restrict ps=st->ps;
- register spx_word32_t Zframe;
- register spx_word16_t Pframe;
-
- st->nb_adapt++;
- st->min_count++;
- N = st->ps_size;
- M = st->nbands;
- NM = N + M;
-
- preprocess_residue_echo(st, N, NM);
- preprocess_analysis(st, x);
- update_noise_prob(st);
- preprocess_update_noise(st, ps, N);
-
- if ( st->nb_adapt == 1 )
- { memcpy(st->old_ps, ps, (NM) * sizeof(spx_word32_t));
- }
-
- preprocess_compute_SNR(st, ps, NM);
- Zframe = preprocess_smooth_SNR(st, N, NM);
-
-
- {
- register spx_word16_t effective_echo_suppress;
-
- Pframe = QCONST16(.1f,15)+MULT16_16_Q15(QCONST16(.899f,15),qcurve(DIV32_16(Zframe,M)));
- effective_echo_suppress = EXTRACT16(PSHR32(ADD32(MULT16_16(SUB16(Q15_ONE,Pframe), st->echo_suppress),
- MULT16_16(Pframe, st->echo_suppress_active)),15));
- compute_gain_floor(st->noise_suppress, effective_echo_suppress, st->noise+N, st->echo_noise+N, st->gain_floor+N, M);
-
- }
-
- preprocess_compute_emgain(st, ps, Pframe, NM);
- preprocess_compute_linear_gain(st, ps, N);
-
-
- if (!st->denoise_enabled)
- {
- register spx_word16_t * restrict gain2 = st->gain2;
-
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0 ; i<NM ; i++ )
- { gain2[i] = Q15_ONE;
- }
-#if (TM_UNROLL && TM_UNROLL_SPEEXPREPROCESSRUN)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
- }
-
- preprocess_apply_gain(st, N);
-
-#ifndef FIXED_POINT
- if (st->agc_enabled)
- { speex_compute_agc(st, Pframe, st->ft);
- }
-#endif
-
-
- spx_ifft(st->fft_lookup, st->ft, st->frame);
-
-#ifdef FIXED_POINT
- preprocess_scale(st, N);
-#endif
-
-#ifndef FIXED_POINT
- if ( st->agc_enabled )
- { preprocess_apply_agc(st, N);
- }
-#endif
-
- preprocess_update(st, x, N);
-
- if ( st->vad_enabled )
- {
- if (Pframe > st->speech_prob_start || (st->was_speech && Pframe > st->speech_prob_continue))
- { st->was_speech=1;
- return 1;
-
- } else
- { st->was_speech=0;
- return 0;
- }
- } else
- { return 1;
- }
-}
diff --git a/3rdparty/speex/tmv/profile_tm.h b/3rdparty/speex/tmv/profile_tm.h
deleted file mode 100644
index 2ecafb72..00000000
--- a/3rdparty/speex/tmv/profile_tm.h
+++ /dev/null
@@ -1,407 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file profile_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-/**
-* @remarks This file provide some capabilities to measure clock cycles.
-* Use this if unable to compile with TriMedia profile options
-*/
-
-extern int __profile_begin;
-extern int __profile_end;
-
-#if TM_PROFILE
-#define PROFILE_START() \
- { \
- __profile_begin = cycles(); \
- } \
-
-#define PROFILE_STOP() \
- { \
- __profile_end = cycles(); \
- printf("%s\t%d\n", __FUNCTION__, end - begin); \
- } \
-
-#else
-#define PROFILE_START()
-#define PROFILE_STOP()
-#endif
-
-#if TM_PROFILE_SPXAUTOCORR
-#define _SPX_AUTOCORR_START() PROFILE_START()
-#define _SPX_AUTOCORR_STOP() PROFILE_STOP()
-#else
-#define _SPX_AUTOCORR_START()
-#define _SPX_AUTOCORR_STOP()
-#endif
-
-#if TM_PROFILE_INNERPROD
-#define INNERPROD_START() PROFILE_START()
-#define INNERPROD_STOP() PROFILE_STOP()
-#else
-#define INNERPROD_START()
-#define INNERPROD_STOP()
-#endif
-
-#if TM_PROFILE_PITCHXCORR
-#define PITCHXCORR_START() PROFILE_START()
-#define PITCHXCORR_STOP() PROFILE_STOP()
-#else
-#define PITCHXCORR_START()
-#define PITCHXCORR_STOP()
-#endif
-
-#if TM_PROFILE_COMPUTEPITCHERROR
-#define COMPUTEPITCHERROR_START() PROFILE_START()
-#define COMPUTEPITCHERROR_STOP() PROFILE_STOP()
-#else
-#define COMPUTEPITCHERROR_START()
-#define COMPUTEPITCHERROR_STOP()
-#endif
-
-#if TM_PROFILE_PITCHGAINSEARCH3TAPVQ
-#define PITCHGAINSEARCH3TAPVQ_START() PROFILE_START()
-#define PITCHGAINSEARCH3TAPVQ_STOP() PROFILE_STOP()
-#else
-#define PITCHGAINSEARCH3TAPVQ_START()
-#define PITCHGAINSEARCH3TAPVQ_STOP()
-#endif
-
-#if TM_PROFILE_OPENLOOPNBESTPITCH
-#define OPENLOOPNBESTPITCH_START() PROFILE_START()
-#define OPENLOOPNBESTPITCH_STOP() PROFILE_STOP()
-#else
-#define OPENLOOPNBESTPITCH_START()
-#define OPENLOOPNBESTPITCH_STOP()
-#endif
-
-
-#if TM_PROFILE_LSP_INTERPOLATE
-#define LSPINTERPOLATE_START() PROFILE_START()
-#define LSPINTERPOLATE_STOP() PROFILE_STOP()
-#else
-#define LSPINTERPOLATE_START()
-#define LSPINTERPOLATE_STOP()
-#endif
-
-#if TM_PROFILE_CHEBPOLYEVA
-#define CHEBPOLYEVA_START() PROFILE_START()
-#define CHEBPOLYEVA_STOP() PROFILE_STOP()
-#else
-#define CHEBPOLYEVA_START()
-#define CHEBPOLYEVA_STOP()
-#endif
-
-
-#if TM_PROFILE_COMPUTEQUANTWEIGHTS
-#define COMPUTEQUANTWEIGHTS_START() PROFILE_START()
-#define COMPUTEQUANTWEIGHTS_STOP() PROFILE_STOP()
-#else
-#define COMPUTEQUANTWEIGHTS_START()
-#define COMPUTEQUANTWEIGHTS_STOP()
-#endif
-
-#if TM_PROFILE_LSPQUANT
-#define LSPQUANT_START() PROFILE_START()
-#define LSPQUANT_STOP() PROFILE_STOP()
-#else
-#define LSPQUANT_START()
-#define LSPQUANT_STOP()
-#endif
-
-#if TM_PROFILE_LSPWEIGHTQUANT
-#define LSPWEIGHTQUANT_START() PROFILE_START()
-#define LSPWEIGHTQUANT_STOP() PROFILE_STOP()
-#else
-#define LSPWEIGHTQUANT_START()
-#define LSPWEIGHTQUANT_STOP()
-#endif
-
-#if TM_PROFILE_FIRMEM16
-#define FIRMEM16_START() PROFILE_START()
-#define FIRMEM16_STOP() PROFILE_STOP()
-#else
-#define FIRMEM16_START()
-#define FIRMEM16_STOP()
-#endif
-
-#if TM_PROFILE_IIRMEM16
-#define IIRMEM16_START() PROFILE_START()
-#define IIRMEM16_STOP() PROFILE_STOP()
-#else
-#define IIRMEM16_START()
-#define IIRMEM16_STOP()
-#endif
-
-#if TM_PROFILE_FILTERMEM16
-#define FILTERMEM16_START() PROFILE_START()
-#define FILTERMEM16_STOP() PROFILE_STOP()
-#else
-#define FILTERMEM16_START()
-#define FILTERMEM16_STOP()
-#endif
-
-#if TM_PROFILE_COMPUTERMS16
-#define COMPUTERMS16_START() PROFILE_START()
-#define COMPUTERMS16_STOP() PROFILE_STOP()
-#else
-#define COMPUTERMS16_START()
-#define COMPUTERMS16_STOP()
-#endif
-
-#if TM_PROFILE_NORMALIZE16
-#define NORMALIZE16_START() PROFILE_START()
-#define NORMALIZE16_STOP() PROFILE_STOP()
-#else
-#define NORMALIZE16_START()
-#define NORMALIZE16_STOP()
-#endif
-
-#if TM_PROFILE_BWLPC
-#define BWLPC_START() PROFILE_START()
-#define BWLPC_STOP() PROFILE_STOP()
-#else
-#define BWLPC_START()
-#define BWLPC_STOP()
-#endif
-
-#if TM_PROFILE_HIGHPASS
-#define HIGHPASS_START() PROFILE_START()
-#define HIGHPASS_STOP() PROFILE_STOP()
-#else
-#define HIGHPASS_START()
-#define HIGHPASS_STOP()
-#endif
-
-#if TM_PROFILE_SIGNALMUL
-#define SIGNALMUL_START() PROFILE_START()
-#define SIGNALMUL_STOP() PROFILE_STOP()
-#else
-#define SIGNALMUL_START()
-#define SIGNALMUL_STOP()
-#endif
-
-#if TM_PROFILE_SIGNALDIV
-#define SIGNALDIV_START() PROFILE_START()
-#define SIGNALDIV_STOP() PROFILE_STOP()
-#else
-#define SIGNALDIV_START()
-#define SIGNALDIV_STOP()
-#endif
-
-#if TM_PROFILE_COMPUTEIMPULSERESPONSE
-#define COMPUTEIMPULSERESPONSE_START() PROFILE_START()
-#define COMPUTEIMPULSERESPONSE_STOP() PROFILE_STOP()
-#else
-#define COMPUTEIMPULSERESPONSE_START()
-#define COMPUTEIMPULSERESPONSE_STOP()
-#endif
-
-#if TM_PROFILE_COMPUTEWEIGHTEDCODEBOOK
-#define COMPUTEWEIGHTEDCODEBOOK_START() PROFILE_START()
-#define COMPUTEWEIGHTEDCODEBOOK_STOP() PROFILE_STOP()
-#else
-#define COMPUTEWEIGHTEDCODEBOOK_START()
-#define COMPUTEWEIGHTEDCODEBOOK_STOP()
-#endif
-
-#if TM_PROFILE_TARGETUPDATE
-#define TARGETUPDATE_START() PROFILE_START()
-#define TARGETUPDATE_STOP() PROFILE_STOP()
-#else
-#define TARGETUPDATE_START()
-#define TARGETUPDATE_STOP()
-#endif
-
-
-#if TM_PROFILE_VQNBEST
-#define VQNBEST_START() PROFILE_START()
-#define VQNBEST_STOP() PROFILE_STOP()
-#else
-#define VQNBEST_START()
-#define VQNBEST_STOP()
-#endif
-
-#if TM_PROFILE_VQNBESTSIGN
-#define VQNBESTSIGN_START() PROFILE_START()
-#define VQNBESTSIGN_STOP() PROFILE_STOP()
-#else
-#define VQNBESTSIGN_START()
-#define VQNBESTSIGN_STOP()
-#endif
-
-#if TM_PROFILE_PREPROCESSANALYSIS
-#define PREPROCESSANAYLSIS_START() PROFILE_START()
-#define PREPROCESSANAYLSIS_STOP() PROFILE_STOP()
-#else
-#define PREPROCESSANAYLSIS_START()
-#define PREPROCESSANAYLSIS_STOP()
-#endif
-
-#if TM_PROFILE_UPDATENOISEPROB
-#define UPDATENOISEPROB_START() PROFILE_START()
-#define UPDATENOISEPROB_STOP() PROFILE_STOP()
-#else
-#define UPDATENOISEPROB_START()
-#define UPDATENOISEPROB_STOP()
-#endif
-
-#if TM_PROFILE_COMPUTEGAINFLOOR
-#define COMPUTEGAINFLOOR_START() PROFILE_START()
-#define COMPUTEGAINFLOOR_STOP() PROFILE_STOP()
-#else
-#define COMPUTEGAINFLOOR_START()
-#define COMPUTEGAINFLOOR_STOP()
-#endif
-
-#if TM_PROFILE_FILTERDCNOTCH16
-#define FILTERDCNOTCH16_START() PROFILE_START()
-#define FILTERDCNOTCH16_STOP() PROFILE_STOP()
-#else
-#define FILTERDCNOTCH16_START()
-#define FILTERDCNOTCH16_STOP()
-#endif
-
-#if TM_PROFILE_MDFINNERPROD
-#define MDFINNERPROD_START() PROFILE_START()
-#define MDFINNERPROD_STOP() PROFILE_STOP()
-#else
-#define MDFINNERPROD_START()
-#define MDFINNERPROD_STOP()
-#endif
-
-#if TM_PROFILE_SPECTRALMULACCUM
-#define SPECTRALMULACCUM_START() PROFILE_START()
-#define SPECTRALMULACCUM_STOP() PROFILE_STOP()
-#else
-#define SPECTRALMULACCUM_START()
-#define SPECTRALMULACCUM_STOP()
-#endif
-
-#if TM_PROFILE_WEIGHTEDSPECTRALMULCONJ
-#define WEIGHTEDSPECTRALMULCONJ_START() PROFILE_START()
-#define WEIGHTEDSPECTRALMULCONJ_STOP() PROFILE_STOP()
-#else
-#define WEIGHTEDSPECTRALMULCONJ_START()
-#define WEIGHTEDSPECTRALMULCONJ_STOP()
-#endif
-
-#if TM_PROFILE_MDFADJUSTPROP
-#define MDFADJUSTPROP_START() PROFILE_START()
-#define MDFADJUSTPROP_STOP() PROFILE_STOP()
-#else
-#define MDFADJUSTPROP_START()
-#define MDFADJUSTPROP_STOP()
-#endif
-
-#if TM_PROFILE_SPEEXECHOGETRESIDUAL
-#define SPEEXECHOGETRESIDUAL_START() PROFILE_START()
-#define SPEEXECHOGETRESIDUAL_STOP() PROFILE_STOP()
-#else
-#define SPEEXECHOGETRESIDUAL_START()
-#define SPEEXECHOGETRESIDUAL_STOP()
-#endif
-
-#if TM_PROFILE_LSPENFORCEMARGIN
-#define LSPENFORCEMARGIN_START() PROFILE_START()
-#define LSPENFORCEMARGIN_STOP() PROFILE_STOP()
-#else
-#define LSPENFORCEMARGIN_START()
-#define LSPENFORCEMARGIN_STOP()
-#endif
-
-#if TM_PROFILE_LSPTOLPC
-#define LSPTOLPC_START() PROFILE_START()
-#define LSPTOLPC_STOP() PROFILE_STOP()
-#else
-#define LSPTOLPC_START()
-#define LSPTOLPC_STOP()
-#endif
-
-#if TM_PROFILE_MAXIMIZERANGE
-#define MAXIMIZERANGE_START() PROFILE_START()
-#define MAXIMIZERANGE_STOP() PROFILE_STOP()
-#else
-#define MAXIMIZERANGE_START()
-#define MAXIMIZERANGE_STOP()
-#endif
-
-#if TM_PROFILE_RENORMRANGE
-#define RENORMRANGE_START() PROFILE_START()
-#define RENORMRANGE_STOP() PROFILE_STOP()
-#else
-#define RENORMRANGE_START()
-#define RENORMRANGE_STOP()
-#endif
-
-#if TM_PROFILE_POWERSPECTRUM
-#define POWERSPECTRUM_START() PROFILE_START()
-#define POWERSPECTRUM_STOP() PROFILE_STOP()
-#else
-#define POWERSPECTRUM_START()
-#define POWERSPECTRUM_STOP()
-#endif
-
-#if TM_PROFILE_QMFSYNTH
-#define QMFSYNTH_START() PROFILE_START()
-#define QMFSYNTH_STOP() PROFILE_STOP()
-#else
-#define QMFSYNTH_START()
-#define QMFSYNTH_STOP()
-#endif
-
-#if TM_PROFILE_QMFDECOMP
-#define QMFDECOMP_START() PROFILE_START()
-#define QMFDECOMP_STOP() PROFILE_STOP()
-#else
-#define QMFDECOMP_START()
-#define QMFDECOMP_STOP()
-#endif
-
-#if TM_PROFILE_FILTERBANKCOMPUTEBANK32
-#define FILTERBANKCOMPUTEBANK32_START() PROFILE_START()
-#define FILTERBANKCOMPUTEBANK32_STOP() PROFILE_STOP()
-#else
-#define FILTERBANKCOMPUTEBANK32_START()
-#define FILTERBANKCOMPUTEBANK32_STOP()
-#endif
-
-#if TM_PROFILE_FILTERBANKCOMPUTEPSD16
-#define FILTERBANKCOMPUTEPSD16_START() PROFILE_START()
-#define FILTERBANKCOMPUTEPSD16_STOP() PROFILE_STOP()
-#else
-#define FILTERBANKCOMPUTEPSD16_START()
-#define FILTERBANKCOMPUTEPSD16_STOP()
-#endif
-
-
diff --git a/3rdparty/speex/tmv/quant_lsp_tm.h b/3rdparty/speex/tmv/quant_lsp_tm.h
deleted file mode 100644
index 9f49fca3..00000000
--- a/3rdparty/speex/tmv/quant_lsp_tm.h
+++ /dev/null
@@ -1,448 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file quant_lsp_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#include <ops/custom_defs.h>
-#include "profile_tm.h"
-
-#ifdef FIXED_POINT
-
-#define OVERRIDE_COMPUTE_QUANT_WEIGHTS
-static void compute_quant_weights(Int16 *qlsp, Int16 *qw, int order)
-{
- int qlspi, qlspii;
- int w1, w2;
- int i;
-
- TMDEBUG_ALIGNMEM(qlsp);
- TMDEBUG_ALIGNMEM(qw);
-
- COMPUTEQUANTWEIGHTS_START();
-
- --order;
-
- qlspi = (int)qlsp[0];
- qlspii = (int)qlsp[1];
- w1 = qlspi;
- w2 = qlspii - qlspi;
-
- qw[0] = 81920 / (300 + imin(w1,w2));
-
- for ( i=1 ; i<order ; ++i )
- { qlspi = qlspii;
- qlspii = qlsp[i+1];
-
- w1 = w2;
- w2 = qlspii - qlspi;
-
- qw[i] = 81920 / (300 + imin(w1,w2));
- }
-
- w1 = LSP_PI - qlspii;
- qw[i] = 81920 / (300 + imin(w1,w2));
-
- COMPUTEQUANTWEIGHTS_STOP();
-}
-
-
-
-#define OVERRIDE_LSP_QUANT
-static int lsp_quant(Int16 *x, const signed char *cdbk, int nbVec, int nbDim)
-{
- register int best_dist=VERY_LARGE32;
- register int best_id=0;
- register int i, j;
- register int dt0, dt1, dt2, dt3;
- register int cb0, cb1, cb2, cb3, xx;
- register int ptr_inc = nbDim * 3;
- register int five = 5;
- const signed char *ptr;
-
- TMDEBUG_ALIGNMEM(x);
-
- LSPQUANT_START();
-
- for ( i=0, ptr=cdbk ; i<nbVec ; i+=4, ptr += ptr_inc )
- { dt3 = dt2 = dt1 = dt0 = 0;
-
- for ( j=0 ; j <nbDim ; j += 2 )
- {
- xx = ld32x(x,j>>1);
- cb0 = pack16lsb((int)ptr[1], (int)ptr[0]);
- cb0 = dualasl(cb0,five);
- cb0 = dspidualsub(xx,cb0);
- dt0 += ifir16(cb0,cb0);
-
- cb1 = pack16lsb((int)ptr[nbDim+1], (int)ptr[nbDim]);
- cb1 = dualasl(cb1,five);
- cb1 = dspidualsub(xx,cb1);
- dt1 += ifir16(cb1, cb1);
-
- cb2 = pack16lsb((int)ptr[nbDim*2+1], (int)ptr[nbDim*2]);
- cb2 = dualasl(cb2,five);
- cb2 = dspidualsub(xx,cb2);
- dt2 += ifir16(cb2, cb2);
-
- cb3 = pack16lsb((int)ptr[nbDim*3+1], (int)ptr[nbDim*3]);
- cb3 = dualasl(cb3,five);
- cb3 = dspidualsub(xx,cb3);
- dt3 += ifir16(cb3, cb3);
-
- ptr += 2;
- }
-
- if ( dt0<best_dist )
- { best_dist = dt0;
- best_id = i;
- }
-
- if ( dt1<best_dist )
- { best_dist = dt1;
- best_id = i+1;
- }
-
- if ( dt2<best_dist )
- { best_dist = dt2;
- best_id = i+2;
- }
-
- if ( dt3<best_dist )
- { best_dist = dt3;
- best_id = i+3;
- }
- }
-
- for ( j=0,ptr=cdbk+best_id*nbDim ; j<nbDim ; j+=2 )
- { xx = ld32x(x,j>>1);
- cb0 = pack16lsb((int)ptr[j+1], (int)ptr[j]);
- cb0 = dualasl(cb0,five);
- dt0 = dspidualsub(xx,cb0);
- st32d(j<<1, x, dt0);
- }
-
- LSPQUANT_STOP();
- return best_id;
-}
-
-
-#define OVERRIDE_LSP_WEIGHT_QUANT
-static int lsp_weight_quant(Int16 *x, Int16 *weight, const signed char *cdbk, int nbVec, int nbDim)
-{
- register int best_dist=VERY_LARGE32;
- register int best_id=0;
- register int i, j;
- register int dt1, dt2, dt3, dt4;
- register int cb1, cb2, cb3, cb4, wt, xx;
- register int ptr_inc = nbDim * 3;
- const signed char *ptr;
-
- LSPWEIGHTQUANT_START();
-
- for ( i=0, ptr=cdbk ; i<nbVec ; i+=4, ptr += ptr_inc )
- { dt4 = dt3 = dt2 = dt1 = 0;
-
- for ( j=0 ; j<nbDim ; ++j )
- { wt = weight[j];
- xx = x[j];
-
- cb1 = xx - (ptr[0] << 5);
- cb2 = xx - (ptr[nbDim] << 5);
- cb3 = xx - (ptr[nbDim*2] << 5);
- cb4 = xx - (ptr[nbDim*3] << 5);
-
- ++ptr;
-
- cb1 *= cb1;
- cb2 *= cb2;
- cb3 *= cb3;
- cb4 *= cb4;
-
- dt1 += (wt * (cb1 >> 15)) + ((wt * (cb1 & 0x7fff)) >> 15);
- dt2 += (wt * (cb2 >> 15)) + ((wt * (cb2 & 0x7fff)) >> 15);
- dt3 += (wt * (cb3 >> 15)) + ((wt * (cb3 & 0x7fff)) >> 15);
- dt4 += (wt * (cb4 >> 15)) + ((wt * (cb4 & 0x7fff)) >> 15);
-
- }
-
- if ( dt1<best_dist )
- { best_dist = dt1;
- best_id = i;
- }
-
- if ( dt2<best_dist )
- { best_dist = dt2;
- best_id = i+1;
- }
-
- if ( dt3<best_dist )
- { best_dist = dt3;
- best_id = i+2;
- }
-
- if ( dt4<best_dist )
- { best_dist = dt4;
- best_id = i+3;
- }
- }
-
- for ( j=0 ; j<nbDim ; ++j )
- { x[j] = x[j] - ((Int16)cdbk[best_id*nbDim+j] << 5);
- }
-
- LSPWEIGHTQUANT_STOP();
-
- return best_id;
-}
-
-#if 0
-// TODO: unroll loops
-#define OVERRIDE_LSP_QUANT_NB
-void lsp_quant_nb(spx_lsp_t *lsp, spx_lsp_t *qlsp, int order, SpeexBits *bits)
-{
- int i;
- int id;
- spx_word16_t quant_weight[10];
-
- for (i=0;i<order;i++)
- qlsp[i]=lsp[i];
-
- compute_quant_weights(qlsp, quant_weight, order);
-
- for (i=0;i<order;i++)
- qlsp[i]=SUB16(qlsp[i],LSP_LINEAR(i));
-
-#ifndef FIXED_POINT
- for (i=0;i<order;i++)
- qlsp[i] = LSP_SCALE*qlsp[i];
-#endif
- id = lsp_quant(qlsp, cdbk_nb, NB_CDBK_SIZE, order);
- speex_bits_pack(bits, id, 6);
-
- for (i=0;i<order;i++)
- qlsp[i]*=2;
-
- id = lsp_weight_quant(qlsp, quant_weight, cdbk_nb_low1, NB_CDBK_SIZE_LOW1, 5);
- speex_bits_pack(bits, id, 6);
-
- for (i=0;i<5;i++)
- qlsp[i]*=2;
-
- id = lsp_weight_quant(qlsp, quant_weight, cdbk_nb_low2, NB_CDBK_SIZE_LOW2, 5);
- speex_bits_pack(bits, id, 6);
-
- id = lsp_weight_quant(qlsp+5, quant_weight+5, cdbk_nb_high1, NB_CDBK_SIZE_HIGH1, 5);
- speex_bits_pack(bits, id, 6);
-
- for (i=5;i<10;i++)
- qlsp[i]*=2;
-
- id = lsp_weight_quant(qlsp+5, quant_weight+5, cdbk_nb_high2, NB_CDBK_SIZE_HIGH2, 5);
- speex_bits_pack(bits, id, 6);
-
-#ifdef FIXED_POINT
- for (i=0;i<order;i++)
- qlsp[i]=PSHR16(qlsp[i],2);
-#else
- for (i=0;i<order;i++)
- qlsp[i]=qlsp[i] * .00097656;
-#endif
-
- for (i=0;i<order;i++)
- qlsp[i]=lsp[i]-qlsp[i];
-}
-
-
-#define OVERRIDE_LSP_UNQUANT_NB
-void lsp_unquant_nb(spx_lsp_t *lsp, int order, SpeexBits *bits)
-{
- int i, id;
- for (i=0;i<order;i++)
- lsp[i]=LSP_LINEAR(i);
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<10;i++)
- lsp[i] = ADD32(lsp[i], LSP_DIV_256(cdbk_nb[id*10+i]));
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<5;i++)
- lsp[i] = ADD16(lsp[i], LSP_DIV_512(cdbk_nb_low1[id*5+i]));
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<5;i++)
- lsp[i] = ADD32(lsp[i], LSP_DIV_1024(cdbk_nb_low2[id*5+i]));
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<5;i++)
- lsp[i+5] = ADD32(lsp[i+5], LSP_DIV_512(cdbk_nb_high1[id*5+i]));
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<5;i++)
- lsp[i+5] = ADD32(lsp[i+5], LSP_DIV_1024(cdbk_nb_high2[id*5+i]));
-}
-
-#define OVERRIDE_LSP_QUANT_LBR
-void lsp_quant_lbr(spx_lsp_t *lsp, spx_lsp_t *qlsp, int order, SpeexBits *bits)
-{
- int i;
- int id;
- spx_word16_t quant_weight[10];
-
- for (i=0;i<order;i++)
- qlsp[i]=lsp[i];
-
- compute_quant_weights(qlsp, quant_weight, order);
-
- for (i=0;i<order;i++)
- qlsp[i]=SUB16(qlsp[i],LSP_LINEAR(i));
-#ifndef FIXED_POINT
- for (i=0;i<order;i++)
- qlsp[i]=qlsp[i]*LSP_SCALE;
-#endif
- id = lsp_quant(qlsp, cdbk_nb, NB_CDBK_SIZE, order);
- speex_bits_pack(bits, id, 6);
-
- for (i=0;i<order;i++)
- qlsp[i]*=2;
-
- id = lsp_weight_quant(qlsp, quant_weight, cdbk_nb_low1, NB_CDBK_SIZE_LOW1, 5);
- speex_bits_pack(bits, id, 6);
-
- id = lsp_weight_quant(qlsp+5, quant_weight+5, cdbk_nb_high1, NB_CDBK_SIZE_HIGH1, 5);
- speex_bits_pack(bits, id, 6);
-
-#ifdef FIXED_POINT
- for (i=0;i<order;i++)
- qlsp[i] = PSHR16(qlsp[i],1);
-#else
- for (i=0;i<order;i++)
- qlsp[i] = qlsp[i]*0.0019531;
-#endif
-
- for (i=0;i<order;i++)
- qlsp[i]=lsp[i]-qlsp[i];
-}
-
-#define OVERRIDE_LSP_UNQUANT_LBR
-void lsp_unquant_lbr(spx_lsp_t *lsp, int order, SpeexBits *bits)
-{
- int i, id;
- for (i=0;i<order;i++)
- lsp[i]=LSP_LINEAR(i);
-
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<10;i++)
- lsp[i] += LSP_DIV_256(cdbk_nb[id*10+i]);
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<5;i++)
- lsp[i] += LSP_DIV_512(cdbk_nb_low1[id*5+i]);
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<5;i++)
- lsp[i+5] += LSP_DIV_512(cdbk_nb_high1[id*5+i]);
-
-}
-
-extern const signed char high_lsp_cdbk[];
-extern const signed char high_lsp_cdbk2[];
-
-#define OVERRIDE_LSP_UNQUANT_HIGH
-void lsp_unquant_high(spx_lsp_t *lsp, int order, SpeexBits *bits)
-{
-
- int i, id;
- for (i=0;i<order;i++)
- lsp[i]=LSP_LINEAR_HIGH(i);
-
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<order;i++)
- lsp[i] += LSP_DIV_256(high_lsp_cdbk[id*order+i]);
-
-
- id=speex_bits_unpack_unsigned(bits, 6);
- for (i=0;i<order;i++)
- lsp[i] += LSP_DIV_512(high_lsp_cdbk2[id*order+i]);
-}
-
-#define OVERRIDE_LSP_QUANT_HIGH
-void lsp_quant_high(spx_lsp_t *lsp, spx_lsp_t *qlsp, int order, SpeexBits *bits)
-{
- int i;
- int id;
- spx_word16_t quant_weight[10];
-
- for (i=0;i<order;i++)
- qlsp[i]=lsp[i];
-
- compute_quant_weights(qlsp, quant_weight, order);
-
- /* quant_weight[0] = 10/(qlsp[1]-qlsp[0]);
- quant_weight[order-1] = 10/(qlsp[order-1]-qlsp[order-2]);
- for (i=1;i<order-1;i++)
- {
- tmp1 = 10/(qlsp[i]-qlsp[i-1]);
- tmp2 = 10/(qlsp[i+1]-qlsp[i]);
- quant_weight[i] = tmp1 > tmp2 ? tmp1 : tmp2;
- }*/
-
- for (i=0;i<order;i++)
- qlsp[i]=SUB16(qlsp[i],LSP_LINEAR_HIGH(i));
-#ifndef FIXED_POINT
- for (i=0;i<order;i++)
- qlsp[i] = qlsp[i]*LSP_SCALE;
-#endif
- id = lsp_quant(qlsp, high_lsp_cdbk, 64, order);
- speex_bits_pack(bits, id, 6);
-
- for (i=0;i<order;i++)
- qlsp[i]*=2;
-
- id = lsp_weight_quant(qlsp, quant_weight, high_lsp_cdbk2, 64, order);
- speex_bits_pack(bits, id, 6);
-
-#ifdef FIXED_POINT
- for (i=0;i<order;i++)
- qlsp[i] = PSHR16(qlsp[i],1);
-#else
- for (i=0;i<order;i++)
- qlsp[i] = qlsp[i]*0.0019531;
-#endif
-
- for (i=0;i<order;i++)
- qlsp[i]=lsp[i]-qlsp[i];
-}
-#endif
-
-#endif
diff --git a/3rdparty/speex/tmv/speex_config_types.h b/3rdparty/speex/tmv/speex_config_types.h
deleted file mode 100644
index 3166f6c1..00000000
--- a/3rdparty/speex/tmv/speex_config_types.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef __SPEEX_TYPES_H__
-#define __SPEEX_TYPES_H__
-
-#ifdef __TCS__
-
-#include <tmNxTypes.h>
-
-
-
-typedef Int16 spx_int16_t;
-typedef UInt16 spx_uint16_t;
-typedef Int32 spx_int32_t;
-typedef UInt32 spx_uint32_t;
-
-#ifdef FIXED_POINT
-#define VMUX(a,b,c) mux((a),(b),(c))
-#define VABS(a) iabs((a))
-#define VMAX(a,b) imax((a),(b))
-#define VMIN(a,b) imin((a),(b))
-#else
-#define VMUX(a,b,c) fmux((a),(b),(c))
-#define VABS(a) fabs((a))
-#define VMAX(a,b) fmax((a),(b))
-#define VMIN(a,b) fmin((a),(b))
-#endif
-
-#endif
-
-
-#endif
-
diff --git a/3rdparty/speex/tmv/vq_tm.h b/3rdparty/speex/tmv/vq_tm.h
deleted file mode 100644
index 4f0e886e..00000000
--- a/3rdparty/speex/tmv/vq_tm.h
+++ /dev/null
@@ -1,494 +0,0 @@
-/* Copyright (C) 2007 Hong Zhiqian */
-/**
- @file vq_tm.h
- @author Hong Zhiqian
- @brief Various compatibility routines for Speex (TriMedia version)
-*/
-/*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#include <ops/custom_defs.h>
-#include "profile_tm.h"
-
-#ifdef FIXED_POINT
-
-inline void vq_nbest_dist(int i, int N, int dist, int *used, int *nbest, Int32 *best_dist)
-{
- register int k;
-
- if (i<N || dist<best_dist[N-1])
- {
- for (k=N-1; (k >= 1) && (k > *used || dist < best_dist[k-1]); k--)
- { best_dist[k]=best_dist[k-1];
- nbest[k] = nbest[k-1];
- }
-
- best_dist[k]=dist;
- nbest[k]=i;
- *used++;
- }
-}
-
-void vq_nbest_5(Int16 *in, const Int16 *codebook, int entries, Int32 *E, int N, int *nbest, Int32 *best_dist)
-{
- register int i, j;
- register int in10, in32, in4;
- int used = 0;
-
- in10 = pack16lsb(in[1],in[0]); /* Note: memory is not align here */
- in32 = pack16lsb(in[3],in[2]);
- in4 = sex16(in[4]);
-
-#if (TM_UNROLL && TM_UNROLL_VQNBEST > 0)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
-
- for ( i=0,j=0 ; i<entries ; i+=2,j+=5 )
- {
- register int dist1, dist2;
- register int cb10, cb32, cb54, cb76, cb98, cb87, cb65;
-
- cb10 = ld32x(codebook,j);
- cb32 = ld32x(codebook,j+1);
- cb54 = ld32x(codebook,j+2);
- cb76 = ld32x(codebook,j+3);
- cb98 = ld32x(codebook,j+4);
-
- dist1 = sex16(cb54) * in4;
- dist1 += ifir16(in10,cb10) + ifir16(in32,cb32);
- dist1 = (E[i] >> 1) - dist1;
-
- cb65 = funshift2(cb76,cb54);
- cb87 = funshift2(cb98,cb76);
- dist2 = asri(16,cb98) * in4;
- dist2 += ifir16(in10,cb65) + ifir16(in32,cb87);
- dist2 = (E[i+1] >> 1) - dist2;
-
- vq_nbest_dist(i,N,dist1,&used,nbest,best_dist);
- vq_nbest_dist(i+1,N,dist2,&used,nbest,best_dist);
- }
-
-#if (TM_UNROLL && TM_UNROLL_VQNBEST > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-}
-
-
-void vq_nbest_8(Int16 *in, const Int16 *codebook, int entries, Int32 *E, int N, int *nbest, Int32 *best_dist)
-{
- register int i, j;
- register int in10, in32, in54, in76;
- int used = 0;
-
- in10 = pack16lsb(in[1],in[0]); /* Note: memory is not align here */
- in32 = pack16lsb(in[3],in[2]);
- in54 = pack16lsb(in[5],in[4]);
- in76 = pack16lsb(in[7],in[6]);
-
-#if (TM_UNROLL && TM_UNROLL_VQNBEST > 0)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0,j=0 ; i<entries ; ++i,j+=4 )
- {
- register int dist;
- register int cb10, cb32, cb54, cb76;
-
- cb10 = ld32x(codebook,j);
- cb32 = ld32x(codebook,j+1);
- cb54 = ld32x(codebook,j+2);
- cb76 = ld32x(codebook,j+3);
-
- dist = ifir16(in10,cb10) + ifir16(in32,cb32);
- dist += ifir16(in54,cb54) + ifir16(in76,cb76);
- dist = (E[i] >> 1) - dist;
-
- vq_nbest_dist(i,N,dist,&used,nbest,best_dist);
- }
-#if (TM_UNROLL && TM_UNROLL_VQNBEST > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-
-}
-
-
-void vq_nbest_10(Int16 *in, const Int16 *codebook, int entries, Int32 *E, int N, int *nbest, Int32 *best_dist)
-{
- register int i, j;
- register int in10, in32, in54, in76, in98;
- int used = 0;
-
- in10 = pack16lsb(in[1],in[0]);
- in32 = pack16lsb(in[3],in[2]);
- in54 = pack16lsb(in[5],in[4]);
- in76 = pack16lsb(in[7],in[6]);
- in98 = pack16lsb(in[9],in[8]);
-
-#if (TM_UNROLL && TM_UNROLL_VQNBEST > 0)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0,j=0 ; i<entries ; ++i,j+=5 )
- {
- register int dist;
- register int cb10, cb32, cb54, cb76, cb98;
-
- cb10 = ld32x(codebook,j);
- cb32 = ld32x(codebook,j+1);
- cb54 = ld32x(codebook,j+2);
- cb76 = ld32x(codebook,j+3);
- cb98 = ld32x(codebook,j+4);
-
- dist = ifir16(in10,cb10) + ifir16(in32,cb32);
- dist += ifir16(in54,cb54) + ifir16(in76,cb76);
- dist += ifir16(in98,cb98);
- dist = (E[i] >> 1) - dist;
-
- vq_nbest_dist(i,N,dist,&used,nbest,best_dist);
- }
-#if (TM_UNROLL && TM_UNROLL_VQNBEST > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-}
-
-void vq_nbest_20(Int16 *in, const Int16 *codebook, int entries, Int32 *E, int N, int *nbest, Int32 *best_dist)
-{
- register int i, j;
- register int in10, in32, in54, in76, in98, in_10, in_32, in_54, in_76, in_98;
- int used = 0;
-
- in10 = pack16lsb(in[1],in[0]); /* Note: memory is not align here */
- in32 = pack16lsb(in[3],in[2]);
- in54 = pack16lsb(in[5],in[4]);
- in76 = pack16lsb(in[6],in[6]);
- in98 = pack16lsb(in[9],in[8]);
- in_10 = pack16lsb(in[11],in[10]);
- in_32 = pack16lsb(in[13],in[12]);
- in_54 = pack16lsb(in[15],in[14]);
- in_76 = pack16lsb(in[17],in[16]);
- in_98 = pack16lsb(in[19],in[18]);
-
-#if (TM_UNROLL && TM_UNROLL_VQNBEST > 0)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0,j=0 ; i<entries ; ++i,j+=10 )
- {
- register int dist;
- register int cb10, cb32, cb54, cb76, cb98, cb_10, cb_32, cb_54, cb_76, cb_98;
-
- cb10 = ld32x(codebook,j);
- cb32 = ld32x(codebook,j+1);
- cb54 = ld32x(codebook,j+2);
- cb76 = ld32x(codebook,j+3);
- cb98 = ld32x(codebook,j+4);
- cb_10 = ld32x(codebook,j+5);
- cb_32 = ld32x(codebook,j+6);
- cb_54 = ld32x(codebook,j+7);
- cb_76 = ld32x(codebook,j+8);
- cb_98 = ld32x(codebook,j+9);
-
- dist = ifir16(in10,cb10) + ifir16(in32,cb32);
- dist += ifir16(in54,cb54) + ifir16(in76,cb76);
- dist += ifir16(in98,cb98) + ifir16(in_10,cb_10);
- dist += ifir16(in_32,cb_32) + ifir16(in_54,cb_54);
- dist += ifir16(in_76,cb_76) + ifir16(in_98,cb_98);
-
- dist = (E[i] >> 1) - dist;
- vq_nbest_dist(i,N,dist,&used,nbest,best_dist);
- }
-#if (TM_UNROLL && TM_UNROLL_VQNBEST > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-}
-
-
-#define OVERRIDE_VQ_NBEST
-void vq_nbest (Int16 *in, const Int16 *codebook, int len, int entries, Int32 *E, int N, int *nbest, Int32 *best_dist, char *stack)
-{
- TMDEBUG_ALIGNMEM(codebook);
-
- VQNBEST_START();
- if( len==5 )
- vq_nbest_5(in,codebook,entries,E,N,nbest,best_dist);
- else if ( len==8 )
- vq_nbest_8(in,codebook,entries,E,N,nbest,best_dist);
- else if ( len==10 )
- vq_nbest_10(in,codebook,entries,E,N,nbest,best_dist);
- else if ( len==20 )
- vq_nbest_20(in,codebook,entries,E,N,nbest,best_dist);
-
-#ifndef REMARK_ON
- (void)stack;
-#endif
-
- VQNBEST_STOP();
-}
-
-inline void vq_nbest_sign_dist(int i, int N, int dist, int sign, int entries, int *used, int *nbest, Int32 *best_dist)
-{
- register int k;
-
- if (i<N || dist<best_dist[N-1])
- { for (k=N-1; (k >= 1) && (k > *used || dist < best_dist[k-1]); k--)
- {
- best_dist[k]=best_dist[k-1];
- nbest[k] = nbest[k-1];
- }
-
- if ( sign ) i += entries;
- best_dist[k]=dist;
- *used++;
- nbest[k] = i;
- }
-}
-
-void vq_nbest_sign_5(Int16 *in, const Int16 *codebook, int entries, Int32 *E, int N, int *nbest, Int32 *best_dist)
-{
- register int i, j;
- register int in10, in32, in4;
- int used = 0;
-
- in10 = ld32(in);
- in32 = ld32x(in,1);
- in4 = sex16(in[4]);
-
-#if (TM_UNROLL && TM_UNROLL_VQSIGNNBEST > 0)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
-
- for ( i=0,j=0 ; i<entries ; i+=2,j+=5 )
- {
- register int dist1, dist2, sign1, sign2;
- register int cb10, cb32, cb54, cb76, cb98, cb87, cb65;
-
- cb10 = ld32x(codebook,j);
- cb32 = ld32x(codebook,j+1);
- cb54 = ld32x(codebook,j+2);
- cb76 = ld32x(codebook,j+3);
- cb98 = ld32x(codebook,j+4);
-
- dist1 = sex16(cb54) * in4;
- dist1 += ifir16(in10,cb10) + ifir16(in32,cb32);
-
- sign1 = mux(dist1>0,0,1);
- dist1 = iflip(dist1>0,dist1);
- dist1 = (E[i] >> 1) + dist1;
-
- cb65 = funshift2(cb76,cb54);
- cb87 = funshift2(cb98,cb76);
- dist2 = asri(16,cb98) * in4;
- dist2 += ifir16(in10,cb65) + ifir16(in32,cb87);
-
- sign2 = mux(dist2>0,0,1);
- dist2 = iflip(dist2>0,dist2);
- dist2 = (E[i] >> 1) + dist2;
-
- vq_nbest_sign_dist(i,N,dist1,sign1,entries,&used,nbest,best_dist);
- vq_nbest_sign_dist(i+1,N,dist2,sign2,entries,&used,nbest,best_dist);
- }
-#if (TM_UNROLL && TM_UNROLL_VQSIGNNBEST > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-}
-
-void vq_nbest_sign_8(Int16 *in, const Int16 *codebook, int entries, Int32 *E, int N, int *nbest, Int32 *best_dist)
-{
- register int i, j;
- register int sign;
- register int in10, in32, in54, in76;
- int used = 0;
-
- in10 = ld32(in);
- in32 = ld32x(in,1);
- in54 = ld32x(in,2);
- in76 = ld32x(in,3);
-
-#if (TM_UNROLL && TM_UNROLL_VQSIGNNBEST > 0)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
-
- for ( i=0,j=0 ; i<entries ; ++i,j+=4 )
- {
- register int dist;
- register int cb10, cb32, cb54, cb76;
-
- cb10 = ld32x(codebook,j);
- cb32 = ld32x(codebook,j+1);
- cb54 = ld32x(codebook,j+2);
- cb76 = ld32x(codebook,j+3);
-
- dist = ifir16(in10,cb10) + ifir16(in32,cb32);
- dist += ifir16(in54,cb54) + ifir16(in76,cb76);
-
- sign = mux(dist>0,0,1);
- dist = iflip(dist>0,dist);
- dist = (E[i] >> 1) + dist;
-
- vq_nbest_sign_dist(i,N,dist,sign,entries,&used,nbest,best_dist);
- }
-#if (TM_UNROLL && TM_UNROLL_VQSIGNNBEST > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-}
-
-void vq_nbest_sign_10(Int16 *in, const Int16 *codebook, int entries, Int32 *E, int N, int *nbest, Int32 *best_dist)
-{
- register int i, j;
- register int sign;
- register int in10, in32, in54, in76, in98;
- int used = 0;
-
- in10 = ld32(in);
- in32 = ld32x(in,1);
- in54 = ld32x(in,2);
- in76 = ld32x(in,3);
- in98 = ld32x(in,4);
-
-#if (TM_UNROLL && TM_UNROLL_VQSIGNNBEST > 0)
-#pragma TCS_unroll=4
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0,j=0 ; i<entries ; ++i,j+=5 )
- {
- register int dist;
- register int cb10, cb32, cb54, cb76, cb98;
-
- cb10 = ld32x(codebook,j);
- cb32 = ld32x(codebook,j+1);
- cb54 = ld32x(codebook,j+2);
- cb76 = ld32x(codebook,j+3);
- cb98 = ld32x(codebook,j+4);
-
- dist = ifir16(in10,cb10) + ifir16(in32,cb32);
- dist += ifir16(in54,cb54) + ifir16(in76,cb76);
- dist += ifir16(in98,cb98);
-
- sign = mux(dist>0,0,1);
- dist = iflip(dist>0,dist);
- dist = (E[i] >> 1) + dist;
-
- vq_nbest_sign_dist(i,N,dist,sign,entries,&used,nbest,best_dist);
- }
-#if (TM_UNROLL && TM_UNROLL_VQSIGNNBEST > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-}
-
-void vq_nbest_sign_20(Int16 *in, const Int16 *codebook, int entries, Int32 *E, int N, int *nbest, Int32 *best_dist)
-{
- register int i, j;
- register int sign;
- register int in10, in32, in54, in76, in98, in_10, in_32, in_54, in_76, in_98;
- int used = 0;
-
- in10 = ld32(in);
- in32 = ld32x(in,1);
- in54 = ld32x(in,2);
- in76 = ld32x(in,3);
- in98 = ld32x(in,4);
- in_10 = ld32x(in,5);
- in_32 = ld32x(in,6);
- in_54 = ld32x(in,7);
- in_76 = ld32x(in,8);
- in_98 = ld32x(in,9);
-
-#if (TM_UNROLL && TM_UNROLL_VQSIGNNBEST > 0)
-#pragma TCS_unroll=2
-#pragma TCS_unrollexact=1
-#endif
- for ( i=0,j=0 ; i<entries ; ++i,j+=10 )
- {
- register int dist;
- register int cb10, cb32, cb54, cb76, cb98, cb_10, cb_32, cb_54, cb_76, cb_98;
-
- cb10 = ld32x(codebook,j);
- cb32 = ld32x(codebook,j+1);
- cb54 = ld32x(codebook,j+2);
- cb76 = ld32x(codebook,j+3);
- cb98 = ld32x(codebook,j+4);
- cb_10 = ld32x(codebook,j+5);
- cb_32 = ld32x(codebook,j+6);
- cb_54 = ld32x(codebook,j+7);
- cb_76 = ld32x(codebook,j+8);
- cb_98 = ld32x(codebook,j+9);
-
- dist = ifir16(in10,cb10) + ifir16(in32,cb32);
- dist += ifir16(in54,cb54) + ifir16(in76,cb76);
- dist += ifir16(in98,cb98) + ifir16(in_10,cb_10);
- dist += ifir16(in_32,cb_32) + ifir16(in_54,cb_54);
- dist += ifir16(in_76,cb_76) + ifir16(in_98,cb_98);
-
- sign = mux(dist>0,0,1);
- dist = iflip(dist>0,dist);
- dist = (E[i] >> 1) + dist;
-
- vq_nbest_sign_dist(i,N,dist,sign,entries,&used,nbest,best_dist);
- }
-#if (TM_UNROLL && TM_UNROLL_VQSIGNNBEST > 0)
-#pragma TCS_unrollexact=0
-#pragma TCS_unroll=0
-#endif
-}
-
-#define OVERRIDE_VQ_NBEST_SIGN
-void vq_nbest_sign (Int16 *in, const Int16 *codebook, int len, int entries, Int32 *E, int N, int *nbest, Int32 *best_dist, char *stack)
-{
- TMDEBUG_ALIGNMEM(in);
- TMDEBUG_ALIGNMEM(codebook);
-
- VQNBESTSIGN_START();
-
- if( len==5 )
- vq_nbest_sign_5(in,codebook,entries,E,N,nbest,best_dist);
- else if ( len==8 )
- vq_nbest_sign_8(in,codebook,entries,E,N,nbest,best_dist);
- else if ( len==10 )
- vq_nbest_sign_10(in,codebook,entries,E,N,nbest,best_dist);
- else if ( len==20 )
- vq_nbest_sign_20(in,codebook,entries,E,N,nbest,best_dist);
-
-#ifndef REMARK_ON
- (void)stack;
-#endif
-
- VQNBESTSIGN_STOP();
-}
-
-#endif
-
diff --git a/3rdparty/speex/win32/Makefile.am b/3rdparty/speex/win32/Makefile.am
deleted file mode 100644
index 0823f46e..00000000
--- a/3rdparty/speex/win32/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-SUBDIRS = libspeex speexenc speexdec VS2003 VS2005
-
-EXTRA_DIST = speex.iss config.h
diff --git a/3rdparty/speex/win32/VS2003/Makefile.am b/3rdparty/speex/win32/VS2003/Makefile.am
deleted file mode 100644
index d4698d7e..00000000
--- a/3rdparty/speex/win32/VS2003/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-SUBDIRS = libspeex speexenc speexdec
-
-EXTRA_DIST =
diff --git a/3rdparty/speex/win32/VS2003/libspeex/Makefile.am b/3rdparty/speex/win32/VS2003/libspeex/Makefile.am
deleted file mode 100644
index 35cf9183..00000000
--- a/3rdparty/speex/win32/VS2003/libspeex/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-EXTRA_DIST = libspeex.def libspeex.vcproj
-
-
diff --git a/3rdparty/speex/win32/VS2003/libspeex/libspeex.def b/3rdparty/speex/win32/VS2003/libspeex/libspeex.def
deleted file mode 100644
index 511e1481..00000000
--- a/3rdparty/speex/win32/VS2003/libspeex/libspeex.def
+++ /dev/null
@@ -1,108 +0,0 @@
-LIBRARY libspeex
-EXPORTS
-
-
-;
-; speex_echo.h
-;
-speex_echo_state_init
-speex_echo_state_destroy
-speex_echo_cancel
-speex_echo_state_reset
-
-;
-; speex_preprocess.h
-;
-speex_preprocess_state_init
-speex_preprocess_state_destroy
-speex_preprocess
-speex_preprocess_estimate_update
-speex_preprocess_ctl
-
-;
-; speex_bits.h
-;
-speex_bits_init
-speex_bits_init_buffer
-speex_bits_destroy
-speex_bits_reset
-speex_bits_rewind
-speex_bits_read_from
-speex_bits_read_whole_bytes
-speex_bits_write
-speex_bits_write_whole_bytes
-speex_bits_pack
-speex_bits_unpack_signed
-speex_bits_unpack_unsigned
-speex_bits_nbytes
-speex_bits_peek_unsigned
-speex_bits_peek
-speex_bits_advance
-speex_bits_remaining
-speex_bits_insert_terminator
-
-;
-; speex_callbacks.h
-;
-speex_inband_handler
-speex_std_mode_request_handler
-speex_std_high_mode_request_handler
-speex_std_char_handler
-speex_default_user_handler
-speex_std_low_mode_request_handler
-speex_std_vbr_request_handler
-speex_std_enh_request_handler
-speex_std_vbr_quality_request_handler
-
-;
-; speex_header.h
-;
-speex_init_header
-speex_header_to_packet
-speex_packet_to_header
-
-;
-; speex_jitter.h
-;
-speex_jitter_init
-speex_jitter_destroy
-speex_jitter_put
-speex_jitter_get
-speex_jitter_get_pointer_timestamp
-
-;
-; speex_noglobals.h
-;
-;speex_mode_new
-;speex_mode_destroy
-
-
-;
-; speex_stereo.h
-;
-speex_encode_stereo
-speex_encode_stereo_int
-speex_decode_stereo
-speex_decode_stereo_int
-speex_std_stereo_request_handler
-
-;
-; speex.h
-;
-speex_encoder_init
-speex_encoder_destroy
-speex_encode
-speex_encode_int
-speex_encoder_ctl
-speex_decoder_init
-speex_decoder_destroy
-speex_decode
-speex_decode_int
-speex_decoder_ctl
-speex_mode_query
-speex_lib_ctl
-speex_lib_get_mode
-
-
-
-
diff --git a/3rdparty/speex/win32/VS2003/libspeex/libspeex.vcproj b/3rdparty/speex/win32/VS2003/libspeex/libspeex.vcproj
deleted file mode 100644
index daa6216a..00000000
--- a/3rdparty/speex/win32/VS2003/libspeex/libspeex.vcproj
+++ /dev/null
@@ -1,481 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="libspeex"
- ProjectGUID="{E972C52F-9E85-4D65-B19C-031E511E9DB4}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="4"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H; USE_ALLOCA"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="4"
- CompileAs="1"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="4"
- CharacterSet="2"
- WholeProgramOptimization="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="TRUE"
- FavorSizeOrSpeed="1"
- OptimizeForProcessor="2"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H; USE_ALLOCA"
- StringPooling="TRUE"
- ExceptionHandling="FALSE"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release_SSE|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="4"
- CharacterSet="2"
- WholeProgramOptimization="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="TRUE"
- FavorSizeOrSpeed="1"
- OptimizeForProcessor="2"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
- StringPooling="TRUE"
- ExceptionHandling="FALSE"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- EnableEnhancedInstructionSet="1"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release_SSE2|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="4"
- CharacterSet="2"
- WholeProgramOptimization="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="TRUE"
- FavorSizeOrSpeed="1"
- OptimizeForProcessor="3"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
- StringPooling="TRUE"
- ExceptionHandling="FALSE"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- EnableEnhancedInstructionSet="2"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release_Dynamic|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="2"
- CharacterSet="2"
- WholeProgramOptimization="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="TRUE"
- FavorSizeOrSpeed="1"
- OptimizeForProcessor="2"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
- StringPooling="TRUE"
- ExceptionHandling="FALSE"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- ModuleDefinitionFile="libspeex.def"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath="..\..\..\libspeex\bits.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\cb_search.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\exc_10_16_table.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\exc_10_32_table.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\exc_20_32_table.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\exc_5_256_table.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\exc_5_64_table.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\exc_8_128_table.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\filters.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\gain_table.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\gain_table_lbr.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\hexc_10_32_table.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\hexc_table.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\high_lsp_tables.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\jitter.c">
- </File>
- <File
- RelativePath=".\libspeex.def">
- </File>
- <File
- RelativePath="..\..\..\libspeex\lpc.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\lsp.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\lsp_tables_nb.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\ltp.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\math_approx.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\mdf.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\medfilter.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\misc.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\modes.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\nb_celp.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\preprocess.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\quant_lsp.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\sb_celp.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\smallft.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\speex.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\speex_callbacks.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\speex_header.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\stereo.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\vbr.c">
- </File>
- <File
- RelativePath="..\..\..\libspeex\vq.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- <File
- RelativePath="..\..\..\libspeex\cb_search.h">
- </File>
- <File
- RelativePath="..\..\config.h">
- </File>
- <File
- RelativePath="..\..\..\libspeex\filters.h">
- </File>
- <File
- RelativePath="..\..\..\libspeex\filters_sse.h">
- </File>
- <File
- RelativePath="..\..\..\libspeex\lpc.h">
- </File>
- <File
- RelativePath="..\..\..\libspeex\lsp.h">
- </File>
- <File
- RelativePath="..\..\..\libspeex\ltp.h">
- </File>
- <File
- RelativePath="..\..\..\libspeex\ltp_sse.h">
- </File>
- <File
- RelativePath="..\..\..\libspeex\math_approx.h">
- </File>
- <File
- RelativePath="..\..\..\libspeex\misc.h">
- </File>
- <File
- RelativePath="..\..\..\libspeex\modes.h">
- </File>
- <File
- RelativePath="..\..\..\libspeex\nb_celp.h">
- </File>
- <File
- RelativePath="..\..\..\libspeex\quant_lsp.h">
- </File>
- <File
- RelativePath="..\..\..\libspeex\sb_celp.h">
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex.h">
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_bits.h">
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_callbacks.h">
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_echo.h">
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_header.h">
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_jitter.h">
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_noglobals.h">
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_preprocess.h">
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_stereo.h">
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_types.h">
- </File>
- <File
- RelativePath="..\..\..\libspeex\stack_alloc.h">
- </File>
- <File
- RelativePath="..\..\..\libspeex\vbr.h">
- </File>
- <File
- RelativePath="..\..\..\libspeex\vq.h">
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
- </Filter>
- <File
- RelativePath=".\ReadMe.txt">
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/3rdparty/speex/win32/VS2003/speexdec/Makefile.am b/3rdparty/speex/win32/VS2003/speexdec/Makefile.am
deleted file mode 100644
index 93b93c17..00000000
--- a/3rdparty/speex/win32/VS2003/speexdec/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-EXTRA_DIST = speexdec.vcproj
-
-
diff --git a/3rdparty/speex/win32/VS2003/speexdec/speexdec.vcproj b/3rdparty/speex/win32/VS2003/speexdec/speexdec.vcproj
deleted file mode 100644
index a390be4a..00000000
--- a/3rdparty/speex/win32/VS2003/speexdec/speexdec.vcproj
+++ /dev/null
@@ -1,292 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="speexdec"
- ProjectGUID="{961B8359-1393-4EF7-B8E0-67B6FE1C6DA8}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;HAVE_CONFIG_H"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="4"
- CompileAs="1"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexdec.exe"
- LinkIncremental="2"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/speexenc.pdb"
- SubSystem="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- CharacterSet="2"
- WholeProgramOptimization="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="TRUE"
- FavorSizeOrSpeed="1"
- OptimizeForProcessor="2"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H"
- StringPooling="TRUE"
- ExceptionHandling="FALSE"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"
- CompileAs="1"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexdec.exe"
- LinkIncremental="1"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release_SSE|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="2"
- WholeProgramOptimization="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="TRUE"
- FavorSizeOrSpeed="1"
- OptimizeForProcessor="2"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H"
- StringPooling="TRUE"
- ExceptionHandling="FALSE"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- EnableEnhancedInstructionSet="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"
- CompileAs="1"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexdec.exe"
- LinkIncremental="1"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release_SSE2|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="2"
- WholeProgramOptimization="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="TRUE"
- FavorSizeOrSpeed="1"
- OptimizeForProcessor="3"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H"
- StringPooling="TRUE"
- ExceptionHandling="FALSE"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- EnableEnhancedInstructionSet="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"
- CompileAs="1"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexdec.exe"
- LinkIncremental="1"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath="..\..\..\src\getopt.c">
- </File>
- <File
- RelativePath="..\..\..\src\getopt1.c">
- </File>
- <File
- RelativePath="..\..\..\src\speexdec.c">
- </File>
- <File
- RelativePath="..\..\..\src\wav_io.c">
- </File>
- <File
- RelativePath="..\..\..\src\wave_out.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- <File
- RelativePath="..\..\..\src\getopt_win.h">
- </File>
- <File
- RelativePath="..\..\..\src\wav_io.h">
- </File>
- <File
- RelativePath="..\..\..\src\wave_out.h">
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/3rdparty/speex/win32/VS2003/speexenc/Makefile.am b/3rdparty/speex/win32/VS2003/speexenc/Makefile.am
deleted file mode 100644
index 49e32dc7..00000000
--- a/3rdparty/speex/win32/VS2003/speexenc/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-EXTRA_DIST = speexenc.vcproj
-
-
diff --git a/3rdparty/speex/win32/VS2003/speexenc/speexenc.vcproj b/3rdparty/speex/win32/VS2003/speexenc/speexenc.vcproj
deleted file mode 100644
index 4893cc9c..00000000
--- a/3rdparty/speex/win32/VS2003/speexenc/speexenc.vcproj
+++ /dev/null
@@ -1,292 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="speexenc"
- ProjectGUID="{961B8359-1393-4EF7-B8E0-67B6FE1C6DA8}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;HAVE_CONFIG_H"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="4"
- CompileAs="1"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexenc.exe"
- LinkIncremental="2"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/speexenc.pdb"
- SubSystem="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- CharacterSet="2"
- WholeProgramOptimization="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="TRUE"
- FavorSizeOrSpeed="1"
- OptimizeForProcessor="2"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H: USE_ALLOCA"
- StringPooling="TRUE"
- ExceptionHandling="FALSE"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"
- CompileAs="1"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexenc.exe"
- LinkIncremental="1"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release_SSE|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="2"
- WholeProgramOptimization="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="TRUE"
- FavorSizeOrSpeed="1"
- OptimizeForProcessor="2"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H"
- StringPooling="TRUE"
- ExceptionHandling="FALSE"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- EnableEnhancedInstructionSet="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"
- CompileAs="1"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexenc.exe"
- LinkIncremental="1"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release_SSE2|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- CharacterSet="2"
- WholeProgramOptimization="TRUE">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- GlobalOptimizations="TRUE"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="TRUE"
- FavorSizeOrSpeed="1"
- OptimizeForProcessor="3"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H"
- StringPooling="TRUE"
- ExceptionHandling="FALSE"
- RuntimeLibrary="0"
- BufferSecurityCheck="FALSE"
- EnableEnhancedInstructionSet="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"
- CompileAs="1"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexenc.exe"
- LinkIncremental="1"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath="..\..\..\src\getopt.c">
- </File>
- <File
- RelativePath="..\..\..\src\getopt1.c">
- </File>
- <File
- RelativePath="..\..\..\src\speexenc.c">
- </File>
- <File
- RelativePath="..\..\..\src\wav_io.c">
- </File>
- <File
- RelativePath="..\..\..\src\wave_out.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- <File
- RelativePath="..\..\..\src\getopt_win.h">
- </File>
- <File
- RelativePath="..\..\..\src\wav_io.h">
- </File>
- <File
- RelativePath="..\..\..\src\wave_out.h">
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/3rdparty/speex/win32/VS2005/Makefile.am b/3rdparty/speex/win32/VS2005/Makefile.am
deleted file mode 100644
index d4698d7e..00000000
--- a/3rdparty/speex/win32/VS2005/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-SUBDIRS = libspeex speexenc speexdec
-
-EXTRA_DIST =
diff --git a/3rdparty/speex/win32/VS2005/libspeex/Makefile.am b/3rdparty/speex/win32/VS2005/libspeex/Makefile.am
deleted file mode 100644
index 5de466c7..00000000
--- a/3rdparty/speex/win32/VS2005/libspeex/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-EXTRA_DIST = libspeex.vcproj
-
-
diff --git a/3rdparty/speex/win32/VS2005/libspeex/libspeex.vcproj b/3rdparty/speex/win32/VS2005/libspeex/libspeex.vcproj
deleted file mode 100644
index 34565f74..00000000
--- a/3rdparty/speex/win32/VS2005/libspeex/libspeex.vcproj
+++ /dev/null
@@ -1,1692 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="libspeex"
- ProjectGUID="{E972C52F-9E85-4D65-B19C-031E511E9DB4}"
- RootNamespace="libspeex"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- <Platform
- Name="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="Debug"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="Release"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release_SSE|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- EnableEnhancedInstructionSet="1"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release_SSE2|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- EnableEnhancedInstructionSet="2"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release_Dynamic|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- ModuleDefinitionFile="libspeex.def"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug_RTL_dll|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release_RTL_dll|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="2"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug_WM5_PPC_ARM|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release_WM5_PPC_ARM|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="2"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
- OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="1"
- />
- <Tool
- Name="VCCLCompilerTool"
- ExecutionBucket="7"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H"
- MinimalRebuild="true"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCCodeSignTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- <DeploymentTool
- ForceDirty="-1"
- RemoteDirectory=""
- RegisterOutput="0"
- AdditionalFiles=""
- />
- <DebuggerTool
- />
- </Configuration>
- <Configuration
- Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
- OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="1"
- />
- <Tool
- Name="VCCLCompilerTool"
- ExecutionBucket="7"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- DebugInformationFormat="3"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCCodeSignTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- <DeploymentTool
- ForceDirty="-1"
- RemoteDirectory=""
- RegisterOutput="0"
- AdditionalFiles=""
- />
- <DebuggerTool
- />
- </Configuration>
- <Configuration
- Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
- OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="1"
- />
- <Tool
- Name="VCCLCompilerTool"
- ExecutionBucket="7"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- DebugInformationFormat="3"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCCodeSignTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- <DeploymentTool
- ForceDirty="-1"
- RemoteDirectory=""
- RegisterOutput="0"
- AdditionalFiles=""
- />
- <DebuggerTool
- />
- </Configuration>
- <Configuration
- Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
- OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="1"
- />
- <Tool
- Name="VCCLCompilerTool"
- ExecutionBucket="7"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- DebugInformationFormat="3"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCCodeSignTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- <DeploymentTool
- ForceDirty="-1"
- RemoteDirectory=""
- RegisterOutput="0"
- AdditionalFiles=""
- />
- <DebuggerTool
- />
- </Configuration>
- <Configuration
- Name="Release_Dynamic|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
- OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="1"
- />
- <Tool
- Name="VCCLCompilerTool"
- ExecutionBucket="7"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- DebugInformationFormat="3"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- ModuleDefinitionFile="libspeex.def"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="0"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCCodeSignTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- <DeploymentTool
- ForceDirty="-1"
- RemoteDirectory=""
- RegisterOutput="0"
- AdditionalFiles=""
- />
- <DebuggerTool
- />
- </Configuration>
- <Configuration
- Name="Debug_RTL_dll|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
- OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="1"
- />
- <Tool
- Name="VCCLCompilerTool"
- ExecutionBucket="7"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H"
- MinimalRebuild="true"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCCodeSignTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- <DeploymentTool
- ForceDirty="-1"
- RemoteDirectory=""
- RegisterOutput="0"
- AdditionalFiles=""
- />
- <DebuggerTool
- />
- </Configuration>
- <Configuration
- Name="Release_RTL_dll|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
- OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="1"
- />
- <Tool
- Name="VCCLCompilerTool"
- ExecutionBucket="7"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="2"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- DebugInformationFormat="3"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCCodeSignTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- <DeploymentTool
- ForceDirty="-1"
- RemoteDirectory=""
- RegisterOutput="0"
- AdditionalFiles=""
- />
- <DebuggerTool
- />
- </Configuration>
- <Configuration
- Name="Debug_WM5_PPC_ARM|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
- OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="1"
- />
- <Tool
- Name="VCCLCompilerTool"
- ExecutionBucket="7"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H;FIXED_POINT;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_)"
- MinimalRebuild="true"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- DebugInformationFormat="0"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCCodeSignTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- <DeploymentTool
- ForceDirty="-1"
- RemoteDirectory=""
- RegisterOutput="0"
- AdditionalFiles=""
- />
- <DebuggerTool
- />
- </Configuration>
- <Configuration
- Name="Release_WM5_PPC_ARM|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
- OutputDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- IntermediateDirectory="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\$(ConfigurationName)"
- ConfigurationType="4"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TargetEnvironment="1"
- />
- <Tool
- Name="VCCLCompilerTool"
- ExecutionBucket="7"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H;FIXED_POINT;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_)"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="2"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- DebugInformationFormat="0"
- CompileAs="1"
- DisableSpecificWarnings="4244;4305;4311;4100;4127"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLibrarianTool"
- OutputFile="$(OutDir)/libspeex.lib"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCCodeSignTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- <DeploymentTool
- ForceDirty="-1"
- RemoteDirectory=""
- RegisterOutput="0"
- AdditionalFiles=""
- />
- <DebuggerTool
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath="..\..\..\libspeex\bits.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\cb_search.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\exc_10_16_table.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\exc_10_32_table.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\exc_20_32_table.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\exc_5_256_table.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\exc_5_64_table.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\exc_8_128_table.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\fftwrap.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\filterbank.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\filters.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\gain_table.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\gain_table_lbr.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\hexc_10_32_table.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\hexc_table.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\high_lsp_tables.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\jitter.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\kiss_fft.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\kiss_fftr.c"
- >
- </File>
- <File
- RelativePath=".\libspeex.def"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\lpc.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\lsp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\lsp_tables_nb.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\ltp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\math_approx.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\mdf.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\medfilter.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\misc.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\modes.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\nb_celp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\preprocess.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\quant_lsp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\sb_celp.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\smallft.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\speex.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\speex_callbacks.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\speex_header.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\stereo.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\vbr.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\vq.c"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\window.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- <File
- RelativePath="..\..\..\libspeex\cb_search.h"
- >
- </File>
- <File
- RelativePath="..\..\config.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\fftwrap.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\filters.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\filters_sse.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\kiss_fft.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\kiss_fftr.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\lpc.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\lsp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\ltp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\ltp_sse.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\math_approx.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\misc.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\modes.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\nb_celp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\pseudofloat.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\quant_lsp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\sb_celp.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_bits.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_callbacks.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_echo.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_header.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_jitter.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_noglobals.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_preprocess.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_stereo.h"
- >
- </File>
- <File
- RelativePath="..\..\..\include\speex\speex_types.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\stack_alloc.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\vbr.h"
- >
- </File>
- <File
- RelativePath="..\..\..\libspeex\vq.h"
- >
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
- </Filter>
- <File
- RelativePath=".\ReadMe.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/3rdparty/speex/win32/VS2005/speexdec/Makefile.am b/3rdparty/speex/win32/VS2005/speexdec/Makefile.am
deleted file mode 100644
index 93b93c17..00000000
--- a/3rdparty/speex/win32/VS2005/speexdec/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-EXTRA_DIST = speexdec.vcproj
-
-
diff --git a/3rdparty/speex/win32/VS2005/speexdec/speexdec.vcproj b/3rdparty/speex/win32/VS2005/speexdec/speexdec.vcproj
deleted file mode 100644
index 1b7a3ee9..00000000
--- a/3rdparty/speex/win32/VS2005/speexdec/speexdec.vcproj
+++ /dev/null
@@ -1,430 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="speexdec"
- ProjectGUID="{961B8359-1393-4EF7-B8E0-67B6FE1C6DA8}"
- RootNamespace="speexdec"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;HAVE_CONFIG_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexdec.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/speexenc.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexdec.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release_SSE|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- EnableEnhancedInstructionSet="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexdec.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release_SSE2|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- EnableEnhancedInstructionSet="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexdec.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath="..\..\..\src\getopt.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\getopt1.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\skeleton.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\speexdec.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\wav_io.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\wave_out.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- <File
- RelativePath="..\..\..\src\getopt_win.h"
- >
- </File>
- <File
- RelativePath="..\..\..\src\skeleton.h"
- >
- </File>
- <File
- RelativePath="..\..\..\src\wav_io.h"
- >
- </File>
- <File
- RelativePath="..\..\..\src\wave_out.h"
- >
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/3rdparty/speex/win32/VS2005/speexenc/Makefile.am b/3rdparty/speex/win32/VS2005/speexenc/Makefile.am
deleted file mode 100644
index 49e32dc7..00000000
--- a/3rdparty/speex/win32/VS2005/speexenc/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-EXTRA_DIST = speexenc.vcproj
-
-
diff --git a/3rdparty/speex/win32/VS2005/speexenc/speexenc.vcproj b/3rdparty/speex/win32/VS2005/speexenc/speexenc.vcproj
deleted file mode 100644
index 901d0975..00000000
--- a/3rdparty/speex/win32/VS2005/speexenc/speexenc.vcproj
+++ /dev/null
@@ -1,430 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="speexenc"
- ProjectGUID="{CD6043D1-D5E7-46D0-854F-00BB1BC308FC}"
- RootNamespace="speexenc"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;HAVE_CONFIG_H"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="4"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexenc.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/speexenc.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="$(SolutionDir)$(ConfigurationName)"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexenc.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release_SSE|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- EnableEnhancedInstructionSet="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexenc.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release_SSE2|Win32"
- OutputDirectory="$(ConfigurationName)"
- IntermediateDirectory="$(ConfigurationName)"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="3"
- InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\libspeex;..\.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H"
- StringPooling="true"
- ExceptionHandling="0"
- RuntimeLibrary="0"
- BufferSecurityCheck="false"
- EnableEnhancedInstructionSet="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="true"
- DebugInformationFormat="3"
- CompileAs="1"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/speexenc.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- OptimizeForWindows98="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath="..\..\..\src\getopt.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\getopt1.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\skeleton.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\speexenc.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\wav_io.c"
- >
- </File>
- <File
- RelativePath="..\..\..\src\wave_out.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- <File
- RelativePath="..\..\..\src\getopt_win.h"
- >
- </File>
- <File
- RelativePath="..\..\..\src\skeleton.h"
- >
- </File>
- <File
- RelativePath="..\..\..\src\wav_io.h"
- >
- </File>
- <File
- RelativePath="..\..\..\src\wave_out.h"
- >
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/3rdparty/speex/win32/config.h b/3rdparty/speex/win32/config.h
deleted file mode 100644
index 1949f334..00000000
--- a/3rdparty/speex/win32/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#define inline __inline
-#define restrict
-#include "misc.h" \ No newline at end of file
diff --git a/3rdparty/speex/win32/libspeex/Makefile.am b/3rdparty/speex/win32/libspeex/Makefile.am
deleted file mode 100644
index 9430c78c..00000000
--- a/3rdparty/speex/win32/libspeex/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-EXTRA_DIST = libspeex.dsp libspeex.dsw libspeex_dynamic.dsp speex.def
diff --git a/3rdparty/speex/win32/libspeex/libspeex.dsp b/3rdparty/speex/win32/libspeex/libspeex.dsp
deleted file mode 100644
index 47a8b5c5..00000000
--- a/3rdparty/speex/win32/libspeex/libspeex.dsp
+++ /dev/null
@@ -1,302 +0,0 @@
-# Microsoft Developer Studio Project File - Name="libspeex" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=libspeex - 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 "libspeex.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 "libspeex.mak" CFG="libspeex - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "libspeex - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "libspeex - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName "Perforce Project"
-# PROP Scc_LocalPath "..\.."
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "libspeex - 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 "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-F90=df.exe
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /GX /Ox /Ot /Og /Oi /Ob2 /I "../../include" /I "../" /D inline=__inline /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "HAVE_CONFIG_H" /YX /FD /c
-# ADD BASE RSC /l 0x809 /d "NDEBUG"
-# ADD RSC /l 0x809 /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)" == "libspeex - 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 "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-F90=df.exe
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /GX /Ox /Ot /Og /Oi /Ob2 /I "../../include" /I "../" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "HAVE_CONFIG_H" /YX /FD /c
-# ADD BASE RSC /l 0x809 /d "_DEBUG"
-# ADD RSC /l 0x809 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "libspeex - Win32 Release"
-# Name "libspeex - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\libspeex\bits.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\cb_search.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\exc_10_16_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\exc_10_32_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\exc_20_32_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\exc_5_256_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\exc_5_64_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\exc_8_128_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\filters.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\gain_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\gain_table_lbr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\hexc_10_32_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\hexc_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\high_lsp_tables.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\lpc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\lsp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\lsp_tables_nb.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\ltp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\math_approx.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\misc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\modes.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\nb_celp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\preprocess.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\quant_lsp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\sb_celp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\smallft.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex_callbacks.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex_header.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\stereo.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\vbr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\vq.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\libspeex\cb_search.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\filters.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\lpc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\lsp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\ltp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\misc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\modes.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\nb_celp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\quant_lsp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\sb_celp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\smallft.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex_bits.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex_callbacks.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex_denoise.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex_header.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex_stereo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\stack_alloc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\vbr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\vq.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/3rdparty/speex/win32/libspeex/libspeex.dsw b/3rdparty/speex/win32/libspeex/libspeex.dsw
deleted file mode 100644
index 9fb56fef..00000000
--- a/3rdparty/speex/win32/libspeex/libspeex.dsw
+++ /dev/null
@@ -1,41 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "libspeex"=.\libspeex.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "libspeex_dynamic"=.\libspeex_dynamic.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/3rdparty/speex/win32/libspeex/libspeex_dynamic.dsp b/3rdparty/speex/win32/libspeex/libspeex_dynamic.dsp
deleted file mode 100644
index 5e009728..00000000
--- a/3rdparty/speex/win32/libspeex/libspeex_dynamic.dsp
+++ /dev/null
@@ -1,311 +0,0 @@
-# Microsoft Developer Studio Project File - Name="libspeex_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=libspeex_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 "libspeex_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 "libspeex_dynamic.mak" CFG="libspeex_dynamic - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "libspeex_dynamic - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "libspeex_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)" == "libspeex_dynamic - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "libspeex_dynamic___Win32_Release"
-# PROP BASE Intermediate_Dir "libspeex_dynamic___Win32_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "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 "LIBSPEEX_DYNAMIC_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../include" /I "../" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBSPEEX_DYNAMIC_EXPORTS" /D "HAVE_CONFIG_H" /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 /nologo /dll /machine:I386 /out:"Release/libspeex.dll"
-
-!ELSEIF "$(CFG)" == "libspeex_dynamic - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "libspeex_dynamic___Win32_Debug"
-# PROP BASE Intermediate_Dir "libspeex_dynamic___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "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 "LIBSPEEX_DYNAMIC_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../include" /I "../" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBSPEEX_DYNAMIC_EXPORTS" /D "HAVE_CONFIG_H" /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 /nologo /dll /debug /machine:I386 /out:"Debug/libspeex.dll" /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "libspeex_dynamic - Win32 Release"
-# Name "libspeex_dynamic - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\libspeex\bits.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\cb_search.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\exc_10_16_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\exc_10_32_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\exc_20_32_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\exc_5_256_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\exc_5_64_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\exc_8_128_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\filters.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\gain_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\gain_table_lbr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\hexc_10_32_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\hexc_table.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\high_lsp_tables.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\lpc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\lsp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\lsp_tables_nb.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\ltp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\math_approx.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\misc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\modes.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\nb_celp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\preprocess.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\quant_lsp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\sb_celp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\smallft.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\speex.def
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex_callbacks.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex_header.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\stereo.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\vbr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\vq.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\libspeex\cb_search.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\filters.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\lpc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\lsp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\ltp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\misc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\modes.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\nb_celp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\quant_lsp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\sb_celp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\smallft.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex_bits.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex_callbacks.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex_denoise.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex_header.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\speex_stereo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\stack_alloc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\vbr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\libspeex\vq.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/3rdparty/speex/win32/libspeex/speex.def b/3rdparty/speex/win32/libspeex/speex.def
deleted file mode 100644
index 94098a8d..00000000
--- a/3rdparty/speex/win32/libspeex/speex.def
+++ /dev/null
@@ -1,72 +0,0 @@
-;
-; speex.def
-;
-LIBRARY
-NAME libspeex.dll
-EXPORTS
-;
-speex_bits_advance @1
-speex_bits_destroy @2
-speex_bits_init @3
-speex_bits_init_buffer @4
-speex_bits_insert_terminator @5
-speex_bits_nbytes @6
-speex_bits_pack @7
-speex_bits_peek @8
-speex_bits_peek_unsigned @9
-speex_bits_read_from @10
-speex_bits_read_whole_bytes @11
-speex_bits_remaining @12
-speex_bits_reset @13
-speex_bits_rewind @14
-speex_bits_unpack_signed @15
-speex_bits_unpack_unsigned @16
-speex_bits_write @17
-speex_bits_write_whole_bytes @18
-speex_decode @19
-speex_decode_stereo @20
-speex_decoder_ctl @21
-speex_decoder_destroy @22
-speex_decoder_init @23
-speex_default_user_handler @24
-speex_encode @25
-speex_encode_stereo @26
-speex_encoder_ctl @27
-speex_encoder_destroy @28
-speex_encoder_init @29
-speex_header_to_packet @30
-speex_inband_handler @31
-speex_init_header @32
-speex_lib_ctl @33
-speex_mode_query @34
-speex_packet_to_header @35
-speex_std_char_handler @36
-speex_std_enh_request_handler @37
-speex_std_high_mode_request_handler @38
-speex_std_low_mode_request_handler @39
-speex_std_mode_request_handler @40
-speex_std_stereo_request_handler @41
-speex_std_vbr_quality_request_handler @42
-speex_std_vbr_request_handler @43
-speex_decode_int @44
-speex_decode_stereo_int @45
-speex_echo_cancel @46
-speex_echo_state_destroy @47
-speex_echo_state_init @48
-speex_echo_state_reset @49
-speex_encode_int @50
-speex_encode_stereo_int @51
-speex_jitter_destroy @52
-speex_jitter_get @53
-speex_jitter_get_pointer_timestamp @54
-speex_jitter_init @55
-speex_jitter_put @56
-speex_lib_get_mode @57
-speex_preprocess @58
-speex_preprocess_ctl @59
-speex_preprocess_estimate_update @60
-speex_preprocess_state_destroy @61
-speex_preprocess_state_init @62
-speex_nb_mode @63 DATA
-speex_wb_mode @64 DATA
-speex_uwb_mode @65 DATA
diff --git a/3rdparty/speex/win32/speex.iss b/3rdparty/speex/win32/speex.iss
deleted file mode 100644
index 8f2a398e..00000000
--- a/3rdparty/speex/win32/speex.iss
+++ /dev/null
@@ -1,47 +0,0 @@
-; Script generated by the Inno Setup Script Wizard.
-; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
-
-[Setup]
-AppName=Speex
-AppVerName=Speex V1.1.6
-AppPublisherURL=http://www.speex.org
-AppSupportURL=http://www.speex.org
-AppUpdatesURL=http://www.speex.org
-DefaultDirName={pf}\Speex
-DefaultGroupName=Speex
-AllowNoIcons=yes
-LicenseFile=..\COPYING
-InfoAfterFile=..\README
-OutputDir=.
-OutputBaseFilename=speex_win32_1.1.6_setup
-; uncomment the following line if you want your installation to run on NT 3.51 too.
-; MinVersion=4,3.51
-
-[Tasks]
-;Name: "desktopicon"; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; MinVersion: 4,4
-
-[Dirs]
-Name: "{app}"
-Name: "{app}\doc"
-Name: "{app}\html"
-Name: "{app}\libspeex"
-Name: "{app}\libspeex\include"
-
-[Files]
-Source: "speexdec\Release\speexdec.exe"; DestDir: "{app}"; Flags: ignoreversion
-Source: "speexenc\Release\speexenc.exe"; DestDir: "{app}"; Flags: ignoreversion
-Source: "libspeex\Release\libspeex.lib"; DestDir: "{app}\libspeex"; Flags: ignoreversion
-Source: "libspeex\Release\libspeex.exp"; DestDir: "{app}\libspeex"; Flags: ignoreversion
-Source: "libspeex\Release\libspeex.dll"; DestDir: "{app}\libspeex"; Flags: ignoreversion
-Source: "..\include\speex\speex.h"; DestDir: "{app}\libspeex\include"; Flags: ignoreversion
-Source: "..\include\speex\speex_bits.h"; DestDir: "{app}\libspeex\include"; Flags: ignoreversion
-Source: "..\include\speex\speex_callbacks.h"; DestDir: "{app}\libspeex\include"; Flags: ignoreversion
-Source: "..\include\speex\speex_echo.h"; DestDir: "{app}\libspeex\include"; Flags: ignoreversion
-Source: "..\include\speex\speex_header.h"; DestDir: "{app}\libspeex\include"; Flags: ignoreversion
-Source: "..\include\speex\speex_jitter.h"; DestDir: "{app}\libspeex\include"; Flags: ignoreversion
-Source: "..\include\speex\speex_preprocess.h"; DestDir: "{app}\libspeex\include"; Flags: ignoreversion
-Source: "..\include\speex\speex_stereo.h"; DestDir: "{app}\libspeex\include"; Flags: ignoreversion
-Source: "..\doc\manual.pdf"; DestDir: "{app}\doc"; Flags: ignoreversion
-
-[Run]
-
diff --git a/3rdparty/speex/win32/speexdec/Makefile.am b/3rdparty/speex/win32/speexdec/Makefile.am
deleted file mode 100644
index 7c479220..00000000
--- a/3rdparty/speex/win32/speexdec/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-EXTRA_DIST = speexdec.dsp speexdec.dsw
diff --git a/3rdparty/speex/win32/speexdec/speexdec.dsp b/3rdparty/speex/win32/speexdec/speexdec.dsp
deleted file mode 100644
index 64fcd462..00000000
--- a/3rdparty/speex/win32/speexdec/speexdec.dsp
+++ /dev/null
@@ -1,130 +0,0 @@
-# Microsoft Developer Studio Project File - Name="speexdec" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=speexdec - 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 "speexdec.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 "speexdec.mak" CFG="speexdec - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "speexdec - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "speexdec - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "speexdec - 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 "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /GX /O2 /I "../../libspeex" /I "../../../ogg/include" /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x809 /d "NDEBUG"
-# ADD RSC /l 0x809 /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 /subsystem:console /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 winmm.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"LIBCMT.lib"
-
-!ELSEIF "$(CFG)" == "speexdec - 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 "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../libspeex" /I "../../../ogg/include" /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x809 /d "_DEBUG"
-# ADD RSC /l 0x809 /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 /subsystem:console /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 winmm.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "speexdec - Win32 Release"
-# Name "speexdec - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\src\getopt.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\getopt1.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\speexdec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\wav_io.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\wave_out.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\src\getopt_win.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\wav_io.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\wave_out.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
-# End Target
-# End Project
diff --git a/3rdparty/speex/win32/speexdec/speexdec.dsw b/3rdparty/speex/win32/speexdec/speexdec.dsw
deleted file mode 100644
index 37f2d1f2..00000000
--- a/3rdparty/speex/win32/speexdec/speexdec.dsw
+++ /dev/null
@@ -1,59 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "libspeex"=..\libspeex\libspeex.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "ogg_static"="..\..\..\MYOV-1.0\ogg\win32\ogg_static.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "speexdec"=.\speexdec.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name libspeex
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ogg_static
- End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/3rdparty/speex/win32/speexenc/Makefile.am b/3rdparty/speex/win32/speexenc/Makefile.am
deleted file mode 100644
index c15584f6..00000000
--- a/3rdparty/speex/win32/speexenc/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-## Process this file with automake to produce Makefile.in. -*-Makefile-*-
-
-# Disable automatic dependency tracking if using other tools than gcc and gmake
-#AUTOMAKE_OPTIONS = no-dependencies
-
-EXTRA_DIST = speexenc.dsp speexenc.dsw
diff --git a/3rdparty/speex/win32/speexenc/speexenc.dsp b/3rdparty/speex/win32/speexenc/speexenc.dsp
deleted file mode 100644
index 4b9dd896..00000000
--- a/3rdparty/speex/win32/speexenc/speexenc.dsp
+++ /dev/null
@@ -1,122 +0,0 @@
-# Microsoft Developer Studio Project File - Name="speexenc" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=speexenc - 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 "speexenc.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 "speexenc.mak" CFG="speexenc - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "speexenc - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "speexenc - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "speexenc - 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 "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /GX /Ox /Ot /Og /Oi /Ob2 /I "../../libspeex" /I "../../../ogg/include" /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x809 /d "NDEBUG"
-# ADD RSC /l 0x809 /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 /subsystem:console /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 /nologo /subsystem:console /machine:I386 /nodefaultlib:"LIBCMT.lib"
-
-!ELSEIF "$(CFG)" == "speexenc - 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 "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../libspeex" /I "../../../ogg/include" /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x809 /d "_DEBUG"
-# ADD RSC /l 0x809 /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 /subsystem:console /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 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "speexenc - Win32 Release"
-# Name "speexenc - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\src\getopt.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\getopt1.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\speexenc.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\wav_io.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\src\getopt_win.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\wav_io.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
-# End Target
-# End Project
diff --git a/3rdparty/speex/win32/speexenc/speexenc.dsw b/3rdparty/speex/win32/speexenc/speexenc.dsw
deleted file mode 100644
index 55aa72db..00000000
--- a/3rdparty/speex/win32/speexenc/speexenc.dsw
+++ /dev/null
@@ -1,59 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "libspeex"=..\libspeex\libspeex.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "ogg_static"="..\..\..\MYOV-1.0\ogg\win32\ogg_static.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "speexenc"=.\speexenc.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name libspeex
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ogg_static
- End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-