defuze.me  Client
audioio.hpp
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