1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-02 06:04:39 -04:00

DSD demod: allow use of audio rates that are integer multiples of 8k other than 48k (x2,3,4,5)

This commit is contained in:
f4exb
2018-04-23 01:04:47 +02:00
parent 114e70b595
commit 2efa7ab594
13 changed files with 74 additions and 29 deletions
@@ -41,6 +41,11 @@ void DSDDecoder::set48k(bool to48k)
m_decoder.setUpsampling(to48k ? 6 : 0);
}
void DSDDecoder::setUpsampling(int upsampling)
{
m_decoder.setUpsampling(upsampling);
}
void DSDDecoder::setBaudRate(int baudRate)
{
if (baudRate == 2400)
+1
View File
@@ -72,6 +72,7 @@ public:
void setSymbolPLLLock(bool pllLock) { m_decoder.setSymbolPLLLock(pllLock); }
void useHPMbelib(bool useHP) { m_decoder.useHPMbelib(useHP); }
void set48k(bool to48k);
void setUpsampling(int upsampling);
private:
DSDcc::DSDDecoder m_decoder;
+8 -7
View File
@@ -238,7 +238,7 @@ void DSDDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
m_settings.m_volume * 10.0,
m_settings.m_tdmaStereo ? 1 : 3, // left or both channels
m_settings.m_highPassFilter,
m_audioSampleRate != 8000, // upsample to 48k unless native 8k
m_audioSampleRate/8000, // upsample from native 8k
&m_audioFifo1);
}
@@ -255,7 +255,7 @@ void DSDDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
m_settings.m_volume * 10.0,
m_settings.m_tdmaStereo ? 2 : 3, // right or both channels
m_settings.m_highPassFilter,
m_audioSampleRate != 8000, // upsample to 48k unless native 8k
m_audioSampleRate/8000, // upsample from native 8k
&m_audioFifo2);
}
@@ -412,14 +412,15 @@ bool DSDDemod::handleMessage(const Message& cmd)
void DSDDemod::applyAudioSampleRate(int sampleRate)
{
qDebug("DSDDemod::applyAudioSampleRate: %d", sampleRate);
int upsampling = sampleRate / 8000;
if ((sampleRate != 48000) && (sampleRate != 8000)) {
qWarning("DSDDemod::applyAudioSampleRate: audio does not work properly with sample rates other than 48 or 8 kS/s");
qDebug("DSDDemod::applyAudioSampleRate: audio rate: %d upsample by %d", sampleRate, upsampling);
if (sampleRate % 8000 != 0) {
qDebug("DSDDemod::applyAudioSampleRate: audio will sound best with sample rates that are integer multiples of 8 kS/s");
}
m_dsdDecoder.set48k(sampleRate != 8000);
m_dsdDecoder.setUpsampling(upsampling);
m_audioSampleRate = sampleRate;
}
@@ -25,7 +25,7 @@
const PluginDescriptor DSDDemodPlugin::m_pluginDescriptor = {
QString("DSD Demodulator"),
QString("3.14.4"),
QString("3.14.5"),
QString("(c) Edouard Griffiths, F4EXB"),
QString("https://github.com/f4exb/sdrangel"),
true,