summaryrefslogtreecommitdiffstats
path: root/pacman-c++/common/audio.h
diff options
context:
space:
mode:
Diffstat (limited to 'pacman-c++/common/audio.h')
-rw-r--r--pacman-c++/common/audio.h96
1 files changed, 21 insertions, 75 deletions
diff --git a/pacman-c++/common/audio.h b/pacman-c++/common/audio.h
index bc7d66e..45af34b 100644
--- a/pacman-c++/common/audio.h
+++ b/pacman-c++/common/audio.h
@@ -1,6 +1,7 @@
1#ifndef AUDIO_H 1#ifndef AUDIO_H
2#define AUDIO_H 2#define AUDIO_H
3 3
4#include "audiointerface.h"
4#include <QObject> 5#include <QObject>
5#include <QList> 6#include <QList>
6#include <QFile> 7#include <QFile>
@@ -19,52 +20,12 @@ namespace Sound
19 }; 20 };
20 21
21 const unsigned int length[] = { 22 const unsigned int length[] = {
22 4310, 2090, 570, 570, 1720, 23 4310, 2090, 570, 570, 1720, 1990
23 }; 24 };
24}; 25};
25 26
26/* --------------------------------------------------------------- */ 27/* --------------------------------------------------------------- */
27 28
28class AudioPlayer
29 : public QObject
30{
31 Q_OBJECT
32 friend class AudioManager;
33
34public:
35 AudioPlayer(QObject *parent = 0)
36 : QObject(parent)
37 {}
38 virtual ~AudioPlayer()
39 {}
40 virtual bool isWorking() const = 0;
41 virtual void setMuted(bool mute = true) = 0;
42 virtual bool isMuted() const = 0;
43 virtual void play() = 0;
44 virtual void play(Sound::Type sound) = 0;
45 virtual bool isPlaying() = 0;
46 virtual void enqueue(Sound::Type sound) = 0;
47 virtual void pause() = 0;
48 virtual bool isPaused() = 0;
49 virtual void stop() = 0;
50 virtual bool isStopped() = 0;
51 virtual void clear() = 0;
52 virtual void clearQueue() = 0;
53 virtual void setPrefinishMark(qint32 msecToEnd) = 0;
54
55protected slots:
56 virtual void prefinishMarkReached_ex(qint32 mark) = 0;
57
58signals:
59 void finished();
60 void prefinishMarkReached(qint32 mark);
61
62protected:
63 virtual void test(QFile *testsound, qint32 length) = 0;
64};
65
66/* --------------------------------------------------------------- */
67
68class NoopAudioPlayer 29class NoopAudioPlayer
69 : public AudioPlayer 30 : public AudioPlayer
70{ 31{
@@ -72,14 +33,11 @@ class NoopAudioPlayer
72 friend class AudioManager; 33 friend class AudioManager;
73 34
74public: 35public:
75 NoopAudioPlayer(QObject *parent = 0);
76 virtual bool isWorking() const; 36 virtual bool isWorking() const;
77 virtual void setMuted(bool mute = true); 37 virtual void setMuted(bool mute = true);
78 virtual bool isMuted() const; 38 virtual bool isMuted() const;
79 virtual void play(); 39 virtual void play();
80 virtual void play(Sound::Type sound);
81 virtual bool isPlaying(); 40 virtual bool isPlaying();
82 virtual void enqueue(Sound::Type sound);
83 virtual void pause(); 41 virtual void pause();
84 virtual bool isPaused(); 42 virtual bool isPaused();
85 virtual void stop(); 43 virtual void stop();
@@ -87,14 +45,20 @@ public:
87 virtual void clear(); 45 virtual void clear();
88 virtual void clearQueue(); 46 virtual void clearQueue();
89 virtual void setPrefinishMark(qint32 msecToEnd); 47 virtual void setPrefinishMark(qint32 msecToEnd);
48 virtual void seek(qint64 time);
49
50protected:
51 NoopAudioPlayer(QObject *parent = 0);
52 virtual void setWorking(bool working = true);
53 virtual void test(QFile *sound, unsigned int length);
54 virtual void play(QFile *sound, unsigned int length);
55 virtual void setSource(QFile *sound, unsigned int length);
56 virtual void enqueue(QFile *sound, unsigned int length);
90 57
91protected slots: 58protected slots:
92 virtual void prefinishMarkReached_ex(qint32 mark); 59 virtual void prefinishMarkReached_ex(qint32 mark);
93 60
94protected: 61protected:
95 virtual void test(QFile *testsound, qint32 length);
96
97protected:
98 bool m_working; 62 bool m_working;
99 bool m_muted; 63 bool m_muted;
100 bool m_playing; 64 bool m_playing;
@@ -109,9 +73,9 @@ class FakeAudioPlayer
109 Q_OBJECT 73 Q_OBJECT
110 friend class AudioManager; 74 friend class AudioManager;
111 75
112public: 76protected:
113 FakeAudioPlayer(QObject *parent = 0); 77 FakeAudioPlayer(QObject *parent = 0);
114 virtual void play(Sound::Type sound); 78 virtual void play(QFile *sound, unsigned int length);
115 79
116protected slots: 80protected slots:
117 void finished_ex(); 81 void finished_ex();
@@ -148,27 +112,6 @@ protected:
148 112
149/* --------------------------------------------------------------- */ 113/* --------------------------------------------------------------- */
150 114
151class AudioPlayerFactory
152{
153public:
154 virtual ~AudioPlayerFactory()
155 {}
156 virtual AudioPlayer *create(QObject *parent = 0) = 0;
157};
158
159Q_DECLARE_INTERFACE(AudioPlayerFactory, "at.ac.tuwien.foop.pacman.AudioPlayerFactory/1.0");
160
161/* --------------------------------------------------------------- */
162
163class NoopAudioPlayerFactory
164 : public AudioPlayerFactory
165{
166public:
167 virtual AudioPlayer *create(QObject *parent = 0);
168};
169
170/* --------------------------------------------------------------- */
171
172class AudioManager 115class AudioManager
173 : public QObject 116 : public QObject
174{ 117{
@@ -189,8 +132,9 @@ public:
189 AudioPlayer *audioPlayer(); 132 AudioPlayer *audioPlayer();
190 void registerAudioPlayer(AudioPlayer *player); 133 void registerAudioPlayer(AudioPlayer *player);
191 void unregisterAudioPlayer(AudioPlayer *player); 134 void unregisterAudioPlayer(AudioPlayer *player);
192 135 void play(Sound::Type sound, AudioPlayer *player = NULL);
193 QFile *sound(Sound::Type sound); 136 void setSource(Sound::Type sound, AudioPlayer *player = NULL);
137 void enqueue(Sound::Type sound, AudioPlayer *player = NULL);
194 138
195signals: 139signals:
196 void mutedChanged(bool muted); 140 void mutedChanged(bool muted);
@@ -200,8 +144,10 @@ private slots:
200 144
201protected: 145protected:
202 void preload(); 146 void preload();
203 bool tryLoadPhononPlugin(); 147 bool tryLoadAudioPlugin(const QString &libraryname);
204 AudioPlayer *createAudioPlayer(); 148 AudioPlayer *createAudioPlayer(QObject *parent = 0);
149 QFile *sound(Sound::Type sound);
150 unsigned int length(Sound::Type sound);
205 151
206private: 152private:
207 bool m_muted; 153 bool m_muted;
@@ -212,4 +158,4 @@ private:
212 AudioPlayerFactory *m_factory; 158 AudioPlayerFactory *m_factory;
213}; 159};
214 160
215#endif // AUDIOPLAYER_H 161#endif // AUDIO_H