mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-10-30 20:40:20 -04:00 
			
		
		
		
	Multiple audio support: removed audio methods from DSP engine and use AudioDeviceManager instead
This commit is contained in:
		
							parent
							
								
									f387ae884c
								
							
						
					
					
						commit
						15e62814de
					
				| @ -63,7 +63,7 @@ AMDemod::AMDemod(DeviceSourceAPI *deviceAPI) : | |||||||
| 
 | 
 | ||||||
| 	m_magsq = 0.0; | 	m_magsq = 0.0; | ||||||
| 
 | 
 | ||||||
| 	DSPEngine::instance()->addAudioSink(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(&m_audioFifo); | ||||||
|     m_audioNetSink = new AudioNetSink(0); // parent thread allocated dynamically
 |     m_audioNetSink = new AudioNetSink(0); // parent thread allocated dynamically
 | ||||||
|     m_audioNetSink->setDestination(m_settings.m_udpAddress, m_settings.m_udpPort); |     m_audioNetSink->setDestination(m_settings.m_udpAddress, m_settings.m_udpPort); | ||||||
| 
 | 
 | ||||||
| @ -78,7 +78,7 @@ AMDemod::AMDemod(DeviceSourceAPI *deviceAPI) : | |||||||
| 
 | 
 | ||||||
| AMDemod::~AMDemod() | AMDemod::~AMDemod() | ||||||
| { | { | ||||||
| 	DSPEngine::instance()->removeAudioSink(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); | ||||||
|     delete m_audioNetSink; |     delete m_audioNetSink; | ||||||
|     m_deviceAPI->removeChannelAPI(this); |     m_deviceAPI->removeChannelAPI(this); | ||||||
|     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); |     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); | ||||||
|  | |||||||
| @ -84,7 +84,7 @@ BFMDemod::BFMDemod(DeviceSourceAPI *deviceAPI) : | |||||||
| 	m_audioBuffer.resize(16384); | 	m_audioBuffer.resize(16384); | ||||||
| 	m_audioBufferFill = 0; | 	m_audioBufferFill = 0; | ||||||
| 
 | 
 | ||||||
| 	DSPEngine::instance()->addAudioSink(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(&m_audioFifo); | ||||||
|     m_audioNetSink = new AudioNetSink(0); // parent thread allocated dynamically
 |     m_audioNetSink = new AudioNetSink(0); // parent thread allocated dynamically
 | ||||||
|     m_audioNetSink->setDestination(m_settings.m_udpAddress, m_settings.m_udpPort); |     m_audioNetSink->setDestination(m_settings.m_udpAddress, m_settings.m_udpPort); | ||||||
|     m_audioNetSink->setStereo(true); |     m_audioNetSink->setStereo(true); | ||||||
| @ -105,7 +105,7 @@ BFMDemod::~BFMDemod() | |||||||
| 		delete m_rfFilter; | 		delete m_rfFilter; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	DSPEngine::instance()->removeAudioSink(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); | ||||||
| 	delete m_audioNetSink; | 	delete m_audioNetSink; | ||||||
| 
 | 
 | ||||||
| 	m_deviceAPI->removeChannelAPI(this); | 	m_deviceAPI->removeChannelAPI(this); | ||||||
|  | |||||||
| @ -72,8 +72,8 @@ DSDDemod::DSDDemod(DeviceSourceAPI *deviceAPI) : | |||||||
|     m_magsqPeak = 0.0f; |     m_magsqPeak = 0.0f; | ||||||
|     m_magsqCount = 0; |     m_magsqCount = 0; | ||||||
| 
 | 
 | ||||||
| 	DSPEngine::instance()->addAudioSink(&m_audioFifo1); |     DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(&m_audioFifo1); | ||||||
|     DSPEngine::instance()->addAudioSink(&m_audioFifo2); |     DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(&m_audioFifo2); | ||||||
| 
 | 
 | ||||||
| //    m_udpBufferAudio = new UDPSink<AudioSample>(this, m_udpBlockSize, m_settings.m_udpPort);
 | //    m_udpBufferAudio = new UDPSink<AudioSample>(this, m_udpBlockSize, m_settings.m_udpPort);
 | ||||||
| //    m_audioFifo1.setUDPSink(m_udpBufferAudio);
 | //    m_audioFifo1.setUDPSink(m_udpBufferAudio);
 | ||||||
| @ -96,8 +96,8 @@ DSDDemod::DSDDemod(DeviceSourceAPI *deviceAPI) : | |||||||
| DSDDemod::~DSDDemod() | DSDDemod::~DSDDemod() | ||||||
| { | { | ||||||
|     delete[] m_sampleBuffer; |     delete[] m_sampleBuffer; | ||||||
| 	DSPEngine::instance()->removeAudioSink(&m_audioFifo1); |     DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo1); | ||||||
|     DSPEngine::instance()->removeAudioSink(&m_audioFifo2); |     DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo2); | ||||||
| //    delete m_udpBufferAudio;
 | //    delete m_udpBufferAudio;
 | ||||||
|     delete m_audioNetSink; |     delete m_audioNetSink; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -80,7 +80,7 @@ NFMDemod::NFMDemod(DeviceSourceAPI *devieAPI) : | |||||||
| 	m_ctcssDetector.setCoefficients(3000, 6000.0); // 0.5s / 2 Hz resolution
 | 	m_ctcssDetector.setCoefficients(3000, 6000.0); // 0.5s / 2 Hz resolution
 | ||||||
| 	m_afSquelch.setCoefficients(24, 600, 48000.0, 200, 0); // 0.5ms test period, 300ms average span, 48kS/s SR, 100ms attack, no decay
 | 	m_afSquelch.setCoefficients(24, 600, 48000.0, 200, 0); // 0.5ms test period, 300ms average span, 48kS/s SR, 100ms attack, no decay
 | ||||||
| 
 | 
 | ||||||
| 	DSPEngine::instance()->addAudioSink(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(&m_audioFifo); | ||||||
| 	m_audioNetSink = new AudioNetSink(0); // parent thread allocated dynamically
 | 	m_audioNetSink = new AudioNetSink(0); // parent thread allocated dynamically
 | ||||||
| 	m_audioNetSink->setDestination(m_settings.m_udpAddress, m_settings.m_udpPort); | 	m_audioNetSink->setDestination(m_settings.m_udpAddress, m_settings.m_udpPort); | ||||||
| 
 | 
 | ||||||
| @ -95,7 +95,7 @@ NFMDemod::NFMDemod(DeviceSourceAPI *devieAPI) : | |||||||
| 
 | 
 | ||||||
| NFMDemod::~NFMDemod() | NFMDemod::~NFMDemod() | ||||||
| { | { | ||||||
| 	DSPEngine::instance()->removeAudioSink(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); | ||||||
| 	delete m_audioNetSink; | 	delete m_audioNetSink; | ||||||
| 	m_deviceAPI->removeChannelAPI(this); | 	m_deviceAPI->removeChannelAPI(this); | ||||||
|     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); |     m_deviceAPI->removeThreadedSink(m_threadedChannelizer); | ||||||
|  | |||||||
| @ -85,7 +85,7 @@ SSBDemod::SSBDemod(DeviceSourceAPI *deviceAPI) : | |||||||
| 	SSBFilter = new fftfilt(m_LowCutoff / m_audioSampleRate, m_Bandwidth / m_audioSampleRate, ssbFftLen); | 	SSBFilter = new fftfilt(m_LowCutoff / m_audioSampleRate, m_Bandwidth / m_audioSampleRate, ssbFftLen); | ||||||
| 	DSBFilter = new fftfilt((2.0f * m_Bandwidth) / m_audioSampleRate, 2 * ssbFftLen); | 	DSBFilter = new fftfilt((2.0f * m_Bandwidth) / m_audioSampleRate, 2 * ssbFftLen); | ||||||
| 
 | 
 | ||||||
| 	DSPEngine::instance()->addAudioSink(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(&m_audioFifo); | ||||||
|     m_audioNetSink = new AudioNetSink(0); // parent thread allocated dynamically
 |     m_audioNetSink = new AudioNetSink(0); // parent thread allocated dynamically
 | ||||||
|     m_audioNetSink->setDestination(m_settings.m_udpAddress, m_settings.m_udpPort); |     m_audioNetSink->setDestination(m_settings.m_udpAddress, m_settings.m_udpPort); | ||||||
| 
 | 
 | ||||||
| @ -102,7 +102,7 @@ SSBDemod::~SSBDemod() | |||||||
| { | { | ||||||
| 	if (SSBFilter) delete SSBFilter; | 	if (SSBFilter) delete SSBFilter; | ||||||
| 	if (DSBFilter) delete DSBFilter; | 	if (DSBFilter) delete DSBFilter; | ||||||
| 	DSPEngine::instance()->removeAudioSink(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); | ||||||
|     delete m_audioNetSink; |     delete m_audioNetSink; | ||||||
| 
 | 
 | ||||||
| 	m_deviceAPI->removeChannelAPI(this); | 	m_deviceAPI->removeChannelAPI(this); | ||||||
|  | |||||||
| @ -59,7 +59,7 @@ WFMDemod::WFMDemod(DeviceSourceAPI* deviceAPI) : | |||||||
| 	m_audioBuffer.resize(16384); | 	m_audioBuffer.resize(16384); | ||||||
| 	m_audioBufferFill = 0; | 	m_audioBufferFill = 0; | ||||||
| 
 | 
 | ||||||
| 	DSPEngine::instance()->addAudioSink(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(&m_audioFifo); | ||||||
|     m_audioNetSink = new AudioNetSink(0); // parent thread allocated dynamically
 |     m_audioNetSink = new AudioNetSink(0); // parent thread allocated dynamically
 | ||||||
|     m_audioNetSink->setDestination(m_settings.m_udpAddress, m_settings.m_udpPort); |     m_audioNetSink->setDestination(m_settings.m_udpAddress, m_settings.m_udpPort); | ||||||
| 
 | 
 | ||||||
| @ -79,7 +79,7 @@ WFMDemod::~WFMDemod() | |||||||
| 		delete m_rfFilter; | 		delete m_rfFilter; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	DSPEngine::instance()->removeAudioSink(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); | ||||||
|     delete m_audioNetSink; |     delete m_audioNetSink; | ||||||
| 
 | 
 | ||||||
| 	m_deviceAPI->removeChannelAPI(this); | 	m_deviceAPI->removeChannelAPI(this); | ||||||
|  | |||||||
| @ -118,7 +118,7 @@ UDPSrc::~UDPSrc() | |||||||
|     delete m_udpBufferMono16; |     delete m_udpBufferMono16; | ||||||
| 	delete[] m_udpAudioBuf; | 	delete[] m_udpAudioBuf; | ||||||
| 	if (UDPFilter) delete UDPFilter; | 	if (UDPFilter) delete UDPFilter; | ||||||
| 	if (m_settings.m_audioActive) DSPEngine::instance()->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; | ||||||
| @ -543,11 +543,11 @@ void UDPSrc::applySettings(const UDPSrcSettings& settings, bool force) | |||||||
|         if (settings.m_audioActive) |         if (settings.m_audioActive) | ||||||
|         { |         { | ||||||
|             m_audioBufferFill = 0; |             m_audioBufferFill = 0; | ||||||
|             DSPEngine::instance()->addAudioSink(&m_audioFifo); |             DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(&m_audioFifo); | ||||||
|         } |         } | ||||||
|         else |         else | ||||||
|         { |         { | ||||||
|             DSPEngine::instance()->removeAudioSink(&m_audioFifo); |             DSPEngine::instance()->getAudioDeviceManager()->removeAudioSink(&m_audioFifo); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -66,7 +66,7 @@ AMMod::AMMod(DeviceSinkAPI *deviceAPI) : | |||||||
| 	m_magsq = 0.0; | 	m_magsq = 0.0; | ||||||
| 
 | 
 | ||||||
| 	m_toneNco.setFreq(1000.0, m_settings.m_audioSampleRate); | 	m_toneNco.setFreq(1000.0, m_settings.m_audioSampleRate); | ||||||
| 	DSPEngine::instance()->addAudioSource(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->addAudioSource(&m_audioFifo); | ||||||
| 
 | 
 | ||||||
| 	// CW keyer
 | 	// CW keyer
 | ||||||
| 	m_cwKeyer.setSampleRate(m_settings.m_audioSampleRate); | 	m_cwKeyer.setSampleRate(m_settings.m_audioSampleRate); | ||||||
| @ -88,7 +88,7 @@ AMMod::~AMMod() | |||||||
|     m_deviceAPI->removeThreadedSource(m_threadedChannelizer); |     m_deviceAPI->removeThreadedSource(m_threadedChannelizer); | ||||||
|     delete m_threadedChannelizer; |     delete m_threadedChannelizer; | ||||||
|     delete m_channelizer; |     delete m_channelizer; | ||||||
|     DSPEngine::instance()->removeAudioSource(&m_audioFifo); |     DSPEngine::instance()->getAudioDeviceManager()->removeAudioSource(&m_audioFifo); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void AMMod::pull(Sample& sample) | void AMMod::pull(Sample& sample) | ||||||
|  | |||||||
| @ -73,7 +73,7 @@ NFMMod::NFMMod(DeviceSinkAPI *deviceAPI) : | |||||||
| 
 | 
 | ||||||
| 	m_toneNco.setFreq(1000.0, m_settings.m_audioSampleRate); | 	m_toneNco.setFreq(1000.0, m_settings.m_audioSampleRate); | ||||||
| 	m_ctcssNco.setFreq(88.5, m_settings.m_audioSampleRate); | 	m_ctcssNco.setFreq(88.5, m_settings.m_audioSampleRate); | ||||||
| 	DSPEngine::instance()->addAudioSource(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->addAudioSource(&m_audioFifo); | ||||||
| 
 | 
 | ||||||
|     // CW keyer
 |     // CW keyer
 | ||||||
|     m_cwKeyer.setSampleRate(m_settings.m_audioSampleRate); |     m_cwKeyer.setSampleRate(m_settings.m_audioSampleRate); | ||||||
| @ -91,7 +91,7 @@ NFMMod::NFMMod(DeviceSinkAPI *deviceAPI) : | |||||||
| 
 | 
 | ||||||
| NFMMod::~NFMMod() | NFMMod::~NFMMod() | ||||||
| { | { | ||||||
|     DSPEngine::instance()->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; | ||||||
|  | |||||||
| @ -88,7 +88,7 @@ SSBMod::SSBMod(DeviceSinkAPI *deviceAPI) : | |||||||
| 	m_magsq = 0.0; | 	m_magsq = 0.0; | ||||||
| 
 | 
 | ||||||
| 	m_toneNco.setFreq(1000.0, m_settings.m_audioSampleRate); | 	m_toneNco.setFreq(1000.0, m_settings.m_audioSampleRate); | ||||||
| 	DSPEngine::instance()->addAudioSource(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->addAudioSource(&m_audioFifo); | ||||||
| 
 | 
 | ||||||
| 	// CW keyer
 | 	// CW keyer
 | ||||||
| 	m_cwKeyer.setSampleRate(m_settings.m_audioSampleRate); | 	m_cwKeyer.setSampleRate(m_settings.m_audioSampleRate); | ||||||
| @ -126,7 +126,7 @@ SSBMod::~SSBMod() | |||||||
|         delete m_DSBFilterBuffer; |         delete m_DSBFilterBuffer; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     DSPEngine::instance()->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); | ||||||
|  | |||||||
| @ -75,7 +75,7 @@ WFMMod::WFMMod(DeviceSinkAPI *deviceAPI) : | |||||||
| 
 | 
 | ||||||
| 	m_toneNco.setFreq(1000.0, m_settings.m_audioSampleRate); | 	m_toneNco.setFreq(1000.0, m_settings.m_audioSampleRate); | ||||||
| 	m_toneNcoRF.setFreq(1000.0, m_outputSampleRate); | 	m_toneNcoRF.setFreq(1000.0, m_outputSampleRate); | ||||||
| 	DSPEngine::instance()->addAudioSource(&m_audioFifo); | 	DSPEngine::instance()->getAudioDeviceManager()->addAudioSource(&m_audioFifo); | ||||||
| 
 | 
 | ||||||
|     // CW keyer
 |     // CW keyer
 | ||||||
|     m_cwKeyer.setSampleRate(m_outputSampleRate); |     m_cwKeyer.setSampleRate(m_outputSampleRate); | ||||||
| @ -96,7 +96,7 @@ WFMMod::~WFMMod() | |||||||
| { | { | ||||||
|     delete m_rfFilter; |     delete m_rfFilter; | ||||||
|     delete[] m_rfFilterBuffer; |     delete[] m_rfFilterBuffer; | ||||||
|     DSPEngine::instance()->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; | ||||||
|  | |||||||
| @ -91,52 +91,6 @@ void DSPEngine::removeLastDeviceSinkEngine() | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DSPEngine::startAudioOutput() |  | ||||||
| { |  | ||||||
|     m_audioOutput.start(m_audioOutputDeviceIndex, m_audioOutputSampleRate); |  | ||||||
|     m_audioOutputSampleRate = m_audioOutput.getRate(); // update with actual rate
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void DSPEngine::stopAudioOutput() |  | ||||||
| { |  | ||||||
|     m_audioOutput.stop(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void DSPEngine::startAudioInput() |  | ||||||
| { |  | ||||||
|     m_audioInput.start(m_audioInputDeviceIndex, m_audioInputSampleRate); |  | ||||||
|     m_audioInputSampleRate = m_audioInput.getRate(); // update with actual rate
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void DSPEngine::stopAudioInput() |  | ||||||
| { |  | ||||||
|     m_audioInput.stop(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void DSPEngine::addAudioSink(AudioFifo* audioFifo) |  | ||||||
| { |  | ||||||
| 	qDebug("DSPEngine::addAudioSink"); |  | ||||||
| 	m_audioOutput.addFifo(audioFifo); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void DSPEngine::removeAudioSink(AudioFifo* audioFifo) |  | ||||||
| { |  | ||||||
| 	qDebug("DSPEngine::removeAudioSink"); |  | ||||||
| 	m_audioOutput.removeFifo(audioFifo); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void DSPEngine::addAudioSource(AudioFifo* audioFifo) |  | ||||||
| { |  | ||||||
|     qDebug("DSPEngine::addAudioSource"); |  | ||||||
|     m_audioInput.addFifo(audioFifo); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void DSPEngine::removeAudioSource(AudioFifo* audioFifo) |  | ||||||
| { |  | ||||||
|     qDebug("DSPEngine::removeAudioSource"); |  | ||||||
|     m_audioInput.removeFifo(audioFifo); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| DSPDeviceSourceEngine *DSPEngine::getDeviceSourceEngineByUID(uint uid) | DSPDeviceSourceEngine *DSPEngine::getDeviceSourceEngineByUID(uint uid) | ||||||
| { | { | ||||||
|     std::vector<DSPDeviceSourceEngine*>::iterator it = m_deviceSourceEngines.begin(); |     std::vector<DSPDeviceSourceEngine*>::iterator it = m_deviceSourceEngines.begin(); | ||||||
|  | |||||||
| @ -50,14 +50,11 @@ public: | |||||||
| 	void removeLastDeviceSinkEngine(); | 	void removeLastDeviceSinkEngine(); | ||||||
| 
 | 
 | ||||||
| 	AudioDeviceManager *getAudioDeviceManager() { return &m_audioDeviceManager; } | 	AudioDeviceManager *getAudioDeviceManager() { return &m_audioDeviceManager; } | ||||||
| 	void startAudioOutput(); | 	void startAudioOutput() { m_audioDeviceManager.startAudioOutput(); } | ||||||
| 	void stopAudioOutput(); | 	void stopAudioOutput() { m_audioDeviceManager.stopAudioOutput(); } | ||||||
|     void setAudioOutputDeviceIndex(int index) { m_audioOutputDeviceIndex = index; } |  | ||||||
| 
 | 
 | ||||||
|     void startAudioInput(); |     void startAudioInput() { m_audioDeviceManager.startAudioInput(); } | ||||||
|     void stopAudioInput(); |     void stopAudioInput() {m_audioDeviceManager.stopAudioInput(); } | ||||||
|     void setAudioInputVolume(float volume) { m_audioInput.setVolume(volume); } |  | ||||||
|     void setAudioInputDeviceIndex(int index) { m_audioInputDeviceIndex = index; } |  | ||||||
| 
 | 
 | ||||||
|     DSPDeviceSourceEngine *getDeviceSourceEngineByIndex(uint deviceIndex) { return m_deviceSourceEngines[deviceIndex]; } |     DSPDeviceSourceEngine *getDeviceSourceEngineByIndex(uint deviceIndex) { return m_deviceSourceEngines[deviceIndex]; } | ||||||
|     DSPDeviceSourceEngine *getDeviceSourceEngineByUID(uint uid); |     DSPDeviceSourceEngine *getDeviceSourceEngineByUID(uint uid); | ||||||
| @ -65,12 +62,6 @@ public: | |||||||
|     DSPDeviceSinkEngine *getDeviceSinkEngineByIndex(uint deviceIndex) { return m_deviceSinkEngines[deviceIndex]; } |     DSPDeviceSinkEngine *getDeviceSinkEngineByIndex(uint deviceIndex) { return m_deviceSinkEngines[deviceIndex]; } | ||||||
|     DSPDeviceSinkEngine *getDeviceSinkEngineByUID(uint uid); |     DSPDeviceSinkEngine *getDeviceSinkEngineByUID(uint uid); | ||||||
| 
 | 
 | ||||||
|     void addAudioSink(AudioFifo* audioFifo); //!< Add the audio sink
 |  | ||||||
| 	void removeAudioSink(AudioFifo* audioFifo); //!< Remove the audio sink
 |  | ||||||
| 
 |  | ||||||
| 	void addAudioSource(AudioFifo* audioFifo); //!< Add an audio source
 |  | ||||||
|     void removeAudioSource(AudioFifo* audioFifo); //!< Remove an audio source
 |  | ||||||
| 
 |  | ||||||
| 	// Serial DV methods:
 | 	// Serial DV methods:
 | ||||||
| 
 | 
 | ||||||
| 	bool hasDVSerialSupport(); | 	bool hasDVSerialSupport(); | ||||||
|  | |||||||
| @ -1,13 +1,13 @@ | |||||||
| #include <gui/audiodialog.h> | #include "audiodialog.h" | ||||||
| 
 | 
 | ||||||
| #include <audio/audiodevicemanager.h> | #include <audio/audiodevicemanager.h> | ||||||
| #include <QTreeWidgetItem> | #include <QTreeWidgetItem> | ||||||
| #include "ui_audiodialog.h" | #include "ui_audiodialog.h" | ||||||
| 
 | 
 | ||||||
| AudioDialog::AudioDialog(AudioDeviceManager* audioDeviceInfo, QWidget* parent) : | AudioDialog::AudioDialog(AudioDeviceManager* audioDeviceManager, QWidget* parent) : | ||||||
| 	QDialog(parent), | 	QDialog(parent), | ||||||
| 	ui(new Ui::AudioDialog), | 	ui(new Ui::AudioDialog), | ||||||
| 	m_audioDeviceInfo(audioDeviceInfo) | 	m_audioDeviceManager(audioDeviceManager) | ||||||
| { | { | ||||||
| 	ui->setupUi(this); | 	ui->setupUi(this); | ||||||
| 	QTreeWidgetItem* treeItem; | 	QTreeWidgetItem* treeItem; | ||||||
| @ -18,7 +18,7 @@ AudioDialog::AudioDialog(AudioDeviceManager* audioDeviceInfo, QWidget* parent) : | |||||||
| 	treeItem = new QTreeWidgetItem(ui->audioOutTree); | 	treeItem = new QTreeWidgetItem(ui->audioOutTree); | ||||||
| 	treeItem->setText(0, tr("Default (use first suitable device)")); | 	treeItem->setText(0, tr("Default (use first suitable device)")); | ||||||
| 
 | 
 | ||||||
| 	const QList<QAudioDeviceInfo>& outputDevices = m_audioDeviceInfo->getOutputDevices(); | 	const QList<QAudioDeviceInfo>& outputDevices = m_audioDeviceManager->getOutputDevices(); | ||||||
| 	i = 0; | 	i = 0; | ||||||
| 
 | 
 | ||||||
|     for(QList<QAudioDeviceInfo>::const_iterator it = outputDevices.begin(); it != outputDevices.end(); ++it) |     for(QList<QAudioDeviceInfo>::const_iterator it = outputDevices.begin(); it != outputDevices.end(); ++it) | ||||||
| @ -26,7 +26,7 @@ AudioDialog::AudioDialog(AudioDeviceManager* audioDeviceInfo, QWidget* parent) : | |||||||
|         treeItem = new QTreeWidgetItem(ui->audioOutTree); |         treeItem = new QTreeWidgetItem(ui->audioOutTree); | ||||||
|         treeItem->setText(0, qPrintable(it->deviceName())); |         treeItem->setText(0, qPrintable(it->deviceName())); | ||||||
| 
 | 
 | ||||||
|         if (i == m_audioDeviceInfo->getOutputDeviceIndex()) |         if (i == m_audioDeviceManager->getOutputDeviceIndex()) | ||||||
|         { |         { | ||||||
|             ui->audioOutTree->setCurrentItem(treeItem); |             ui->audioOutTree->setCurrentItem(treeItem); | ||||||
|         } |         } | ||||||
| @ -39,7 +39,7 @@ AudioDialog::AudioDialog(AudioDeviceManager* audioDeviceInfo, QWidget* parent) : | |||||||
|     treeItem = new QTreeWidgetItem(ui->audioInTree); |     treeItem = new QTreeWidgetItem(ui->audioInTree); | ||||||
|     treeItem->setText(0, tr("Default (use first suitable device)")); |     treeItem->setText(0, tr("Default (use first suitable device)")); | ||||||
| 
 | 
 | ||||||
|     const QList<QAudioDeviceInfo>& inputDevices = m_audioDeviceInfo->getInputDevices(); |     const QList<QAudioDeviceInfo>& inputDevices = m_audioDeviceManager->getInputDevices(); | ||||||
|     i = 0; |     i = 0; | ||||||
| 
 | 
 | ||||||
|     for(QList<QAudioDeviceInfo>::const_iterator it = inputDevices.begin(); it != inputDevices.end(); ++it) |     for(QList<QAudioDeviceInfo>::const_iterator it = inputDevices.begin(); it != inputDevices.end(); ++it) | ||||||
| @ -47,7 +47,7 @@ AudioDialog::AudioDialog(AudioDeviceManager* audioDeviceInfo, QWidget* parent) : | |||||||
|         treeItem = new QTreeWidgetItem(ui->audioInTree); |         treeItem = new QTreeWidgetItem(ui->audioInTree); | ||||||
|         treeItem->setText(0, qPrintable(it->deviceName())); |         treeItem->setText(0, qPrintable(it->deviceName())); | ||||||
| 
 | 
 | ||||||
|         if (i == m_audioDeviceInfo->getInputDeviceIndex()) |         if (i == m_audioDeviceManager->getInputDeviceIndex()) | ||||||
|         { |         { | ||||||
|             ui->audioInTree->setCurrentItem(treeItem); |             ui->audioInTree->setCurrentItem(treeItem); | ||||||
|         } |         } | ||||||
| @ -65,7 +65,7 @@ AudioDialog::AudioDialog(AudioDeviceManager* audioDeviceInfo, QWidget* parent) : | |||||||
| 
 | 
 | ||||||
| 	ui->tabWidget->setCurrentIndex(0); | 	ui->tabWidget->setCurrentIndex(0); | ||||||
| 
 | 
 | ||||||
|     m_inputVolume = m_audioDeviceInfo->m_inputVolume; |     m_inputVolume = m_audioDeviceManager->m_inputVolume; | ||||||
| 	ui->inputVolume->setValue((int) (m_inputVolume * 100.0f)); | 	ui->inputVolume->setValue((int) (m_inputVolume * 100.0f)); | ||||||
| 	ui->inputVolumeText->setText(QString("%1").arg(m_inputVolume, 0, 'f', 2)); | 	ui->inputVolumeText->setText(QString("%1").arg(m_inputVolume, 0, 'f', 2)); | ||||||
| } | } | ||||||
| @ -80,9 +80,9 @@ void AudioDialog::accept() | |||||||
|     int inIndex = ui->audioInTree->indexOfTopLevelItem(ui->audioInTree->currentItem()); |     int inIndex = ui->audioInTree->indexOfTopLevelItem(ui->audioInTree->currentItem()); | ||||||
|     int outIndex = ui->audioOutTree->indexOfTopLevelItem(ui->audioOutTree->currentItem()); |     int outIndex = ui->audioOutTree->indexOfTopLevelItem(ui->audioOutTree->currentItem()); | ||||||
| 
 | 
 | ||||||
|     m_audioDeviceInfo->m_inputDeviceIndex = inIndex - 1; |     m_audioDeviceManager->m_inputDeviceIndex = inIndex - 1; | ||||||
|     m_audioDeviceInfo->m_outputDeviceIndex = outIndex - 1; |     m_audioDeviceManager->m_outputDeviceIndex = outIndex - 1; | ||||||
|     m_audioDeviceInfo->m_inputVolume = m_inputVolume; |     m_audioDeviceManager->m_inputVolume = m_inputVolume; | ||||||
| 
 | 
 | ||||||
| 	QDialog::accept(); | 	QDialog::accept(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -15,13 +15,13 @@ class SDRGUI_API AudioDialog : public QDialog { | |||||||
| 	Q_OBJECT | 	Q_OBJECT | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
| 	explicit AudioDialog(AudioDeviceManager* audioDeviceInfo, QWidget* parent = NULL); | 	explicit AudioDialog(AudioDeviceManager* audioDeviceManager, QWidget* parent = 0); | ||||||
| 	~AudioDialog(); | 	~AudioDialog(); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
| 	Ui::AudioDialog* ui; | 	Ui::AudioDialog* ui; | ||||||
| 
 | 
 | ||||||
| 	AudioDeviceManager* m_audioDeviceInfo; | 	AudioDeviceManager* m_audioDeviceManager; | ||||||
| 	float m_inputVolume; | 	float m_inputVolume; | ||||||
| 
 | 
 | ||||||
| private slots: | private slots: | ||||||
|  | |||||||
| @ -1416,9 +1416,6 @@ void MainWindow::on_action_Audio_triggered() | |||||||
| { | { | ||||||
| 	AudioDialog audioDialog(m_dspEngine->getAudioDeviceManager(), this); | 	AudioDialog audioDialog(m_dspEngine->getAudioDeviceManager(), this); | ||||||
| 	audioDialog.exec(); | 	audioDialog.exec(); | ||||||
| 	m_dspEngine->setAudioInputVolume(m_dspEngine->getAudioDeviceManager()->getInputVolume()); |  | ||||||
| 	m_dspEngine->setAudioInputDeviceIndex(m_dspEngine->getAudioDeviceManager()->getInputDeviceIndex()); |  | ||||||
| 	m_dspEngine->setAudioOutputDeviceIndex(m_dspEngine->getAudioDeviceManager()->getOutputDeviceIndex()); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void MainWindow::on_action_Logging_triggered() | void MainWindow::on_action_Logging_triggered() | ||||||
|  | |||||||
| @ -280,10 +280,6 @@ int WebAPIAdapterGUI::instanceAudioPatch( | |||||||
|     m_mainWindow.m_dspEngine->getAudioDeviceManager()->setInputDeviceIndex(inputIndex); |     m_mainWindow.m_dspEngine->getAudioDeviceManager()->setInputDeviceIndex(inputIndex); | ||||||
|     m_mainWindow.m_dspEngine->getAudioDeviceManager()->setOutputDeviceIndex(outputIndex); |     m_mainWindow.m_dspEngine->getAudioDeviceManager()->setOutputDeviceIndex(outputIndex); | ||||||
| 
 | 
 | ||||||
|     m_mainWindow.m_dspEngine->setAudioInputVolume(inputVolume); |  | ||||||
|     m_mainWindow.m_dspEngine->setAudioInputDeviceIndex(inputIndex); |  | ||||||
|     m_mainWindow.m_dspEngine->setAudioOutputDeviceIndex(outputIndex); |  | ||||||
| 
 |  | ||||||
|     response.setInputVolume(m_mainWindow.m_dspEngine->getAudioDeviceManager()->getInputVolume()); |     response.setInputVolume(m_mainWindow.m_dspEngine->getAudioDeviceManager()->getInputVolume()); | ||||||
|     response.setInputIndex(m_mainWindow.m_dspEngine->getAudioDeviceManager()->getInputDeviceIndex()); |     response.setInputIndex(m_mainWindow.m_dspEngine->getAudioDeviceManager()->getInputDeviceIndex()); | ||||||
|     response.setOutputIndex(m_mainWindow.m_dspEngine->getAudioDeviceManager()->getOutputDeviceIndex()); |     response.setOutputIndex(m_mainWindow.m_dspEngine->getAudioDeviceManager()->getOutputDeviceIndex()); | ||||||
|  | |||||||
| @ -281,10 +281,6 @@ int WebAPIAdapterSrv::instanceAudioPatch( | |||||||
|     m_mainCore.m_dspEngine->getAudioDeviceManager()->setInputDeviceIndex(inputIndex); |     m_mainCore.m_dspEngine->getAudioDeviceManager()->setInputDeviceIndex(inputIndex); | ||||||
|     m_mainCore.m_dspEngine->getAudioDeviceManager()->setOutputDeviceIndex(outputIndex); |     m_mainCore.m_dspEngine->getAudioDeviceManager()->setOutputDeviceIndex(outputIndex); | ||||||
| 
 | 
 | ||||||
|     m_mainCore.m_dspEngine->setAudioInputVolume(inputVolume); |  | ||||||
|     m_mainCore.m_dspEngine->setAudioInputDeviceIndex(inputIndex); |  | ||||||
|     m_mainCore.m_dspEngine->setAudioOutputDeviceIndex(outputIndex); |  | ||||||
| 
 |  | ||||||
|     response.setInputVolume(m_mainCore.m_dspEngine->getAudioDeviceManager()->getInputVolume()); |     response.setInputVolume(m_mainCore.m_dspEngine->getAudioDeviceManager()->getInputVolume()); | ||||||
|     response.setInputIndex(m_mainCore.m_dspEngine->getAudioDeviceManager()->getInputDeviceIndex()); |     response.setInputIndex(m_mainCore.m_dspEngine->getAudioDeviceManager()->getInputDeviceIndex()); | ||||||
|     response.setOutputIndex(m_mainCore.m_dspEngine->getAudioDeviceManager()->getOutputDeviceIndex()); |     response.setOutputIndex(m_mainCore.m_dspEngine->getAudioDeviceManager()->getOutputDeviceIndex()); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user