DATV demod: small optimizations

This commit is contained in:
f4exb 2023-03-30 00:05:11 +02:00
parent 63e2faf372
commit d70f431ec2
2 changed files with 13 additions and 13 deletions

View File

@ -30,7 +30,7 @@
#include "datvdemodreport.h" #include "datvdemodreport.h"
const unsigned int DATVDemodSink::m_rfFilterFftLength = 1024; const unsigned int DATVDemodSink::m_rfFilterFftLength = 512;
DATVDemodSink::DATVDemodSink() : DATVDemodSink::DATVDemodSink() :
m_blnNeedConfigUpdate(false), m_blnNeedConfigUpdate(false),
@ -1199,10 +1199,8 @@ void DATVDemodSink::feed(const SampleVector::const_iterator& begin, const Sample
{ {
float fltI; float fltI;
float fltQ; float fltQ;
leansdr::cf32 objIQ;
fftfilt::cmplx *objRF; fftfilt::cmplx *objRF;
int intRFOut; int intRFOut;
double magSq;
int lngWritable=0; int lngWritable=0;
leansdr::s2_frame_receiver<leansdr::f32, leansdr::llr_ss> *objDemodulatorDVBS2 = leansdr::s2_frame_receiver<leansdr::f32, leansdr::llr_ss> *objDemodulatorDVBS2 =
(leansdr::s2_frame_receiver<leansdr::f32, leansdr::llr_ss> *) m_objDemodulatorDVBS2; (leansdr::s2_frame_receiver<leansdr::f32, leansdr::llr_ss> *) m_objDemodulatorDVBS2;
@ -1305,20 +1303,16 @@ void DATVDemodSink::feed(const SampleVector::const_iterator& begin, const Sample
objC *= m_objNCO.nextIQ(); objC *= m_objNCO.nextIQ();
intRFOut = m_objRFFilter->runFilt(objC, &objRF); // filter RF before demod intRFOut = m_objRFFilter->runFilt(objC, &objRF); // filter RF before demod
for (int intI = 0 ; intI < intRFOut; intI++) for (int intI = 0 ; intI < intRFOut; intI++, objRF++)
{ {
objIQ.real(objRF->real()); m_objMagSqAverage(norm(*objRF));
objIQ.imag(objRF->imag());
magSq = objIQ.real() * objIQ.real() + objIQ.imag() * objIQ.imag();
m_objMagSqAverage(magSq);
objRF ++;
if (m_blnDVBInitialized if (m_blnDVBInitialized
&& (p_rawiq_writer != nullptr) && (p_rawiq_writer != nullptr)
&& (m_objScheduler != nullptr)) && (m_objScheduler != nullptr))
{ {
p_rawiq_writer->write(objIQ);
p_rawiq_writer->write(*objRF);
m_lngReadIQ++; m_lngReadIQ++;
lngWritable = p_rawiq_writer->writable(); lngWritable = p_rawiq_writer->writable();
@ -1330,8 +1324,7 @@ void DATVDemodSink::feed(const SampleVector::const_iterator& begin, const Sample
m_objScheduler->step(); m_objScheduler->step();
m_lngReadIQ = 0; m_lngReadIQ = 0;
delete p_rawiq_writer; p_rawiq_writer->reset();
p_rawiq_writer = new leansdr::pipewriter<leansdr::cf32>(*p_rawiq);
} }
} }
} }

View File

@ -370,6 +370,13 @@ struct pipewriter
*wr() = e; *wr() = e;
written(1); written(1);
} }
void reset(unsigned long min_write = 1)
{
if (min_write > buf.min_write) {
buf.min_write = min_write;
}
}
}; };
// Convenience functions for working with optional pipes // Convenience functions for working with optional pipes