summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gr-filter/lib/filter_delay_fc_impl.cc16
-rw-r--r--gr-filter/lib/hilbert_fc_impl.cc14
2 files changed, 23 insertions, 7 deletions
diff --git a/gr-filter/lib/filter_delay_fc_impl.cc b/gr-filter/lib/filter_delay_fc_impl.cc
index ce320c557..279368664 100644
--- a/gr-filter/lib/filter_delay_fc_impl.cc
+++ b/gr-filter/lib/filter_delay_fc_impl.cc
@@ -25,6 +25,7 @@
#endif
#include "filter_delay_fc_impl.h"
+#include <volk/volk.h>
namespace gr {
namespace filter {
@@ -44,6 +45,10 @@ namespace gr {
d_fir = new kernel::fir_filter_fff(1, taps);
d_delay = d_fir->ntaps() / 2;
set_history(d_fir->ntaps());
+
+ const int alignment_multiple =
+ volk_get_alignment() / sizeof(float);
+ set_alignment(std::max(1, alignment_multiple));
}
filter_delay_fc_impl::~filter_delay_fc_impl()
@@ -73,6 +78,7 @@ namespace gr {
float *in0 = (float *)input_items[0];
float *in1 = (float *)input_items[1];
gr_complex *out = (gr_complex *)output_items[0];
+ float d_out;
if(d_update) {
d_fir->set_taps(d_taps);
@@ -84,15 +90,17 @@ namespace gr {
switch(input_items.size ()) {
case 1:
for(int i = 0; i < noutput_items; i++) {
- out[i] = gr_complex (in0[i + d_delay],
- d_fir->filter (&in0[i]));
+ d_fir->filterN(&d_out, &in0[i], 1);
+ out[i] = gr_complex(in0[i + d_delay],
+ d_out);
}
break;
case 2:
for(int j = 0; j < noutput_items; j++) {
- out[j] = gr_complex (in0[j + d_delay],
- d_fir->filter (&in1[j]));
+ d_fir->filterN(&d_out, &in1[j], 1);
+ out[j] = gr_complex(in0[j + d_delay],
+ d_out);
}
break;
diff --git a/gr-filter/lib/hilbert_fc_impl.cc b/gr-filter/lib/hilbert_fc_impl.cc
index 946b47e4a..7aaa23a62 100644
--- a/gr-filter/lib/hilbert_fc_impl.cc
+++ b/gr-filter/lib/hilbert_fc_impl.cc
@@ -27,6 +27,7 @@
#include "hilbert_fc_impl.h"
#include <filter/firdes.h>
#include <gr_io_signature.h>
+#include <volk/volk.h>
namespace gr {
namespace filter {
@@ -44,6 +45,10 @@ namespace gr {
{
d_hilb = new kernel::fir_filter_fff(1, firdes::hilbert(d_ntaps));
set_history (d_ntaps);
+
+ const int alignment_multiple =
+ volk_get_alignment() / sizeof(float);
+ set_alignment(std::max(1, alignment_multiple));
}
hilbert_fc_impl::~hilbert_fc_impl()
@@ -58,10 +63,13 @@ namespace gr {
{
float *in = (float *)input_items[0];
gr_complex *out = (gr_complex *)output_items[0];
+ float h_out;
- for(int i = 0; i < noutput_items; i++)
- out[i] = gr_complex (in[i + d_ntaps/2],
- d_hilb->filter (&in[i]));
+ for(int i = 0; i < noutput_items; i++) {
+ d_hilb->filterN(&h_out, &in[i], 1);
+ out[i] = gr_complex(in[i + d_ntaps/2],
+ h_out);
+ }
return noutput_items;
}