aboutsummaryrefslogtreecommitdiffstats
path: root/Transceiver52M/radioInterfaceResamp.cpp
diff options
context:
space:
mode:
authorThomas Tsou <tom@tsou.cc>2013-08-20 21:24:24 -0400
committerThomas Tsou <tom@tsou.cc>2013-10-18 13:10:17 -0400
commit9471d7635abeb9b5c87227d64e452890da0e65bd (patch)
tree28c28e373f42da81dac7363f89d6d0356ed8e72a /Transceiver52M/radioInterfaceResamp.cpp
parent03e6ecf9771ea029e69fd4cdc2f2e289e93d3978 (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.cpp24
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,