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 AUDIOMIXER_HPP 00012 #define AUDIOMIXER_HPP 00013 00014 #include "audioio.hpp" 00015 #include <QMap> 00016 #include <QStringList> 00017 #include <QList> 00018 #include "audioeffect.hpp" 00019 #include "audiocore.hpp" 00020 00021 namespace Audio 00022 { 00023 00028 class AudioMixer : public AudioIO 00029 { 00030 friend AudioMixer* AudioCore::newAudioMixer(const QString &name, AudioIO *input); 00031 00032 Q_OBJECT 00033 public: 00034 void addInput(AudioIO *input); 00035 bool isStarted(); 00036 00037 qint64 bytesAvailable() const; 00038 00039 QMap<QString, AudioEffect*> &getEffects(); 00040 00041 qint64 readData(char *data, qint64 maxlen, AudioIO *from); 00042 AudioIO *getAudioInput(const AudioIO *output); 00043 const AudioIO *getOutputDevice(const AudioIO *input) const; 00044 00045 signals: 00046 00047 public slots: 00048 00049 protected: 00050 qint64 writeData(const char *data, qint64 maxlen); 00051 qint64 readData(char *data, qint64 maxlen); 00052 private: 00053 AudioMixer(const QString& name, AudioIO *input); 00054 QMap<QString, AudioEffect*> effects; 00055 QMap<QString, AudioIO*> audioInputs; 00056 bool _isStarted; 00057 void applyEffects(char* data, int len); 00058 }; 00059 } 00060 00061 #endif // AUDIOMIXER_HPP