Hi all, I am trying to make an out-of-tree module using sync block. In which I want to make a local filter, i.e. output of this filter is not connected to an output port, but to be stored in a local variable.
int ShortPNcorr_impl::work(int noutput_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]; gr_complex *tcorr = (gr_complex *) output_items[1]; int *flag = (int *) output_items[2]; // this is calculated based on local filter std::vector<gr_complex> short_corr(noutput_items+history()); gr_complex *corr = (gr_complex *) &(short_corr[0]); ...................... d_Shfilter->filter(noutput_items+*X*, in, corr); // Where X>0 // d_Shfilter is *fft_filter_ccc* filter of length 40 (number of taps) // Since I am saving a history of length 320, I am assuming that input buffer has atleast noutput_items+319 values available ...................... } I think that filter requires *corr* to be a pointer to the vector (similar to 'in' or 'out'), and that is what I am trying to do. But this results in an unstable operation and whenever I choose X>250, I get "double free or corruption" error. Can someone explain this? Is my understanding of "history" wrong? Thanks Ratnesh ᐧ
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio