Correctness.

This commit is contained in:
Hexameron 2014-06-27 18:46:14 +01:00
parent 0203283876
commit cb8026b957
4 changed files with 7 additions and 5 deletions

View File

@ -40,6 +40,7 @@ SSBDemod::SSBDemod(AudioFifo* audioFifo, SampleSink* sampleSink) :
m_audioBuffer.resize(512); m_audioBuffer.resize(512);
m_audioBufferFill = 0; m_audioBufferFill = 0;
m_undersampleCount = 0;
} }
SSBDemod::~SSBDemod() SSBDemod::~SSBDemod()
@ -52,7 +53,6 @@ void SSBDemod::configure(MessageQueue* messageQueue, Real Bandwidth, Real volume
cmd->submit(messageQueue, this); cmd->submit(messageQueue, this);
} }
int undersamplecount = 0;
void SSBDemod::feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly) void SSBDemod::feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly)
{ {
Complex ci; Complex ci;
@ -69,7 +69,7 @@ void SSBDemod::feed(SampleVector::const_iterator begin, SampleVector::const_iter
demod = 32768.0 * m_lowpass.filter(demod * 0.7); demod = 32768.0 * m_lowpass.filter(demod * 0.7);
// Downsample by 4x for audio display // Downsample by 4x for audio display
if (!(undersamplecount++ & 3)) if (!(m_undersampleCount++ & 3))
m_sampleBuffer.push_back(Sample(demod, 0.0)); m_sampleBuffer.push_back(Sample(demod, 0.0));
qint16 sample = (qint16)(demod * m_volume); qint16 sample = (qint16)(demod * m_volume);

View File

@ -72,6 +72,7 @@ private:
Real m_Bandwidth; Real m_Bandwidth;
Real m_volume; Real m_volume;
int m_undersampleCount;
int m_sampleRate; int m_sampleRate;
int m_frequency; int m_frequency;

View File

@ -30,6 +30,7 @@ RTLSDRThread::RTLSDRThread(rtlsdr_dev_t* dev, SampleFifo* sampleFifo, QObject* p
m_sampleFifo(sampleFifo), m_sampleFifo(sampleFifo),
m_decimation(2) m_decimation(2)
{ {
m_localdecimation = 0;
} }
RTLSDRThread::~RTLSDRThread() RTLSDRThread::~RTLSDRThread()
@ -135,15 +136,14 @@ void RTLSDRThread::decimate16(SampleVector::iterator* it, const quint8* buf, qin
} }
} }
int localdecimation = 0;
void RTLSDRThread::callback(const quint8* buf, qint32 len) void RTLSDRThread::callback(const quint8* buf, qint32 len)
{ {
qint16 xreal, yimag, phase; qint16 xreal, yimag, phase;
SampleVector::iterator it = m_convertBuffer.begin(); SampleVector::iterator it = m_convertBuffer.begin();
int decimationFactor[] = {16, 8, 4, 2, 1, 0}; int decimationFactor[] = {16, 8, 4, 2, 1, 0};
if (++localdecimation < decimationFactor[m_decimation]) return; if (++m_localdecimation < decimationFactor[m_decimation]) return;
localdecimation = 0; m_localdecimation = 0;
switch(m_decimation) { switch(m_decimation) {
case 0: // 1:1 = no decimation case 0: // 1:1 = no decimation

View File

@ -47,6 +47,7 @@ private:
SampleFifo* m_sampleFifo; SampleFifo* m_sampleFifo;
int m_decimation; int m_decimation;
int m_localdecimation;
void run(); void run();