mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-10-25 10:00:21 -04:00 
			
		
		
		
	Moved FFT filter destruction at end of the mod or demod destructor
This commit is contained in:
		
							parent
							
								
									aa3f12ec46
								
							
						
					
					
						commit
						5c51297717
					
				| @ -63,12 +63,12 @@ ChannelAnalyzer::ChannelAnalyzer(DeviceSourceAPI *deviceAPI) : | |||||||
| 
 | 
 | ||||||
| ChannelAnalyzer::~ChannelAnalyzer() | ChannelAnalyzer::~ChannelAnalyzer() | ||||||
| { | { | ||||||
| 	if (SSBFilter) delete SSBFilter; |  | ||||||
| 	if (DSBFilter) delete DSBFilter; |  | ||||||
| 	m_deviceAPI->removeChannelAPI(this); | 	m_deviceAPI->removeChannelAPI(this); | ||||||
|     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); |     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); | ||||||
|     delete m_threadedChannelizer; |     delete m_threadedChannelizer; | ||||||
|     delete m_channelizer; |     delete m_channelizer; | ||||||
|  |     if (SSBFilter) delete SSBFilter; | ||||||
|  |     if (DSBFilter) delete DSBFilter; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ChannelAnalyzer::configure(MessageQueue* messageQueue, | void ChannelAnalyzer::configure(MessageQueue* messageQueue, | ||||||
|  | |||||||
| @ -60,12 +60,12 @@ ChannelAnalyzerNG::ChannelAnalyzerNG(DeviceSourceAPI *deviceAPI) : | |||||||
| 
 | 
 | ||||||
| ChannelAnalyzerNG::~ChannelAnalyzerNG() | ChannelAnalyzerNG::~ChannelAnalyzerNG() | ||||||
| { | { | ||||||
| 	delete SSBFilter; |  | ||||||
| 	delete DSBFilter; |  | ||||||
| 	m_deviceAPI->removeChannelAPI(this); | 	m_deviceAPI->removeChannelAPI(this); | ||||||
|     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); |     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); | ||||||
|     delete m_threadedChannelizer; |     delete m_threadedChannelizer; | ||||||
|     delete m_channelizer; |     delete m_channelizer; | ||||||
|  |     delete SSBFilter; | ||||||
|  |     delete DSBFilter; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ChannelAnalyzerNG::configure(MessageQueue* messageQueue, | void ChannelAnalyzerNG::configure(MessageQueue* messageQueue, | ||||||
|  | |||||||
| @ -101,6 +101,8 @@ ATVDemod::~ATVDemod() | |||||||
|     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); |     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); | ||||||
|     delete m_threadedChannelizer; |     delete m_threadedChannelizer; | ||||||
|     delete m_channelizer; |     delete m_channelizer; | ||||||
|  |     delete m_DSBFilter; | ||||||
|  |     delete m_DSBFilterBuffer; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ATVDemod::setTVScreen(TVScreen *objScreen) | void ATVDemod::setTVScreen(TVScreen *objScreen) | ||||||
|  | |||||||
| @ -78,7 +78,6 @@ BFMDemod::BFMDemod(DeviceSourceAPI *deviceAPI) : | |||||||
| 
 | 
 | ||||||
|     m_rfFilter = new fftfilt(-50000.0 / 384000.0, 50000.0 / 384000.0, filtFftLen); |     m_rfFilter = new fftfilt(-50000.0 / 384000.0, 50000.0 / 384000.0, filtFftLen); | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| 	m_deemphasisFilterX.configure(default_deemphasis * m_audioSampleRate * 1.0e-6); | 	m_deemphasisFilterX.configure(default_deemphasis * m_audioSampleRate * 1.0e-6); | ||||||
| 	m_deemphasisFilterY.configure(default_deemphasis * m_audioSampleRate * 1.0e-6); | 	m_deemphasisFilterY.configure(default_deemphasis * m_audioSampleRate * 1.0e-6); | ||||||
|  	m_phaseDiscri.setFMScaling(384000/m_fmExcursion); |  	m_phaseDiscri.setFMScaling(384000/m_fmExcursion); | ||||||
| @ -97,17 +96,13 @@ BFMDemod::BFMDemod(DeviceSourceAPI *deviceAPI) : | |||||||
| 
 | 
 | ||||||
| BFMDemod::~BFMDemod() | BFMDemod::~BFMDemod() | ||||||
| { | { | ||||||
| 	if (m_rfFilter) |  | ||||||
| 	{ |  | ||||||
| 		delete m_rfFilter; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); | ||||||
| 
 | 
 | ||||||
| 	m_deviceAPI->removeChannelAPI(this); | 	m_deviceAPI->removeChannelAPI(this); | ||||||
|     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); |     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); | ||||||
|     delete m_threadedChannelizer; |     delete m_threadedChannelizer; | ||||||
|     delete m_channelizer; |     delete m_channelizer; | ||||||
|  |     delete m_rfFilter; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void BFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst __attribute__((unused))) | void BFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst __attribute__((unused))) | ||||||
|  | |||||||
| @ -91,6 +91,7 @@ DATVDemod::~DATVDemod() | |||||||
|     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); |     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); | ||||||
|     delete m_threadedChannelizer; |     delete m_threadedChannelizer; | ||||||
|     delete m_channelizer; |     delete m_channelizer; | ||||||
|  |     delete m_objRFFilter; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool DATVDemod::SetTVScreen(TVScreen *objScreen) | bool DATVDemod::SetTVScreen(TVScreen *objScreen) | ||||||
|  | |||||||
| @ -96,14 +96,14 @@ SSBDemod::SSBDemod(DeviceSourceAPI *deviceAPI) : | |||||||
| 
 | 
 | ||||||
| SSBDemod::~SSBDemod() | SSBDemod::~SSBDemod() | ||||||
| { | { | ||||||
| 	if (SSBFilter) delete SSBFilter; |  | ||||||
| 	if (DSBFilter) delete DSBFilter; |  | ||||||
| 	DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); | ||||||
| 
 | 
 | ||||||
| 	m_deviceAPI->removeChannelAPI(this); | 	m_deviceAPI->removeChannelAPI(this); | ||||||
|     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); |     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); | ||||||
|     delete m_threadedChannelizer; |     delete m_threadedChannelizer; | ||||||
|     delete m_channelizer; |     delete m_channelizer; | ||||||
|  |     delete SSBFilter; | ||||||
|  |     delete DSBFilter; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void SSBDemod::configure(MessageQueue* messageQueue, | void SSBDemod::configure(MessageQueue* messageQueue, | ||||||
|  | |||||||
| @ -72,17 +72,13 @@ WFMDemod::WFMDemod(DeviceSourceAPI* deviceAPI) : | |||||||
| 
 | 
 | ||||||
| WFMDemod::~WFMDemod() | WFMDemod::~WFMDemod() | ||||||
| { | { | ||||||
| 	if (m_rfFilter) |  | ||||||
| 	{ |  | ||||||
| 		delete m_rfFilter; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); | ||||||
| 
 | 
 | ||||||
| 	m_deviceAPI->removeChannelAPI(this); | 	m_deviceAPI->removeChannelAPI(this); | ||||||
| 	m_deviceAPI->removeThreadedSink(m_threadedChannelizer); | 	m_deviceAPI->removeThreadedSink(m_threadedChannelizer); | ||||||
|     delete m_threadedChannelizer; |     delete m_threadedChannelizer; | ||||||
|     delete m_channelizer; |     delete m_channelizer; | ||||||
|  |     delete m_rfFilter; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void WFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst __attribute__((unused))) | void WFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst __attribute__((unused))) | ||||||
|  | |||||||
| @ -73,12 +73,11 @@ TCPSrc::TCPSrc(DeviceSourceAPI* deviceAPI) : | |||||||
| 
 | 
 | ||||||
| TCPSrc::~TCPSrc() | TCPSrc::~TCPSrc() | ||||||
| { | { | ||||||
| 	if (TCPFilter) delete TCPFilter; |  | ||||||
| 
 |  | ||||||
| 	m_deviceAPI->removeChannelAPI(this); | 	m_deviceAPI->removeChannelAPI(this); | ||||||
|     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); |     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); | ||||||
|     delete m_threadedChannelizer; |     delete m_threadedChannelizer; | ||||||
|     delete m_channelizer; |     delete m_channelizer; | ||||||
|  |     delete TCPFilter; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void TCPSrc::setSpectrum(MessageQueue* messageQueue, bool enabled) | void TCPSrc::setSpectrum(MessageQueue* messageQueue, bool enabled) | ||||||
|  | |||||||
| @ -117,12 +117,12 @@ UDPSrc::~UDPSrc() | |||||||
|     delete m_udpBuffer16; |     delete m_udpBuffer16; | ||||||
|     delete m_udpBufferMono16; |     delete m_udpBufferMono16; | ||||||
| 	delete[] m_udpAudioBuf; | 	delete[] m_udpAudioBuf; | ||||||
| 	if (UDPFilter) delete UDPFilter; |  | ||||||
| 	DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); | ||||||
| 	m_deviceAPI->removeChannelAPI(this); | 	m_deviceAPI->removeChannelAPI(this); | ||||||
|     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); |     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); | ||||||
|     delete m_threadedChannelizer; |     delete m_threadedChannelizer; | ||||||
|     delete m_channelizer; |     delete m_channelizer; | ||||||
|  |     delete UDPFilter; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void UDPSrc::setSpectrum(MessageQueue* messageQueue, bool enabled) | void UDPSrc::setSpectrum(MessageQueue* messageQueue, bool enabled) | ||||||
|  | |||||||
| @ -110,6 +110,10 @@ ATVMod::~ATVMod() | |||||||
|     m_deviceAPI->removeThreadedSource(m_threadedChannelizer); |     m_deviceAPI->removeThreadedSource(m_threadedChannelizer); | ||||||
|     delete m_threadedChannelizer; |     delete m_threadedChannelizer; | ||||||
|     delete m_channelizer; |     delete m_channelizer; | ||||||
|  |     delete m_SSBFilter; | ||||||
|  |     delete m_DSBFilter; | ||||||
|  |     delete[] m_SSBFilterBuffer; | ||||||
|  |     delete[] m_DSBFilterBuffer; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ATVMod::pullAudio(int nbSamples __attribute__((unused))) | void ATVMod::pullAudio(int nbSamples __attribute__((unused))) | ||||||
|  | |||||||
| @ -114,28 +114,17 @@ SSBMod::SSBMod(DeviceSinkAPI *deviceAPI) : | |||||||
| 
 | 
 | ||||||
| SSBMod::~SSBMod() | SSBMod::~SSBMod() | ||||||
| { | { | ||||||
|     if (m_SSBFilter) { |  | ||||||
|         delete m_SSBFilter; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (m_DSBFilter) { |  | ||||||
|         delete m_DSBFilter; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (m_SSBFilterBuffer) { |  | ||||||
|         delete m_SSBFilterBuffer; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (m_DSBFilterBuffer) { |  | ||||||
|         delete m_DSBFilterBuffer; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     DSPEngine::instance()->getAudioDeviceManager()->removeAudioSource(&m_audioFifo); |     DSPEngine::instance()->getAudioDeviceManager()->removeAudioSource(&m_audioFifo); | ||||||
| 
 | 
 | ||||||
|     m_deviceAPI->removeChannelAPI(this); |     m_deviceAPI->removeChannelAPI(this); | ||||||
|     m_deviceAPI->removeThreadedSource(m_threadedChannelizer); |     m_deviceAPI->removeThreadedSource(m_threadedChannelizer); | ||||||
|     delete m_threadedChannelizer; |     delete m_threadedChannelizer; | ||||||
|     delete m_channelizer; |     delete m_channelizer; | ||||||
|  | 
 | ||||||
|  |     delete m_SSBFilter; | ||||||
|  |     delete m_DSBFilter; | ||||||
|  |     delete[] m_SSBFilterBuffer; | ||||||
|  |     delete[] m_DSBFilterBuffer; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void SSBMod::pull(Sample& sample) | void SSBMod::pull(Sample& sample) | ||||||
|  | |||||||
| @ -98,13 +98,13 @@ WFMMod::WFMMod(DeviceSinkAPI *deviceAPI) : | |||||||
| 
 | 
 | ||||||
| WFMMod::~WFMMod() | WFMMod::~WFMMod() | ||||||
| { | { | ||||||
|     delete m_rfFilter; |  | ||||||
|     delete[] m_rfFilterBuffer; |  | ||||||
|     DSPEngine::instance()->getAudioDeviceManager()->removeAudioSource(&m_audioFifo); |     DSPEngine::instance()->getAudioDeviceManager()->removeAudioSource(&m_audioFifo); | ||||||
|     m_deviceAPI->removeChannelAPI(this); |     m_deviceAPI->removeChannelAPI(this); | ||||||
|     m_deviceAPI->removeThreadedSource(m_threadedChannelizer); |     m_deviceAPI->removeThreadedSource(m_threadedChannelizer); | ||||||
|     delete m_threadedChannelizer; |     delete m_threadedChannelizer; | ||||||
|     delete m_channelizer; |     delete m_channelizer; | ||||||
|  |     delete m_rfFilter; | ||||||
|  |     delete[] m_rfFilterBuffer; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void WFMMod::pull(Sample& sample) | void WFMMod::pull(Sample& sample) | ||||||
|  | |||||||
| @ -82,12 +82,12 @@ UDPSink::UDPSink(DeviceSinkAPI *deviceAPI) : | |||||||
| 
 | 
 | ||||||
| UDPSink::~UDPSink() | UDPSink::~UDPSink() | ||||||
| { | { | ||||||
|     delete[] m_SSBFilterBuffer; |  | ||||||
|     delete m_SSBFilter; |  | ||||||
|     m_deviceAPI->removeChannelAPI(this); |     m_deviceAPI->removeChannelAPI(this); | ||||||
|     m_deviceAPI->removeThreadedSource(m_threadedChannelizer); |     m_deviceAPI->removeThreadedSource(m_threadedChannelizer); | ||||||
|     delete m_threadedChannelizer; |     delete m_threadedChannelizer; | ||||||
|     delete m_channelizer; |     delete m_channelizer; | ||||||
|  |     delete m_SSBFilter; | ||||||
|  |     delete[] m_SSBFilterBuffer; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void UDPSink::start() | void UDPSink::start() | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user