20 #ifndef SOUND_HANDLER_AHI_H
21 #define SOUND_HANDLER_AHI_H
26 #include <boost/thread/mutex.hpp>
28 #include <proto/dos.h>
29 #include <proto/exec.h>
30 #include <proto/ahi.h>
32 #include <devices/ahi.h>
33 #include <exec/memory.h>
35 #include <sys/types.h>
52 struct MsgPort *_port;
54 struct TimeRequest *_timerio;
55 struct TimerIFace *ITimer;
57 struct AHIIFace *IAHI;
58 struct Library *AHIBase;
59 struct MsgPort *AHImp;
60 struct AHIRequest *AHIio;
62 struct AHIRequest *AHIios[2];
71 struct Process *AudioPump;
75 void TimerReset(uint32 microDelay);
85 struct DeathMessage *_dmsg;
86 struct MsgPort *_DMreplyport;
92 mutable boost::mutex _mutedMutex;
95 void mix(boost::int16_t* outSamples, boost::int16_t* inSamples,
96 unsigned int nSamples,
float volume);
98 void MixAudio (boost::uint8_t *dst,
const boost::uint8_t *src, boost::uint32_t len,
int volume);
107 virtual int create_sound(std::auto_ptr<SimpleBuffer>
data, std::auto_ptr<media::SoundInfo> sinfo);
112 unsigned int data_bytes,
113 unsigned int sample_count,
123 virtual void reset();
132 virtual void set_volume(
int sound_handle,
int volume);
151 virtual void pause();
161 virtual unsigned int tell(
int sound_handle);
168 void fetchSamples(boost::int16_t* to,
unsigned int nSamples);
178 #endif // SOUND_HANDLER_AHI_H