diff --git a/plugins/channel/demodssb/ssbdemod.cpp b/plugins/channel/demodssb/ssbdemod.cpp index c2e9c2e7e..515009ead 100644 --- a/plugins/channel/demodssb/ssbdemod.cpp +++ b/plugins/channel/demodssb/ssbdemod.cpp @@ -75,9 +75,10 @@ void SSBDemod::configure(MessageQueue* messageQueue, int spanLog2, bool audioBinaural, bool audioFlipChannel, - bool dsb) + bool dsb, + bool audioMute) { - Message* cmd = MsgConfigureSSBDemod::create(Bandwidth, LowCutoff, volume, spanLog2, audioBinaural, audioFlipChannel, dsb); + Message* cmd = MsgConfigureSSBDemod::create(Bandwidth, LowCutoff, volume, spanLog2, audioBinaural, audioFlipChannel, dsb, audioMute); messageQueue->push(cmd); } @@ -143,25 +144,33 @@ void SSBDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto m_sum.imag(0.0); } - if (m_audioBinaual) + if (m_audioMute) { - if (m_audioFlipChannels) - { - m_audioBuffer[m_audioBufferFill].r = (qint16)(sideband[i].imag() * m_volume * 100); - m_audioBuffer[m_audioBufferFill].l = (qint16)(sideband[i].real() * m_volume * 100); - } - else - { - m_audioBuffer[m_audioBufferFill].r = (qint16)(sideband[i].real() * m_volume * 100); - m_audioBuffer[m_audioBufferFill].l = (qint16)(sideband[i].imag() * m_volume * 100); - } + m_audioBuffer[m_audioBufferFill].r = 0; + m_audioBuffer[m_audioBufferFill].l = 0; } else { - Real demod = (sideband[i].real() + sideband[i].imag()) * 0.7; - qint16 sample = (qint16)(demod * m_volume * 100); - m_audioBuffer[m_audioBufferFill].l = sample; - m_audioBuffer[m_audioBufferFill].r = sample; + if (m_audioBinaual) + { + if (m_audioFlipChannels) + { + m_audioBuffer[m_audioBufferFill].r = (qint16)(sideband[i].imag() * m_volume * 100); + m_audioBuffer[m_audioBufferFill].l = (qint16)(sideband[i].real() * m_volume * 100); + } + else + { + m_audioBuffer[m_audioBufferFill].r = (qint16)(sideband[i].real() * m_volume * 100); + m_audioBuffer[m_audioBufferFill].l = (qint16)(sideband[i].imag() * m_volume * 100); + } + } + else + { + Real demod = (sideband[i].real() + sideband[i].imag()) * 0.7; + qint16 sample = (qint16)(demod * m_volume * 100); + m_audioBuffer[m_audioBufferFill].l = sample; + m_audioBuffer[m_audioBufferFill].r = sample; + } } ++m_audioBufferFill; @@ -263,6 +272,7 @@ bool SSBDemod::handleMessage(const Message& cmd) m_audioBinaual = cfg.getAudioBinaural(); m_audioFlipChannels = cfg.getAudioFlipChannels(); m_dsb = cfg.getDSB(); + m_audioMute = cfg.getAudioMute(); m_settingsMutex.unlock(); @@ -272,7 +282,8 @@ bool SSBDemod::handleMessage(const Message& cmd) << " m_spanLog2: " << m_spanLog2 << " m_audioBinaual: " << m_audioBinaual << " m_audioFlipChannels: " << m_audioFlipChannels - << " m_dsb: " << m_dsb; + << " m_dsb: " << m_dsb + << "m_audioMute: " << m_audioMute; return true; } diff --git a/plugins/channel/demodssb/ssbdemod.h b/plugins/channel/demodssb/ssbdemod.h index 74bd5bba4..e464a5682 100644 --- a/plugins/channel/demodssb/ssbdemod.h +++ b/plugins/channel/demodssb/ssbdemod.h @@ -41,7 +41,8 @@ public: int spanLog2, bool audioBinaural, bool audioFlipChannels, - bool dsb); + bool dsb, + bool audioMute); virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly); virtual void start(); @@ -62,6 +63,7 @@ private: bool getAudioBinaural() const { return m_audioBinaural; } bool getAudioFlipChannels() const { return m_audioFlipChannels; } bool getDSB() const { return m_dsb; } + bool getAudioMute() const { return m_audioMute; } static MsgConfigureSSBDemod* create(Real Bandwidth, Real LowCutoff, @@ -69,9 +71,10 @@ private: int spanLog2, bool audioBinaural, bool audioFlipChannels, - bool dsb) + bool dsb, + bool audioMute) { - return new MsgConfigureSSBDemod(Bandwidth, LowCutoff, volume, spanLog2, audioBinaural, audioFlipChannels, dsb); + return new MsgConfigureSSBDemod(Bandwidth, LowCutoff, volume, spanLog2, audioBinaural, audioFlipChannels, dsb, audioMute); } private: @@ -82,6 +85,7 @@ private: bool m_audioBinaural; bool m_audioFlipChannels; bool m_dsb; + bool m_audioMute; MsgConfigureSSBDemod(Real Bandwidth, Real LowCutoff, @@ -89,7 +93,8 @@ private: int spanLog2, bool audioBinaural, bool audioFlipChannels, - bool dsb) : + bool dsb, + bool audioMute) : Message(), m_Bandwidth(Bandwidth), m_LowCutoff(LowCutoff), @@ -97,7 +102,8 @@ private: m_spanLog2(spanLog2), m_audioBinaural(audioBinaural), m_audioFlipChannels(audioFlipChannels), - m_dsb(dsb) + m_dsb(dsb), + m_audioMute(audioMute) { } }; @@ -120,6 +126,7 @@ private: bool m_audioFlipChannels; bool m_usb; bool m_dsb; + bool m_audioMute; Real m_magsq; NCO m_nco; diff --git a/plugins/channel/demodssb/ssbdemodgui.cpp b/plugins/channel/demodssb/ssbdemodgui.cpp index 3fac4c794..9c5a77a1d 100644 --- a/plugins/channel/demodssb/ssbdemodgui.cpp +++ b/plugins/channel/demodssb/ssbdemodgui.cpp @@ -281,6 +281,12 @@ void SSBDemodGUI::on_volume_valueChanged(int value) applySettings(); } +void SSBDemodGUI::on_audioMute_toggled(bool checked) +{ + m_audioMute = checked; + applySettings(); +} + void SSBDemodGUI::on_spanLog2_valueChanged(int value) { if (setNewRate(value)) @@ -319,6 +325,7 @@ SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, QWidget* parent) : m_spanLog2(3), m_audioBinaural(false), m_audioFlipChannels(false), + m_audioMute(false), m_dsb(false), m_channelPowerDbAvg(20,0) { @@ -461,7 +468,8 @@ void SSBDemodGUI::applySettings() m_spanLog2, m_audioBinaural, m_audioFlipChannels, - m_dsb); + m_dsb, + ui->audioMute->isChecked()); } } diff --git a/plugins/channel/demodssb/ssbdemodgui.h b/plugins/channel/demodssb/ssbdemodgui.h index 8f8628326..eacea145a 100644 --- a/plugins/channel/demodssb/ssbdemodgui.h +++ b/plugins/channel/demodssb/ssbdemodgui.h @@ -46,6 +46,7 @@ private slots: void on_BW_valueChanged(int value); void on_lowCut_valueChanged(int value); void on_volume_valueChanged(int value); + void on_audioMute_toggled(bool checked); void on_spanLog2_valueChanged(int value); void onWidgetRolled(QWidget* widget, bool rollDown); void onMenuDoubleClicked(); @@ -62,6 +63,7 @@ private: bool m_audioBinaural; bool m_audioFlipChannels; bool m_dsb; + bool m_audioMute; MovingAverage m_channelPowerDbAvg; ThreadedSampleSink* m_threadedChannelizer; diff --git a/plugins/channel/demodssb/ssbdemodgui.ui b/plugins/channel/demodssb/ssbdemodgui.ui index 67d366643..e7a170b72 100644 --- a/plugins/channel/demodssb/ssbdemodgui.ui +++ b/plugins/channel/demodssb/ssbdemodgui.ui @@ -6,8 +6,8 @@ 0 0 - 302 - 461 + 334 + 199 @@ -398,6 +398,24 @@ + + + + Mute/Unmute audio + + + + + + + :/sound_on.png + :/sound_off.png:/sound_on.png + + + true + + +