diff options
author | Thomas Tsou <tom@tsou.cc> | 2013-08-20 21:24:24 -0400 |
---|---|---|
committer | Thomas Tsou <tom@tsou.cc> | 2013-10-18 13:10:17 -0400 |
commit | 9471d7635abeb9b5c87227d64e452890da0e65bd (patch) | |
tree | 28c28e373f42da81dac7363f89d6d0356ed8e72a /Transceiver52M/radioInterfaceResamp.cpp | |
parent | 03e6ecf9771ea029e69fd4cdc2f2e289e93d3978 (diff) |
Transceiver52M: Add SSE floating point / integer conversion
Convertions are performed in multiples of 4 or 8. All loads are
considered unaligned.
Signed-off-by: Thomas Tsou <tom@tsou.cc>
Diffstat (limited to 'Transceiver52M/radioInterfaceResamp.cpp')
-rw-r--r-- | Transceiver52M/radioInterfaceResamp.cpp | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/Transceiver52M/radioInterfaceResamp.cpp b/Transceiver52M/radioInterfaceResamp.cpp index d3dc82e..2b59203 100644 --- a/Transceiver52M/radioInterfaceResamp.cpp +++ b/Transceiver52M/radioInterfaceResamp.cpp @@ -49,20 +49,6 @@ static Resampler *dnsampler = NULL; short *convertRecvBuffer = NULL; short *convertSendBuffer = NULL; -/* Complex float to short conversion */ -static void floatToShort(short *out, float *in, int num) -{ - for (int i = 0; i < num; i++) - out[i] = (short) in[i]; -} - -/* Complex short to float conversion */ -static void shortToFloat(float *out, short *in, int num) -{ - for (int i = 0; i < num; i++) - out[i] = (float) in[i]; -} - RadioInterfaceResamp::RadioInterfaceResamp(RadioDevice *wRadio, int wReceiveOffset, int wSPS, @@ -166,8 +152,8 @@ void RadioInterfaceResamp::pullBuffer() return; } - shortToFloat((float *) outerRecvBuffer->begin(), - convertRecvBuffer, 2 * outer_len); + convert_short_float((float *) outerRecvBuffer->begin(), + convertRecvBuffer, 2 * outer_len); underrun |= local_underrun; readTimestamp += (TIMESTAMP) num_recv; @@ -206,9 +192,9 @@ void RadioInterfaceResamp::pushBuffer() LOG(ALERT) << "Sample rate downsampling error"; } - floatToShort(convertSendBuffer, - (float *) outerSendBuffer->begin(), - 2 * outer_len); + convert_float_short(convertSendBuffer, + (float *) outerSendBuffer->begin(), + powerScaling, 2 * outer_len); num_sent = mRadio->writeSamples(convertSendBuffer, outer_len, |