patch to make enabling 64B L2 cache optional (tueidj)
[libogc.git] / gc / aesndlib.h
blobabb99e14e71ca77540d049748a0c055fefa6f5cd
1 #ifndef __AESNDLIB_H__
2 #define __AESNDLIB_H__
4 #include <gctypes.h>
6 #define MAX_VOICES 32
7 #define SND_BUFFERSIZE 384 // output 2ms sound data at 48KHz
8 #define DSP_STREAMBUFFER_SIZE 1152 // input 2ms sound data at max. 144KHz
10 #define DSP_DEFAULT_FREQ 48000
12 #define VOICE_STATE_STOPPED 0
13 #define VOICE_STATE_RUNNING 1
14 #define VOICE_STATE_STREAM 2
16 #define VOICE_MONO8 0x00000000
17 #define VOICE_STEREO8 0x00000001
18 #define VOICE_MONO16 0x00000002
19 #define VOICE_STEREO16 0x00000003
21 #define VOICE_FREQ32KHZ 32000
22 #define VOICE_FREQ48KHZ 48000
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
28 typedef struct aesndpb_t AESNDPB;
30 typedef void (*AESNDVoiceCallback)(AESNDPB *pb,u32 state);
31 typedef void (*AESNDAudioCallback)(void *audio_buffer,u32 len);
33 void AESND_Init();
34 void AESND_Reset();
35 void AESND_Pause(bool pause);
36 u32 AESND_GetDSPProcessTime();
37 f32 AESND_GetDSPProcessUsage();
38 AESNDAudioCallback AESND_RegisterAudioCallback(AESNDAudioCallback cb);
40 AESNDPB* AESND_AllocateVoice(AESNDVoiceCallback cb);
41 void AESND_FreeVoice(AESNDPB *pb);
42 void AESND_SetVoiceStop(AESNDPB *pb,bool stop);
43 void AESND_SetVoiceMute(AESNDPB *pb,bool mute);
44 void AESND_SetVoiceLoop(AESNDPB *pb,bool loop);
45 void AESND_SetVoiceFormat(AESNDPB *pb,u32 format);
46 void AESND_SetVoiceStream(AESNDPB *pb,bool stream);
47 void AESND_SetVoiceFrequency(AESNDPB *pb,u32 freq);
48 void AESND_SetVoiceVolume(AESNDPB *pb,u16 volume_l,u16 volume_r);
49 void AESND_SetVoiceBuffer(AESNDPB *pb,const void *buffer,u32 len);
50 void AESND_PlayVoice(AESNDPB *pb,u32 format,const void *buffer,u32 len,u32 freq,u32 delay,bool looped);
51 AESNDVoiceCallback AESND_RegisterVoiceCallback(AESNDPB *pb,AESNDVoiceCallback cb);
53 #ifdef __cplusplus
55 #endif
57 #endif