mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-03 16:01:18 -05:00
5eb5735168
The code was starting streams linked to closed devices which may be causing issues on the Mac version. I have refactored to ensure that devices are always opened before related audio streams are started. Made .h C++ headers emacs friendly. Removed some code in the MainWindow contructor that read the log file but failed to check if the file exists and didn't do anything with the data anyway. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3977 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
49 lines
1.0 KiB
C++
49 lines
1.0 KiB
C++
// -*- Mode: C++ -*-
|
|
#ifndef SOUNDIN_H__
|
|
#define SOUNDIN_H__
|
|
|
|
#include <QObject>
|
|
#include <QString>
|
|
#include <QScopedPointer>
|
|
#include <QAudioInput>
|
|
|
|
#include "AudioDevice.hpp"
|
|
|
|
class QAudioDeviceInfo;
|
|
class QAudioInput;
|
|
|
|
// Gets audio data from sound sample source and passes it to a sink device
|
|
class SoundInput
|
|
: public QObject
|
|
{
|
|
Q_OBJECT;
|
|
|
|
public:
|
|
SoundInput (QObject * parent = nullptr)
|
|
: QObject {parent}
|
|
, m_sink {nullptr}
|
|
{
|
|
}
|
|
|
|
~SoundInput ();
|
|
|
|
// sink must exist from the start call until the next start call or
|
|
// stop call
|
|
Q_SLOT void start(QAudioDeviceInfo const&, int framesPerBuffer, AudioDevice * sink, unsigned downSampleFactor, AudioDevice::Channel = AudioDevice::Mono);
|
|
Q_SLOT void stop ();
|
|
|
|
Q_SIGNAL void error (QString message) const;
|
|
Q_SIGNAL void status (QString message) const;
|
|
|
|
private:
|
|
// used internally
|
|
Q_SLOT void handleStateChanged (QAudio::State) const;
|
|
|
|
bool audioError () const;
|
|
|
|
QScopedPointer<QAudioInput> m_stream;
|
|
AudioDevice * m_sink;
|
|
};
|
|
|
|
#endif
|