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 AUDIOCORE_HPP 00012 #define AUDIOCORE_HPP 00013 00014 #include "core.hpp" 00015 #include "thread.hpp" 00016 #include <QList> 00017 #include <QMap> 00018 #include <QVector> 00019 #include <QAudioDeviceInfo> 00020 #include <QThread> 00021 #include <QDateTime> 00022 00023 namespace Audio 00024 { 00025 class AudioIO; 00026 class AudioDecoder; 00027 class AudioOutputDevice; 00028 class AudioMixer; 00029 class AudioOutputDevices; 00030 00035 class AudioCore : public Thread, public Core 00036 { 00037 Q_OBJECT 00038 public: 00039 AudioCore(QStringList &arguments); 00040 ~AudioCore(); 00041 void init(Cores *cores); 00042 void aboutToQuit(); 00043 QList<QAudioDeviceInfo> availableDevices(QAudio::Mode mode) const; 00044 00045 AudioDecoder *newAudioDecoder(QString playerName); 00046 00047 AudioMixer *newAudioMixer(const QString& name = "", AudioIO *input = 0); 00048 00049 AudioOutputDevice *newAudioDevice(QAudioDeviceInfo device = QAudioDeviceInfo::defaultOutputDevice()); 00050 // AudioOutputDevice *getAudioOutputDevice(QString name); 00051 00052 00053 static QString formatSeconds(int seconds); 00054 AudioMixer* getMasterMixer(); 00055 QList<AudioMixer*>& getMixers(); 00056 void startCrossfade(AudioMixer* from, AudioMixer* to); 00057 void stopCrossfade(); 00058 signals: 00059 void crossfadeFinished(); 00060 00061 private: 00062 void initCodecs(); 00063 void run(); 00064 00065 AudioMixer* masterMixer; 00066 bool stopThread; 00067 int nbDecoder; 00068 int nbOutput; 00069 int nbMixer; 00070 bool crossfading; 00071 AudioMixer *crossfadeFrom, *crossfadeTo; 00072 int crossfadeFromVolume, crossfadeToVolume; 00073 QDateTime crossfadeStart; 00074 Cores *_cores; 00075 00076 QList<AudioMixer*> audioMixersList; 00077 QMap<QString, AudioOutputDevices*> audioOutputDevices; 00078 QMap<QString, AudioMixer*> audioMixers; 00079 00080 QMap<QString, AudioDecoder*> audioDecoders; 00081 }; 00082 } 00083 00084 #endif // AUDIOCORE_HPP