1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-04 23:14:47 -04:00

IQ swap: initial implementation in plugins

This commit is contained in:
f4exb
2020-06-21 11:46:08 +02:00
parent 9508e8b88a
commit cc5d614f67
83 changed files with 4846 additions and 2835 deletions
@@ -53,6 +53,7 @@ public:
int getFcPos(unsigned int channel) const;
void setFifo(unsigned int channel, SampleSinkFifo *sampleFifo);
SampleSinkFifo *getFifo(unsigned int channel);
void setIQOrder(bool iqOrder) { m_iqOrder = iqOrder; }
private:
struct Channel
@@ -61,10 +62,14 @@ private:
SampleSinkFifo* m_sampleFifo;
unsigned int m_log2Decim;
int m_fcPos;
Decimators<qint32, qint8, SDR_RX_SAMP_SZ, 8> m_decimators8;
Decimators<qint32, qint16, SDR_RX_SAMP_SZ, 12> m_decimators12;
Decimators<qint32, qint16, SDR_RX_SAMP_SZ, 16> m_decimators16;
DecimatorsFI m_decimatorsFloat;
Decimators<qint32, qint8, SDR_RX_SAMP_SZ, 8, true> m_decimators8IQ;
Decimators<qint32, qint16, SDR_RX_SAMP_SZ, 12, true> m_decimators12IQ;
Decimators<qint32, qint16, SDR_RX_SAMP_SZ, 16, true> m_decimators16IQ;
Decimators<qint32, qint8, SDR_RX_SAMP_SZ, 8, false> m_decimators8QI;
Decimators<qint32, qint16, SDR_RX_SAMP_SZ, 12, false> m_decimators12QI;
Decimators<qint32, qint16, SDR_RX_SAMP_SZ, 16, false> m_decimators16QI;
DecimatorsFI<true> m_decimatorsFloatIQ;
DecimatorsFI<false> m_decimatorsFloatQI;
Channel() :
m_sampleFifo(0),
@@ -93,14 +98,23 @@ private:
unsigned int m_sampleRate;
unsigned int m_nbChannels;
DecimatorType m_decimatorType;
bool m_iqOrder;
void run();
unsigned int getNbFifos();
void callbackSI8(const qint8* buf, qint32 len, unsigned int channel = 0);
void callbackSI12(const qint16* buf, qint32 len, unsigned int channel = 0);
void callbackSI16(const qint16* buf, qint32 len, unsigned int channel = 0);
void callbackSIF(const float* buf, qint32 len, unsigned int channel = 0);
void callbackMI(std::vector<void *>& buffs, qint32 samplesPerChannel);
void callbackSI8IQ(const qint8* buf, qint32 len, unsigned int channel = 0);
void callbackSI12IQ(const qint16* buf, qint32 len, unsigned int channel = 0);
void callbackSI16IQ(const qint16* buf, qint32 len, unsigned int channel = 0);
void callbackSIFIQ(const float* buf, qint32 len, unsigned int channel = 0);
void callbackSI8QI(const qint8* buf, qint32 len, unsigned int channel = 0);
void callbackSI12QI(const qint16* buf, qint32 len, unsigned int channel = 0);
void callbackSI16QI(const qint16* buf, qint32 len, unsigned int channel = 0);
void callbackSIFQI(const float* buf, qint32 len, unsigned int channel = 0);
void callbackMIIQ(std::vector<void *>& buffs, qint32 samplesPerChannel);
void callbackMIQI(std::vector<void *>& buffs, qint32 samplesPerChannel);
};