mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 21:20:31 -05:00 
			
		
		
		
	DATV demod: small optimizations (2)
This commit is contained in:
		
							parent
							
								
									d70f431ec2
								
							
						
					
					
						commit
						03e29e9a1d
					
				@ -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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -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);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -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;
 | 
				
			||||||
 | 
				
			|||||||
@ -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;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user