mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-25 09:18:54 -05:00
FT8 demod: removed audio references (almost)
This commit is contained in:
parent
6444d749d8
commit
cd8990907d
@ -241,16 +241,13 @@ void FT8Demod::applySettings(const FT8DemodSettings& settings, bool force)
|
||||
<< " m_lowCutoff: " << settings.m_filterBank[settings.m_filterIndex].m_lowCutoff
|
||||
<< " m_fftWindow: " << settings.m_filterBank[settings.m_filterIndex].m_fftWindow << "]"
|
||||
<< " m_volume: " << settings.m_volume
|
||||
<< " m_audioBinaual: " << settings.m_audioBinaural
|
||||
<< " m_audioFlipChannels: " << settings.m_audioFlipChannels
|
||||
<< " m_dsb: " << settings.m_dsb
|
||||
<< " m_audioMute: " << settings.m_audioMute
|
||||
<< " m_agcActive: " << settings.m_agc
|
||||
<< " m_agcClamping: " << settings.m_agcClamping
|
||||
<< " m_agcTimeLog2: " << settings.m_agcTimeLog2
|
||||
<< " agcPowerThreshold: " << settings.m_agcPowerThreshold
|
||||
<< " agcThresholdGate: " << settings.m_agcThresholdGate
|
||||
<< " m_audioDeviceName: " << settings.m_audioDeviceName
|
||||
<< " m_ft8SampleRate: " << settings.m_ft8SampleRate
|
||||
<< " m_streamIndex: " << settings.m_streamIndex
|
||||
<< " m_useReverseAPI: " << settings.m_useReverseAPI
|
||||
<< " m_reverseAPIAddress: " << settings.m_reverseAPIAddress
|
||||
@ -294,21 +291,12 @@ void FT8Demod::applySettings(const FT8DemodSettings& settings, bool force)
|
||||
if ((m_settings.m_agcClamping != settings.m_agcClamping) || force) {
|
||||
reverseAPIKeys.append("agcClamping");
|
||||
}
|
||||
if ((settings.m_audioDeviceName != m_settings.m_audioDeviceName) || force) {
|
||||
reverseAPIKeys.append("audioDeviceName");
|
||||
}
|
||||
if ((m_settings.m_audioBinaural != settings.m_audioBinaural) || force) {
|
||||
reverseAPIKeys.append("audioBinaural");
|
||||
}
|
||||
if ((m_settings.m_audioFlipChannels != settings.m_audioFlipChannels) || force) {
|
||||
reverseAPIKeys.append("audioFlipChannels");
|
||||
if ((settings.m_ft8SampleRate != m_settings.m_ft8SampleRate) || force) {
|
||||
reverseAPIKeys.append("ft8SampleRate");
|
||||
}
|
||||
if ((m_settings.m_dsb != settings.m_dsb) || force) {
|
||||
reverseAPIKeys.append("dsb");
|
||||
}
|
||||
if ((m_settings.m_audioMute != settings.m_audioMute) || force) {
|
||||
reverseAPIKeys.append("audioMute");
|
||||
}
|
||||
if ((m_settings.m_agc != settings.m_agc) || force) {
|
||||
reverseAPIKeys.append("agc");
|
||||
}
|
||||
@ -400,7 +388,7 @@ void FT8Demod::sendSampleRateToDemodAnalyzer()
|
||||
{
|
||||
MainCore::MsgChannelDemodReport *msg = MainCore::MsgChannelDemodReport::create(
|
||||
this,
|
||||
getAudioSampleRate()
|
||||
m_settings.m_ft8SampleRate
|
||||
);
|
||||
messageQueue->push(msg);
|
||||
}
|
||||
@ -479,18 +467,9 @@ void FT8Demod::webapiUpdateChannelSettings(
|
||||
if (channelSettingsKeys.contains("volume")) {
|
||||
settings.m_volume = response.getFt8DemodSettings()->getVolume();
|
||||
}
|
||||
if (channelSettingsKeys.contains("audioBinaural")) {
|
||||
settings.m_audioBinaural = response.getFt8DemodSettings()->getAudioBinaural() != 0;
|
||||
}
|
||||
if (channelSettingsKeys.contains("audioFlipChannels")) {
|
||||
settings.m_audioFlipChannels = response.getFt8DemodSettings()->getAudioFlipChannels() != 0;
|
||||
}
|
||||
if (channelSettingsKeys.contains("dsb")) {
|
||||
settings.m_dsb = response.getFt8DemodSettings()->getDsb() != 0;
|
||||
}
|
||||
if (channelSettingsKeys.contains("audioMute")) {
|
||||
settings.m_audioMute = response.getFt8DemodSettings()->getAudioMute() != 0;
|
||||
}
|
||||
if (channelSettingsKeys.contains("agc")) {
|
||||
settings.m_agc = response.getFt8DemodSettings()->getAgc() != 0;
|
||||
}
|
||||
@ -513,7 +492,7 @@ void FT8Demod::webapiUpdateChannelSettings(
|
||||
settings.m_title = *response.getFt8DemodSettings()->getTitle();
|
||||
}
|
||||
if (channelSettingsKeys.contains("audioDeviceName")) {
|
||||
settings.m_audioDeviceName = *response.getFt8DemodSettings()->getAudioDeviceName();
|
||||
settings.m_ft8SampleRate = response.getFt8DemodSettings()->getFt8SampleRate();
|
||||
}
|
||||
if (channelSettingsKeys.contains("streamIndex")) {
|
||||
settings.m_streamIndex = response.getFt8DemodSettings()->getStreamIndex();
|
||||
@ -557,7 +536,6 @@ int FT8Demod::webapiReportGet(
|
||||
|
||||
void FT8Demod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const FT8DemodSettings& settings)
|
||||
{
|
||||
response.getFt8DemodSettings()->setAudioMute(settings.m_audioMute ? 1 : 0);
|
||||
response.getFt8DemodSettings()->setInputFrequencyOffset(settings.m_inputFrequencyOffset);
|
||||
response.getFt8DemodSettings()->setFilterIndex(settings.m_filterIndex);
|
||||
response.getFt8DemodSettings()->setSpanLog2(settings.m_filterBank[settings.m_filterIndex].m_spanLog2);
|
||||
@ -565,16 +543,14 @@ void FT8Demod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& resp
|
||||
response.getFt8DemodSettings()->setLowCutoff(settings.m_filterBank[settings.m_filterIndex].m_lowCutoff);
|
||||
response.getFt8DemodSettings()->setFftWindow((int) settings.m_filterBank[settings.m_filterIndex].m_fftWindow);
|
||||
response.getFt8DemodSettings()->setVolume(settings.m_volume);
|
||||
response.getFt8DemodSettings()->setAudioBinaural(settings.m_audioBinaural ? 1 : 0);
|
||||
response.getFt8DemodSettings()->setAudioFlipChannels(settings.m_audioFlipChannels ? 1 : 0);
|
||||
response.getFt8DemodSettings()->setDsb(settings.m_dsb ? 1 : 0);
|
||||
response.getFt8DemodSettings()->setAudioMute(settings.m_audioMute ? 1 : 0);
|
||||
response.getFt8DemodSettings()->setAgc(settings.m_agc ? 1 : 0);
|
||||
response.getFt8DemodSettings()->setAgcClamping(settings.m_agcClamping ? 1 : 0);
|
||||
response.getFt8DemodSettings()->setAgcTimeLog2(settings.m_agcTimeLog2);
|
||||
response.getFt8DemodSettings()->setAgcPowerThreshold(settings.m_agcPowerThreshold);
|
||||
response.getFt8DemodSettings()->setAgcThresholdGate(settings.m_agcThresholdGate);
|
||||
response.getFt8DemodSettings()->setRgbColor(settings.m_rgbColor);
|
||||
response.getFt8DemodSettings()->setFt8SampleRate(settings.m_ft8SampleRate);
|
||||
|
||||
if (response.getFt8DemodSettings()->getTitle()) {
|
||||
*response.getFt8DemodSettings()->getTitle() = settings.m_title;
|
||||
@ -582,12 +558,6 @@ void FT8Demod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& resp
|
||||
response.getFt8DemodSettings()->setTitle(new QString(settings.m_title));
|
||||
}
|
||||
|
||||
if (response.getFt8DemodSettings()->getAudioDeviceName()) {
|
||||
*response.getFt8DemodSettings()->getAudioDeviceName() = settings.m_audioDeviceName;
|
||||
} else {
|
||||
response.getFt8DemodSettings()->setAudioDeviceName(new QString(settings.m_audioDeviceName));
|
||||
}
|
||||
|
||||
response.getFt8DemodSettings()->setStreamIndex(settings.m_streamIndex);
|
||||
response.getFt8DemodSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0);
|
||||
|
||||
@ -655,7 +625,6 @@ void FT8Demod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response
|
||||
if (m_running)
|
||||
{
|
||||
response.getFt8DemodReport()->setSquelch(m_basebandSink->getAudioActive() ? 1 : 0);
|
||||
response.getFt8DemodReport()->setAudioSampleRate(m_basebandSink->getAudioSampleRate());
|
||||
response.getFt8DemodReport()->setChannelSampleRate(m_basebandSink->getChannelSampleRate());
|
||||
}
|
||||
}
|
||||
@ -749,18 +718,9 @@ void FT8Demod::webapiFormatChannelSettings(
|
||||
if (channelSettingsKeys.contains("volume") || force) {
|
||||
swgFT8DemodSettings->setVolume(settings.m_volume);
|
||||
}
|
||||
if (channelSettingsKeys.contains("audioBinaural") || force) {
|
||||
swgFT8DemodSettings->setAudioBinaural(settings.m_audioBinaural ? 1 : 0);
|
||||
}
|
||||
if (channelSettingsKeys.contains("audioFlipChannels") || force) {
|
||||
swgFT8DemodSettings->setAudioFlipChannels(settings.m_audioFlipChannels ? 1 : 0);
|
||||
}
|
||||
if (channelSettingsKeys.contains("dsb") || force) {
|
||||
swgFT8DemodSettings->setDsb(settings.m_dsb ? 1 : 0);
|
||||
}
|
||||
if (channelSettingsKeys.contains("audioMute") || force) {
|
||||
swgFT8DemodSettings->setAudioMute(settings.m_audioMute ? 1 : 0);
|
||||
}
|
||||
if (channelSettingsKeys.contains("agc") || force) {
|
||||
swgFT8DemodSettings->setAgc(settings.m_agc ? 1 : 0);
|
||||
}
|
||||
@ -783,7 +743,7 @@ void FT8Demod::webapiFormatChannelSettings(
|
||||
swgFT8DemodSettings->setTitle(new QString(settings.m_title));
|
||||
}
|
||||
if (channelSettingsKeys.contains("audioDeviceName") || force) {
|
||||
swgFT8DemodSettings->setAudioDeviceName(new QString(settings.m_audioDeviceName));
|
||||
swgFT8DemodSettings->setFt8SampleRate(settings.m_ft8SampleRate);
|
||||
}
|
||||
if (channelSettingsKeys.contains("streamIndex") || force) {
|
||||
swgFT8DemodSettings->setStreamIndex(settings.m_streamIndex);
|
||||
|
@ -96,10 +96,8 @@ public:
|
||||
}
|
||||
|
||||
void setMessageQueueToGUI(MessageQueue* queue) override { ChannelAPI::setMessageQueueToGUI(queue); }
|
||||
uint32_t getAudioSampleRate() const { return m_running ? m_basebandSink->getAudioSampleRate() : 0; }
|
||||
uint32_t getChannelSampleRate() const { return m_running ? m_basebandSink->getChannelSampleRate() : 0; }
|
||||
double getMagSq() const { return m_running ? m_basebandSink->getMagSq() : 0.0; }
|
||||
bool getAudioActive() const { return m_running && m_basebandSink->getAudioActive(); }
|
||||
|
||||
void getMagSqLevels(double& avg, double& peak, int& nbSamples)
|
||||
{
|
||||
|
@ -42,8 +42,6 @@ FT8DemodBaseband::FT8DemodBaseband() :
|
||||
);
|
||||
|
||||
DSPEngine::instance()->getAudioDeviceManager()->addAudioSink(m_sink.getAudioFifo(), getInputMessageQueue());
|
||||
m_audioSampleRate = DSPEngine::instance()->getAudioDeviceManager()->getOutputSampleRate();
|
||||
m_sink.applyAudioSampleRate(m_audioSampleRate);
|
||||
m_channelSampleRate = 0;
|
||||
|
||||
connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()));
|
||||
@ -57,7 +55,6 @@ FT8DemodBaseband::~FT8DemodBaseband()
|
||||
void FT8DemodBaseband::reset()
|
||||
{
|
||||
QMutexLocker mutexLocker(&m_mutex);
|
||||
m_sink.applyAudioSampleRate(DSPEngine::instance()->getAudioDeviceManager()->getOutputSampleRate());
|
||||
m_sampleFifo.reset();
|
||||
m_channelSampleRate = 0;
|
||||
}
|
||||
@ -134,7 +131,7 @@ bool FT8DemodBaseband::handleMessage(const Message& cmd)
|
||||
|
||||
if (m_channelSampleRate != m_channelizer.getChannelSampleRate())
|
||||
{
|
||||
m_sink.applyAudioSampleRate(m_audioSampleRate); // reapply when channel sample rate changes
|
||||
m_sink.applyFT8SampleRate(m_settings.m_ft8SampleRate); // reapply when channel sample rate changes
|
||||
m_channelSampleRate = m_channelizer.getChannelSampleRate();
|
||||
}
|
||||
|
||||
@ -150,12 +147,12 @@ void FT8DemodBaseband::applySettings(const FT8DemodSettings& settings, bool forc
|
||||
{
|
||||
if ((settings.m_inputFrequencyOffset != m_settings.m_inputFrequencyOffset) || force)
|
||||
{
|
||||
m_channelizer.setChannelization(m_audioSampleRate, settings.m_inputFrequencyOffset);
|
||||
m_channelizer.setChannelization(m_settings.m_ft8SampleRate, settings.m_inputFrequencyOffset);
|
||||
m_sink.applyChannelSettings(m_channelizer.getChannelSampleRate(), m_channelizer.getChannelFrequencyOffset());
|
||||
|
||||
if (m_channelSampleRate != m_channelizer.getChannelSampleRate())
|
||||
{
|
||||
m_sink.applyAudioSampleRate(m_audioSampleRate); // reapply when channel sample rate changes
|
||||
m_sink.applyFT8SampleRate(m_settings.m_ft8SampleRate); // reapply when channel sample rate changes
|
||||
m_channelSampleRate = m_channelizer.getChannelSampleRate();
|
||||
}
|
||||
}
|
||||
@ -164,36 +161,27 @@ void FT8DemodBaseband::applySettings(const FT8DemodSettings& settings, bool forc
|
||||
{
|
||||
if (m_spectrumVis)
|
||||
{
|
||||
DSPSignalNotification *msg = new DSPSignalNotification(m_audioSampleRate/(1<<settings.m_filterBank[settings.m_filterIndex].m_spanLog2), 0);
|
||||
DSPSignalNotification *msg = new DSPSignalNotification(m_settings.m_ft8SampleRate/(1<<settings.m_filterBank[settings.m_filterIndex].m_spanLog2), 0);
|
||||
m_spectrumVis->getInputMessageQueue()->push(msg);
|
||||
}
|
||||
}
|
||||
|
||||
if ((settings.m_audioDeviceName != m_settings.m_audioDeviceName) || force)
|
||||
if ((settings.m_ft8SampleRate != m_settings.m_ft8SampleRate) || force)
|
||||
{
|
||||
AudioDeviceManager *audioDeviceManager = DSPEngine::instance()->getAudioDeviceManager();
|
||||
int audioDeviceIndex = audioDeviceManager->getOutputDeviceIndex(settings.m_audioDeviceName);
|
||||
audioDeviceManager->addAudioSink(m_sink.getAudioFifo(), getInputMessageQueue(), audioDeviceIndex);
|
||||
unsigned int audioSampleRate = audioDeviceManager->getOutputSampleRate(audioDeviceIndex);
|
||||
m_sink.applyFT8SampleRate(settings.m_ft8SampleRate);
|
||||
m_channelizer.setChannelization(settings.m_ft8SampleRate, settings.m_inputFrequencyOffset);
|
||||
m_sink.applyChannelSettings(m_channelizer.getChannelSampleRate(), m_channelizer.getChannelFrequencyOffset());
|
||||
|
||||
if (m_audioSampleRate != audioSampleRate)
|
||||
if (getMessageQueueToGUI())
|
||||
{
|
||||
m_sink.applyAudioSampleRate(audioSampleRate);
|
||||
m_channelizer.setChannelization(audioSampleRate, settings.m_inputFrequencyOffset);
|
||||
m_sink.applyChannelSettings(m_channelizer.getChannelSampleRate(), m_channelizer.getChannelFrequencyOffset());
|
||||
m_audioSampleRate = audioSampleRate;
|
||||
DSPConfigureAudio *msg = new DSPConfigureAudio((int) settings.m_ft8SampleRate, DSPConfigureAudio::AudioOutput);
|
||||
getMessageQueueToGUI()->push(msg);
|
||||
}
|
||||
|
||||
if (getMessageQueueToGUI())
|
||||
{
|
||||
DSPConfigureAudio *msg = new DSPConfigureAudio((int) audioSampleRate, DSPConfigureAudio::AudioOutput);
|
||||
getMessageQueueToGUI()->push(msg);
|
||||
}
|
||||
|
||||
if (m_spectrumVis)
|
||||
{
|
||||
DSPSignalNotification *msg = new DSPSignalNotification(m_audioSampleRate/(1<<m_settings.m_filterBank[settings.m_filterIndex].m_spanLog2), 0);
|
||||
m_spectrumVis->getInputMessageQueue()->push(msg);
|
||||
}
|
||||
if (m_spectrumVis)
|
||||
{
|
||||
DSPSignalNotification *msg = new DSPSignalNotification(settings.m_ft8SampleRate/(1<<m_settings.m_filterBank[settings.m_filterIndex].m_spanLog2), 0);
|
||||
m_spectrumVis->getInputMessageQueue()->push(msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,6 @@ public:
|
||||
void setSpectrumSink(SpectrumVis* spectrumSink) { m_spectrumVis = spectrumSink; m_sink.setSpectrumSink(spectrumSink); }
|
||||
double getMagSq() const { return m_sink.getMagSq(); }
|
||||
void getMagSqLevels(double& avg, double& peak, int& nbSamples) { m_sink.getMagSqLevels(avg, peak, nbSamples); }
|
||||
unsigned int getAudioSampleRate() const { return m_audioSampleRate; }
|
||||
bool getAudioActive() const { return m_sink.getAudioActive(); }
|
||||
void setBasebandSampleRate(int sampleRate);
|
||||
void setMessageQueueToGUI(MessageQueue *messageQueue) { m_messageQueueToGUI = messageQueue; }
|
||||
@ -82,7 +81,6 @@ private:
|
||||
FT8DemodSink m_sink;
|
||||
MessageQueue m_inputMessageQueue; //!< Queue for asynchronous inbound communication
|
||||
FT8DemodSettings m_settings;
|
||||
unsigned int m_audioSampleRate;
|
||||
int m_channelSampleRate;
|
||||
MessageQueue *m_messageQueueToGUI;
|
||||
SpectrumVis *m_spectrumVis;
|
||||
|
@ -96,15 +96,6 @@ bool FT8DemodGUI::handleMessage(const Message& message)
|
||||
blockApplySettings(false);
|
||||
return true;
|
||||
}
|
||||
else if (DSPConfigureAudio::match(message))
|
||||
{
|
||||
qDebug("FT8DemodGUI::handleMessage: DSPConfigureAudio: %d", m_ft8Demod->getAudioSampleRate());
|
||||
applyBandwidths(1 + ui->spanLog2->maximum() - ui->spanLog2->value()); // will update spectrum details with new sample rate
|
||||
blockApplySettings(true);
|
||||
displaySettings();
|
||||
blockApplySettings(false);
|
||||
return true;
|
||||
}
|
||||
else if (DSPSignalNotification::match(message))
|
||||
{
|
||||
const DSPSignalNotification& notif = (const DSPSignalNotification&) message;
|
||||
@ -146,20 +137,6 @@ void FT8DemodGUI::channelMarkerHighlightedByCursor()
|
||||
setHighlighted(m_channelMarker.getHighlighted());
|
||||
}
|
||||
|
||||
void FT8DemodGUI::on_audioBinaural_toggled(bool binaural)
|
||||
{
|
||||
m_audioBinaural = binaural;
|
||||
m_settings.m_audioBinaural = binaural;
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void FT8DemodGUI::on_audioFlipChannels_toggled(bool flip)
|
||||
{
|
||||
m_audioFlipChannels = flip;
|
||||
m_settings.m_audioFlipChannels = flip;
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void FT8DemodGUI::on_dsb_toggled(bool dsb)
|
||||
{
|
||||
ui->flipSidebands->setEnabled(!dsb);
|
||||
@ -230,13 +207,6 @@ void FT8DemodGUI::on_agcThresholdGate_valueChanged(int value)
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void FT8DemodGUI::on_audioMute_toggled(bool checked)
|
||||
{
|
||||
m_audioMute = checked;
|
||||
m_settings.m_audioMute = checked;
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void FT8DemodGUI::on_spanLog2_valueChanged(int value)
|
||||
{
|
||||
int s2max = spanLog2Max();
|
||||
@ -366,9 +336,6 @@ FT8DemodGUI::FT8DemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban
|
||||
m_spectrumVis->setGLSpectrum(ui->glSpectrum);
|
||||
m_ft8Demod->setMessageQueueToGUI(getInputMessageQueue());
|
||||
|
||||
CRightClickEnabler *audioMuteRightClickEnabler = new CRightClickEnabler(ui->audioMute);
|
||||
connect(audioMuteRightClickEnabler, SIGNAL(rightClick(const QPoint &)), this, SLOT(audioSelect(const QPoint &)));
|
||||
|
||||
ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03)));
|
||||
ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold));
|
||||
ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999);
|
||||
@ -443,7 +410,7 @@ void FT8DemodGUI::applySettings(bool force)
|
||||
unsigned int FT8DemodGUI::spanLog2Max()
|
||||
{
|
||||
unsigned int spanLog2 = 0;
|
||||
for (; m_ft8Demod->getAudioSampleRate() / (1<<spanLog2) >= 1000; spanLog2++);
|
||||
for (; m_settings.m_ft8SampleRate / (1<<spanLog2) >= 1000; spanLog2++);
|
||||
return spanLog2 == 0 ? 0 : spanLog2-1;
|
||||
}
|
||||
|
||||
@ -455,10 +422,10 @@ void FT8DemodGUI::applyBandwidths(unsigned int spanLog2, bool force)
|
||||
ui->spanLog2->setMaximum(limit);
|
||||
bool dsb = ui->dsb->isChecked();
|
||||
//int spanLog2 = ui->spanLog2->value();
|
||||
m_spectrumRate = m_ft8Demod->getAudioSampleRate() / (1<<spanLog2);
|
||||
m_spectrumRate = m_settings.m_ft8SampleRate / (1<<spanLog2);
|
||||
int bw = ui->BW->value();
|
||||
int lw = ui->lowCut->value();
|
||||
int bwMax = m_ft8Demod->getAudioSampleRate() / (100*(1<<spanLog2));
|
||||
int bwMax = m_settings.m_ft8SampleRate / (100*(1<<spanLog2));
|
||||
int tickInterval = m_spectrumRate / 1200;
|
||||
tickInterval = tickInterval == 0 ? 1 : tickInterval;
|
||||
|
||||
@ -598,9 +565,6 @@ void FT8DemodGUI::displaySettings()
|
||||
|
||||
ui->agc->setChecked(m_settings.m_agc);
|
||||
ui->agcClamping->setChecked(m_settings.m_agcClamping);
|
||||
ui->audioBinaural->setChecked(m_settings.m_audioBinaural);
|
||||
ui->audioFlipChannels->setChecked(m_settings.m_audioFlipChannels);
|
||||
ui->audioMute->setChecked(m_settings.m_audioMute);
|
||||
ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
|
||||
ui->fftWindow->setCurrentIndex((int) m_settings.m_filterBank[m_settings.m_filterIndex].m_fftWindow);
|
||||
|
||||
@ -692,20 +656,6 @@ void FT8DemodGUI::enterEvent(EnterEventType* event)
|
||||
ChannelGUI::enterEvent(event);
|
||||
}
|
||||
|
||||
void FT8DemodGUI::audioSelect(const QPoint& p)
|
||||
{
|
||||
qDebug("FT8DemodGUI::audioSelect");
|
||||
AudioSelectDialog audioSelect(DSPEngine::instance()->getAudioDeviceManager(), m_settings.m_audioDeviceName);
|
||||
audioSelect.move(p);
|
||||
audioSelect.exec();
|
||||
|
||||
if (audioSelect.m_selected)
|
||||
{
|
||||
m_settings.m_audioDeviceName = audioSelect.m_audioDeviceName;
|
||||
applySettings();
|
||||
}
|
||||
}
|
||||
|
||||
void FT8DemodGUI::tick()
|
||||
{
|
||||
double magsqAvg, magsqPeak;
|
||||
@ -723,31 +673,12 @@ void FT8DemodGUI::tick()
|
||||
ui->channelPower->setText(tr("%1 dB").arg(powDbAvg, 0, 'f', 1));
|
||||
}
|
||||
|
||||
int audioSampleRate = m_ft8Demod->getAudioSampleRate();
|
||||
bool squelchOpen = m_ft8Demod->getAudioActive();
|
||||
|
||||
if ((audioSampleRate != m_audioSampleRate) || (squelchOpen != m_squelchOpen))
|
||||
{
|
||||
if (audioSampleRate < 0) {
|
||||
ui->audioMute->setStyleSheet("QToolButton { background-color : red; }");
|
||||
} else if (squelchOpen) {
|
||||
ui->audioMute->setStyleSheet("QToolButton { background-color : green; }");
|
||||
} else {
|
||||
ui->audioMute->setStyleSheet("QToolButton { background:rgb(79,79,79); }");
|
||||
}
|
||||
|
||||
m_audioSampleRate = audioSampleRate;
|
||||
m_squelchOpen = squelchOpen;
|
||||
}
|
||||
|
||||
m_tickCount++;
|
||||
}
|
||||
|
||||
void FT8DemodGUI::makeUIConnections()
|
||||
{
|
||||
QObject::connect(ui->deltaFrequency, &ValueDialZ::changed, this, &FT8DemodGUI::on_deltaFrequency_changed);
|
||||
QObject::connect(ui->audioBinaural, &QToolButton::toggled, this, &FT8DemodGUI::on_audioBinaural_toggled);
|
||||
QObject::connect(ui->audioFlipChannels, &QToolButton::toggled, this, &FT8DemodGUI::on_audioFlipChannels_toggled);
|
||||
QObject::connect(ui->dsb, &QToolButton::toggled, this, &FT8DemodGUI::on_dsb_toggled);
|
||||
QObject::connect(ui->BW, &TickedSlider::valueChanged, this, &FT8DemodGUI::on_BW_valueChanged);
|
||||
QObject::connect(ui->lowCut, &TickedSlider::valueChanged, this, &FT8DemodGUI::on_lowCut_valueChanged);
|
||||
@ -757,7 +688,6 @@ void FT8DemodGUI::makeUIConnections()
|
||||
QObject::connect(ui->agcTimeLog2, &QDial::valueChanged, this, &FT8DemodGUI::on_agcTimeLog2_valueChanged);
|
||||
QObject::connect(ui->agcPowerThreshold, &QDial::valueChanged, this, &FT8DemodGUI::on_agcPowerThreshold_valueChanged);
|
||||
QObject::connect(ui->agcThresholdGate, &QDial::valueChanged, this, &FT8DemodGUI::on_agcThresholdGate_valueChanged);
|
||||
QObject::connect(ui->audioMute, &QToolButton::toggled, this, &FT8DemodGUI::on_audioMute_toggled);
|
||||
QObject::connect(ui->spanLog2, &QSlider::valueChanged, this, &FT8DemodGUI::on_spanLog2_valueChanged);
|
||||
QObject::connect(ui->flipSidebands, &QPushButton::clicked, this, &FT8DemodGUI::on_flipSidebands_clicked);
|
||||
QObject::connect(ui->fftWindow, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &FT8DemodGUI::on_fftWindow_currentIndexChanged);
|
||||
|
@ -109,8 +109,6 @@ private:
|
||||
|
||||
private slots:
|
||||
void on_deltaFrequency_changed(qint64 value);
|
||||
void on_audioBinaural_toggled(bool binaural);
|
||||
void on_audioFlipChannels_toggled(bool flip);
|
||||
void on_dsb_toggled(bool dsb);
|
||||
void on_BW_valueChanged(int value);
|
||||
void on_lowCut_valueChanged(int value);
|
||||
@ -120,7 +118,6 @@ private slots:
|
||||
void on_agcTimeLog2_valueChanged(int value);
|
||||
void on_agcPowerThreshold_valueChanged(int value);
|
||||
void on_agcThresholdGate_valueChanged(int value);
|
||||
void on_audioMute_toggled(bool checked);
|
||||
void on_spanLog2_valueChanged(int value);
|
||||
void on_flipSidebands_clicked(bool checked);
|
||||
void on_fftWindow_currentIndexChanged(int index);
|
||||
@ -128,7 +125,6 @@ private slots:
|
||||
void onWidgetRolled(QWidget* widget, bool rollDown);
|
||||
void onMenuDialogCalled(const QPoint& p);
|
||||
void handleInputMessages();
|
||||
void audioSelect(const QPoint& p);
|
||||
void tick();
|
||||
};
|
||||
|
||||
|
@ -169,42 +169,6 @@
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="audioOptionsLayout">
|
||||
<item>
|
||||
<widget class="QToolButton" name="audioBinaural">
|
||||
<property name="toolTip">
|
||||
<string>Toggle btw Mono and Binaural I/Q audio</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../../sdrgui/resources/res.qrc">
|
||||
<normaloff>:/mono.png</normaloff>
|
||||
<normalon>:/stereo.png</normalon>:/mono.png</iconset>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="audioFlipChannels">
|
||||
<property name="toolTip">
|
||||
<string>Flip left/right audio channels</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../../sdrgui/resources/res.qrc">
|
||||
<normaloff>:/flip_lr.png</normaloff>
|
||||
<normalon>:/flip_rl.png</normalon>:/flip_lr.png</iconset>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line_4">
|
||||
<property name="orientation">
|
||||
@ -1010,24 +974,6 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="audioMute">
|
||||
<property name="toolTip">
|
||||
<string>Mute/Unmute audio</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../../sdrgui/resources/res.qrc">
|
||||
<normaloff>:/sound_on.png</normaloff>
|
||||
<normalon>:/sound_off.png</normalon>:/sound_on.png</iconset>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
|
@ -41,10 +41,7 @@ FT8DemodSettings::FT8DemodSettings() :
|
||||
|
||||
void FT8DemodSettings::resetToDefaults()
|
||||
{
|
||||
m_audioBinaural = false;
|
||||
m_audioFlipChannels = false;
|
||||
m_dsb = false;
|
||||
m_audioMute = false;
|
||||
m_agc = false;
|
||||
m_agcClamping = false;
|
||||
m_agcPowerThreshold = -100;
|
||||
@ -52,9 +49,9 @@ void FT8DemodSettings::resetToDefaults()
|
||||
m_agcTimeLog2 = 7;
|
||||
m_volume = 1.0;
|
||||
m_inputFrequencyOffset = 0;
|
||||
m_rgbColor = QColor(0, 255, 0).rgb();
|
||||
m_rgbColor = QColor(0, 192, 255).rgb();
|
||||
m_title = "FT8 Demodulator";
|
||||
m_audioDeviceName = AudioDeviceManager::m_defaultDeviceName;
|
||||
m_ft8SampleRate = 12000;
|
||||
m_streamIndex = 0;
|
||||
m_useReverseAPI = false;
|
||||
m_reverseAPIAddress = "127.0.0.1";
|
||||
@ -77,8 +74,6 @@ QByteArray FT8DemodSettings::serialize() const
|
||||
}
|
||||
|
||||
s.writeU32(5, m_rgbColor);
|
||||
s.writeBool(8, m_audioBinaural);
|
||||
s.writeBool(9, m_audioFlipChannels);
|
||||
s.writeBool(10, m_dsb);
|
||||
s.writeBool(11, m_agc);
|
||||
s.writeS32(12, m_agcTimeLog2);
|
||||
@ -86,7 +81,7 @@ QByteArray FT8DemodSettings::serialize() const
|
||||
s.writeS32(14, m_agcThresholdGate);
|
||||
s.writeBool(15, m_agcClamping);
|
||||
s.writeString(16, m_title);
|
||||
s.writeString(17, m_audioDeviceName);
|
||||
s.writeS32(17, m_ft8SampleRate);
|
||||
s.writeBool(18, m_useReverseAPI);
|
||||
s.writeString(19, m_reverseAPIAddress);
|
||||
s.writeU32(20, m_reverseAPIPort);
|
||||
@ -142,8 +137,6 @@ bool FT8DemodSettings::deserialize(const QByteArray& data)
|
||||
}
|
||||
|
||||
d.readU32(5, &m_rgbColor);
|
||||
d.readBool(8, &m_audioBinaural, false);
|
||||
d.readBool(9, &m_audioFlipChannels, false);
|
||||
d.readBool(10, &m_dsb, false);
|
||||
d.readBool(11, &m_agc, false);
|
||||
d.readS32(12, &m_agcTimeLog2, 7);
|
||||
@ -151,7 +144,7 @@ bool FT8DemodSettings::deserialize(const QByteArray& data)
|
||||
d.readS32(14, &m_agcThresholdGate, 4);
|
||||
d.readBool(15, &m_agcClamping, false);
|
||||
d.readString(16, &m_title, "SSB Demodulator");
|
||||
d.readString(17, &m_audioDeviceName, AudioDeviceManager::m_defaultDeviceName);
|
||||
d.readS32(17, &m_ft8SampleRate, 12000);
|
||||
d.readBool(18, &m_useReverseAPI, false);
|
||||
d.readString(19, &m_reverseAPIAddress, "127.0.0.1");
|
||||
d.readU32(20, &utmp, 0);
|
||||
|
@ -47,10 +47,7 @@ struct FT8DemodSettings
|
||||
// Real m_lowCutoff;
|
||||
Real m_volume;
|
||||
// int m_spanLog2;
|
||||
bool m_audioBinaural;
|
||||
bool m_audioFlipChannels;
|
||||
bool m_dsb;
|
||||
bool m_audioMute;
|
||||
bool m_agc;
|
||||
bool m_agcClamping;
|
||||
int m_agcTimeLog2;
|
||||
@ -58,7 +55,7 @@ struct FT8DemodSettings
|
||||
int m_agcThresholdGate;
|
||||
quint32 m_rgbColor;
|
||||
QString m_title;
|
||||
QString m_audioDeviceName;
|
||||
int m_ft8SampleRate;
|
||||
int m_streamIndex; //!< MIMO channel. Not relevant when connected to SI (single Rx).
|
||||
bool m_useReverseAPI;
|
||||
QString m_reverseAPIAddress;
|
||||
|
@ -37,10 +37,7 @@ const int FT8DemodSink::m_ssbFftLen = 1024;
|
||||
const int FT8DemodSink::m_agcTarget = 3276; // 32768/10 -10 dB amplitude => -20 dB power: center of normal signal
|
||||
|
||||
FT8DemodSink::FT8DemodSink() :
|
||||
m_audioBinaual(false),
|
||||
m_audioFlipChannels(false),
|
||||
m_dsb(false),
|
||||
m_audioMute(false),
|
||||
m_agc(12000, m_agcTarget, 1e-2),
|
||||
m_agcActive(false),
|
||||
m_agcClamping(false),
|
||||
@ -51,7 +48,7 @@ FT8DemodSink::FT8DemodSink() :
|
||||
m_audioActive(false),
|
||||
m_spectrumSink(nullptr),
|
||||
m_audioFifo(24000),
|
||||
m_audioSampleRate(48000)
|
||||
m_ft8SampleRate(12000)
|
||||
{
|
||||
m_Bandwidth = 5000;
|
||||
m_LowCutoff = 300;
|
||||
@ -77,8 +74,8 @@ FT8DemodSink::FT8DemodSink() :
|
||||
m_agc.setClampMax(SDR_RX_SCALED/100.0);
|
||||
m_agc.setClamping(m_agcClamping);
|
||||
|
||||
SSBFilter = new fftfilt(m_LowCutoff / m_audioSampleRate, m_Bandwidth / m_audioSampleRate, m_ssbFftLen);
|
||||
DSBFilter = new fftfilt((2.0f * m_Bandwidth) / m_audioSampleRate, 2 * m_ssbFftLen);
|
||||
SSBFilter = new fftfilt(m_LowCutoff / m_ft8SampleRate, m_Bandwidth / m_ft8SampleRate, m_ssbFftLen);
|
||||
DSBFilter = new fftfilt((2.0f * m_Bandwidth) / m_ft8SampleRate, 2 * m_ssbFftLen);
|
||||
|
||||
applyChannelSettings(m_channelSampleRate, m_channelFrequencyOffset, true);
|
||||
applySettings(m_settings, true);
|
||||
@ -175,66 +172,39 @@ void FT8DemodSink::processOneSample(Complex &ci)
|
||||
m_audioActive = delayedSample.real() != 0.0;
|
||||
m_squelchDelayLine.write(sideband[i]*agcVal);
|
||||
|
||||
if (m_audioMute)
|
||||
fftfilt::cmplx z = m_agcActive ? delayedSample * m_agc.getStepValue() : delayedSample;
|
||||
|
||||
Real demod = (z.real() + z.imag()) * 0.7;
|
||||
qint16 sample = (qint16)(demod * m_volume);
|
||||
m_audioBuffer[m_audioBufferFill].l = sample;
|
||||
m_audioBuffer[m_audioBufferFill].r = sample;
|
||||
m_demodBuffer[m_demodBufferFill++] = (z.real() + z.imag()) * 0.7;
|
||||
|
||||
if (m_demodBufferFill >= m_demodBuffer.size())
|
||||
{
|
||||
m_audioBuffer[m_audioBufferFill].r = 0;
|
||||
m_audioBuffer[m_audioBufferFill].l = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
fftfilt::cmplx z = m_agcActive ? delayedSample * m_agc.getStepValue() : delayedSample;
|
||||
QList<ObjectPipe*> dataPipes;
|
||||
MainCore::instance()->getDataPipes().getDataPipes(m_channel, "demod", dataPipes);
|
||||
|
||||
if (m_audioBinaual)
|
||||
if (dataPipes.size() > 0)
|
||||
{
|
||||
if (m_audioFlipChannels)
|
||||
QList<ObjectPipe*>::iterator it = dataPipes.begin();
|
||||
|
||||
for (; it != dataPipes.end(); ++it)
|
||||
{
|
||||
m_audioBuffer[m_audioBufferFill].r = (qint16)(z.imag() * m_volume);
|
||||
m_audioBuffer[m_audioBufferFill].l = (qint16)(z.real() * m_volume);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_audioBuffer[m_audioBufferFill].r = (qint16)(z.real() * m_volume);
|
||||
m_audioBuffer[m_audioBufferFill].l = (qint16)(z.imag() * m_volume);
|
||||
}
|
||||
DataFifo *fifo = qobject_cast<DataFifo*>((*it)->m_element);
|
||||
|
||||
m_demodBuffer[m_demodBufferFill++] = z.real();
|
||||
m_demodBuffer[m_demodBufferFill++] = z.imag();
|
||||
}
|
||||
else
|
||||
{
|
||||
Real demod = (z.real() + z.imag()) * 0.7;
|
||||
qint16 sample = (qint16)(demod * m_volume);
|
||||
m_audioBuffer[m_audioBufferFill].l = sample;
|
||||
m_audioBuffer[m_audioBufferFill].r = sample;
|
||||
m_demodBuffer[m_demodBufferFill++] = (z.real() + z.imag()) * 0.7;
|
||||
}
|
||||
|
||||
if (m_demodBufferFill >= m_demodBuffer.size())
|
||||
{
|
||||
QList<ObjectPipe*> dataPipes;
|
||||
MainCore::instance()->getDataPipes().getDataPipes(m_channel, "demod", dataPipes);
|
||||
|
||||
if (dataPipes.size() > 0)
|
||||
{
|
||||
QList<ObjectPipe*>::iterator it = dataPipes.begin();
|
||||
|
||||
for (; it != dataPipes.end(); ++it)
|
||||
if (fifo)
|
||||
{
|
||||
DataFifo *fifo = qobject_cast<DataFifo*>((*it)->m_element);
|
||||
|
||||
if (fifo)
|
||||
{
|
||||
fifo->write(
|
||||
(quint8*) &m_demodBuffer[0],
|
||||
m_demodBuffer.size() * sizeof(qint16),
|
||||
m_audioBinaual ? DataFifo::DataTypeCI16 : DataFifo::DataTypeI16
|
||||
);
|
||||
}
|
||||
fifo->write(
|
||||
(quint8*) &m_demodBuffer[0],
|
||||
m_demodBuffer.size() * sizeof(qint16),
|
||||
DataFifo::DataTypeI16
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
m_demodBufferFill = 0;
|
||||
}
|
||||
|
||||
m_demodBufferFill = 0;
|
||||
}
|
||||
|
||||
++m_audioBufferFill;
|
||||
@ -275,16 +245,16 @@ void FT8DemodSink::applyChannelSettings(int channelSampleRate, int channelFreque
|
||||
Real interpolatorBandwidth = (m_Bandwidth * 1.5f) > channelSampleRate ? channelSampleRate : (m_Bandwidth * 1.5f);
|
||||
m_interpolator.create(16, channelSampleRate, interpolatorBandwidth, 2.0f);
|
||||
m_interpolatorDistanceRemain = 0;
|
||||
m_interpolatorDistance = (Real) channelSampleRate / (Real) m_audioSampleRate;
|
||||
m_interpolatorDistance = (Real) channelSampleRate / (Real) m_ft8SampleRate;
|
||||
}
|
||||
|
||||
m_channelSampleRate = channelSampleRate;
|
||||
m_channelFrequencyOffset = channelFrequencyOffset;
|
||||
}
|
||||
|
||||
void FT8DemodSink::applyAudioSampleRate(int sampleRate)
|
||||
void FT8DemodSink::applyFT8SampleRate(int sampleRate)
|
||||
{
|
||||
qDebug("FT8DemodSink::applyAudioSampleRate: %d", sampleRate);
|
||||
qDebug("FT8DemodSink::applyFT8SampleRate: %d", sampleRate);
|
||||
|
||||
Real interpolatorBandwidth = (m_Bandwidth * 1.5f) > m_channelSampleRate ? m_channelSampleRate : (m_Bandwidth * 1.5f);
|
||||
m_interpolator.create(16, m_channelSampleRate, interpolatorBandwidth, 2.0f);
|
||||
@ -311,7 +281,7 @@ void FT8DemodSink::applyAudioSampleRate(int sampleRate)
|
||||
}
|
||||
|
||||
m_audioFifo.setSize(sampleRate);
|
||||
m_audioSampleRate = sampleRate;
|
||||
m_ft8SampleRate = sampleRate;
|
||||
|
||||
|
||||
QList<ObjectPipe*> pipes;
|
||||
@ -342,16 +312,13 @@ void FT8DemodSink::applySettings(const FT8DemodSettings& settings, bool force)
|
||||
<< " m_lowCutoff: " << settings.m_filterBank[settings.m_filterIndex].m_lowCutoff
|
||||
<< " m_fftWindow: " << settings.m_filterBank[settings.m_filterIndex].m_fftWindow << "]"
|
||||
<< " m_volume: " << settings.m_volume
|
||||
<< " m_audioBinaual: " << settings.m_audioBinaural
|
||||
<< " m_audioFlipChannels: " << settings.m_audioFlipChannels
|
||||
<< " m_dsb: " << settings.m_dsb
|
||||
<< " m_audioMute: " << settings.m_audioMute
|
||||
<< " m_agcActive: " << settings.m_agc
|
||||
<< " m_agcClamping: " << settings.m_agcClamping
|
||||
<< " m_agcTimeLog2: " << settings.m_agcTimeLog2
|
||||
<< " agcPowerThreshold: " << settings.m_agcPowerThreshold
|
||||
<< " agcThresholdGate: " << settings.m_agcThresholdGate
|
||||
<< " m_audioDeviceName: " << settings.m_audioDeviceName
|
||||
<< " m_ft8SampleRate: " << settings.m_ft8SampleRate
|
||||
<< " m_streamIndex: " << settings.m_streamIndex
|
||||
<< " m_useReverseAPI: " << settings.m_useReverseAPI
|
||||
<< " m_reverseAPIAddress: " << settings.m_reverseAPIAddress
|
||||
@ -389,9 +356,9 @@ void FT8DemodSink::applySettings(const FT8DemodSettings& settings, bool force)
|
||||
Real interpolatorBandwidth = (m_Bandwidth * 1.5f) > m_channelSampleRate ? m_channelSampleRate : (m_Bandwidth * 1.5f);
|
||||
m_interpolator.create(16, m_channelSampleRate, interpolatorBandwidth, 2.0f);
|
||||
m_interpolatorDistanceRemain = 0;
|
||||
m_interpolatorDistance = (Real) m_channelSampleRate / (Real) m_audioSampleRate;
|
||||
SSBFilter->create_filter(m_LowCutoff / (float) m_audioSampleRate, m_Bandwidth / (float) m_audioSampleRate, settings.m_filterBank[settings.m_filterIndex].m_fftWindow);
|
||||
DSBFilter->create_dsb_filter(m_Bandwidth / (float) m_audioSampleRate, settings.m_filterBank[settings.m_filterIndex].m_fftWindow);
|
||||
m_interpolatorDistance = (Real) m_channelSampleRate / (Real) m_ft8SampleRate;
|
||||
SSBFilter->create_filter(m_LowCutoff / (float) m_ft8SampleRate, m_Bandwidth / (float) m_ft8SampleRate, settings.m_filterBank[settings.m_filterIndex].m_fftWindow);
|
||||
DSBFilter->create_dsb_filter(m_Bandwidth / (float) m_ft8SampleRate, settings.m_filterBank[settings.m_filterIndex].m_fftWindow);
|
||||
}
|
||||
|
||||
if ((m_settings.m_volume != settings.m_volume) || force)
|
||||
@ -405,10 +372,10 @@ void FT8DemodSink::applySettings(const FT8DemodSettings& settings, bool force)
|
||||
(m_settings.m_agcThresholdGate != settings.m_agcThresholdGate) ||
|
||||
(m_settings.m_agcClamping != settings.m_agcClamping) || force)
|
||||
{
|
||||
int agcNbSamples = (m_audioSampleRate / 1000) * (1<<settings.m_agcTimeLog2);
|
||||
int agcNbSamples = (m_ft8SampleRate / 1000) * (1<<settings.m_agcTimeLog2);
|
||||
m_agc.setThresholdEnable(settings.m_agcPowerThreshold != -FT8DemodSettings::m_minPowerThresholdDB);
|
||||
double agcPowerThreshold = CalcDb::powerFromdB(settings.m_agcPowerThreshold) * (SDR_RX_SCALED*SDR_RX_SCALED);
|
||||
int agcThresholdGate = (m_audioSampleRate / 1000) * settings.m_agcThresholdGate; // ms
|
||||
int agcThresholdGate = (m_ft8SampleRate / 1000) * settings.m_agcThresholdGate; // ms
|
||||
bool agcClamping = settings.m_agcClamping;
|
||||
|
||||
if (m_agcNbSamples != agcNbSamples)
|
||||
@ -444,10 +411,7 @@ void FT8DemodSink::applySettings(const FT8DemodSettings& settings, bool force)
|
||||
}
|
||||
|
||||
m_spanLog2 = settings.m_filterBank[settings.m_filterIndex].m_spanLog2;
|
||||
m_audioBinaual = settings.m_audioBinaural;
|
||||
m_audioFlipChannels = settings.m_audioFlipChannels;
|
||||
m_dsb = settings.m_dsb;
|
||||
m_audioMute = settings.m_audioMute;
|
||||
m_agcActive = settings.m_agc;
|
||||
m_settings = settings;
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ public:
|
||||
void setSpectrumSink(SpectrumVis* spectrumSink) { m_spectrumSink = spectrumSink; }
|
||||
void applyChannelSettings(int inputSampleRate, int inputFrequencyOffset, bool force = false);
|
||||
void applySettings(const FT8DemodSettings& settings, bool force = false);
|
||||
void applyAudioSampleRate(int sampleRate);
|
||||
void applyFT8SampleRate(int sampleRate);
|
||||
|
||||
AudioFifo *getAudioFifo() { return &m_audioFifo; }
|
||||
double getMagSq() const { return m_magsq; }
|
||||
@ -91,11 +91,8 @@ private:
|
||||
int m_undersampleCount;
|
||||
int m_channelSampleRate;
|
||||
int m_channelFrequencyOffset;
|
||||
bool m_audioBinaual;
|
||||
bool m_audioFlipChannels;
|
||||
bool m_usb;
|
||||
bool m_dsb;
|
||||
bool m_audioMute;
|
||||
double m_magsq;
|
||||
double m_magsqSum;
|
||||
double m_magsqPeak;
|
||||
@ -123,7 +120,7 @@ private:
|
||||
AudioVector m_audioBuffer;
|
||||
uint m_audioBufferFill;
|
||||
AudioFifo m_audioFifo;
|
||||
quint32 m_audioSampleRate;
|
||||
quint32 m_ft8SampleRate;
|
||||
|
||||
QVector<qint16> m_demodBuffer;
|
||||
int m_demodBufferFill;
|
||||
|
@ -5573,9 +5573,6 @@ margin-bottom: 20px;
|
||||
"type" : "integer",
|
||||
"description" : "Audio squelch status (1 if open else 0)"
|
||||
},
|
||||
"audioSampleRate" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"channelSampleRate" : {
|
||||
"type" : "integer"
|
||||
}
|
||||
@ -5610,22 +5607,10 @@ margin-bottom: 20px;
|
||||
"type" : "number",
|
||||
"format" : "float"
|
||||
},
|
||||
"audioBinaural" : {
|
||||
"type" : "integer",
|
||||
"description" : "Audio binaural mode (1 if active else 0)"
|
||||
},
|
||||
"audioFlipChannels" : {
|
||||
"type" : "integer",
|
||||
"description" : "Flip audio channels (1 if flipped else 0)"
|
||||
},
|
||||
"dsb" : {
|
||||
"type" : "integer",
|
||||
"description" : "Double sidebands mode (1 if DSB else 0)"
|
||||
},
|
||||
"audioMute" : {
|
||||
"type" : "integer",
|
||||
"description" : "Mute audio (1 if muted else 0)"
|
||||
},
|
||||
"agc" : {
|
||||
"type" : "integer",
|
||||
"description" : "AGC (1 if AGC active else 0)"
|
||||
@ -5652,8 +5637,8 @@ margin-bottom: 20px;
|
||||
"title" : {
|
||||
"type" : "string"
|
||||
},
|
||||
"audioDeviceName" : {
|
||||
"type" : "string"
|
||||
"ft8SampleRate" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"streamIndex" : {
|
||||
"type" : "integer",
|
||||
@ -56911,7 +56896,7 @@ except ApiException as e:
|
||||
</div>
|
||||
<div id="generator">
|
||||
<div class="content">
|
||||
Generated 2023-01-14T23:57:54.939+01:00
|
||||
Generated 2023-01-15T03:28:53.541+01:00
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -30,18 +30,9 @@ FT8DemodSettings:
|
||||
volume:
|
||||
type: number
|
||||
format: float
|
||||
audioBinaural:
|
||||
description: Audio binaural mode (1 if active else 0)
|
||||
type: integer
|
||||
audioFlipChannels:
|
||||
description: Flip audio channels (1 if flipped else 0)
|
||||
type: integer
|
||||
dsb:
|
||||
description: Double sidebands mode (1 if DSB else 0)
|
||||
type: integer
|
||||
audioMute:
|
||||
description: Mute audio (1 if muted else 0)
|
||||
type: integer
|
||||
agc:
|
||||
description: AGC (1 if AGC active else 0)
|
||||
type: integer
|
||||
@ -61,8 +52,8 @@ FT8DemodSettings:
|
||||
type: integer
|
||||
title:
|
||||
type: string
|
||||
audioDeviceName:
|
||||
type: string
|
||||
ft8SampleRate:
|
||||
type: integer
|
||||
streamIndex:
|
||||
description: MIMO channel. Not relevant when connected to SI (single Rx).
|
||||
type: integer
|
||||
@ -94,7 +85,5 @@ FT8DemodReport:
|
||||
squelch:
|
||||
description: Audio squelch status (1 if open else 0)
|
||||
type: integer
|
||||
audioSampleRate:
|
||||
type: integer
|
||||
channelSampleRate:
|
||||
type: integer
|
||||
|
@ -30,18 +30,9 @@ FT8DemodSettings:
|
||||
volume:
|
||||
type: number
|
||||
format: float
|
||||
audioBinaural:
|
||||
description: Audio binaural mode (1 if active else 0)
|
||||
type: integer
|
||||
audioFlipChannels:
|
||||
description: Flip audio channels (1 if flipped else 0)
|
||||
type: integer
|
||||
dsb:
|
||||
description: Double sidebands mode (1 if DSB else 0)
|
||||
type: integer
|
||||
audioMute:
|
||||
description: Mute audio (1 if muted else 0)
|
||||
type: integer
|
||||
agc:
|
||||
description: AGC (1 if AGC active else 0)
|
||||
type: integer
|
||||
@ -61,8 +52,8 @@ FT8DemodSettings:
|
||||
type: integer
|
||||
title:
|
||||
type: string
|
||||
audioDeviceName:
|
||||
type: string
|
||||
ft8SampleRate:
|
||||
type: integer
|
||||
streamIndex:
|
||||
description: MIMO channel. Not relevant when connected to SI (single Rx).
|
||||
type: integer
|
||||
@ -94,7 +85,5 @@ FT8DemodReport:
|
||||
squelch:
|
||||
description: Audio squelch status (1 if open else 0)
|
||||
type: integer
|
||||
audioSampleRate:
|
||||
type: integer
|
||||
channelSampleRate:
|
||||
type: integer
|
||||
|
@ -5573,9 +5573,6 @@ margin-bottom: 20px;
|
||||
"type" : "integer",
|
||||
"description" : "Audio squelch status (1 if open else 0)"
|
||||
},
|
||||
"audioSampleRate" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"channelSampleRate" : {
|
||||
"type" : "integer"
|
||||
}
|
||||
@ -5610,22 +5607,10 @@ margin-bottom: 20px;
|
||||
"type" : "number",
|
||||
"format" : "float"
|
||||
},
|
||||
"audioBinaural" : {
|
||||
"type" : "integer",
|
||||
"description" : "Audio binaural mode (1 if active else 0)"
|
||||
},
|
||||
"audioFlipChannels" : {
|
||||
"type" : "integer",
|
||||
"description" : "Flip audio channels (1 if flipped else 0)"
|
||||
},
|
||||
"dsb" : {
|
||||
"type" : "integer",
|
||||
"description" : "Double sidebands mode (1 if DSB else 0)"
|
||||
},
|
||||
"audioMute" : {
|
||||
"type" : "integer",
|
||||
"description" : "Mute audio (1 if muted else 0)"
|
||||
},
|
||||
"agc" : {
|
||||
"type" : "integer",
|
||||
"description" : "AGC (1 if AGC active else 0)"
|
||||
@ -5652,8 +5637,8 @@ margin-bottom: 20px;
|
||||
"title" : {
|
||||
"type" : "string"
|
||||
},
|
||||
"audioDeviceName" : {
|
||||
"type" : "string"
|
||||
"ft8SampleRate" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"streamIndex" : {
|
||||
"type" : "integer",
|
||||
@ -56911,7 +56896,7 @@ except ApiException as e:
|
||||
</div>
|
||||
<div id="generator">
|
||||
<div class="content">
|
||||
Generated 2023-01-14T23:57:54.939+01:00
|
||||
Generated 2023-01-15T03:28:53.541+01:00
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -32,8 +32,6 @@ SWGFT8DemodReport::SWGFT8DemodReport() {
|
||||
m_channel_power_db_isSet = false;
|
||||
squelch = 0;
|
||||
m_squelch_isSet = false;
|
||||
audio_sample_rate = 0;
|
||||
m_audio_sample_rate_isSet = false;
|
||||
channel_sample_rate = 0;
|
||||
m_channel_sample_rate_isSet = false;
|
||||
}
|
||||
@ -48,8 +46,6 @@ SWGFT8DemodReport::init() {
|
||||
m_channel_power_db_isSet = false;
|
||||
squelch = 0;
|
||||
m_squelch_isSet = false;
|
||||
audio_sample_rate = 0;
|
||||
m_audio_sample_rate_isSet = false;
|
||||
channel_sample_rate = 0;
|
||||
m_channel_sample_rate_isSet = false;
|
||||
}
|
||||
@ -59,7 +55,6 @@ SWGFT8DemodReport::cleanup() {
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
SWGFT8DemodReport*
|
||||
@ -77,8 +72,6 @@ SWGFT8DemodReport::fromJsonObject(QJsonObject &pJson) {
|
||||
|
||||
::SWGSDRangel::setValue(&squelch, pJson["squelch"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&audio_sample_rate, pJson["audioSampleRate"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&channel_sample_rate, pJson["channelSampleRate"], "qint32", "");
|
||||
|
||||
}
|
||||
@ -103,9 +96,6 @@ SWGFT8DemodReport::asJsonObject() {
|
||||
if(m_squelch_isSet){
|
||||
obj->insert("squelch", QJsonValue(squelch));
|
||||
}
|
||||
if(m_audio_sample_rate_isSet){
|
||||
obj->insert("audioSampleRate", QJsonValue(audio_sample_rate));
|
||||
}
|
||||
if(m_channel_sample_rate_isSet){
|
||||
obj->insert("channelSampleRate", QJsonValue(channel_sample_rate));
|
||||
}
|
||||
@ -133,16 +123,6 @@ SWGFT8DemodReport::setSquelch(qint32 squelch) {
|
||||
this->m_squelch_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGFT8DemodReport::getAudioSampleRate() {
|
||||
return audio_sample_rate;
|
||||
}
|
||||
void
|
||||
SWGFT8DemodReport::setAudioSampleRate(qint32 audio_sample_rate) {
|
||||
this->audio_sample_rate = audio_sample_rate;
|
||||
this->m_audio_sample_rate_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGFT8DemodReport::getChannelSampleRate() {
|
||||
return channel_sample_rate;
|
||||
@ -164,9 +144,6 @@ SWGFT8DemodReport::isSet(){
|
||||
if(m_squelch_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_audio_sample_rate_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_channel_sample_rate_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
|
@ -47,9 +47,6 @@ public:
|
||||
qint32 getSquelch();
|
||||
void setSquelch(qint32 squelch);
|
||||
|
||||
qint32 getAudioSampleRate();
|
||||
void setAudioSampleRate(qint32 audio_sample_rate);
|
||||
|
||||
qint32 getChannelSampleRate();
|
||||
void setChannelSampleRate(qint32 channel_sample_rate);
|
||||
|
||||
@ -63,9 +60,6 @@ private:
|
||||
qint32 squelch;
|
||||
bool m_squelch_isSet;
|
||||
|
||||
qint32 audio_sample_rate;
|
||||
bool m_audio_sample_rate_isSet;
|
||||
|
||||
qint32 channel_sample_rate;
|
||||
bool m_channel_sample_rate_isSet;
|
||||
|
||||
|
@ -42,14 +42,8 @@ SWGFT8DemodSettings::SWGFT8DemodSettings() {
|
||||
m_fft_window_isSet = false;
|
||||
volume = 0.0f;
|
||||
m_volume_isSet = false;
|
||||
audio_binaural = 0;
|
||||
m_audio_binaural_isSet = false;
|
||||
audio_flip_channels = 0;
|
||||
m_audio_flip_channels_isSet = false;
|
||||
dsb = 0;
|
||||
m_dsb_isSet = false;
|
||||
audio_mute = 0;
|
||||
m_audio_mute_isSet = false;
|
||||
agc = 0;
|
||||
m_agc_isSet = false;
|
||||
agc_clamping = 0;
|
||||
@ -64,8 +58,8 @@ SWGFT8DemodSettings::SWGFT8DemodSettings() {
|
||||
m_rgb_color_isSet = false;
|
||||
title = nullptr;
|
||||
m_title_isSet = false;
|
||||
audio_device_name = nullptr;
|
||||
m_audio_device_name_isSet = false;
|
||||
ft8_sample_rate = 0;
|
||||
m_ft8_sample_rate_isSet = false;
|
||||
stream_index = 0;
|
||||
m_stream_index_isSet = false;
|
||||
use_reverse_api = 0;
|
||||
@ -106,14 +100,8 @@ SWGFT8DemodSettings::init() {
|
||||
m_fft_window_isSet = false;
|
||||
volume = 0.0f;
|
||||
m_volume_isSet = false;
|
||||
audio_binaural = 0;
|
||||
m_audio_binaural_isSet = false;
|
||||
audio_flip_channels = 0;
|
||||
m_audio_flip_channels_isSet = false;
|
||||
dsb = 0;
|
||||
m_dsb_isSet = false;
|
||||
audio_mute = 0;
|
||||
m_audio_mute_isSet = false;
|
||||
agc = 0;
|
||||
m_agc_isSet = false;
|
||||
agc_clamping = 0;
|
||||
@ -128,8 +116,8 @@ SWGFT8DemodSettings::init() {
|
||||
m_rgb_color_isSet = false;
|
||||
title = new QString("");
|
||||
m_title_isSet = false;
|
||||
audio_device_name = new QString("");
|
||||
m_audio_device_name_isSet = false;
|
||||
ft8_sample_rate = 0;
|
||||
m_ft8_sample_rate_isSet = false;
|
||||
stream_index = 0;
|
||||
m_stream_index_isSet = false;
|
||||
use_reverse_api = 0;
|
||||
@ -166,15 +154,10 @@ SWGFT8DemodSettings::cleanup() {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if(title != nullptr) {
|
||||
delete title;
|
||||
}
|
||||
if(audio_device_name != nullptr) {
|
||||
delete audio_device_name;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(reverse_api_address != nullptr) {
|
||||
@ -219,14 +202,8 @@ SWGFT8DemodSettings::fromJsonObject(QJsonObject &pJson) {
|
||||
|
||||
::SWGSDRangel::setValue(&volume, pJson["volume"], "float", "");
|
||||
|
||||
::SWGSDRangel::setValue(&audio_binaural, pJson["audioBinaural"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&audio_flip_channels, pJson["audioFlipChannels"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&dsb, pJson["dsb"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&audio_mute, pJson["audioMute"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&agc, pJson["agc"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&agc_clamping, pJson["agcClamping"], "qint32", "");
|
||||
@ -241,7 +218,7 @@ SWGFT8DemodSettings::fromJsonObject(QJsonObject &pJson) {
|
||||
|
||||
::SWGSDRangel::setValue(&title, pJson["title"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&audio_device_name, pJson["audioDeviceName"], "QString", "QString");
|
||||
::SWGSDRangel::setValue(&ft8_sample_rate, pJson["ft8SampleRate"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&stream_index, pJson["streamIndex"], "qint32", "");
|
||||
|
||||
@ -298,18 +275,9 @@ SWGFT8DemodSettings::asJsonObject() {
|
||||
if(m_volume_isSet){
|
||||
obj->insert("volume", QJsonValue(volume));
|
||||
}
|
||||
if(m_audio_binaural_isSet){
|
||||
obj->insert("audioBinaural", QJsonValue(audio_binaural));
|
||||
}
|
||||
if(m_audio_flip_channels_isSet){
|
||||
obj->insert("audioFlipChannels", QJsonValue(audio_flip_channels));
|
||||
}
|
||||
if(m_dsb_isSet){
|
||||
obj->insert("dsb", QJsonValue(dsb));
|
||||
}
|
||||
if(m_audio_mute_isSet){
|
||||
obj->insert("audioMute", QJsonValue(audio_mute));
|
||||
}
|
||||
if(m_agc_isSet){
|
||||
obj->insert("agc", QJsonValue(agc));
|
||||
}
|
||||
@ -331,8 +299,8 @@ SWGFT8DemodSettings::asJsonObject() {
|
||||
if(title != nullptr && *title != QString("")){
|
||||
toJsonValue(QString("title"), title, obj, QString("QString"));
|
||||
}
|
||||
if(audio_device_name != nullptr && *audio_device_name != QString("")){
|
||||
toJsonValue(QString("audioDeviceName"), audio_device_name, obj, QString("QString"));
|
||||
if(m_ft8_sample_rate_isSet){
|
||||
obj->insert("ft8SampleRate", QJsonValue(ft8_sample_rate));
|
||||
}
|
||||
if(m_stream_index_isSet){
|
||||
obj->insert("streamIndex", QJsonValue(stream_index));
|
||||
@ -435,26 +403,6 @@ SWGFT8DemodSettings::setVolume(float volume) {
|
||||
this->m_volume_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGFT8DemodSettings::getAudioBinaural() {
|
||||
return audio_binaural;
|
||||
}
|
||||
void
|
||||
SWGFT8DemodSettings::setAudioBinaural(qint32 audio_binaural) {
|
||||
this->audio_binaural = audio_binaural;
|
||||
this->m_audio_binaural_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGFT8DemodSettings::getAudioFlipChannels() {
|
||||
return audio_flip_channels;
|
||||
}
|
||||
void
|
||||
SWGFT8DemodSettings::setAudioFlipChannels(qint32 audio_flip_channels) {
|
||||
this->audio_flip_channels = audio_flip_channels;
|
||||
this->m_audio_flip_channels_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGFT8DemodSettings::getDsb() {
|
||||
return dsb;
|
||||
@ -465,16 +413,6 @@ SWGFT8DemodSettings::setDsb(qint32 dsb) {
|
||||
this->m_dsb_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGFT8DemodSettings::getAudioMute() {
|
||||
return audio_mute;
|
||||
}
|
||||
void
|
||||
SWGFT8DemodSettings::setAudioMute(qint32 audio_mute) {
|
||||
this->audio_mute = audio_mute;
|
||||
this->m_audio_mute_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGFT8DemodSettings::getAgc() {
|
||||
return agc;
|
||||
@ -545,14 +483,14 @@ SWGFT8DemodSettings::setTitle(QString* title) {
|
||||
this->m_title_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGFT8DemodSettings::getAudioDeviceName() {
|
||||
return audio_device_name;
|
||||
qint32
|
||||
SWGFT8DemodSettings::getFt8SampleRate() {
|
||||
return ft8_sample_rate;
|
||||
}
|
||||
void
|
||||
SWGFT8DemodSettings::setAudioDeviceName(QString* audio_device_name) {
|
||||
this->audio_device_name = audio_device_name;
|
||||
this->m_audio_device_name_isSet = true;
|
||||
SWGFT8DemodSettings::setFt8SampleRate(qint32 ft8_sample_rate) {
|
||||
this->ft8_sample_rate = ft8_sample_rate;
|
||||
this->m_ft8_sample_rate_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
@ -671,18 +609,9 @@ SWGFT8DemodSettings::isSet(){
|
||||
if(m_volume_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_audio_binaural_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_audio_flip_channels_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_dsb_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_audio_mute_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_agc_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
@ -704,7 +633,7 @@ SWGFT8DemodSettings::isSet(){
|
||||
if(title && *title != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(audio_device_name && *audio_device_name != QString("")){
|
||||
if(m_ft8_sample_rate_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_stream_index_isSet){
|
||||
|
@ -66,18 +66,9 @@ public:
|
||||
float getVolume();
|
||||
void setVolume(float volume);
|
||||
|
||||
qint32 getAudioBinaural();
|
||||
void setAudioBinaural(qint32 audio_binaural);
|
||||
|
||||
qint32 getAudioFlipChannels();
|
||||
void setAudioFlipChannels(qint32 audio_flip_channels);
|
||||
|
||||
qint32 getDsb();
|
||||
void setDsb(qint32 dsb);
|
||||
|
||||
qint32 getAudioMute();
|
||||
void setAudioMute(qint32 audio_mute);
|
||||
|
||||
qint32 getAgc();
|
||||
void setAgc(qint32 agc);
|
||||
|
||||
@ -99,8 +90,8 @@ public:
|
||||
QString* getTitle();
|
||||
void setTitle(QString* title);
|
||||
|
||||
QString* getAudioDeviceName();
|
||||
void setAudioDeviceName(QString* audio_device_name);
|
||||
qint32 getFt8SampleRate();
|
||||
void setFt8SampleRate(qint32 ft8_sample_rate);
|
||||
|
||||
qint32 getStreamIndex();
|
||||
void setStreamIndex(qint32 stream_index);
|
||||
@ -154,18 +145,9 @@ private:
|
||||
float volume;
|
||||
bool m_volume_isSet;
|
||||
|
||||
qint32 audio_binaural;
|
||||
bool m_audio_binaural_isSet;
|
||||
|
||||
qint32 audio_flip_channels;
|
||||
bool m_audio_flip_channels_isSet;
|
||||
|
||||
qint32 dsb;
|
||||
bool m_dsb_isSet;
|
||||
|
||||
qint32 audio_mute;
|
||||
bool m_audio_mute_isSet;
|
||||
|
||||
qint32 agc;
|
||||
bool m_agc_isSet;
|
||||
|
||||
@ -187,8 +169,8 @@ private:
|
||||
QString* title;
|
||||
bool m_title_isSet;
|
||||
|
||||
QString* audio_device_name;
|
||||
bool m_audio_device_name_isSet;
|
||||
qint32 ft8_sample_rate;
|
||||
bool m_ft8_sample_rate_isSet;
|
||||
|
||||
qint32 stream_index;
|
||||
bool m_stream_index_isSet;
|
||||
|
Loading…
Reference in New Issue
Block a user