From a671a4389848f4c1663b5b1630a9eb7bf8ec7890 Mon Sep 17 00:00:00 2001 From: ha7ilm <retzlerandras@gmail.com> Date: Fri, 12 Dec 2014 10:22:57 +0100 Subject: [PATCH] add a predefined filter for 44100sps to deemphasis_nfm_ff --- csdr.c | 6 +----- libcsdr.c | 3 +++ predefined.h | 2 ++ 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/csdr.c b/csdr.c index b0040ee..6aea2a8 100644 --- a/csdr.c +++ b/csdr.c @@ -44,11 +44,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include <stdarg.h> #include "libcsdr.h" #include "libcsdr_gpl.h" -/* - example chains defined: - rtl_sdr -f 90000000 -s 2400000 - | csdr convert_u8_c | csdr shift_cc -0.20833 | csdr decimate_cc 5 0.1 | \ - csdr fmdemod | csdr resample_rr 240000 48000 | csdr audio 48000 -*/ char usage[]= "csdr - a simple commandline tool for Software Defined Radio receiver DSP.\n\n" @@ -448,6 +443,7 @@ int main(int argc, char *argv[]) FEOF_CHECK; fread(input_buffer+BUFSIZE-processed, sizeof(float), processed, stdin); processed=deemphasis_nfm_ff(input_buffer, output_buffer, BUFSIZE, sample_rate); + if(!processed) return badsyntax("deemphasis_nfm_ff: invalid sample rate (this function works only with specific sample rates)."); memmove(input_buffer,input_buffer+processed,(BUFSIZE-processed)*sizeof(float)); //memmove lets the source and destination overlap fwrite(output_buffer, sizeof(float), processed, stdout); } diff --git a/libcsdr.c b/libcsdr.c index b90fe2a..4080307 100644 --- a/libcsdr.c +++ b/libcsdr.c @@ -624,8 +624,11 @@ int deemphasis_nfm_ff (float* input, float* output, int input_size, int sample_r */ float* taps; int taps_length=0; + DNFMFF_ADD_ARRAY(48000) + DNFMFF_ADD_ARRAY(44100) DNFMFF_ADD_ARRAY(8000) + if(!taps_length) return 0; //sample rate n int i; for(i=0;i<input_size-taps_length;i++) //@deemphasis_nfm_ff: outer loop diff --git a/predefined.h b/predefined.h index cc2d4da..e0c74bb 100644 --- a/predefined.h +++ b/predefined.h @@ -62,3 +62,5 @@ float deemphasis_nfm_predefined_fir_48000[] = float deemphasis_nfm_predefined_fir_8000[] = { 1.43777e+11, 1.45874e+11, -4.67746e+11, 9.98433e+10, -1.47835e+12, -3.78799e+11, -2.61333e+12, -1.07042e+12, -3.41242e+12, -1.57042e+12, -3.34195e+12, -1.4091e+12, -1.96864e+12, -2.26212e+11, 8.48259e+11, 2.04875e+12, 4.80451e+12, 5.06875e+12, 9.09434e+12, 8.04571e+12, 1.24874e+13, 9.85837e+12, 1.35433e+13, 9.28407e+12, 1.09287e+13, 5.30975e+12, 3.76762e+12, -2.54809e+12, -8.06152e+12, -1.39895e+13, -2.37664e+13, -2.77865e+13, -4.16745e+13, -4.16797e+13, -5.94708e+13, -5.17628e+13, -7.46014e+13, -4.66449e+13, -8.47575e+13, 1.51722e+14, 4.98196e+14, 1.51722e+14, -8.47575e+13, -4.66449e+13, -7.46014e+13, -5.17628e+13, -5.94708e+13, -4.16797e+13, -4.16745e+13, -2.77865e+13, -2.37664e+13, -1.39895e+13, -8.06152e+12, -2.54809e+12, 3.76762e+12, 5.30975e+12, 1.09287e+13, 9.28407e+12, 1.35433e+13, 9.85837e+12, 1.24874e+13, 8.04571e+12, 9.09434e+12, 5.06875e+12, 4.80451e+12, 2.04875e+12, 8.48259e+11, -2.26212e+11, -1.96864e+12, -1.4091e+12, -3.34195e+12, -1.57042e+12, -3.41242e+12, -1.07042e+12, -2.61333e+12, -3.78799e+11, -1.47835e+12, 9.98433e+10, -4.67746e+11, 1.45874e+11, 1.43777e+11 }; +float deemphasis_nfm_predefined_fir_44100[] = +{ 0.0025158, 0.00308564, 0.00365507, 0.00413598, 0.00446279, 0.00461162, 0.00460866, 0.00452474, 0.00445739, 0.00450444, 0.00473648, 0.0051757, 0.0057872, 0.00648603, 0.00715856, 0.00769296, 0.00801081, 0.00809096, 0.00797853, 0.00777577, 0.00761627, 0.00762871, 0.00789987, 0.00844699, 0.00920814, 0.0100543, 0.0108212, 0.0113537, 0.011551, 0.0113994, 0.0109834, 0.0104698, 0.0100665, 0.00996618, 0.0102884, 0.0110369, 0.0120856, 0.0131998, 0.0140907, 0.0144924, 0.0142417, 0.0133401, 0.0119771, 0.0105043, 0.00935909, 0.00895022, 0.00952985, 0.0110812, 0.0132522, 0.015359, 0.0164664, 0.0155409, 0.0116496, 0.00416925, -0.00703664, -0.021514, -0.0382135, -0.0555955, -0.0718318, -0.0850729, -0.0937334, -0.0967458, -0.0937334, -0.0850729, -0.0718318, -0.0555955, -0.0382135, -0.021514, -0.00703664, 0.00416925, 0.0116496, 0.0155409, 0.0164664, 0.015359, 0.0132522, 0.0110812, 0.00952985, 0.00895022, 0.00935909, 0.0105043, 0.0119771, 0.0133401, 0.0142417, 0.0144924, 0.0140907, 0.0131998, 0.0120856, 0.0110369, 0.0102884, 0.00996618, 0.0100665, 0.0104698, 0.0109834, 0.0113994, 0.011551, 0.0113537, 0.0108212, 0.0100543, 0.00920814, 0.00844699, 0.00789987, 0.00762871, 0.00761627, 0.00777577, 0.00797853, 0.00809096, 0.00801081, 0.00769296, 0.00715856, 0.00648603, 0.0057872, 0.0051757, 0.00473648, 0.00450444, 0.00445739, 0.00452474, 0.00460866, 0.00461162, 0.00446279, 0.00413598, 0.00365507, 0.00308564, 0.0025158 }; -- GitLab