diff options
author | Doug Geiger <doug.geiger@bioradiation.net> | 2015-09-17 12:32:24 -0400 |
---|---|---|
committer | Doug Geiger <doug.geiger@bioradiation.net> | 2015-09-17 15:37:44 -0400 |
commit | facb1e1500aecbf01654b228ad8a15511f5d3eae (patch) | |
tree | 517937e3008f208182e7ec3a9675bd17f6cfa38b /gr-fft/lib | |
parent | 8e19986cd122d1b380e3d97b4ffc50540670525b (diff) |
Tabs -> spaces
Diffstat (limited to 'gr-fft/lib')
-rw-r--r-- | gr-fft/lib/fft.cc | 122 | ||||
-rw-r--r-- | gr-fft/lib/fft_vcc_fftw.cc | 114 | ||||
-rw-r--r-- | gr-fft/lib/fft_vcc_fftw.h | 8 |
3 files changed, 126 insertions, 118 deletions
diff --git a/gr-fft/lib/fft.cc b/gr-fft/lib/fft.cc index 18e54f065f..729600cb1c 100644 --- a/gr-fft/lib/fft.cc +++ b/gr-fft/lib/fft.cc @@ -96,11 +96,11 @@ namespace gr { const char *filename = wisdom_filename (); FILE *fp = fopen (filename, "r"); if (fp != 0){ - int r = fftwf_import_wisdom_from_file (fp); - fclose (fp); - if (!r){ - fprintf (stderr, "gr::fft: can't import wisdom from %s\n", filename); - } + int r = fftwf_import_wisdom_from_file (fp); + fclose (fp); + if (!r){ + fprintf (stderr, "gr::fft: can't import wisdom from %s\n", filename); + } } } @@ -111,10 +111,10 @@ namespace gr { #ifdef FFTW3F_THREADS if (fftw_threads_inited == 0) - { - fftw_threads_inited = 1; - fftwf_init_threads(); - } + { + fftw_threads_inited = 1; + fftwf_init_threads(); + } fftwf_plan_with_nthreads(nthreads); #endif @@ -126,12 +126,12 @@ namespace gr { const char *filename = wisdom_filename (); FILE *fp = fopen (filename, "w"); if (fp != 0){ - fftwf_export_wisdom_to_file (fp); - fclose (fp); + fftwf_export_wisdom_to_file (fp); + fclose (fp); } else { - fprintf (stderr, "fft_impl_fftw: "); - perror (filename); + fprintf (stderr, "fft_impl_fftw: "); + perror (filename); } } @@ -144,18 +144,19 @@ namespace gr { assert (sizeof (fftwf_complex) == sizeof (gr_complex)); - if (fft_size <= 0) - throw std::out_of_range ("fft_impl_fftw: invalid fft_size"); + if (fft_size <= 0){ + throw std::out_of_range ("fft_impl_fftw: invalid fft_size"); + } d_fft_size = fft_size; d_inbuf = (gr_complex *) fftwf_malloc (sizeof (gr_complex) * inbuf_length ()); - if (d_inbuf == 0) - throw std::runtime_error ("fftwf_malloc"); - + if (d_inbuf == 0) { + throw std::runtime_error ("fftwf_malloc"); + } d_outbuf = (gr_complex *) fftwf_malloc (sizeof (gr_complex) * outbuf_length ()); - if (d_outbuf == 0){ - fftwf_free (d_inbuf); - throw std::runtime_error ("fftwf_malloc"); + if (d_outbuf == 0) { + fftwf_free (d_inbuf); + throw std::runtime_error ("fftwf_malloc"); } d_nthreads = nthreads; @@ -163,14 +164,14 @@ namespace gr { import_wisdom(); // load prior wisdom from disk d_plan = fftwf_plan_dft_1d (fft_size, - reinterpret_cast<fftwf_complex *>(d_inbuf), - reinterpret_cast<fftwf_complex *>(d_outbuf), - forward ? FFTW_FORWARD : FFTW_BACKWARD, - FFTW_MEASURE); + reinterpret_cast<fftwf_complex *>(d_inbuf), + reinterpret_cast<fftwf_complex *>(d_outbuf), + forward ? FFTW_FORWARD : FFTW_BACKWARD, + FFTW_MEASURE); if (d_plan == NULL) { - fprintf(stderr, "gr::fft: error creating plan\n"); - throw std::runtime_error ("fftwf_plan_dft_1d failed"); + fprintf(stderr, "gr::fft: error creating plan\n"); + throw std::runtime_error ("fftwf_plan_dft_1d failed"); } export_wisdom(); // store new wisdom to disk } @@ -188,8 +189,9 @@ namespace gr { void fft_complex::set_nthreads(int n) { - if (n <= 0) - throw std::out_of_range ("gr::fft: invalid number of threads"); + if (n <= 0) { + throw std::out_of_range ("gr::fft: invalid number of threads"); + } d_nthreads = n; #ifdef FFTW3F_THREADS @@ -212,18 +214,20 @@ namespace gr { assert (sizeof (fftwf_complex) == sizeof (gr_complex)); - if (fft_size <= 0) - throw std::out_of_range ("gr::fft: invalid fft_size"); + if (fft_size <= 0) { + throw std::out_of_range ("gr::fft: invalid fft_size"); + } d_fft_size = fft_size; d_inbuf = (float *) fftwf_malloc (sizeof (float) * inbuf_length ()); - if (d_inbuf == 0) - throw std::runtime_error ("fftwf_malloc"); + if (d_inbuf == 0) { + throw std::runtime_error ("fftwf_malloc"); + } d_outbuf = (gr_complex *) fftwf_malloc (sizeof (gr_complex) * outbuf_length ()); - if (d_outbuf == 0){ - fftwf_free (d_inbuf); - throw std::runtime_error ("fftwf_malloc"); + if (d_outbuf == 0) { + fftwf_free (d_inbuf); + throw std::runtime_error ("fftwf_malloc"); } d_nthreads = nthreads; @@ -231,13 +235,13 @@ namespace gr { import_wisdom(); // load prior wisdom from disk d_plan = fftwf_plan_dft_r2c_1d (fft_size, - d_inbuf, - reinterpret_cast<fftwf_complex *>(d_outbuf), - FFTW_MEASURE); + d_inbuf, + reinterpret_cast<fftwf_complex *>(d_outbuf), + FFTW_MEASURE); if (d_plan == NULL) { - fprintf(stderr, "gr::fft::fft_real_fwd: error creating plan\n"); - throw std::runtime_error ("fftwf_plan_dft_r2c_1d failed"); + fprintf(stderr, "gr::fft::fft_real_fwd: error creating plan\n"); + throw std::runtime_error ("fftwf_plan_dft_r2c_1d failed"); } export_wisdom(); // store new wisdom to disk } @@ -255,8 +259,9 @@ namespace gr { void fft_real_fwd::set_nthreads(int n) { - if (n <= 0) - throw std::out_of_range ("gr::fft::fft_real_fwd::set_nthreads: invalid number of threads"); + if (n <= 0) { + throw std::out_of_range ("gr::fft::fft_real_fwd::set_nthreads: invalid number of threads"); + } d_nthreads = n; #ifdef FFTW3F_THREADS @@ -279,18 +284,20 @@ namespace gr { assert (sizeof (fftwf_complex) == sizeof (gr_complex)); - if (fft_size <= 0) - throw std::out_of_range ("gr::fft::fft_real_rev: invalid fft_size"); + if (fft_size <= 0) { + throw std::out_of_range ("gr::fft::fft_real_rev: invalid fft_size"); + } d_fft_size = fft_size; d_inbuf = (gr_complex *) fftwf_malloc (sizeof (gr_complex) * inbuf_length ()); - if (d_inbuf == 0) - throw std::runtime_error ("fftwf_malloc"); + if (d_inbuf == 0) { + throw std::runtime_error ("fftwf_malloc"); + } d_outbuf = (float *) fftwf_malloc (sizeof (float) * outbuf_length ()); - if (d_outbuf == 0){ - fftwf_free (d_inbuf); - throw std::runtime_error ("fftwf_malloc"); + if (d_outbuf == 0) { + fftwf_free (d_inbuf); + throw std::runtime_error ("fftwf_malloc"); } d_nthreads = nthreads; @@ -301,13 +308,13 @@ namespace gr { // will be called in multiple threads, we've got to ensure single // threaded access. They are not thread-safe. d_plan = fftwf_plan_dft_c2r_1d (fft_size, - reinterpret_cast<fftwf_complex *>(d_inbuf), - d_outbuf, - FFTW_MEASURE); + reinterpret_cast<fftwf_complex *>(d_inbuf), + d_outbuf, + FFTW_MEASURE); if (d_plan == NULL) { - fprintf(stderr, "gr::fft::fft_real_rev: error creating plan\n"); - throw std::runtime_error ("fftwf_plan_dft_c2r_1d failed"); + fprintf(stderr, "gr::fft::fft_real_rev: error creating plan\n"); + throw std::runtime_error ("fftwf_plan_dft_c2r_1d failed"); } export_wisdom (); // store new wisdom to disk } @@ -325,8 +332,9 @@ namespace gr { void fft_real_rev::set_nthreads(int n) { - if (n <= 0) - throw std::out_of_range ("gr::fft::fft_real_rev::set_nthreads: invalid number of threads"); + if (n <= 0) { + throw std::out_of_range ("gr::fft::fft_real_rev::set_nthreads: invalid number of threads"); + } d_nthreads = n; #ifdef FFTW3F_THREADS diff --git a/gr-fft/lib/fft_vcc_fftw.cc b/gr-fft/lib/fft_vcc_fftw.cc index 778042ebf0..18ba56e1c1 100644 --- a/gr-fft/lib/fft_vcc_fftw.cc +++ b/gr-fft/lib/fft_vcc_fftw.cc @@ -33,21 +33,21 @@ namespace gr { namespace fft { fft_vcc::sptr fft_vcc::make(int fft_size, bool forward, - const std::vector<float> &window, - bool shift, int nthreads) + const std::vector<float> &window, + bool shift, int nthreads) { return gnuradio::get_initial_sptr(new fft_vcc_fftw - (fft_size, forward, window, - shift, nthreads)); + (fft_size, forward, window, + shift, nthreads)); } fft_vcc_fftw::fft_vcc_fftw(int fft_size, bool forward, - const std::vector<float> &window, - bool shift, int nthreads) + const std::vector<float> &window, + bool shift, int nthreads) : sync_block("fft_vcc_fftw", - io_signature::make(1, 1, fft_size * sizeof(gr_complex)), - io_signature::make(1, 1, fft_size * sizeof(gr_complex))), - d_fft_size(fft_size), d_forward(forward), d_shift(shift) + io_signature::make(1, 1, fft_size * sizeof(gr_complex)), + io_signature::make(1, 1, fft_size * sizeof(gr_complex))), + d_fft_size(fft_size), d_forward(forward), d_shift(shift) { d_fft = new fft_complex(d_fft_size, forward, nthreads); if(!set_window(window)) @@ -75,17 +75,17 @@ namespace gr { fft_vcc_fftw::set_window(const std::vector<float> &window) { if(window.size()==0 || window.size()==d_fft_size) { - d_window=window; - return true; + d_window=window; + return true; } else - return false; + return false; } int fft_vcc_fftw::work(int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items) + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) { const gr_complex *in = (const gr_complex *) input_items[0]; gr_complex *out = (gr_complex *) output_items[0]; @@ -97,49 +97,49 @@ namespace gr { while(count++ < noutput_items) { - // copy input into optimally aligned buffer - if(d_window.size()) { - gr_complex *dst = d_fft->get_inbuf(); - if(!d_forward && d_shift) { - unsigned int offset = (!d_forward && d_shift)?(d_fft_size/2):0; - int fft_m_offset = d_fft_size - offset; - for(unsigned int i = 0; i < offset; i++) // apply window - dst[i+fft_m_offset] = in[i] * d_window[i]; - for(unsigned int i = offset; i < d_fft_size; i++) // apply window - dst[i-offset] = in[i] * d_window[i]; - } - else { - for(unsigned int i = 0; i < d_fft_size; i++) // apply window - dst[i] = in[i] * d_window[i]; - } - } - else { - if(!d_forward && d_shift) { // apply an ifft shift on the data - gr_complex *dst = d_fft->get_inbuf(); - unsigned int len = (unsigned int)(floor(d_fft_size/2.0)); // half length of complex array - memcpy(&dst[0], &in[len], sizeof(gr_complex)*(d_fft_size - len)); - memcpy(&dst[d_fft_size - len], &in[0], sizeof(gr_complex)*len); - } - else { - memcpy(d_fft->get_inbuf(), in, input_data_size); - } - } - - // compute the fft - d_fft->execute(); - - // copy result to our output - if(d_forward && d_shift) { // apply a fft shift on the data - unsigned int len = (unsigned int)(ceil(d_fft_size/2.0)); - memcpy(&out[0], &d_fft->get_outbuf()[len], sizeof(gr_complex)*(d_fft_size - len)); - memcpy(&out[d_fft_size - len], &d_fft->get_outbuf()[0], sizeof(gr_complex)*len); - } - else { - memcpy (out, d_fft->get_outbuf (), output_data_size); - } - - in += d_fft_size; - out += d_fft_size; + // copy input into optimally aligned buffer + if(d_window.size()) { + gr_complex *dst = d_fft->get_inbuf(); + if(!d_forward && d_shift) { + unsigned int offset = (!d_forward && d_shift)?(d_fft_size/2):0; + int fft_m_offset = d_fft_size - offset; + for(unsigned int i = 0; i < offset; i++) // apply window + dst[i+fft_m_offset] = in[i] * d_window[i]; + for(unsigned int i = offset; i < d_fft_size; i++) // apply window + dst[i-offset] = in[i] * d_window[i]; + } + else { + for(unsigned int i = 0; i < d_fft_size; i++) // apply window + dst[i] = in[i] * d_window[i]; + } + } + else { + if(!d_forward && d_shift) { // apply an ifft shift on the data + gr_complex *dst = d_fft->get_inbuf(); + unsigned int len = (unsigned int)(floor(d_fft_size/2.0)); // half length of complex array + memcpy(&dst[0], &in[len], sizeof(gr_complex)*(d_fft_size - len)); + memcpy(&dst[d_fft_size - len], &in[0], sizeof(gr_complex)*len); + } + else { + memcpy(d_fft->get_inbuf(), in, input_data_size); + } + } + + // compute the fft + d_fft->execute(); + + // copy result to our output + if(d_forward && d_shift) { // apply a fft shift on the data + unsigned int len = (unsigned int)(ceil(d_fft_size/2.0)); + memcpy(&out[0], &d_fft->get_outbuf()[len], sizeof(gr_complex)*(d_fft_size - len)); + memcpy(&out[d_fft_size - len], &d_fft->get_outbuf()[0], sizeof(gr_complex)*len); + } + else { + memcpy (out, d_fft->get_outbuf (), output_data_size); + } + + in += d_fft_size; + out += d_fft_size; } return noutput_items; diff --git a/gr-fft/lib/fft_vcc_fftw.h b/gr-fft/lib/fft_vcc_fftw.h index 951602031c..375bb62a35 100644 --- a/gr-fft/lib/fft_vcc_fftw.h +++ b/gr-fft/lib/fft_vcc_fftw.h @@ -40,8 +40,8 @@ namespace gr { public: fft_vcc_fftw(int fft_size, bool forward, - const std::vector<float> &window, - bool shift, int nthreads=1); + const std::vector<float> &window, + bool shift, int nthreads=1); ~fft_vcc_fftw(); @@ -50,8 +50,8 @@ namespace gr { bool set_window(const std::vector<float> &window); int work(int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); }; } /* namespace fft */ |