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
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio