diff options
Diffstat (limited to 'gr-digital/lib/pfb_clock_sync_fff_impl.cc')
-rw-r--r-- | gr-digital/lib/pfb_clock_sync_fff_impl.cc | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/gr-digital/lib/pfb_clock_sync_fff_impl.cc b/gr-digital/lib/pfb_clock_sync_fff_impl.cc index fe3efc7435..e15b184e22 100644 --- a/gr-digital/lib/pfb_clock_sync_fff_impl.cc +++ b/gr-digital/lib/pfb_clock_sync_fff_impl.cc @@ -76,14 +76,14 @@ pfb_clock_sync_fff_impl::pfb_clock_sync_fff_impl(double sps, d_rate_f = d_rate - (float)d_rate_i; d_filtnum = (int)floor(d_k); - d_filters = std::vector<kernel::fir_filter_fff*>(d_nfilters); - d_diff_filters = std::vector<kernel::fir_filter_fff*>(d_nfilters); + d_filters.reserve(d_nfilters); + d_diff_filters.reserve(d_nfilters); // Create an FIR filter for each channel and zero out the taps std::vector<float> vtaps(1, 0); for (int i = 0; i < d_nfilters; i++) { - d_filters[i] = new kernel::fir_filter_fff(1, vtaps); - d_diff_filters[i] = new kernel::fir_filter_fff(1, vtaps); + d_filters.emplace_back(1, vtaps); + d_diff_filters.emplace_back(1, vtaps); } // Now, actually set the filters' taps @@ -95,13 +95,7 @@ pfb_clock_sync_fff_impl::pfb_clock_sync_fff_impl(double sps, set_relative_rate((uint64_t)d_osps, (uint64_t)d_sps); } -pfb_clock_sync_fff_impl::~pfb_clock_sync_fff_impl() -{ - for (int i = 0; i < d_nfilters; i++) { - delete d_filters[i]; - delete d_diff_filters[i]; - } -} +pfb_clock_sync_fff_impl::~pfb_clock_sync_fff_impl() {} bool pfb_clock_sync_fff_impl::check_topology(int ninputs, int noutputs) { @@ -189,7 +183,7 @@ void pfb_clock_sync_fff_impl::update_gains() void pfb_clock_sync_fff_impl::set_taps(const std::vector<float>& newtaps, std::vector<std::vector<float>>& ourtaps, - std::vector<kernel::fir_filter_fff*>& ourfilter) + std::vector<kernel::fir_filter_fff>& ourfilter) { int i, j; @@ -216,7 +210,7 @@ void pfb_clock_sync_fff_impl::set_taps(const std::vector<float>& newtaps, } // Build a filter for each channel and add it's taps to it - ourfilter[i]->set_taps(ourtaps[i]); + ourfilter[i].set_taps(ourtaps[i]); } // Set the history to ensure enough input items for each filter @@ -367,7 +361,7 @@ int pfb_clock_sync_fff_impl::general_work(int noutput_items, count -= 1; } - out[i + d_out_idx] = d_filters[d_filtnum]->filter(&in[count + d_out_idx]); + out[i + d_out_idx] = d_filters[d_filtnum].filter(&in[count + d_out_idx]); d_k = d_k + d_rate_i + d_rate_f; // update phase d_out_idx++; @@ -389,7 +383,7 @@ int pfb_clock_sync_fff_impl::general_work(int noutput_items, d_out_idx = 0; // Update the phase and rate estimates for this symbol - float diff = d_diff_filters[d_filtnum]->filter(&in[count]); + float diff = d_diff_filters[d_filtnum].filter(&in[count]); d_error = out[i] * diff; // Run the control loop to update the current phase (k) and |