summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gr-filter/include/filter/fir_filter.h1
-rw-r--r--gr-filter/lib/fir_filter.cc9
2 files changed, 10 insertions, 0 deletions
diff --git a/gr-filter/include/filter/fir_filter.h b/gr-filter/include/filter/fir_filter.h
index 76b00cae9..fba4641bf 100644
--- a/gr-filter/include/filter/fir_filter.h
+++ b/gr-filter/include/filter/fir_filter.h
@@ -54,6 +54,7 @@ namespace gr {
private:
unsigned int d_ntaps;
float *d_taps;
+ float *d_aligned_taps[4];
};
/**************************************************************/
diff --git a/gr-filter/lib/fir_filter.cc b/gr-filter/lib/fir_filter.cc
index b45209aa7..3abcda53e 100644
--- a/gr-filter/lib/fir_filter.cc
+++ b/gr-filter/lib/fir_filter.cc
@@ -57,6 +57,12 @@ namespace gr {
for(unsigned int i = 0; i < d_ntaps; i++) {
d_taps[d_ntaps-i-1] = taps[i];
}
+
+ for(int i = 0; i < 4; i++) {
+ d_aligned_taps[i] = fft::malloc_float(d_ntaps+3);
+ memset(d_aligned_taps[i], 0, sizeof(float)*(d_ntaps+3));
+ memcpy(&d_aligned_taps[i][i], d_taps, sizeof(float)*(d_ntaps));
+ }
}
std::vector<float>
@@ -78,6 +84,9 @@ namespace gr {
fir_filter_fff::filter(const float input[])
{
float output;
+
+ //const float *ar = (float*)((unsigned long)input & ~15);
+
volk_32f_x2_dot_prod_32f_u(&output, input, d_taps, d_ntaps);
return output;
}