audio.h (2218B)
1 #ifndef _AUDIO_H 2 #define _AUDIO_H 3 4 #include <ultra64.h> 5 #include <PR/os.h> 6 #include <PR/libaudio.h> 7 #include <PR/ucode.h> 8 9 #include "wessapi.h" 10 #include "wessarc.h" 11 #include "wessshell.h" 12 13 /*--------------------------------------------------*/ 14 /* type define's for structures unique to audiomgr */ 15 /*--------------------------------------------------*/ 16 17 typedef struct AudioInfo_s 18 { 19 short *data; /* Output data pointer */ 20 short frameSamples; /* # of samples synthesized in this frame */ 21 OSTask task; /* scheduler structure */ 22 } AudioInfo; 23 24 #define NUM_ACMD_LISTS 2 25 #define NUM_OUTPUT_BUFFERS 3 26 27 typedef struct 28 { 29 Acmd *ACMDList[NUM_ACMD_LISTS]; 30 AudioInfo *audioInfo[NUM_OUTPUT_BUFFERS]; 31 ALGlobals g; 32 } AMAudioMgr; 33 34 typedef struct 35 { 36 ALLink node; //0 37 u32 startAddr; //8 38 u32 lastFrame; //12 39 char *ptr; //16 40 } AMDMABuffer; 41 42 typedef struct 43 { 44 u8 initialized; 45 AMDMABuffer *firstUsed; 46 AMDMABuffer *firstFree; 47 } AMDMAState; 48 49 extern AMAudioMgr __am; //800B4060 50 extern ALVoice *voice; //800B40E0 51 extern char *reverb_status; //800B40E4 52 53 extern int wess_memfill(void *dst, unsigned char fill, int count); // 8002E300 54 extern int wess_rom_copy(char *src, char *dest, int len); // 8002E334 55 extern s32 milli_to_param(register s32 paramvalue, register s32 rate); // 8002E3D0 56 extern void wess_init(WessConfig *wessconfig); // 8002E41C 57 extern void amCreateAudioMgr(ALSynConfig *config, WessConfig *wessconfig); // 8002E610 58 extern OSTask * wess_work(void); // 8002EB2C 59 extern OSTask *__amHandleFrameMsg(AudioInfo *info); // 8002EBD8 60 extern s32 __amDMA(s32 addr, s32 len, void *state); // 8002ED74 61 extern ALDMAproc __amDmaNew(AMDMAState **state); // 8002EF48 62 extern void __clearAudioDMA(void); // 8002EF7C 63 extern void wess_exit(void); // 8002F0CC 64 65 #endif // _AUDIO_H