DATV demod: small optimizations (2)

This commit is contained in:
f4exb 2023-03-30 11:22:19 +02:00
parent d70f431ec2
commit 03e29e9a1d
4 changed files with 13 additions and 9 deletions

View File

@ -46,6 +46,7 @@ DATVDemod::DATVDemod(DeviceAPI *deviceAPI) :
{ {
qDebug("DATVDemod::DATVDemod"); qDebug("DATVDemod::DATVDemod");
setObjectName(m_channelId); setObjectName(m_channelId);
m_thread.setObjectName("bbDATVDemod");
m_basebandSink = new DATVDemodBaseband(); m_basebandSink = new DATVDemodBaseband();
m_basebandSink->moveToThread(&m_thread); m_basebandSink->moveToThread(&m_thread);

View File

@ -95,6 +95,7 @@ void DATVDemodSink::SetVideoRender(DATVideoRender *screen)
m_videoRender = screen; m_videoRender = screen;
m_videoRender->setAudioFIFO(&m_audioFifo); m_videoRender->setAudioFIFO(&m_audioFifo);
m_videoThread = new DATVideoRenderThread(m_videoRender, m_videoStream); m_videoThread = new DATVideoRenderThread(m_videoRender, m_videoStream);
m_videoThread->setObjectName("vtDATVDemodSink");
} }
bool DATVDemodSink::audioActive() bool DATVDemodSink::audioActive()
@ -630,7 +631,7 @@ void DATVDemodSink::InitDATVFramework()
//*************** //***************
p_rawiq = new leansdr::pipebuf<leansdr::cf32>(m_objScheduler, "rawiq", BUF_BASEBAND); p_rawiq = new leansdr::pipebuf<leansdr::cf32>(m_objScheduler, "rawiq", BUF_BASEBAND);
p_rawiq_writer = new leansdr::pipewriter<leansdr::cf32>(*p_rawiq); p_rawiq_writer = new leansdr::pipewriter<leansdr::cf32>(*p_rawiq, m_RawIQMinWrite);
p_preprocessed = p_rawiq; p_preprocessed = p_rawiq;
// NOTCH FILTER // NOTCH FILTER
@ -961,7 +962,7 @@ void DATVDemodSink::InitDATVS2Framework()
//*************** //***************
p_rawiq = new leansdr::pipebuf<leansdr::cf32>(m_objScheduler, "rawiq", BUF_BASEBAND); p_rawiq = new leansdr::pipebuf<leansdr::cf32>(m_objScheduler, "rawiq", BUF_BASEBAND);
p_rawiq_writer = new leansdr::pipewriter<leansdr::cf32>(*p_rawiq); p_rawiq_writer = new leansdr::pipewriter<leansdr::cf32>(*p_rawiq, m_RawIQMinWrite);
p_preprocessed = p_rawiq; p_preprocessed = p_rawiq;
// NOTCH FILTER // NOTCH FILTER
@ -1148,7 +1149,7 @@ void DATVDemodSink::InitDATVS2Framework()
p_verrcount) p_verrcount)
; ;
leansdr::s2_fecdec_helper<leansdr::llr_t, leansdr::llr_sb> *fecdec = (leansdr::s2_fecdec_helper<leansdr::llr_t, leansdr::llr_sb> *) r_fecdechelper; leansdr::s2_fecdec_helper<leansdr::llr_t, leansdr::llr_sb> *fecdec = (leansdr::s2_fecdec_helper<leansdr::llr_t, leansdr::llr_sb> *) r_fecdechelper;
const int nhelpers = 6; const int nhelpers = 2;
fecdec->nhelpers = nhelpers; fecdec->nhelpers = nhelpers;
fecdec->must_buffer = false; fecdec->must_buffer = false;
fecdec->max_trials = m_settings.m_softLDPCMaxTrials; fecdec->max_trials = m_settings.m_softLDPCMaxTrials;
@ -1324,7 +1325,7 @@ void DATVDemodSink::feed(const SampleVector::const_iterator& begin, const Sample
m_objScheduler->step(); m_objScheduler->step();
m_lngReadIQ = 0; m_lngReadIQ = 0;
p_rawiq_writer->reset(); p_rawiq_writer->reset(m_RawIQMinWrite);
} }
} }
} }

View File

@ -219,6 +219,7 @@ private:
leansdr::pipebuf<leansdr::cf32> *p_rawiq; leansdr::pipebuf<leansdr::cf32> *p_rawiq;
leansdr::pipewriter<leansdr::cf32> *p_rawiq_writer; leansdr::pipewriter<leansdr::cf32> *p_rawiq_writer;
leansdr::pipebuf<leansdr::cf32> *p_preprocessed; leansdr::pipebuf<leansdr::cf32> *p_preprocessed;
static const int m_RawIQMinWrite = 1;
// NOTCH FILTER // NOTCH FILTER
leansdr::auto_notch<leansdr::f32> *r_auto_notch; leansdr::auto_notch<leansdr::f32> *r_auto_notch;

View File

@ -3397,7 +3397,7 @@ struct s2_fecdec_helper : runnable
p->procs = new helper_instance[nhelpers]; p->procs = new helper_instance[nhelpers];
for (int i = 0; i < nhelpers; ++i) { for (int i = 0; i < nhelpers; ++i) {
spawn_helper(&p->procs[i], pls); spawn_helper(&p->procs[i], pls, i);
} }
p->nprocs = nhelpers; p->nprocs = nhelpers;
@ -3449,7 +3449,7 @@ struct s2_fecdec_helper : runnable
} }
// Spawn a helper process. // Spawn a helper process.
void spawn_helper(helper_instance *h, const s2_pls *pls) void spawn_helper(helper_instance *h, const s2_pls *pls, imt)
{ {
if (sch->debug) { if (sch->debug) {
fprintf(stderr, "Spawning LDPC helper: modcod=%d sf=%d\n", pls->modcod, pls->sf); fprintf(stderr, "Spawning LDPC helper: modcod=%d sf=%d\n", pls->modcod, pls->sf);
@ -3639,7 +3639,7 @@ struct s2_fecdec_helper : runnable
pipebuf<int> *_errcount = nullptr pipebuf<int> *_errcount = nullptr
) : ) :
runnable(sch, "S2 fecdec io"), runnable(sch, "S2 fecdec io"),
batch_size(16), batch_size(32),
nhelpers(1), nhelpers(1),
must_buffer(false), must_buffer(false),
max_trials(8), max_trials(8),
@ -3771,7 +3771,7 @@ struct s2_fecdec_helper : runnable
p->procs = new helper_instance[nhelpers]; p->procs = new helper_instance[nhelpers];
for (int i = 0; i < nhelpers; ++i) { for (int i = 0; i < nhelpers; ++i) {
spawn_helper(&p->procs[i], pls); spawn_helper(&p->procs[i], pls, i);
} }
p->nprocs = nhelpers; p->nprocs = nhelpers;
@ -3813,10 +3813,11 @@ struct s2_fecdec_helper : runnable
} }
// Spawn a helper thread. // Spawn a helper thread.
void spawn_helper(helper_instance *h, const s2_pls *pls) void spawn_helper(helper_instance *h, const s2_pls *pls, int helper_index)
{ {
qDebug() << "s2_fecdec_helper: Spawning LDPC thread: modcod=" << pls->modcod << " sf=" << pls->sf; qDebug() << "s2_fecdec_helper: Spawning LDPC thread: modcod=" << pls->modcod << " sf=" << pls->sf;
h->m_thread = new QThread(); h->m_thread = new QThread();
h->m_thread->setObjectName(QString("ldpcDVBS2_%1").arg(helper_index));
h->m_worker = new LDPCWorker(pls->modcod, max_trials, batch_size, pls->sf); h->m_worker = new LDPCWorker(pls->modcod, max_trials, batch_size, pls->sf);
h->m_worker->moveToThread(h->m_thread); h->m_worker->moveToThread(h->m_thread);
h->batch_size = batch_size; h->batch_size = batch_size;