summaryrefslogtreecommitdiff
path: root/gnuradio-core/src/lib
diff options
context:
space:
mode:
authorJohnathan Corgan2012-01-21 08:22:20 -0800
committerJohnathan Corgan2012-01-21 08:22:20 -0800
commit83c6ee03ada6a44788421ebfe813b7d594fc8a7a (patch)
treeb5de688624ef210bffa9914272fa44fd5143863f /gnuradio-core/src/lib
parent00b373f8aaabe97092ba1697c18a8d0ef391e475 (diff)
parent2d80e59c2b26de65e5266b8c6fb4be118a7428a0 (diff)
downloadgnuradio-83c6ee03ada6a44788421ebfe813b7d594fc8a7a.tar.gz
gnuradio-83c6ee03ada6a44788421ebfe813b7d594fc8a7a.tar.bz2
gnuradio-83c6ee03ada6a44788421ebfe813b7d594fc8a7a.zip
Merge remote branch 'gnuradio/maint' into gr-uhd-set-user-register
Diffstat (limited to 'gnuradio-core/src/lib')
-rw-r--r--gnuradio-core/src/lib/general/gr_fft_vcc_fftw.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/gnuradio-core/src/lib/general/gr_fft_vcc_fftw.cc b/gnuradio-core/src/lib/general/gr_fft_vcc_fftw.cc
index 3293e3ab8..c66015c11 100644
--- a/gnuradio-core/src/lib/general/gr_fft_vcc_fftw.cc
+++ b/gnuradio-core/src/lib/general/gr_fft_vcc_fftw.cc
@@ -67,8 +67,17 @@ gr_fft_vcc_fftw::work (int noutput_items,
if (d_window.size()){
gr_complex *dst = d_fft->get_inbuf();
- for (unsigned int i = 0; i < d_fft_size; i++) // apply window
- dst[i] = in[i] * d_window[i];
+ if(!d_forward && d_shift){
+ int offset = (!d_forward && d_shift)?floor(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