diff --git a/csdr.c b/csdr.c index 5b53ffa..8f0a730 100755 --- a/csdr.c +++ b/csdr.c @@ -2721,10 +2721,10 @@ int main(int argc, char *argv[]) int octave=(argc>=6 && !strcmp("--octave",argv[5])); - complexf* taps=(complexf*)malloc(sizeof(complexf)*length); + complexf* taps=(complexf*)calloc(sizeof(complexf),length); //Make the filter - firdes_carrier_c(taps, length, rate, window); + firdes_add_carrier_c(taps, length, rate, window); //Do the output if(octave) printf("taps=["); diff --git a/libcsdr.c b/libcsdr.c index 298d239..05c11f9 100755 --- a/libcsdr.c +++ b/libcsdr.c @@ -2009,17 +2009,18 @@ void simple_agc_cc(complexf* input, complexf* output, int input_size, float rate } } -void firdes_carrier_c(complexf* output, int length, float rate, window_t window) +void firdes_add_carrier_c(complexf* output, int length, float rate, window_t window) { + complexf* taps = (complexf*)malloc(sizeof(complexf)*length); int middle=length/2; float phase = 0, phase_addition = rate*M_PI*2; float (*window_function)(float) = firdes_get_window_kernel(window); for(int i=0; i2*M_PI) phase-=2*M_PI; } @@ -2028,12 +2029,17 @@ void firdes_carrier_c(complexf* output, int length, float rate, window_t window) float sum=0; for(int i=0;i