55 lines
		
	
	
		
			1006 B
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1006 B
		
	
	
	
		
			C
		
	
	
	
	
	
|   | // -*- Mode: C++ -*-
 | ||
|  | #ifndef SOUNDOUT_H__
 | ||
|  | #define SOUNDOUT_H__
 | ||
|  | 
 | ||
|  | #include <QObject>
 | ||
|  | #include <QString>
 | ||
|  | #include <QAudioOutput>
 | ||
|  | #include <QAudioDeviceInfo>
 | ||
|  | 
 | ||
|  | class QAudioDeviceInfo; | ||
|  | 
 | ||
|  | // An instance of this sends audio data to a specified soundcard.
 | ||
|  | 
 | ||
|  | class SoundOutput | ||
|  |   : public QObject | ||
|  | { | ||
|  |   Q_OBJECT; | ||
|  |    | ||
|  | public: | ||
|  |   SoundOutput () | ||
|  |     : m_msBuffered {0u} | ||
|  |     , m_volume {1.0} | ||
|  |   { | ||
|  |   } | ||
|  | 
 | ||
|  |   qreal attenuation () const; | ||
|  | 
 | ||
|  | public Q_SLOTS: | ||
|  |   void setFormat (QAudioDeviceInfo const& device, unsigned channels, unsigned msBuffered = 0u); | ||
|  |   void restart (QIODevice *); | ||
|  |   void suspend (); | ||
|  |   void resume (); | ||
|  |   void reset (); | ||
|  |   void stop (); | ||
|  |   void setAttenuation (qreal);	/* unsigned */ | ||
|  |   void resetAttenuation ();	/* to zero */ | ||
|  |    | ||
|  | Q_SIGNALS: | ||
|  |   void error (QString message) const; | ||
|  |   void status (QString message) const; | ||
|  | 
 | ||
|  | private: | ||
|  |   bool audioError () const; | ||
|  | 
 | ||
|  | private Q_SLOTS: | ||
|  |   void handleStateChanged (QAudio::State); | ||
|  | 
 | ||
|  | private: | ||
|  |   QScopedPointer<QAudioOutput> m_stream; | ||
|  |   unsigned m_msBuffered; | ||
|  |   qreal m_volume; | ||
|  | }; | ||
|  | 
 | ||
|  | #endif
 |