1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-08-23 16:02:32 -04:00

DSD demod: implemented audio duplication to UDP

This commit is contained in:
f4exb 2017-08-24 13:51:24 +02:00
parent 3583996c4a
commit f74e74af12
2 changed files with 18 additions and 24 deletions

View File

@ -60,8 +60,6 @@ DSDDemod::DSDDemod(BasebandSampleSink* sampleSink) :
m_config.m_audioSampleRate = DSPEngine::instance()->getAudioSampleRate(); m_config.m_audioSampleRate = DSPEngine::instance()->getAudioSampleRate();
m_config.m_enableCosineFiltering = false; m_config.m_enableCosineFiltering = false;
apply();
m_audioBuffer.resize(1<<14); m_audioBuffer.resize(1<<14);
m_audioBufferFill = 0; m_audioBufferFill = 0;
@ -77,12 +75,16 @@ DSDDemod::DSDDemod(BasebandSampleSink* sampleSink) :
DSPEngine::instance()->addAudioSink(&m_audioFifo1); DSPEngine::instance()->addAudioSink(&m_audioFifo1);
DSPEngine::instance()->addAudioSink(&m_audioFifo2); DSPEngine::instance()->addAudioSink(&m_audioFifo2);
m_udpBufferMono = new UDPSink<FixReal>(this, m_udpBlockSize, m_config.m_udpPort); m_udpBufferAudio = new UDPSink<qint16>(this, m_udpBlockSize, m_config.m_udpPort);
m_audioFifo1.setUDPSink(m_udpBufferAudio);
m_audioFifo2.setUDPSink(m_udpBufferAudio);
apply(true);
} }
DSDDemod::~DSDDemod() DSDDemod::~DSDDemod()
{ {
delete m_udpBufferMono; delete m_udpBufferAudio;
delete[] m_sampleBuffer; delete[] m_sampleBuffer;
DSPEngine::instance()->removeAudioSink(&m_audioFifo1); DSPEngine::instance()->removeAudioSink(&m_audioFifo1);
DSPEngine::instance()->removeAudioSink(&m_audioFifo2); DSPEngine::instance()->removeAudioSink(&m_audioFifo2);
@ -483,25 +485,17 @@ void DSDDemod::apply(bool force)
if ((m_config.m_udpAddress != m_running.m_udpAddress) if ((m_config.m_udpAddress != m_running.m_udpAddress)
|| (m_config.m_udpPort != m_running.m_udpPort) || force) || (m_config.m_udpPort != m_running.m_udpPort) || force)
{ {
m_udpBufferMono->setAddress(m_config.m_udpAddress); m_udpBufferAudio->setAddress(m_config.m_udpAddress);
m_udpBufferMono->setPort(m_config.m_udpPort); m_udpBufferAudio->setPort(m_config.m_udpPort);
} }
m_running.m_inputSampleRate = m_config.m_inputSampleRate; if ((m_config.m_udpCopyAudio != m_running.m_udpCopyAudio)
m_running.m_inputFrequencyOffset = m_config.m_inputFrequencyOffset; || (m_config.m_slot1On != m_running.m_slot1On)
m_running.m_rfBandwidth = m_config.m_rfBandwidth; || (m_config.m_slot2On != m_running.m_slot2On) || force)
m_running.m_demodGain = m_config.m_demodGain; {
m_running.m_fmDeviation = m_config.m_fmDeviation; m_audioFifo1.setCopyToUDP(m_config.m_slot1On && m_config.m_udpCopyAudio);
m_running.m_squelchGate = m_config.m_squelchGate; m_audioFifo2.setCopyToUDP(m_config.m_slot2On && m_config.m_udpCopyAudio);
m_running.m_squelch = m_config.m_squelch; }
m_running.m_volume = m_config.m_volume;
m_running.m_baudRate = m_config.m_baudRate; m_running = m_config;
m_running.m_audioSampleRate = m_config.m_audioSampleRate;
m_running.m_audioMute = m_config.m_audioMute;
m_running.m_enableCosineFiltering = m_config.m_enableCosineFiltering;
m_running.m_syncOrConstellation = m_config.m_syncOrConstellation;
m_running.m_slot1On = m_config.m_slot1On;
m_running.m_slot2On = m_config.m_slot2On;
m_running.m_tdmaStereo = m_config.m_tdmaStereo;
m_running.m_pllLock = m_config.m_pllLock;
} }

View File

@ -330,7 +330,7 @@ private:
QMutex m_settingsMutex; QMutex m_settingsMutex;
PhaseDiscriminators m_phaseDiscri; PhaseDiscriminators m_phaseDiscri;
UDPSink<FixReal> *m_udpBufferMono; UDPSink<qint16> *m_udpBufferAudio;
static const int m_udpBlockSize; static const int m_udpBlockSize;