1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-08-01 05:22:26 -04:00

UDPSink utility: use fixed payload size in bytes

This commit is contained in:
f4exb 2017-08-15 12:29:54 +02:00
parent a89e34255b
commit 9786640322
2 changed files with 10 additions and 6 deletions

View File

@ -67,7 +67,7 @@ UDPSrc::UDPSrc(MessageQueue* uiMessageQueue, UDPSrcGUI* udpSrcGUI, BasebandSampl
m_scale = 0; m_scale = 0;
m_boost = 0; m_boost = 0;
m_magsq = 0; m_magsq = 0;
UDPFilter = new fftfilt(0.0, (m_rfBandwidth / 2.0) / m_outputSampleRate, udpBLockSampleSize * sizeof(Sample)); UDPFilter = new fftfilt(0.0, (m_rfBandwidth / 2.0) / m_outputSampleRate, udpBLockSampleSize);
m_phaseDiscri.setFMScaling((float) m_outputSampleRate / (2.0f * m_fmDeviation)); m_phaseDiscri.setFMScaling((float) m_outputSampleRate / (2.0f * m_fmDeviation));

View File

@ -31,22 +31,25 @@ class UDPSink
public: public:
UDPSink(QObject *parent, unsigned int udpSize, unsigned int port) : UDPSink(QObject *parent, unsigned int udpSize, unsigned int port) :
m_udpSize(udpSize), m_udpSize(udpSize),
m_udpSamples(udpSize/sizeof(T)),
m_address(QHostAddress::LocalHost), m_address(QHostAddress::LocalHost),
m_port(port), m_port(port),
m_sampleBufferIndex(0) m_sampleBufferIndex(0)
{ {
m_sampleBuffer = new T[m_udpSize]; assert(m_udpSamples > 0);
m_sampleBuffer = new T[m_udpSamples];
m_socket = new QUdpSocket(parent); m_socket = new QUdpSocket(parent);
} }
UDPSink (QObject *parent, unsigned int udpSize, QHostAddress& address, unsigned int port) : UDPSink (QObject *parent, unsigned int udpSize, QHostAddress& address, unsigned int port) :
m_udpSize(udpSize), m_udpSize(udpSize),
m_udpSamples(udpSize/sizeof(T)),
m_address(address), m_address(address),
m_port(port), m_port(port),
m_sampleBufferIndex(0) m_sampleBufferIndex(0)
{ {
assert(m_udpSize > 2); assert(m_udpSamples > 0);
m_sampleBuffer = new T[m_udpSize]; m_sampleBuffer = new T[m_udpSamples];
m_socket = new QUdpSocket(parent); m_socket = new QUdpSocket(parent);
} }
@ -61,14 +64,14 @@ public:
void write(T sample) void write(T sample)
{ {
if (m_sampleBufferIndex < m_udpSize) if (m_sampleBufferIndex < m_udpSamples)
{ {
m_sampleBuffer[m_sampleBufferIndex] = sample; m_sampleBuffer[m_sampleBufferIndex] = sample;
m_sampleBufferIndex++; m_sampleBufferIndex++;
} }
else else
{ {
m_socket->writeDatagram((const char*)&m_sampleBuffer[0], (qint64 ) (m_udpSize * sizeof(T)), m_address, m_port); m_socket->writeDatagram((const char*)&m_sampleBuffer[0], (qint64 ) m_udpSize, m_address, m_port);
m_sampleBuffer[0] = sample; m_sampleBuffer[0] = sample;
m_sampleBufferIndex = 1; m_sampleBufferIndex = 1;
} }
@ -76,6 +79,7 @@ public:
private: private:
unsigned int m_udpSize; unsigned int m_udpSize;
unsigned int m_udpSamples;
QHostAddress m_address; QHostAddress m_address;
unsigned int m_port; unsigned int m_port;
QUdpSocket *m_socket; QUdpSocket *m_socket;