7 #define AUDIO_NUM_BUFFERS 8
8 #define AUDIO_BUFFER_MSEC 32
9 // TODO should the sampling rate be hardcoded?
10 #define AUDIO_BUFFER_SAMPLES (AUDIO_BUFFER_MSEC * 44100 / 1000)
11 // TODO unhardcode the channels number
12 #define AUDIO_BUFFER_BYTES (AUDIO_BUFFER_SAMPLES * 2 * 2)
20 struct AudioStreamBuffer {
21 char samples[AUDIO_BUFFER_BYTES];
30 pthread_t play_thread;
31 pthread_mutex_t mutex;
35 unsigned int poll_interval;
38 virtual bool more_samples(AudioStreamBuffer *buf) = 0;
44 virtual ~AudioStream();
46 virtual bool open(const char *fname);
49 virtual void set_volume(float vol);
50 virtual float get_volume() const;
52 virtual void set_pitch(float p);
53 virtual float get_pitch() const;
55 virtual void play(AUDIO_PLAYMODE mode);
58 virtual void rewind() = 0;
61 #endif // AUDIO_STREAM_H_