mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-21 19:55:20 -05:00
83 lines
1.7 KiB
C++
83 lines
1.7 KiB
C++
#ifndef SOUNDIN_H
|
|
#define SOUNDIN_H
|
|
|
|
#include <QtCore>
|
|
#include <QtNetwork/QUdpSocket>
|
|
#include <QDebug>
|
|
#include <valarray>
|
|
|
|
// Thread gets audio data from soundcard and signals when a buffer of
|
|
// specified size is available.
|
|
class SoundInThread : public QThread
|
|
{
|
|
Q_OBJECT
|
|
bool quitExecution; // if true, thread exits gracefully
|
|
double m_rate; // sample rate
|
|
unsigned bufSize; // user's buffer size
|
|
|
|
protected:
|
|
virtual void run();
|
|
|
|
public:
|
|
bool m_dataSinkBusy;
|
|
|
|
SoundInThread():
|
|
quitExecution(false),
|
|
m_rate(0),
|
|
bufSize(0),
|
|
m_dataSinkBusy(false)
|
|
{
|
|
}
|
|
|
|
void setSwapIQ(bool b);
|
|
void setScale(qint32 n);
|
|
void setPort(qint32 n);
|
|
void setInputDevice(qint32 n);
|
|
void setRate(double rate);
|
|
void setBufSize(unsigned bufSize);
|
|
void setNetwork(bool b);
|
|
void setMonitoring(bool b);
|
|
void setFadd(double x);
|
|
void setNrx(int n);
|
|
void setForceCenterFreqBool(bool b);
|
|
void setForceCenterFreqMHz(double d);
|
|
void setPeriod(int n);
|
|
int nrx();
|
|
int mhsym();
|
|
|
|
signals:
|
|
void bufferAvailable(std::valarray<qint16> samples, double rate);
|
|
void readyForFFT(int k);
|
|
void error(const QString& message);
|
|
void status(const QString& message);
|
|
|
|
public slots:
|
|
void quit();
|
|
|
|
private:
|
|
void inputUDP();
|
|
|
|
double m_fAdd;
|
|
bool m_net;
|
|
bool m_monitoring;
|
|
bool m_bForceCenterFreq;
|
|
bool m_IQswap;
|
|
double m_dForceCenterFreq;
|
|
qint32 m_nrx;
|
|
qint32 m_hsym;
|
|
qint32 m_nDevIn;
|
|
qint32 m_udpPort;
|
|
qint32 m_TRperiod;
|
|
qint32 m_TRperiod0;
|
|
qint32 m_dB;
|
|
|
|
QUdpSocket *udpSocket;
|
|
};
|
|
|
|
extern "C" {
|
|
void recvpkt_(int* nsam, quint16* iblk, qint8* nrx, int* k, double s1[],
|
|
double s2[], double s3[]);
|
|
}
|
|
|
|
#endif // SOUNDIN_H
|