X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=gnuradio-core%2Fsrc%2Flib%2Ffilter%2Fgr_pfb_synthesis_filterbank_ccf.cc;h=0b31bcf72e7cba77a6a7614ead65a61dc7889b93;hb=2e633fc33dcbc3e1b5c35323ebe24373d57ea459;hp=b1365bcf904946d85f5504b3ea3d9fdb3ffaea54;hpb=2ee1a94ff42a3d1858805bcce50b6aadb1773f47;p=debian%2Fgnuradio diff --git a/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.cc b/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.cc index b1365bcf..0b31bcf7 100644 --- a/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.cc +++ b/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.cc @@ -48,16 +48,18 @@ gr_pfb_synthesis_filterbank_ccf::gr_pfb_synthesis_filterbank_ccf numchans), d_updated (false), d_numchans(numchans) { - d_filters = std::vector(d_numchans); + //d_filters = std::vector(d_numchans); + d_filters = std::vector(d_numchans); - d_buffer = new gr_complex*[d_numchans]; + //d_buffer = new gr_complex*[d_numchans]; // Create an FIR filter for each channel and zero out the taps std::vector vtaps(0, d_numchans); for(unsigned int i = 0; i < d_numchans; i++) { - d_filters[i] = gr_fir_util::create_gr_fir_ccf(vtaps); - d_buffer[i] = new gr_complex[65535]; - memset(d_buffer[i], 0, 65535*sizeof(gr_complex)); + d_filters[i] = new gri_fir_filter_with_buffer_ccf(vtaps); + //d_filters[i] = gr_fir_util::create_gr_fir_ccf(vtaps); + //d_buffer[i] = new gr_complex[65535]; + //memset(d_buffer[i], 0, 65535*sizeof(gr_complex)); } // Now, actually set the filters' taps @@ -134,7 +136,7 @@ gr_pfb_synthesis_filterbank_ccf::work (int noutput_items, gr_complex *out = (gr_complex *) output_items[0]; int numsigs = input_items.size(); int ndiff = d_numchans - numsigs; - int nhalf = (int)ceil((float)numsigs/2.0f); + unsigned int nhalf = (unsigned int)ceil((float)numsigs/2.0f); if (d_updated) { d_updated = false; @@ -165,18 +167,22 @@ gr_pfb_synthesis_filterbank_ccf::work (int noutput_items, d_fft->execute(); for(i = 0; i < d_numchans; i++) { - d_buffer[i][n+d_taps_per_filter-1] = d_fft->get_outbuf()[i]; - out[d_numchans-i-1] = d_filters[d_numchans-i-1]->filter(&d_buffer[i][n]); + //d_buffer[i][n+d_taps_per_filter-1] = d_fft->get_outbuf()[i]; + //out[d_numchans-i-1] = d_filters[d_numchans-i-1]->filter(&d_buffer[i][n]); + out[d_numchans-i-1] = d_filters[d_numchans-i-1]->filter(d_fft->get_outbuf()[i]); } out += d_numchans; } // Move the last chunk of memory to the front for the next entry // this make sure that the first taps_per_filter values are correct + + /* for(i = 0; i < d_numchans; i++) { memcpy(d_buffer[i], &d_buffer[i][n], (d_taps_per_filter)*sizeof(gr_complex)); } + */ return noutput_items; }