defuze.me
Client
|
00001 /************************************************************************** 00002 ** defuze.me Epitech Innovative Project 00003 ** 00004 ** Copyright 2010-2011 00005 ** Athena Calmettes - Jocelyn De La Rosa - Francois Gaillard 00006 ** Adrien Jarthon - Alexandre Moore - Luc Peres - Arnaud Sellier 00007 ** 00008 ** All rights reserved. 00009 **************************************************************************/ 00010 00011 #ifndef AUDIO_OUTPUT_HPP 00012 #define AUDIO_OUTPUT_HPP 00013 00014 #include <QAudioOutput> 00015 #include <QAudioDeviceInfo> 00016 #include <QThread> 00017 #include "audioio.hpp" 00018 #include "audiocore.hpp" 00019 00020 namespace Audio 00021 { 00022 class AudioCore; 00023 class AudioOutputDeviceThread; 00024 00031 class AudioOutputDevice : public AudioIO 00032 { 00033 Q_OBJECT 00034 friend AudioOutputDevice* AudioCore::newAudioDevice(QAudioDeviceInfo device = QAudioDeviceInfo::defaultOutputDevice()); 00035 public: 00036 ~AudioOutputDevice(); 00037 00038 QAudio::State state(); 00039 bool setFormat(QAudioFormat format); 00040 void setInput(AudioIO *input); 00041 bool isStarted(); 00042 00043 void start(); 00044 void stop(); 00045 void pause(); 00046 AudioIO *getAudioInput(const AudioIO *output); 00047 const AudioIO *getOutputDevice(const AudioIO *input) const; 00048 qint64 readData(char *data, qint64 maxlen, AudioIO *from); 00049 00050 signals: 00051 void startAudio(); 00052 void stopAudio(); 00053 void pauseAudio(); 00054 void changeFormat(QAudioFormat format); 00055 protected: 00056 qint64 writeData(const char *data, qint64 maxlen); 00057 qint64 readData(char *data, qint64 maxlen); 00058 00059 private: 00060 AudioIO *input; 00061 AudioOutputDeviceThread *audioThread; 00062 AudioOutputDevice(const QString& name, QAudioDeviceInfo device = QAudioDeviceInfo::defaultOutputDevice()); 00063 }; 00064 } 00065 00066 #endif // AUDIO_OUTPUT_HPP