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 AUDIOIO_HPP 00012 #define AUDIOIO_HPP 00013 00014 #include <QString> 00015 #include <QIODevice> 00016 00017 namespace Audio 00018 { 00019 enum IOType 00020 { 00021 InputDeviceType, 00022 OutputDeviceType, 00023 AudioMixerType, 00024 AudioPlayerType 00025 }; 00026 00027 class AudioIO : public QIODevice 00028 { 00029 public: 00030 IOType getType() const; 00031 QString getName() const; 00032 void setOutput(AudioIO *output); 00033 00034 virtual qint64 readData(char *data, qint64 maxlen, AudioIO *from)=0; 00035 virtual const AudioIO *getOutputDevice(const AudioIO* input) const=0; 00036 virtual AudioIO *getAudioInput(const AudioIO *output)=0; 00037 00038 protected: 00039 AudioIO(); 00040 00041 virtual qint64 readData(char *data, qint64 maxlen)=0; 00042 virtual qint64 writeData(const char *data, qint64 maxlen)=0; 00043 00044 AudioIO* _output; 00045 QString _name; 00046 IOType _type; 00047 }; 00048 } 00049 00050 #endif // AUDIOIO_HPP