home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 3
/
AACD03.BIN
/
AACD
/
Sound
/
SoX
/
Source
/
cvsdfilt.h
< prev
next >
Wrap
Text File
|
1999-07-18
|
5KB
|
122 lines
/*
* CVSD (Continuously Variable Slope Delta modulation)
* conversion routines
*
* The CVSD format is described in the MIL Std 188 113, which is
* available from http://bbs.itsi.disa.mil:5580/T3564
*
* Copyright (C) 1996
* Thomas Sailer (sailer@ife.ee.ethz.ch) (HB9JNX/AE4WA)
* Swiss Federal Institute of Technology, Electronics Lab
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
/* ---------------------------------------------------------------------- */
#define ENC_FILTERLEN 16 /* PCM sampling rate */
#define DEC_FILTERLEN 48 /* CVSD sampling rate */
/* ---------------------------------------------------------------------- */
static float dec_filter_16[48] = {
0.001102, 0.001159, 0.000187, -0.000175,
0.002097, 0.006543, 0.009384, 0.008004,
0.006562, 0.013569, 0.030745, 0.047053,
0.050491, 0.047388, 0.062171, 0.109115,
0.167120, 0.197144, 0.195471, 0.222098,
0.354745, 0.599184, 0.849632, 0.956536,
0.849632, 0.599184, 0.354745, 0.222098,
0.195471, 0.197144, 0.167120, 0.109115,
0.062171, 0.047388, 0.050491, 0.047053,
0.030745, 0.013569, 0.006562, 0.008004,
0.009384, 0.006543, 0.002097, -0.000175,
0.000187, 0.001159, 0.001102, 0.000000
};
/* ---------------------------------------------------------------------- */
static float dec_filter_32[48] = {
0.001950, 0.004180, 0.006331, 0.007907,
0.008510, 0.008342, 0.008678, 0.011827,
0.020282, 0.035231, 0.055200, 0.075849,
0.091585, 0.098745, 0.099031, 0.101287,
0.120058, 0.170672, 0.262333, 0.392047,
0.542347, 0.684488, 0.786557, 0.823702,
0.786557, 0.684488, 0.542347, 0.392047,
0.262333, 0.170672, 0.120058, 0.101287,
0.099031, 0.098745, 0.091585, 0.075849,
0.055200, 0.035231, 0.020282, 0.011827,
0.008678, 0.008342, 0.008510, 0.007907,
0.006331, 0.004180, 0.001950, -0.000000
};
/* ---------------------------------------------------------------------- */
static float enc_filter_16_0[16] = {
-0.000362, 0.004648, 0.001381, 0.008312,
0.041490, -0.001410, 0.124061, 0.247446,
-0.106761, -0.236326, -0.023798, -0.023506,
-0.030097, 0.001493, -0.005363, -0.001672
};
static float enc_filter_16_1[16] = {
0.001672, 0.005363, -0.001493, 0.030097,
0.023506, 0.023798, 0.236326, 0.106761,
-0.247446, -0.124061, 0.001410, -0.041490,
-0.008312, -0.001381, -0.004648, 0.000362
};
static float *enc_filter_16[2] = {
enc_filter_16_0, enc_filter_16_1
};
/* ---------------------------------------------------------------------- */
static float enc_filter_32_0[16] = {
-0.000289, 0.002112, 0.001421, 0.002235,
0.021003, 0.001237, 0.047132, 0.129636,
-0.027328, -0.126462, -0.021456, -0.008069,
-0.017959, 0.000301, -0.002538, -0.001278
};
static float enc_filter_32_1[16] = {
-0.000010, 0.002787, 0.000055, 0.006813,
0.020249, -0.000995, 0.077912, 0.112870,
-0.076980, -0.106971, -0.005096, -0.015449,
-0.012591, 0.000813, -0.003003, -0.000527
};
static float enc_filter_32_2[16] = {
0.000527, 0.003003, -0.000813, 0.012591,
0.015449, 0.005096, 0.106971, 0.076980,
-0.112870, -0.077912, 0.000995, -0.020249,
-0.006813, -0.000055, -0.002787, 0.000010
};
static float enc_filter_32_3[16] = {
0.001278, 0.002538, -0.000301, 0.017959,
0.008069, 0.021456, 0.126462, 0.027328,
-0.129636, -0.047132, -0.001237, -0.021003,
-0.002235, -0.001421, -0.002112, 0.000289
};
static float *enc_filter_32[4] = {
enc_filter_32_0, enc_filter_32_1, enc_filter_32_2, enc_filter_32_3
};
/* ---------------------------------------------------------------------- */