diff --git a/CMakeLists.txt b/CMakeLists.txt index cbd02f45..bb454130 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,7 @@ add_subdirectory(src/basop/test_framework) add_subdirectory(src/basop/flc) add_subdirectory(src/bs1770demo) add_subdirectory(src/eid) +add_subdirectory(src/eid-amr) add_subdirectory(src/esdru) add_subdirectory(src/fir) add_subdirectory(src/freqresp) diff --git a/doc/manual/eid.tex b/doc/manual/eid.tex index 8769dbe8..3fdb77be 100644 --- a/doc/manual/eid.tex +++ b/doc/manual/eid.tex @@ -7,6 +7,7 @@ % Apr.96 - Peter Kroon % Feb.2000 - Convergence towards STL2000 % Oct.2009 - EID-EV Jonas Svedberg, Yusuke Hiwasaki +% May.2026 - EID-AMR Balazs Kövesi, Stéphane Ragot %============================================================================= %============================================================================= @@ -1341,3 +1342,83 @@ \subsubsection{EID-EV G.192 Output frame examples } \label{fig:G192outputFrameLayer034ErrorIndividual} \end{center} \end{figure} + + +%-------------------------------------- +\section {Adaptation for 3GPP AMR codec (EID-AMR)} \label{EID-AMR} +%-------------------------------------- + +\subsection{Description} + +The {\tt eid-xor} tool operates on bitstreams conforming to the ITU-T G.192 +serial bitstream format. However, the 3GPP AMR narrowband codec uses a +different serial bitstream format, defined in Clause~6.3 of 3GPP TS~26.073. +In this format, each frame is a fixed-size block of 250 16-bit words +({\tt SERIAL\_FRAMESIZE} = 1 + 244 + 5), where: +\begin{itemize} +\item Word 0: frame type indicator (e.g.\ 0x00--0x07 for AMR modes, 0x03 = NO\_DATA) +\item Words 1--244: serial speech bits ({\tt MAX\_SERIAL} = 244) +\item Words 245--249: auxiliary/padding +\end{itemize} + +Since this format is not compliant with ITU-T G.192, a dedicated tool +called {\tt eid-amr} is provided to apply frame erasure patterns to AMR +bitstreams. + +\subsection{Algorithm} + +The {\tt eid-amr} tool reads an AMR bitstream and a G.192 frame erasure +pattern file. For each AMR frame, one erasure flag is consumed from the +error pattern: +\begin{itemize} +\item If the flag is {\tt G192\_SYNC} (0x6B21, good frame): the AMR frame + is written to the output unchanged. +\item If the flag is {\tt G192\_FER} (0x6B20, erased frame): the frame type + is set to NO\_DATA (0x03), all 244 serial data bits are forced to zero, + and the modified frame is written to the output. +\end{itemize} + +If the error pattern file is shorter than the AMR bitstream, the error +pattern is rewound and reused from the beginning (same behavior as +{\tt eid-xor}). + +Note that {\tt eid-amr} handles only frame erasures; bit errors are not +supported. + +\subsection{Usage} + +{\tt\small +\begin{verbatim} +eid-amr +\end{verbatim} +} + +Where: +\begin{itemize} +\item {\tt AMR\_bitstream\_in}: input AMR serial bitstream (ETSI/3GPP format) +\item {\tt G.192\_FER\_pattern}: G.192 word-oriented frame erasure pattern + (as generated by {\tt gen-patt} with {\tt -g192 -fer}) +\item {\tt AMR\_bitstream\_out}: output AMR bitstream with erasures applied +\end{itemize} + +Statistics are reported to {\tt stderr} upon completion: number of processed +frames, distorted frames, frame erasure rate, and number of error pattern +wraps. + +\subsection{Example} + +Generate a 3\% burst frame erasure pattern and apply it to an AMR bitstream +encoded at 4.75~kbit/s: + +{\tt\small +\begin{verbatim} +gen-patt -g192 ep.g192 f 500 1 state.ser 0.03 +eid-amr input_475.amr ep.g192 output_475_fer.amr +\end{verbatim} +} + +\subsection{Origin} + +This tool is derived from the EID-3G tool (Nobuhiko Naka, NTT DOCOMO) and +was originally submitted to 3GPP in Tdoc S4-120998 (TSGS4\#70, Chicago, +13--17 Aug 2012). Authors: Balazs K\"ovesi, St\'ephane Ragot (Orange SA). diff --git a/doc/manual/graphics/hp50_32khz.pdf b/doc/manual/graphics/hp50_32khz.pdf new file mode 100644 index 00000000..25861658 Binary files /dev/null and b/doc/manual/graphics/hp50_32khz.pdf differ diff --git a/doc/manual/graphics/hp50_48khz.pdf b/doc/manual/graphics/hp50_48khz.pdf new file mode 100644 index 00000000..53fd034d Binary files /dev/null and b/doc/manual/graphics/hp50_48khz.pdf differ diff --git a/doc/manual/graphics/shq2_down.pdf b/doc/manual/graphics/shq2_down.pdf new file mode 100644 index 00000000..82dd2932 Binary files /dev/null and b/doc/manual/graphics/shq2_down.pdf differ diff --git a/doc/manual/graphics/shq2_up.pdf b/doc/manual/graphics/shq2_up.pdf new file mode 100644 index 00000000..9edb29ca Binary files /dev/null and b/doc/manual/graphics/shq2_up.pdf differ diff --git a/doc/manual/graphics/shq3_down.pdf b/doc/manual/graphics/shq3_down.pdf new file mode 100644 index 00000000..afa93104 Binary files /dev/null and b/doc/manual/graphics/shq3_down.pdf differ diff --git a/doc/manual/graphics/shq3_up.pdf b/doc/manual/graphics/shq3_up.pdf new file mode 100644 index 00000000..0f91b740 Binary files /dev/null and b/doc/manual/graphics/shq3_up.pdf differ diff --git a/doc/manual/rate.tex b/doc/manual/rate.tex index e3fcf05c..8f06d7fb 100644 --- a/doc/manual/rate.tex +++ b/doc/manual/rate.tex @@ -488,15 +488,17 @@ \section{Implementation} %-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- \subsection{FIR module} -The frequency responses of the implemented high-quality low-pass +The frequency responses of the implemented high-quality (HQ) low-pass filters are shown in figures \ref{hq-frq-1-2} and \ref{hq-frq-1-3} -(for rate-change factors 2 and 3, respectively), while the telephone +(denoted HQ2 and HQ3 in the command line, for rate-change factors 2 and 3, respectively), while the telephone bandwidth bandpass filter is given in figure \ref{hq-bandpass} (only a rate-change factor of 2 is available). The impulse responses of these filters are given in figures \ref{ir-hq-up}, \ref{ir-hq-down}, and \ref{ir-bandpass}, respectively for the up-sampling filters (factors 2 and 3), for the down-sampling filters (factors 2 and 3), -and for the bandpass filter. +and for the bandpass filter. + +Additional filters (SHQ2 and SHQ3 for super-high-quality for rate-change factors 2 and 3, respectively) with more taps (729 coefficients) and smaller transition band (stopband attenuation $-80$\,dB) are also provided; their frequency responses are given in figures \ref{shq2} and \ref{shq3}. These filters are intended for applications requiring higher spectral selectivity than the standard HQ filters, such as wideband and super-wideband codec characterization in 3GPP. The transmit-side IRS filter has been implemented for the ``regular'' and modified flavors. The regular transmit-side P.48 IRS filter @@ -546,6 +548,8 @@ \subsection{FIR module} the same routines are called, while for IRS, band-limiting or MUSHRA anchors, there is no rate-change routine from 16 to 32 kHz. +High-pass filters with 50 Hz cutoff frequency (3\,dB point) for the 32 and 48 kHz sampling rates (HP50\_32K with 1119 coefficients and HP50\_48K with 1679 coefficients) are also provided. Their frequency response is given in figure \ref{hp50}. + Since the digital filters have memory, state variables are needed. In this version of the STL, a type {\tt SCD\_FIR} is defined, containing the past sample memory, as well as filter coefficients and other control @@ -583,7 +587,7 @@ \subsection{FIR module} (b) High-quality filter for down-sampling. \end{center} - \caption{\SF High-quality filter responses for a + \caption{\SF Super-high-quality filter responses for a factor of 2 and sampling rates of 8000 and 16000 Hz.\label{hq-frq-1-2}} @@ -603,13 +607,54 @@ \subsection{FIR module} (b) High-quality filter for down-sampling. \end{center} - \caption{\SF High-quality filter responses for a + \caption{\SF Super-high-quality filter responses for a factor of 3 and sampling rates of 8000 and 24000 Hz.\label{hq-frq-1-3}} \end{figure} %------------- End of FIR filters response: frq for factor 3 ---------------- +%----------- Begin of FIR filters response : frq for factor 2 --------------- +\begin{figure}[hbtp] + \begin{center} + %Both boxes' dimension: 15.24cm x 8.89cm + \includegraphics[scale=0.8]{shq2_up.pdf} + \\ + (a) Super-high-quality filter for up-sampling. + + \includegraphics[scale=0.8]{shq2_down.pdf} + \\ + (b) Super-high-quality filter for down-sampling. + + \end{center} + \caption{\SF Super-high-quality filter responses for a + factor of 2 and sampling rates of 8000 and + 16000 Hz.\label{shq2}} + +\end{figure} +%------------- End of FIR filters response: frq for factor 2 ---------------- + +%----------- Begin of FIR filters response: frq for factor 3 --------------- +\begin{figure}[hbtp] + \begin{center} + %Both boxes' dimension: 15.24cm x 8.89cm + \includegraphics[scale=0.8]{shq3_up.pdf} + \\ + (a) High-quality filter for up-sampling. + + \includegraphics[scale=0.8]{shq3_down.pdf} + \\ + (b) High-quality filter for down-sampling. + + \end{center} + \caption{\SF Super-high-quality filter responses for a + factor of 3 and sampling rates of 8000 and + 24000 Hz.\label{shq3}} + +\end{figure} +%------------- End of FIR filters response: frq for factor 3 ---------------- + + %----------- Begin of FIR filters response: frq for bandpass filter -------- \begin{figure}[hbtp] @@ -1142,6 +1187,26 @@ \subsection{FIR module} } \end{figure} %----- End of FIR filters response: impulse response for LP20 ----- + + +%----------- Begin of FIR filters response : frq for factor 2 --------------- +\begin{figure}[hbtp] + \begin{center} + %Both boxes' dimension: 15.24cm x 8.89cm + \includegraphics{hp50_32khz} + \\ + (a) 50Hz high-pass filter operating at 32 kHz. + + \includegraphics{hp50_48khz} + \\ + (b) 50Hz high-pass filter operating at 48 kHz. + + \end{center} + \caption{\SF 50Hz high-pass filter responses (32000 and 48000 Hz).\label{hp50}} + +\end{figure} +%------------- End of FIR filters response: frq for factor 2 ---------------- + \flushfloats diff --git a/src/eid/CMakeLists.txt b/src/eid/CMakeLists.txt index a83eb223..7cbdd19f 100644 --- a/src/eid/CMakeLists.txt +++ b/src/eid/CMakeLists.txt @@ -103,3 +103,17 @@ add_test(eid-xor ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/eid-xor -fer -bs bit -ep g192 add_test(eid-xor ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/eid-xor -fer -bs bit -ep byte test_data/zero.src test_data/epf05g10.byt test_data/z_f05g10.bby) add_test(eid-xor ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/eid-xor -fer -bs bit -ep bit test_data/zero.src test_data/epf05g10.bit test_data/z_f05g10.bbi) + +#--- eid-amr: EID for 3GPP AMR codec (from 3GPP S4-120998) +add_executable(eid-amr eid-amr.c softbit.c) +target_link_libraries(eid-amr ${M_LIBRARY}) + +add_test(eid-amr1 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/eid-amr + test_data/bst475.amr test_data/bf03.g192 test_data/bst475_bf03.tst) +add_test(eid-amr1-verify ${CMAKE_COMMAND} -E compare_files + test_data/bst475_bf03.amr test_data/bst475_bf03.tst) + +add_test(eid-amr2 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/eid-amr + test_data/bst122.amr test_data/bf06.g192 test_data/bst122_bf06.tst) +add_test(eid-amr2-verify ${CMAKE_COMMAND} -E compare_files + test_data/bst122_bf06.amr test_data/bst122_bf06.tst) diff --git a/src/eid/README.md b/src/eid/README.md index 6918115c..4e9c9df1 100644 --- a/src/eid/README.md +++ b/src/eid/README.md @@ -20,6 +20,8 @@ The "Error Insertion Device" (EID) module is built of the following files: eid-int.c: .... Interpolates error patterns from a master EP eid-xor.c: .... Disturbs bits or erases frames based on error patterns + eid-amr.c: .... EID for 3GPP AMR codec (frame erasures via G.192 patterns) + dlyerr_2_errpat.c: Delay/error profile to frame-erasure pattern converter ep-stats.c: ... Assesses and prints statistics about an error pattern file gen-patt.c: ... Generates error pattern files softbit.c: .... Library with softbit file I/O and format check @@ -263,5 +265,27 @@ little-endian computers (PC/VAX/Alpha) are: Has not been implemented yet. +## EID-AMR: Error Insertion Device for 3GPP AMR codec + +The `eid-amr` tool provides frame erasure simulation for 3GPP AMR bitstreams +using G.192 error patterns. The `eid-xor` tool is not directly applicable to +AMR because the AMR bitstream follows the ETSI/3GPP format (TS 26.073 §6.3), +which is not compliant with ITU-T G.192. + +Derived from the EID-3G tool (Nobuhiko Naka, NTT DOCOMO). Differences: +- No position parameter (consistent with `eid-xor` usage). +- Only frame erasures (no bit errors). +- All data bits in an erased frame are forced to zero. +- Lost frames signalled with frame type NO\_DATA (0x03). +- Statistics reported to stderr. + +Usage: + + eid-amr + +Originally submitted to 3GPP in Tdoc S4-120998 (Aug. 2012). +Authors: Balazs Kovesi, Stephane Ragot (Orange SA). + + Good luck! -- diff --git a/src/eid/eid-amr.c b/src/eid/eid-amr.c new file mode 100644 index 00000000..6b9d3094 --- /dev/null +++ b/src/eid/eid-amr.c @@ -0,0 +1,107 @@ +/* + eid-amr.c + + EID for AMR using G.192 error pattern of frame erasures. + This tool is based on the eid-3g tool written by Nobuhiko Naka, NTT DOCOMO + (see: http://www.3gpp.org/ftp/tsg_sa/WG4_CODEC/AMR-NB_3G-Characterization/EID_Error_Patterns/) + + Modifications: + - using G.192 error pattern for frame erasures + - only frame erasures (no bit errors) + - no position parameter to skip frames (usage similar to ITU-T STL eid-xor tool) + - all data bits in a lost frame are forced to a value of 0 + - statistics reported to stderr at the end of processing + - uses softbit.c read_g192() for error pattern reading + + NOTES: + A lost frame in DTX on/off is signalled with a frame type code 0x03, + independently from the TX or RX frame type. + + Contact: + Balazs Kovesi, Stephane Ragot + ORANGE SA + firstname.lastname@orange.com + + =============================================================== + COPYRIGHT NOTE: This source code, and all of its derivations, + is subject to the "ITU-T General Public License". Please have + it read in the distribution disk, or in the ITU-T Recommendation + G.191 on "SOFTWARE TOOLS FOR SPEECH AND AUDIO CODING STANDARDS". + See LICENSE.md in the top-level directory for terms. + =============================================================== +*/ + +#include +#include +#include +#include "ugstdemo.h" +#include "softbit.h" + +#define MAX_SERIAL 244 +#define SERIAL_FRAMESIZE (1 + MAX_SERIAL + 5) + +int main(int argc, char *argv[]) { + short spch[SERIAL_FRAMESIZE]; + short epat; + + FILE *fsp, *fep, *fwe; + + long frame, fercnt, wrapcnt; + int i; + + if (argc != 4) { + fprintf(stderr, "eid-amr: EID for 3GPP AMR codec using G.192 frame erasure patterns\n\n"); + fprintf(stderr, "Usage: eid-amr \n"); + exit(1); + } + + if ((fsp = fopen(argv[1], RB)) == NULL) { perror(argv[1]); exit(1); } + if ((fep = fopen(argv[2], RB)) == NULL) { perror(argv[2]); exit(1); } + if ((fwe = fopen(argv[3], WB)) == NULL) { perror(argv[3]); exit(1); } + + frame = 0; + fercnt = 0; + wrapcnt = 0; + + while (fread(spch, sizeof(short), SERIAL_FRAMESIZE, fsp) == SERIAL_FRAMESIZE) { + /* Read one erasure flag from G.192 error pattern */ + if (read_g192(&epat, 1, fep) != 1) { + fseek(fep, 0L, SEEK_SET); + fprintf(stderr, "Warning: Error pattern file shorter than speech file\n--> wrap error pattern file\n"); + wrapcnt++; + if (read_g192(&epat, 1, fep) != 1) { + fprintf(stderr, "Error: Error pattern file read failure\n"); + exit(1); + } + } + + if (epat == G192_FER) { + spch[0] = 0x03; /* NO_DATA frame type */ + fercnt++; + for (i = 0; i < MAX_SERIAL; i++) { + spch[i + 1] = 0; /* erase bits in bad frame (force value of 0) */ + } + } else if (epat != G192_SYNC) { + fprintf(stderr, "Error: invalid pattern value 0x%04X at frame %ld\n", (unsigned short)epat, frame); + exit(1); + } + + fwrite(spch, sizeof(short), SERIAL_FRAMESIZE, fwe); + frame++; + } + + fclose(fsp); + fclose(fep); + fclose(fwe); + + fprintf(stderr, "_Input bit stream file ..................: %s\n", argv[1]); + fprintf(stderr, "_Error pattern file .....................: %s\n", argv[2]); + fprintf(stderr, "_Output bit stream file .................: %s\n", argv[3]); + fprintf(stderr, "# Error pattern files wrapped ...........: %ld times\n", wrapcnt); + fprintf(stderr, "# Processed frames ..................... : %ld\n", frame); + fprintf(stderr, "# Distorted frames ..................... : %ld\n", fercnt); + if (frame > 0) + fprintf(stderr, "# Frame erasure rate ....................: %f %%\n", (100.0 * fercnt) / frame); + + return 0; +} diff --git a/src/eid/test_data/bf03.g192 b/src/eid/test_data/bf03.g192 new file mode 100644 index 00000000..d2449ec4 --- /dev/null +++ b/src/eid/test_data/bf03.g192 @@ -0,0 +1 @@ +!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k \ No newline at end of file diff --git a/src/eid/test_data/bf06.g192 b/src/eid/test_data/bf06.g192 new file mode 100644 index 00000000..999e8ecf --- /dev/null +++ b/src/eid/test_data/bf06.g192 @@ -0,0 +1 @@ +!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k k!k!k!k!k!k!k!k!k k!k!k!k!k k k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k \ No newline at end of file diff --git a/src/eid/test_data/bst122.amr b/src/eid/test_data/bst122.amr new file mode 100644 index 00000000..43eb1645 Binary files /dev/null and b/src/eid/test_data/bst122.amr differ diff --git a/src/eid/test_data/bst122_bf06.amr b/src/eid/test_data/bst122_bf06.amr new file mode 100644 index 00000000..11097c7f Binary files /dev/null and b/src/eid/test_data/bst122_bf06.amr differ diff --git a/src/eid/test_data/bst475.amr b/src/eid/test_data/bst475.amr new file mode 100644 index 00000000..7cc7b95e Binary files /dev/null and b/src/eid/test_data/bst475.amr differ diff --git a/src/eid/test_data/bst475_bf03.amr b/src/eid/test_data/bst475_bf03.amr new file mode 100644 index 00000000..4c6e4c70 Binary files /dev/null and b/src/eid/test_data/bst475_bf03.amr differ diff --git a/src/fir/CMakeLists.txt b/src/fir/CMakeLists.txt index b064f32e..ba4002c3 100644 --- a/src/fir/CMakeLists.txt +++ b/src/fir/CMakeLists.txt @@ -165,3 +165,15 @@ add_test(filter26-verify ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/signal-diff -q test_d add_test(filter27 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/filter -q 5kbp test_data/test.src test_data/test5kbp.flt) add_test(filter27-verify ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/signal-diff -q test_data/test5kbp.flt test_data/test5kbp.ref) + +add_test(filter28 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/filter -q -up SHQ2 test_data/test.src test_data/test-shq2.flt) +add_test(filter28-verify ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/signal-diff -q -equiv 1 test_data/test-shq2.flt test_data/tst-shq2.ref) + +add_test(filter29 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/filter -q SHQ3 test_data/test.src test_data/test-shq3.flt) +add_test(filter29-verify ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/signal-diff -q -equiv 1 test_data/test-shq3.flt test_data/tst-shq3.ref) + +add_test(filter30 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/filter -q HP50_32KHZ test_data/test.src test_data/test-hp50-32khz.flt) +add_test(filter30-verify ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/signal-diff -q test_data/test-hp50-32khz.flt test_data/test-hp50-32khz.ref) + +add_test(filter31 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/filter -q HP50_48KHZ test_data/test.src test_data/test-hp50-48khz.flt) +add_test(filter31-verify ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/signal-diff -q test_data/test-hp50-48khz.flt test_data/test-hp50-48khz.ref) diff --git a/src/fir/README.md b/src/fir/README.md index ee57a574..f4089018 100644 --- a/src/fir/README.md +++ b/src/fir/README.md @@ -28,6 +28,9 @@ The ITU-T/UGST FIR Standard HQ and IRS Up/Downsampling and Filtering Module fir-pso.c: ..... sub-unit of the FIR module with the psophometric weighting init.functions fir-LP.c: ...... sub-unit of the FIR module with lowpass filters (anchors) + fir-wb.c: ...... sub-unit with wideband filters: SHQ2/SHQ3 (super-high-quality + low-pass, 729 coefs, -80dB) and HP50_32KHZ/HP50_48KHZ + (50 Hz high-pass for 32/48 kHz sampling rates) firflt.c: ...... dummy program that calls all the sub-units. Equivalent to the old HQFLT.C file. diff --git a/src/fir/filter.c b/src/fir/filter.c index 6708d091..dfdf5c70 100644 --- a/src/fir/filter.c +++ b/src/fir/filter.c @@ -33,10 +33,10 @@ Options: -mod .......... uses the modified IRS characteristic instead of the "regular" one. - -down ......... filtering is downsample (for HQ2, HQ3, FLAT, IFLAT, and PCM) - -up ........... filtering is upsample (for HQ2, HQ3, FLAT, IFLAT, and PCM) - -async ........ asynchronization operation (disables -down) \n")) - -delay d ...... number of samples to delay the input signal for + -down ......... filtering is downsample (for HQ2, HQ3, SHQ2, SHQ3, FLAT, IFLAT, and PCM) + -up ........... filtering is upsample (for HQ2, HQ3, SHQ2, SHQ3, FLAT, IFLAT, and PCM) + -async ........ asynchronization operation (disables -down) \n")) + -delay d ...... number of samples to delay the input signal for asynchronous tandeming simulation. For d>0, null samples are inserted in the begining of the file, d<0 causes samples to be dropped. Default is d=0. @@ -44,39 +44,41 @@ Valid filter specifications: Flt_type Description - IRS8 (regular) IRS weighting with factor 1:1 at 8kHz - IRS16 (regular or modified) IRS weighting with factor 1:1 at 16kHz - IRS48 (modified) IRS weighting with factor 1:1 at 48kHz - HIRS16 Half-tilt IRS weighting for data sampled at 16kHz, factor 1:1 - TIRS IRS weighting with TIA coefficients, sf=8kHz, factor 1:1 - DSM Delta-SM filtering characteristic, 1:1 - PSO Psophometric wheighting filter, 1:1 - HQ2 FIR (High quality) low-pass with factor 1:2 (up) or 2:1 (down) - HQ3 FIR (High quality) low-pass with factor 1:3 (up) or 3:1 (down) - FLAT Linear-phase pass-band with factor 1:2 (up) or 2:1 (down) - FLAT1 Linear-phase pass-band with factor 1:1 (no rate change) - PCM Standard IIR PCM quality factor 1:2 (up) or 2:1 (down) - PCM1 Standard PCM quality with factor 1:1 at 16 kHz - GSM1 GSM Mobile station input response w/ factor 1:1 at 16 kHz - P341 Send-part weighting of ITU-T Rec.P.341 (Wideband telephones) - DC Direct-form DC-removal IIR filter (factor 1:1) - IFLAT Flat IIR low-pass with factor 1:3 (up) or 3:1 (down) using a - cascade structure - 5KBP 50-5000 Hz Flat bandpass FIR filter for fs=16kHz, 1:1 - 100_5KBP 100-5000 Hz Flat bandpass FIR filter for fs=16kHz, 1:1 - 14KBP 50-14000 Hz Flat bandpass FIR filter for fs=32kHz, 1:1 - 20KBP 20-20000 Hz Flat bandpass FIR filter for fs=48kHz, 1:1 (non-linear phase in HP-design) - LP1p5 low-pass filter with cut-off frequency 1.5kHz for fs=48kHz, 1:1 - LP35 low-pass filter with cut-off frequency 3.5kHz for fs=48kHz, 1:1 - LP7 low-pass filter with cut-off frequency 7kHz for fs=48kHz, 1:1 - LP10 low-pass filter with cut-off frequency 10kHz for fs=48kHz, 1:1 - // FILTER_12k48k_HW - LP12 low-pass filter with cut-off frequency 12kHz for fs=48kHz, 1:1 - // FILTER_12k48k_HW - LP14 low-pass filter with cut-off frequency 14kHz for fs=48kHz, 1:1 - LP20 low-pass filter with cut-off frequency 20kHz for fs=48kHz, 1:1 - RXIRS8 Receive-side Modified IRS weighting with factor 1:1 at 8kHz - RXIRS16 Receive-side Modified IRS weighting with factor 1:1 at 16kHz + IRS8 (regular) IRS weighting with factor 1:1 at 8kHz + IRS16 (regular or modified) IRS weighting with factor 1:1 at 16kHz + IRS48 (modified) IRS weighting with factor 1:1 at 48kHz + HIRS16 Half-tilt IRS weighting for data sampled at 16kHz, factor 1:1 + TIRS IRS weighting with TIA coefficients, sf=8kHz, factor 1:1 + DSM Delta-SM filtering characteristic, 1:1 + PSO Psophometric wheighting filter, 1:1 + HQ2 FIR (High quality) low-pass with factor 1:2 (up) or 2:1 (down) + HQ3 FIR (High quality) low-pass with factor 1:3 (up) or 3:1 (down) + SHQ2 FIR (Super High quality) low-pass with factor 1:2 (up) or 2:1 (down) (729 coefs) + SHQ3 FIR (Super High quality) low-pass with factor 1:3 (up) or 3:1 (down) (729 coefs) + FLAT Linear-phase pass-band with factor 1:2 (up) or 2:1 (down) + FLAT1 Linear-phase pass-band with factor 1:1 (no rate change) + PCM Standard IIR PCM quality factor 1:2 (up) or 2:1 (down) + PCM1 Standard PCM quality with factor 1:1 at 16 kHz + GSM1 GSM Mobile station input response w/ factor 1:1 at 16 kHz + P341 Send-part weighting of ITU-T Rec.P.341 (Wideband telephones) + DC Direct-form DC-removal IIR filter (factor 1:1) + IFLAT Flat IIR low-pass with factor 1:3 (up) or 3:1 (down) using a + cascade structure + 5KBP 50-5000 Hz Flat bandpass FIR filter for fs=16kHz, 1:1 + 100_5KBP 100-5000 Hz Flat bandpass FIR filter for fs=16kHz, 1:1 + 14KBP 50-14000 Hz Flat bandpass FIR filter for fs=32kHz, 1:1 + 20KBP 20-20000 Hz Flat bandpass FIR filter for fs=48kHz, 1:1 (non-linear phase in HP-design) + LP1p5 low-pass filter with cut-off frequency 1.5kHz for fs=48kHz, 1:1 + LP35 low-pass filter with cut-off frequency 3.5kHz for fs=48kHz, 1:1 + LP7 low-pass filter with cut-off frequency 7kHz for fs=48kHz, 1:1 + LP10 low-pass filter with cut-off frequency 10kHz for fs=48kHz, 1:1 + LP12 low-pass filter with cut-off frequency 12kHz for fs=48kHz, 1:1 + LP14 low-pass filter with cut-off frequency 14kHz for fs=48kHz, 1:1 + LP20 low-pass filter with cut-off frequency 20kHz for fs=48kHz, 1:1 + RXIRS8 Receive-side Modified IRS weighting with factor 1:1 at 8kHz + RXIRS16 Receive-side Modified IRS weighting with factor 1:1 at 16kHz + HP50_32KHZ 50 Hz highpass FIR filter w/ factor 1:1 at sf=32kHz, 1119 coefs + HP50_48KHZ 50 Hz highpass FIR filter w/ factor 1:1 at sf=48kHz, 1679 coefs Testing: @@ -152,6 +154,7 @@ 02.Feb.2010 v3.5 - Modified maximum string length for filenames to avoid buffer overruns (y.hiwasaki) + 05.April.2012 v3.6 - Added filters: HP50_32KHZ, HP50_48KHZ, SHQ2 and SHQ3 (b.kovesi France Telecom) =========================================================================== */ @@ -195,6 +198,7 @@ int valid_filter (char *F_type, char modified_IRS) { || strncmp (F_type, "dsm", 3) == 0 || strncmp (F_type, "DSM", 3) == 0 || strncmp (F_type, "pso", 3) == 0 || strncmp (F_type, "PSO", 3) == 0 || strncmp (F_type, "hq", 2) == 0 || strncmp (F_type, "HQ", 2) == 0 + || strncmp (F_type, "shq", 3) == 0 || strncmp (F_type, "SHQ", 3) == 0 || strncmp (F_type, "flat", 4) == 0 || strncmp (F_type, "FLAT", 4) == 0 || strncmp (F_type, "gsm1", 4) == 0 || strncmp (F_type, "GSM1", 4) == 0 || strncmp (F_type, "msin", 4) == 0 || strncmp (F_type, "MSIN", 4) == 0 @@ -204,7 +208,7 @@ int valid_filter (char *F_type, char modified_IRS) { // FILTER_12k48k_HW || strncmp (F_type, "LP12", 4) == 0 || strncmp (F_type, "lp12", 4) == 0 // FILTER_12k48k_HW - || strncmp (F_type, "LP14", 4) == 0 || strncmp (F_type, "lp14", 4) == 0 || strncmp (F_type, "LP20", 4) == 0 || strncmp (F_type, "lp20", 4) == 0) + || strncmp (F_type, "LP14", 4) == 0 || strncmp (F_type, "lp14", 4) == 0 || strncmp (F_type, "LP20", 4) == 0 || strncmp (F_type, "lp20", 4) == 0 || strncmp (F_type, "hp50_32khz", 10) == 0 || strncmp (F_type, "HP50_32KHZ", 10) == 0 || strncmp (F_type, "hp50_48khz", 10) == 0 || strncmp (F_type, "HP50_48KHZ", 10) == 0) valid = 1; /* No MOD-IRS filter at 8 kHz */ @@ -258,37 +262,41 @@ void display_usage () { printf ("\n"); printf (" Valid filter specifications:\n"); printf (" Flt_type Description\n"); - printf (" IRS8 (regular) IRS weighting with factor 1:1 at 8kHz\n"); - printf (" IRS16 (regular or modified) IRS weighting with factor 1:1 at 16kHz\n"); - printf (" IRS48 (modified) IRS weighting with factor 1:1 at 48kHz\n"); - printf (" RXIRS8 Receive-side Modified IRS weighting with factor 1:1 at 8kHz\n"); - printf (" RXIRS16 Receive-side Modified IRS weighting with factor 1:1 at 16kHz\n"); - printf (" HIRS16 Half-tilt IRS weighting, sf=16kHz, factor 1:1.\n"); - printf (" TIRS IRS weighting w/ TIA coefficients, sf=8kHz, factor 1:1.\n"); - printf (" DSM Delta-SM filtering characteristic, 1:1\n"); - printf (" PSO Psophometric wheighting filter, 1:1\n"); - printf (" HQ2 FIR (High quality) low-pass for factor 1:2 (up) or 2:1(down)\n"); - printf (" HQ3 FIR (High quality) low-pass for factor 1:3 (up) or 3:1(down)\n"); - printf (" FLAT Linear-phase passband w/ factor 1:2 (up) or 2:1 (down)\n"); - printf (" FLAT1 Linear-phase pass-band FIR w/ factor 1:1 (no rate change)\n"); - printf (" PCM Standard IIR PCM quality factor 1:2 (up) or 2:1 (down)\n"); - printf (" PCM1 Standard PCM quality with factor 1:1 at 16 kHz\n"); - printf (" GSM1 GSM Mobile station input FIR w/ factor 1:1 at 16 kHz\n"); - printf (" MSIN Same as GSM1\n"); - printf (" P341 P.341 send-mask FIR with factor 1:1 at 16 kHz\n"); - printf (" DC Direct-form DC-removal IIR filter (factor 1:1)\n"); - printf (" IFLAT Cascade-form IIR flat low-pass with factor 1:3 (up) or 3:1 (down)\n"); - printf (" 5KBP 50-5k Hz Flat bandpass FIR filter w/ factor 1:1 at sf=16kHz\n"); - printf (" 100_5KBP 100-5k Hz Flat bandpass FIR filter w/ factor 1:1 at sf=16kHz\n"); - printf (" 14KBP 50-14k Hz Flat bandpass FIR filter w/ factor 1:1 at sf=32kHz\n"); - printf (" 20KBP 20-20k Hz Flat bandpass FIR filter w/ factor 1:1 at sf=48kHz\n"); - printf (" LP1p5 1.5kHz low-pass filter for fs=48kHz, w/ factor 1:1\n"); - printf (" LP35 3.5kHz low-pass filter for fs=48kHz, w/ factor 1:1\n"); - printf (" LP7 7kHz low-pass filter for fs=48kHz, w/ factor 1:1\n"); - printf (" LP10 10kHz low-pass filter for fs=48kHz, w/ factor 1:1\n"); - printf (" LP12 12kHz low-pass filter for fs=48kHz, w/ factor 1:1\n"); - printf (" LP14 14kHz low-pass filter for fs=48kHz, w/ factor 1:1\n"); - printf (" LP20 20kHz low-pass filter for fs=48kHz, w/ factor 1:1\n\n"); + printf (" IRS8 (regular) IRS weighting with factor 1:1 at 8kHz\n"); + printf (" IRS16 (regular or modified) IRS weighting with factor 1:1 at 16kHz\n"); + printf (" IRS48 (modified) IRS weighting with factor 1:1 at 48kHz\n"); + printf (" RXIRS8 Receive-side Modified IRS weighting with factor 1:1 at 8kHz\n"); + printf (" RXIRS16 Receive-side Modified IRS weighting with factor 1:1 at 16kHz\n"); + printf (" HIRS16 Half-tilt IRS weighting, sf=16kHz, factor 1:1.\n"); + printf (" TIRS IRS weighting w/ TIA coefficients, sf=8kHz, factor 1:1.\n"); + printf (" DSM Delta-SM filtering characteristic, 1:1\n"); + printf (" PSO Psophometric wheighting filter, 1:1\n"); + printf (" HQ2 FIR (High quality) low-pass for factor 1:2 (up) or 2:1(down)\n"); + printf (" HQ3 FIR (High quality) low-pass for factor 1:3 (up) or 3:1(down)\n"); + printf (" FLAT Linear-phase passband w/ factor 1:2 (up) or 2:1 (down)\n"); + printf (" FLAT1 Linear-phase pass-band FIR w/ factor 1:1 (no rate change)\n"); + printf (" PCM Standard IIR PCM quality factor 1:2 (up) or 2:1 (down)\n"); + printf (" PCM1 Standard PCM quality with factor 1:1 at 16 kHz\n"); + printf (" GSM1 GSM Mobile station input FIR w/ factor 1:1 at 16 kHz\n"); + printf (" MSIN Same as GSM1\n"); + printf (" P341 P.341 send-mask FIR with factor 1:1 at 16 kHz\n"); + printf (" DC Direct-form DC-removal IIR filter (factor 1:1)\n"); + printf (" IFLAT Cascade-form IIR flat low-pass with factor 1:3 (up) or 3:1 (down)\n"); + printf (" 5KBP 50-5k Hz Flat bandpass FIR filter w/ factor 1:1 at sf=16kHz\n"); + printf (" 100_5KBP 100-5k Hz Flat bandpass FIR filter w/ factor 1:1 at sf=16kHz\n"); + printf (" 14KBP 50-14k Hz Flat bandpass FIR filter w/ factor 1:1 at sf=32kHz\n"); + printf (" 20KBP 20-20k Hz Flat bandpass FIR filter w/ factor 1:1 at sf=48kHz\n"); + printf (" LP1p5 1.5kHz low-pass filter for fs=48kHz, w/ factor 1:1\n"); + printf (" LP35 3.5kHz low-pass filter for fs=48kHz, w/ factor 1:1\n"); + printf (" LP7 7kHz low-pass filter for fs=48kHz, w/ factor 1:1\n"); + printf (" LP10 10kHz low-pass filter for fs=48kHz, w/ factor 1:1\n"); + printf (" LP12 12kHz low-pass filter for fs=48kHz, w/ factor 1:1\n"); + printf (" LP14 14kHz low-pass filter for fs=48kHz, w/ factor 1:1\n"); + printf (" LP20 20kHz low-pass filter for fs=48kHz, w/ factor 1:1\n"); + printf (" HP50_32KHZ 50 Hz highpass FIR filter w/ factor 1:1 at sf=32kHz, 1119 coefs\n"); + printf (" HP50_48KHZ 50 Hz highpass FIR filter w/ factor 1:1 at sf=48kHz, 1679 coefs\n"); + printf (" SHQ2 FIR (Super High quality : 729 coefs, -80dB) low-pass for factor 1:2 (up) or 2:1(down)\n"); + printf (" SHQ3 FIR (Super High quality : 729 coefs, -80dB) low-pass for factor 1:3 (up) or 3:1(down)\n\n"); /* Quit program */ exit (-128); @@ -570,6 +578,20 @@ int main (int argc, char *argv[]) { : hq_down_3_to_1_init (); } +#if 1 // not yet implemented +/* + * Filter type: SHQ2 - Super High quality 2:1 or 1:2 factor: + * SHQ3 - Super High quality 3:1 or 3:1 factor + */ + else if (strncmp (F_type, "shq", 3) == 0 || strncmp (F_type, "SHQ", 3) == 0) { + if (upsample) /* It is up-sampling! */ + fir_state = F_type[3] == '2' ? shq_up_1_to_2_init () + : shq_up_1_to_3_init (); + else /* It is down-sampling! */ + fir_state = F_type[3] == '2' ? shq_down_2_to_1_init () + : shq_down_3_to_1_init (); + } +#endif /* * Filter type: P.341 send mask: factor 1:1 */ @@ -652,14 +674,29 @@ int main (int argc, char *argv[]) { fir_state = LP20_48kHz_init (); } -/* - * Filter type: PCM - Standard PCM quality 2:1 or 1:2 factor: - * . fs == 8000 -> upsample: 1:2 - * . fs == 16000 -> downsample: 2:1 - * PCM1 - Standard PCM quality with 1:1 factor - * . fs == 8000 -> unimplemented - * . fs == 16000 -> OK, 1:1 at 16 kHz - */ + + /* + * Filter type: 50 Hz highpass filter (fs=32kHz): factor 1:1 + */ + else if (strncmp (F_type, "hp50_32khz", 10) == 0 || strncmp (F_type, "HP50_32KHZ", 10) == 0) { + fir_state = hp50_32khz_init (); + } + + /* + * Filter type: 50 Hz highpass filter (fs=48kHz): factor 1:1 + */ + else if (strncmp (F_type, "hp50_48khz", 10) == 0 || strncmp (F_type, "HP50_48KHZ", 10) == 0) { + fir_state = hp50_48khz_init (); + } + + /* + * Filter type: PCM - Standard PCM quality 2:1 or 1:2 factor: + * . fs == 8000 -> upsample: 1:2 + * . fs == 16000 -> downsample: 2:1 + * PCM1 - Standard PCM quality with 1:1 factor + * . fs == 8000 -> unimplemented + * . fs == 16000 -> OK, 1:1 at 16 kHz + */ else if (strncmp (F_type, "pcm", 3) == 0 || strncmp (F_type, "PCM", 3) == 0) { if (strncmp (F_type, "pcm1", 4) == 0 || strncmp (F_type, "PCM1", 4) == 0) { parallel_iir_state = stdpcm_16khz_init (); diff --git a/src/fir/fir-flat.c b/src/fir/fir-flat.c index 8dfdea82..b279c342 100644 --- a/src/fir/fir-flat.c +++ b/src/fir/fir-flat.c @@ -39,6 +39,10 @@ ORIGINAL BY: = hq_down_3_to_1_init() : initialize down-sampling filter 3:1 = hq_up_1_to_2_init() : initialize up-sampling filter 1:2 = hq_up_1_to_3_init() : initialize up-sampling filter 1:3 + = shq_down_2_to_1_init() : initialize down-sampling filter 2:1 + = shq_down_3_to_1_init() : initialize down-sampling filter 3:1 + = shq_up_1_to_2_init() : initialize up-sampling filter 1:2 + = shq_up_1_to_3_init() : initialize up-sampling filter 1:3 = linear_phase_pb_2_to_1_init() = linear_phase_pb_1_to_2_init() = linear_phase_pb_1_to_1_init() @@ -62,6 +66,7 @@ ORIGINAL BY: ** THIS FILE WAS SPLIT FROM THE ORIGINAL .C FILE ** 16.May.97 v2.2 Added function for HQ flat bandpass keeping the sampling rate (1:1 factor) + 05.April.2012 v2.3 - Added filters: SHQ2 and SHQ3 (France Telecom) ============================================================================= */ @@ -83,6 +88,8 @@ ORIGINAL BY: void fill_lp_2_to_1 ARGS ((float *h0[], long *lenh0)); void fill_lp_3_to_1 ARGS ((float **h0, long *lenh0)); +void fill_slp_2_to_1 ARGS ((float *h0[], long *lenh0)); +void fill_slp_3_to_1 ARGS ((float **h0, long *lenh0)); void fill_flat_band_pass ARGS ((float **h0, long *lenh0)); @@ -715,4 +722,663 @@ SCD_FIR *linear_phase_pb_1_to_1_init () { /* ................ End of linear_phase_pb_1_to_1_init() ................ */ +/*****************************************************************************/ +/*****************************************************************************/ + +/* + ============================================================================ + + SCD_FIR *shq_down_2_to_1_init (void); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Description: + ~~~~~~~~~~~~ + + Initialization routine for super high quality FIR downsampling filter + by factor of 2. + + Parameters: none. + ~~~~~~~~~~~ + + Return value: + ~~~~~~~~~~~~~ + Returns a pointer to struct SCD_FIR; + + Author: + ~~~~~~~ + + History: + ~~~~~~~~ + 05.April.2012 v1.0 - Added filters: SHQ2 and SHQ3 (France Telecom) + + ============================================================================ +*/ +SCD_FIR *shq_down_2_to_1_init () { + float *h0; /* pointer to array with FIR coeff. */ + long lenh0; /* number of FIR coefficients */ + + + /* allocate array for FIR coeff. and fill with coefficients */ + fill_slp_2_to_1 (&h0, &lenh0); + + return fir_initialization ( /* Returns: pointer to SCD_FIR-struct */ + lenh0, /* In: number of FIR-coefficients */ + h0, /* In: pointer to array with FIR-cof. */ + 1.0, /* In: gain factor for FIR-coeffic. */ + 2l, /* In: Down-sampling factor */ + 'D' /* In: switch to down-sampling kernel */ + ); +} + +/* ..................... End of shq_down_2_to_1_init() ..................... */ + + + +/* + ============================================================================ + + SCD_FIR *shq_up_1_to_2_init (void); + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Description: + ~~~~~~~~~~~~ + + Initialization routine for super high quality upsampling FIR filter + by factor of 2. + + Parameters: none. + ~~~~~~~~~~~ + + Return value: + ~~~~~~~~~~~~~ + Returns a pointer to struct SCD_FIR; + + Author: + ~~~~~~~ + + History: + ~~~~~~~~ + 05.April.2012 v1.0 - Added filters: SHQ2 and SHQ3 (France Telecom) + + ============================================================================ +*/ +SCD_FIR *shq_up_1_to_2_init () { + float *h0; /* pointer to array with FIR coeff. */ + long lenh0; /* number of FIR coefficients */ + + + /* allocate array for FIR coeff. and fill with coefficients */ + fill_slp_2_to_1 (&h0, &lenh0); + + return fir_initialization ( /* Returns: pointer to SCD_FIR-struct */ + lenh0, /* In: number of FIR-coefficients */ + h0, /* In: pointer to array with FIR-cof. */ + 2.0, /* In: gain factor for FIR-coeffic. */ + 2l, /* In: Up-sampling factor */ + 'U' /* In: Switch to upsampling procedure */ + ); +} + +/* ..................... End of shq_up_1_to_2_init() ..................... */ + + + +/* + ============================================================================ + + SCD_FIR *shq_down_3_to_1_init (void); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Description: + ~~~~~~~~~~~~ + + Initialization routine for super high quality FIR downsampling filter + by factor of 3. + + Parameters: none. + ~~~~~~~~~~~ + + Return value: + ~~~~~~~~~~~~~ + Returns a pointer to struct SCD_FIR; + + Author: + ~~~~~~~ + + History: + ~~~~~~~~ + 05.April.2012 v1.0 - Added filters: SHQ2 and SHQ3 (France Telecom) + + ============================================================================ +*/ +SCD_FIR *shq_down_3_to_1_init () { + float *h0; /* pointer to array with FIR coeff. */ + long lenh0; /* number of FIR coefficients */ + + + /* allocate array for FIR coeff. and fill with coefficients */ + fill_slp_3_to_1 (&h0, &lenh0); + + return fir_initialization ( /* Returns: pointer to SCD_FIR-struct */ + lenh0, /* In: number of FIR-coefficients */ + h0, /* In: pointer to array with FIR-cof. */ + 1.0, /* In: gain factor for FIR-coeffic. */ + 3l, /* In: Down-sampling factor */ + 'D' /* In: switch to down-sampling proc. */ + ); +} + +/* .................... End of shq_down_3_to_1_init() ..................... */ + + + +/* + ============================================================================ + + SCD_FIR *shq_up_1_to_3_init (void); + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Description: + ~~~~~~~~~~~~ + + Initialization routine for super high quality FIR upsampling filter + by factor of 3. + + Parameters: none. + ~~~~~~~~~~~ + + Return value: + ~~~~~~~~~~~~~ + Returns a pointer to struct SCD_FIR; + + Author: + ~~~~~~~ + + History: + ~~~~~~~~ + 05.April.2012 v1.0 - Added filters: SHQ2 and SHQ3 (France Telecom) + + ============================================================================ +*/ +SCD_FIR *shq_up_1_to_3_init () { + float *h0; /* pointer to array with FIR coeff. */ + long lenh0; /* number of FIR coefficients */ + + + /* allocate array for FIR coeff. and fill with coefficients */ + fill_slp_3_to_1 (&h0, &lenh0); + + return fir_initialization ( /* Returns: pointer to SCD_FIR-struct */ + lenh0, /* In: number of FIR-coefficients */ + h0, /* In: pointer to array with FIR-cof. */ + 3.0, /* In: gain factor for FIR-coeffic. */ + 3l, /* In: Up-sampling factor */ + 'U' /* In: switch to upsampling procedure */ + ); +} + +/* ...................... End of shq_up_1_to_3_init() ...................... */ + + +/* + ============================================================================ + + void fill_slp_2_to_1 (float **h0, long *lenh0); + ~~~~~~~~~~~~~~~~~~~ + + Description: + ~~~~~~~~~~~~ + + Initialize pointer to array with of FIR coefficients of a low + pass filter for up/down sampling filter with factor 2:1 or 1:2 + and float representation. + v1.0 filtdemo firpm 16000,3935,4000,0.3, 80, 728 + v1.1 filtdemo firpm 16000,3935,4000,0.3, 100, 872 + h2 = filtdemo('getfilt') + for i = 1:length(h2) fprintf('(float)%20.12e, ', h2(i)); + if rem(i,5) == 0 fprintf('\n'); end end + + Parameters: + ~~~~~~~~~~~ + h0: (Out) pointer to array with FIR coefficients + lenh0: (Out) pointer to number of coefficients + + + Return value: + ~~~~~~~~~~~~~ + None. + + Author: + ~~~~~~~ + + History: + ~~~~~~~~ + 08.DEC.2011 v1.0 Release of 1st version + 15.FEB.2012 v1.1 Release of 2nd version with more stopband attenuation + + ============================================================================ +*/ +#define lensh02 873 + +void fill_slp_2_to_1 (h0, lenh0) + float *h0[]; + long *lenh0; +{ + static float sh02[lensh02] = { + (float) 3.796696928466e-006, (float) - 1.916895913880e-004, (float) - 9.559790653313e-004, (float) - 2.309090436241e-003, (float) - 3.355260288418e-003, + (float) - 2.821616068751e-003, (float) - 6.494578851510e-004, (float) 1.368071261832e-003, (float) 1.370278722621e-003, (float) - 2.336521287917e-004, + (float) - 1.185316896754e-003, (float) - 3.557893702940e-004, (float) 8.234667012568e-004, (float) 6.081914903075e-004, (float) - 4.869084931865e-004, + (float) - 6.784989588347e-004, (float) 2.211378711751e-004, (float) 6.567967063227e-004, (float) - 2.508428842065e-005, (float) - 5.918859501058e-004, + (float) - 1.133457948942e-004, (float) 5.103528659400e-004, (float) 2.077730139398e-004, (float) - 4.257030079639e-004, (float) - 2.693320767774e-004, + (float) 3.450469073084e-004, (float) 3.071631118731e-004, (float) - 2.713518058883e-004, (float) - 3.278882894771e-004, (float) 2.057925864008e-004, + (float) 3.366006455231e-004, (float) - 1.482361183421e-004, (float) - 3.367394950886e-004, (float) 9.845446547453e-005, (float) 3.312977192436e-004, + (float) - 5.533287789728e-005, (float) - 3.217977487285e-004, (float) 1.843967368528e-005, (float) 3.099640470313e-004, (float) 1.328843895284e-005, + (float) - 2.965903264243e-004, (float) - 4.040411770010e-005, (float) 2.826060999738e-004, (float) 6.386636089117e-005, (float) - 2.682059180462e-004, + (float) - 8.400473971490e-005, (float) 2.539623487208e-004, (float) 1.015795101283e-004, (float) - 2.398340044811e-004, (float) - 1.167662237676e-004, + (float) 2.262277295494e-004, (float) 1.302389953023e-004, (float) - 2.128963846610e-004, (float) - 1.420059883336e-004, (float) 2.001325818624e-004, + (float) 1.525152442899e-004, (float) - 1.878370907468e-004, (float) - 1.619282978772e-004, (float) 1.760669168660e-004, (float) 1.705747652949e-004, + (float) - 1.645342831667e-004, (float) - 1.782437567680e-004, (float) 1.536329356026e-004, (float) 1.854489350961e-004, (float) - 1.431090602159e-004, + (float) - 1.923098357663e-004, (float) 1.327632434198e-004, (float) 1.988019142637e-004, (float) - 1.224823030873e-004, (float) - 2.047505646951e-004, + (float) 1.125436526441e-004, (float) 2.105136263884e-004, (float) - 1.026783876418e-004, (float) - 2.159988725649e-004, (float) 9.291206030779e-005, + (float) 2.212630220095e-004, (float) - 8.322092258564e-005, (float) - 2.263811595801e-004, (float) 7.350850871907e-005, (float) 2.313695981464e-004, + (float) - 6.362969041322e-005, (float) - 2.360269018314e-004, (float) 5.380295174011e-005, (float) 2.405543319009e-004, (float) - 4.394022835345e-005, + (float) - 2.450580921435e-004, (float) 3.380378919976e-005, (float) 2.493326534241e-004, (float) - 2.346096839263e-005, (float) - 2.533379001119e-004, + (float) 1.298908745154e-005, (float) 2.571630808553e-004, (float) - 2.297001211178e-006, (float) - 2.607451266109e-004, (float) - 8.605011575155e-006, + (float) 2.640373512578e-004, (float) 1.959506007225e-005, (float) - 2.672713250910e-004, (float) - 3.098103063675e-005, (float) 2.701901534524e-004, + (float) 4.267470287693e-005, (float) - 2.727139254030e-004, (float) - 5.452878257789e-005, (float) 2.749705769146e-004, (float) 6.658908505887e-005, + (float) - 2.770661665078e-004, (float) - 7.913713870114e-005, (float) 2.786327455942e-004, (float) 9.185585608604e-005, (float) - 2.798865730517e-004, + (float) - 1.049053516406e-004, (float) 2.807049278836e-004, (float) 1.182425329275e-004, (float) - 2.810498626639e-004, (float) - 1.318263284371e-004, + (float) 2.808967923003e-004, (float) 1.455506215115e-004, (float) - 2.804597862803e-004, (float) - 1.597707317081e-004, (float) 2.793085842202e-004, + (float) 1.741553960777e-004, (float) - 2.775743726755e-004, (float) - 1.887189126391e-004, (float) 2.752088365441e-004, (float) 2.033292028967e-004, + (float) - 2.723750410219e-004, (float) - 2.181185345008e-004, (float) 2.690195363322e-004, (float) 2.331377491223e-004, (float) - 2.650434716994e-004, + (float) - 2.483814212302e-004, (float) 2.602688344952e-004, (float) 2.635383838792e-004, (float) - 2.550401641814e-004, (float) - 2.789293863887e-004, + (float) 2.491244096402e-004, (float) 2.945239709175e-004, (float) - 2.422677063636e-004, (float) - 3.097933373634e-004, (float) 2.353216838587e-004, + (float) 3.261618119620e-004, (float) - 2.259436476779e-004, (float) - 3.401042900591e-004, (float) 2.190501787592e-004, (float) 3.582196439592e-004, + (float) - 2.060273208877e-004, (float) - 3.696711810736e-004, (float) 1.999494168871e-004, (float) 3.895781288432e-004, (float) - 1.842093035737e-004, + (float) - 4.009205689012e-004, (float) 1.747765776478e-004, (float) 4.170995964833e-004, (float) - 1.621552954359e-004, (float) - 4.335350916263e-004, + (float) 1.456088038973e-004, (float) 4.447247309663e-004, (float) - 1.338587279643e-004, (float) - 4.603990618508e-004, (float) 1.185710423385e-004, + (float) 4.756987576397e-004, (float) - 1.000048491894e-004, (float) - 4.866041612047e-004, (float) 8.476411455038e-005, (float) 4.998780903868e-004, + (float) - 6.827228464703e-005, (float) - 5.146667747733e-004, (float) 4.753115459198e-005, (float) 5.255987039514e-004, (float) - 2.779134779343e-005, + (float) - 5.355054669473e-004, (float) 9.674319498129e-006, (float) 5.478734582255e-004, (float) 1.129727308307e-005, (float) - 5.595560306151e-004, + (float) - 3.493017868056e-005, (float) 5.677956913097e-004, (float) 5.713859403233e-005, (float) - 5.757813638276e-004, (float) - 7.867758251969e-005, + (float) 5.852799390936e-004, (float) 1.025052366029e-004, (float) - 5.941431998669e-004, (float) - 1.287437605610e-004, (float) 6.000426995209e-004, + (float) 1.543883746225e-004, (float) - 6.047947232235e-004, (float) - 1.791348851279e-004, (float) 6.103250533849e-004, (float) 2.050193734239e-004, + (float) - 6.160453602904e-004, (float) - 2.334612077119e-004, (float) 6.194421365491e-004, (float) 2.625902273169e-004, (float) - 6.205808968069e-004, + (float) - 2.909797933304e-004, (float) 6.209921559119e-004, (float) 3.189781263679e-004, (float) - 6.218075972611e-004, (float) - 3.484125142872e-004, + (float) 6.217754987501e-004, (float) 3.794107287795e-004, (float) - 6.197373802874e-004, (float) - 4.110126983210e-004, (float) 6.154740944566e-004, + (float) 4.419629007982e-004, (float) - 6.102659557898e-004, (float) - 4.726777081461e-004, (float) 6.046314459814e-004, (float) 5.039254713546e-004, + (float) - 5.984097187292e-004, (float) - 5.364779620831e-004, (float) 5.904522258905e-004, (float) 5.697973331218e-004, (float) - 5.802595330793e-004, + (float) - 6.029679388270e-004, (float) 5.681353065596e-004, (float) 6.352880253925e-004, (float) - 5.552572270111e-004, (float) - 6.675564463085e-004, + (float) 5.416686835400e-004, (float) 7.004526959840e-004, (float) - 5.267382801903e-004, (float) - 7.340039635307e-004, (float) 5.098171451209e-004, + (float) 7.676007675934e-004, (float) - 4.909399565337e-004, (float) - 8.009185568264e-004, (float) 4.701439201458e-004, (float) 8.334617833183e-004, + (float) - 4.480343741175e-004, (float) - 8.653751202061e-004, (float) 4.250690490151e-004, (float) 8.973420149762e-004, (float) - 4.009277182108e-004, + (float) - 9.297436930304e-004, (float) 3.747939959452e-004, (float) 9.620204713426e-004, (float) - 3.465711833398e-004, (float) - 9.937591861314e-004, + (float) 3.163873335071e-004, (float) 1.024733751383e-003, (float) - 2.843503685027e-004, (float) - 1.054638636894e-003, (float) 2.509109323082e-004, + (float) 1.083612570606e-003, (float) - 2.163900938188e-004, (float) - 1.112203502198e-003, (float) 1.803999502271e-004, (float) 1.140444841288e-003, + (float) - 1.425881460745e-004, (float) - 1.168069638194e-003, (float) 1.029125055130e-004, (float) 1.195016515742e-003, (float) - 6.105502150698e-005, + (float) - 1.220730499698e-003, (float) 1.722309885781e-005, (float) 1.244802222599e-003, (float) 2.793170702027e-005, (float) - 1.267597215030e-003, + (float) - 7.433354174569e-005, (float) 1.289443015758e-003, (float) 1.223071384268e-004, (float) - 1.310173684327e-003, (float) - 1.717961954652e-004, + (float) 1.329974954064e-003, (float) 2.232129919651e-004, (float) - 1.348538305787e-003, (float) - 2.767754823491e-004, (float) 1.365216750693e-003, + (float) 3.319638947909e-004, (float) - 1.380095678916e-003, (float) - 3.886579246534e-004, (float) 1.393229786168e-003, (float) 4.469245863820e-004, + (float) - 1.404378077863e-003, (float) - 5.064357635350e-004, (float) 1.413756425541e-003, (float) 5.672145160932e-004, (float) - 1.421549050340e-003, + (float) - 6.296742832444e-004, (float) 1.427153322508e-003, (float) 6.930389693885e-004, (float) - 1.431723738610e-003, (float) - 7.590842956586e-004, + (float) 1.433006680474e-003, (float) 8.254983244591e-004, (float) - 1.433298843968e-003, (float) - 8.949540559698e-004, (float) 1.429349304332e-003, + (float) 9.640000205246e-004, (float) - 1.424329953401e-003, (float) - 1.035464848937e-003, (float) 1.415601499601e-003, (float) 1.106948972842e-003, + (float) - 1.405087088396e-003, (float) - 1.179673831986e-003, (float) 1.392478926372e-003, (float) 1.254375291373e-003, (float) - 1.376198638858e-003, + (float) - 1.329115340603e-003, (float) 1.358185632312e-003, (float) 1.405674275449e-003, (float) - 1.337154931483e-003, (float) - 1.483771621272e-003, + (float) 1.312269387543e-003, (float) 1.561900282048e-003, (float) - 1.285301279727e-003, (float) - 1.642079777660e-003, (float) 1.254114183544e-003, + (float) 1.722681043912e-003, (float) - 1.219211242008e-003, (float) - 1.803063205736e-003, (float) 1.181949655991e-003, (float) 1.884828365040e-003, + (float) - 1.140994785147e-003, (float) - 1.967442657059e-003, (float) 1.095925463900e-003, (float) 2.049903843463e-003, (float) - 1.047877974227e-003, + (float) - 2.133252204410e-003, (float) 9.962070742267e-004, (float) 2.217664374578e-003, (float) - 9.399028586473e-004, (float) - 2.301879563126e-003, + (float) 8.799533412324e-004, (float) 2.386557312794e-003, (float) - 8.160716710263e-004, (float) - 2.472094691981e-003, (float) 7.471803656806e-004, + (float) 2.557416285858e-003, (float) - 6.736494366209e-004, (float) - 2.642112224434e-003, (float) 5.963947377435e-004, (float) 2.727379304929e-003, + (float) - 5.143438896094e-004, (float) - 2.812899297523e-003, (float) 4.268830572252e-004, (float) 2.897715073078e-003, (float) - 3.346488919796e-004, + (float) - 2.981956373303e-003, (float) 2.380521797797e-004, (float) 3.066623414599e-003, (float) - 1.359382829811e-004, (float) - 3.151255446637e-003, + (float) 2.782985135369e-005, (float) 3.235110828048e-003, (float) 8.584892395569e-005, (float) - 3.318355500563e-003, (float) - 2.049786891772e-004, + (float) 3.401760376538e-003, (float) 3.307328425452e-004, (float) - 3.484791457407e-003, (float) - 4.636621183957e-004, (float) 3.566606134171e-003, + (float) 6.034051597652e-004, (float) - 3.647201821596e-003, (float) - 7.497497805930e-004, (float) 3.727291920777e-003, (float) 9.036595637004e-004, + (float) - 3.806649107069e-003, (float) - 1.065867612984e-003, (float) 3.884567294966e-003, (float) 1.236277315086e-003, (float) - 3.961005564525e-003, + (float) - 1.414791150723e-003, (float) 4.036756667297e-003, (float) 1.602515835838e-003, (float) - 4.111869542510e-003, (float) - 1.800743383460e-003, + (float) 4.185540927469e-003, (float) 2.009872291898e-003, (float) - 4.257408085939e-003, (float) - 2.230058942337e-003, (float) 4.327941872004e-003, + (float) 2.462366047089e-003, (float) - 4.397272684020e-003, (float) - 2.708200770755e-003, (float) 4.464960149734e-003, (float) 2.968539548004e-003, + (float) - 4.530883832943e-003, (float) - 3.244542924923e-003, (float) 4.595095710114e-003, (float) 3.537784469302e-003, (float) - 4.657460095921e-003, + (float) - 3.849899735547e-003, (float) 4.718000809430e-003, (float) 4.182843960043e-003, (float) - 4.776999990045e-003, (float) - 4.539528511166e-003, + (float) 4.833943437272e-003, (float) 4.922646164542e-003, (float) - 4.888454593861e-003, (float) - 5.334885946192e-003, (float) 4.941143760176e-003, + (float) 5.780469043985e-003, (float) - 4.992461365274e-003, (float) - 6.265199509171e-003, (float) 5.041554413526e-003, (float) 6.794738285542e-003, + (float) - 5.088173036641e-003, (float) - 7.376044395058e-003, (float) 5.132524592209e-003, (float) 8.018375971792e-003, (float) - 5.174387044018e-003, + (float) - 8.733007006427e-003, (float) 5.213750365616e-003, (float) 9.534285432471e-003, (float) - 5.251195927114e-003, (float) - 1.044195072235e-002, + (float) 5.286143606555e-003, (float) 1.148100562390e-002, (float) - 5.318182436083e-003, (float) - 1.268466390300e-002, (float) 5.347878808814e-003, + (float) 1.410004942171e-002, (float) - 5.375128932984e-003, (float) - 1.579376157069e-002, (float) 5.399698942850e-003, (float) 1.786325203520e-002, + (float) - 5.422169472156e-003, (float) - 2.045920855579e-002, (float) 5.442242611442e-003, (float) 2.382438645728e-002, (float) - 5.459104973796e-003, + (float) - 2.837649392789e-002, (float) 5.474214913211e-003, (float) 3.490845950781e-002, (float) - 5.486081437467e-003, (float) - 4.511486713033e-002, + (float) 5.495807726126e-003, (float) 6.340609543466e-002, (float) - 5.502587343827e-003, (float) - 1.059496325621e-001, (float) 5.506719537453e-003, + (float) 3.182586432339e-001, (float) 4.944918979528e-001, (float) 3.182586432339e-001, (float) 5.506719537453e-003, (float) - 1.059496325621e-001, + (float) - 5.502587343827e-003, (float) 6.340609543466e-002, (float) 5.495807726126e-003, (float) - 4.511486713033e-002, (float) - 5.486081437467e-003, + (float) 3.490845950781e-002, (float) 5.474214913211e-003, (float) - 2.837649392789e-002, (float) - 5.459104973796e-003, (float) 2.382438645728e-002, + (float) 5.442242611442e-003, (float) - 2.045920855579e-002, (float) - 5.422169472156e-003, (float) 1.786325203520e-002, (float) 5.399698942850e-003, + (float) - 1.579376157069e-002, (float) - 5.375128932984e-003, (float) 1.410004942171e-002, (float) 5.347878808814e-003, (float) - 1.268466390300e-002, + (float) - 5.318182436083e-003, (float) 1.148100562390e-002, (float) 5.286143606555e-003, (float) - 1.044195072235e-002, (float) - 5.251195927114e-003, + (float) 9.534285432471e-003, (float) 5.213750365616e-003, (float) - 8.733007006427e-003, (float) - 5.174387044018e-003, (float) 8.018375971792e-003, + (float) 5.132524592209e-003, (float) - 7.376044395058e-003, (float) - 5.088173036641e-003, (float) 6.794738285542e-003, (float) 5.041554413526e-003, + (float) - 6.265199509171e-003, (float) - 4.992461365274e-003, (float) 5.780469043985e-003, (float) 4.941143760176e-003, (float) - 5.334885946192e-003, + (float) - 4.888454593861e-003, (float) 4.922646164542e-003, (float) 4.833943437272e-003, (float) - 4.539528511166e-003, (float) - 4.776999990045e-003, + (float) 4.182843960043e-003, (float) 4.718000809430e-003, (float) - 3.849899735547e-003, (float) - 4.657460095921e-003, (float) 3.537784469302e-003, + (float) 4.595095710114e-003, (float) - 3.244542924923e-003, (float) - 4.530883832943e-003, (float) 2.968539548004e-003, (float) 4.464960149734e-003, + (float) - 2.708200770755e-003, (float) - 4.397272684020e-003, (float) 2.462366047089e-003, (float) 4.327941872004e-003, (float) - 2.230058942337e-003, + (float) - 4.257408085939e-003, (float) 2.009872291898e-003, (float) 4.185540927469e-003, (float) - 1.800743383460e-003, (float) - 4.111869542510e-003, + (float) 1.602515835838e-003, (float) 4.036756667297e-003, (float) - 1.414791150723e-003, (float) - 3.961005564525e-003, (float) 1.236277315086e-003, + (float) 3.884567294966e-003, (float) - 1.065867612984e-003, (float) - 3.806649107069e-003, (float) 9.036595637004e-004, (float) 3.727291920777e-003, + (float) - 7.497497805930e-004, (float) - 3.647201821596e-003, (float) 6.034051597652e-004, (float) 3.566606134171e-003, (float) - 4.636621183957e-004, + (float) - 3.484791457407e-003, (float) 3.307328425452e-004, (float) 3.401760376538e-003, (float) - 2.049786891772e-004, (float) - 3.318355500563e-003, + (float) 8.584892395569e-005, (float) 3.235110828048e-003, (float) 2.782985135369e-005, (float) - 3.151255446637e-003, (float) - 1.359382829811e-004, + (float) 3.066623414599e-003, (float) 2.380521797797e-004, (float) - 2.981956373303e-003, (float) - 3.346488919796e-004, (float) 2.897715073078e-003, + (float) 4.268830572252e-004, (float) - 2.812899297523e-003, (float) - 5.143438896094e-004, (float) 2.727379304929e-003, (float) 5.963947377435e-004, + (float) - 2.642112224434e-003, (float) - 6.736494366209e-004, (float) 2.557416285858e-003, (float) 7.471803656806e-004, (float) - 2.472094691981e-003, + (float) - 8.160716710263e-004, (float) 2.386557312794e-003, (float) 8.799533412324e-004, (float) - 2.301879563126e-003, (float) - 9.399028586473e-004, + (float) 2.217664374578e-003, (float) 9.962070742267e-004, (float) - 2.133252204410e-003, (float) - 1.047877974227e-003, (float) 2.049903843463e-003, + (float) 1.095925463900e-003, (float) - 1.967442657059e-003, (float) - 1.140994785147e-003, (float) 1.884828365040e-003, (float) 1.181949655991e-003, + (float) - 1.803063205736e-003, (float) - 1.219211242008e-003, (float) 1.722681043912e-003, (float) 1.254114183544e-003, (float) - 1.642079777660e-003, + (float) - 1.285301279727e-003, (float) 1.561900282048e-003, (float) 1.312269387543e-003, (float) - 1.483771621272e-003, (float) - 1.337154931483e-003, + (float) 1.405674275449e-003, (float) 1.358185632312e-003, (float) - 1.329115340603e-003, (float) - 1.376198638858e-003, (float) 1.254375291373e-003, + (float) 1.392478926372e-003, (float) - 1.179673831986e-003, (float) - 1.405087088396e-003, (float) 1.106948972842e-003, (float) 1.415601499601e-003, + (float) - 1.035464848937e-003, (float) - 1.424329953401e-003, (float) 9.640000205246e-004, (float) 1.429349304332e-003, (float) - 8.949540559698e-004, + (float) - 1.433298843968e-003, (float) 8.254983244591e-004, (float) 1.433006680474e-003, (float) - 7.590842956586e-004, (float) - 1.431723738610e-003, + (float) 6.930389693885e-004, (float) 1.427153322508e-003, (float) - 6.296742832444e-004, (float) - 1.421549050340e-003, (float) 5.672145160932e-004, + (float) 1.413756425541e-003, (float) - 5.064357635350e-004, (float) - 1.404378077863e-003, (float) 4.469245863820e-004, (float) 1.393229786168e-003, + (float) - 3.886579246534e-004, (float) - 1.380095678916e-003, (float) 3.319638947909e-004, (float) 1.365216750693e-003, (float) - 2.767754823491e-004, + (float) - 1.348538305787e-003, (float) 2.232129919651e-004, (float) 1.329974954064e-003, (float) - 1.717961954652e-004, (float) - 1.310173684327e-003, + (float) 1.223071384268e-004, (float) 1.289443015758e-003, (float) - 7.433354174569e-005, (float) - 1.267597215030e-003, (float) 2.793170702027e-005, + (float) 1.244802222599e-003, (float) 1.722309885781e-005, (float) - 1.220730499698e-003, (float) - 6.105502150698e-005, (float) 1.195016515742e-003, + (float) 1.029125055130e-004, (float) - 1.168069638194e-003, (float) - 1.425881460745e-004, (float) 1.140444841288e-003, (float) 1.803999502271e-004, + (float) - 1.112203502198e-003, (float) - 2.163900938188e-004, (float) 1.083612570606e-003, (float) 2.509109323082e-004, (float) - 1.054638636894e-003, + (float) - 2.843503685027e-004, (float) 1.024733751383e-003, (float) 3.163873335071e-004, (float) - 9.937591861314e-004, (float) - 3.465711833398e-004, + (float) 9.620204713426e-004, (float) 3.747939959452e-004, (float) - 9.297436930304e-004, (float) - 4.009277182108e-004, (float) 8.973420149762e-004, + (float) 4.250690490151e-004, (float) - 8.653751202061e-004, (float) - 4.480343741175e-004, (float) 8.334617833183e-004, (float) 4.701439201458e-004, + (float) - 8.009185568264e-004, (float) - 4.909399565337e-004, (float) 7.676007675934e-004, (float) 5.098171451209e-004, (float) - 7.340039635307e-004, + (float) - 5.267382801903e-004, (float) 7.004526959840e-004, (float) 5.416686835400e-004, (float) - 6.675564463085e-004, (float) - 5.552572270111e-004, + (float) 6.352880253925e-004, (float) 5.681353065596e-004, (float) - 6.029679388270e-004, (float) - 5.802595330793e-004, (float) 5.697973331218e-004, + (float) 5.904522258905e-004, (float) - 5.364779620831e-004, (float) - 5.984097187292e-004, (float) 5.039254713546e-004, (float) 6.046314459814e-004, + (float) - 4.726777081461e-004, (float) - 6.102659557898e-004, (float) 4.419629007982e-004, (float) 6.154740944566e-004, (float) - 4.110126983210e-004, + (float) - 6.197373802874e-004, (float) 3.794107287795e-004, (float) 6.217754987501e-004, (float) - 3.484125142872e-004, (float) - 6.218075972611e-004, + (float) 3.189781263679e-004, (float) 6.209921559119e-004, (float) - 2.909797933304e-004, (float) - 6.205808968069e-004, (float) 2.625902273169e-004, + (float) 6.194421365491e-004, (float) - 2.334612077119e-004, (float) - 6.160453602904e-004, (float) 2.050193734239e-004, (float) 6.103250533849e-004, + (float) - 1.791348851279e-004, (float) - 6.047947232235e-004, (float) 1.543883746225e-004, (float) 6.000426995209e-004, (float) - 1.287437605610e-004, + (float) - 5.941431998669e-004, (float) 1.025052366029e-004, (float) 5.852799390936e-004, (float) - 7.867758251969e-005, (float) - 5.757813638276e-004, + (float) 5.713859403233e-005, (float) 5.677956913097e-004, (float) - 3.493017868056e-005, (float) - 5.595560306151e-004, (float) 1.129727308307e-005, + (float) 5.478734582255e-004, (float) 9.674319498129e-006, (float) - 5.355054669473e-004, (float) - 2.779134779343e-005, (float) 5.255987039514e-004, + (float) 4.753115459198e-005, (float) - 5.146667747733e-004, (float) - 6.827228464703e-005, (float) 4.998780903868e-004, (float) 8.476411455038e-005, + (float) - 4.866041612047e-004, (float) - 1.000048491894e-004, (float) 4.756987576397e-004, (float) 1.185710423385e-004, (float) - 4.603990618508e-004, + (float) - 1.338587279643e-004, (float) 4.447247309663e-004, (float) 1.456088038973e-004, (float) - 4.335350916263e-004, (float) - 1.621552954359e-004, + (float) 4.170995964833e-004, (float) 1.747765776478e-004, (float) - 4.009205689012e-004, (float) - 1.842093035737e-004, (float) 3.895781288432e-004, + (float) 1.999494168871e-004, (float) - 3.696711810736e-004, (float) - 2.060273208877e-004, (float) 3.582196439592e-004, (float) 2.190501787592e-004, + (float) - 3.401042900591e-004, (float) - 2.259436476779e-004, (float) 3.261618119620e-004, (float) 2.353216838587e-004, (float) - 3.097933373634e-004, + (float) - 2.422677063636e-004, (float) 2.945239709175e-004, (float) 2.491244096402e-004, (float) - 2.789293863887e-004, (float) - 2.550401641814e-004, + (float) 2.635383838792e-004, (float) 2.602688344952e-004, (float) - 2.483814212302e-004, (float) - 2.650434716994e-004, (float) 2.331377491223e-004, + (float) 2.690195363322e-004, (float) - 2.181185345008e-004, (float) - 2.723750410219e-004, (float) 2.033292028967e-004, (float) 2.752088365441e-004, + (float) - 1.887189126391e-004, (float) - 2.775743726755e-004, (float) 1.741553960777e-004, (float) 2.793085842202e-004, (float) - 1.597707317081e-004, + (float) - 2.804597862803e-004, (float) 1.455506215115e-004, (float) 2.808967923003e-004, (float) - 1.318263284371e-004, (float) - 2.810498626639e-004, + (float) 1.182425329275e-004, (float) 2.807049278836e-004, (float) - 1.049053516406e-004, (float) - 2.798865730517e-004, (float) 9.185585608604e-005, + (float) 2.786327455942e-004, (float) - 7.913713870114e-005, (float) - 2.770661665078e-004, (float) 6.658908505887e-005, (float) 2.749705769146e-004, + (float) - 5.452878257789e-005, (float) - 2.727139254030e-004, (float) 4.267470287693e-005, (float) 2.701901534524e-004, (float) - 3.098103063675e-005, + (float) - 2.672713250910e-004, (float) 1.959506007225e-005, (float) 2.640373512578e-004, (float) - 8.605011575155e-006, (float) - 2.607451266109e-004, + (float) - 2.297001211178e-006, (float) 2.571630808553e-004, (float) 1.298908745154e-005, (float) - 2.533379001119e-004, (float) - 2.346096839263e-005, + (float) 2.493326534241e-004, (float) 3.380378919976e-005, (float) - 2.450580921435e-004, (float) - 4.394022835345e-005, (float) 2.405543319009e-004, + (float) 5.380295174011e-005, (float) - 2.360269018314e-004, (float) - 6.362969041322e-005, (float) 2.313695981464e-004, (float) 7.350850871907e-005, + (float) - 2.263811595801e-004, (float) - 8.322092258564e-005, (float) 2.212630220095e-004, (float) 9.291206030779e-005, (float) - 2.159988725649e-004, + (float) - 1.026783876418e-004, (float) 2.105136263884e-004, (float) 1.125436526441e-004, (float) - 2.047505646951e-004, (float) - 1.224823030873e-004, + (float) 1.988019142637e-004, (float) 1.327632434198e-004, (float) - 1.923098357663e-004, (float) - 1.431090602159e-004, (float) 1.854489350961e-004, + (float) 1.536329356026e-004, (float) - 1.782437567680e-004, (float) - 1.645342831667e-004, (float) 1.705747652949e-004, (float) 1.760669168660e-004, + (float) - 1.619282978772e-004, (float) - 1.878370907468e-004, (float) 1.525152442899e-004, (float) 2.001325818624e-004, (float) - 1.420059883336e-004, + (float) - 2.128963846610e-004, (float) 1.302389953023e-004, (float) 2.262277295494e-004, (float) - 1.167662237676e-004, (float) - 2.398340044811e-004, + (float) 1.015795101283e-004, (float) 2.539623487208e-004, (float) - 8.400473971490e-005, (float) - 2.682059180462e-004, (float) 6.386636089117e-005, + (float) 2.826060999738e-004, (float) - 4.040411770010e-005, (float) - 2.965903264243e-004, (float) 1.328843895284e-005, (float) 3.099640470313e-004, + (float) 1.843967368528e-005, (float) - 3.217977487285e-004, (float) - 5.533287789728e-005, (float) 3.312977192436e-004, (float) 9.845446547453e-005, + (float) - 3.367394950886e-004, (float) - 1.482361183421e-004, (float) 3.366006455231e-004, (float) 2.057925864008e-004, (float) - 3.278882894771e-004, + (float) - 2.713518058883e-004, (float) 3.071631118731e-004, (float) 3.450469073084e-004, (float) - 2.693320767774e-004, (float) - 4.257030079639e-004, + (float) 2.077730139398e-004, (float) 5.103528659400e-004, (float) - 1.133457948942e-004, (float) - 5.918859501058e-004, (float) - 2.508428842065e-005, + (float) 6.567967063227e-004, (float) 2.211378711751e-004, (float) - 6.784989588347e-004, (float) - 4.869084931865e-004, (float) 6.081914903075e-004, + (float) 8.234667012568e-004, (float) - 3.557893702940e-004, (float) - 1.185316896754e-003, (float) - 2.336521287917e-004, (float) 1.370278722621e-003, + (float) 1.368071261832e-003, (float) - 6.494578851510e-004, (float) - 2.821616068751e-003, (float) - 3.355260288418e-003, (float) - 2.309090436241e-003, + (float) - 9.559790653313e-004, (float) - 1.916895913880e-004, (float) 3.796696928466e-006 + }; + + *lenh0 = lensh02; /* store 'number of coefficients' */ + *h0 = sh02; /* store pointer to h02[]-array */ +} + +#undef lensh02 +/* ....................... End of fill_slp_2_to_1() ....................... */ + + + +/* + ============================================================================ + + void fill_slp_3_to_1 (float **h0, long *lenh0); + ~~~~~~~~~~~~~~~~~~~ + + Description: + ~~~~~~~~~~~~ + + Initialize pointer to array with FIR coefficients for up/down + sampling low-pass filter with factor 3:1 or 1:3 and 24 bit + representation. + v1.0 filtdemo firpm 16000,2602,2667,0.3, 80, 728 + v1.1 filtdemo firpm 16000,2602,2667,0.3, 100, 872 + h3 = filtdemo('getfilt') + for i = 1:length(h3) fprintf('(float)%20.12e, ', h3(i)); + if rem(i,5) == 0 fprintf('\n'); end end + + Parameters: + ~~~~~~~~~~~ + h0: (Out) pointer to array with FIR coefficients + lenh0: (Out) pointer to number of coefficients + + + Return value: + ~~~~~~~~~~~~~ + None. + + Author: + ~~~~~~~ + + History: + ~~~~~~~~ + 05.April.2012 v1.0 - Added filters: SHQ2 and SHQ3 (France Telecom) + + ============================================================================ +*/ +#define lensh03 873 + +void fill_slp_3_to_1 (h0, lenh0) + float **h0; + long *lenh0; +{ + static float sh03[lensh03] = { + (float) - 5.702667454304e-005, (float) - 2.290248756652e-004, (float) - 5.695388694927e-004, (float) - 1.047262848994e-003, (float) - 1.506278259322e-003, + (float) - 1.697084386485e-003, (float) - 1.398843870300e-003, (float) - 5.776254455710e-004, (float) 5.267279465880e-004, (float) 1.474227829087e-003, + (float) 1.850941005949e-003, (float) 1.521886181517e-003, (float) 7.374635156026e-004, (float) - 2.831586756965e-006, (float) - 2.610758773407e-004, + (float) 5.790488592536e-005, (float) 6.558699193392e-004, (float) 1.065027553853e-003, (float) 9.887411557505e-004, (float) 5.083645939775e-004, + (float) 2.342940220659e-006, (float) - 1.567062494057e-004, (float) 1.110403908595e-004, (float) 5.457214173255e-004, (float) 7.717764862227e-004, + (float) 6.055726812478e-004, (float) 1.949515317766e-004, (float) - 1.184196188439e-004, (float) - 9.160203082544e-005, (float) 2.209374944482e-004, + (float) 5.265018221270e-004, (float) 5.531560214976e-004, (float) 2.815751711742e-004, (float) - 4.853153913830e-005, (float) - 1.563367357580e-004, + (float) 3.366074541317e-005, (float) 3.328093694602e-004, (float) 4.636714131641e-004, (float) 3.086568259652e-004, (float) 9.521084805123e-006, + (float) - 1.672524549008e-004, (float) - 7.321835254365e-005, (float) 1.915905388598e-004, (float) 3.756857462901e-004, (float) 3.081437126124e-004, + (float) 5.226907920748e-005, (float) - 1.575946050063e-004, (float) - 1.344789464591e-004, (float) 9.034674803378e-005, (float) 3.003518594011e-004, + (float) 2.971198893452e-004, (float) 8.384203623239e-005, (float) - 1.407963804041e-004, (float) - 1.703890216943e-004, (float) 1.652684652722e-005, + (float) 2.386510548738e-004, (float) 2.839782736591e-004, (float) 1.090673723768e-004, (float) - 1.216308514221e-004, (float) - 1.923295141096e-004, + (float) - 3.985072213105e-005, (float) 1.875991204246e-004, (float) 2.717660216481e-004, (float) 1.314707046626e-004, (float) - 1.008243557814e-004, + (float) - 2.054434756406e-004, (float) - 8.467292384865e-005, (float) 1.442573681930e-004, (float) 2.610066066766e-004, (float) 1.524510476976e-004, + (float) - 7.902847673495e-005, (float) - 2.130526218114e-004, (float) - 1.219890713673e-004, (float) 1.063399253112e-004, (float) 2.519859951800e-004, + (float) 1.734491436341e-004, (float) - 5.587231315091e-005, (float) - 2.169349988011e-004, (float) - 1.549061289756e-004, (float) 7.120763788262e-005, + (float) 2.437177281471e-004, (float) 1.948555676425e-004, (float) - 3.086033846812e-005, (float) - 2.175745882557e-004, (float) - 1.849236252476e-004, + (float) 3.722566423543e-005, (float) 2.353340603942e-004, (float) 2.167081052392e-004, (float) - 3.703170533307e-006, (float) - 2.152202989036e-004, + (float) - 2.130638454690e-004, (float) 3.078805881752e-006, (float) 2.259877675272e-004, (float) 2.390210432952e-004, (float) 2.617581267358e-005, + (float) - 2.094639911149e-004, (float) - 2.396408397869e-004, (float) - 3.220609123686e-005, (float) 2.146367670825e-004, (float) 2.613020076192e-004, + (float) 5.899602321765e-005, (float) - 1.997806524280e-004, (float) - 2.644528721997e-004, (float) - 6.908347167316e-005, (float) 2.003994342832e-004, + (float) 2.828118853525e-004, (float) 9.456005724760e-005, (float) - 1.859305896169e-004, (float) - 2.873053305036e-004, (float) - 1.078135783906e-004, + (float) 1.825933898221e-004, (float) 3.028816854225e-004, (float) 1.326435299606e-004, (float) - 1.676779512332e-004, (float) - 3.079331791370e-004, + (float) - 1.485750250569e-004, (float) 1.605453339105e-004, (float) 3.207874253071e-004, (float) 1.729981027969e-004, (float) - 1.446923844597e-004, + (float) - 3.258518962902e-004, (float) - 1.912839973272e-004, (float) 1.337849210997e-004, (float) 3.359204137548e-004, (float) 2.154852410306e-004, + (float) - 1.164355791130e-004, (float) - 3.402946219591e-004, (float) - 2.356749110871e-004, (float) 1.017519030470e-004, (float) 3.473219066124e-004, + (float) 2.595861094810e-004, (float) - 8.247985162440e-005, (float) - 3.501778624332e-004, (float) - 2.808530765872e-004, (float) 6.448731739501e-005, + (float) 3.542546122559e-004, (float) 3.044839629528e-004, (float) - 4.306342775237e-005, (float) - 3.551282513302e-004, (float) - 3.263921987448e-004, + (float) 2.192426783394e-005, (float) 3.561971331453e-004, (float) 3.497859191992e-004, (float) 2.055980934252e-006, (float) - 3.544148970394e-004, + (float) - 3.717977628683e-004, (float) - 2.629987685449e-005, (float) 3.520514596533e-004, (float) 3.944857642507e-004, (float) 5.277571215679e-005, + (float) - 3.471915002737e-004, (float) - 4.160648347652e-004, (float) - 7.993813455368e-005, (float) 3.411114019359e-004, (float) 4.376339448427e-004, + (float) 1.088493550823e-004, (float) - 3.327174320834e-004, (float) - 4.581277303213e-004, (float) - 1.385955596429e-004, (float) 3.227066885945e-004, + (float) 4.780809063323e-004, (float) 1.696775520342e-004, (float) - 3.105144597273e-004, (float) - 4.968659484029e-004, (float) - 2.014702976084e-004, + (float) 2.967304590010e-004, (float) 5.150937489368e-004, (float) 2.347087797104e-004, (float) - 2.804528555952e-004, (float) - 5.317678587328e-004, + (float) - 2.684301130237e-004, (float) 2.625408226728e-004, (float) 5.476982715351e-004, (float) 3.035278106007e-004, (float) - 2.419332992486e-004, + (float) - 5.617064251919e-004, (float) - 3.388485533212e-004, (float) 2.196467033878e-004, (float) 5.746786785084e-004, (float) 3.752457273392e-004, + (float) - 1.947946881500e-004, (float) - 5.857581310721e-004, (float) - 4.120508580248e-004, (float) 1.677356672876e-004, (float) 5.950203471973e-004, + (float) 4.492196431000e-004, (float) - 1.384637472272e-004, (float) - 6.023600081843e-004, (float) - 4.866311063082e-004, (float) 1.070101277961e-004, + (float) 6.077115455789e-004, (float) 5.242229671950e-004, (float) - 7.332517897366e-005, (float) - 6.108956903682e-004, (float) - 5.617572406918e-004, + (float) 3.765710388723e-005, (float) 6.122535665132e-004, (float) 5.998690210736e-004, (float) 1.103337252265e-006, (float) - 6.101918060802e-004, + (float) - 6.366652752751e-004, (float) - 4.101866700778e-005, (float) 6.065187804431e-004, (float) 6.737711020146e-004, (float) 8.349599417419e-005, + (float) - 6.001874205543e-004, (float) - 7.107611600986e-004, (float) - 1.289670732718e-004, (float) 5.898895822538e-004, (float) 7.457161842468e-004, + (float) 1.753449481877e-004, (float) - 5.774443295022e-004, (float) - 7.798678193657e-004, (float) - 2.230334725061e-004, (float) 5.635271134980e-004, + (float) 8.152306244447e-004, (float) 2.755046534225e-004, (float) - 5.434273506344e-004, (float) - 8.464802274973e-004, (float) - 3.277092661666e-004, + (float) 5.210307991128e-004, (float) 8.756596447340e-004, (float) 3.794273420016e-004, (float) - 4.990318212014e-004, (float) - 9.079503131393e-004, + (float) - 4.380386208554e-004, (float) 4.685715007029e-004, (float) 9.341398358924e-004, (float) 4.952457363886e-004, (float) - 4.360095410718e-004, + (float) - 9.581583004572e-004, (float) - 5.526178358650e-004, (float) 4.017025817632e-004, (float) 9.817267986707e-004, (float) 6.126724675261e-004, + (float) - 3.629093431450e-004, (float) - 1.002439646862e-003, (float) - 6.737587650718e-004, (float) 3.204253623397e-004, (float) 1.020517658997e-003, + (float) 7.360180736312e-004, (float) - 2.737981347557e-004, (float) - 1.035166912472e-003, (float) - 7.986608366722e-004, (float) 2.233015838909e-004, + (float) 1.045721090576e-003, (float) 8.598542706791e-004, (float) - 1.720078687206e-004, (float) - 1.056474335818e-003, (float) - 9.249608577418e-004, + (float) 1.139016227189e-004, (float) 1.061470672775e-003, (float) 9.889032323226e-004, (float) - 5.260312145850e-005, (float) - 1.062802973797e-003, + (float) - 1.052661166844e-003, (float) - 1.234469409022e-005, (float) 1.060136819634e-003, (float) 1.115982607845e-003, (float) 8.099003769379e-005, + (float) - 1.052868934904e-003, (float) - 1.177547710041e-003, (float) - 1.512053491539e-004, (float) 1.044016157338e-003, (float) 1.241286624384e-003, + (float) 2.276412600050e-004, (float) - 1.028714494774e-003, (float) - 1.302806041666e-003, (float) - 3.068949503392e-004, (float) 1.009322937005e-003, + (float) 1.363843344369e-003, (float) 3.906609064444e-004, (float) - 9.838656513075e-004, (float) - 1.422262246448e-003, (float) - 4.770635768666e-004, + (float) 9.535551337159e-004, (float) 1.478448816939e-003, (float) 5.657155736003e-004, (float) - 9.194440566142e-004, (float) - 1.534039735215e-003, + (float) - 6.587006775073e-004, (float) 8.793107473467e-004, (float) 1.587111750398e-003, (float) 7.547147875959e-004, (float) - 8.338828124821e-004, + (float) - 1.638222602213e-003, (float) - 8.546083977396e-004, (float) 7.818895385424e-004, (float) 1.686035622285e-003, (float) 9.575865466165e-004, + (float) - 7.231383262379e-004, (float) - 1.729347857177e-003, (float) - 1.061753152135e-003, (float) 6.598691919979e-004, (float) 1.770597985361e-003, + (float) 1.169781516343e-003, (float) - 5.891500710358e-004, (float) - 1.806699639550e-003, (float) - 1.278568313904e-003, (float) 5.141179931545e-004, + (float) 1.841027853974e-003, (float) 1.391905141504e-003, (float) - 4.306947853300e-004, (float) - 1.869713791607e-003, (float) - 1.506708961470e-003, + (float) 3.409327833389e-004, (float) 1.894038136926e-003, (float) 1.624014474020e-003, (float) - 2.437048054541e-004, (float) - 1.912908177017e-003, + (float) - 1.743223810231e-003, (float) 1.387216181787e-004, (float) 1.925117887436e-003, (float) 1.862486593022e-003, (float) - 2.821070804092e-005, + (float) - 1.933229951667e-003, (float) - 1.984800448536e-003, (float) - 9.123378372710e-005, (float) 1.933710705029e-003, (float) 2.106846839834e-003, + (float) 2.165780283200e-004, (float) - 1.929629718754e-003, (float) - 2.232160937187e-003, (float) - 3.519049528335e-004, (float) 1.916818837101e-003, + (float) 2.357203940722e-003, (float) 4.947204738569e-004, (float) - 1.896926099071e-003, (float) - 2.483378267598e-003, (float) - 6.466372123975e-004, + (float) 1.868195138012e-003, (float) 2.609246811353e-003, (float) 8.069238284096e-004, (float) - 1.830682441595e-003, (float) - 2.734527768949e-003, + (float) - 9.751897771009e-004, (float) 1.785017781192e-003, (float) 2.860388753350e-003, (float) 1.153172877730e-003, (float) - 1.729312203396e-003, + (float) - 2.985339528727e-003, (float) - 1.339916394519e-003, (float) 1.664473634983e-003, (float) 3.110932565488e-003, (float) 1.537838751758e-003, + (float) - 1.587754627653e-003, (float) - 3.234954638367e-003, (float) - 1.745673580609e-003, (float) 1.499886644666e-003, (float) 3.358421754204e-003, + (float) 1.965130821805e-003, (float) - 1.398872765578e-003, (float) - 3.479845703961e-003, (float) - 2.195572687404e-003, (float) 1.285003495634e-003, + (float) 3.600016865417e-003, (float) 2.438562967617e-003, (float) - 1.156618036116e-003, (float) - 3.718180542243e-003, (float) - 2.694534774140e-003, + (float) 1.012925180360e-003, (float) 3.834373750933e-003, (float) 2.964679101911e-003, (float) - 8.525485951972e-004, (float) - 3.948403524289e-003, + (float) - 3.250343132486e-003, (float) 6.737384489508e-004, (float) 4.059688224041e-003, (float) 3.552470544664e-003, (float) - 4.754275550708e-004, + (float) - 4.168928142770e-003, (float) - 3.873956808281e-003, (float) 2.542076569209e-004, (float) 4.274495623229e-003, (float) 4.215541860516e-003, + (float) - 8.876791492217e-006, (float) - 4.377372661019e-003, (float) - 4.581049335760e-003, (float) - 2.649760888835e-004, (float) 4.475649547624e-003, + (float) 4.971772999526e-003, (float) 5.691152906036e-004, (float) - 4.570711772495e-003, (float) - 5.392866001693e-003, (float) - 9.088730314323e-004, + (float) 4.661637388475e-003, (float) 5.848570522367e-003, (float) 1.289087294300e-003, (float) - 4.748854210334e-003, (float) - 6.345622677870e-003, + (float) - 1.717082156368e-003, (float) 4.831896281817e-003, (float) 6.891804999608e-003, (float) 2.201630775936e-003, (float) - 4.910578903278e-003, + (float) - 7.497415910832e-003, (float) - 2.754230074063e-003, (float) 4.984610468332e-003, (float) 8.175812718542e-003, (float) 3.389552293110e-003, + (float) - 5.054700764131e-003, (float) - 8.946696508829e-003, (float) - 4.129951171808e-003, (float) 5.118515051062e-003, (float) 9.833011394039e-003, + (float) 5.001471509665e-003, (float) - 5.178437003297e-003, (float) - 1.087335325218e-002, (float) - 6.047856746429e-003, (float) 5.230953032476e-003, + (float) 1.211655268747e-002, (float) 7.325438345332e-003, (float) - 5.280041797037e-003, (float) - 1.364671806495e-002, (float) - 8.931122228028e-003, + (float) 5.322573977944e-003, (float) 1.558985548986e-002, (float) 1.101542440923e-002, (float) - 5.359868891871e-003, (float) - 1.816627590250e-002, + (float) - 1.384581531568e-002, (float) 5.391484192615e-003, (float) 2.178322539469e-002, (float) 1.793508230734e-002, (float) - 5.418411065727e-003, + (float) - 2.729479625998e-002, (float) - 2.441474613854e-002, (float) 5.438809365830e-003, (float) 3.683129238215e-002, (float) 3.635025705283e-002, + (float) - 5.453919890093e-003, (float) - 5.764317282647e-002, (float) - 6.601087176309e-002, (float) 5.463088425909e-003, (float) 1.404772330964e-001, + (float) 2.728880604165e-001, (float) 3.278675322959e-001, (float) 2.728880604165e-001, (float) 1.404772330964e-001, (float) 5.463088425909e-003, + (float) - 6.601087176309e-002, (float) - 5.764317282647e-002, (float) - 5.453919890093e-003, (float) 3.635025705283e-002, (float) 3.683129238215e-002, + (float) 5.438809365830e-003, (float) - 2.441474613854e-002, (float) - 2.729479625998e-002, (float) - 5.418411065727e-003, (float) 1.793508230734e-002, + (float) 2.178322539469e-002, (float) 5.391484192615e-003, (float) - 1.384581531568e-002, (float) - 1.816627590250e-002, (float) - 5.359868891871e-003, + (float) 1.101542440923e-002, (float) 1.558985548986e-002, (float) 5.322573977944e-003, (float) - 8.931122228028e-003, (float) - 1.364671806495e-002, + (float) - 5.280041797037e-003, (float) 7.325438345332e-003, (float) 1.211655268747e-002, (float) 5.230953032476e-003, (float) - 6.047856746429e-003, + (float) - 1.087335325218e-002, (float) - 5.178437003297e-003, (float) 5.001471509665e-003, (float) 9.833011394039e-003, (float) 5.118515051062e-003, + (float) - 4.129951171808e-003, (float) - 8.946696508829e-003, (float) - 5.054700764131e-003, (float) 3.389552293110e-003, (float) 8.175812718542e-003, + (float) 4.984610468332e-003, (float) - 2.754230074063e-003, (float) - 7.497415910832e-003, (float) - 4.910578903278e-003, (float) 2.201630775936e-003, + (float) 6.891804999608e-003, (float) 4.831896281817e-003, (float) - 1.717082156368e-003, (float) - 6.345622677870e-003, (float) - 4.748854210334e-003, + (float) 1.289087294300e-003, (float) 5.848570522367e-003, (float) 4.661637388475e-003, (float) - 9.088730314323e-004, (float) - 5.392866001693e-003, + (float) - 4.570711772495e-003, (float) 5.691152906036e-004, (float) 4.971772999526e-003, (float) 4.475649547624e-003, (float) - 2.649760888835e-004, + (float) - 4.581049335760e-003, (float) - 4.377372661019e-003, (float) - 8.876791492217e-006, (float) 4.215541860516e-003, (float) 4.274495623229e-003, + (float) 2.542076569209e-004, (float) - 3.873956808281e-003, (float) - 4.168928142770e-003, (float) - 4.754275550708e-004, (float) 3.552470544664e-003, + (float) 4.059688224041e-003, (float) 6.737384489508e-004, (float) - 3.250343132486e-003, (float) - 3.948403524289e-003, (float) - 8.525485951972e-004, + (float) 2.964679101911e-003, (float) 3.834373750933e-003, (float) 1.012925180360e-003, (float) - 2.694534774140e-003, (float) - 3.718180542243e-003, + (float) - 1.156618036116e-003, (float) 2.438562967617e-003, (float) 3.600016865417e-003, (float) 1.285003495634e-003, (float) - 2.195572687404e-003, + (float) - 3.479845703961e-003, (float) - 1.398872765578e-003, (float) 1.965130821805e-003, (float) 3.358421754204e-003, (float) 1.499886644666e-003, + (float) - 1.745673580609e-003, (float) - 3.234954638367e-003, (float) - 1.587754627653e-003, (float) 1.537838751758e-003, (float) 3.110932565488e-003, + (float) 1.664473634983e-003, (float) - 1.339916394519e-003, (float) - 2.985339528727e-003, (float) - 1.729312203396e-003, (float) 1.153172877730e-003, + (float) 2.860388753350e-003, (float) 1.785017781192e-003, (float) - 9.751897771009e-004, (float) - 2.734527768949e-003, (float) - 1.830682441595e-003, + (float) 8.069238284096e-004, (float) 2.609246811353e-003, (float) 1.868195138012e-003, (float) - 6.466372123975e-004, (float) - 2.483378267598e-003, + (float) - 1.896926099071e-003, (float) 4.947204738569e-004, (float) 2.357203940722e-003, (float) 1.916818837101e-003, (float) - 3.519049528335e-004, + (float) - 2.232160937187e-003, (float) - 1.929629718754e-003, (float) 2.165780283200e-004, (float) 2.106846839834e-003, (float) 1.933710705029e-003, + (float) - 9.123378372710e-005, (float) - 1.984800448536e-003, (float) - 1.933229951667e-003, (float) - 2.821070804092e-005, (float) 1.862486593022e-003, + (float) 1.925117887436e-003, (float) 1.387216181787e-004, (float) - 1.743223810231e-003, (float) - 1.912908177017e-003, (float) - 2.437048054541e-004, + (float) 1.624014474020e-003, (float) 1.894038136926e-003, (float) 3.409327833389e-004, (float) - 1.506708961470e-003, (float) - 1.869713791607e-003, + (float) - 4.306947853300e-004, (float) 1.391905141504e-003, (float) 1.841027853974e-003, (float) 5.141179931545e-004, (float) - 1.278568313904e-003, + (float) - 1.806699639550e-003, (float) - 5.891500710358e-004, (float) 1.169781516343e-003, (float) 1.770597985361e-003, (float) 6.598691919979e-004, + (float) - 1.061753152135e-003, (float) - 1.729347857177e-003, (float) - 7.231383262379e-004, (float) 9.575865466165e-004, (float) 1.686035622285e-003, + (float) 7.818895385424e-004, (float) - 8.546083977396e-004, (float) - 1.638222602213e-003, (float) - 8.338828124821e-004, (float) 7.547147875959e-004, + (float) 1.587111750398e-003, (float) 8.793107473467e-004, (float) - 6.587006775073e-004, (float) - 1.534039735215e-003, (float) - 9.194440566142e-004, + (float) 5.657155736003e-004, (float) 1.478448816939e-003, (float) 9.535551337159e-004, (float) - 4.770635768666e-004, (float) - 1.422262246448e-003, + (float) - 9.838656513075e-004, (float) 3.906609064444e-004, (float) 1.363843344369e-003, (float) 1.009322937005e-003, (float) - 3.068949503392e-004, + (float) - 1.302806041666e-003, (float) - 1.028714494774e-003, (float) 2.276412600050e-004, (float) 1.241286624384e-003, (float) 1.044016157338e-003, + (float) - 1.512053491539e-004, (float) - 1.177547710041e-003, (float) - 1.052868934904e-003, (float) 8.099003769379e-005, (float) 1.115982607845e-003, + (float) 1.060136819634e-003, (float) - 1.234469409022e-005, (float) - 1.052661166844e-003, (float) - 1.062802973797e-003, (float) - 5.260312145850e-005, + (float) 9.889032323226e-004, (float) 1.061470672775e-003, (float) 1.139016227189e-004, (float) - 9.249608577418e-004, (float) - 1.056474335818e-003, + (float) - 1.720078687206e-004, (float) 8.598542706791e-004, (float) 1.045721090576e-003, (float) 2.233015838909e-004, (float) - 7.986608366722e-004, + (float) - 1.035166912472e-003, (float) - 2.737981347557e-004, (float) 7.360180736312e-004, (float) 1.020517658997e-003, (float) 3.204253623397e-004, + (float) - 6.737587650718e-004, (float) - 1.002439646862e-003, (float) - 3.629093431450e-004, (float) 6.126724675261e-004, (float) 9.817267986707e-004, + (float) 4.017025817632e-004, (float) - 5.526178358650e-004, (float) - 9.581583004572e-004, (float) - 4.360095410718e-004, (float) 4.952457363886e-004, + (float) 9.341398358924e-004, (float) 4.685715007029e-004, (float) - 4.380386208554e-004, (float) - 9.079503131393e-004, (float) - 4.990318212014e-004, + (float) 3.794273420016e-004, (float) 8.756596447340e-004, (float) 5.210307991128e-004, (float) - 3.277092661666e-004, (float) - 8.464802274973e-004, + (float) - 5.434273506344e-004, (float) 2.755046534225e-004, (float) 8.152306244447e-004, (float) 5.635271134980e-004, (float) - 2.230334725061e-004, + (float) - 7.798678193657e-004, (float) - 5.774443295022e-004, (float) 1.753449481877e-004, (float) 7.457161842468e-004, (float) 5.898895822538e-004, + (float) - 1.289670732718e-004, (float) - 7.107611600986e-004, (float) - 6.001874205543e-004, (float) 8.349599417419e-005, (float) 6.737711020146e-004, + (float) 6.065187804431e-004, (float) - 4.101866700778e-005, (float) - 6.366652752751e-004, (float) - 6.101918060802e-004, (float) 1.103337252265e-006, + (float) 5.998690210736e-004, (float) 6.122535665132e-004, (float) 3.765710388723e-005, (float) - 5.617572406918e-004, (float) - 6.108956903682e-004, + (float) - 7.332517897366e-005, (float) 5.242229671950e-004, (float) 6.077115455789e-004, (float) 1.070101277961e-004, (float) - 4.866311063082e-004, + (float) - 6.023600081843e-004, (float) - 1.384637472272e-004, (float) 4.492196431000e-004, (float) 5.950203471973e-004, (float) 1.677356672876e-004, + (float) - 4.120508580248e-004, (float) - 5.857581310721e-004, (float) - 1.947946881500e-004, (float) 3.752457273392e-004, (float) 5.746786785084e-004, + (float) 2.196467033878e-004, (float) - 3.388485533212e-004, (float) - 5.617064251919e-004, (float) - 2.419332992486e-004, (float) 3.035278106007e-004, + (float) 5.476982715351e-004, (float) 2.625408226728e-004, (float) - 2.684301130237e-004, (float) - 5.317678587328e-004, (float) - 2.804528555952e-004, + (float) 2.347087797104e-004, (float) 5.150937489368e-004, (float) 2.967304590010e-004, (float) - 2.014702976084e-004, (float) - 4.968659484029e-004, + (float) - 3.105144597273e-004, (float) 1.696775520342e-004, (float) 4.780809063323e-004, (float) 3.227066885945e-004, (float) - 1.385955596429e-004, + (float) - 4.581277303213e-004, (float) - 3.327174320834e-004, (float) 1.088493550823e-004, (float) 4.376339448427e-004, (float) 3.411114019359e-004, + (float) - 7.993813455368e-005, (float) - 4.160648347652e-004, (float) - 3.471915002737e-004, (float) 5.277571215679e-005, (float) 3.944857642507e-004, + (float) 3.520514596533e-004, (float) - 2.629987685449e-005, (float) - 3.717977628683e-004, (float) - 3.544148970394e-004, (float) 2.055980934252e-006, + (float) 3.497859191992e-004, (float) 3.561971331453e-004, (float) 2.192426783394e-005, (float) - 3.263921987448e-004, (float) - 3.551282513302e-004, + (float) - 4.306342775237e-005, (float) 3.044839629528e-004, (float) 3.542546122559e-004, (float) 6.448731739501e-005, (float) - 2.808530765872e-004, + (float) - 3.501778624332e-004, (float) - 8.247985162440e-005, (float) 2.595861094810e-004, (float) 3.473219066124e-004, (float) 1.017519030470e-004, + (float) - 2.356749110871e-004, (float) - 3.402946219591e-004, (float) - 1.164355791130e-004, (float) 2.154852410306e-004, (float) 3.359204137548e-004, + (float) 1.337849210997e-004, (float) - 1.912839973272e-004, (float) - 3.258518962902e-004, (float) - 1.446923844597e-004, (float) 1.729981027969e-004, + (float) 3.207874253071e-004, (float) 1.605453339105e-004, (float) - 1.485750250569e-004, (float) - 3.079331791370e-004, (float) - 1.676779512332e-004, + (float) 1.326435299606e-004, (float) 3.028816854225e-004, (float) 1.825933898221e-004, (float) - 1.078135783906e-004, (float) - 2.873053305036e-004, + (float) - 1.859305896169e-004, (float) 9.456005724760e-005, (float) 2.828118853525e-004, (float) 2.003994342832e-004, (float) - 6.908347167316e-005, + (float) - 2.644528721997e-004, (float) - 1.997806524280e-004, (float) 5.899602321765e-005, (float) 2.613020076192e-004, (float) 2.146367670825e-004, + (float) - 3.220609123686e-005, (float) - 2.396408397869e-004, (float) - 2.094639911149e-004, (float) 2.617581267358e-005, (float) 2.390210432952e-004, + (float) 2.259877675272e-004, (float) 3.078805881752e-006, (float) - 2.130638454690e-004, (float) - 2.152202989036e-004, (float) - 3.703170533307e-006, + (float) 2.167081052392e-004, (float) 2.353340603942e-004, (float) 3.722566423543e-005, (float) - 1.849236252476e-004, (float) - 2.175745882557e-004, + (float) - 3.086033846812e-005, (float) 1.948555676425e-004, (float) 2.437177281471e-004, (float) 7.120763788262e-005, (float) - 1.549061289756e-004, + (float) - 2.169349988011e-004, (float) - 5.587231315091e-005, (float) 1.734491436341e-004, (float) 2.519859951800e-004, (float) 1.063399253112e-004, + (float) - 1.219890713673e-004, (float) - 2.130526218114e-004, (float) - 7.902847673495e-005, (float) 1.524510476976e-004, (float) 2.610066066766e-004, + (float) 1.442573681930e-004, (float) - 8.467292384865e-005, (float) - 2.054434756406e-004, (float) - 1.008243557814e-004, (float) 1.314707046626e-004, + (float) 2.717660216481e-004, (float) 1.875991204246e-004, (float) - 3.985072213105e-005, (float) - 1.923295141096e-004, (float) - 1.216308514221e-004, + (float) 1.090673723768e-004, (float) 2.839782736591e-004, (float) 2.386510548738e-004, (float) 1.652684652722e-005, (float) - 1.703890216943e-004, + (float) - 1.407963804041e-004, (float) 8.384203623239e-005, (float) 2.971198893452e-004, (float) 3.003518594011e-004, (float) 9.034674803378e-005, + (float) - 1.344789464591e-004, (float) - 1.575946050063e-004, (float) 5.226907920748e-005, (float) 3.081437126124e-004, (float) 3.756857462901e-004, + (float) 1.915905388598e-004, (float) - 7.321835254365e-005, (float) - 1.672524549008e-004, (float) 9.521084805123e-006, (float) 3.086568259652e-004, + (float) 4.636714131641e-004, (float) 3.328093694602e-004, (float) 3.366074541317e-005, (float) - 1.563367357580e-004, (float) - 4.853153913830e-005, + (float) 2.815751711742e-004, (float) 5.531560214976e-004, (float) 5.265018221270e-004, (float) 2.209374944482e-004, (float) - 9.160203082544e-005, + (float) - 1.184196188439e-004, (float) 1.949515317766e-004, (float) 6.055726812478e-004, (float) 7.717764862227e-004, (float) 5.457214173255e-004, + (float) 1.110403908595e-004, (float) - 1.567062494057e-004, (float) 2.342940220659e-006, (float) 5.083645939775e-004, (float) 9.887411557505e-004, + (float) 1.065027553853e-003, (float) 6.558699193392e-004, (float) 5.790488592536e-005, (float) - 2.610758773407e-004, (float) - 2.831586756965e-006, + (float) 7.374635156026e-004, (float) 1.521886181517e-003, (float) 1.850941005949e-003, (float) 1.474227829087e-003, (float) 5.267279465880e-004, + (float) - 5.776254455710e-004, (float) - 1.398843870300e-003, (float) - 1.697084386485e-003, (float) - 1.506278259322e-003, (float) - 1.047262848994e-003, + (float) - 5.695388694927e-004, (float) - 2.290248756652e-004, (float) - 5.702667454304e-005 + }; + + *lenh0 = lensh03; /* store 'number of coefficients' */ + *h0 = sh03; /* store pointer to h02[]-array */ +} + +#undef lensh03 +/* ........................ End of fill_lp_3_to_1() ........................ */ + + + /* ************************* END OF FIR-FLAT.C ************************** */ diff --git a/src/fir/fir-wb.c b/src/fir/fir-wb.c index 15bf4727..5b633b3b 100644 --- a/src/fir/fir-wb.c +++ b/src/fir/fir-wb.c @@ -77,6 +77,8 @@ ORIGINAL BY: Cyril Guillaume & Stephane Ragot 11.May.2007 v2.3 Added 20-20000 Hz bandpass filter Ingemar Johansson & Jonas Svedberg, Ericsson + 05.April.2012 v2.3 - Added filters: HP50_32KHZ, HP50_48KHZ (France Telecom) + ============================================================================= */ @@ -1828,3 +1830,737 @@ SCD_FIR *bp20k_48khz_init () { /* .................... End of bp20k_48khz_init() .................... */ /* ************************** END OF FIR-WB.C *************************** */ + + + +/* + ============================================================================ + + void fill_hp50_32khz (float **h0, long *lenh0); + ~~~~~~~~~~~~~~~~~~~~~ + + Description: + ~~~~~~~~~~~~ + Fill filter coefficients for 50 Hz (3dB point) highpass filtering for samples at 32 kHz. + firpm(1118,[0 3/16000 66/16000 1],[0 0 1 1 ],[40 1]) + Same lengt, HP response and passband oscillation (+-0.15dB) as the 14KBP filter + + Parameters: + ~~~~~~~~~~~ + h0: (Out) pointer to array with FIR coefficients + lenh0: (Out) pointer to number of coefficients + + Return value: + ~~~~~~~~~~~~~ + None. + + History: + ~~~~~~~~ + 05.April.2012 v1.0 - Added filters: HP50_32KHZ, HP50_48KHZ (France Telecom) + + ============================================================================ +*/ +#undef HP50_32K_LEN +#define HP50_32K_LEN 1119 +void fill_hp50_32khz (float **h0, long *lenh0) { + static float hp50_32khz_coeff[HP50_32K_LEN] = { + (F) 9.2342753e-003, (F) 1.5551665e-004, (F) 1.5663328e-004, (F) 1.5798547e-004, (F) 1.5903747e-004, + (F) 1.6033147e-004, (F) 1.6129533e-004, (F) 1.6253497e-004, (F) 1.6343643e-004, (F) 1.6461419e-004, + (F) 1.6544194e-004, (F) 1.6657230e-004, (F) 1.6734333e-004, (F) 1.6843147e-004, (F) 1.6914017e-004, + (F) 1.7020317e-004, (F) 1.7087787e-004, (F) 1.7195115e-004, (F) 1.7260586e-004, (F) 1.7371570e-004, + (F) 1.7438288e-004, (F) 1.7560111e-004, (F) 1.7633494e-004, (F) 1.7773870e-004, (F) 1.7859148e-004, + (F) 1.8031784e-004, (F) 1.8138467e-004, (F) 1.8364291e-004, (F) 1.8500691e-004, (F) 1.8826921e-004, + (F) 1.9002553e-004, (F) 1.9648117e-004, (F) 1.7591939e-004, (F) 1.8640971e-004, (F) 1.8950640e-004, + (F) 1.8933708e-004, (F) 1.9094255e-004, (F) 1.9111524e-004, (F) 1.9238679e-004, (F) 1.9267245e-004, + (F) 1.9374881e-004, (F) 1.9407034e-004, (F) 1.9502938e-004, (F) 1.9535326e-004, (F) 1.9621245e-004, + (F) 1.9652536e-004, (F) 1.9732846e-004, (F) 1.9764305e-004, (F) 1.9840997e-004, (F) 1.9872274e-004, + (F) 1.9948456e-004, (F) 1.9982454e-004, (F) 2.0062041e-004, (F) 2.0098888e-004, (F) 2.0182655e-004, + (F) 2.0221283e-004, (F) 2.0309827e-004, (F) 2.0343574e-004, (F) 2.0429009e-004, (F) 2.0439317e-004, + (F) 2.0505697e-004, (F) 2.0443830e-004, (F) 2.0447446e-004, (F) 2.0117747e-004, (F) 2.0668075e-004, + (F) 2.0606828e-004, (F) 2.0522994e-004, (F) 2.0580818e-004, (F) 2.0551705e-004, (F) 2.0583582e-004, + (F) 2.0559447e-004, (F) 2.0575204e-004, (F) 2.0551182e-004, (F) 2.0556260e-004, (F) 2.0528478e-004, + (F) 2.0524898e-004, (F) 2.0494755e-004, (F) 2.0486118e-004, (F) 2.0453189e-004, (F) 2.0439794e-004, + (F) 2.0404606e-004, (F) 2.0389248e-004, (F) 2.0352446e-004, (F) 2.0334171e-004, (F) 2.0292316e-004, + (F) 2.0268931e-004, (F) 2.0218689e-004, (F) 2.0186213e-004, (F) 2.0119510e-004, (F) 2.0072227e-004, + (F) 1.9983291e-004, (F) 1.9922601e-004, (F) 1.9811086e-004, (F) 1.9764812e-004, (F) 1.9670052e-004, + (F) 1.9821206e-004, (F) 1.9574339e-004, (F) 1.9460314e-004, (F) 1.9434052e-004, (F) 1.9312581e-004, + (F) 1.9244888e-004, (F) 1.9126723e-004, (F) 1.9044159e-004, (F) 1.8925727e-004, (F) 1.8831959e-004, + (F) 1.8709650e-004, (F) 1.8608695e-004, (F) 1.8483886e-004, (F) 1.8376430e-004, (F) 1.8246886e-004, + (F) 1.8133430e-004, (F) 1.8000008e-004, (F) 1.7881024e-004, (F) 1.7740887e-004, (F) 1.7613174e-004, + (F) 1.7463511e-004, (F) 1.7326225e-004, (F) 1.7165185e-004, (F) 1.7016635e-004, (F) 1.6842980e-004, + (F) 1.6686975e-004, (F) 1.6506208e-004, (F) 1.6351953e-004, (F) 1.6172121e-004, (F) 1.6035465e-004, + (F) 1.5856474e-004, (F) 1.5725670e-004, (F) 1.5400320e-004, (F) 1.5251907e-004, (F) 1.5099189e-004, + (F) 1.4860587e-004, (F) 1.4676216e-004, (F) 1.4449103e-004, (F) 1.4250292e-004, (F) 1.4021375e-004, + (F) 1.3809993e-004, (F) 1.3577053e-004, (F) 1.3357737e-004, (F) 1.3119183e-004, (F) 1.2890182e-004, + (F) 1.2644454e-004, (F) 1.2407353e-004, (F) 1.2154154e-004, (F) 1.1906901e-004, (F) 1.1642978e-004, + (F) 1.1384795e-004, (F) 1.1110845e-004, (F) 1.0843159e-004, (F) 1.0559403e-004, (F) 1.0283674e-004, + (F) 9.9931180e-005, (F) 9.7143301e-005, (F) 9.4193407e-005, (F) 9.1380999e-005, (F) 8.8349417e-005, + (F) 8.5454155e-005, (F) 8.2145791e-005, (F) 7.8972973e-005, (F) 7.5176800e-005, (F) 7.2644410e-005, + (F) 6.9400379e-005, (F) 6.5655639e-005, (F) 6.2520637e-005, (F) 5.8926380e-005, (F) 5.5592602e-005, + (F) 5.1960346e-005, (F) 4.8492626e-005, (F) 4.4819152e-005, (F) 4.1246975e-005, (F) 3.7486700e-005, + (F) 3.3802916e-005, (F) 2.9964364e-005, (F) 2.6183621e-005, (F) 2.2246019e-005, (F) 1.8349478e-005, + (F) 1.4312671e-005, (F) 1.0327219e-005, (F) 6.2116278e-006, (F) 2.1468476e-006, (F) - 2.0462664e-006, + (F) - 6.1754788e-006, (F) - 1.0433728e-005, (F) - 1.4631174e-005, (F) - 1.8994868e-005, (F) - 2.3307139e-005, + (F) - 2.7830625e-005, (F) - 3.2298035e-005, (F) - 3.7020060e-005, (F) - 4.1543856e-005, (F) - 4.6245143e-005, + (F) - 5.0403230e-005, (F) - 5.5414477e-005, (F) - 6.0403894e-005, (F) - 6.4897114e-005, (F) - 6.9912852e-005, + (F) - 7.4678495e-005, (F) - 7.9718290e-005, (F) - 8.4612320e-005, (F) - 8.9698178e-005, (F) - 9.4721351e-005, + (F) - 9.9898650e-005, (F) - 1.0502188e-004, (F) - 1.1027447e-004, (F) - 1.1550253e-004, (F) - 1.2085379e-004, + (F) - 1.2617687e-004, (F) - 1.3159904e-004, (F) - 1.3699375e-004, (F) - 1.4249159e-004, (F) - 1.4796949e-004, + (F) - 1.5355011e-004, (F) - 1.5911076e-004, (F) - 1.6479026e-004, (F) - 1.7046432e-004, (F) - 1.7627586e-004, + (F) - 1.8206851e-004, (F) - 1.8799894e-004, (F) - 1.9387145e-004, (F) - 1.9986051e-004, (F) - 2.0570182e-004, + (F) - 2.1170656e-004, (F) - 2.1762031e-004, (F) - 2.2408600e-004, (F) - 2.3020843e-004, (F) - 2.3612941e-004, + (F) - 2.4259571e-004, (F) - 2.4875579e-004, (F) - 2.5518652e-004, (F) - 2.6147595e-004, (F) - 2.6796135e-004, + (F) - 2.7438622e-004, (F) - 2.8093774e-004, (F) - 2.8744468e-004, (F) - 2.9407149e-004, (F) - 3.0067960e-004, + (F) - 3.0738263e-004, (F) - 3.1405879e-004, (F) - 3.2082305e-004, (F) - 3.2758021e-004, (F) - 3.3443304e-004, + (F) - 3.4128144e-004, (F) - 3.4822305e-004, (F) - 3.5516575e-004, (F) - 3.6221220e-004, (F) - 3.6925666e-004, + (F) - 3.7639420e-004, (F) - 3.8350434e-004, (F) - 3.9070041e-004, (F) - 3.9784824e-004, (F) - 4.0508935e-004, + (F) - 4.1228858e-004, (F) - 4.1967673e-004, (F) - 4.2705956e-004, (F) - 4.3464576e-004, (F) - 4.4189166e-004, + (F) - 4.4925726e-004, (F) - 4.5702829e-004, (F) - 4.6443246e-004, (F) - 4.7212529e-004, (F) - 4.7968369e-004, + (F) - 4.8742511e-004, (F) - 4.9509526e-004, (F) - 5.0286502e-004, (F) - 5.1061081e-004, (F) - 5.1845390e-004, + (F) - 5.2627883e-004, (F) - 5.3417018e-004, (F) - 5.4205412e-004, (F) - 5.5001749e-004, (F) - 5.5799069e-004, + (F) - 5.6603542e-004, (F) - 5.7408320e-004, (F) - 5.8219998e-004, (F) - 5.9032342e-004, (F) - 5.9851277e-004, + (F) - 6.0669333e-004, (F) - 6.1492812e-004, (F) - 6.2314811e-004, (F) - 6.3143448e-004, (F) - 6.3971196e-004, + (F) - 6.4808079e-004, (F) - 6.5645951e-004, (F) - 6.6495597e-004, (F) - 6.7340132e-004, (F) - 6.8188705e-004, + (F) - 6.9023175e-004, (F) - 6.9882694e-004, (F) - 7.0758003e-004, (F) - 7.1597837e-004, (F) - 7.2471488e-004, + (F) - 7.3329577e-004, (F) - 7.4204112e-004, (F) - 7.5069691e-004, (F) - 7.5944753e-004, (F) - 7.6818552e-004, + (F) - 7.7699171e-004, (F) - 7.8577593e-004, (F) - 7.9461592e-004, (F) - 8.0346439e-004, (F) - 8.1237496e-004, + (F) - 8.2128725e-004, (F) - 8.3024166e-004, (F) - 8.3919545e-004, (F) - 8.4819452e-004, (F) - 8.5719302e-004, + (F) - 8.6622788e-004, (F) - 8.7525413e-004, (F) - 8.8432225e-004, (F) - 8.9339327e-004, (F) - 9.0252009e-004, + (F) - 9.1165217e-004, (F) - 9.2084585e-004, (F) - 9.3003378e-004, (F) - 9.3925877e-004, (F) - 9.4842600e-004, + (F) - 9.5763434e-004, (F) - 9.6685278e-004, (F) - 9.7624213e-004, (F) - 9.8558142e-004, (F) - 9.9469419e-004, + (F) - 1.0041623e-003, (F) - 1.0134207e-003, (F) - 1.0228270e-003, (F) - 1.0321370e-003, (F) - 1.0415421e-003, + (F) - 1.0509287e-003, (F) - 1.0603454e-003, (F) - 1.0697472e-003, (F) - 1.0791931e-003, (F) - 1.0886461e-003, + (F) - 1.0981218e-003, (F) - 1.1075850e-003, (F) - 1.1170647e-003, (F) - 1.1265441e-003, (F) - 1.1360444e-003, + (F) - 1.1455390e-003, (F) - 1.1550493e-003, (F) - 1.1645586e-003, (F) - 1.1740960e-003, (F) - 1.1836376e-003, + (F) - 1.1932042e-003, (F) - 1.2027641e-003, (F) - 1.2123405e-003, (F) - 1.2218939e-003, (F) - 1.2314513e-003, + (F) - 1.2409915e-003, (F) - 1.2505846e-003, (F) - 1.2602023e-003, (F) - 1.2698414e-003, (F) - 1.2793765e-003, + (F) - 1.2888500e-003, (F) - 1.2986084e-003, (F) - 1.3080936e-003, (F) - 1.3177360e-003, (F) - 1.3272775e-003, + (F) - 1.3369056e-003, (F) - 1.3464878e-003, (F) - 1.3560717e-003, (F) - 1.3656533e-003, (F) - 1.3752525e-003, + (F) - 1.3848374e-003, (F) - 1.3944071e-003, (F) - 1.4039627e-003, (F) - 1.4135209e-003, (F) - 1.4230765e-003, + (F) - 1.4326278e-003, (F) - 1.4421680e-003, (F) - 1.4517067e-003, (F) - 1.4612428e-003, (F) - 1.4707800e-003, + (F) - 1.4803050e-003, (F) - 1.4898201e-003, (F) - 1.4993153e-003, (F) - 1.5087988e-003, (F) - 1.5182618e-003, + (F) - 1.5277224e-003, (F) - 1.5371854e-003, (F) - 1.5466604e-003, (F) - 1.5561103e-003, (F) - 1.5655040e-003, + (F) - 1.5748552e-003, (F) - 1.5842315e-003, (F) - 1.5937465e-003, (F) - 1.6029720e-003, (F) - 1.6123861e-003, + (F) - 1.6216776e-003, (F) - 1.6310319e-003, (F) - 1.6403094e-003, (F) - 1.6495786e-003, (F) - 1.6588508e-003, + (F) - 1.6680951e-003, (F) - 1.6773067e-003, (F) - 1.6864862e-003, (F) - 1.6956610e-003, (F) - 1.7048193e-003, + (F) - 1.7139612e-003, (F) - 1.7230717e-003, (F) - 1.7321649e-003, (F) - 1.7412365e-003, (F) - 1.7502915e-003, + (F) - 1.7593161e-003, (F) - 1.7683126e-003, (F) - 1.7772766e-003, (F) - 1.7862164e-003, (F) - 1.7951289e-003, + (F) - 1.8040225e-003, (F) - 1.8128956e-003, (F) - 1.8217521e-003, (F) - 1.8305658e-003, (F) - 1.8393318e-003, + (F) - 1.8480455e-003, (F) - 1.8567739e-003, (F) - 1.8654993e-003, (F) - 1.8742251e-003, (F) - 1.8827205e-003, + (F) - 1.8914187e-003, (F) - 1.8999453e-003, (F) - 1.9085111e-003, (F) - 1.9169830e-003, (F) - 1.9254474e-003, + (F) - 1.9339013e-003, (F) - 1.9422783e-003, (F) - 1.9506295e-003, (F) - 1.9589431e-003, (F) - 1.9672506e-003, + (F) - 1.9755049e-003, (F) - 1.9837264e-003, (F) - 1.9918954e-003, (F) - 2.0000433e-003, (F) - 2.0081449e-003, + (F) - 2.0162141e-003, (F) - 2.0242280e-003, (F) - 2.0322084e-003, (F) - 2.0401417e-003, (F) - 2.0480469e-003, + (F) - 2.0559056e-003, (F) - 2.0637353e-003, (F) - 2.0715137e-003, (F) - 2.0792531e-003, (F) - 2.0869231e-003, + (F) - 2.0945604e-003, (F) - 2.1021565e-003, (F) - 2.1097586e-003, (F) - 2.1172812e-003, (F) - 2.1247500e-003, + (F) - 2.1320815e-003, (F) - 2.1395760e-003, (F) - 2.1468415e-003, (F) - 2.1541473e-003, (F) - 2.1613533e-003, + (F) - 2.1685494e-003, (F) - 2.1757036e-003, (F) - 2.1827534e-003, (F) - 2.1898035e-003, (F) - 2.1967961e-003, + (F) - 2.2037585e-003, (F) - 2.2106328e-003, (F) - 2.2174712e-003, (F) - 2.2242476e-003, (F) - 2.2309941e-003, + (F) - 2.2376696e-003, (F) - 2.2443002e-003, (F) - 2.2508627e-003, (F) - 2.2573883e-003, (F) - 2.2638523e-003, + (F) - 2.2702762e-003, (F) - 2.2766333e-003, (F) - 2.2829462e-003, (F) - 2.2891862e-003, (F) - 2.2953787e-003, + (F) - 2.3015001e-003, (F) - 2.3075962e-003, (F) - 2.3136302e-003, (F) - 2.3196255e-003, (F) - 2.3255025e-003, + (F) - 2.3313432e-003, (F) - 2.3371056e-003, (F) - 2.3429385e-003, (F) - 2.3485211e-003, (F) - 2.3541678e-003, + (F) - 2.3597041e-003, (F) - 2.3652138e-003, (F) - 2.3706526e-003, (F) - 2.3759854e-003, (F) - 2.3813401e-003, + (F) - 2.3865859e-003, (F) - 2.3917824e-003, (F) - 2.3968782e-003, (F) - 2.4019512e-003, (F) - 2.4069457e-003, + (F) - 2.4118957e-003, (F) - 2.4167526e-003, (F) - 2.4215631e-003, (F) - 2.4262966e-003, (F) - 2.4309880e-003, + (F) - 2.4355990e-003, (F) - 2.4401590e-003, (F) - 2.4446355e-003, (F) - 2.4490606e-003, (F) - 2.4534014e-003, + (F) - 2.4576959e-003, (F) - 2.4619128e-003, (F) - 2.4660912e-003, (F) - 2.4701730e-003, (F) - 2.4741950e-003, + (F) - 2.4781081e-003, (F) - 2.4820112e-003, (F) - 2.4858283e-003, (F) - 2.4896281e-003, (F) - 2.4932110e-003, + (F) - 2.4968799e-003, (F) - 2.5004058e-003, (F) - 2.5038901e-003, (F) - 2.5072888e-003, (F) - 2.5105972e-003, + (F) - 2.5139194e-003, (F) - 2.5170758e-003, (F) - 2.5201976e-003, (F) - 2.5232275e-003, (F) - 2.5262357e-003, + (F) - 2.5291376e-003, (F) - 2.5319814e-003, (F) - 2.5347278e-003, (F) - 2.5374318e-003, (F) - 2.5400513e-003, + (F) - 2.5426174e-003, (F) - 2.5450901e-003, (F) - 2.5475049e-003, (F) - 2.5498302e-003, (F) - 2.5521002e-003, + (F) - 2.5542824e-003, (F) - 2.5564137e-003, (F) - 2.5584559e-003, (F) - 2.5604403e-003, (F) - 2.5623171e-003, + (F) - 2.5641411e-003, (F) - 2.5658766e-003, (F) - 2.5675914e-003, (F) - 2.5691867e-003, (F) - 2.5707272e-003, + (F) - 2.5721182e-003, (F) - 2.5735785e-003, (F) - 2.5748584e-003, (F) - 2.5760978e-003, (F) - 2.5772547e-003, + (F) - 2.5783297e-003, (F) - 2.5793907e-003, (F) - 2.5802554e-003, (F) - 2.5811389e-003, (F) - 2.5819204e-003, + (F) - 2.5826616e-003, (F) - 2.5832717e-003, (F) - 2.5838350e-003, (F) - 2.5843078e-003, (F) - 2.5847406e-003, + (F) - 2.5850741e-003, (F) - 2.5853470e-003, (F) - 2.5855214e-003, (F) - 2.5856405e-003, (F) 9.9741433e-001, + (F) - 2.5856405e-003, (F) - 2.5855214e-003, (F) - 2.5853470e-003, (F) - 2.5850741e-003, (F) - 2.5847406e-003, + (F) - 2.5843078e-003, (F) - 2.5838350e-003, (F) - 2.5832717e-003, (F) - 2.5826616e-003, (F) - 2.5819204e-003, + (F) - 2.5811389e-003, (F) - 2.5802554e-003, (F) - 2.5793907e-003, (F) - 2.5783297e-003, (F) - 2.5772547e-003, + (F) - 2.5760978e-003, (F) - 2.5748584e-003, (F) - 2.5735785e-003, (F) - 2.5721182e-003, (F) - 2.5707272e-003, + (F) - 2.5691867e-003, (F) - 2.5675914e-003, (F) - 2.5658766e-003, (F) - 2.5641411e-003, (F) - 2.5623171e-003, + (F) - 2.5604403e-003, (F) - 2.5584559e-003, (F) - 2.5564137e-003, (F) - 2.5542824e-003, (F) - 2.5521002e-003, + (F) - 2.5498302e-003, (F) - 2.5475049e-003, (F) - 2.5450901e-003, (F) - 2.5426174e-003, (F) - 2.5400513e-003, + (F) - 2.5374318e-003, (F) - 2.5347278e-003, (F) - 2.5319814e-003, (F) - 2.5291376e-003, (F) - 2.5262357e-003, + (F) - 2.5232275e-003, (F) - 2.5201976e-003, (F) - 2.5170758e-003, (F) - 2.5139194e-003, (F) - 2.5105972e-003, + (F) - 2.5072888e-003, (F) - 2.5038901e-003, (F) - 2.5004058e-003, (F) - 2.4968799e-003, (F) - 2.4932110e-003, + (F) - 2.4896281e-003, (F) - 2.4858283e-003, (F) - 2.4820112e-003, (F) - 2.4781081e-003, (F) - 2.4741950e-003, + (F) - 2.4701730e-003, (F) - 2.4660912e-003, (F) - 2.4619128e-003, (F) - 2.4576959e-003, (F) - 2.4534014e-003, + (F) - 2.4490606e-003, (F) - 2.4446355e-003, (F) - 2.4401590e-003, (F) - 2.4355990e-003, (F) - 2.4309880e-003, + (F) - 2.4262966e-003, (F) - 2.4215631e-003, (F) - 2.4167526e-003, (F) - 2.4118957e-003, (F) - 2.4069457e-003, + (F) - 2.4019512e-003, (F) - 2.3968782e-003, (F) - 2.3917824e-003, (F) - 2.3865859e-003, (F) - 2.3813401e-003, + (F) - 2.3759854e-003, (F) - 2.3706526e-003, (F) - 2.3652138e-003, (F) - 2.3597041e-003, (F) - 2.3541678e-003, + (F) - 2.3485211e-003, (F) - 2.3429385e-003, (F) - 2.3371056e-003, (F) - 2.3313432e-003, (F) - 2.3255025e-003, + (F) - 2.3196255e-003, (F) - 2.3136302e-003, (F) - 2.3075962e-003, (F) - 2.3015001e-003, (F) - 2.2953787e-003, + (F) - 2.2891862e-003, (F) - 2.2829462e-003, (F) - 2.2766333e-003, (F) - 2.2702762e-003, (F) - 2.2638523e-003, + (F) - 2.2573883e-003, (F) - 2.2508627e-003, (F) - 2.2443002e-003, (F) - 2.2376696e-003, (F) - 2.2309941e-003, + (F) - 2.2242476e-003, (F) - 2.2174712e-003, (F) - 2.2106328e-003, (F) - 2.2037585e-003, (F) - 2.1967961e-003, + (F) - 2.1898035e-003, (F) - 2.1827534e-003, (F) - 2.1757036e-003, (F) - 2.1685494e-003, (F) - 2.1613533e-003, + (F) - 2.1541473e-003, (F) - 2.1468415e-003, (F) - 2.1395760e-003, (F) - 2.1320815e-003, (F) - 2.1247500e-003, + (F) - 2.1172812e-003, (F) - 2.1097586e-003, (F) - 2.1021565e-003, (F) - 2.0945604e-003, (F) - 2.0869231e-003, + (F) - 2.0792531e-003, (F) - 2.0715137e-003, (F) - 2.0637353e-003, (F) - 2.0559056e-003, (F) - 2.0480469e-003, + (F) - 2.0401417e-003, (F) - 2.0322084e-003, (F) - 2.0242280e-003, (F) - 2.0162141e-003, (F) - 2.0081449e-003, + (F) - 2.0000433e-003, (F) - 1.9918954e-003, (F) - 1.9837264e-003, (F) - 1.9755049e-003, (F) - 1.9672506e-003, + (F) - 1.9589431e-003, (F) - 1.9506295e-003, (F) - 1.9422783e-003, (F) - 1.9339013e-003, (F) - 1.9254474e-003, + (F) - 1.9169830e-003, (F) - 1.9085111e-003, (F) - 1.8999453e-003, (F) - 1.8914187e-003, (F) - 1.8827205e-003, + (F) - 1.8742251e-003, (F) - 1.8654993e-003, (F) - 1.8567739e-003, (F) - 1.8480455e-003, (F) - 1.8393318e-003, + (F) - 1.8305658e-003, (F) - 1.8217521e-003, (F) - 1.8128956e-003, (F) - 1.8040225e-003, (F) - 1.7951289e-003, + (F) - 1.7862164e-003, (F) - 1.7772766e-003, (F) - 1.7683126e-003, (F) - 1.7593161e-003, (F) - 1.7502915e-003, + (F) - 1.7412365e-003, (F) - 1.7321649e-003, (F) - 1.7230717e-003, (F) - 1.7139612e-003, (F) - 1.7048193e-003, + (F) - 1.6956610e-003, (F) - 1.6864862e-003, (F) - 1.6773067e-003, (F) - 1.6680951e-003, (F) - 1.6588508e-003, + (F) - 1.6495786e-003, (F) - 1.6403094e-003, (F) - 1.6310319e-003, (F) - 1.6216776e-003, (F) - 1.6123861e-003, + (F) - 1.6029720e-003, (F) - 1.5937465e-003, (F) - 1.5842315e-003, (F) - 1.5748552e-003, (F) - 1.5655040e-003, + (F) - 1.5561103e-003, (F) - 1.5466604e-003, (F) - 1.5371854e-003, (F) - 1.5277224e-003, (F) - 1.5182618e-003, + (F) - 1.5087988e-003, (F) - 1.4993153e-003, (F) - 1.4898201e-003, (F) - 1.4803050e-003, (F) - 1.4707800e-003, + (F) - 1.4612428e-003, (F) - 1.4517067e-003, (F) - 1.4421680e-003, (F) - 1.4326278e-003, (F) - 1.4230765e-003, + (F) - 1.4135209e-003, (F) - 1.4039627e-003, (F) - 1.3944071e-003, (F) - 1.3848374e-003, (F) - 1.3752525e-003, + (F) - 1.3656533e-003, (F) - 1.3560717e-003, (F) - 1.3464878e-003, (F) - 1.3369056e-003, (F) - 1.3272775e-003, + (F) - 1.3177360e-003, (F) - 1.3080936e-003, (F) - 1.2986084e-003, (F) - 1.2888500e-003, (F) - 1.2793765e-003, + (F) - 1.2698414e-003, (F) - 1.2602023e-003, (F) - 1.2505846e-003, (F) - 1.2409915e-003, (F) - 1.2314513e-003, + (F) - 1.2218939e-003, (F) - 1.2123405e-003, (F) - 1.2027641e-003, (F) - 1.1932042e-003, (F) - 1.1836376e-003, + (F) - 1.1740960e-003, (F) - 1.1645586e-003, (F) - 1.1550493e-003, (F) - 1.1455390e-003, (F) - 1.1360444e-003, + (F) - 1.1265441e-003, (F) - 1.1170647e-003, (F) - 1.1075850e-003, (F) - 1.0981218e-003, (F) - 1.0886461e-003, + (F) - 1.0791931e-003, (F) - 1.0697472e-003, (F) - 1.0603454e-003, (F) - 1.0509287e-003, (F) - 1.0415421e-003, + (F) - 1.0321370e-003, (F) - 1.0228270e-003, (F) - 1.0134207e-003, (F) - 1.0041623e-003, (F) - 9.9469419e-004, + (F) - 9.8558142e-004, (F) - 9.7624213e-004, (F) - 9.6685278e-004, (F) - 9.5763434e-004, (F) - 9.4842600e-004, + (F) - 9.3925877e-004, (F) - 9.3003378e-004, (F) - 9.2084585e-004, (F) - 9.1165217e-004, (F) - 9.0252009e-004, + (F) - 8.9339327e-004, (F) - 8.8432225e-004, (F) - 8.7525413e-004, (F) - 8.6622788e-004, (F) - 8.5719302e-004, + (F) - 8.4819452e-004, (F) - 8.3919545e-004, (F) - 8.3024166e-004, (F) - 8.2128725e-004, (F) - 8.1237496e-004, + (F) - 8.0346439e-004, (F) - 7.9461592e-004, (F) - 7.8577593e-004, (F) - 7.7699171e-004, (F) - 7.6818552e-004, + (F) - 7.5944753e-004, (F) - 7.5069691e-004, (F) - 7.4204112e-004, (F) - 7.3329577e-004, (F) - 7.2471488e-004, + (F) - 7.1597837e-004, (F) - 7.0758003e-004, (F) - 6.9882694e-004, (F) - 6.9023175e-004, (F) - 6.8188705e-004, + (F) - 6.7340132e-004, (F) - 6.6495597e-004, (F) - 6.5645951e-004, (F) - 6.4808079e-004, (F) - 6.3971196e-004, + (F) - 6.3143448e-004, (F) - 6.2314811e-004, (F) - 6.1492812e-004, (F) - 6.0669333e-004, (F) - 5.9851277e-004, + (F) - 5.9032342e-004, (F) - 5.8219998e-004, (F) - 5.7408320e-004, (F) - 5.6603542e-004, (F) - 5.5799069e-004, + (F) - 5.5001749e-004, (F) - 5.4205412e-004, (F) - 5.3417018e-004, (F) - 5.2627883e-004, (F) - 5.1845390e-004, + (F) - 5.1061081e-004, (F) - 5.0286502e-004, (F) - 4.9509526e-004, (F) - 4.8742511e-004, (F) - 4.7968369e-004, + (F) - 4.7212529e-004, (F) - 4.6443246e-004, (F) - 4.5702829e-004, (F) - 4.4925726e-004, (F) - 4.4189166e-004, + (F) - 4.3464576e-004, (F) - 4.2705956e-004, (F) - 4.1967673e-004, (F) - 4.1228858e-004, (F) - 4.0508935e-004, + (F) - 3.9784824e-004, (F) - 3.9070041e-004, (F) - 3.8350434e-004, (F) - 3.7639420e-004, (F) - 3.6925666e-004, + (F) - 3.6221220e-004, (F) - 3.5516575e-004, (F) - 3.4822305e-004, (F) - 3.4128144e-004, (F) - 3.3443304e-004, + (F) - 3.2758021e-004, (F) - 3.2082305e-004, (F) - 3.1405879e-004, (F) - 3.0738263e-004, (F) - 3.0067960e-004, + (F) - 2.9407149e-004, (F) - 2.8744468e-004, (F) - 2.8093774e-004, (F) - 2.7438622e-004, (F) - 2.6796135e-004, + (F) - 2.6147595e-004, (F) - 2.5518652e-004, (F) - 2.4875579e-004, (F) - 2.4259571e-004, (F) - 2.3612941e-004, + (F) - 2.3020843e-004, (F) - 2.2408600e-004, (F) - 2.1762031e-004, (F) - 2.1170656e-004, (F) - 2.0570182e-004, + (F) - 1.9986051e-004, (F) - 1.9387145e-004, (F) - 1.8799894e-004, (F) - 1.8206851e-004, (F) - 1.7627586e-004, + (F) - 1.7046432e-004, (F) - 1.6479026e-004, (F) - 1.5911076e-004, (F) - 1.5355011e-004, (F) - 1.4796949e-004, + (F) - 1.4249159e-004, (F) - 1.3699375e-004, (F) - 1.3159904e-004, (F) - 1.2617687e-004, (F) - 1.2085379e-004, + (F) - 1.1550253e-004, (F) - 1.1027447e-004, (F) - 1.0502188e-004, (F) - 9.9898650e-005, (F) - 9.4721351e-005, + (F) - 8.9698178e-005, (F) - 8.4612320e-005, (F) - 7.9718290e-005, (F) - 7.4678495e-005, (F) - 6.9912852e-005, + (F) - 6.4897114e-005, (F) - 6.0403894e-005, (F) - 5.5414477e-005, (F) - 5.0403230e-005, (F) - 4.6245143e-005, + (F) - 4.1543856e-005, (F) - 3.7020060e-005, (F) - 3.2298035e-005, (F) - 2.7830625e-005, (F) - 2.3307139e-005, + (F) - 1.8994868e-005, (F) - 1.4631174e-005, (F) - 1.0433728e-005, (F) - 6.1754788e-006, (F) - 2.0462664e-006, + (F) 2.1468476e-006, (F) 6.2116278e-006, (F) 1.0327219e-005, (F) 1.4312671e-005, (F) 1.8349478e-005, + (F) 2.2246019e-005, (F) 2.6183621e-005, (F) 2.9964364e-005, (F) 3.3802916e-005, (F) 3.7486700e-005, + (F) 4.1246975e-005, (F) 4.4819152e-005, (F) 4.8492626e-005, (F) 5.1960346e-005, (F) 5.5592602e-005, + (F) 5.8926380e-005, (F) 6.2520637e-005, (F) 6.5655639e-005, (F) 6.9400379e-005, (F) 7.2644410e-005, + (F) 7.5176800e-005, (F) 7.8972973e-005, (F) 8.2145791e-005, (F) 8.5454155e-005, (F) 8.8349417e-005, + (F) 9.1380999e-005, (F) 9.4193407e-005, (F) 9.7143301e-005, (F) 9.9931180e-005, (F) 1.0283674e-004, + (F) 1.0559403e-004, (F) 1.0843159e-004, (F) 1.1110845e-004, (F) 1.1384795e-004, (F) 1.1642978e-004, + (F) 1.1906901e-004, (F) 1.2154154e-004, (F) 1.2407353e-004, (F) 1.2644454e-004, (F) 1.2890182e-004, + (F) 1.3119183e-004, (F) 1.3357737e-004, (F) 1.3577053e-004, (F) 1.3809993e-004, (F) 1.4021375e-004, + (F) 1.4250292e-004, (F) 1.4449103e-004, (F) 1.4676216e-004, (F) 1.4860587e-004, (F) 1.5099189e-004, + (F) 1.5251907e-004, (F) 1.5400320e-004, (F) 1.5725670e-004, (F) 1.5856474e-004, (F) 1.6035465e-004, + (F) 1.6172121e-004, (F) 1.6351953e-004, (F) 1.6506208e-004, (F) 1.6686975e-004, (F) 1.6842980e-004, + (F) 1.7016635e-004, (F) 1.7165185e-004, (F) 1.7326225e-004, (F) 1.7463511e-004, (F) 1.7613174e-004, + (F) 1.7740887e-004, (F) 1.7881024e-004, (F) 1.8000008e-004, (F) 1.8133430e-004, (F) 1.8246886e-004, + (F) 1.8376430e-004, (F) 1.8483886e-004, (F) 1.8608695e-004, (F) 1.8709650e-004, (F) 1.8831959e-004, + (F) 1.8925727e-004, (F) 1.9044159e-004, (F) 1.9126723e-004, (F) 1.9244888e-004, (F) 1.9312581e-004, + (F) 1.9434052e-004, (F) 1.9460314e-004, (F) 1.9574339e-004, (F) 1.9821206e-004, (F) 1.9670052e-004, + (F) 1.9764812e-004, (F) 1.9811086e-004, (F) 1.9922601e-004, (F) 1.9983291e-004, (F) 2.0072227e-004, + (F) 2.0119510e-004, (F) 2.0186213e-004, (F) 2.0218689e-004, (F) 2.0268931e-004, (F) 2.0292316e-004, + (F) 2.0334171e-004, (F) 2.0352446e-004, (F) 2.0389248e-004, (F) 2.0404606e-004, (F) 2.0439794e-004, + (F) 2.0453189e-004, (F) 2.0486118e-004, (F) 2.0494755e-004, (F) 2.0524898e-004, (F) 2.0528478e-004, + (F) 2.0556260e-004, (F) 2.0551182e-004, (F) 2.0575204e-004, (F) 2.0559447e-004, (F) 2.0583582e-004, + (F) 2.0551705e-004, (F) 2.0580818e-004, (F) 2.0522994e-004, (F) 2.0606828e-004, (F) 2.0668075e-004, + (F) 2.0117747e-004, (F) 2.0447446e-004, (F) 2.0443830e-004, (F) 2.0505697e-004, (F) 2.0439317e-004, + (F) 2.0429009e-004, (F) 2.0343574e-004, (F) 2.0309827e-004, (F) 2.0221283e-004, (F) 2.0182655e-004, + (F) 2.0098888e-004, (F) 2.0062041e-004, (F) 1.9982454e-004, (F) 1.9948456e-004, (F) 1.9872274e-004, + (F) 1.9840997e-004, (F) 1.9764305e-004, (F) 1.9732846e-004, (F) 1.9652536e-004, (F) 1.9621245e-004, + (F) 1.9535326e-004, (F) 1.9502938e-004, (F) 1.9407034e-004, (F) 1.9374881e-004, (F) 1.9267245e-004, + (F) 1.9238679e-004, (F) 1.9111524e-004, (F) 1.9094255e-004, (F) 1.8933708e-004, (F) 1.8950640e-004, + (F) 1.8640971e-004, (F) 1.7591939e-004, (F) 1.9648117e-004, (F) 1.9002553e-004, (F) 1.8826921e-004, + (F) 1.8500691e-004, (F) 1.8364291e-004, (F) 1.8138467e-004, (F) 1.8031784e-004, (F) 1.7859148e-004, + (F) 1.7773870e-004, (F) 1.7633494e-004, (F) 1.7560111e-004, (F) 1.7438288e-004, (F) 1.7371570e-004, + (F) 1.7260586e-004, (F) 1.7195115e-004, (F) 1.7087787e-004, (F) 1.7020317e-004, (F) 1.6914017e-004, + (F) 1.6843147e-004, (F) 1.6734333e-004, (F) 1.6657230e-004, (F) 1.6544194e-004, (F) 1.6461419e-004, + (F) 1.6343643e-004, (F) 1.6253497e-004, (F) 1.6129533e-004, (F) 1.6033147e-004, (F) 1.5903747e-004, + (F) 1.5798547e-004, (F) 1.5663328e-004, (F) 1.5551665e-004, (F) 9.2342753e-003 + }; + *lenh0 = HP50_32K_LEN; /* store 'number of coefficients' */ + *h0 = hp50_32khz_coeff; /* store pointer to []-array */ +} + +#undef HP50_32K_LEN +/* ...................... End of fill_bp14k_32khz() ..................... */ + + +/* + ============================================================================ + + SCD_FIR hp50_32khz_init (void); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Description: + ~~~~~~~~~~~~ + + Initialization routine for a band-pass filter which limits the + bandwidth of the input signal from 50 Hz to 14000 Hz (3 dB points). + No rate change is implemented. + + Parameters: none. + ~~~~~~~~~~~ + + Return value: + ~~~~~~~~~~~~~ + Returns a pointer to struct SCD_FIR; + + History: + ~~~~~~~~ + 05.April.2012 v1.0 - Added filters: HP50_32KHZ, HP50_48KHZ (France Telecom) + + ============================================================================ +*/ +SCD_FIR *hp50_32khz_init () { + float *h0; /* pointer to array with FIR coeff. */ + long lenh0; /* number of FIR coefficients */ + + + /* allocate array for FIR coeff. and fill with coefficients */ + fill_hp50_32khz (&h0, &lenh0); + + return fir_initialization ( /* Returns: pointer to SCD_FIR-struct */ + lenh0, /* In: number of FIR-coefficients */ + h0, /* In: pointer to array with FIR-cof. */ + 1.0, /* In: gain factor for FIR-coeffic. */ + 1l, /* In: Down-sampling factor */ + 'D' /* In: switch to down-sampling proc. */ + ); /* (works here as simple FIR-fil. */ +} + +/* .................... End of hp50_32khz_init() .................... */ + + + +/* + ============================================================================ + + void fill_hp50_48khz (float **h0, long *lenh0); + ~~~~~~~~~~~~~~~~~~~~~ + + Description: + ~~~~~~~~~~~~ + Fill filter coefficients for 50 Hz (3dB point) highpass filtering for samples at 48 kHz. + firpm(1678,[0 2.5/24000 66/24000 1],[0.000 0.00 1 1 ],[60 1]); + Same lengt, HP response and passband oscillation (+-0.15dB) as the 14KBP filter or HP50@32kHz + + Parameters: + ~~~~~~~~~~~ + h0: (Out) pointer to array with FIR coefficients + lenh0: (Out) pointer to number of coefficients + + Return value: + ~~~~~~~~~~~~~ + None. + + History: + ~~~~~~~~ + 05.April.2012 v1.0 - Added filters: HP50_32KHZ, HP50_48KHZ (France Telecom) + + ============================================================================ +*/ +#undef HP50_48K_LEN +#define HP50_48K_LEN 1679 +void fill_hp50_48khz (float **h0, long *lenh0) { + static float hp50_48khz_coeff[HP50_48K_LEN] = { + (F) 9.2170161e-003, (F) 1.0282141e-004, (F) 1.0323477e-004, (F) 1.0392614e-004, (F) 1.0431790e-004, + (F) 1.0499377e-004, (F) 1.0536773e-004, (F) 1.0603588e-004, (F) 1.0638882e-004, (F) 1.0705021e-004, + (F) 1.0739106e-004, (F) 1.0805611e-004, (F) 1.0837965e-004, (F) 1.0905795e-004, (F) 1.0938090e-004, + (F) 1.1007974e-004, (F) 1.1040957e-004, (F) 1.1115190e-004, (F) 1.1149459e-004, (F) 1.1229782e-004, + (F) 1.1266869e-004, (F) 1.1356565e-004, (F) 1.1396913e-004, (F) 1.1501372e-004, (F) 1.1546739e-004, + (F) 1.1671837e-004, (F) 1.1723162e-004, (F) 1.1881924e-004, (F) 1.1938009e-004, (F) 1.2160186e-004, + (F) 1.2211069e-004, (F) 1.2681189e-004, (F) 1.0603987e-004, (F) 1.1739216e-004, (F) 1.2019571e-004, + (F) 1.1960227e-004, (F) 1.2084617e-004, (F) 1.2064739e-004, (F) 1.2156945e-004, (F) 1.2152965e-004, + (F) 1.2231705e-004, (F) 1.2236911e-004, (F) 1.2308341e-004, (F) 1.2319054e-004, (F) 1.2387359e-004, + (F) 1.2402521e-004, (F) 1.2468629e-004, (F) 1.2487613e-004, (F) 1.2553014e-004, (F) 1.2574208e-004, + (F) 1.2639667e-004, (F) 1.2662486e-004, (F) 1.2727834e-004, (F) 1.2749849e-004, (F) 1.2815380e-004, + (F) 1.2832364e-004, (F) 1.2895095e-004, (F) 1.2901611e-004, (F) 1.2957883e-004, (F) 1.2941200e-004, + (F) 1.2984364e-004, (F) 1.2918213e-004, (F) 1.2939196e-004, (F) 1.2692712e-004, (F) 1.3285917e-004, + (F) 1.3188746e-004, (F) 1.3108290e-004, (F) 1.3185337e-004, (F) 1.3174954e-004, (F) 1.3230559e-004, + (F) 1.3234605e-004, (F) 1.3281968e-004, (F) 1.3292077e-004, (F) 1.3334594e-004, (F) 1.3347954e-004, + (F) 1.3388084e-004, (F) 1.3402423e-004, (F) 1.3439884e-004, (F) 1.3454719e-004, (F) 1.3489334e-004, + (F) 1.3502831e-004, (F) 1.3534817e-004, (F) 1.3545658e-004, (F) 1.3573672e-004, (F) 1.3580183e-004, + (F) 1.3604220e-004, (F) 1.3603623e-004, (F) 1.3623973e-004, (F) 1.3616781e-004, (F) 1.3635135e-004, + (F) 1.3622245e-004, (F) 1.3647364e-004, (F) 1.3635685e-004, (F) 1.3690649e-004, (F) 1.3696791e-004, + (F) 1.3896829e-004, (F) 1.3697478e-004, (F) 1.3692105e-004, (F) 1.3768980e-004, (F) 1.3743527e-004, + (F) 1.3778116e-004, (F) 1.3765261e-004, (F) 1.3789559e-004, (F) 1.3780411e-004, (F) 1.3798877e-004, + (F) 1.3791032e-004, (F) 1.3805069e-004, (F) 1.3795926e-004, (F) 1.3806087e-004, (F) 1.3795585e-004, + (F) 1.3801376e-004, (F) 1.3788717e-004, (F) 1.3790990e-004, (F) 1.3775349e-004, (F) 1.3774242e-004, + (F) 1.3756412e-004, (F) 1.3753506e-004, (F) 1.3733693e-004, (F) 1.3732519e-004, (F) 1.3713014e-004, + (F) 1.3715429e-004, (F) 1.3698332e-004, (F) 1.3708216e-004, (F) 1.3691530e-004, (F) 1.3707353e-004, + (F) 1.3676131e-004, (F) 1.3683967e-004, (F) 1.3537370e-004, (F) 1.3597876e-004, (F) 1.3620588e-004, + (F) 1.3557968e-004, (F) 1.3560751e-004, (F) 1.3522156e-004, (F) 1.3513030e-004, (F) 1.3477709e-004, + (F) 1.3462320e-004, (F) 1.3427186e-004, (F) 1.3406692e-004, (F) 1.3370193e-004, (F) 1.3346421e-004, + (F) 1.3308486e-004, (F) 1.3281213e-004, (F) 1.3242329e-004, (F) 1.3212756e-004, (F) 1.3172649e-004, + (F) 1.3142101e-004, (F) 1.3102020e-004, (F) 1.3071229e-004, (F) 1.3031017e-004, (F) 1.3001517e-004, + (F) 1.2959499e-004, (F) 1.2929298e-004, (F) 1.2883966e-004, (F) 1.2850208e-004, (F) 1.2795178e-004, + (F) 1.2754364e-004, (F) 1.2684799e-004, (F) 1.2641365e-004, (F) 1.2561428e-004, (F) 1.2595624e-004, + (F) 1.2528676e-004, (F) 1.2434765e-004, (F) 1.2412368e-004, (F) 1.2341104e-004, (F) 1.2298547e-004, + (F) 1.2231406e-004, (F) 1.2182429e-004, (F) 1.2115661e-004, (F) 1.2062332e-004, (F) 1.1995423e-004, + (F) 1.1939587e-004, (F) 1.1871658e-004, (F) 1.1813439e-004, (F) 1.1745353e-004, (F) 1.1685124e-004, + (F) 1.1616264e-004, (F) 1.1554840e-004, (F) 1.1484676e-004, (F) 1.1420856e-004, (F) 1.1348183e-004, + (F) 1.1281518e-004, (F) 1.1203418e-004, (F) 1.1133137e-004, (F) 1.1049916e-004, (F) 1.0975257e-004, + (F) 1.0887415e-004, (F) 1.0813498e-004, (F) 1.0726099e-004, (F) 1.0661111e-004, (F) 1.0578194e-004, + (F) 1.0529542e-004, (F) 1.0396291e-004, (F) 1.0299308e-004, (F) 1.0247409e-004, (F) 1.0137922e-004, + (F) 1.0060085e-004, (F) 9.9604074e-005, (F) 9.8760420e-005, (F) 9.7773259e-005, (F) 9.6892188e-005, + (F) 9.5905360e-005, (F) 9.4993975e-005, (F) 9.3992439e-005, (F) 9.3056320e-005, (F) 9.2042727e-005, + (F) 9.1073535e-005, (F) 9.0039349e-005, (F) 8.9038684e-005, (F) 8.7969516e-005, (F) 8.6929477e-005, + (F) 8.5825876e-005, (F) 8.4750138e-005, (F) 8.3606584e-005, (F) 8.2519454e-005, (F) 8.1353458e-005, + (F) 8.0258949e-005, (F) 7.9094451e-005, (F) 7.8017131e-005, (F) 7.6835554e-005, (F) 7.5741110e-005, + (F) 7.4464448e-005, (F) 7.3269051e-005, (F) 7.1728435e-005, (F) 7.0709936e-005, (F) 6.9687722e-005, + (F) 6.8148646e-005, (F) 6.7027725e-005, (F) 6.5663462e-005, (F) 6.4441171e-005, (F) 6.3085250e-005, + (F) 6.1818800e-005, (F) 6.0452242e-005, (F) 5.9143854e-005, (F) 5.7756282e-005, (F) 5.6415612e-005, + (F) 5.5001511e-005, (F) 5.3618819e-005, (F) 5.2178565e-005, (F) 5.0758389e-005, (F) 4.9285680e-005, + (F) 4.7838012e-005, (F) 4.6344615e-005, (F) 4.4875639e-005, (F) 4.3364404e-005, (F) 4.1892374e-005, + (F) 4.0354202e-005, (F) 3.8864361e-005, (F) 3.7301364e-005, (F) 3.5770376e-005, (F) 3.4140016e-005, + (F) 3.2553422e-005, (F) 3.0858734e-005, (F) 2.9262279e-005, (F) 2.7585354e-005, (F) 2.6196851e-005, + (F) 2.4508556e-005, (F) 2.2595147e-005, (F) 2.1125524e-005, (F) 1.9336697e-005, (F) 1.7687295e-005, + (F) 1.5919286e-005, (F) 1.4217836e-005, (F) 1.2432060e-005, (F) 1.0686745e-005, (F) 8.8806737e-006, + (F) 7.1001852e-006, (F) 5.2646709e-006, (F) 3.4494433e-006, (F) 1.5949437e-006, (F) - 2.5040016e-007, + (F) - 2.1249647e-006, (F) - 3.9880938e-006, (F) - 5.8828077e-006, (F) - 7.7707834e-006, (F) - 9.6904874e-006, + (F) - 1.1604256e-005, (F) - 1.3572472e-005, (F) - 1.5517481e-005, (F) - 1.7525599e-005, (F) - 1.9516113e-005, + (F) - 2.1556262e-005, (F) - 2.3549789e-005, (F) - 2.5587191e-005, (F) - 2.7557313e-005, (F) - 2.9593067e-005, + (F) - 3.1583770e-005, (F) - 3.3828247e-005, (F) - 3.6003270e-005, (F) - 3.7882528e-005, (F) - 4.0157616e-005, + (F) - 4.2238257e-005, (F) - 4.4435158e-005, (F) - 4.6576406e-005, (F) - 4.8788370e-005, (F) - 5.0966866e-005, + (F) - 5.3195433e-005, (F) - 5.5407648e-005, (F) - 5.7659653e-005, (F) - 5.9896191e-005, (F) - 6.2164814e-005, + (F) - 6.4430870e-005, (F) - 6.6719855e-005, (F) - 6.9012344e-005, (F) - 7.1334393e-005, (F) - 7.3660509e-005, + (F) - 7.6014789e-005, (F) - 7.8374135e-005, (F) - 8.0767477e-005, (F) - 8.3140519e-005, (F) - 8.5558944e-005, + (F) - 8.7951462e-005, (F) - 9.0371180e-005, (F) - 9.2768583e-005, (F) - 9.5215819e-005, (F) - 9.7654715e-005, + (F) - 1.0017071e-004, (F) - 1.0268888e-004, (F) - 1.0528563e-004, (F) - 1.0773097e-004, (F) - 1.1012977e-004, + (F) - 1.1287369e-004, (F) - 1.1534129e-004, (F) - 1.1795237e-004, (F) - 1.2051726e-004, (F) - 1.2313545e-004, + (F) - 1.2573245e-004, (F) - 1.2836778e-004, (F) - 1.3099695e-004, (F) - 1.3365159e-004, (F) - 1.3630467e-004, + (F) - 1.3898420e-004, (F) - 1.4167133e-004, (F) - 1.4437565e-004, (F) - 1.4709544e-004, (F) - 1.4983227e-004, + (F) - 1.5257694e-004, (F) - 1.5533702e-004, (F) - 1.5810382e-004, (F) - 1.6088469e-004, (F) - 1.6365806e-004, + (F) - 1.6646857e-004, (F) - 1.6926417e-004, (F) - 1.7209519e-004, (F) - 1.7493698e-004, (F) - 1.7782269e-004, + (F) - 1.8070933e-004, (F) - 1.8362809e-004, (F) - 1.8652433e-004, (F) - 1.8942093e-004, (F) - 1.9226519e-004, + (F) - 1.9520475e-004, (F) - 1.9831231e-004, (F) - 2.0112323e-004, (F) - 2.0414964e-004, (F) - 2.0711506e-004, + (F) - 2.1012138e-004, (F) - 2.1311883e-004, (F) - 2.1614560e-004, (F) - 2.1917324e-004, (F) - 2.2221937e-004, + (F) - 2.2527550e-004, (F) - 2.2835091e-004, (F) - 2.3143610e-004, (F) - 2.3453175e-004, (F) - 2.3764368e-004, + (F) - 2.4076019e-004, (F) - 2.4388735e-004, (F) - 2.4702508e-004, (F) - 2.5017411e-004, (F) - 2.5333543e-004, + (F) - 2.5650720e-004, (F) - 2.5971239e-004, (F) - 2.6291070e-004, (F) - 2.6614678e-004, (F) - 2.6938916e-004, + (F) - 2.7264437e-004, (F) - 2.7588913e-004, (F) - 2.7914295e-004, (F) - 2.8238998e-004, (F) - 2.8565591e-004, + (F) - 2.8895192e-004, (F) - 2.9231668e-004, (F) - 2.9568523e-004, (F) - 2.9885971e-004, (F) - 3.0230245e-004, + (F) - 3.0562944e-004, (F) - 3.0899705e-004, (F) - 3.1236984e-004, (F) - 3.1575932e-004, (F) - 3.1915720e-004, + (F) - 3.2256619e-004, (F) - 3.2599148e-004, (F) - 3.2942304e-004, (F) - 3.3286616e-004, (F) - 3.3631386e-004, + (F) - 3.3977978e-004, (F) - 3.4324533e-004, (F) - 3.4673121e-004, (F) - 3.5022620e-004, (F) - 3.5373782e-004, + (F) - 3.5726001e-004, (F) - 3.6079784e-004, (F) - 3.6435228e-004, (F) - 3.6789813e-004, (F) - 3.7147125e-004, + (F) - 3.7503555e-004, (F) - 3.7860142e-004, (F) - 3.8217419e-004, (F) - 3.8576582e-004, (F) - 3.8937618e-004, + (F) - 3.9300877e-004, (F) - 3.9666663e-004, (F) - 4.0031807e-004, (F) - 4.0393867e-004, (F) - 4.0751295e-004, + (F) - 4.1131485e-004, (F) - 4.1493297e-004, (F) - 4.1862574e-004, (F) - 4.2232986e-004, (F) - 4.2603467e-004, + (F) - 4.2975534e-004, (F) - 4.3347834e-004, (F) - 4.3721957e-004, (F) - 4.4095707e-004, (F) - 4.4471248e-004, + (F) - 4.4847023e-004, (F) - 4.5224882e-004, (F) - 4.5602551e-004, (F) - 4.5982681e-004, (F) - 4.6362882e-004, + (F) - 4.6744464e-004, (F) - 4.7126296e-004, (F) - 4.7509149e-004, (F) - 4.7892223e-004, (F) - 4.8274958e-004, + (F) - 4.8660067e-004, (F) - 4.9044254e-004, (F) - 4.9429973e-004, (F) - 4.9818084e-004, (F) - 5.0207382e-004, + (F) - 5.0597844e-004, (F) - 5.0988090e-004, (F) - 5.1378900e-004, (F) - 5.1767455e-004, (F) - 5.2157784e-004, + (F) - 5.2550534e-004, (F) - 5.2954292e-004, (F) - 5.3338602e-004, (F) - 5.3736583e-004, (F) - 5.4133594e-004, + (F) - 5.4529167e-004, (F) - 5.4927299e-004, (F) - 5.5324706e-004, (F) - 5.5724157e-004, (F) - 5.6122794e-004, + (F) - 5.6523832e-004, (F) - 5.6924539e-004, (F) - 5.7327066e-004, (F) - 5.7728920e-004, (F) - 5.8132765e-004, + (F) - 5.8535649e-004, (F) - 5.8939695e-004, (F) - 5.9343652e-004, (F) - 5.9748510e-004, (F) - 6.0153590e-004, + (F) - 6.0559430e-004, (F) - 6.0967412e-004, (F) - 6.1374540e-004, (F) - 6.1783904e-004, (F) - 6.2194403e-004, + (F) - 6.2603808e-004, (F) - 6.3013543e-004, (F) - 6.3422627e-004, (F) - 6.3833154e-004, (F) - 6.4243332e-004, + (F) - 6.4657635e-004, (F) - 6.5072148e-004, (F) - 6.5488235e-004, (F) - 6.5892065e-004, (F) - 6.6313078e-004, + (F) - 6.6727626e-004, (F) - 6.7140842e-004, (F) - 6.7557927e-004, (F) - 6.7972979e-004, (F) - 6.8390501e-004, + (F) - 6.8806653e-004, (F) - 6.9225262e-004, (F) - 6.9642391e-004, (F) - 7.0061078e-004, (F) - 7.0478617e-004, + (F) - 7.0897873e-004, (F) - 7.1315848e-004, (F) - 7.1735508e-004, (F) - 7.2155033e-004, (F) - 7.2575613e-004, + (F) - 7.2996431e-004, (F) - 7.3418147e-004, (F) - 7.3840652e-004, (F) - 7.4261917e-004, (F) - 7.4684907e-004, + (F) - 7.5107177e-004, (F) - 7.5527988e-004, (F) - 7.5950621e-004, (F) - 7.6373284e-004, (F) - 7.6797990e-004, + (F) - 7.7222020e-004, (F) - 7.7648381e-004, (F) - 7.8071490e-004, (F) - 7.8494955e-004, (F) - 7.8914860e-004, + (F) - 7.9348415e-004, (F) - 7.9769844e-004, (F) - 8.0193496e-004, (F) - 8.0621272e-004, (F) - 8.1045333e-004, + (F) - 8.1472245e-004, (F) - 8.1897072e-004, (F) - 8.2323951e-004, (F) - 8.2748711e-004, (F) - 8.3175195e-004, + (F) - 8.3600580e-004, (F) - 8.4027518e-004, (F) - 8.4453368e-004, (F) - 8.4880893e-004, (F) - 8.5307776e-004, + (F) - 8.5735118e-004, (F) - 8.6162249e-004, (F) - 8.6589382e-004, (F) - 8.7016289e-004, (F) - 8.7442056e-004, + (F) - 8.7869469e-004, (F) - 8.8295395e-004, (F) - 8.8721488e-004, (F) - 8.9150003e-004, (F) - 8.9577366e-004, + (F) - 9.0005378e-004, (F) - 9.0431520e-004, (F) - 9.0858594e-004, (F) - 9.1282776e-004, (F) - 9.1709567e-004, + (F) - 9.2135966e-004, (F) - 9.2568012e-004, (F) - 9.2987591e-004, (F) - 9.3414524e-004, (F) - 9.3843171e-004, + (F) - 9.4266414e-004, (F) - 9.4693507e-004, (F) - 9.5117535e-004, (F) - 9.5543687e-004, (F) - 9.5967515e-004, + (F) - 9.6393468e-004, (F) - 9.6817845e-004, (F) - 9.7243400e-004, (F) - 9.7667465e-004, (F) - 9.8092565e-004, + (F) - 9.8516064e-004, (F) - 9.8939684e-004, (F) - 9.9362682e-004, (F) - 9.9785357e-004, (F) - 1.0020771e-003, + (F) - 1.0062964e-003, (F) - 1.0105278e-003, (F) - 1.0147410e-003, (F) - 1.0189627e-003, (F) - 1.0231919e-003, + (F) - 1.0273888e-003, (F) - 1.0315914e-003, (F) - 1.0357772e-003, (F) - 1.0399770e-003, (F) - 1.0441581e-003, + (F) - 1.0483674e-003, (F) - 1.0525531e-003, (F) - 1.0567446e-003, (F) - 1.0608604e-003, (F) - 1.0650738e-003, + (F) - 1.0692510e-003, (F) - 1.0733797e-003, (F) - 1.0775588e-003, (F) - 1.0816965e-003, (F) - 1.0858563e-003, + (F) - 1.0899914e-003, (F) - 1.0941426e-003, (F) - 1.0982701e-003, (F) - 1.1024024e-003, (F) - 1.1065175e-003, + (F) - 1.1106354e-003, (F) - 1.1147366e-003, (F) - 1.1188392e-003, (F) - 1.1229363e-003, (F) - 1.1270269e-003, + (F) - 1.1311162e-003, (F) - 1.1351978e-003, (F) - 1.1392810e-003, (F) - 1.1433394e-003, (F) - 1.1474060e-003, + (F) - 1.1514586e-003, (F) - 1.1554824e-003, (F) - 1.1595257e-003, (F) - 1.1635549e-003, (F) - 1.1675920e-003, + (F) - 1.1716069e-003, (F) - 1.1756321e-003, (F) - 1.1796207e-003, (F) - 1.1836123e-003, (F) - 1.1875792e-003, + (F) - 1.1916120e-003, (F) - 1.1955664e-003, (F) - 1.1995059e-003, (F) - 1.2034982e-003, (F) - 1.2074293e-003, + (F) - 1.2113866e-003, (F) - 1.2153109e-003, (F) - 1.2192453e-003, (F) - 1.2231497e-003, (F) - 1.2270598e-003, + (F) - 1.2309518e-003, (F) - 1.2348445e-003, (F) - 1.2387214e-003, (F) - 1.2425990e-003, (F) - 1.2464649e-003, + (F) - 1.2503198e-003, (F) - 1.2541682e-003, (F) - 1.2580017e-003, (F) - 1.2618275e-003, (F) - 1.2656312e-003, + (F) - 1.2694420e-003, (F) - 1.2732312e-003, (F) - 1.2770072e-003, (F) - 1.2808060e-003, (F) - 1.2845712e-003, + (F) - 1.2883348e-003, (F) - 1.2920713e-003, (F) - 1.2958126e-003, (F) - 1.2995222e-003, (F) - 1.3032464e-003, + (F) - 1.3069539e-003, (F) - 1.3106774e-003, (F) - 1.3143214e-003, (F) - 1.3179943e-003, (F) - 1.3216911e-003, + (F) - 1.3253120e-003, (F) - 1.3289667e-003, (F) - 1.3325813e-003, (F) - 1.3362028e-003, (F) - 1.3397971e-003, + (F) - 1.3433966e-003, (F) - 1.3469767e-003, (F) - 1.3505509e-003, (F) - 1.3541091e-003, (F) - 1.3576589e-003, + (F) - 1.3611918e-003, (F) - 1.3647088e-003, (F) - 1.3682185e-003, (F) - 1.3717083e-003, (F) - 1.3751927e-003, + (F) - 1.3786586e-003, (F) - 1.3821294e-003, (F) - 1.3855717e-003, (F) - 1.3890107e-003, (F) - 1.3924517e-003, + (F) - 1.3958431e-003, (F) - 1.3992389e-003, (F) - 1.4026138e-003, (F) - 1.4059908e-003, (F) - 1.4093413e-003, + (F) - 1.4126989e-003, (F) - 1.4160271e-003, (F) - 1.4193442e-003, (F) - 1.4226165e-003, (F) - 1.4259289e-003, + (F) - 1.4292197e-003, (F) - 1.4324405e-003, (F) - 1.4357099e-003, (F) - 1.4389270e-003, (F) - 1.4421539e-003, + (F) - 1.4453523e-003, (F) - 1.4485514e-003, (F) - 1.4517231e-003, (F) - 1.4548847e-003, (F) - 1.4580274e-003, + (F) - 1.4611567e-003, (F) - 1.4642681e-003, (F) - 1.4673659e-003, (F) - 1.4704549e-003, (F) - 1.4735233e-003, + (F) - 1.4765858e-003, (F) - 1.4796281e-003, (F) - 1.4826638e-003, (F) - 1.4856674e-003, (F) - 1.4886671e-003, + (F) - 1.4916506e-003, (F) - 1.4945890e-003, (F) - 1.4975504e-003, (F) - 1.5004827e-003, (F) - 1.5034084e-003, + (F) - 1.5063028e-003, (F) - 1.5091954e-003, (F) - 1.5120520e-003, (F) - 1.5149014e-003, (F) - 1.5177300e-003, + (F) - 1.5205758e-003, (F) - 1.5233678e-003, (F) - 1.5261251e-003, (F) - 1.5289303e-003, (F) - 1.5316663e-003, + (F) - 1.5344141e-003, (F) - 1.5371295e-003, (F) - 1.5398364e-003, (F) - 1.5425153e-003, (F) - 1.5451826e-003, + (F) - 1.5478334e-003, (F) - 1.5504665e-003, (F) - 1.5530859e-003, (F) - 1.5556881e-003, (F) - 1.5582783e-003, + (F) - 1.5608417e-003, (F) - 1.5633971e-003, (F) - 1.5659237e-003, (F) - 1.5684387e-003, (F) - 1.5709227e-003, + (F) - 1.5734049e-003, (F) - 1.5758605e-003, (F) - 1.5782894e-003, (F) - 1.5807395e-003, (F) - 1.5831377e-003, + (F) - 1.5855244e-003, (F) - 1.5878847e-003, (F) - 1.5902389e-003, (F) - 1.5925621e-003, (F) - 1.5948806e-003, + (F) - 1.5971795e-003, (F) - 1.5994648e-003, (F) - 1.6017023e-003, (F) - 1.6039374e-003, (F) - 1.6061948e-003, + (F) - 1.6083671e-003, (F) - 1.6105632e-003, (F) - 1.6127188e-003, (F) - 1.6148653e-003, (F) - 1.6169867e-003, + (F) - 1.6190977e-003, (F) - 1.6211891e-003, (F) - 1.6232595e-003, (F) - 1.6253137e-003, (F) - 1.6273450e-003, + (F) - 1.6293578e-003, (F) - 1.6313431e-003, (F) - 1.6333175e-003, (F) - 1.6352621e-003, (F) - 1.6371955e-003, + (F) - 1.6391040e-003, (F) - 1.6410056e-003, (F) - 1.6428767e-003, (F) - 1.6447288e-003, (F) - 1.6465844e-003, + (F) - 1.6483719e-003, (F) - 1.6501672e-003, (F) - 1.6519389e-003, (F) - 1.6536996e-003, (F) - 1.6554282e-003, + (F) - 1.6571491e-003, (F) - 1.6588414e-003, (F) - 1.6605117e-003, (F) - 1.6621541e-003, (F) - 1.6638005e-003, + (F) - 1.6654288e-003, (F) - 1.6669834e-003, (F) - 1.6685753e-003, (F) - 1.6701176e-003, (F) - 1.6716515e-003, + (F) - 1.6731631e-003, (F) - 1.6746564e-003, (F) - 1.6761265e-003, (F) - 1.6775701e-003, (F) - 1.6789983e-003, + (F) - 1.6803975e-003, (F) - 1.6817812e-003, (F) - 1.6831383e-003, (F) - 1.6844858e-003, (F) - 1.6858018e-003, + (F) - 1.6871089e-003, (F) - 1.6883875e-003, (F) - 1.6896522e-003, (F) - 1.6908826e-003, (F) - 1.6920984e-003, + (F) - 1.6932997e-003, (F) - 1.6944435e-003, (F) - 1.6956151e-003, (F) - 1.6967487e-003, (F) - 1.6978597e-003, + (F) - 1.6989426e-003, (F) - 1.7000133e-003, (F) - 1.7010552e-003, (F) - 1.7020763e-003, (F) - 1.7030812e-003, + (F) - 1.7040712e-003, (F) - 1.7050255e-003, (F) - 1.7059364e-003, (F) - 1.7068863e-003, (F) - 1.7077671e-003, + (F) - 1.7086455e-003, (F) - 1.7094964e-003, (F) - 1.7103232e-003, (F) - 1.7111262e-003, (F) - 1.7119057e-003, + (F) - 1.7126703e-003, (F) - 1.7134064e-003, (F) - 1.7141292e-003, (F) - 1.7148261e-003, (F) - 1.7155080e-003, + (F) - 1.7161579e-003, (F) - 1.7167949e-003, (F) - 1.7174006e-003, (F) - 1.7179873e-003, (F) - 1.7185461e-003, + (F) - 1.7190909e-003, (F) - 1.7196156e-003, (F) - 1.7200987e-003, (F) - 1.7206103e-003, (F) - 1.7210535e-003, + (F) - 1.7214820e-003, (F) - 1.7218914e-003, (F) - 1.7222858e-003, (F) - 1.7226498e-003, (F) - 1.7229951e-003, + (F) - 1.7233213e-003, (F) - 1.7236201e-003, (F) - 1.7238898e-003, (F) - 1.7241422e-003, (F) - 1.7244071e-003, + (F) - 1.7245924e-003, (F) - 1.7247871e-003, (F) - 1.7249510e-003, (F) - 1.7250894e-003, (F) - 1.7252121e-003, + (F) - 1.7253110e-003, (F) - 1.7253955e-003, (F) - 1.7254479e-003, (F) - 1.7254883e-003, (F) 9.9827450e-001, + (F) - 1.7254883e-003, (F) - 1.7254479e-003, (F) - 1.7253955e-003, (F) - 1.7253110e-003, (F) - 1.7252121e-003, + (F) - 1.7250894e-003, (F) - 1.7249510e-003, (F) - 1.7247871e-003, (F) - 1.7245924e-003, (F) - 1.7244071e-003, + (F) - 1.7241422e-003, (F) - 1.7238898e-003, (F) - 1.7236201e-003, (F) - 1.7233213e-003, (F) - 1.7229951e-003, + (F) - 1.7226498e-003, (F) - 1.7222858e-003, (F) - 1.7218914e-003, (F) - 1.7214820e-003, (F) - 1.7210535e-003, + (F) - 1.7206103e-003, (F) - 1.7200987e-003, (F) - 1.7196156e-003, (F) - 1.7190909e-003, (F) - 1.7185461e-003, + (F) - 1.7179873e-003, (F) - 1.7174006e-003, (F) - 1.7167949e-003, (F) - 1.7161579e-003, (F) - 1.7155080e-003, + (F) - 1.7148261e-003, (F) - 1.7141292e-003, (F) - 1.7134064e-003, (F) - 1.7126703e-003, (F) - 1.7119057e-003, + (F) - 1.7111262e-003, (F) - 1.7103232e-003, (F) - 1.7094964e-003, (F) - 1.7086455e-003, (F) - 1.7077671e-003, + (F) - 1.7068863e-003, (F) - 1.7059364e-003, (F) - 1.7050255e-003, (F) - 1.7040712e-003, (F) - 1.7030812e-003, + (F) - 1.7020763e-003, (F) - 1.7010552e-003, (F) - 1.7000133e-003, (F) - 1.6989426e-003, (F) - 1.6978597e-003, + (F) - 1.6967487e-003, (F) - 1.6956151e-003, (F) - 1.6944435e-003, (F) - 1.6932997e-003, (F) - 1.6920984e-003, + (F) - 1.6908826e-003, (F) - 1.6896522e-003, (F) - 1.6883875e-003, (F) - 1.6871089e-003, (F) - 1.6858018e-003, + (F) - 1.6844858e-003, (F) - 1.6831383e-003, (F) - 1.6817812e-003, (F) - 1.6803975e-003, (F) - 1.6789983e-003, + (F) - 1.6775701e-003, (F) - 1.6761265e-003, (F) - 1.6746564e-003, (F) - 1.6731631e-003, (F) - 1.6716515e-003, + (F) - 1.6701176e-003, (F) - 1.6685753e-003, (F) - 1.6669834e-003, (F) - 1.6654288e-003, (F) - 1.6638005e-003, + (F) - 1.6621541e-003, (F) - 1.6605117e-003, (F) - 1.6588414e-003, (F) - 1.6571491e-003, (F) - 1.6554282e-003, + (F) - 1.6536996e-003, (F) - 1.6519389e-003, (F) - 1.6501672e-003, (F) - 1.6483719e-003, (F) - 1.6465844e-003, + (F) - 1.6447288e-003, (F) - 1.6428767e-003, (F) - 1.6410056e-003, (F) - 1.6391040e-003, (F) - 1.6371955e-003, + (F) - 1.6352621e-003, (F) - 1.6333175e-003, (F) - 1.6313431e-003, (F) - 1.6293578e-003, (F) - 1.6273450e-003, + (F) - 1.6253137e-003, (F) - 1.6232595e-003, (F) - 1.6211891e-003, (F) - 1.6190977e-003, (F) - 1.6169867e-003, + (F) - 1.6148653e-003, (F) - 1.6127188e-003, (F) - 1.6105632e-003, (F) - 1.6083671e-003, (F) - 1.6061948e-003, + (F) - 1.6039374e-003, (F) - 1.6017023e-003, (F) - 1.5994648e-003, (F) - 1.5971795e-003, (F) - 1.5948806e-003, + (F) - 1.5925621e-003, (F) - 1.5902389e-003, (F) - 1.5878847e-003, (F) - 1.5855244e-003, (F) - 1.5831377e-003, + (F) - 1.5807395e-003, (F) - 1.5782894e-003, (F) - 1.5758605e-003, (F) - 1.5734049e-003, (F) - 1.5709227e-003, + (F) - 1.5684387e-003, (F) - 1.5659237e-003, (F) - 1.5633971e-003, (F) - 1.5608417e-003, (F) - 1.5582783e-003, + (F) - 1.5556881e-003, (F) - 1.5530859e-003, (F) - 1.5504665e-003, (F) - 1.5478334e-003, (F) - 1.5451826e-003, + (F) - 1.5425153e-003, (F) - 1.5398364e-003, (F) - 1.5371295e-003, (F) - 1.5344141e-003, (F) - 1.5316663e-003, + (F) - 1.5289303e-003, (F) - 1.5261251e-003, (F) - 1.5233678e-003, (F) - 1.5205758e-003, (F) - 1.5177300e-003, + (F) - 1.5149014e-003, (F) - 1.5120520e-003, (F) - 1.5091954e-003, (F) - 1.5063028e-003, (F) - 1.5034084e-003, + (F) - 1.5004827e-003, (F) - 1.4975504e-003, (F) - 1.4945890e-003, (F) - 1.4916506e-003, (F) - 1.4886671e-003, + (F) - 1.4856674e-003, (F) - 1.4826638e-003, (F) - 1.4796281e-003, (F) - 1.4765858e-003, (F) - 1.4735233e-003, + (F) - 1.4704549e-003, (F) - 1.4673659e-003, (F) - 1.4642681e-003, (F) - 1.4611567e-003, (F) - 1.4580274e-003, + (F) - 1.4548847e-003, (F) - 1.4517231e-003, (F) - 1.4485514e-003, (F) - 1.4453523e-003, (F) - 1.4421539e-003, + (F) - 1.4389270e-003, (F) - 1.4357099e-003, (F) - 1.4324405e-003, (F) - 1.4292197e-003, (F) - 1.4259289e-003, + (F) - 1.4226165e-003, (F) - 1.4193442e-003, (F) - 1.4160271e-003, (F) - 1.4126989e-003, (F) - 1.4093413e-003, + (F) - 1.4059908e-003, (F) - 1.4026138e-003, (F) - 1.3992389e-003, (F) - 1.3958431e-003, (F) - 1.3924517e-003, + (F) - 1.3890107e-003, (F) - 1.3855717e-003, (F) - 1.3821294e-003, (F) - 1.3786586e-003, (F) - 1.3751927e-003, + (F) - 1.3717083e-003, (F) - 1.3682185e-003, (F) - 1.3647088e-003, (F) - 1.3611918e-003, (F) - 1.3576589e-003, + (F) - 1.3541091e-003, (F) - 1.3505509e-003, (F) - 1.3469767e-003, (F) - 1.3433966e-003, (F) - 1.3397971e-003, + (F) - 1.3362028e-003, (F) - 1.3325813e-003, (F) - 1.3289667e-003, (F) - 1.3253120e-003, (F) - 1.3216911e-003, + (F) - 1.3179943e-003, (F) - 1.3143214e-003, (F) - 1.3106774e-003, (F) - 1.3069539e-003, (F) - 1.3032464e-003, + (F) - 1.2995222e-003, (F) - 1.2958126e-003, (F) - 1.2920713e-003, (F) - 1.2883348e-003, (F) - 1.2845712e-003, + (F) - 1.2808060e-003, (F) - 1.2770072e-003, (F) - 1.2732312e-003, (F) - 1.2694420e-003, (F) - 1.2656312e-003, + (F) - 1.2618275e-003, (F) - 1.2580017e-003, (F) - 1.2541682e-003, (F) - 1.2503198e-003, (F) - 1.2464649e-003, + (F) - 1.2425990e-003, (F) - 1.2387214e-003, (F) - 1.2348445e-003, (F) - 1.2309518e-003, (F) - 1.2270598e-003, + (F) - 1.2231497e-003, (F) - 1.2192453e-003, (F) - 1.2153109e-003, (F) - 1.2113866e-003, (F) - 1.2074293e-003, + (F) - 1.2034982e-003, (F) - 1.1995059e-003, (F) - 1.1955664e-003, (F) - 1.1916120e-003, (F) - 1.1875792e-003, + (F) - 1.1836123e-003, (F) - 1.1796207e-003, (F) - 1.1756321e-003, (F) - 1.1716069e-003, (F) - 1.1675920e-003, + (F) - 1.1635549e-003, (F) - 1.1595257e-003, (F) - 1.1554824e-003, (F) - 1.1514586e-003, (F) - 1.1474060e-003, + (F) - 1.1433394e-003, (F) - 1.1392810e-003, (F) - 1.1351978e-003, (F) - 1.1311162e-003, (F) - 1.1270269e-003, + (F) - 1.1229363e-003, (F) - 1.1188392e-003, (F) - 1.1147366e-003, (F) - 1.1106354e-003, (F) - 1.1065175e-003, + (F) - 1.1024024e-003, (F) - 1.0982701e-003, (F) - 1.0941426e-003, (F) - 1.0899914e-003, (F) - 1.0858563e-003, + (F) - 1.0816965e-003, (F) - 1.0775588e-003, (F) - 1.0733797e-003, (F) - 1.0692510e-003, (F) - 1.0650738e-003, + (F) - 1.0608604e-003, (F) - 1.0567446e-003, (F) - 1.0525531e-003, (F) - 1.0483674e-003, (F) - 1.0441581e-003, + (F) - 1.0399770e-003, (F) - 1.0357772e-003, (F) - 1.0315914e-003, (F) - 1.0273888e-003, (F) - 1.0231919e-003, + (F) - 1.0189627e-003, (F) - 1.0147410e-003, (F) - 1.0105278e-003, (F) - 1.0062964e-003, (F) - 1.0020771e-003, + (F) - 9.9785357e-004, (F) - 9.9362682e-004, (F) - 9.8939684e-004, (F) - 9.8516064e-004, (F) - 9.8092565e-004, + (F) - 9.7667465e-004, (F) - 9.7243400e-004, (F) - 9.6817845e-004, (F) - 9.6393468e-004, (F) - 9.5967515e-004, + (F) - 9.5543687e-004, (F) - 9.5117535e-004, (F) - 9.4693507e-004, (F) - 9.4266414e-004, (F) - 9.3843171e-004, + (F) - 9.3414524e-004, (F) - 9.2987591e-004, (F) - 9.2568012e-004, (F) - 9.2135966e-004, (F) - 9.1709567e-004, + (F) - 9.1282776e-004, (F) - 9.0858594e-004, (F) - 9.0431520e-004, (F) - 9.0005378e-004, (F) - 8.9577366e-004, + (F) - 8.9150003e-004, (F) - 8.8721488e-004, (F) - 8.8295395e-004, (F) - 8.7869469e-004, (F) - 8.7442056e-004, + (F) - 8.7016289e-004, (F) - 8.6589382e-004, (F) - 8.6162249e-004, (F) - 8.5735118e-004, (F) - 8.5307776e-004, + (F) - 8.4880893e-004, (F) - 8.4453368e-004, (F) - 8.4027518e-004, (F) - 8.3600580e-004, (F) - 8.3175195e-004, + (F) - 8.2748711e-004, (F) - 8.2323951e-004, (F) - 8.1897072e-004, (F) - 8.1472245e-004, (F) - 8.1045333e-004, + (F) - 8.0621272e-004, (F) - 8.0193496e-004, (F) - 7.9769844e-004, (F) - 7.9348415e-004, (F) - 7.8914860e-004, + (F) - 7.8494955e-004, (F) - 7.8071490e-004, (F) - 7.7648381e-004, (F) - 7.7222020e-004, (F) - 7.6797990e-004, + (F) - 7.6373284e-004, (F) - 7.5950621e-004, (F) - 7.5527988e-004, (F) - 7.5107177e-004, (F) - 7.4684907e-004, + (F) - 7.4261917e-004, (F) - 7.3840652e-004, (F) - 7.3418147e-004, (F) - 7.2996431e-004, (F) - 7.2575613e-004, + (F) - 7.2155033e-004, (F) - 7.1735508e-004, (F) - 7.1315848e-004, (F) - 7.0897873e-004, (F) - 7.0478617e-004, + (F) - 7.0061078e-004, (F) - 6.9642391e-004, (F) - 6.9225262e-004, (F) - 6.8806653e-004, (F) - 6.8390501e-004, + (F) - 6.7972979e-004, (F) - 6.7557927e-004, (F) - 6.7140842e-004, (F) - 6.6727626e-004, (F) - 6.6313078e-004, + (F) - 6.5892065e-004, (F) - 6.5488235e-004, (F) - 6.5072148e-004, (F) - 6.4657635e-004, (F) - 6.4243332e-004, + (F) - 6.3833154e-004, (F) - 6.3422627e-004, (F) - 6.3013543e-004, (F) - 6.2603808e-004, (F) - 6.2194403e-004, + (F) - 6.1783904e-004, (F) - 6.1374540e-004, (F) - 6.0967412e-004, (F) - 6.0559430e-004, (F) - 6.0153590e-004, + (F) - 5.9748510e-004, (F) - 5.9343652e-004, (F) - 5.8939695e-004, (F) - 5.8535649e-004, (F) - 5.8132765e-004, + (F) - 5.7728920e-004, (F) - 5.7327066e-004, (F) - 5.6924539e-004, (F) - 5.6523832e-004, (F) - 5.6122794e-004, + (F) - 5.5724157e-004, (F) - 5.5324706e-004, (F) - 5.4927299e-004, (F) - 5.4529167e-004, (F) - 5.4133594e-004, + (F) - 5.3736583e-004, (F) - 5.3338602e-004, (F) - 5.2954292e-004, (F) - 5.2550534e-004, (F) - 5.2157784e-004, + (F) - 5.1767455e-004, (F) - 5.1378900e-004, (F) - 5.0988090e-004, (F) - 5.0597844e-004, (F) - 5.0207382e-004, + (F) - 4.9818084e-004, (F) - 4.9429973e-004, (F) - 4.9044254e-004, (F) - 4.8660067e-004, (F) - 4.8274958e-004, + (F) - 4.7892223e-004, (F) - 4.7509149e-004, (F) - 4.7126296e-004, (F) - 4.6744464e-004, (F) - 4.6362882e-004, + (F) - 4.5982681e-004, (F) - 4.5602551e-004, (F) - 4.5224882e-004, (F) - 4.4847023e-004, (F) - 4.4471248e-004, + (F) - 4.4095707e-004, (F) - 4.3721957e-004, (F) - 4.3347834e-004, (F) - 4.2975534e-004, (F) - 4.2603467e-004, + (F) - 4.2232986e-004, (F) - 4.1862574e-004, (F) - 4.1493297e-004, (F) - 4.1131485e-004, (F) - 4.0751295e-004, + (F) - 4.0393867e-004, (F) - 4.0031807e-004, (F) - 3.9666663e-004, (F) - 3.9300877e-004, (F) - 3.8937618e-004, + (F) - 3.8576582e-004, (F) - 3.8217419e-004, (F) - 3.7860142e-004, (F) - 3.7503555e-004, (F) - 3.7147125e-004, + (F) - 3.6789813e-004, (F) - 3.6435228e-004, (F) - 3.6079784e-004, (F) - 3.5726001e-004, (F) - 3.5373782e-004, + (F) - 3.5022620e-004, (F) - 3.4673121e-004, (F) - 3.4324533e-004, (F) - 3.3977978e-004, (F) - 3.3631386e-004, + (F) - 3.3286616e-004, (F) - 3.2942304e-004, (F) - 3.2599148e-004, (F) - 3.2256619e-004, (F) - 3.1915720e-004, + (F) - 3.1575932e-004, (F) - 3.1236984e-004, (F) - 3.0899705e-004, (F) - 3.0562944e-004, (F) - 3.0230245e-004, + (F) - 2.9885971e-004, (F) - 2.9568523e-004, (F) - 2.9231668e-004, (F) - 2.8895192e-004, (F) - 2.8565591e-004, + (F) - 2.8238998e-004, (F) - 2.7914295e-004, (F) - 2.7588913e-004, (F) - 2.7264437e-004, (F) - 2.6938916e-004, + (F) - 2.6614678e-004, (F) - 2.6291070e-004, (F) - 2.5971239e-004, (F) - 2.5650720e-004, (F) - 2.5333543e-004, + (F) - 2.5017411e-004, (F) - 2.4702508e-004, (F) - 2.4388735e-004, (F) - 2.4076019e-004, (F) - 2.3764368e-004, + (F) - 2.3453175e-004, (F) - 2.3143610e-004, (F) - 2.2835091e-004, (F) - 2.2527550e-004, (F) - 2.2221937e-004, + (F) - 2.1917324e-004, (F) - 2.1614560e-004, (F) - 2.1311883e-004, (F) - 2.1012138e-004, (F) - 2.0711506e-004, + (F) - 2.0414964e-004, (F) - 2.0112323e-004, (F) - 1.9831231e-004, (F) - 1.9520475e-004, (F) - 1.9226519e-004, + (F) - 1.8942093e-004, (F) - 1.8652433e-004, (F) - 1.8362809e-004, (F) - 1.8070933e-004, (F) - 1.7782269e-004, + (F) - 1.7493698e-004, (F) - 1.7209519e-004, (F) - 1.6926417e-004, (F) - 1.6646857e-004, (F) - 1.6365806e-004, + (F) - 1.6088469e-004, (F) - 1.5810382e-004, (F) - 1.5533702e-004, (F) - 1.5257694e-004, (F) - 1.4983227e-004, + (F) - 1.4709544e-004, (F) - 1.4437565e-004, (F) - 1.4167133e-004, (F) - 1.3898420e-004, (F) - 1.3630467e-004, + (F) - 1.3365159e-004, (F) - 1.3099695e-004, (F) - 1.2836778e-004, (F) - 1.2573245e-004, (F) - 1.2313545e-004, + (F) - 1.2051726e-004, (F) - 1.1795237e-004, (F) - 1.1534129e-004, (F) - 1.1287369e-004, (F) - 1.1012977e-004, + (F) - 1.0773097e-004, (F) - 1.0528563e-004, (F) - 1.0268888e-004, (F) - 1.0017071e-004, (F) - 9.7654715e-005, + (F) - 9.5215819e-005, (F) - 9.2768583e-005, (F) - 9.0371180e-005, (F) - 8.7951462e-005, (F) - 8.5558944e-005, + (F) - 8.3140519e-005, (F) - 8.0767477e-005, (F) - 7.8374135e-005, (F) - 7.6014789e-005, (F) - 7.3660509e-005, + (F) - 7.1334393e-005, (F) - 6.9012344e-005, (F) - 6.6719855e-005, (F) - 6.4430870e-005, (F) - 6.2164814e-005, + (F) - 5.9896191e-005, (F) - 5.7659653e-005, (F) - 5.5407648e-005, (F) - 5.3195433e-005, (F) - 5.0966866e-005, + (F) - 4.8788370e-005, (F) - 4.6576406e-005, (F) - 4.4435158e-005, (F) - 4.2238257e-005, (F) - 4.0157616e-005, + (F) - 3.7882528e-005, (F) - 3.6003270e-005, (F) - 3.3828247e-005, (F) - 3.1583770e-005, (F) - 2.9593067e-005, + (F) - 2.7557313e-005, (F) - 2.5587191e-005, (F) - 2.3549789e-005, (F) - 2.1556262e-005, (F) - 1.9516113e-005, + (F) - 1.7525599e-005, (F) - 1.5517481e-005, (F) - 1.3572472e-005, (F) - 1.1604256e-005, (F) - 9.6904874e-006, + (F) - 7.7707834e-006, (F) - 5.8828077e-006, (F) - 3.9880938e-006, (F) - 2.1249647e-006, (F) - 2.5040016e-007, + (F) 1.5949437e-006, (F) 3.4494433e-006, (F) 5.2646709e-006, (F) 7.1001852e-006, (F) 8.8806737e-006, + (F) 1.0686745e-005, (F) 1.2432060e-005, (F) 1.4217836e-005, (F) 1.5919286e-005, (F) 1.7687295e-005, + (F) 1.9336697e-005, (F) 2.1125524e-005, (F) 2.2595147e-005, (F) 2.4508556e-005, (F) 2.6196851e-005, + (F) 2.7585354e-005, (F) 2.9262279e-005, (F) 3.0858734e-005, (F) 3.2553422e-005, (F) 3.4140016e-005, + (F) 3.5770376e-005, (F) 3.7301364e-005, (F) 3.8864361e-005, (F) 4.0354202e-005, (F) 4.1892374e-005, + (F) 4.3364404e-005, (F) 4.4875639e-005, (F) 4.6344615e-005, (F) 4.7838012e-005, (F) 4.9285680e-005, + (F) 5.0758389e-005, (F) 5.2178565e-005, (F) 5.3618819e-005, (F) 5.5001511e-005, (F) 5.6415612e-005, + (F) 5.7756282e-005, (F) 5.9143854e-005, (F) 6.0452242e-005, (F) 6.1818800e-005, (F) 6.3085250e-005, + (F) 6.4441171e-005, (F) 6.5663462e-005, (F) 6.7027725e-005, (F) 6.8148646e-005, (F) 6.9687722e-005, + (F) 7.0709936e-005, (F) 7.1728435e-005, (F) 7.3269051e-005, (F) 7.4464448e-005, (F) 7.5741110e-005, + (F) 7.6835554e-005, (F) 7.8017131e-005, (F) 7.9094451e-005, (F) 8.0258949e-005, (F) 8.1353458e-005, + (F) 8.2519454e-005, (F) 8.3606584e-005, (F) 8.4750138e-005, (F) 8.5825876e-005, (F) 8.6929477e-005, + (F) 8.7969516e-005, (F) 8.9038684e-005, (F) 9.0039349e-005, (F) 9.1073535e-005, (F) 9.2042727e-005, + (F) 9.3056320e-005, (F) 9.3992439e-005, (F) 9.4993975e-005, (F) 9.5905360e-005, (F) 9.6892188e-005, + (F) 9.7773259e-005, (F) 9.8760420e-005, (F) 9.9604074e-005, (F) 1.0060085e-004, (F) 1.0137922e-004, + (F) 1.0247409e-004, (F) 1.0299308e-004, (F) 1.0396291e-004, (F) 1.0529542e-004, (F) 1.0578194e-004, + (F) 1.0661111e-004, (F) 1.0726099e-004, (F) 1.0813498e-004, (F) 1.0887415e-004, (F) 1.0975257e-004, + (F) 1.1049916e-004, (F) 1.1133137e-004, (F) 1.1203418e-004, (F) 1.1281518e-004, (F) 1.1348183e-004, + (F) 1.1420856e-004, (F) 1.1484676e-004, (F) 1.1554840e-004, (F) 1.1616264e-004, (F) 1.1685124e-004, + (F) 1.1745353e-004, (F) 1.1813439e-004, (F) 1.1871658e-004, (F) 1.1939587e-004, (F) 1.1995423e-004, + (F) 1.2062332e-004, (F) 1.2115661e-004, (F) 1.2182429e-004, (F) 1.2231406e-004, (F) 1.2298547e-004, + (F) 1.2341104e-004, (F) 1.2412368e-004, (F) 1.2434765e-004, (F) 1.2528676e-004, (F) 1.2595624e-004, + (F) 1.2561428e-004, (F) 1.2641365e-004, (F) 1.2684799e-004, (F) 1.2754364e-004, (F) 1.2795178e-004, + (F) 1.2850208e-004, (F) 1.2883966e-004, (F) 1.2929298e-004, (F) 1.2959499e-004, (F) 1.3001517e-004, + (F) 1.3031017e-004, (F) 1.3071229e-004, (F) 1.3102020e-004, (F) 1.3142101e-004, (F) 1.3172649e-004, + (F) 1.3212756e-004, (F) 1.3242329e-004, (F) 1.3281213e-004, (F) 1.3308486e-004, (F) 1.3346421e-004, + (F) 1.3370193e-004, (F) 1.3406692e-004, (F) 1.3427186e-004, (F) 1.3462320e-004, (F) 1.3477709e-004, + (F) 1.3513030e-004, (F) 1.3522156e-004, (F) 1.3560751e-004, (F) 1.3557968e-004, (F) 1.3620588e-004, + (F) 1.3597876e-004, (F) 1.3537370e-004, (F) 1.3683967e-004, (F) 1.3676131e-004, (F) 1.3707353e-004, + (F) 1.3691530e-004, (F) 1.3708216e-004, (F) 1.3698332e-004, (F) 1.3715429e-004, (F) 1.3713014e-004, + (F) 1.3732519e-004, (F) 1.3733693e-004, (F) 1.3753506e-004, (F) 1.3756412e-004, (F) 1.3774242e-004, + (F) 1.3775349e-004, (F) 1.3790990e-004, (F) 1.3788717e-004, (F) 1.3801376e-004, (F) 1.3795585e-004, + (F) 1.3806087e-004, (F) 1.3795926e-004, (F) 1.3805069e-004, (F) 1.3791032e-004, (F) 1.3798877e-004, + (F) 1.3780411e-004, (F) 1.3789559e-004, (F) 1.3765261e-004, (F) 1.3778116e-004, (F) 1.3743527e-004, + (F) 1.3768980e-004, (F) 1.3692105e-004, (F) 1.3697478e-004, (F) 1.3896829e-004, (F) 1.3696791e-004, + (F) 1.3690649e-004, (F) 1.3635685e-004, (F) 1.3647364e-004, (F) 1.3622245e-004, (F) 1.3635135e-004, + (F) 1.3616781e-004, (F) 1.3623973e-004, (F) 1.3603623e-004, (F) 1.3604220e-004, (F) 1.3580183e-004, + (F) 1.3573672e-004, (F) 1.3545658e-004, (F) 1.3534817e-004, (F) 1.3502831e-004, (F) 1.3489334e-004, + (F) 1.3454719e-004, (F) 1.3439884e-004, (F) 1.3402423e-004, (F) 1.3388084e-004, (F) 1.3347954e-004, + (F) 1.3334594e-004, (F) 1.3292077e-004, (F) 1.3281968e-004, (F) 1.3234605e-004, (F) 1.3230559e-004, + (F) 1.3174954e-004, (F) 1.3185337e-004, (F) 1.3108290e-004, (F) 1.3188746e-004, (F) 1.3285917e-004, + (F) 1.2692712e-004, (F) 1.2939196e-004, (F) 1.2918213e-004, (F) 1.2984364e-004, (F) 1.2941200e-004, + (F) 1.2957883e-004, (F) 1.2901611e-004, (F) 1.2895095e-004, (F) 1.2832364e-004, (F) 1.2815380e-004, + (F) 1.2749849e-004, (F) 1.2727834e-004, (F) 1.2662486e-004, (F) 1.2639667e-004, (F) 1.2574208e-004, + (F) 1.2553014e-004, (F) 1.2487613e-004, (F) 1.2468629e-004, (F) 1.2402521e-004, (F) 1.2387359e-004, + (F) 1.2319054e-004, (F) 1.2308341e-004, (F) 1.2236911e-004, (F) 1.2231705e-004, (F) 1.2152965e-004, + (F) 1.2156945e-004, (F) 1.2064739e-004, (F) 1.2084617e-004, (F) 1.1960227e-004, (F) 1.2019571e-004, + (F) 1.1739216e-004, (F) 1.0603987e-004, (F) 1.2681189e-004, (F) 1.2211069e-004, (F) 1.2160186e-004, + (F) 1.1938009e-004, (F) 1.1881924e-004, (F) 1.1723162e-004, (F) 1.1671837e-004, (F) 1.1546739e-004, + (F) 1.1501372e-004, (F) 1.1396913e-004, (F) 1.1356565e-004, (F) 1.1266869e-004, (F) 1.1229782e-004, + (F) 1.1149459e-004, (F) 1.1115190e-004, (F) 1.1040957e-004, (F) 1.1007974e-004, (F) 1.0938090e-004, + (F) 1.0905795e-004, (F) 1.0837965e-004, (F) 1.0805611e-004, (F) 1.0739106e-004, (F) 1.0705021e-004, + (F) 1.0638882e-004, (F) 1.0603588e-004, (F) 1.0536773e-004, (F) 1.0499377e-004, (F) 1.0431790e-004, + (F) 1.0392614e-004, (F) 1.0323477e-004, (F) 1.0282141e-004, (F) 9.2170161e-003 + }; + *lenh0 = HP50_48K_LEN; /* store 'number of coefficients' */ + *h0 = hp50_48khz_coeff; /* store pointer to []-array */ +} + +#undef HP50_48K_LEN +/* ...................... End of fill_bp14k_32khz() ..................... */ + + +/* + ============================================================================ + + SCD_FIR hp50_32khz_init (void); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Description: + ~~~~~~~~~~~~ + + Initialization routine for a band-pass filter which limits the + bandwidth of the input signal from 50 Hz to 14000 Hz (3 dB points). + No rate change is implemented. + + Parameters: none. + ~~~~~~~~~~~ + + Return value: + ~~~~~~~~~~~~~ + Returns a pointer to struct SCD_FIR; + + History: + ~~~~~~~~ + 05.April.2012 v1.0 - Added filters: HP50_32KHZ, HP50_48KHZ (France Telecom) + + ============================================================================ +*/ +SCD_FIR *hp50_48khz_init () { + float *h0; /* pointer to array with FIR coeff. */ + long lenh0; /* number of FIR coefficients */ + + + /* allocate array for FIR coeff. and fill with coefficients */ + fill_hp50_48khz (&h0, &lenh0); + + return fir_initialization ( /* Returns: pointer to SCD_FIR-struct */ + lenh0, /* In: number of FIR-coefficients */ + h0, /* In: pointer to array with FIR-cof. */ + 1.0, /* In: gain factor for FIR-coeffic. */ + 1l, /* In: Down-sampling factor */ + 'D' /* In: switch to down-sampling proc. */ + ); /* (works here as simple FIR-fil. */ +} + +/* .................... End of hp50_32khz_init() .................... */ diff --git a/src/fir/firflt.h b/src/fir/firflt.h index 93752bfb..8d017417 100644 --- a/src/fir/firflt.h +++ b/src/fir/firflt.h @@ -87,6 +87,12 @@ SCD_FIR *LP20_48kHz_init ARGS ((void)); // FILTER_12k48k_HW SCD_FIR *LP12_48kHz_init ARGS ((void)); // FILTER_12k48k_HW +SCD_FIR *shq_up_1_to_2_init ARGS ((void)); +SCD_FIR *shq_up_1_to_3_init ARGS ((void)); +SCD_FIR *shq_down_2_to_1_init ARGS ((void)); +SCD_FIR *shq_down_3_to_1_init ARGS ((void)); +SCD_FIR *hp50_32khz_init ARGS ((void)); +SCD_FIR *hp50_48khz_init ARGS ((void)); void hq_free ARGS ((SCD_FIR * fir_ptr)); void hq_reset ARGS ((SCD_FIR * fir_ptr)); diff --git a/src/fir/test_data/test-hp50-32khz.ref b/src/fir/test_data/test-hp50-32khz.ref new file mode 100644 index 00000000..7332c523 Binary files /dev/null and b/src/fir/test_data/test-hp50-32khz.ref differ diff --git a/src/fir/test_data/test-hp50-48khz.ref b/src/fir/test_data/test-hp50-48khz.ref new file mode 100644 index 00000000..e9f78d91 Binary files /dev/null and b/src/fir/test_data/test-hp50-48khz.ref differ diff --git a/src/fir/test_data/tst-shq2.ref b/src/fir/test_data/tst-shq2.ref new file mode 100644 index 00000000..a78451c9 Binary files /dev/null and b/src/fir/test_data/tst-shq2.ref differ diff --git a/src/fir/test_data/tst-shq3.ref b/src/fir/test_data/tst-shq3.ref new file mode 100644 index 00000000..eea0bfda Binary files /dev/null and b/src/fir/test_data/tst-shq3.ref differ