From 5b7cbdf0e5f8b4b6da5e1d342668b29d0695e2ef Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 24 Mar 2018 04:18:58 +0100 Subject: [PATCH] Multiple audio support: transfer start/stop audio to audio FIFO management in AudioDeviceManager --- .../bladerfoutput/bladerfoutput.cpp | 2 - .../samplesink/filesink/filesinkoutput.cpp | 2 - .../samplesink/hackrfoutput/hackrfoutput.cpp | 2 - .../limesdroutput/limesdroutput.cpp | 2 - .../plutosdroutput/plutosdroutput.cpp | 2 - .../sdrdaemonsink/sdrdaemonsinkoutput.cpp | 2 - plugins/samplesource/airspy/airspyinput.cpp | 2 - .../samplesource/airspyhf/airspyhfinput.cpp | 2 - .../samplesource/airspyhfi/airspyhfiinput.cpp | 2 - .../bladerfinput/bladerfinput.cpp | 2 - plugins/samplesource/fcdpro/fcdproinput.cpp | 2 - .../fcdproplus/fcdproplusinput.cpp | 2 - .../filesource/filesourceinput.cpp | 2 - .../samplesource/hackrfinput/hackrfinput.cpp | 2 - .../limesdrinput/limesdrinput.cpp | 2 - plugins/samplesource/perseus/perseusinput.cpp | 2 - .../plutosdrinput/plutosdrinput.cpp | 2 - plugins/samplesource/rtlsdr/rtlsdrinput.cpp | 2 - .../sdrdaemonsource/sdrdaemonsourceinput.cpp | 2 - plugins/samplesource/sdrplay/sdrplayinput.cpp | 2 - .../testsource/testsourceinput.cpp | 2 - sdrbase/audio/audiodevicemanager.cpp | 20 ++++ sdrbase/audio/audiodevicemanager.h | 10 +- sdrbase/audio/audioinput.cpp | 92 +------------------ sdrbase/audio/audioinput.h | 7 +- sdrbase/audio/audiooutput.h | 1 + sdrbase/dsp/dspengine.h | 5 - 27 files changed, 30 insertions(+), 147 deletions(-) diff --git a/plugins/samplesink/bladerfoutput/bladerfoutput.cpp b/plugins/samplesink/bladerfoutput/bladerfoutput.cpp index 2bfd38ee1..4c0d340db 100644 --- a/plugins/samplesink/bladerfoutput/bladerfoutput.cpp +++ b/plugins/samplesink/bladerfoutput/bladerfoutput.cpp @@ -271,13 +271,11 @@ bool BladerfOutput::handleMessage(const Message& message) if (m_deviceAPI->initGeneration()) { m_deviceAPI->startGeneration(); - DSPEngine::instance()->startAudioInput(); } } else { m_deviceAPI->stopGeneration(); - DSPEngine::instance()->stopAudioInput(); } return true; diff --git a/plugins/samplesink/filesink/filesinkoutput.cpp b/plugins/samplesink/filesink/filesinkoutput.cpp index b7e47615c..b9ea22fb9 100644 --- a/plugins/samplesink/filesink/filesinkoutput.cpp +++ b/plugins/samplesink/filesink/filesinkoutput.cpp @@ -213,13 +213,11 @@ bool FileSinkOutput::handleMessage(const Message& message) if (m_deviceAPI->initGeneration()) { m_deviceAPI->startGeneration(); - DSPEngine::instance()->startAudioInput(); } } else { m_deviceAPI->stopGeneration(); - DSPEngine::instance()->stopAudioInput(); } return true; diff --git a/plugins/samplesink/hackrfoutput/hackrfoutput.cpp b/plugins/samplesink/hackrfoutput/hackrfoutput.cpp index 2fb819264..3ae7437b1 100644 --- a/plugins/samplesink/hackrfoutput/hackrfoutput.cpp +++ b/plugins/samplesink/hackrfoutput/hackrfoutput.cpp @@ -257,13 +257,11 @@ bool HackRFOutput::handleMessage(const Message& message) if (m_deviceAPI->initGeneration()) { m_deviceAPI->startGeneration(); - DSPEngine::instance()->startAudioInput(); } } else { m_deviceAPI->stopGeneration(); - DSPEngine::instance()->stopAudioInput(); } return true; diff --git a/plugins/samplesink/limesdroutput/limesdroutput.cpp b/plugins/samplesink/limesdroutput/limesdroutput.cpp index c12e99b72..29cbdc2b8 100644 --- a/plugins/samplesink/limesdroutput/limesdroutput.cpp +++ b/plugins/samplesink/limesdroutput/limesdroutput.cpp @@ -515,13 +515,11 @@ bool LimeSDROutput::handleMessage(const Message& message) if (m_deviceAPI->initGeneration()) { m_deviceAPI->startGeneration(); - DSPEngine::instance()->startAudioInput(); } } else { m_deviceAPI->stopGeneration(); - DSPEngine::instance()->stopAudioInput(); } return true; diff --git a/plugins/samplesink/plutosdroutput/plutosdroutput.cpp b/plugins/samplesink/plutosdroutput/plutosdroutput.cpp index 374ab452c..eb2da3694 100644 --- a/plugins/samplesink/plutosdroutput/plutosdroutput.cpp +++ b/plugins/samplesink/plutosdroutput/plutosdroutput.cpp @@ -201,13 +201,11 @@ bool PlutoSDROutput::handleMessage(const Message& message) if (m_deviceAPI->initGeneration()) { m_deviceAPI->startGeneration(); - DSPEngine::instance()->startAudioInput(); } } else { m_deviceAPI->stopGeneration(); - DSPEngine::instance()->stopAudioInput(); } return true; diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp index f9469cb3e..b92d2c2ec 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp @@ -201,13 +201,11 @@ bool SDRdaemonSinkOutput::handleMessage(const Message& message) if (m_deviceAPI->initGeneration()) { m_deviceAPI->startGeneration(); - DSPEngine::instance()->startAudioInput(); } } else { m_deviceAPI->stopGeneration(); - DSPEngine::instance()->stopAudioInput(); } return true; diff --git a/plugins/samplesource/airspy/airspyinput.cpp b/plugins/samplesource/airspy/airspyinput.cpp index 450c46a30..586cf15c0 100644 --- a/plugins/samplesource/airspy/airspyinput.cpp +++ b/plugins/samplesource/airspy/airspyinput.cpp @@ -292,13 +292,11 @@ bool AirspyInput::handleMessage(const Message& message) if (m_deviceAPI->initAcquisition()) { m_deviceAPI->startAcquisition(); - DSPEngine::instance()->startAudioOutput(); } } else { m_deviceAPI->stopAcquisition(); - DSPEngine::instance()->stopAudioOutput(); } return true; diff --git a/plugins/samplesource/airspyhf/airspyhfinput.cpp b/plugins/samplesource/airspyhf/airspyhfinput.cpp index c91dc014c..9b67930ea 100644 --- a/plugins/samplesource/airspyhf/airspyhfinput.cpp +++ b/plugins/samplesource/airspyhf/airspyhfinput.cpp @@ -310,13 +310,11 @@ bool AirspyHFInput::handleMessage(const Message& message) if (m_deviceAPI->initAcquisition()) { m_deviceAPI->startAcquisition(); - DSPEngine::instance()->startAudioOutput(); } } else { m_deviceAPI->stopAcquisition(); - DSPEngine::instance()->stopAudioOutput(); } return true; diff --git a/plugins/samplesource/airspyhfi/airspyhfiinput.cpp b/plugins/samplesource/airspyhfi/airspyhfiinput.cpp index a76504006..883948e4a 100644 --- a/plugins/samplesource/airspyhfi/airspyhfiinput.cpp +++ b/plugins/samplesource/airspyhfi/airspyhfiinput.cpp @@ -288,13 +288,11 @@ bool AirspyHFIInput::handleMessage(const Message& message) if (m_deviceAPI->initAcquisition()) { m_deviceAPI->startAcquisition(); - DSPEngine::instance()->startAudioOutput(); } } else { m_deviceAPI->stopAcquisition(); - DSPEngine::instance()->stopAudioOutput(); } return true; diff --git a/plugins/samplesource/bladerfinput/bladerfinput.cpp b/plugins/samplesource/bladerfinput/bladerfinput.cpp index ef4901a13..62331faf0 100644 --- a/plugins/samplesource/bladerfinput/bladerfinput.cpp +++ b/plugins/samplesource/bladerfinput/bladerfinput.cpp @@ -297,13 +297,11 @@ bool BladerfInput::handleMessage(const Message& message) if (m_deviceAPI->initAcquisition()) { m_deviceAPI->startAcquisition(); - DSPEngine::instance()->startAudioOutput(); } } else { m_deviceAPI->stopAcquisition(); - DSPEngine::instance()->stopAudioOutput(); } return true; diff --git a/plugins/samplesource/fcdpro/fcdproinput.cpp b/plugins/samplesource/fcdpro/fcdproinput.cpp index e02e5df17..d7ab49f11 100644 --- a/plugins/samplesource/fcdpro/fcdproinput.cpp +++ b/plugins/samplesource/fcdpro/fcdproinput.cpp @@ -234,13 +234,11 @@ bool FCDProInput::handleMessage(const Message& message) if (m_deviceAPI->initAcquisition()) { m_deviceAPI->startAcquisition(); - DSPEngine::instance()->startAudioOutput(); } } else { m_deviceAPI->stopAcquisition(); - DSPEngine::instance()->stopAudioOutput(); } return true; diff --git a/plugins/samplesource/fcdproplus/fcdproplusinput.cpp b/plugins/samplesource/fcdproplus/fcdproplusinput.cpp index 92be2bab8..2aeeda9bb 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusinput.cpp +++ b/plugins/samplesource/fcdproplus/fcdproplusinput.cpp @@ -228,13 +228,11 @@ bool FCDProPlusInput::handleMessage(const Message& message) if (m_deviceAPI->initAcquisition()) { m_deviceAPI->startAcquisition(); - DSPEngine::instance()->startAudioOutput(); } } else { m_deviceAPI->stopAcquisition(); - DSPEngine::instance()->stopAudioOutput(); } return true; diff --git a/plugins/samplesource/filesource/filesourceinput.cpp b/plugins/samplesource/filesource/filesourceinput.cpp index b7b859c85..d225318e2 100644 --- a/plugins/samplesource/filesource/filesourceinput.cpp +++ b/plugins/samplesource/filesource/filesourceinput.cpp @@ -316,13 +316,11 @@ bool FileSourceInput::handleMessage(const Message& message) if (m_deviceAPI->initAcquisition()) { m_deviceAPI->startAcquisition(); - DSPEngine::instance()->startAudioOutput(); } } else { m_deviceAPI->stopAcquisition(); - DSPEngine::instance()->stopAudioOutput(); } return true; diff --git a/plugins/samplesource/hackrfinput/hackrfinput.cpp b/plugins/samplesource/hackrfinput/hackrfinput.cpp index 3c51c7fad..e77151439 100644 --- a/plugins/samplesource/hackrfinput/hackrfinput.cpp +++ b/plugins/samplesource/hackrfinput/hackrfinput.cpp @@ -278,13 +278,11 @@ bool HackRFInput::handleMessage(const Message& message) if (m_deviceAPI->initAcquisition()) { m_deviceAPI->startAcquisition(); - DSPEngine::instance()->startAudioOutput(); } } else { m_deviceAPI->stopAcquisition(); - DSPEngine::instance()->stopAudioOutput(); } return true; diff --git a/plugins/samplesource/limesdrinput/limesdrinput.cpp b/plugins/samplesource/limesdrinput/limesdrinput.cpp index 926b7bcf0..0b2b61e6c 100644 --- a/plugins/samplesource/limesdrinput/limesdrinput.cpp +++ b/plugins/samplesource/limesdrinput/limesdrinput.cpp @@ -707,13 +707,11 @@ bool LimeSDRInput::handleMessage(const Message& message) if (m_deviceAPI->initAcquisition()) { m_deviceAPI->startAcquisition(); - DSPEngine::instance()->startAudioOutput(); } } else { m_deviceAPI->stopAcquisition(); - DSPEngine::instance()->stopAudioOutput(); } return true; diff --git a/plugins/samplesource/perseus/perseusinput.cpp b/plugins/samplesource/perseus/perseusinput.cpp index 50f45c380..d3e933416 100644 --- a/plugins/samplesource/perseus/perseusinput.cpp +++ b/plugins/samplesource/perseus/perseusinput.cpp @@ -180,13 +180,11 @@ bool PerseusInput::handleMessage(const Message& message) if (m_deviceAPI->initAcquisition()) { m_deviceAPI->startAcquisition(); - DSPEngine::instance()->startAudioOutput(); } } else { m_deviceAPI->stopAcquisition(); - DSPEngine::instance()->stopAudioOutput(); } return true; diff --git a/plugins/samplesource/plutosdrinput/plutosdrinput.cpp b/plugins/samplesource/plutosdrinput/plutosdrinput.cpp index 7086a02b0..eb786ea7e 100644 --- a/plugins/samplesource/plutosdrinput/plutosdrinput.cpp +++ b/plugins/samplesource/plutosdrinput/plutosdrinput.cpp @@ -210,13 +210,11 @@ bool PlutoSDRInput::handleMessage(const Message& message) if (m_deviceAPI->initAcquisition()) { m_deviceAPI->startAcquisition(); - DSPEngine::instance()->startAudioOutput(); } } else { m_deviceAPI->stopAcquisition(); - DSPEngine::instance()->stopAudioOutput(); } return true; diff --git a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp index 91f6aa427..a9d3a5b9b 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp @@ -324,13 +324,11 @@ bool RTLSDRInput::handleMessage(const Message& message) if (m_deviceAPI->initAcquisition()) { m_deviceAPI->startAcquisition(); - DSPEngine::instance()->startAudioOutput(); } } else { m_deviceAPI->stopAcquisition(); - DSPEngine::instance()->stopAudioOutput(); } return true; diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp index 622ccfa3e..3ee77a64a 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp @@ -205,13 +205,11 @@ bool SDRdaemonSourceInput::handleMessage(const Message& message) if (m_deviceAPI->initAcquisition()) { m_deviceAPI->startAcquisition(); - DSPEngine::instance()->startAudioOutput(); } } else { m_deviceAPI->stopAcquisition(); - DSPEngine::instance()->stopAudioOutput(); } return true; diff --git a/plugins/samplesource/sdrplay/sdrplayinput.cpp b/plugins/samplesource/sdrplay/sdrplayinput.cpp index 3dd8db149..64af98d9f 100644 --- a/plugins/samplesource/sdrplay/sdrplayinput.cpp +++ b/plugins/samplesource/sdrplay/sdrplayinput.cpp @@ -320,13 +320,11 @@ bool SDRPlayInput::handleMessage(const Message& message) if (m_deviceAPI->initAcquisition()) { m_deviceAPI->startAcquisition(); - DSPEngine::instance()->startAudioOutput(); } } else { m_deviceAPI->stopAcquisition(); - DSPEngine::instance()->stopAudioOutput(); } return true; diff --git a/plugins/samplesource/testsource/testsourceinput.cpp b/plugins/samplesource/testsource/testsourceinput.cpp index 4221c3a02..b6516090c 100644 --- a/plugins/samplesource/testsource/testsourceinput.cpp +++ b/plugins/samplesource/testsource/testsourceinput.cpp @@ -197,13 +197,11 @@ bool TestSourceInput::handleMessage(const Message& message) if (m_deviceAPI->initAcquisition()) { m_deviceAPI->startAcquisition(); - DSPEngine::instance()->startAudioOutput(); } } else { m_deviceAPI->stopAcquisition(); - DSPEngine::instance()->stopAudioOutput(); } return true; diff --git a/sdrbase/audio/audiodevicemanager.cpp b/sdrbase/audio/audiodevicemanager.cpp index 46fdad05a..fcfa548f9 100644 --- a/sdrbase/audio/audiodevicemanager.cpp +++ b/sdrbase/audio/audiodevicemanager.cpp @@ -88,25 +88,45 @@ void AudioDeviceManager::setInputVolume(float inputVolume) void AudioDeviceManager::addAudioSink(AudioFifo* audioFifo) { qDebug("AudioDeviceInfo::addAudioSink"); + + if (m_audioOutput.getNbFifos() == 0) { + startAudioOutput(); + } + m_audioOutput.addFifo(audioFifo); } void AudioDeviceManager::removeAudioSink(AudioFifo* audioFifo) { qDebug("AudioDeviceInfo::removeAudioSink"); + m_audioOutput.removeFifo(audioFifo); + + if (m_audioOutput.getNbFifos() == 0) { + stopAudioOutput(); + } } void AudioDeviceManager::addAudioSource(AudioFifo* audioFifo) { qDebug("AudioDeviceInfo::addAudioSource"); + + if (m_audioInput.getNbFifos() == 0) { + startAudioInput(); + } + m_audioInput.addFifo(audioFifo); } void AudioDeviceManager::removeAudioSource(AudioFifo* audioFifo) { qDebug("AudioDeviceInfo::removeAudioSource"); + m_audioInput.removeFifo(audioFifo); + + if (m_audioInput.getNbFifos() == 0) { + stopAudioInput(); + } } void AudioDeviceManager::startAudioOutput() diff --git a/sdrbase/audio/audiodevicemanager.h b/sdrbase/audio/audiodevicemanager.h index 383f74df6..6242074d2 100644 --- a/sdrbase/audio/audiodevicemanager.h +++ b/sdrbase/audio/audiodevicemanager.h @@ -51,11 +51,6 @@ public: void addAudioSource(AudioFifo* audioFifo); //!< Add an audio source void removeAudioSource(AudioFifo* audioFifo); //!< Remove an audio source - void startAudioOutput(); - void stopAudioOutput(); - - void startAudioInput(); - void stopAudioInput(); void setAudioInputVolume(float volume) { m_audioInput.setVolume(volume); } private: @@ -73,6 +68,11 @@ private: QByteArray serialize() const; bool deserialize(const QByteArray& data); + void startAudioOutput(); + void stopAudioOutput(); + void startAudioInput(); + void stopAudioInput(); + friend class AudioDialog; friend class MainSettings; }; diff --git a/sdrbase/audio/audioinput.cpp b/sdrbase/audio/audioinput.cpp index bafa6718d..d94b2ffbf 100644 --- a/sdrbase/audio/audioinput.cpp +++ b/sdrbase/audio/audioinput.cpp @@ -37,7 +37,7 @@ AudioInput::~AudioInput() QMutexLocker mutexLocker(&m_mutex); - for (AudioFifos::iterator it = m_audioFifos.begin(); it != m_audioFifos.end(); ++it) + for (std::list::iterator it = m_audioFifos.begin(); it != m_audioFifos.end(); ++it) { delete *it; } @@ -116,79 +116,6 @@ bool AudioInput::start(int device, int rate) return true; } -bool AudioInput::startImmediate(int device, int rate) -{ - - if (QIODevice::isOpen()) - { - qInfo("AudioInput::startImmediate: already started"); - return true; - } - - QAudioDeviceInfo devInfo; - QMutexLocker mutexLocker(&m_mutex); - - if (device < 0) - { - devInfo = QAudioDeviceInfo::defaultInputDevice(); - qWarning("AudioInput::startImmediate: using default device %s", qPrintable(devInfo.defaultInputDevice().deviceName())); - } - else - { - QList devicesInfo = QAudioDeviceInfo::availableDevices(QAudio::AudioInput); - - if (device < devicesInfo.size()) - { - devInfo = devicesInfo[device]; - qWarning("AudioInput::startImmediate: using audio device #%d: %s", device, qPrintable(devInfo.defaultInputDevice().deviceName())); - } - else - { - devInfo = QAudioDeviceInfo::defaultInputDevice(); - qWarning("AudioInput::startImmediate: audio device #%d does not exist. Using default device %s", device, qPrintable(devInfo.defaultInputDevice().deviceName())); - } - } - - //QAudioDeviceInfo devInfo(QAudioDeviceInfo::defaultOutputDevice()); - - m_audioFormat.setSampleRate(rate); - m_audioFormat.setChannelCount(2); - m_audioFormat.setSampleSize(16); - m_audioFormat.setCodec("audio/pcm"); - m_audioFormat.setByteOrder(QAudioFormat::LittleEndian); - m_audioFormat.setSampleType(QAudioFormat::SignedInt); - - if (!devInfo.isFormatSupported(m_audioFormat)) - { - m_audioFormat = devInfo.nearestFormat(m_audioFormat); - qWarning("AudioInput::startImmediate: %d Hz S16_LE audio format not supported. New rate: %d", rate, m_audioFormat.sampleRate()); - } - else - { - qInfo("AudioInput::startImmediate: audio format OK"); - } - - if (m_audioFormat.sampleSize() != 16) - { - qWarning("AudioInput::startImmediate: Audio device ( %s ) failed", qPrintable(devInfo.defaultInputDevice().deviceName())); - return false; - } - - m_audioInput = new QAudioInput(devInfo, m_audioFormat); - m_audioInput->setVolume(m_volume); - - QIODevice::open(QIODevice::ReadWrite); - - m_audioInput->start(this); - - if (m_audioInput->state() != QAudio::ActiveState) - { - qWarning("AudioInput::startImmediate: cannot start"); - } - - return true; -} - void AudioInput::stop() { qDebug("AudioInput::stop"); @@ -210,21 +137,6 @@ void AudioInput::stop() } } -void AudioInput::stopImmediate() -{ - if (!QIODevice::isOpen()) - { - qInfo("AudioInput::stopImmediate: already stopped"); - } - else - { - qDebug("AudioInput::stopImmediate"); - QMutexLocker mutexLocker(&m_mutex); - QIODevice::close(); - delete m_audioInput; - } -} - void AudioInput::addFifo(AudioFifo* audioFifo) { QMutexLocker mutexLocker(&m_mutex); @@ -267,7 +179,7 @@ qint64 AudioInput::writeData(const char *data, qint64 len) return 0; } - for (AudioFifos::iterator it = m_audioFifos.begin(); it != m_audioFifos.end(); ++it) + for (std::list::iterator it = m_audioFifos.begin(); it != m_audioFifos.end(); ++it) { (*it)->write(reinterpret_cast(data), len/4, 10); } diff --git a/sdrbase/audio/audioinput.h b/sdrbase/audio/audioinput.h index 452ea3de7..16ebb6555 100644 --- a/sdrbase/audio/audioinput.h +++ b/sdrbase/audio/audioinput.h @@ -37,11 +37,9 @@ public: bool start(int device, int rate); void stop(); - bool startImmediate(int device, int rate); - void stopImmediate(); - void addFifo(AudioFifo* audioFifo); void removeFifo(AudioFifo* audioFifo); + int getNbFifos() const { return m_audioFifos.size(); } uint getRate() const { return m_audioFormat.sampleRate(); } void setOnExit(bool onExit) { m_onExit = onExit; } @@ -54,8 +52,7 @@ private: bool m_onExit; float m_volume; - typedef std::list AudioFifos; - AudioFifos m_audioFifos; + std::list m_audioFifos; std::vector m_mixBuffer; QAudioFormat m_audioFormat; diff --git a/sdrbase/audio/audiooutput.h b/sdrbase/audio/audiooutput.h index c8b8f774a..3b4996f2b 100644 --- a/sdrbase/audio/audiooutput.h +++ b/sdrbase/audio/audiooutput.h @@ -39,6 +39,7 @@ public: void addFifo(AudioFifo* audioFifo); void removeFifo(AudioFifo* audioFifo); + int getNbFifos() const { return m_audioFifos.size(); } uint getRate() const { return m_audioFormat.sampleRate(); } void setOnExit(bool onExit) { m_onExit = onExit; } diff --git a/sdrbase/dsp/dspengine.h b/sdrbase/dsp/dspengine.h index 73472bc1f..aa4fa2682 100644 --- a/sdrbase/dsp/dspengine.h +++ b/sdrbase/dsp/dspengine.h @@ -50,11 +50,6 @@ public: void removeLastDeviceSinkEngine(); AudioDeviceManager *getAudioDeviceManager() { return &m_audioDeviceManager; } - void startAudioOutput() { m_audioDeviceManager.startAudioOutput(); } - void stopAudioOutput() { m_audioDeviceManager.stopAudioOutput(); } - - void startAudioInput() { m_audioDeviceManager.startAudioInput(); } - void stopAudioInput() {m_audioDeviceManager.stopAudioInput(); } DSPDeviceSourceEngine *getDeviceSourceEngineByIndex(uint deviceIndex) { return m_deviceSourceEngines[deviceIndex]; } DSPDeviceSourceEngine *getDeviceSourceEngineByUID(uint uid);