summaryrefslogtreecommitdiff
path: root/gnuradio-core/src
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-core/src')
-rw-r--r--gnuradio-core/src/lib/general/gr_float_to_short.cc24
1 files changed, 22 insertions, 2 deletions
diff --git a/gnuradio-core/src/lib/general/gr_float_to_short.cc b/gnuradio-core/src/lib/general/gr_float_to_short.cc
index 084f76f9c..415ea6982 100644
--- a/gnuradio-core/src/lib/general/gr_float_to_short.cc
+++ b/gnuradio-core/src/lib/general/gr_float_to_short.cc
@@ -27,6 +27,9 @@
#include <gr_float_to_short.h>
#include <gr_io_signature.h>
#include <gri_float_to_short.h>
+#include <volk/volk.h>
+
+#include <iostream>
gr_float_to_short_sptr
gr_make_float_to_short ()
@@ -39,6 +42,9 @@ gr_float_to_short::gr_float_to_short ()
gr_make_io_signature (1, 1, sizeof (float)),
gr_make_io_signature (1, 1, sizeof (short)))
{
+ const int alignment_multiple =
+ volk_get_alignment() / sizeof(short);
+ set_alignment(alignment_multiple);
}
int
@@ -49,8 +55,22 @@ gr_float_to_short::work (int noutput_items,
const float *in = (const float *) input_items[0];
short *out = (short *) output_items[0];
- gri_float_to_short (in, out, noutput_items);
-
+#if 0
+ if(is_unaligned()) {
+ float d_scale = 1.0;
+ //gri_float_to_short (in, out, noutput_items);
+ volk_32f_s32f_convert_16i_u(out, in, d_scale, noutput_items);
+ }
+ else {
+ float d_scale = 1.0;
+ volk_32f_s32f_convert_16i_a(out, in, d_scale, noutput_items);
+ }
+#else
+ float d_scale = 1.0;
+ volk_32f_s32f_convert_16i_u(out, in, d_scale, noutput_items);
+ //gri_float_to_short (in, out, noutput_items);
+#endif
+
return noutput_items;
}