After some more research it seems that this is an issue of not having an
even multiple of input samples to taps.  For others, here is where I found
the answer: http://www.dspguide.com/ch18/2.htm

On Fri, Feb 10, 2017 at 11:19 AM, Dave NotTelling <dmp250...@gmail.com>
wrote:

> I am trying to use the FFT filter in some c++ code and I'm having issues
> with seg faulting.  The code below will work, but only because the output
> buffer is twice as large as the input buffer.  It doesn't have to be twice
> as large, but it does have to be some number larger than the input buffer.
> Why is that?  Also, how do I know what the output buffer size should be?
>
> Thank you!!
>
>
> [code]
>
> #include <iostream>
> #include <gnuradio/filter/fft_filter.h>
> #include <complex>
> #include <vector>
>
> int main(){
>     // Generate a set of zeroed out taps
>     std::vector<std::complex<float> > taps(512, std::complex<float>(0.0f,
> 0.0f));
>
>     // Number of random samples to generate
>     const int sampleSize = 30000;
>     // Create a vector of 32fc samples.  Don't initialize it to anything,
> just let it have
>     // random data.
>     gr_complex * input = (gr_complex *)malloc(sizeof(gr_complex) *
> sampleSize);
>
>     // Place to store the output samples from the FFT
>     gr_complex * output = (gr_complex *)malloc(sizeof(gr_complex) *
> sampleSize);
>
>     // Create a filter to run the input samples through
>     gr::filter::kernel::fft_filter_ccc * filter = new
> gr::filter::kernel::fft_filter_ccc(1, taps, 1);
>
>     // Filter the input samples
>     filter->filter(sampleSize, input, output);
>
>     // Free up the malloc'd input and output storage
>     free(input);
>     free(output);
>
>     delete filter;
>
>     return 0;
> }
>
> [/code]
>
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to